Merge PowerLauncher branch (#2345)

* minor modifications in README

* Added launcher project and changed references to common

* Added the code to launch another process

* added shellapi header

* Added launcher to runner

* added functions to remove the abstract class error

* added the wox launcher dll

* Readded the reference to common

* modified the additional include directories for the release version

* changed the name to be displayed from Wox.Launcher to Launcher

* Localized the strings of Launcher

* Added a SearchResult Helper class

* Created a helper class to use indexer and return search results

* Added the main and settings file which declare most of the plugin interfaces

* Added references and renamed a class

* Added the images folder which contains the windows indexer icon

* Added the image

* Added the plugin.json file

* Minor changes in project files

* Added plugin.json to the project

* Modified the output paths to create the dll for the plugin in the correct location

* Refactored the code to make it unit testable

* Made the code unit testable and added unit tests for the indexer plugin

* Removed commented out code

* Code to terminate wox when we exit PowerToys

* Copy from Jeremy's fork PR

* Removed unnecessary plugins from source tree

* add missing files

* Fix postbuild event

* Added x64 for all Wox project - Debug mode

* Removed the AnyCPU config - Debug

* Added the build paths for release x64 (removed AnyCPU)

* Set warning level to 4 : Release

* Set warning level 4 : Debug

* set optimize code to false

* Removed notify icon component

* Removed setting UI XAML file and references

* Readded necessary callback functions

* Removed python path and python plugin functions

* Removed UI related to python path and the bindings related to that

* Remove python bindings

* Removed the localized string translations from pythonDirectory and SelectPythonDirectory

* Manually resolving conflicts

* Fix Wox build in project settings

* deleting unused project files

* Undo change internal

* Fix internal variable

* All wox exceptions in debug are getting rethrown, and thus causing the app to crash.  This change removes the debug specific code and allows exceptions to be handled the same was as release.

* Ported Indexer plugin to .net core 3

* Added the test project back

* Removed the .net framework indexer folder

* readding the plugin.json file

* Changed the anyCPU config to x64 for windows indexer plugin

* Adding dependency to wox project on the runner.  This should make sure the wox.exe can be build and launched by the runner so wox can run as a background process.

* Updating build dependencies.  Wox.Launcher wasn't built as part of the F5 Experience, and nor were the plugins

* removing locks from the ResultListBox code behind file.  All callbacks are accessed from the Main/UI thread.

* Remove anyCPU config and changed it to x64

* Removed anycpu of test proj

* Adding dependency

* Renaming executable to PowerLauncher.  Replaceing icons with placeholder. Deleting Docs folder

* Renaming AppData directory from 'Wox' to 'PowerLauncher'.  Also replacing issue link with powertoys github.

* adding support for xaml islands

* Added Neils UI code

* Replace Niels Code references

* Added assets and behaviours

* Add missing reference

* Add main view model binding

* Using proper executable name when closing 'PowerLauncher' process

* changed x:bind to Binding to avoid reference

* Updated bindings for launcher

* Added binding on searchBox

* Adding Directory.Build.targets file to kill the PowerLauncher pprocess on Build or Clean operations of all 'Launcher' projects.

* Fixed exception preventing result display

* Fixed issue with wpf marshalling events to a non UI thread

* Optimised result binding by inserting search result from multiple plugin in parallel

* copy resource files to output folder

* Corrected the output path for the indexer plugin

* windows indexer plugin is working

* Remove console print statement

* Added callback function for mouse click on search result

* Working App execution

* Cherry picked pinyin performance changes from jjw24's master branch

* change nuget package to msft for winrt compat

* Working up/down arrow key

* updating references and removing a few that seem uneeded for how stuff is referenced

* adding two back in

* Removing Squirrel dll.  unsure on updating so i kept that logic in

* Updated functionality on suggestion chosen in autosuggestbox

* Added the <useWPF> tag to remove the warning

* Removed an unnecessary <useWindowsForms> tag

* Removed the item group for properties from calculator plugin

* Removed the item group for properties from folder plugin

* Removed the item group for properties from indexer, program and shell plugin

* Removed itemgrp from wox.core and wox.test csprojs

* Removed the unnecessary wox files to clean up codebase

* Renamed Wox.Plugin.Indexer to Microsoft.Plugin.Indexer

* Renamed Wox.Launcher to Microsoft.Launcher

* To avoid DBNull to String typecast exception

* Added query submitted event to handle default action on clicking a list view item

* Merge pull request #42 from microsoft/AddPinyinPerformance

Cherry picked pinyin performance changes from jjw24's master branch

(cherry picked from commit b9e437c6cd)

* Rectyfying title display

* Title display working correctly

* Removed .yml files

* adding checks

* Making wox.csproj build wox assembly instead of powerlauncher

* Removing update logic from PowerLuanch App.xaml.cs as was done in Wox project.

* Making Query internals visible to wox.

* Update Powerlauncher nuget packages to be same version as wox.csproj.   Note:  FoxyWeavers.xsd change is automatically done as part of nuget package update.

* Updating build dependencies to so that wox.launcher depends on powerlauncher.csproj not wox.csproj

* Removing 'Wox' branded logos from powerlauncher.csproj as was done previously or wox.csproj

* Downgraded the library to the latest stable version

* single thread execution of the indexer plugin and InvalidOperationException due to connection being closed on ExecuteReader, handled separately

* Modified the test, the connection need not be null after being disposed. There is no direct way of checking if an object has been disposed other than to throw the InvalidOperationException

* Removing x86,ARM,ARM64, build configurations, as these were added accidentally when adding xaml island support.

* Removed STAThread

* Modified the output folder produced

* Renamed the dll produced

* Added dependency on PowerLauncher to the Microsoft.Launcher project

* modified the name of the dll in the indexer plugin

* Ignoring 128 errors from taskkill, as this means the process isn't running. We don't want htis to show up in the warnings list on build

* Added fix for closing wox on pressing escape and app execution (#75)

* adding useWPF to get rid of warning

* Launcher resize issue on selecting search result (#77)

* Added fix for closing wox on pressing escape and app execution

* Added fix to prevent autosuggestbox resize

* Fixing xaml catastrophic failure, based on Miguels suggestion here: https://github.com/windows-toolkit/Microsoft.Toolkit.Win32/issues/210

* suggested fix

* removing unused mutex string

* Searches for keyword only in title and not content to improve the quality of results

* Display the title from System.Title directly instead of extracting it from the path

* Removed additional README instructions before moving to the powerToys repo

* Fix Query builder test (#86)

* Revert base viewModel class to fix tests.

* Removing unused post build and deploy scripts.

* tweaked url

* Update plugin.json

* Update README.md

* removed unused dep (#2080)

* removed reference to everything (#2133)

* SearchIndexer - Modifying QueryContentProperties and QuerySelectColumns to use System.FileName

* Search result thumbnail for PowerLauncher (#2124)

* Replace WPF Imaging library with UWP

* Removed UWP and WPF namespace conflicting files from Wox

* Removed Image hashing as it wasn't used anywhere

* Updated formatting

* Set MainViewModel visibility to hidden on startup

* Enable CI build on PowerLauncher Branch (#2181)

* Enable CI build on PowerLauncher Branch

* Updated Nuget restore to latest and added AssetTargetFallback property

* tweak text (#2177)

* [Window Walker] Migrate to Launcher (#2093)

* Copy the existing calc. plugin foldeR

* Blindly rename a bunch of things to Window Walker

* Update the solution to reference the new plugin

* Get basic Yo returned

* Remove all the languages except english

* Lower quality of icon as well as test showing it

* Add the core non-ui parts to the plugin

* Delete calculator png

* Get it to compile

* Added the actual code which apparently doesn't work

* Finally start showing results

* Fix up strings

* Switch working

* Remove unused classes

* Remove unneeded async

* Added MSI support for Launcher (#2242)

* Fixed typo in output folder of calculator plugin

* Calculator plugin works

* Modified the name of the image to remove space as space is assumed to be a separator in wcx file

* Fixed typo in calculator dll

* Fixed typo in calculator plugin

* Shell, Program, Folde and indexer plugin working

* Added the ww plugin

* Fixed typos in the calculator plugin

* Delete file that was added unintentionally

* revert calculator rename changes

* Reverted other files changed

* Reverted renaming of file with space

* Pull changes from master to dev/powerLauncher (#2255)

* Dpi unaware placement bug (#2121)

Fix for bug when placing dpi unaware window such as Notepad++ in left of right part of monitor. In that application gap of about 7px was left or right.
This fixes only single-monitor scenario
It skips correction for dpi unaware window that leaves a gap

* Move markdown parsing logic outside control thread (#2099)

* Move markdown parsing logic outside control thread

* Update MarkdownPreviewHandlerControl.cs

* Remove trailing whitespace.

That'll teach me for trying to make an edit from the GitHub page.

* Migrate power rename MRU lists from registry to JSON (#2090)

* Handle most recently used search/replace strings within settings.

* Check for last modified time of json file and reload it if needed.

* Handle changes in MRU search / replace lists size.

* Improve handling of changes in MRU list size.

* Don't check for last modified time in every getter method. Load only when starting application.

* Add const identifier to getter methods.

* Address PR comments: Add const to reg and json file paths and set them in constructor initializer. Check pushIdx validity. Move implementation to cpp of PowerRenameUI constructor.

* Add error checking when getting values from registry.

* Implementing changes suggested in #1992 (#2116)

* Implementing changes suggested in #1992

* Update Product.wxs

Co-authored-by: Ebenezer Ewumi <ebenezer.ewumi@wsu.edu>

* Fix for issue #1532 - [PowerToys tray icon] Show version on tooltip (#2117)

* Fix for issue #1532

[PowerToys] Show version on tooltip

* Update src/runner/tray_icon.cpp

Co-Authored-By: Andrey Nekrasov <yuyoyuppe@users.noreply.github.com>

Co-authored-by: Andrey Nekrasov <yuyoyuppe@users.noreply.github.com>

* FZ editor: Splitted zones positioning (#2158)

* Added a mutex to ZoneWindow, ensured no data races occur (#2154)

* Added a mutex to ZoneWindow, ensured no data races occur

* Protected draggedWindow* members with a mutex

* Ensured that critical reads happen in a single transaction

* Dpi unaware placement bug - multimontior with same DPI settings fix (#2156)

* Dpi unaware placement bug - multimontior with same DPI settings fix

* Using different enumerating method

* Changed AllMonitorHaveSameDpiScaling method

* Removed accidental file

* small rename

* Changed some methods to CamelCase

* Review comments fixes

Co-authored-by: PrzemyslawTusinski <61138537+PrzemyslawTusinski@users.noreply.github.com>
Co-authored-by: Ben Randall <veleek@gmail.com>
Co-authored-by: vldmr11080 <57061786+vldmr11080@users.noreply.github.com>
Co-authored-by: eduardodextil <55205162+eduardodextil@users.noreply.github.com>
Co-authored-by: Ebenezer Ewumi <ebenezer.ewumi@wsu.edu>
Co-authored-by: Nghia M. Luong <32159519+sqrlmn@users.noreply.github.com>
Co-authored-by: Andrey Nekrasov <yuyoyuppe@users.noreply.github.com>
Co-authored-by: Seraphima Zykova <zykovas91@gmail.com>
Co-authored-by: Ivan Stošić <ivan100sic@gmail.com>

* Somil55/merge custom ui into launcher (#2271)

* Remove Autosuggest box (#2192)

* Update Settings.Designer.cs

* Revert "Update Settings.Designer.cs"

This reverts commit a1bc0dda56.

* Updated LauncherControl XAML to add textbox and listview

* List View displayed

* Hooking up execution on the selected index, removing two way binding on selection, and experimenting with popup that doesn't work

* Updated MainViewModel to Remove context menu and history

* Added Resultist XAML Island project

* Updated SelectedItem and SelectedList Binding.
Issues :  List box doesn't open when query is written for first time but opens in subsequent queries.

* 1. Mouse Click working
2. List View is can't be focused
3. Fixed width of Launcher

* Removed two way QueryText box binding

* Removed SelectedItem two way binding and replaced with a callback

* [Cleaning] Remove redundant UWP project

* [Cleaning] Updated files to keep only atomic changes against dev/powerLauncher

* Thmbnail fixed for NEW UI

* Removed PreviewMouseDown function required by older WOX code

Co-authored-by: ryanbodrug-microsoft <56318517+ryanbodrug-microsoft@users.noreply.github.com>

* Added the auto-complete feature

* Removing ContextMenuPluginInfo, and ContextMenuTopMost as these commands are not used int the new design.

* Fixed merge conflicts

* Set only when index is 0

* One way binding

* Removed unnecessary binding

* Deleting unused (commented out code) that was legacy from wox project.

* Binding Buttons to appropriate context menu commands.
1. Buttons are dynamically loaded in a listview based on the actions supported be each plugin.

This change also deletes unused commands.

Note:  Most button events don't seem to be getting routed to the Selected Item.  Currently using 'PointerEntered' to validate the behavior.  The actions should be trigged by the button command property in the future.

* manually handling tab in mainwindow

* Loading context buttons on Selecting a suggestion list item

* Allowing hover event to load content menu items and display them as well.

* Adding context buttons to Indexer plugin.  This allows for the following:
1. [Files] Open Containing folder
2. [Folders/Files] Copy Path

* Remove White background of list (#2218)

* Remove white background of list

* Removed comments

* Changed to ContainerContentChanging event

* add const variables instead of numbers

* Added comment before the updatelistSize function

* Search box UI (#2224)

* Added backdrop and rounded corner

* Fix for two alt+space press to bring searchbox issue

* Fixed merge conflict

* Clean Mainwindow.xaml code

* Fix for textbox focus on first visible

* Allowing users to tab between the context buttons for the selected resut.  Also allowing users to press 'enter' to action on the selected items.

* Renaming SelectedIndex to ContextMenuSelectedIndex

* Enabling key accelerators on context buttons.
1. Add new object ContextMenuResult instead instead of reusing Result for both query results and context menu results.
2. Binding KeyboardAccelerator keys to contextmenuitemviewmodel
3. Enabling and disabling contextmenu items when selecting or deselecting each row.  Because we are manually maintaining selectionwe can't use ScopeOwners as the textbox is really the only item ever in focus.

* Launching explorer instead of the UWP application when selecting 'open file location'.

* Added fix for border showing up when result count is zero

* Updated fix for border on no result

* Adding visibility  after clearing result in MainViewmodel

* Launcher Light/Dark mode (#2235)

* Fixed issue with list view background not updating with Windows theme change

* Added theme change for WPF

* updated ShadowDepth for dropshadow

* Updated border thicknes of searchbox and listview

* Diff issue with ResultList.xaml

* Removed change in result delay

* Added code to pull colors from UWP

* Updated border resource to use system based SystemControlHighlightAccentBrush

* Updated corner radius in dark mode

* Updated Launcher description text

Co-authored-by: ryanbodrug-microsoft <56318517+ryanbodrug-microsoft@users.noreply.github.com>
Co-authored-by: Alekhya Reddy <reddykalekhya@gmail.com>

* Changed to SystemChromeLow from Accent brush (#2272)

* Removed ListView animations

* Positioning ContextButtons and adding background.

* Disabling scrollbars for gridview items.

* Removed folder plugin

* removed deployment for uwp apps (#2298)

* Simulating Win+backspace key press, instead of Win+Control as it was launching WW (#2250)

* text is selected whenever launcher gets hidden and is then set to visible (#2315)

* Update nuget packages across solution to latest (#2334)

* simplifying the xaml and making things tighter (#2327)

* Setting runcommand as the default execution method, and turning off run as admin by default.

* Opening explorer if the user has types a file path.

* Enable PowerLauncher toggle

* Launcher MSI - Added a required dll and removed folder plugin (#2355)

* Modified the product.wxs file

* Added the x64 config

* Modify scoring algorithm for fuzzy search (#2361)

* Modify scoring

* modified to if else

* Fixes race conditions with PointerEnter/Exit events conflicting with Selection and unselection.   This change provides better encapsulation of the logic to enable a selected item for accelerator (hotkey) events, and allow mouse input on results where the pointer is over.

* Fixes an issue where PointerExit would hide the selected context buttons.

* Result List - Bad rebase overwrote margin and translation fields.

* Fixed process executing on clicking enter if no text in search box

* Codeflow cleanup when selectedItem is not null

* adjusting how programs are displayed. (#2369)

* Removing description from title

* adjusting subtitle

* removing accidently paste

* removing desc for uwp apps

* Revert "Removed folder plugin"

This reverts commit 064d638588.

We will use the folder plugin to better mimic the way the start menu and run prompt deal with directories

* Updating JetBrains.Annotations to 2020.1.0 to be consistent with other projects.

* Replacing submenu text with full path as 'Ctrl-Enter' doesn't do anything.  Also reducing the String of CreateOpenCurrentResult to fit in one line.

* - Making Open Directory subtitle fixed, and the title as the current directory.

* Adding back binding to QueryText and updating the cursor position similar to how wox originally did it.

* Add the folder plugin wxs back in (#2374)

* Deduping results for program plugin (#2375)

* Removing description from title

* adjusting subtitle

* removing accidently paste

* removing desc for uwp apps

* Getting dups removed from list if LNK exists

* adjusting subtitle

* removing accidently paste

* Getting dups removed from list if LNK exists

* changed to normal forloop

* Removing WinR (#2381)

* Updated program execution to call action on background thread. (#2370)

* PowerLauncher Settings integration

* Added cold start fix (#2385)

* - Fixes cursor jumping around issue.
- Seperating the ability to set the text from initiating a query.
- Plugins have to explicitly request the query be updated.
- Updating Folder plugin to explicty update the query on folder selection.
- Removing unused changes from 'Wox' that don't compile.

* Fixing gap in logic where query was triggering when programatically setting text.

Updating the binding and settext both will trigger the TextChanged event on a seperate event dispatcher.  For this reason we dynamically detect which eventhandler is most approapriate on the textchanging event.

* Updating the QueryText to the selected item when navigating up/down with the  arrow keys.

* Removing action on folder result, and displaying folder path on selecting a folder result from the folder plugin.

* Making folder results from the search indexer plugin behave like folder results from folder plugin.

* Folder Results open the explorer window when selected.

* The Open Current Folder result shouldn't change the query text to 'Open {folder path}' when selecting the results.

* Initializing query text strings.

* Defensive check for QueryText being empty

* Adding file watchers for UWP detecting when apps are installed or deleted and reindexing the uwp apps

* Removing unused namespace.

* Looking at files and not filtering is better because the timer is more likely to reset while an install is happening, preventing uneeded indexing

* Fix project references

* Fix MaxResultsToShow

* Fix Alt + Space display

* Fix settings defaults

Co-authored-by: Alekhya Reddy Kommuru <reddykalekhya@gmail.com>
Co-authored-by: bkudiess <bakudies@microsoft.com>
Co-authored-by: Divyansh <somm14divi@gmail.com>
Co-authored-by: ryanbodrug-microsoft <56318517+ryanbodrug-microsoft@users.noreply.github.com>
Co-authored-by: Barbara Kudiess <bkudiess@me.com>
Co-authored-by: Jeremy Wu <jeremy24wu@gmail.com>
Co-authored-by: Clint Rutkas <clint@rutkas.com>
Co-authored-by: udit3333 <udit3333@gmail.com>
Co-authored-by: Betsegaw (Beta) Tadele <betsegaw.ta@gmail.com>
Co-authored-by: PrzemyslawTusinski <61138537+PrzemyslawTusinski@users.noreply.github.com>
Co-authored-by: Ben Randall <veleek@gmail.com>
Co-authored-by: vldmr11080 <57061786+vldmr11080@users.noreply.github.com>
Co-authored-by: eduardodextil <55205162+eduardodextil@users.noreply.github.com>
Co-authored-by: Ebenezer Ewumi <ebenezer.ewumi@wsu.edu>
Co-authored-by: Nghia M. Luong <32159519+sqrlmn@users.noreply.github.com>
Co-authored-by: Andrey Nekrasov <yuyoyuppe@users.noreply.github.com>
Co-authored-by: Seraphima Zykova <zykovas91@gmail.com>
Co-authored-by: Ivan Stošić <ivan100sic@gmail.com>
This commit is contained in:
Tomas Agustin Raies
2020-04-28 15:06:01 -07:00
committed by GitHub
parent 96b2145ba1
commit d9c4abe0df
491 changed files with 55587 additions and 169 deletions

View File

@@ -0,0 +1,45 @@
<Window x:Class="Wox.ActionKeywords"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="ActionKeywords"
Icon="Images\app.png"
ResizeMode="NoResize"
Loaded="ActionKeyword_OnLoaded"
WindowStartupLocation="CenterScreen"
Height="200" Width="600">
<Grid>
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition />
<RowDefinition />
<RowDefinition />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="170" />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<TextBlock Margin="10" FontSize="14" Grid.Row="0" Grid.Column="0" VerticalAlignment="Center"
HorizontalAlignment="Right" Text="{DynamicResource oldActionKeyword}" />
<TextBlock x:Name="tbOldActionKeyword" Margin="10" FontSize="14" Grid.Row="0" Grid.Column="1"
VerticalAlignment="Center" HorizontalAlignment="Left">
Old ActionKeywords:
</TextBlock>
<TextBlock Margin="10" FontSize="14" Grid.Row="1" Grid.Column="0" VerticalAlignment="Center"
HorizontalAlignment="Right" Text="{DynamicResource newActionKeyword}" />
<StackPanel Grid.Row="1" Orientation="Horizontal" Grid.Column="1">
<TextBox x:Name="tbAction" Margin="10" Width="400" VerticalAlignment="Center" HorizontalAlignment="Left" />
</StackPanel>
<TextBlock Grid.Row="2" Grid.ColumnSpan="1" Grid.Column="1" Padding="5" Foreground="Gray"
Text="{DynamicResource actionkeyword_tips}" />
<StackPanel Orientation="Horizontal" HorizontalAlignment="Right" Grid.Row="3" Grid.Column="1">
<Button x:Name="btnCancel" Click="BtnCancel_OnClick" Margin="10 0 10 0" Width="80" Height="25"
Content="{DynamicResource cancel}" />
<Button x:Name="btnDone" Margin="10 0 10 0" Width="80" Height="25" Click="btnDone_OnClick">
<TextBlock x:Name="lblAdd" Text="{DynamicResource done}" />
</Button>
</StackPanel>
</Grid>
</Window>

View File

@@ -0,0 +1,58 @@
using System.Windows;
using Wox.Core.Plugin;
using Wox.Core.Resource;
using Wox.Infrastructure.Exception;
using Wox.Infrastructure.UserSettings;
using Wox.Plugin;
namespace Wox
{
public partial class ActionKeywords : Window
{
private PluginPair _plugin;
private Settings _settings;
private readonly Internationalization _translater = InternationalizationManager.Instance;
public ActionKeywords(string pluginId, Settings settings)
{
InitializeComponent();
_plugin = PluginManager.GetPluginForId(pluginId);
_settings = settings;
if (_plugin == null)
{
MessageBox.Show(_translater.GetTranslation("cannotFindSpecifiedPlugin"));
Close();
}
}
private void ActionKeyword_OnLoaded(object sender, RoutedEventArgs e)
{
tbOldActionKeyword.Text = string.Join(Query.ActionKeywordSeperater, _plugin.Metadata.ActionKeywords.ToArray());
tbAction.Focus();
}
private void BtnCancel_OnClick(object sender, RoutedEventArgs e)
{
Close();
}
private void btnDone_OnClick(object sender, RoutedEventArgs _)
{
var oldActionKeyword = _plugin.Metadata.ActionKeywords[0];
var newActionKeyword = tbAction.Text.Trim();
newActionKeyword = newActionKeyword.Length > 0 ? newActionKeyword : "*";
if (!PluginManager.ActionKeywordRegistered(newActionKeyword))
{
var id = _plugin.Metadata.ID;
PluginManager.ReplaceActionKeyword(id, oldActionKeyword, newActionKeyword);
MessageBox.Show(_translater.GetTranslation("success"));
Close();
}
else
{
string msg = _translater.GetTranslation("newActionKeywordsHasBeenAssigned");
MessageBox.Show(msg);
}
}
}
}

View File

@@ -0,0 +1,14 @@
<Application x:Class="Wox.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
ShutdownMode="OnMainWindowClose"
Startup="OnStartup">
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="pack://application:,,,/Themes/Dark.xaml" />
<ResourceDictionary Source="pack://application:,,,/Languages/en.xaml" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>
</Application>

View File

@@ -0,0 +1,131 @@
using System;
using System.Diagnostics;
using System.Threading.Tasks;
using System.Timers;
using System.Windows;
using Wox.Core;
using Wox.Core.Plugin;
using Wox.Core.Resource;
using Wox.Helper;
using Wox.Infrastructure;
using Wox.Infrastructure.Http;
using Wox.Infrastructure.Image;
using Wox.Infrastructure.Logger;
using Wox.Infrastructure.UserSettings;
using Wox.ViewModel;
using Stopwatch = Wox.Infrastructure.Stopwatch;
namespace Wox
{
public partial class App : IDisposable, ISingleInstanceApp
{
public static PublicAPIInstance API { get; private set; }
private const string Unique = "Wox_Unique_Application_Mutex";
private static bool _disposed;
private Settings _settings;
private MainViewModel _mainVM;
private SettingWindowViewModel _settingsVM;
private readonly Alphabet _alphabet = new Alphabet();
private StringMatcher _stringMatcher;
[STAThread]
public static void Main()
{
if (SingleInstance<App>.InitializeAsFirstInstance(Unique))
{
using (var application = new App())
{
application.InitializeComponent();
application.Run();
}
}
}
private void OnStartup(object sender, StartupEventArgs e)
{
Stopwatch.Normal("|App.OnStartup|Startup cost", () =>
{
Log.Info("|App.OnStartup|Begin Wox startup ----------------------------------------------------");
Log.Info($"|App.OnStartup|Runtime info:{ErrorReporting.RuntimeInfo()}");
RegisterAppDomainExceptions();
RegisterDispatcherUnhandledException();
ImageLoader.Initialize();
_settingsVM = new SettingWindowViewModel();
_settings = _settingsVM.Settings;
_alphabet.Initialize(_settings);
_stringMatcher = new StringMatcher(_alphabet);
StringMatcher.Instance = _stringMatcher;
_stringMatcher.UserSettingSearchPrecision = _settings.QuerySearchPrecision;
PluginManager.LoadPlugins(_settings.PluginSettings);
_mainVM = new MainViewModel(_settings);
var window = new MainWindow(_settings, _mainVM);
API = new PublicAPIInstance(_settingsVM, _mainVM, _alphabet);
PluginManager.InitializePlugins(API);
Current.MainWindow = window;
Current.MainWindow.Title = Constant.ExeFileName;
// happlebao todo temp fix for instance code logic
// load plugin before change language, because plugin language also needs be changed
InternationalizationManager.Instance.Settings = _settings;
InternationalizationManager.Instance.ChangeLanguage(_settings.Language);
// main windows needs initialized before theme change because of blur settigns
ThemeManager.Instance.Settings = _settings;
ThemeManager.Instance.ChangeTheme(_settings.Theme);
Http.Proxy = _settings.Proxy;
RegisterExitEvents();
_mainVM.MainWindowVisibility = _settings.HideOnStartup ? Visibility.Hidden : Visibility.Visible;
Log.Info("|App.OnStartup|End Wox startup ---------------------------------------------------- ");
});
}
private void RegisterExitEvents()
{
AppDomain.CurrentDomain.ProcessExit += (s, e) => Dispose();
Current.Exit += (s, e) => Dispose();
Current.SessionEnding += (s, e) => Dispose();
}
/// <summary>
/// let exception throw as normal is better for Debug
/// </summary>
[Conditional("RELEASE")]
private void RegisterDispatcherUnhandledException()
{
DispatcherUnhandledException += ErrorReporting.DispatcherUnhandledException;
}
/// <summary>
/// let exception throw as normal is better for Debug
/// </summary>
[Conditional("RELEASE")]
private static void RegisterAppDomainExceptions()
{
AppDomain.CurrentDomain.UnhandledException += ErrorReporting.UnhandledExceptionHandle;
}
public void Dispose()
{
// if sessionending is called, exit proverbially be called when log off / shutdown
// but if sessionending is not called, exit won't be called when log off / shutdown
if (!_disposed)
{
API.SaveAppAllSettings();
_disposed = true;
}
}
public void OnSecondAppStarted()
{
Current.MainWindow.Visibility = Visibility.Visible;
}
}
}

View File

@@ -0,0 +1,53 @@
using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Data;
using System.Windows.Documents;
namespace Wox.Converters
{
public class HighlightTextConverter : IMultiValueConverter
{
public object Convert(object[] value, Type targetType, object parameter, CultureInfo cultureInfo)
{
var text = value[0] as string;
var highlightData = value[1] as List<int>;
var textBlock = new Span();
if (highlightData == null || !highlightData.Any())
{
// No highlight data, just return the text
return new Run(text);
}
for (var i = 0; i < text.Length; i++)
{
var currentCharacter = text.Substring(i, 1);
if (this.ShouldHighlight(highlightData, i))
{
textBlock.Inlines.Add(new Bold(new Run(currentCharacter)));
}
else
{
textBlock.Inlines.Add(new Run(currentCharacter));
}
}
return textBlock;
}
public object[] ConvertBack(object value, Type[] targetType, object parameter, CultureInfo culture)
{
return new[] { DependencyProperty.UnsetValue, DependencyProperty.UnsetValue };
}
private bool ShouldHighlight(List<int> highlightData, int index)
{
return highlightData.Contains(index);
}
}
}

View File

@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<Weavers xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="FodyWeavers.xsd">
<PropertyChanged />
</Weavers>

View File

@@ -0,0 +1,64 @@
<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<!-- This file was generated by Fody. Manual changes to this file will be lost when your project is rebuilt. -->
<xs:element name="Weavers">
<xs:complexType>
<xs:all>
<xs:element name="PropertyChanged" minOccurs="0" maxOccurs="1">
<xs:complexType>
<xs:attribute name="InjectOnPropertyNameChanged" type="xs:boolean">
<xs:annotation>
<xs:documentation>Used to control if the On_PropertyName_Changed feature is enabled.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="EventInvokerNames" type="xs:string">
<xs:annotation>
<xs:documentation>Used to change the name of the method that fires the notify event. This is a string that accepts multiple values in a comma separated form.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="CheckForEquality" type="xs:boolean">
<xs:annotation>
<xs:documentation>Used to control if equality checks should be inserted. If false, equality checking will be disabled for the project.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="CheckForEqualityUsingBaseEquals" type="xs:boolean">
<xs:annotation>
<xs:documentation>Used to control if equality checks should use the Equals method resolved from the base class.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="UseStaticEqualsFromBase" type="xs:boolean">
<xs:annotation>
<xs:documentation>Used to control if equality checks should use the static Equals method resolved from the base class.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="SuppressWarnings" type="xs:boolean">
<xs:annotation>
<xs:documentation>Used to turn off build warnings from this weaver.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="SuppressOnPropertyNameChangedWarning" type="xs:boolean">
<xs:annotation>
<xs:documentation>Used to turn off build warnings about mismatched On_PropertyName_Changed methods.</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
</xs:all>
<xs:attribute name="VerifyAssembly" type="xs:boolean">
<xs:annotation>
<xs:documentation>'true' to run assembly verification (PEVerify) on the target assembly after all weavers have been executed.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="VerifyIgnoreCodes" type="xs:string">
<xs:annotation>
<xs:documentation>A comma-separated list of error codes that can be safely ignored in assembly verification.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="GenerateXsd" type="xs:boolean">
<xs:annotation>
<xs:documentation>'false' to turn off automatic generation of the XML Schema file.</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
</xs:schema>

View File

@@ -0,0 +1,73 @@
using System;
using System.Drawing.Printing;
using System.Runtime.InteropServices;
using System.Windows;
using System.Windows.Interop;
namespace Wox.Helper
{
public class DwmDropShadow
{
[DllImport("dwmapi.dll", PreserveSig = true)]
private static extern int DwmSetWindowAttribute(IntPtr hwnd, int attr, ref int attrValue, int attrSize);
[DllImport("dwmapi.dll")]
private static extern int DwmExtendFrameIntoClientArea(IntPtr hWnd, ref Margins pMarInset);
/// <summary>
/// Drops a standard shadow to a WPF Window, even if the window isborderless. Only works with DWM (Vista and Seven).
/// This method is much more efficient than setting AllowsTransparency to true and using the DropShadow effect,
/// as AllowsTransparency involves a huge permormance issue (hardware acceleration is turned off for all the window).
/// </summary>
/// <param name="window">Window to which the shadow will be applied</param>
public static void DropShadowToWindow(Window window)
{
if (!DropShadow(window))
{
window.SourceInitialized += window_SourceInitialized;
}
}
private static void window_SourceInitialized(object sender, EventArgs e) //fixed typo
{
Window window = (Window)sender;
DropShadow(window);
window.SourceInitialized -= window_SourceInitialized;
}
/// <summary>
/// The actual method that makes API calls to drop the shadow to the window
/// </summary>
/// <param name="window">Window to which the shadow will be applied</param>
/// <returns>True if the method succeeded, false if not</returns>
private static bool DropShadow(Window window)
{
try
{
WindowInteropHelper helper = new WindowInteropHelper(window);
int val = 2;
int ret1 = DwmSetWindowAttribute(helper.Handle, 2, ref val, 4);
if (ret1 == 0)
{
Margins m = new Margins { Bottom = 0, Left = 0, Right = 0, Top = 0 };
int ret2 = DwmExtendFrameIntoClientArea(helper.Handle, ref m);
return ret2 == 0;
}
else
{
return false;
}
}
catch (Exception)
{
// Probably dwmapi.dll not found (incompatible OS)
return false;
}
}
}
}

View File

@@ -0,0 +1,69 @@
using System;
using System.IO;
using System.Net;
namespace Wox.Helper
{
public class DataWebRequestFactory : IWebRequestCreate
{
class DataWebRequest : WebRequest
{
private readonly Uri m_uri;
public DataWebRequest(Uri uri)
{
m_uri = uri;
}
public override WebResponse GetResponse()
{
return new DataWebResponse(m_uri);
}
}
class DataWebResponse : WebResponse
{
private readonly string m_contentType;
private readonly byte[] m_data;
public DataWebResponse(Uri uri)
{
string uriString = uri.AbsoluteUri;
int commaIndex = uriString.IndexOf(',');
var headers = uriString.Substring(0, commaIndex).Split(';');
m_contentType = headers[0];
string dataString = uriString.Substring(commaIndex + 1);
m_data = Convert.FromBase64String(dataString);
}
public override string ContentType
{
get { return m_contentType; }
set
{
throw new NotSupportedException();
}
}
public override long ContentLength
{
get { return m_data.Length; }
set
{
throw new NotSupportedException();
}
}
public override Stream GetResponseStream()
{
return new MemoryStream(m_data);
}
}
public WebRequest Create(Uri uri)
{
return new DataWebRequest(uri);
}
}
}

View File

@@ -0,0 +1,43 @@
using System;
using System.Windows.Threading;
using NLog;
using Wox.Infrastructure;
using Wox.Infrastructure.Exception;
namespace Wox.Helper
{
public static class ErrorReporting
{
private static void Report(Exception e)
{
var logger = LogManager.GetLogger("UnHandledException");
logger.Fatal(ExceptionFormatter.FormatExcpetion(e));
var reportWindow = new ReportWindow(e);
reportWindow.Show();
}
public static void UnhandledExceptionHandle(object sender, UnhandledExceptionEventArgs e)
{
//handle non-ui thread exceptions
Report((Exception)e.ExceptionObject);
}
public static void DispatcherUnhandledException(object sender, DispatcherUnhandledExceptionEventArgs e)
{
//handle ui thread exceptions
Report(e.Exception);
//prevent application exist, so the user can copy prompted error info
e.Handled = true;
}
public static string RuntimeInfo()
{
var info = $"\nVersion: {Constant.Version}" +
$"\nOS Version: {Environment.OSVersion.VersionString}" +
$"\nIntPtr Length: {IntPtr.Size}" +
$"\nx64: {Environment.Is64BitOperatingSystem}";
return info;
}
}
}

View File

@@ -0,0 +1,411 @@
using System;
using System.Collections;
using System.Collections.Generic;
using System.ComponentModel;
using System.IO;
using System.Runtime.InteropServices;
using System.IO.Pipes;
using System.Runtime.Serialization.Formatters;
using System.Security;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Threading;
// http://blogs.microsoft.co.il/arik/2010/05/28/wpf-single-instance-application/
// modified to allow single instace restart
namespace Wox.Helper
{
internal enum WM
{
NULL = 0x0000,
CREATE = 0x0001,
DESTROY = 0x0002,
MOVE = 0x0003,
SIZE = 0x0005,
ACTIVATE = 0x0006,
SETFOCUS = 0x0007,
KILLFOCUS = 0x0008,
ENABLE = 0x000A,
SETREDRAW = 0x000B,
SETTEXT = 0x000C,
GETTEXT = 0x000D,
GETTEXTLENGTH = 0x000E,
PAINT = 0x000F,
CLOSE = 0x0010,
QUERYENDSESSION = 0x0011,
QUIT = 0x0012,
QUERYOPEN = 0x0013,
ERASEBKGND = 0x0014,
SYSCOLORCHANGE = 0x0015,
SHOWWINDOW = 0x0018,
ACTIVATEAPP = 0x001C,
SETCURSOR = 0x0020,
MOUSEACTIVATE = 0x0021,
CHILDACTIVATE = 0x0022,
QUEUESYNC = 0x0023,
GETMINMAXINFO = 0x0024,
WINDOWPOSCHANGING = 0x0046,
WINDOWPOSCHANGED = 0x0047,
CONTEXTMENU = 0x007B,
STYLECHANGING = 0x007C,
STYLECHANGED = 0x007D,
DISPLAYCHANGE = 0x007E,
GETICON = 0x007F,
SETICON = 0x0080,
NCCREATE = 0x0081,
NCDESTROY = 0x0082,
NCCALCSIZE = 0x0083,
NCHITTEST = 0x0084,
NCPAINT = 0x0085,
NCACTIVATE = 0x0086,
GETDLGCODE = 0x0087,
SYNCPAINT = 0x0088,
NCMOUSEMOVE = 0x00A0,
NCLBUTTONDOWN = 0x00A1,
NCLBUTTONUP = 0x00A2,
NCLBUTTONDBLCLK = 0x00A3,
NCRBUTTONDOWN = 0x00A4,
NCRBUTTONUP = 0x00A5,
NCRBUTTONDBLCLK = 0x00A6,
NCMBUTTONDOWN = 0x00A7,
NCMBUTTONUP = 0x00A8,
NCMBUTTONDBLCLK = 0x00A9,
SYSKEYDOWN = 0x0104,
SYSKEYUP = 0x0105,
SYSCHAR = 0x0106,
SYSDEADCHAR = 0x0107,
COMMAND = 0x0111,
SYSCOMMAND = 0x0112,
MOUSEMOVE = 0x0200,
LBUTTONDOWN = 0x0201,
LBUTTONUP = 0x0202,
LBUTTONDBLCLK = 0x0203,
RBUTTONDOWN = 0x0204,
RBUTTONUP = 0x0205,
RBUTTONDBLCLK = 0x0206,
MBUTTONDOWN = 0x0207,
MBUTTONUP = 0x0208,
MBUTTONDBLCLK = 0x0209,
MOUSEWHEEL = 0x020A,
XBUTTONDOWN = 0x020B,
XBUTTONUP = 0x020C,
XBUTTONDBLCLK = 0x020D,
MOUSEHWHEEL = 0x020E,
CAPTURECHANGED = 0x0215,
ENTERSIZEMOVE = 0x0231,
EXITSIZEMOVE = 0x0232,
IME_SETCONTEXT = 0x0281,
IME_NOTIFY = 0x0282,
IME_CONTROL = 0x0283,
IME_COMPOSITIONFULL = 0x0284,
IME_SELECT = 0x0285,
IME_CHAR = 0x0286,
IME_REQUEST = 0x0288,
IME_KEYDOWN = 0x0290,
IME_KEYUP = 0x0291,
NCMOUSELEAVE = 0x02A2,
DWMCOMPOSITIONCHANGED = 0x031E,
DWMNCRENDERINGCHANGED = 0x031F,
DWMCOLORIZATIONCOLORCHANGED = 0x0320,
DWMWINDOWMAXIMIZEDCHANGE = 0x0321,
#region Windows 7
DWMSENDICONICTHUMBNAIL = 0x0323,
DWMSENDICONICLIVEPREVIEWBITMAP = 0x0326,
#endregion
USER = 0x0400,
// This is the hard-coded message value used by WinForms for Shell_NotifyIcon.
// It's relatively safe to reuse.
TRAYMOUSEMESSAGE = 0x800, //WM_USER + 1024
APP = 0x8000
}
[SuppressUnmanagedCodeSecurity]
internal static class NativeMethods
{
/// <summary>
/// Delegate declaration that matches WndProc signatures.
/// </summary>
public delegate IntPtr MessageHandler(WM uMsg, IntPtr wParam, IntPtr lParam, out bool handled);
[DllImport("shell32.dll", EntryPoint = "CommandLineToArgvW", CharSet = CharSet.Unicode)]
private static extern IntPtr _CommandLineToArgvW([MarshalAs(UnmanagedType.LPWStr)] string cmdLine, out int numArgs);
[DllImport("kernel32.dll", EntryPoint = "LocalFree", SetLastError = true)]
private static extern IntPtr _LocalFree(IntPtr hMem);
public static string[] CommandLineToArgvW(string cmdLine)
{
IntPtr argv = IntPtr.Zero;
try
{
int numArgs = 0;
argv = _CommandLineToArgvW(cmdLine, out numArgs);
if (argv == IntPtr.Zero)
{
throw new Win32Exception();
}
var result = new string[numArgs];
for (int i = 0; i < numArgs; i++)
{
IntPtr currArg = Marshal.ReadIntPtr(argv, i * Marshal.SizeOf(typeof(IntPtr)));
result[i] = Marshal.PtrToStringUni(currArg);
}
return result;
}
finally
{
IntPtr p = _LocalFree(argv);
// Otherwise LocalFree failed.
// Assert.AreEqual(IntPtr.Zero, p);
}
}
}
public interface ISingleInstanceApp
{
void OnSecondAppStarted();
}
/// <summary>
/// This class checks to make sure that only one instance of
/// this application is running at a time.
/// </summary>
/// <remarks>
/// Note: this class should be used with some caution, because it does no
/// security checking. For example, if one instance of an app that uses this class
/// is running as Administrator, any other instance, even if it is not
/// running as Administrator, can activate it with command line arguments.
/// For most apps, this will not be much of an issue.
/// </remarks>
public static class SingleInstance<TApplication>
where TApplication: Application , ISingleInstanceApp
{
#region Private Fields
/// <summary>
/// String delimiter used in channel names.
/// </summary>
private const string Delimiter = ":";
/// <summary>
/// Suffix to the channel name.
/// </summary>
private const string ChannelNameSuffix = "SingeInstanceIPCChannel";
/// <summary>
/// Application mutex.
/// </summary>
internal static Mutex singleInstanceMutex;
#endregion
#region Public Properties
#endregion
#region Public Methods
/// <summary>
/// Checks if the instance of the application attempting to start is the first instance.
/// If not, activates the first instance.
/// </summary>
/// <returns>True if this is the first instance of the application.</returns>
public static bool InitializeAsFirstInstance( string uniqueName )
{
// Build unique application Id and the IPC channel name.
string applicationIdentifier = uniqueName + Environment.UserName;
string channelName = String.Concat(applicationIdentifier, Delimiter, ChannelNameSuffix);
// Create mutex based on unique application Id to check if this is the first instance of the application.
bool firstInstance;
singleInstanceMutex = new Mutex(true, applicationIdentifier, out firstInstance);
if (firstInstance)
{
_ = CreateRemoteService(channelName);
return true;
}
else
{
_ = SignalFirstInstance(channelName);
return false;
}
}
/// <summary>
/// Cleans up single-instance code, clearing shared resources, mutexes, etc.
/// </summary>
public static void Cleanup()
{
singleInstanceMutex?.ReleaseMutex();
}
#endregion
#region Private Methods
/// <summary>
/// Gets command line args - for ClickOnce deployed applications, command line args may not be passed directly, they have to be retrieved.
/// </summary>
/// <returns>List of command line arg strings.</returns>
private static IList<string> GetCommandLineArgs( string uniqueApplicationName )
{
string[] args = null;
try
{
// The application was not clickonce deployed, get args from standard API's
args = Environment.GetCommandLineArgs();
}
catch (NotSupportedException)
{
// The application was clickonce deployed
// Clickonce deployed apps cannot recieve traditional commandline arguments
// As a workaround commandline arguments can be written to a shared location before
// the app is launched and the app can obtain its commandline arguments from the
// shared location
string appFolderPath = Path.Combine(
Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), uniqueApplicationName);
string cmdLinePath = Path.Combine(appFolderPath, "cmdline.txt");
if (File.Exists(cmdLinePath))
{
try
{
using (TextReader reader = new StreamReader(cmdLinePath, Encoding.Unicode))
{
args = NativeMethods.CommandLineToArgvW(reader.ReadToEnd());
}
File.Delete(cmdLinePath);
}
catch (IOException)
{
}
}
}
if (args == null)
{
args = new string[] { };
}
return new List<string>(args);
}
/// <summary>
/// Creates a remote server pipe for communication.
/// Once receives signal from client, will activate first instance.
/// </summary>
/// <param name="channelName">Application's IPC channel name.</param>
private static async Task CreateRemoteService(string channelName)
{
using (NamedPipeServerStream pipeServer = new NamedPipeServerStream(channelName, PipeDirection.In))
{
while(true)
{
// Wait for connection to the pipe
await pipeServer.WaitForConnectionAsync();
if (Application.Current != null)
{
// Do an asynchronous call to ActivateFirstInstance function
Application.Current.Dispatcher.Invoke(ActivateFirstInstance);
}
// Disconect client
pipeServer.Disconnect();
}
}
}
/// <summary>
/// Creates a client pipe and sends a signal to server to launch first instance
/// </summary>
/// <param name="channelName">Application's IPC channel name.</param>
/// <param name="args">
/// Command line arguments for the second instance, passed to the first instance to take appropriate action.
/// </param>
private static async Task SignalFirstInstance(string channelName)
{
// Create a client pipe connected to server
using (NamedPipeClientStream pipeClient = new NamedPipeClientStream(".", channelName, PipeDirection.Out))
{
// Connect to the available pipe
await pipeClient.ConnectAsync(0);
}
}
/// <summary>
/// Callback for activating first instance of the application.
/// </summary>
/// <param name="arg">Callback argument.</param>
/// <returns>Always null.</returns>
private static object ActivateFirstInstanceCallback(object o)
{
ActivateFirstInstance();
return null;
}
/// <summary>
/// Activates the first instance of the application with arguments from a second instance.
/// </summary>
/// <param name="args">List of arguments to supply the first instance of the application.</param>
private static void ActivateFirstInstance()
{
// Set main window state and process command line args
if (Application.Current == null)
{
return;
}
((TApplication)Application.Current).OnSecondAppStarted();
}
#endregion
#region Private Classes
/// <summary>
/// Remoting service class which is exposed by the server i.e the first instance and called by the second instance
/// to pass on the command line arguments to the first instance and cause it to activate itself.
/// </summary>
private class IPCRemoteService : MarshalByRefObject
{
/// <summary>
/// Remoting Object's ease expires after every 5 minutes by default. We need to override the InitializeLifetimeService class
/// to ensure that lease never expires.
/// </summary>
/// <returns>Always null.</returns>
public override object InitializeLifetimeService()
{
return null;
}
}
#endregion
}
}

View File

@@ -0,0 +1,20 @@
using System;
using System.Linq;
using System.Windows;
namespace Wox.Helper
{
public static class SingletonWindowOpener
{
public static T Open<T>(params object[] args) where T : Window
{
var window = Application.Current.Windows.OfType<Window>().FirstOrDefault(x => x.GetType() == typeof(T))
?? (T)Activator.CreateInstance(typeof(T), args);
Application.Current.MainWindow.Hide();
window.Show();
window.Focus();
return (T)window;
}
}
}

View File

@@ -0,0 +1,24 @@
using System;
namespace Wox.Helper
{
public static class SyntaxSugars
{
public static TResult CallOrRescueDefault<TResult>(Func<TResult> callback)
{
return CallOrRescueDefault(callback, default(TResult));
}
public static TResult CallOrRescueDefault<TResult>(Func<TResult> callback, TResult def)
{
try
{
return callback();
}
catch
{
return def;
}
}
}
}

View File

@@ -0,0 +1,48 @@
using System;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Windows.Media;
using Microsoft.Win32;
namespace Wox.Helper
{
public static class WallpaperPathRetrieval
{
[DllImport("user32.dll", CharSet = CharSet.Unicode)]
private static extern Int32 SystemParametersInfo(UInt32 action,
Int32 uParam, StringBuilder vParam, UInt32 winIni);
private static readonly UInt32 SPI_GETDESKWALLPAPER = 0x73;
private static int MAX_PATH = 260;
public static string GetWallpaperPath()
{
var wallpaper = new StringBuilder(MAX_PATH);
SystemParametersInfo(SPI_GETDESKWALLPAPER, MAX_PATH, wallpaper, 0);
var str = wallpaper.ToString();
if (string.IsNullOrEmpty(str))
return null;
return str;
}
public static Color GetWallpaperColor()
{
RegistryKey key = Registry.CurrentUser.OpenSubKey("Control Panel\\Colors", true);
var result = key.GetValue(@"Background", null);
if (result != null && result is string)
{
try
{
var parts = result.ToString().Trim().Split(new[] {' '}, 3).Select(byte.Parse).ToList();
return Color.FromRgb(parts[0], parts[1], parts[2]);
}
catch
{
}
}
return Colors.Transparent;
}
}
}

View File

@@ -0,0 +1,163 @@
using System;
using System.Drawing;
using System.Runtime.InteropServices;
using System.Text;
using System.Windows;
using System.Windows.Forms;
using System.Windows.Interop;
using System.Windows.Media;
using Point = System.Windows.Point;
namespace Wox.Helper
{
public class WindowsInteropHelper
{
private const int GWL_STYLE = -16; //WPF's Message code for Title Bar's Style
private const int WS_SYSMENU = 0x80000; //WPF's Message code for System Menu
private static IntPtr _hwnd_shell;
private static IntPtr _hwnd_desktop;
//Accessors for shell and desktop handlers
//Will set the variables once and then will return them
private static IntPtr HWND_SHELL
{
get
{
return _hwnd_shell != IntPtr.Zero ? _hwnd_shell : _hwnd_shell = GetShellWindow();
}
}
private static IntPtr HWND_DESKTOP
{
get
{
return _hwnd_desktop != IntPtr.Zero ? _hwnd_desktop : _hwnd_desktop = GetDesktopWindow();
}
}
[DllImport("user32.dll", SetLastError = true)]
private static extern int GetWindowLong(IntPtr hWnd, int nIndex);
[DllImport("user32.dll")]
private static extern int SetWindowLong(IntPtr hWnd, int nIndex, int dwNewLong);
[DllImport("user32.dll")]
private static extern IntPtr GetForegroundWindow();
[DllImport("user32.dll")]
private static extern IntPtr GetDesktopWindow();
[DllImport("user32.dll")]
private static extern IntPtr GetShellWindow();
[DllImport("user32.dll", SetLastError = true)]
private static extern int GetWindowRect(IntPtr hwnd, out RECT rc);
[DllImport("user32.dll", SetLastError = true, CharSet = CharSet.Auto)]
private static extern int GetClassName(IntPtr hWnd, StringBuilder lpClassName, int nMaxCount);
[DllImport("user32.DLL")]
public static extern IntPtr FindWindowEx(IntPtr hwndParent, IntPtr hwndChildAfter, string lpszClass, string lpszWindow);
const string WINDOW_CLASS_CONSOLE = "ConsoleWindowClass";
const string WINDOW_CLASS_WINTAB = "Flip3D";
const string WINDOW_CLASS_PROGMAN = "Progman";
const string WINDOW_CLASS_WORKERW = "WorkerW";
public static bool IsWindowFullscreen()
{
//get current active window
IntPtr hWnd = GetForegroundWindow();
if (hWnd != null && !hWnd.Equals(IntPtr.Zero))
{
//if current active window is NOT desktop or shell
if (!(hWnd.Equals(HWND_DESKTOP) || hWnd.Equals(HWND_SHELL)))
{
StringBuilder sb = new StringBuilder(256);
GetClassName(hWnd, sb, sb.Capacity);
string windowClass = sb.ToString();
//for Win+Tab (Flip3D)
if (windowClass == WINDOW_CLASS_WINTAB)
{
return false;
}
RECT appBounds;
GetWindowRect(hWnd, out appBounds);
//for console (ConsoleWindowClass), we have to check for negative dimensions
if (windowClass == WINDOW_CLASS_CONSOLE)
{
return appBounds.Top < 0 && appBounds.Bottom < 0;
}
//for desktop (Progman or WorkerW, depends on the system), we have to check
if (windowClass == WINDOW_CLASS_PROGMAN || windowClass == WINDOW_CLASS_WORKERW)
{
IntPtr hWndDesktop = FindWindowEx(hWnd, IntPtr.Zero, "SHELLDLL_DefView", null);
hWndDesktop = FindWindowEx(hWndDesktop, IntPtr.Zero, "SysListView32", "FolderView");
if (hWndDesktop != null && !hWndDesktop.Equals(IntPtr.Zero))
{
return false;
}
}
Rectangle screenBounds = Screen.FromHandle(hWnd).Bounds;
if ((appBounds.Bottom - appBounds.Top) == screenBounds.Height && (appBounds.Right - appBounds.Left) == screenBounds.Width)
{
return true;
}
}
}
return false;
}
/// <summary>
/// disable windows toolbar's control box
/// this will also disable system menu with Alt+Space hotkey
/// </summary>
public static void DisableControlBox(Window win)
{
var hwnd = new WindowInteropHelper(win).Handle;
SetWindowLong(hwnd, GWL_STYLE, GetWindowLong(hwnd, GWL_STYLE) & ~WS_SYSMENU);
}
/// <summary>
/// Transforms pixels to Device Independent Pixels used by WPF
/// </summary>
/// <param name="visual">current window, required to get presentation source</param>
/// <param name="unitX">horizontal position in pixels</param>
/// <param name="unitY">vertical position in pixels</param>
/// <returns>point containing device independent pixels</returns>
public static Point TransformPixelsToDIP(Visual visual, double unitX, double unitY)
{
Matrix matrix;
var source = PresentationSource.FromVisual(visual);
if (source != null)
{
matrix = source.CompositionTarget.TransformFromDevice;
}
else
{
using (var src = new HwndSource(new HwndSourceParameters()))
{
matrix = src.CompositionTarget.TransformFromDevice;
}
}
return new Point((int)(matrix.M11 * unitX), (int)(matrix.M22 * unitY));
}
[StructLayout(LayoutKind.Sequential)]
public struct RECT
{
public int Left;
public int Top;
public int Right;
public int Bottom;
}
}
}

View File

@@ -0,0 +1,19 @@
<UserControl x:Class="Wox.HotkeyControl"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:input="clr-namespace:System.Windows.Input;assembly=PresentationCore"
mc:Ignorable="d"
Height="24"
d:DesignHeight="300" d:DesignWidth="300">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="150" />
<ColumnDefinition Width="120" />
</Grid.ColumnDefinitions>
<TextBox x:Name="tbHotkey" TabIndex="100" VerticalContentAlignment="Center" Grid.Column="0"
PreviewKeyDown="TbHotkey_OnPreviewKeyDown" input:InputMethod.IsInputMethodEnabled="False"/>
<TextBlock x:Name="tbMsg" Visibility="Hidden" Margin="5 0 0 0" VerticalAlignment="Center" Grid.Column="1" />
</Grid>
</UserControl>

View File

@@ -0,0 +1,117 @@
using System;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Input;
using System.Windows.Media;
using NHotkey.Wpf;
using Wox.Core.Resource;
using Wox.Infrastructure.Hotkey;
using Wox.Plugin;
namespace Wox
{
public partial class HotkeyControl : UserControl
{
public HotkeyModel CurrentHotkey { get; private set; }
public bool CurrentHotkeyAvailable { get; private set; }
public event EventHandler HotkeyChanged;
protected virtual void OnHotkeyChanged()
{
EventHandler handler = HotkeyChanged;
if (handler != null) handler(this, EventArgs.Empty);
}
public HotkeyControl()
{
InitializeComponent();
}
void TbHotkey_OnPreviewKeyDown(object sender, KeyEventArgs e)
{
e.Handled = true;
tbMsg.Visibility = Visibility.Hidden;
//when alt is pressed, the real key should be e.SystemKey
Key key = (e.Key == Key.System ? e.SystemKey : e.Key);
SpecialKeyState specialKeyState = GlobalHotkey.Instance.CheckModifiers();
var hotkeyModel = new HotkeyModel(
specialKeyState.AltPressed,
specialKeyState.ShiftPressed,
specialKeyState.WinPressed,
specialKeyState.CtrlPressed,
key);
var hotkeyString = hotkeyModel.ToString();
if (hotkeyString == tbHotkey.Text)
{
return;
}
Dispatcher.InvokeAsync(async () =>
{
await Task.Delay(500);
SetHotkey(hotkeyModel);
});
}
public void SetHotkey(HotkeyModel keyModel, bool triggerValidate = true)
{
CurrentHotkey = keyModel;
tbHotkey.Text = CurrentHotkey.ToString();
tbHotkey.Select(tbHotkey.Text.Length, 0);
if (triggerValidate)
{
CurrentHotkeyAvailable = CheckHotkeyAvailability();
if (!CurrentHotkeyAvailable)
{
tbMsg.Foreground = new SolidColorBrush(Colors.Red);
tbMsg.Text = InternationalizationManager.Instance.GetTranslation("hotkeyUnavailable");
}
else
{
tbMsg.Foreground = new SolidColorBrush(Colors.Green);
tbMsg.Text = InternationalizationManager.Instance.GetTranslation("success");
}
tbMsg.Visibility = Visibility.Visible;
OnHotkeyChanged();
}
}
public void SetHotkey(string keyStr, bool triggerValidate = true)
{
SetHotkey(new HotkeyModel(keyStr), triggerValidate);
}
private bool CheckHotkeyAvailability()
{
try
{
HotkeyManager.Current.AddOrReplace("HotkeyAvailabilityTest", CurrentHotkey.CharKey, CurrentHotkey.ModifierKeys, (sender, e) => { });
return true;
}
catch
{
}
finally
{
HotkeyManager.Current.Remove("HotkeyAvailabilityTest");
}
return false;
}
public new bool IsFocused
{
get { return tbHotkey.IsFocused; }
}
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 873 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 774 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 796 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 597 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 530 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 752 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 501 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 506 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 290 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 468 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 634 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 759 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 674 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 792 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 269 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 436 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 760 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 470 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 794 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 738 B

View File

@@ -0,0 +1,130 @@
<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">
<!--MainWindow-->
<system:String x:Key="registerHotkeyFailed">Kunne ikke registrere genvejstast: {0}</system:String>
<system:String x:Key="couldnotStartCmd">Kunne ikke starte {0}</system:String>
<system:String x:Key="invalidWoxPluginFileFormat">Ugyldigt Wox plugin filformat</system:String>
<system:String x:Key="setAsTopMostInThisQuery">Sæt øverst i denne søgning</system:String>
<system:String x:Key="cancelTopMostInThisQuery">Annuller øverst i denne søgning</system:String>
<system:String x:Key="executeQuery">Udfør søgning: {0}</system:String>
<system:String x:Key="lastExecuteTime">Seneste afviklingstid: {0}</system:String>
<system:String x:Key="iconTrayOpen">Åben</system:String>
<system:String x:Key="iconTraySettings">Indstillinger</system:String>
<system:String x:Key="iconTrayAbout">Om</system:String>
<system:String x:Key="iconTrayExit">Afslut</system:String>
<!--Setting General-->
<system:String x:Key="wox_settings">Wox indstillinger</system:String>
<system:String x:Key="general">Generelt</system:String>
<system:String x:Key="startWoxOnSystemStartup">Start Wox ved system start</system:String>
<system:String x:Key="hideWoxWhenLoseFocus">Skjul Wox ved mistet fokus</system:String>
<system:String x:Key="dontPromptUpdateMsg">Vis ikke notifikationer om nye versioner</system:String>
<system:String x:Key="rememberLastLocation">Husk seneste position</system:String>
<system:String x:Key="language">Sprog</system:String>
<system:String x:Key="maxShowResults">Maksimum antal resultater vist</system:String>
<system:String x:Key="ignoreHotkeysOnFullscreen">Ignorer genvejstaster i fuldskærmsmode</system:String>
<system:String x:Key="autoUpdates">Autoopdatering</system:String>
<system:String x:Key="hideOnStartup">Skjul Wox ved opstart</system:String>
<!--Setting Plugin-->
<system:String x:Key="plugin">Plugin</system:String>
<system:String x:Key="browserMorePlugins">Find flere plugins</system:String>
<system:String x:Key="disable">Deaktiver</system:String>
<system:String x:Key="actionKeywords">Nøgleord</system:String>
<system:String x:Key="pluginDirectory">Plugin bibliotek</system:String>
<system:String x:Key="author">Forfatter</system:String>
<system:String x:Key="plugin_init_time">Initaliseringstid: {0}ms</system:String>
<system:String x:Key="plugin_query_time">Søgetid: {0}ms</system:String>
<!--Setting Theme-->
<system:String x:Key="theme">Tema</system:String>
<system:String x:Key="browserMoreThemes">Søg efter flere temaer</system:String>
<system:String x:Key="helloWox">Hej Wox</system:String>
<system:String x:Key="queryBoxFont">Søgefelt skrifttype</system:String>
<system:String x:Key="resultItemFont">Resultat skrifttype</system:String>
<system:String x:Key="windowMode">Vindue mode</system:String>
<system:String x:Key="opacity">Gennemsigtighed</system:String>
<!--Setting Hotkey-->
<system:String x:Key="hotkey">Genvejstast</system:String>
<system:String x:Key="woxHotkey">Wox genvejstast</system:String>
<system:String x:Key="customQueryHotkey">Tilpasset søgegenvejstast</system:String>
<system:String x:Key="delete">Slet</system:String>
<system:String x:Key="edit">Rediger</system:String>
<system:String x:Key="add">Tilføj</system:String>
<system:String x:Key="pleaseSelectAnItem">Vælg venligst</system:String>
<system:String x:Key="deleteCustomHotkeyWarning">Er du sikker på du vil slette {0} plugin genvejstast?</system:String>
<!--Setting Proxy-->
<system:String x:Key="proxy">HTTP Proxy</system:String>
<system:String x:Key="enableProxy">Aktiver HTTP Proxy</system:String>
<system:String x:Key="server">HTTP Server</system:String>
<system:String x:Key="port">Port</system:String>
<system:String x:Key="userName">Brugernavn</system:String>
<system:String x:Key="password">Adgangskode</system:String>
<system:String x:Key="testProxy">Test Proxy</system:String>
<system:String x:Key="save">Gem</system:String>
<system:String x:Key="serverCantBeEmpty">Server felt må ikke være tomt</system:String>
<system:String x:Key="portCantBeEmpty">Port felt må ikke være tomt</system:String>
<system:String x:Key="invalidPortFormat">Ugyldigt port format</system:String>
<system:String x:Key="saveProxySuccessfully">Proxy konfiguration gemt</system:String>
<system:String x:Key="proxyIsCorrect">Proxy konfiguret korrekt</system:String>
<system:String x:Key="proxyConnectFailed">Proxy forbindelse fejlet</system:String>
<!--Setting About-->
<system:String x:Key="about">Om</system:String>
<system:String x:Key="website">Website</system:String>
<system:String x:Key="version">Version</system:String>
<system:String x:Key="about_activate_times">Du har aktiveret Wox {0} gange</system:String>
<system:String x:Key="checkUpdates">Tjek for opdateringer</system:String>
<system:String x:Key="newVersionTips">Ny version {0} er tilgængelig, genstart venligst Wox</system:String>
<system:String x:Key="releaseNotes">Release Notes:</system:String>
<!--Action Keyword Setting Dialog-->
<system:String x:Key="oldActionKeywords">Gammelt nøgleord</system:String>
<system:String x:Key="newActionKeywords">Nyt nøgleord</system:String>
<system:String x:Key="cancel">Annuller</system:String>
<system:String x:Key="done">Færdig</system:String>
<system:String x:Key="cannotFindSpecifiedPlugin">Kan ikke finde det valgte plugin</system:String>
<system:String x:Key="newActionKeywordsCannotBeEmpty">Nyt nøgleord må ikke være tomt</system:String>
<system:String x:Key="newActionKeywordsHasBeenAssigned">Nyt nøgleord er tilknyttet et andet plugin, tilknyt venligst et andet nyt nøgeleord</system:String>
<system:String x:Key="success">Fortsæt</system:String>
<system:String x:Key="actionkeyword_tips">Brug * hvis du ikke vil angive et nøgleord</system:String>
<!--Custom Query Hotkey Dialog-->
<system:String x:Key="preview">Vis</system:String>
<system:String x:Key="hotkeyIsNotUnavailable">Genvejstast er utilgængelig, vælg venligst en ny genvejstast</system:String>
<system:String x:Key="invalidPluginHotkey">Ugyldig plugin genvejstast</system:String>
<system:String x:Key="update">Opdater</system:String>
<!--Hotkey Control-->
<system:String x:Key="hotkeyUnavailable">Genvejstast utilgængelig</system:String>
<!--Crash Reporter-->
<system:String x:Key="reportWindow_version">Version</system:String>
<system:String x:Key="reportWindow_time">Tid</system:String>
<system:String x:Key="reportWindow_reproduce">Beskriv venligst hvordan Wox crashede, så vi kan rette det.</system:String>
<system:String x:Key="reportWindow_send_report">Send rapport</system:String>
<system:String x:Key="reportWindow_cancel">Annuller</system:String>
<system:String x:Key="reportWindow_general">Generelt</system:String>
<system:String x:Key="reportWindow_exceptions">Exceptions</system:String>
<system:String x:Key="reportWindow_exception_type">Exception Type</system:String>
<system:String x:Key="reportWindow_source">Kilde</system:String>
<system:String x:Key="reportWindow_stack_trace">Stack Trace</system:String>
<system:String x:Key="reportWindow_sending">Sender</system:String>
<system:String x:Key="reportWindow_report_succeed">Rapport sendt korrekt</system:String>
<system:String x:Key="reportWindow_report_failed">Kunne ikke sende rapport</system:String>
<system:String x:Key="reportWindow_wox_got_an_error">Wox fik en fejl</system:String>
<!--update-->
<system:String x:Key="update_wox_update_new_version_available">Ny Wox udgivelse {0} er nu tilgængelig</system:String>
<system:String x:Key="update_wox_update_error">Der skete en fejl ifm. opdatering af Wox</system:String>
<system:String x:Key="update_wox_update">Opdater</system:String>
<system:String x:Key="update_wox_update_cancel">Annuler</system:String>
<system:String x:Key="update_wox_update_restart_wox_tip">Denne opdatering vil genstarte Wox</system:String>
<system:String x:Key="update_wox_update_upadte_files">Følgende filer bliver opdateret</system:String>
<system:String x:Key="update_wox_update_files">Opdatereringsfiler</system:String>
<system:String x:Key="update_wox_update_upadte_description">Opdateringsbeskrivelse</system:String>
</ResourceDictionary>

View File

@@ -0,0 +1,130 @@
<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">
<!--MainWindow-->
<system:String x:Key="registerHotkeyFailed">Tastenkombinationregistrierung: {0} fehlgeschlagen</system:String>
<system:String x:Key="couldnotStartCmd">Kann {0} nicht starten</system:String>
<system:String x:Key="invalidWoxPluginFileFormat">Fehlerhaftes Wox-Plugin Dateiformat</system:String>
<system:String x:Key="setAsTopMostInThisQuery">In dieser Abfrage als oberstes setzen</system:String>
<system:String x:Key="cancelTopMostInThisQuery">In dieser Abfrage oberstes abbrechen</system:String>
<system:String x:Key="executeQuery">Abfrage ausführen:{0}</system:String>
<system:String x:Key="lastExecuteTime">Letzte Ausführungszeit:{0}</system:String>
<system:String x:Key="iconTrayOpen">Öffnen</system:String>
<system:String x:Key="iconTraySettings">Einstellungen</system:String>
<system:String x:Key="iconTrayAbout">Über</system:String>
<system:String x:Key="iconTrayExit">Schließen</system:String>
<!--Setting General-->
<system:String x:Key="wox_settings">Wox Einstellungen</system:String>
<system:String x:Key="general">Allgemein</system:String>
<system:String x:Key="startWoxOnSystemStartup">Starte Wox bei Systemstart</system:String>
<system:String x:Key="hideWoxWhenLoseFocus">Verstecke Wox wenn der Fokus verloren geht</system:String>
<system:String x:Key="dontPromptUpdateMsg">Zeige keine Nachricht wenn eine neue Version vorhanden ist</system:String>
<system:String x:Key="rememberLastLocation">Merke letzte Ausführungsposition</system:String>
<system:String x:Key="language">Sprache</system:String>
<system:String x:Key="maxShowResults">Maximale Anzahl Ergebnissen</system:String>
<system:String x:Key="ignoreHotkeysOnFullscreen">Ignoriere Tastenkombination wenn Fenster im Vollbildmodus ist</system:String>
<system:String x:Key="autoUpdates">Automatische Aktualisierung</system:String>
<system:String x:Key="hideOnStartup">Verstecke Wox bei Systemstart</system:String>
<!--Setting Plugin-->
<system:String x:Key="plugin">Plugin</system:String>
<system:String x:Key="browserMorePlugins">Suche nach weiteren Plugins</system:String>
<system:String x:Key="disable">Deaktivieren</system:String>
<system:String x:Key="actionKeywords">Aktionsschlüsselwörter</system:String>
<system:String x:Key="pluginDirectory">Pluginordner</system:String>
<system:String x:Key="author">Autor</system:String>
<system:String x:Key="plugin_init_time">Initialisierungszeit: {0}ms</system:String>
<system:String x:Key="plugin_query_time">Abfragezeit: {0}ms</system:String>
<!--Setting Theme-->
<system:String x:Key="theme">Theme</system:String>
<system:String x:Key="browserMoreThemes">Suche nach weiteren Themes</system:String>
<system:String x:Key="helloWox">Hallo Wox</system:String>
<system:String x:Key="queryBoxFont">Abfragebox Schriftart</system:String>
<system:String x:Key="resultItemFont">Ergebnis Schriftart</system:String>
<system:String x:Key="windowMode">Fenstermodus</system:String>
<system:String x:Key="opacity">Transparenz</system:String>
<!--Setting Hotkey-->
<system:String x:Key="hotkey">Tastenkombination</system:String>
<system:String x:Key="woxHotkey">Wox Tastenkombination</system:String>
<system:String x:Key="customQueryHotkey">Benutzerdefinierte Abfrage Tastenkombination</system:String>
<system:String x:Key="delete">Löschen</system:String>
<system:String x:Key="edit">Bearbeiten</system:String>
<system:String x:Key="add">Hinzufügen</system:String>
<system:String x:Key="pleaseSelectAnItem">Bitte einen Eintrag auswählen</system:String>
<system:String x:Key="deleteCustomHotkeyWarning">Wollen Sie die {0} Plugin Tastenkombination wirklich löschen?</system:String>
<!--Setting Proxy-->
<system:String x:Key="proxy">HTTP Proxy</system:String>
<system:String x:Key="enableProxy">Aktiviere HTTP Proxy</system:String>
<system:String x:Key="server">HTTP Server</system:String>
<system:String x:Key="port">Port</system:String>
<system:String x:Key="userName">Benutzername</system:String>
<system:String x:Key="password">Passwort</system:String>
<system:String x:Key="testProxy">Teste Proxy</system:String>
<system:String x:Key="save">Speichern</system:String>
<system:String x:Key="serverCantBeEmpty">Server darf nicht leer sein</system:String>
<system:String x:Key="portCantBeEmpty">Server Port darf nicht leer sein</system:String>
<system:String x:Key="invalidPortFormat">Falsches Port Format</system:String>
<system:String x:Key="saveProxySuccessfully">Proxy wurde erfolgreich gespeichert</system:String>
<system:String x:Key="proxyIsCorrect">Proxy ist korrekt</system:String>
<system:String x:Key="proxyConnectFailed">Verbindung zum Proxy fehlgeschlagen</system:String>
<!--Setting About-->
<system:String x:Key="about">Über</system:String>
<system:String x:Key="website">Webseite</system:String>
<system:String x:Key="version">Version</system:String>
<system:String x:Key="about_activate_times">Sie haben Wox {0} mal aktiviert</system:String>
<system:String x:Key="checkUpdates">Nach Aktuallisierungen Suchen</system:String>
<system:String x:Key="newVersionTips">Eine neue Version ({0}) ist vorhanden. Bitte starten Sie Wox neu.</system:String>
<system:String x:Key="releaseNotes">Versionshinweise:</system:String>
<!--Action Keyword Setting Dialog-->
<system:String x:Key="oldActionKeywords">Altes Aktionsschlüsselwort</system:String>
<system:String x:Key="newActionKeywords">Neues Aktionsschlüsselwort</system:String>
<system:String x:Key="cancel">Abbrechen</system:String>
<system:String x:Key="done">Fertig</system:String>
<system:String x:Key="cannotFindSpecifiedPlugin">Kann das angegebene Plugin nicht finden</system:String>
<system:String x:Key="newActionKeywordsCannotBeEmpty">Neues Aktionsschlüsselwort darf nicht leer sein</system:String>
<system:String x:Key="newActionKeywordsHasBeenAssigned">Aktionsschlüsselwort ist schon bei einem anderen Plugin in verwendung. Bitte stellen Sie ein anderes Aktionsschlüsselwort ein.</system:String>
<system:String x:Key="success">Erfolgreich</system:String>
<system:String x:Key="actionkeyword_tips">Benutzen Sie * wenn Sie ein Aktionsschlüsselwort definieren wollen.</system:String>
<!--Custom Query Hotkey Dialog-->
<system:String x:Key="preview">Vorschau</system:String>
<system:String x:Key="hotkeyIsNotUnavailable">Tastenkombination ist nicht verfügbar, bitte wähle eine andere Tastenkombination</system:String>
<system:String x:Key="invalidPluginHotkey">Ungültige Plugin Tastenkombination</system:String>
<system:String x:Key="update">Aktualisieren</system:String>
<!--Hotkey Control-->
<system:String x:Key="hotkeyUnavailable">Tastenkombination nicht verfügbar</system:String>
<!--Crash Reporter-->
<system:String x:Key="reportWindow_version">Version</system:String>
<system:String x:Key="reportWindow_time">Zeit</system:String>
<system:String x:Key="reportWindow_reproduce">Bitte teilen Sie uns mit, wie die Anwendung abgestürzt ist, damit wir den Fehler beheben können.</system:String>
<system:String x:Key="reportWindow_send_report">Sende Report</system:String>
<system:String x:Key="reportWindow_cancel">Abbrechen</system:String>
<system:String x:Key="reportWindow_general">Allgemein</system:String>
<system:String x:Key="reportWindow_exceptions">Fehler</system:String>
<system:String x:Key="reportWindow_exception_type">Fehlertypen</system:String>
<system:String x:Key="reportWindow_source">Quelle</system:String>
<system:String x:Key="reportWindow_stack_trace">Stack Trace</system:String>
<system:String x:Key="reportWindow_sending">Sende</system:String>
<system:String x:Key="reportWindow_report_succeed">Report erfolgreich</system:String>
<system:String x:Key="reportWindow_report_failed">Report fehlgeschlagen</system:String>
<system:String x:Key="reportWindow_wox_got_an_error">Wox hat einen Fehler</system:String>
<!--update-->
<system:String x:Key="update_wox_update_new_version_available">V{0} von Wox ist verfügbar</system:String>
<system:String x:Key="update_wox_update_error">Es ist ein Fehler während der Installation der Aktualisierung aufgetreten.</system:String>
<system:String x:Key="update_wox_update">Aktualisieren</system:String>
<system:String x:Key="update_wox_update_cancel">Abbrechen</system:String>
<system:String x:Key="update_wox_update_restart_wox_tip">Diese Aktualisierung wird Wox neu starten</system:String>
<system:String x:Key="update_wox_update_upadte_files">Folgende Dateien werden aktualisiert</system:String>
<system:String x:Key="update_wox_update_files">Aktualisiere Dateien</system:String>
<system:String x:Key="update_wox_update_upadte_description">Aktualisierungbeschreibung</system:String>
</ResourceDictionary>

View File

@@ -0,0 +1,144 @@
<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">
<!--MainWindow-->
<system:String x:Key="registerHotkeyFailed">Failed to register hotkey: {0}</system:String>
<system:String x:Key="couldnotStartCmd">Could not start {0}</system:String>
<system:String x:Key="invalidWoxPluginFileFormat">Invalid Wox plugin file format</system:String>
<system:String x:Key="setAsTopMostInThisQuery">Set as topmost in this query</system:String>
<system:String x:Key="cancelTopMostInThisQuery">Cancel topmost in this query</system:String>
<system:String x:Key="executeQuery">Execute query: {0}</system:String>
<system:String x:Key="lastExecuteTime">Last execution time: {0}</system:String>
<system:String x:Key="iconTrayOpen">Open</system:String>
<system:String x:Key="iconTraySettings">Settings</system:String>
<system:String x:Key="iconTrayAbout">About</system:String>
<system:String x:Key="iconTrayExit">Exit</system:String>
<!--Setting General-->
<system:String x:Key="wox_settings">Wox Settings</system:String>
<system:String x:Key="general">General</system:String>
<system:String x:Key="startWoxOnSystemStartup">Start Wox on system startup</system:String>
<system:String x:Key="hideWoxWhenLoseFocus">Hide Wox when focus is lost</system:String>
<system:String x:Key="dontPromptUpdateMsg">Do not show new version notifications</system:String>
<system:String x:Key="rememberLastLocation">Remember last launch location</system:String>
<system:String x:Key="language">Language</system:String>
<system:String x:Key="lastQueryMode">Last Query Style</system:String>
<system:String x:Key="LastQueryPreserved">Preserve Last Query</system:String>
<system:String x:Key="LastQuerySelected">Select last Query</system:String>
<system:String x:Key="LastQueryEmpty">Empty last Query</system:String>
<system:String x:Key="maxShowResults">Maximum results shown</system:String>
<system:String x:Key="ignoreHotkeysOnFullscreen">Ignore hotkeys in fullscreen mode</system:String>
<system:String x:Key="autoUpdates">Auto Update</system:String>
<system:String x:Key="hideOnStartup">Hide Wox on startup</system:String>
<system:String x:Key="hideNotifyIcon">Hide tray icon</system:String>
<system:String x:Key="querySearchPrecision">Query Search Precision</system:String>
<system:String x:Key="ShouldUsePinyin">Should Use Pinyin</system:String>
<!--Setting Plugin-->
<system:String x:Key="plugin">Plugin</system:String>
<system:String x:Key="browserMorePlugins">Find more plugins</system:String>
<system:String x:Key="disable">Disable</system:String>
<system:String x:Key="actionKeywords">Action keywords</system:String>
<system:String x:Key="pluginDirectory">Plugin Directory</system:String>
<system:String x:Key="author">Author</system:String>
<system:String x:Key="plugin_init_time">Init time: {0}ms</system:String>
<system:String x:Key="plugin_query_time">Query time: {0}ms</system:String>
<!--Setting Theme-->
<system:String x:Key="theme">Theme</system:String>
<system:String x:Key="browserMoreThemes">Browse for more themes</system:String>
<system:String x:Key="helloWox">Hello Wox</system:String>
<system:String x:Key="queryBoxFont">Query Box Font</system:String>
<system:String x:Key="resultItemFont">Result Item Font</system:String>
<system:String x:Key="windowMode">Window Mode</system:String>
<system:String x:Key="opacity">Opacity</system:String>
<system:String x:Key="theme_load_failure_path_not_exists">Theme {0} not exists, fallback to default theme</system:String>
<system:String x:Key="theme_load_failure_parse_error">Fail to load theme {0}, fallback to default theme</system:String>
<!--Setting Hotkey-->
<system:String x:Key="hotkey">Hotkey</system:String>
<system:String x:Key="woxHotkey">Wox Hotkey</system:String>
<system:String x:Key="customQueryHotkey">Custom Query Hotkey</system:String>
<system:String x:Key="delete">Delete</system:String>
<system:String x:Key="edit">Edit</system:String>
<system:String x:Key="add">Add</system:String>
<system:String x:Key="pleaseSelectAnItem">Please select an item</system:String>
<system:String x:Key="deleteCustomHotkeyWarning">Are you sure you want to delete {0} plugin hotkey?</system:String>
<!--Setting Proxy-->
<system:String x:Key="proxy">HTTP Proxy</system:String>
<system:String x:Key="enableProxy">Enable HTTP Proxy</system:String>
<system:String x:Key="server">HTTP Server</system:String>
<system:String x:Key="port">Port</system:String>
<system:String x:Key="userName">User Name</system:String>
<system:String x:Key="password">Password</system:String>
<system:String x:Key="testProxy">Test Proxy</system:String>
<system:String x:Key="save">Save</system:String>
<system:String x:Key="serverCantBeEmpty">Server field can't be empty</system:String>
<system:String x:Key="portCantBeEmpty">Port field can't be empty</system:String>
<system:String x:Key="invalidPortFormat">Invalid port format</system:String>
<system:String x:Key="saveProxySuccessfully">Proxy configuration saved successfully</system:String>
<system:String x:Key="proxyIsCorrect">Proxy configured correctly</system:String>
<system:String x:Key="proxyConnectFailed">Proxy connection failed</system:String>
<!--Setting About-->
<system:String x:Key="about">About</system:String>
<system:String x:Key="website">Website</system:String>
<system:String x:Key="version">Version</system:String>
<system:String x:Key="about_activate_times">You have activated Wox {0} times</system:String>
<system:String x:Key="checkUpdates">Check for Updates</system:String>
<system:String x:Key="newVersionTips">New version {0} is available, please restart Wox.</system:String>
<system:String x:Key="checkUpdatesFailed">Check updates failed, please check your connection and proxy settings to api.github.com.</system:String>
<system:String x:Key="downloadUpdatesFailed">
Download updates failed, please check your connection and proxy settings to github-cloud.s3.amazonaws.com,
or go to https://github.com/Wox-launcher/Wox/releases to download updates manually.
</system:String>
<system:String x:Key="releaseNotes">Release Notes:</system:String>
<!--Action Keyword Setting Dialog-->
<system:String x:Key="oldActionKeywords">Old Action Keyword</system:String>
<system:String x:Key="newActionKeywords">New Action Keyword</system:String>
<system:String x:Key="cancel">Cancel</system:String>
<system:String x:Key="done">Done</system:String>
<system:String x:Key="cannotFindSpecifiedPlugin">Can't find specified plugin</system:String>
<system:String x:Key="newActionKeywordsCannotBeEmpty">New Action Keyword can't be empty</system:String>
<system:String x:Key="newActionKeywordsHasBeenAssigned">New Action Keywords have been assigned to another plugin, please assign other new action keyword</system:String>
<system:String x:Key="success">Success</system:String>
<system:String x:Key="actionkeyword_tips">Use * if you don't want to specify an action keyword</system:String>
<!--Custom Query Hotkey Dialog-->
<system:String x:Key="preview">Preview</system:String>
<system:String x:Key="hotkeyIsNotUnavailable">Hotkey is unavailable, please select a new hotkey</system:String>
<system:String x:Key="invalidPluginHotkey">Invalid plugin hotkey</system:String>
<system:String x:Key="update">Update</system:String>
<!--Hotkey Control-->
<system:String x:Key="hotkeyUnavailable">Hotkey unavailable</system:String>
<!--Crash Reporter-->
<system:String x:Key="reportWindow_version">Version</system:String>
<system:String x:Key="reportWindow_time">Time</system:String>
<system:String x:Key="reportWindow_reproduce">Please tell us how application crashed so we can fix it</system:String>
<system:String x:Key="reportWindow_send_report">Send Report</system:String>
<system:String x:Key="reportWindow_cancel">Cancel</system:String>
<system:String x:Key="reportWindow_general">General</system:String>
<system:String x:Key="reportWindow_exceptions">Exceptions</system:String>
<system:String x:Key="reportWindow_exception_type">Exception Type</system:String>
<system:String x:Key="reportWindow_source">Source</system:String>
<system:String x:Key="reportWindow_stack_trace">Stack Trace</system:String>
<system:String x:Key="reportWindow_sending">Sending</system:String>
<system:String x:Key="reportWindow_report_succeed">Report sent successfully</system:String>
<system:String x:Key="reportWindow_report_failed">Failed to send report</system:String>
<system:String x:Key="reportWindow_wox_got_an_error">Wox got an error</system:String>
<!--update-->
<system:String x:Key="update_wox_update_new_version_available">New Wox release {0} is now available</system:String>
<system:String x:Key="update_wox_update_error">An error occurred while trying to install software updates</system:String>
<system:String x:Key="update_wox_update">Update</system:String>
<system:String x:Key="update_wox_update_cancel">Cancel</system:String>
<system:String x:Key="update_wox_update_restart_wox_tip">This upgrade will restart Wox</system:String>
<system:String x:Key="update_wox_update_upadte_files">Following files will be updated</system:String>
<system:String x:Key="update_wox_update_files">Update files</system:String>
<system:String x:Key="update_wox_update_upadte_description">Update description</system:String>
</ResourceDictionary>

View File

@@ -0,0 +1,136 @@
<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">
<!--MainWindow-->
<system:String x:Key="registerHotkeyFailed">Échec lors de l'enregistrement du raccourci : {0}</system:String>
<system:String x:Key="couldnotStartCmd">Impossible de lancer {0}</system:String>
<system:String x:Key="invalidWoxPluginFileFormat">Le format de fichier n'est pas un plugin Wox valide</system:String>
<system:String x:Key="setAsTopMostInThisQuery">Définir en tant que favori pour cette requête</system:String>
<system:String x:Key="cancelTopMostInThisQuery">Annuler le favori</system:String>
<system:String x:Key="executeQuery">Lancer la requête : {0}</system:String>
<system:String x:Key="lastExecuteTime">Dernière exécution : {0}</system:String>
<system:String x:Key="iconTrayOpen">Ouvrir</system:String>
<system:String x:Key="iconTraySettings">Paramètres</system:String>
<system:String x:Key="iconTrayAbout">À propos</system:String>
<system:String x:Key="iconTrayExit">Quitter</system:String>
<!--Setting General-->
<system:String x:Key="wox_settings">Paramètres - Wox</system:String>
<system:String x:Key="general">Général</system:String>
<system:String x:Key="startWoxOnSystemStartup">Lancer Wox au démarrage du système</system:String>
<system:String x:Key="hideWoxWhenLoseFocus">Cacher Wox lors de la perte de focus</system:String>
<system:String x:Key="dontPromptUpdateMsg">Ne pas afficher le message de mise à jour pour les nouvelles versions</system:String>
<system:String x:Key="rememberLastLocation">Se souvenir du dernier emplacement de la fenêtre</system:String>
<system:String x:Key="language">Langue</system:String>
<system:String x:Key="lastQueryMode">Affichage de la dernière recherche</system:String>
<system:String x:Key="LastQueryPreserved">Conserver la dernière recherche</system:String>
<system:String x:Key="LastQuerySelected">Sélectionner la dernière recherche</system:String>
<system:String x:Key="LastQueryEmpty">Ne pas afficher la dernière recherche</system:String>
<system:String x:Key="maxShowResults">Résultats maximums à afficher</system:String>
<system:String x:Key="ignoreHotkeysOnFullscreen">Ignore les raccourcis lorsqu'une application est en plein écran</system:String>
<system:String x:Key="autoUpdates">Mettre à jour automatiquement</system:String>
<system:String x:Key="hideOnStartup">Cacher Wox au démarrage</system:String>
<!--Setting Plugin-->
<system:String x:Key="plugin">Modules</system:String>
<system:String x:Key="browserMorePlugins">Trouver plus de modules</system:String>
<system:String x:Key="disable">Désactivé</system:String>
<system:String x:Key="actionKeywords">Mot-clé d'action :</system:String>
<system:String x:Key="pluginDirectory">Répertoire</system:String>
<system:String x:Key="author">Auteur </system:String>
<system:String x:Key="plugin_init_time">Chargement : {0}ms</system:String>
<system:String x:Key="plugin_query_time">Utilisation : {0}ms</system:String>
<!--Setting Theme-->
<system:String x:Key="theme">Thèmes</system:String>
<system:String x:Key="browserMoreThemes">Trouver plus de thèmes</system:String>
<system:String x:Key="helloWox">Hello Wox</system:String>
<system:String x:Key="queryBoxFont">Police (barre de recherche)</system:String>
<system:String x:Key="resultItemFont">Police (liste des résultats) </system:String>
<system:String x:Key="windowMode">Mode fenêtré</system:String>
<system:String x:Key="opacity">Opacité</system:String>
<!--Setting Hotkey-->
<system:String x:Key="hotkey">Raccourcis</system:String>
<system:String x:Key="woxHotkey">Ouvrir Wox</system:String>
<system:String x:Key="customQueryHotkey">Requêtes personnalisées</system:String>
<system:String x:Key="delete">Supprimer</system:String>
<system:String x:Key="edit">Modifier</system:String>
<system:String x:Key="add">Ajouter</system:String>
<system:String x:Key="pleaseSelectAnItem">Veuillez sélectionner un élément</system:String>
<system:String x:Key="deleteCustomHotkeyWarning">Voulez-vous vraiment supprimer {0} raccourci(s) ?</system:String>
<!--Setting Proxy-->
<system:String x:Key="proxy">Proxy HTTP</system:String>
<system:String x:Key="enableProxy">Activer le HTTP proxy</system:String>
<system:String x:Key="server">Serveur HTTP</system:String>
<system:String x:Key="port">Port</system:String>
<system:String x:Key="userName">Utilisateur</system:String>
<system:String x:Key="password">Mot de passe</system:String>
<system:String x:Key="testProxy">Tester</system:String>
<system:String x:Key="save">Sauvegarder</system:String>
<system:String x:Key="serverCantBeEmpty">Un serveur doit être indiqué</system:String>
<system:String x:Key="portCantBeEmpty">Un port doit être indiqué</system:String>
<system:String x:Key="invalidPortFormat">Format du port invalide</system:String>
<system:String x:Key="saveProxySuccessfully">Proxy sauvegardé avec succès</system:String>
<system:String x:Key="proxyIsCorrect">Le proxy est valide</system:String>
<system:String x:Key="proxyConnectFailed">Connexion au proxy échouée</system:String>
<!--Setting About-->
<system:String x:Key="about">À propos</system:String>
<system:String x:Key="website">Site web</system:String>
<system:String x:Key="version">Version</system:String>
<system:String x:Key="about_activate_times">Vous avez utilisé Wox {0} fois</system:String>
<system:String x:Key="checkUpdates">Vérifier les mises à jour</system:String>
<system:String x:Key="newVersionTips">Nouvelle version {0} disponible, veuillez redémarrer Wox</system:String>
<system:String x:Key="checkUpdatesFailed">Échec de la vérification de la mise à jour, vérifiez votre connexion et vos paramètres de configuration proxy pour pouvoir acceder à api.github.com.</system:String>
<system:String x:Key="downloadUpdatesFailed">Échec du téléchargement de la mise à jour, vérifiez votre connexion et vos paramètres de configuration proxy pour pouvoir acceder à github-cloud.s3.amazonaws.com, ou téléchargez manuelement la mise à jour sur https://github.com/Wox-launcher/Wox/releases.</system:String>
<system:String x:Key="releaseNotes">Notes de changement :</system:String>
<!--Action Keyword Setting Dialog-->
<system:String x:Key="oldActionKeywords">Ancien mot-clé d'action</system:String>
<system:String x:Key="newActionKeywords">Nouveau mot-clé d'action</system:String>
<system:String x:Key="cancel">Annuler</system:String>
<system:String x:Key="done">Terminé</system:String>
<system:String x:Key="cannotFindSpecifiedPlugin">Impossible de trouver le module spécifié</system:String>
<system:String x:Key="newActionKeywordsCannotBeEmpty">Le nouveau mot-clé d'action doit être spécifié</system:String>
<system:String x:Key="newActionKeywordsHasBeenAssigned">Le nouveau mot-clé d'action a été assigné à un autre module, veuillez en choisir un autre</system:String>
<system:String x:Key="success">Ajouté</system:String>
<system:String x:Key="actionkeyword_tips">Saisissez * si vous ne souhaitez pas utiliser de mot-clé spécifique</system:String>
<!--Custom Query Hotkey Dialog-->
<system:String x:Key="preview">Prévisualiser</system:String>
<system:String x:Key="hotkeyIsNotUnavailable">Raccourci indisponible. Veuillez en choisir un autre.</system:String>
<system:String x:Key="invalidPluginHotkey">Raccourci invalide</system:String>
<system:String x:Key="update">Actualiser</system:String>
<!--Hotkey Control-->
<system:String x:Key="hotkeyUnavailable">Raccourci indisponible</system:String>
<!--Crash Reporter-->
<system:String x:Key="reportWindow_version">Version</system:String>
<system:String x:Key="reportWindow_time">Heure</system:String>
<system:String x:Key="reportWindow_reproduce">Veuillez nous indiquer comment l'application a planté afin que nous puissions le corriger</system:String>
<system:String x:Key="reportWindow_send_report">Envoyer le rapport</system:String>
<system:String x:Key="reportWindow_cancel">Annuler</system:String>
<system:String x:Key="reportWindow_general">Général</system:String>
<system:String x:Key="reportWindow_exceptions">Exceptions</system:String>
<system:String x:Key="reportWindow_exception_type">Type d'exception</system:String>
<system:String x:Key="reportWindow_source">Source</system:String>
<system:String x:Key="reportWindow_stack_trace">Trace d'appel</system:String>
<system:String x:Key="reportWindow_sending">Envoi en cours</system:String>
<system:String x:Key="reportWindow_report_succeed">Signalement envoyé</system:String>
<system:String x:Key="reportWindow_report_failed">Échec de l'envoi du signalement</system:String>
<system:String x:Key="reportWindow_wox_got_an_error">Wox a rencontré une erreur</system:String>
<!--update-->
<system:String x:Key="update_wox_update_new_version_available">Version v{0} de Wox disponible</system:String>
<system:String x:Key="update_wox_update_error">Une erreur s'est produite lors de l'installation de la mise à jour</system:String>
<system:String x:Key="update_wox_update">Mettre à jour</system:String>
<system:String x:Key="update_wox_update_cancel">Annuler</system:String>
<system:String x:Key="update_wox_update_restart_wox_tip">Wox doit redémarrer pour installer cette mise à jour</system:String>
<system:String x:Key="update_wox_update_upadte_files">Les fichiers suivants seront mis à jour</system:String>
<system:String x:Key="update_wox_update_files">Fichiers mis à jour</system:String>
<system:String x:Key="update_wox_update_upadte_description">Description de la mise à jour</system:String>
</ResourceDictionary>

View File

@@ -0,0 +1,139 @@
<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">
<!--MainWindow-->
<system:String x:Key="registerHotkeyFailed">Impossibile salvare il tasto di scelta rapida: {0}</system:String>
<system:String x:Key="couldnotStartCmd">Avvio fallito {0}</system:String>
<system:String x:Key="invalidWoxPluginFileFormat">Formato file plugin non valido</system:String>
<system:String x:Key="setAsTopMostInThisQuery">Risultato prioritario con questa query</system:String>
<system:String x:Key="cancelTopMostInThisQuery">Rimuovi risultato prioritario con questa query</system:String>
<system:String x:Key="executeQuery">Query d'esecuzione: {0}</system:String>
<system:String x:Key="lastExecuteTime">Ultima esecuzione: {0}</system:String>
<system:String x:Key="iconTrayOpen">Apri</system:String>
<system:String x:Key="iconTraySettings">Impostazioni</system:String>
<system:String x:Key="iconTrayAbout">About</system:String>
<system:String x:Key="iconTrayExit">Esci</system:String>
<!--Setting General-->
<system:String x:Key="wox_settings">Impostaizoni Wox</system:String>
<system:String x:Key="general">Generale</system:String>
<system:String x:Key="startWoxOnSystemStartup">Avvia Wow all'avvio di Windows</system:String>
<system:String x:Key="hideWoxWhenLoseFocus">Nascondi Wox quando perde il focus</system:String>
<system:String x:Key="dontPromptUpdateMsg">Non mostrare le notifiche per una nuova versione</system:String>
<system:String x:Key="rememberLastLocation">Ricorda l'ultima posizione di avvio del launcher</system:String>
<system:String x:Key="language">Lingua</system:String>
<system:String x:Key="lastQueryMode">Comportamento ultima ricerca</system:String>
<system:String x:Key="LastQueryPreserved">Conserva ultima ricerca</system:String>
<system:String x:Key="LastQuerySelected">Seleziona ultima ricerca</system:String>
<system:String x:Key="LastQueryEmpty">Cancella ultima ricerca</system:String>
<system:String x:Key="maxShowResults">Numero massimo di risultati mostrati</system:String>
<system:String x:Key="ignoreHotkeysOnFullscreen">Ignora i tasti di scelta rapida in applicazione a schermo pieno</system:String>
<system:String x:Key="autoUpdates">Aggiornamento automatico</system:String>
<system:String x:Key="hideOnStartup">Nascondi Wox all'avvio</system:String>
<!--Setting Plugin-->
<system:String x:Key="plugin">Plugin</system:String>
<system:String x:Key="browserMorePlugins">Cerca altri plugins</system:String>
<system:String x:Key="disable">Disabilita</system:String>
<system:String x:Key="actionKeywords">Parole chiave</system:String>
<system:String x:Key="pluginDirectory">Cartella Plugin</system:String>
<system:String x:Key="author">Autore</system:String>
<system:String x:Key="plugin_init_time">Tempo di avvio: {0}ms</system:String>
<system:String x:Key="plugin_query_time">Tempo ricerca: {0}ms</system:String>
<!--Setting Theme-->
<system:String x:Key="theme">Tema</system:String>
<system:String x:Key="browserMoreThemes">Sfoglia per altri temi</system:String>
<system:String x:Key="helloWox">Hello Wox</system:String>
<system:String x:Key="queryBoxFont">Font campo di ricerca</system:String>
<system:String x:Key="resultItemFont">Font campo risultati</system:String>
<system:String x:Key="windowMode">Modalità finestra</system:String>
<system:String x:Key="opacity">Opacità</system:String>
<!--Setting Hotkey-->
<system:String x:Key="hotkey">Tasti scelta rapida</system:String>
<system:String x:Key="woxHotkey">Tasto scelta rapida Wox</system:String>
<system:String x:Key="customQueryHotkey">Tasti scelta rapida per ricerche personalizzate</system:String>
<system:String x:Key="delete">Cancella</system:String>
<system:String x:Key="edit">Modifica</system:String>
<system:String x:Key="add">Aggiungi</system:String>
<system:String x:Key="pleaseSelectAnItem">Selezionare un oggetto</system:String>
<system:String x:Key="deleteCustomHotkeyWarning">Volete cancellare il tasto di scelta rapida per il plugin {0}?</system:String>
<!--Setting Proxy-->
<system:String x:Key="proxy">Proxy HTTP</system:String>
<system:String x:Key="enableProxy">Abilita Proxy HTTP</system:String>
<system:String x:Key="server">Server HTTP</system:String>
<system:String x:Key="port">Porta</system:String>
<system:String x:Key="userName">User Name</system:String>
<system:String x:Key="password">Password</system:String>
<system:String x:Key="testProxy">Proxy Test</system:String>
<system:String x:Key="save">Salva</system:String>
<system:String x:Key="serverCantBeEmpty">Il campo Server non può essere vuoto</system:String>
<system:String x:Key="portCantBeEmpty">Il campo Porta non può essere vuoto</system:String>
<system:String x:Key="invalidPortFormat">Formato Porta non valido</system:String>
<system:String x:Key="saveProxySuccessfully">Configurazione Proxy salvata correttamente</system:String>
<system:String x:Key="proxyIsCorrect">Proxy Configurato correttamente</system:String>
<system:String x:Key="proxyConnectFailed">Connessione Proxy fallita</system:String>
<!--Setting About-->
<system:String x:Key="about">About</system:String>
<system:String x:Key="website">Sito web</system:String>
<system:String x:Key="version">Versione</system:String>
<system:String x:Key="about_activate_times">Hai usato Wox {0} volte</system:String>
<system:String x:Key="checkUpdates">Cerca aggiornamenti</system:String>
<system:String x:Key="newVersionTips">Una nuova versione {0} è disponibile, riavvia Wox per favore.</system:String>
<system:String x:Key="checkUpdatesFailed">Ricerca aggiornamenti fallita, per favore controlla la tua connessione e le eventuali impostazioni proxy per api.github.com.</system:String>
<system:String x:Key="downloadUpdatesFailed">
Download degli aggiornamenti fallito, per favore controlla la tua connessione ed eventuali impostazioni proxy per github-cloud.s3.amazonaws.com,
oppure vai su https://github.com/Wox-launcher/Wox/releases per scaricare gli aggiornamenti manualmente.
</system:String>
<system:String x:Key="releaseNotes">Note di rilascio:</system:String>
<!--Action Keyword Setting Dialog-->
<system:String x:Key="oldActionKeywords">Vecchia parola chiave d'azione</system:String>
<system:String x:Key="newActionKeywords">Nuova parola chiave d'azione</system:String>
<system:String x:Key="cancel">Annulla</system:String>
<system:String x:Key="done">Conferma</system:String>
<system:String x:Key="cannotFindSpecifiedPlugin">Impossibile trovare il plugin specificato</system:String>
<system:String x:Key="newActionKeywordsCannotBeEmpty">La nuova parola chiave d'azione non può essere vuota</system:String>
<system:String x:Key="newActionKeywordsHasBeenAssigned">La nuova parola chiave d'azione è stata assegnata ad un altro plugin, per favore sceglierne una differente</system:String>
<system:String x:Key="success">Successo</system:String>
<system:String x:Key="actionkeyword_tips">Usa * se non vuoi specificare una parola chiave d'azione</system:String>
<!--Custom Query Hotkey Dialog-->
<system:String x:Key="preview">Anteprima</system:String>
<system:String x:Key="hotkeyIsNotUnavailable">Tasto di scelta rapida non disponibile, per favore scegli un nuovo tasto di scelta rapida</system:String>
<system:String x:Key="invalidPluginHotkey">Tasto di scelta rapida plugin non valido</system:String>
<system:String x:Key="update">Aggiorna</system:String>
<!--Hotkey Control-->
<system:String x:Key="hotkeyUnavailable">Tasto di scelta rapida non disponibile</system:String>
<!--Crash Reporter-->
<system:String x:Key="reportWindow_version">Versione</system:String>
<system:String x:Key="reportWindow_time">Tempo</system:String>
<system:String x:Key="reportWindow_reproduce">Per favore raccontaci come l'applicazione si è chiusa inaspettatamente così che possimo risolvere il problema</system:String>
<system:String x:Key="reportWindow_send_report">Invia rapporto</system:String>
<system:String x:Key="reportWindow_cancel">Annulla</system:String>
<system:String x:Key="reportWindow_general">Generale</system:String>
<system:String x:Key="reportWindow_exceptions">Eccezioni</system:String>
<system:String x:Key="reportWindow_exception_type">Tipo di eccezione</system:String>
<system:String x:Key="reportWindow_source">Risorsa</system:String>
<system:String x:Key="reportWindow_stack_trace">Traccia dello stack</system:String>
<system:String x:Key="reportWindow_sending">Invio in corso</system:String>
<system:String x:Key="reportWindow_report_succeed">Rapporto inviato correttamente</system:String>
<system:String x:Key="reportWindow_report_failed">Invio rapporto fallito</system:String>
<system:String x:Key="reportWindow_wox_got_an_error">Wox ha riportato un errore</system:String>
<!--update-->
<system:String x:Key="update_wox_update_new_version_available">E' disponibile la nuova release {0} di Wox</system:String>
<system:String x:Key="update_wox_update_error">Errore durante l'installazione degli aggiornamenti software</system:String>
<system:String x:Key="update_wox_update">Aggiorna</system:String>
<system:String x:Key="update_wox_update_cancel">Annulla</system:String>
<system:String x:Key="update_wox_update_restart_wox_tip">Questo aggiornamento riavvierà Wox</system:String>
<system:String x:Key="update_wox_update_upadte_files">I seguenti file saranno aggiornati</system:String>
<system:String x:Key="update_wox_update_files">File aggiornati</system:String>
<system:String x:Key="update_wox_update_upadte_description">Descrizione aggiornamento</system:String>
</ResourceDictionary>

View File

@@ -0,0 +1,142 @@
<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">
<!--MainWindow-->
<system:String x:Key="registerHotkeyFailed">ホットキー「{0}」の登録に失敗しました</system:String>
<system:String x:Key="couldnotStartCmd">{0}の起動に失敗しました</system:String>
<system:String x:Key="invalidWoxPluginFileFormat">Woxプラグインの形式が正しくありません</system:String>
<system:String x:Key="setAsTopMostInThisQuery">このクエリを最上位にセットする</system:String>
<system:String x:Key="cancelTopMostInThisQuery">このクエリを最上位にセットをキャンセル</system:String>
<system:String x:Key="executeQuery">次のコマンドを実行します:{0}</system:String>
<system:String x:Key="lastExecuteTime">最終実行時間:{0}</system:String>
<system:String x:Key="iconTrayOpen">開く</system:String>
<system:String x:Key="iconTraySettings">設定</system:String>
<system:String x:Key="iconTrayAbout">Woxについて</system:String>
<system:String x:Key="iconTrayExit">終了</system:String>
<!--Setting General-->
<system:String x:Key="wox_settings">Wox設定</system:String>
<system:String x:Key="general">一般</system:String>
<system:String x:Key="startWoxOnSystemStartup">スタートアップ時にWoxを起動する</system:String>
<system:String x:Key="hideWoxWhenLoseFocus">フォーカスを失った時にWoxを隠す</system:String>
<system:String x:Key="dontPromptUpdateMsg">最新版が入手可能であっても、アップグレードメッセージを表示しない</system:String>
<system:String x:Key="rememberLastLocation">前回のランチャーの位置を記憶</system:String>
<system:String x:Key="language">言語</system:String>
<system:String x:Key="lastQueryMode">前回のクエリの扱い</system:String>
<system:String x:Key="LastQueryPreserved">前回のクエリを保存</system:String>
<system:String x:Key="LastQuerySelected">前回のクエリを選択</system:String>
<system:String x:Key="LastQueryEmpty">前回のクエリを消去</system:String>
<system:String x:Key="maxShowResults">結果の最大表示件数</system:String>
<system:String x:Key="ignoreHotkeysOnFullscreen">ウィンドウがフルスクリーン時にホットキーを無効にする</system:String>
<system:String x:Key="autoUpdates">自動更新</system:String>
<system:String x:Key="hideOnStartup">起動時にWoxを隠す</system:String>
<system:String x:Key="hideNotifyIcon">トレイアイコンを隠す</system:String>
<!--Setting Plugin-->
<system:String x:Key="plugin">プラグイン</system:String>
<system:String x:Key="browserMorePlugins">プラグインを探す</system:String>
<system:String x:Key="disable">無効</system:String>
<system:String x:Key="actionKeywords">キーワード</system:String>
<system:String x:Key="pluginDirectory">プラグイン・ディレクトリ</system:String>
<system:String x:Key="author">作者</system:String>
<system:String x:Key="plugin_init_time">初期化時間: {0}ms</system:String>
<system:String x:Key="plugin_query_time">クエリ時間: {0}ms</system:String>
<!--Setting Theme-->
<system:String x:Key="theme">テーマ</system:String>
<system:String x:Key="browserMoreThemes">テーマを探す</system:String>
<system:String x:Key="helloWox">こんにちは Wox</system:String>
<system:String x:Key="queryBoxFont">検索ボックスのフォント</system:String>
<system:String x:Key="resultItemFont">検索結果一覧のフォント</system:String>
<system:String x:Key="windowMode">ウィンドウモード</system:String>
<system:String x:Key="opacity">透過度</system:String>
<system:String x:Key="theme_load_failure_path_not_exists">テーマ {0} が存在しません、デフォルトのテーマに戻します。</system:String>
<system:String x:Key="theme_load_failure_parse_error">テーマ {0} を読み込めません、デフォルトのテーマに戻します。</system:String>
<!--Setting Hotkey-->
<system:String x:Key="hotkey">ホットキー</system:String>
<system:String x:Key="woxHotkey">Wox ホットキー</system:String>
<system:String x:Key="customQueryHotkey">カスタムクエリ ホットキー</system:String>
<system:String x:Key="delete">削除</system:String>
<system:String x:Key="edit">編集</system:String>
<system:String x:Key="add">追加</system:String>
<system:String x:Key="pleaseSelectAnItem">項目選択してください</system:String>
<system:String x:Key="deleteCustomHotkeyWarning">{0} プラグインのホットキーを本当に削除しますか?</system:String>
<!--Setting Proxy-->
<system:String x:Key="proxy">HTTP プロキシ</system:String>
<system:String x:Key="enableProxy">HTTP プロキシを有効化</system:String>
<system:String x:Key="server">HTTP サーバ</system:String>
<system:String x:Key="port">ポート</system:String>
<system:String x:Key="userName">ユーザ名</system:String>
<system:String x:Key="password">パスワード</system:String>
<system:String x:Key="testProxy">プロキシをテストする</system:String>
<system:String x:Key="save">保存</system:String>
<system:String x:Key="serverCantBeEmpty">サーバーは空白にできません</system:String>
<system:String x:Key="portCantBeEmpty">ポートは空白にできません</system:String>
<system:String x:Key="invalidPortFormat">ポートの形式が正しくありません</system:String>
<system:String x:Key="saveProxySuccessfully">プロキシの保存に成功しました</system:String>
<system:String x:Key="proxyIsCorrect">プロキシは正しいです</system:String>
<system:String x:Key="proxyConnectFailed">プロキシ接続に失敗しました</system:String>
<!--Setting About-->
<system:String x:Key="about">Woxについて</system:String>
<system:String x:Key="website">ウェブサイト</system:String>
<system:String x:Key="version">バージョン</system:String>
<system:String x:Key="about_activate_times">あなたはWoxを {0} 回利用しました</system:String>
<system:String x:Key="checkUpdates">アップデートを確認する</system:String>
<system:String x:Key="newVersionTips">新しいバージョン {0} が利用可能です。Woxを再起動してください。</system:String>
<system:String x:Key="checkUpdatesFailed">アップデートの確認に失敗しました、api.github.com への接続とプロキシ設定を確認してください。</system:String>
<system:String x:Key="downloadUpdatesFailed">
更新のダウンロードに失敗しました、github-cloud.s3.amazonaws.com への接続とプロキシ設定を確認するか、
https://github.com/Wox-launcher/Wox/releases から手動でアップデートをダウンロードしてください。
</system:String>
<system:String x:Key="releaseNotes">リリースノート:</system:String>
<!--Action Keyword Setting Dialog-->
<system:String x:Key="oldActionKeywords">古いアクションキーボード</system:String>
<system:String x:Key="newActionKeywords">新しいアクションキーボード</system:String>
<system:String x:Key="cancel">キャンセル</system:String>
<system:String x:Key="done">完了</system:String>
<system:String x:Key="cannotFindSpecifiedPlugin">プラグインが見つかりません</system:String>
<system:String x:Key="newActionKeywordsCannotBeEmpty">新しいアクションキーボードを空にすることはできません</system:String>
<system:String x:Key="newActionKeywordsHasBeenAssigned">新しいアクションキーボードは他のプラグインに割り当てられています。他のアクションキーボードを指定してください</system:String>
<system:String x:Key="success">成功しました</system:String>
<system:String x:Key="actionkeyword_tips">アクションキーボードを指定しない場合、* を使用してください</system:String>
<!--Custom Query Hotkey Dialog-->
<system:String x:Key="preview">プレビュー</system:String>
<system:String x:Key="hotkeyIsNotUnavailable">ホットキーは使用できません。新しいホットキーを選択してください</system:String>
<system:String x:Key="invalidPluginHotkey">プラグインホットキーは無効です</system:String>
<system:String x:Key="update">更新</system:String>
<!--Hotkey Control-->
<system:String x:Key="hotkeyUnavailable">ホットキーは使用できません</system:String>
<!--Crash Reporter-->
<system:String x:Key="reportWindow_version">バージョン</system:String>
<system:String x:Key="reportWindow_time">時間</system:String>
<system:String x:Key="reportWindow_reproduce">アプリケーションが突然終了した手順を私たちに教えてくださると、バグ修正ができます</system:String>
<system:String x:Key="reportWindow_send_report">クラッシュレポートを送信</system:String>
<system:String x:Key="reportWindow_cancel">キャンセル</system:String>
<system:String x:Key="reportWindow_general">一般</system:String>
<system:String x:Key="reportWindow_exceptions">例外</system:String>
<system:String x:Key="reportWindow_exception_type">例外の種類</system:String>
<system:String x:Key="reportWindow_source">ソース</system:String>
<system:String x:Key="reportWindow_stack_trace">スタックトレース</system:String>
<system:String x:Key="reportWindow_sending">送信中</system:String>
<system:String x:Key="reportWindow_report_succeed">クラッシュレポートの送信に成功しました</system:String>
<system:String x:Key="reportWindow_report_failed">クラッシュレポートの送信に失敗しました</system:String>
<system:String x:Key="reportWindow_wox_got_an_error">Woxにエラーが発生しました</system:String>
<!--update-->
<system:String x:Key="update_wox_update_new_version_available">Wox の最新バージョン V{0} が入手可能です</system:String>
<system:String x:Key="update_wox_update_error">Woxのアップデート中にエラーが発生しました</system:String>
<system:String x:Key="update_wox_update">アップデート</system:String>
<system:String x:Key="update_wox_update_cancel">キャンセル</system:String>
<system:String x:Key="update_wox_update_restart_wox_tip">このアップデートでは、Woxの再起動が必要です</system:String>
<system:String x:Key="update_wox_update_upadte_files">次のファイルがアップデートされます</system:String>
<system:String x:Key="update_wox_update_files">更新ファイル一覧</system:String>
<system:String x:Key="update_wox_update_upadte_description">アップデートの詳細</system:String>
</ResourceDictionary>

View File

@@ -0,0 +1,134 @@
<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">
<!--MainWindow-->
<system:String x:Key="registerHotkeyFailed">핫키 등록 실패: {0}</system:String>
<system:String x:Key="couldnotStartCmd">{0}을 실행할 수 없습니다.</system:String>
<system:String x:Key="invalidWoxPluginFileFormat">Wox 플러그인 파일 형식이 유효하지 않습니다.</system:String>
<system:String x:Key="setAsTopMostInThisQuery">이 쿼리의 최상위로 설정</system:String>
<system:String x:Key="cancelTopMostInThisQuery">이 쿼리의 최상위 설정 취소</system:String>
<system:String x:Key="executeQuery">쿼리 실행: {0}</system:String>
<system:String x:Key="lastExecuteTime">마지막 실행 시간: {0}</system:String>
<system:String x:Key="iconTrayOpen">열기</system:String>
<system:String x:Key="iconTraySettings">설정</system:String>
<system:String x:Key="iconTrayAbout">정보</system:String>
<system:String x:Key="iconTrayExit">종료</system:String>
<!--Setting General-->
<system:String x:Key="wox_settings">Wox 설정</system:String>
<system:String x:Key="general">일반</system:String>
<system:String x:Key="startWoxOnSystemStartup">시스템 시작 시 Wox 실행</system:String>
<system:String x:Key="hideWoxWhenLoseFocus">포커스 잃으면 Wox 숨김</system:String>
<system:String x:Key="dontPromptUpdateMsg">새 버전 알림 끄기</system:String>
<system:String x:Key="rememberLastLocation">마지막 실행 위치 기억</system:String>
<system:String x:Key="language">언어</system:String>
<system:String x:Key="lastQueryMode">마지막 쿼리 스타일</system:String>
<system:String x:Key="LastQueryPreserved">직전 쿼리에 계속 입력</system:String>
<system:String x:Key="LastQuerySelected">직전 쿼리 내용 선택</system:String>
<system:String x:Key="LastQueryEmpty">직전 쿼리 지우기</system:String>
<system:String x:Key="maxShowResults">표시할 결과 수</system:String>
<system:String x:Key="ignoreHotkeysOnFullscreen">전체화면 모드에서는 핫키 무시</system:String>
<system:String x:Key="autoUpdates">자동 업데이트</system:String>
<system:String x:Key="hideOnStartup">시작 시 Wox 숨김</system:String>
<!--Setting Plugin-->
<system:String x:Key="plugin">플러그인</system:String>
<system:String x:Key="browserMorePlugins">플러그인 더 찾아보기</system:String>
<system:String x:Key="disable">비활성화</system:String>
<system:String x:Key="actionKeywords">액션 키워드</system:String>
<system:String x:Key="pluginDirectory">플러그인 디렉토리</system:String>
<system:String x:Key="author">저자</system:String>
<system:String x:Key="plugin_init_time">초기화 시간: {0}ms</system:String>
<system:String x:Key="plugin_query_time">쿼리 시간: {0}ms</system:String>
<!--Setting Theme-->
<system:String x:Key="theme">테마</system:String>
<system:String x:Key="browserMoreThemes">테마 더 찾아보기</system:String>
<system:String x:Key="helloWox">Hello Wox</system:String>
<system:String x:Key="queryBoxFont">쿼리 상자 글꼴</system:String>
<system:String x:Key="resultItemFont">결과 항목 글꼴</system:String>
<system:String x:Key="windowMode">윈도우 모드</system:String>
<system:String x:Key="opacity">투명도</system:String>
<!--Setting Hotkey-->
<system:String x:Key="hotkey">핫키</system:String>
<system:String x:Key="woxHotkey">Wox 핫키</system:String>
<system:String x:Key="customQueryHotkey">사용자지정 쿼리 핫키</system:String>
<system:String x:Key="delete">삭제</system:String>
<system:String x:Key="edit">편집</system:String>
<system:String x:Key="add">추가</system:String>
<system:String x:Key="pleaseSelectAnItem">항목을 선택하세요.</system:String>
<system:String x:Key="deleteCustomHotkeyWarning">{0} 플러그인 핫키를 삭제하시겠습니까?</system:String>
<!--Setting Proxy-->
<system:String x:Key="proxy">HTTP 프록시</system:String>
<system:String x:Key="enableProxy">HTTP 프록시 켜기</system:String>
<system:String x:Key="server">HTTP 서버</system:String>
<system:String x:Key="port">포트</system:String>
<system:String x:Key="userName">사용자명</system:String>
<system:String x:Key="password">패스워드</system:String>
<system:String x:Key="testProxy">프록시 테스트</system:String>
<system:String x:Key="save">저장</system:String>
<system:String x:Key="serverCantBeEmpty">서버를 입력하세요.</system:String>
<system:String x:Key="portCantBeEmpty">포트를 입력하세요.</system:String>
<system:String x:Key="invalidPortFormat">유효하지 않은 포트 형식</system:String>
<system:String x:Key="saveProxySuccessfully">프록시 설정이 저장되었습니다.</system:String>
<system:String x:Key="proxyIsCorrect">프록시 설정 정상</system:String>
<system:String x:Key="proxyConnectFailed">프록시 연결 실패</system:String>
<!--Setting About-->
<system:String x:Key="about">정보</system:String>
<system:String x:Key="website">웹사이트</system:String>
<system:String x:Key="version">버전</system:String>
<system:String x:Key="about_activate_times">Wox를 {0}번 실행했습니다.</system:String>
<system:String x:Key="checkUpdates">업데이트 확인</system:String>
<system:String x:Key="newVersionTips">새 버전({0})이 있습니다. Wox를 재시작하세요.</system:String>
<system:String x:Key="releaseNotes">릴리즈 노트:</system:String>
<!--Action Keyword Setting Dialog-->
<system:String x:Key="oldActionKeywords">예전 액션 키워드</system:String>
<system:String x:Key="newActionKeywords">새 액션 키워드</system:String>
<system:String x:Key="cancel">취소</system:String>
<system:String x:Key="done">완료</system:String>
<system:String x:Key="cannotFindSpecifiedPlugin">플러그인을 찾을 수 없습니다.</system:String>
<system:String x:Key="newActionKeywordsCannotBeEmpty">새 액션 키워드를 입력하세요.</system:String>
<system:String x:Key="newActionKeywordsHasBeenAssigned">새 액션 키워드가 할당된 플러그인이 이미 있습니다. 다른 액션 키워드를 입력하세요.</system:String>
<system:String x:Key="success">성공</system:String>
<system:String x:Key="actionkeyword_tips">액션 키워드를 지정하지 않으려면 *를 사용하세요.</system:String>
<!--Custom Query Hotkey Dialog-->
<system:String x:Key="preview">미리보기</system:String>
<system:String x:Key="hotkeyIsNotUnavailable">핫키를 사용할 수 없습니다. 다른 핫키를 입력하세요.</system:String>
<system:String x:Key="invalidPluginHotkey">플러그인 핫키가 유효하지 않습니다.</system:String>
<system:String x:Key="update">업데이트</system:String>
<!--Hotkey Control-->
<system:String x:Key="hotkeyUnavailable">핫키를 사용할 수 없습니다.</system:String>
<!--Crash Reporter-->
<system:String x:Key="reportWindow_version">버전</system:String>
<system:String x:Key="reportWindow_time">시간</system:String>
<system:String x:Key="reportWindow_reproduce">수정을 위해 애플리케이션이 어떻게 충돌했는지 알려주세요.</system:String>
<system:String x:Key="reportWindow_send_report">보고서 보내기</system:String>
<system:String x:Key="reportWindow_cancel">취소</system:String>
<system:String x:Key="reportWindow_general">일반</system:String>
<system:String x:Key="reportWindow_exceptions">예외</system:String>
<system:String x:Key="reportWindow_exception_type">예외 유형</system:String>
<system:String x:Key="reportWindow_source">소스</system:String>
<system:String x:Key="reportWindow_stack_trace">스택 추적</system:String>
<system:String x:Key="reportWindow_sending">보내는 중</system:String>
<system:String x:Key="reportWindow_report_succeed">보고서를 정상적으로 보냈습니다.</system:String>
<system:String x:Key="reportWindow_report_failed">보고서를 보내지 못했습니다.</system:String>
<system:String x:Key="reportWindow_wox_got_an_error">Wox에 문제가 발생했습니다.</system:String>
<!--update-->
<system:String x:Key="update_wox_update_new_version_available">새 Wox 버전({0})을 사용할 수 있습니다.</system:String>
<system:String x:Key="update_wox_update_error">소프트웨어 업데이트를 설치하는 중에 오류가 발생했습니다.</system:String>
<system:String x:Key="update_wox_update">업데이트</system:String>
<system:String x:Key="update_wox_update_cancel">취소</system:String>
<system:String x:Key="update_wox_update_restart_wox_tip">업데이트를 위해 Wox를 재시작합니다.</system:String>
<system:String x:Key="update_wox_update_upadte_files">아래 파일들이 업데이트됩니다.</system:String>
<system:String x:Key="update_wox_update_files">업데이트 파일</system:String>
<system:String x:Key="update_wox_update_upadte_description">업데이트 설명</system:String>
</ResourceDictionary>

View File

@@ -0,0 +1,139 @@
<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">
<!--MainWindow-->
<system:String x:Key="registerHotkeyFailed">Kunne ikke registrere hurtigtast: {0}</system:String>
<system:String x:Key="couldnotStartCmd">Kunne ikke starte {0}</system:String>
<system:String x:Key="invalidWoxPluginFileFormat">Ugyldig filformat for Wox-utvidelse</system:String>
<system:String x:Key="setAsTopMostInThisQuery">Sett til øverste for denne spørringen</system:String>
<system:String x:Key="cancelTopMostInThisQuery">Avbryt øverste for denne spørringen</system:String>
<system:String x:Key="executeQuery">Utfør spørring: {0}</system:String>
<system:String x:Key="lastExecuteTime">Tid for siste gjennomføring: {0}</system:String>
<system:String x:Key="iconTrayOpen">Åpne</system:String>
<system:String x:Key="iconTraySettings">Innstillinger</system:String>
<system:String x:Key="iconTrayAbout">Om</system:String>
<system:String x:Key="iconTrayExit">Avslutt</system:String>
<!--Setting General-->
<system:String x:Key="wox_settings">Wox-innstillinger</system:String>
<system:String x:Key="general">Generelt</system:String>
<system:String x:Key="startWoxOnSystemStartup">Start Wox ved systemstart</system:String>
<system:String x:Key="hideWoxWhenLoseFocus">Skjul Wox ved mistet fokus</system:String>
<system:String x:Key="dontPromptUpdateMsg">Ikke vis varsel om ny versjon</system:String>
<system:String x:Key="rememberLastLocation">Husk siste plassering</system:String>
<system:String x:Key="language">Språk</system:String>
<system:String x:Key="lastQueryMode">Stil for siste spørring</system:String>
<system:String x:Key="LastQueryPreserved">Bevar siste spørring</system:String>
<system:String x:Key="LastQuerySelected">Velg siste spørring</system:String>
<system:String x:Key="LastQueryEmpty">Tøm siste spørring</system:String>
<system:String x:Key="maxShowResults">Maks antall resultater vist</system:String>
<system:String x:Key="ignoreHotkeysOnFullscreen">Ignorer hurtigtaster i fullskjermsmodus</system:String>
<system:String x:Key="autoUpdates">Oppdater automatisk</system:String>
<system:String x:Key="hideOnStartup">Skjul Wox ved oppstart</system:String>
<!--Setting Plugin-->
<system:String x:Key="plugin">Utvidelse</system:String>
<system:String x:Key="browserMorePlugins">Finn flere utvidelser</system:String>
<system:String x:Key="disable">Deaktiver</system:String>
<system:String x:Key="actionKeywords">Handlingsnøkkelord</system:String>
<system:String x:Key="pluginDirectory">Utvidelseskatalog</system:String>
<system:String x:Key="author">Forfatter</system:String>
<system:String x:Key="plugin_init_time">Oppstartstid: {0}ms</system:String>
<system:String x:Key="plugin_query_time">Spørringstid: {0}ms</system:String>
<!--Setting Theme-->
<system:String x:Key="theme">Tema</system:String>
<system:String x:Key="browserMoreThemes">Finn flere temaer</system:String>
<system:String x:Key="helloWox">Hallo Wox</system:String>
<system:String x:Key="queryBoxFont">Font for spørringsboks</system:String>
<system:String x:Key="resultItemFont">Font for resultat</system:String>
<system:String x:Key="windowMode">Vindusmodus</system:String>
<system:String x:Key="opacity">Gjennomsiktighet</system:String>
<!--Setting Hotkey-->
<system:String x:Key="hotkey">Hurtigtast</system:String>
<system:String x:Key="woxHotkey">Wox-hurtigtast</system:String>
<system:String x:Key="customQueryHotkey">Egendefinerd spørringshurtigtast</system:String>
<system:String x:Key="delete">Slett</system:String>
<system:String x:Key="edit">Rediger</system:String>
<system:String x:Key="add">Legg til</system:String>
<system:String x:Key="pleaseSelectAnItem">Vennligst velg et element</system:String>
<system:String x:Key="deleteCustomHotkeyWarning">Er du sikker på at du vil slette utvidelserhurtigtasten for {0}?</system:String>
<!--Setting Proxy-->
<system:String x:Key="proxy">HTTP-proxy</system:String>
<system:String x:Key="enableProxy">Aktiver HTTP-proxy</system:String>
<system:String x:Key="server">HTTP-server</system:String>
<system:String x:Key="port">Port</system:String>
<system:String x:Key="userName">Brukernavn</system:String>
<system:String x:Key="password">Passord</system:String>
<system:String x:Key="testProxy">Test proxy</system:String>
<system:String x:Key="save">Lagre</system:String>
<system:String x:Key="serverCantBeEmpty">Serverfeltet kan ikke være tomt</system:String>
<system:String x:Key="portCantBeEmpty">Portfelter kan ikke være tomt</system:String>
<system:String x:Key="invalidPortFormat">Ugyldig portformat</system:String>
<system:String x:Key="saveProxySuccessfully">Proxy-konfigurasjon lagret med suksess</system:String>
<system:String x:Key="proxyIsCorrect">Proxy konfigurert riktig</system:String>
<system:String x:Key="proxyConnectFailed">Proxy-tilkobling feilet</system:String>
<!--Setting About-->
<system:String x:Key="about">Om</system:String>
<system:String x:Key="website">Netside</system:String>
<system:String x:Key="version">Versjon</system:String>
<system:String x:Key="about_activate_times">Du har aktivert Wox {0} ganger</system:String>
<system:String x:Key="checkUpdates">Sjekk for oppdatering</system:String>
<system:String x:Key="newVersionTips">Ny versjon {0} er tilgjengelig, vennligst start Wox på nytt.</system:String>
<system:String x:Key="checkUpdatesFailed">Oppdateringssjekk feilet, vennligst sjekk tilkoblingen og proxy-innstillene for api.github.com.</system:String>
<system:String x:Key="downloadUpdatesFailed">
Nedlastning av oppdateringer feilet, vennligst sjekk tilkoblingen og proxy-innstillene for github-cloud.s3.amazonaws.com,
eller gå til https://github.com/Wox-launcher/Wox/releases for å laste ned oppdateringer manuelt.
</system:String>
<system:String x:Key="releaseNotes">Versjonsmerknader:</system:String>
<!--Action Keyword Setting Dialog-->
<system:String x:Key="oldActionKeywords">Gammelt handlingsnøkkelord</system:String>
<system:String x:Key="newActionKeywords">Nytt handlingsnøkkelord</system:String>
<system:String x:Key="cancel">Avbryt</system:String>
<system:String x:Key="done">Ferdig</system:String>
<system:String x:Key="cannotFindSpecifiedPlugin">Kan ikke finne den angitte utvidelsen</system:String>
<system:String x:Key="newActionKeywordsCannotBeEmpty">Nytt handlingsnøkkelord kan ikke være tomt</system:String>
<system:String x:Key="newActionKeywordsHasBeenAssigned">De nye handlingsnøkkelordene er tildelt en annen utvidelse, vennligst velg et annet nøkkelord</system:String>
<system:String x:Key="success">Vellykket</system:String>
<system:String x:Key="actionkeyword_tips">Bruk * hvis du ikke ønsker å angi et handlingsnøkkelord</system:String>
<!--Custom Query Hotkey Dialog-->
<system:String x:Key="preview">Forhåndsvis</system:String>
<system:String x:Key="hotkeyIsNotUnavailable">Hurtigtasten er ikke tilgjengelig, vennligst velg en ny hurtigtast</system:String>
<system:String x:Key="invalidPluginHotkey">Ugyldig hurtigtast for utvidelse</system:String>
<system:String x:Key="update">Oppdater</system:String>
<!--Hotkey Control-->
<system:String x:Key="hotkeyUnavailable">Hurtigtast utilgjengelig</system:String>
<!--Crash Reporter-->
<system:String x:Key="reportWindow_version">Versjon</system:String>
<system:String x:Key="reportWindow_time">Tid</system:String>
<system:String x:Key="reportWindow_reproduce">Fortell oss hvordan programmet krasjet, så vi kan fikse det</system:String>
<system:String x:Key="reportWindow_send_report">Send rapport</system:String>
<system:String x:Key="reportWindow_cancel">Avbryt</system:String>
<system:String x:Key="reportWindow_general">Generelt</system:String>
<system:String x:Key="reportWindow_exceptions">Unntak</system:String>
<system:String x:Key="reportWindow_exception_type">Unntakstype</system:String>
<system:String x:Key="reportWindow_source">Kilde</system:String>
<system:String x:Key="reportWindow_stack_trace">Stack Trace</system:String>
<system:String x:Key="reportWindow_sending">Sender</system:String>
<system:String x:Key="reportWindow_report_succeed">Rapport sendt med suksess</system:String>
<system:String x:Key="reportWindow_report_failed">Kunne ikke sende rapport</system:String>
<system:String x:Key="reportWindow_wox_got_an_error">Wox møtte på en feil</system:String>
<!--update-->
<system:String x:Key="update_wox_update_new_version_available">Versjon {0} av Wox er nå tilgjengelig</system:String>
<system:String x:Key="update_wox_update_error">En feil oppstod under installasjon av programvareoppdateringer</system:String>
<system:String x:Key="update_wox_update">Oppdater</system:String>
<system:String x:Key="update_wox_update_cancel">Avbryt</system:String>
<system:String x:Key="update_wox_update_restart_wox_tip">Denne opgraderingen vil starte Wox på nytt</system:String>
<system:String x:Key="update_wox_update_upadte_files">Følgende filer vil bli oppdatert</system:String>
<system:String x:Key="update_wox_update_files">Oppdateringsfiler</system:String>
<system:String x:Key="update_wox_update_upadte_description">Oppdateringsbeskrivelse</system:String>
</ResourceDictionary>

View File

@@ -0,0 +1,130 @@
<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">
<!--MainWindow-->
<system:String x:Key="registerHotkeyFailed">Sneltoets registratie: {0} mislukt</system:String>
<system:String x:Key="couldnotStartCmd">Kan {0} niet starten</system:String>
<system:String x:Key="invalidWoxPluginFileFormat">Ongeldige Wox plugin bestandsextensie</system:String>
<system:String x:Key="setAsTopMostInThisQuery">Stel in als hoogste in deze query</system:String>
<system:String x:Key="cancelTopMostInThisQuery">Annuleer hoogste in deze query</system:String>
<system:String x:Key="executeQuery">Executeer query: {0}</system:String>
<system:String x:Key="lastExecuteTime">Laatste executie tijd: {0}</system:String>
<system:String x:Key="iconTrayOpen">Open</system:String>
<system:String x:Key="iconTraySettings">Instellingen</system:String>
<system:String x:Key="iconTrayAbout">About</system:String>
<system:String x:Key="iconTrayExit">Afsluiten</system:String>
<!--Setting General-->
<system:String x:Key="wox_settings">Wox Instellingen</system:String>
<system:String x:Key="general">Algemeen</system:String>
<system:String x:Key="startWoxOnSystemStartup">Start Wox als systeem opstart</system:String>
<system:String x:Key="hideWoxWhenLoseFocus">Verberg Wox als focus verloren is</system:String>
<system:String x:Key="dontPromptUpdateMsg">Laat geen nieuwe versie notificaties zien</system:String>
<system:String x:Key="rememberLastLocation">Herinner laatste opstart locatie</system:String>
<system:String x:Key="language">Taal</system:String>
<system:String x:Key="maxShowResults">Laat maximale resultaten zien</system:String>
<system:String x:Key="ignoreHotkeysOnFullscreen">Negeer sneltoetsen in fullscreen mode</system:String>
<system:String x:Key="autoUpdates">Automatische Update</system:String>
<system:String x:Key="hideOnStartup">Verberg Wox als systeem opstart</system:String>
<!--Setting Plugin-->
<system:String x:Key="plugin">Plugin</system:String>
<system:String x:Key="browserMorePlugins">Zoek meer plugins</system:String>
<system:String x:Key="disable">Disable</system:String>
<system:String x:Key="actionKeywords">Action terfwoorden</system:String>
<system:String x:Key="pluginDirectory">Plugin map</system:String>
<system:String x:Key="author">Auteur</system:String>
<system:String x:Key="plugin_init_time">Init tijd: {0}ms</system:String>
<system:String x:Key="plugin_query_time">Query tijd: {0}ms</system:String>
<!--Setting Theme-->
<system:String x:Key="theme">Thema</system:String>
<system:String x:Key="browserMoreThemes">Zoek meer thema´s</system:String>
<system:String x:Key="helloWox">Hallo Wox</system:String>
<system:String x:Key="queryBoxFont">Query Box lettertype</system:String>
<system:String x:Key="resultItemFont">Resultaat Item lettertype</system:String>
<system:String x:Key="windowMode">Window Mode</system:String>
<system:String x:Key="opacity">Ondoorzichtigheid</system:String>
<!--Setting Hotkey-->
<system:String x:Key="hotkey">Sneltoets</system:String>
<system:String x:Key="woxHotkey">Wox Sneltoets</system:String>
<system:String x:Key="customQueryHotkey">Custom Query Sneltoets</system:String>
<system:String x:Key="delete">Verwijder</system:String>
<system:String x:Key="edit">Bewerken</system:String>
<system:String x:Key="add">Toevoegen</system:String>
<system:String x:Key="pleaseSelectAnItem">Selecteer een item</system:String>
<system:String x:Key="deleteCustomHotkeyWarning">Weet u zeker dat je {0} plugin sneltoets wilt verwijderen?</system:String>
<!--Setting Proxy-->
<system:String x:Key="proxy">HTTP Proxy</system:String>
<system:String x:Key="enableProxy">Enable HTTP Proxy</system:String>
<system:String x:Key="server">HTTP Server</system:String>
<system:String x:Key="port">Poort</system:String>
<system:String x:Key="userName">Gebruikersnaam</system:String>
<system:String x:Key="password">Wachtwoord</system:String>
<system:String x:Key="testProxy">Test Proxy</system:String>
<system:String x:Key="save">Opslaan</system:String>
<system:String x:Key="serverCantBeEmpty">Server moet ingevuld worden</system:String>
<system:String x:Key="portCantBeEmpty">Poort moet ingevuld worden</system:String>
<system:String x:Key="invalidPortFormat">Ongeldige poort formaat</system:String>
<system:String x:Key="saveProxySuccessfully">Proxy succesvol opgeslagen</system:String>
<system:String x:Key="proxyIsCorrect">Proxy correct geconfigureerd</system:String>
<system:String x:Key="proxyConnectFailed">Proxy connectie mislukt</system:String>
<!--Setting About-->
<system:String x:Key="about">Over</system:String>
<system:String x:Key="website">Website</system:String>
<system:String x:Key="version">Versie</system:String>
<system:String x:Key="about_activate_times">U heeft Wox {0} keer opgestart</system:String>
<system:String x:Key="checkUpdates">Zoek naar Updates</system:String>
<system:String x:Key="newVersionTips">Nieuwe versie {0} beschikbaar, start Wox opnieuw op</system:String>
<system:String x:Key="releaseNotes">Release Notes:</system:String>
<!--Action Keyword Setting Dialog-->
<system:String x:Key="oldActionKeywords">Oude actie sneltoets</system:String>
<system:String x:Key="newActionKeywords">Nieuwe actie sneltoets</system:String>
<system:String x:Key="cancel">Annuleer</system:String>
<system:String x:Key="done">Klaar</system:String>
<system:String x:Key="cannotFindSpecifiedPlugin">Kan plugin niet vinden</system:String>
<system:String x:Key="newActionKeywordsCannotBeEmpty">Nieuwe actie sneltoets moet ingevuld worden</system:String>
<system:String x:Key="newActionKeywordsHasBeenAssigned">Nieuwe actie sneltoets is toegewezen aan een andere plugin, wijs een nieuwe actie sneltoets aan</system:String>
<system:String x:Key="success">Succesvol</system:String>
<system:String x:Key="actionkeyword_tips">Gebruik * wanneer je geen nieuwe actie sneltoets wilt specificeren</system:String>
<!--Custom Query Hotkey Dialog-->
<system:String x:Key="preview">Voorbeeld</system:String>
<system:String x:Key="hotkeyIsNotUnavailable">Sneltoets is niet beschikbaar, selecteer een nieuwe sneltoets</system:String>
<system:String x:Key="invalidPluginHotkey">Ongeldige plugin sneltoets</system:String>
<system:String x:Key="update">Update</system:String>
<!--Hotkey Control-->
<system:String x:Key="hotkeyUnavailable">Sneltoets niet beschikbaar</system:String>
<!--Crash Reporter-->
<system:String x:Key="reportWindow_version">Versie</system:String>
<system:String x:Key="reportWindow_time">Tijd</system:String>
<system:String x:Key="reportWindow_reproduce">Vertel ons hoe de applicatie is gecrashed, zodat wij de applicatie kunnen verbeteren</system:String>
<system:String x:Key="reportWindow_send_report">Verstuur Rapport</system:String>
<system:String x:Key="reportWindow_cancel">Annuleer</system:String>
<system:String x:Key="reportWindow_general">Algemeen</system:String>
<system:String x:Key="reportWindow_exceptions">Uitzonderingen</system:String>
<system:String x:Key="reportWindow_exception_type">Uitzondering Type</system:String>
<system:String x:Key="reportWindow_source">Bron</system:String>
<system:String x:Key="reportWindow_stack_trace">Stack Opzoeken</system:String>
<system:String x:Key="reportWindow_sending">Versturen</system:String>
<system:String x:Key="reportWindow_report_succeed">Rapport succesvol</system:String>
<system:String x:Key="reportWindow_report_failed">Rapport mislukt</system:String>
<system:String x:Key="reportWindow_wox_got_an_error">Wox heeft een error</system:String>
<!--update-->
<system:String x:Key="update_wox_update_new_version_available">Nieuwe Wox release {0} nu beschikbaar</system:String>
<system:String x:Key="update_wox_update_error">Een error is voorgekomen tijdens het installeren van de update</system:String>
<system:String x:Key="update_wox_update">Update</system:String>
<system:String x:Key="update_wox_update_cancel">Annuleer</system:String>
<system:String x:Key="update_wox_update_restart_wox_tip">Deze upgrade zal Wox opnieuw opstarten</system:String>
<system:String x:Key="update_wox_update_upadte_files">Volgende bestanden zullen worden geüpdatet</system:String>
<system:String x:Key="update_wox_update_files">Update bestanden</system:String>
<system:String x:Key="update_wox_update_upadte_description">Update beschrijving</system:String>
</ResourceDictionary>

View File

@@ -0,0 +1,130 @@
<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">
<!--MainWindow-->
<system:String x:Key="registerHotkeyFailed">Nie udało się ustawić skrótu klawiszowego: {0}</system:String>
<system:String x:Key="couldnotStartCmd">Nie udało się uruchomić: {0}</system:String>
<system:String x:Key="invalidWoxPluginFileFormat">Niepoprawny format pliku wtyczki</system:String>
<system:String x:Key="setAsTopMostInThisQuery">Ustaw jako najwyższy wynik dla tego zapytania</system:String>
<system:String x:Key="cancelTopMostInThisQuery">Usuń ten najwyższy wynik dla tego zapytania</system:String>
<system:String x:Key="executeQuery">Wyszukaj: {0}</system:String>
<system:String x:Key="lastExecuteTime">Ostatni czas wykonywania: {0}</system:String>
<system:String x:Key="iconTrayOpen">Otwórz</system:String>
<system:String x:Key="iconTraySettings">Ustawienia</system:String>
<system:String x:Key="iconTrayAbout">O programie</system:String>
<system:String x:Key="iconTrayExit">Wyjdź</system:String>
<!--Setting General-->
<system:String x:Key="wox_settings">Ustawienia Wox</system:String>
<system:String x:Key="general">Ogólne</system:String>
<system:String x:Key="startWoxOnSystemStartup">Uruchamiaj Wox przy starcie systemu</system:String>
<system:String x:Key="hideWoxWhenLoseFocus">Ukryj okno Wox kiedy przestanie ono być aktywne</system:String>
<system:String x:Key="dontPromptUpdateMsg">Nie pokazuj powiadomienia o nowej wersji</system:String>
<system:String x:Key="rememberLastLocation">Zapamiętaj ostatnią pozycję okna</system:String>
<system:String x:Key="language">Język</system:String>
<system:String x:Key="maxShowResults">Maksymalna liczba wyników</system:String>
<system:String x:Key="ignoreHotkeysOnFullscreen">Ignoruj skróty klawiszowe w trybie pełnego ekranu</system:String>
<system:String x:Key="autoUpdates">Automatyczne aktualizacje</system:String>
<system:String x:Key="hideOnStartup">Uruchamiaj Wox zminimalizowany</system:String>
<!--Setting Plugin-->
<system:String x:Key="plugin">Wtyczki</system:String>
<system:String x:Key="browserMorePlugins">Znajdź więcej wtyczek</system:String>
<system:String x:Key="disable">Wyłącz</system:String>
<system:String x:Key="actionKeywords">Wyzwalacze</system:String>
<system:String x:Key="pluginDirectory">Folder wtyczki</system:String>
<system:String x:Key="author">Autor</system:String>
<system:String x:Key="plugin_init_time">Czas ładowania: {0}ms</system:String>
<system:String x:Key="plugin_query_time">Czas zapytania: {0}ms</system:String>
<!--Setting Theme-->
<system:String x:Key="theme">Skórka</system:String>
<system:String x:Key="browserMoreThemes">Znajdź więcej skórek</system:String>
<system:String x:Key="helloWox">Witaj Wox</system:String>
<system:String x:Key="queryBoxFont">Czcionka okna zapytania</system:String>
<system:String x:Key="resultItemFont">Czcionka okna wyników</system:String>
<system:String x:Key="windowMode">Tryb w oknie</system:String>
<system:String x:Key="opacity">Przeźroczystość</system:String>
<!--Setting Hotkey-->
<system:String x:Key="hotkey">Skrót klawiszowy</system:String>
<system:String x:Key="woxHotkey">Skrót klawiszowy Wox</system:String>
<system:String x:Key="customQueryHotkey">Skrót klawiszowy niestandardowych zapytań</system:String>
<system:String x:Key="delete">Usuń</system:String>
<system:String x:Key="edit">Edytuj</system:String>
<system:String x:Key="add">Dodaj</system:String>
<system:String x:Key="pleaseSelectAnItem">Musisz coś wybrać</system:String>
<system:String x:Key="deleteCustomHotkeyWarning">Czy jesteś pewien że chcesz usunąć skrót klawiszowy {0} wtyczki?</system:String>
<!--Setting Proxy-->
<system:String x:Key="proxy">Serwer proxy HTTP</system:String>
<system:String x:Key="enableProxy">Używaj HTTP proxy</system:String>
<system:String x:Key="server">HTTP Serwer</system:String>
<system:String x:Key="port">Port</system:String>
<system:String x:Key="userName">Nazwa użytkownika</system:String>
<system:String x:Key="password">Hasło</system:String>
<system:String x:Key="testProxy">Sprawdź proxy</system:String>
<system:String x:Key="save">Zapisz</system:String>
<system:String x:Key="serverCantBeEmpty">Nazwa serwera nie może być pusta</system:String>
<system:String x:Key="portCantBeEmpty">Numer portu nie może być pusty</system:String>
<system:String x:Key="invalidPortFormat">Nieprawidłowy format numeru portu</system:String>
<system:String x:Key="saveProxySuccessfully">Ustawienia proxy zostały zapisane</system:String>
<system:String x:Key="proxyIsCorrect">Proxy zostało skonfigurowane poprawnie</system:String>
<system:String x:Key="proxyConnectFailed">Nie udało się połączyć z serwerem proxy</system:String>
<!--Setting About-->
<system:String x:Key="about">O programie</system:String>
<system:String x:Key="website">Strona internetowa</system:String>
<system:String x:Key="version">Wersja</system:String>
<system:String x:Key="about_activate_times">Uaktywniłeś Wox {0} razy</system:String>
<system:String x:Key="checkUpdates">Szukaj aktualizacji</system:String>
<system:String x:Key="newVersionTips">Nowa wersja {0} jest dostępna, uruchom ponownie Wox</system:String>
<system:String x:Key="releaseNotes">Zmiany:</system:String>
<!--Action Keyword Setting Dialog-->
<system:String x:Key="oldActionKeywords">Stary wyzwalacz</system:String>
<system:String x:Key="newActionKeywords">Nowy wyzwalacz</system:String>
<system:String x:Key="cancel">Anuluj</system:String>
<system:String x:Key="done">Zapisz</system:String>
<system:String x:Key="cannotFindSpecifiedPlugin">Nie można odnaleźć podanej wtyczki</system:String>
<system:String x:Key="newActionKeywordsCannotBeEmpty">Nowy wyzwalacz nie może być pusty</system:String>
<system:String x:Key="newActionKeywordsHasBeenAssigned">Ten wyzwalacz został już przypisany do innej wtyczki, musisz podać inny wyzwalacz.</system:String>
<system:String x:Key="success">Sukces</system:String>
<system:String x:Key="actionkeyword_tips">Użyj * jeżeli nie chcesz podawać wyzwalacza</system:String>
<!--Custom Query Hotkey Dialog-->
<system:String x:Key="preview">Podgląd</system:String>
<system:String x:Key="hotkeyIsNotUnavailable">Skrót klawiszowy jest niedostępny, musisz podać inny skrót klawiszowy</system:String>
<system:String x:Key="invalidPluginHotkey">Niepoprawny skrót klawiszowy</system:String>
<system:String x:Key="update">Aktualizuj</system:String>
<!--Hotkey Control-->
<system:String x:Key="hotkeyUnavailable">Niepoprawny skrót klawiszowy</system:String>
<!--Crash Reporter-->
<system:String x:Key="reportWindow_version">Wersja</system:String>
<system:String x:Key="reportWindow_time">Czas</system:String>
<system:String x:Key="reportWindow_reproduce">Proszę powiedz nam co się stało zanim wystąpił błąd dzięki czemu będziemy mogli go naprawić (tylko po angielsku)</system:String>
<system:String x:Key="reportWindow_send_report">Wyślij raport błędu</system:String>
<system:String x:Key="reportWindow_cancel">Anuluj</system:String>
<system:String x:Key="reportWindow_general">Ogólne</system:String>
<system:String x:Key="reportWindow_exceptions">Wyjątki</system:String>
<system:String x:Key="reportWindow_exception_type">Typ wyjątku</system:String>
<system:String x:Key="reportWindow_source">Źródło</system:String>
<system:String x:Key="reportWindow_stack_trace">Stos wywołań</system:String>
<system:String x:Key="reportWindow_sending">Wysyłam raport...</system:String>
<system:String x:Key="reportWindow_report_succeed">Raport wysłany pomyślnie</system:String>
<system:String x:Key="reportWindow_report_failed">Nie udało się wysłać raportu</system:String>
<system:String x:Key="reportWindow_wox_got_an_error">W programie Wox wystąpił błąd</system:String>
<!--update-->
<system:String x:Key="update_wox_update_new_version_available">Nowa wersja Wox {0} jest dostępna</system:String>
<system:String x:Key="update_wox_update_error">Wystąpił błąd podczas instalowania aktualizacji programu</system:String>
<system:String x:Key="update_wox_update">Aktualizuj</system:String>
<system:String x:Key="update_wox_update_cancel">Anuluj</system:String>
<system:String x:Key="update_wox_update_restart_wox_tip">Aby dokończyć proces aktualizacji Wox musi zostać zresetowany</system:String>
<system:String x:Key="update_wox_update_upadte_files">Następujące pliki zostaną zaktualizowane</system:String>
<system:String x:Key="update_wox_update_files">Aktualizuj pliki</system:String>
<system:String x:Key="update_wox_update_upadte_description">Opis aktualizacji</system:String>
</ResourceDictionary>

View File

@@ -0,0 +1,139 @@
<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">
<!--MainWindow-->
<system:String x:Key="registerHotkeyFailed">Falha ao registrar atalho: {0}</system:String>
<system:String x:Key="couldnotStartCmd">Não foi possível iniciar {0}</system:String>
<system:String x:Key="invalidWoxPluginFileFormat">Formato de plugin Wox inválido</system:String>
<system:String x:Key="setAsTopMostInThisQuery">Tornar a principal nessa consulta</system:String>
<system:String x:Key="cancelTopMostInThisQuery">Cancelar a principal nessa consulta</system:String>
<system:String x:Key="executeQuery">Executar consulta: {0}</system:String>
<system:String x:Key="lastExecuteTime">Última execução: {0}</system:String>
<system:String x:Key="iconTrayOpen">Abrir</system:String>
<system:String x:Key="iconTraySettings">Configurações</system:String>
<system:String x:Key="iconTrayAbout">Sobre</system:String>
<system:String x:Key="iconTrayExit">Sair</system:String>
<!--Setting General-->
<system:String x:Key="wox_settings">Configurações do Wox</system:String>
<system:String x:Key="general">Geral</system:String>
<system:String x:Key="startWoxOnSystemStartup">Iniciar Wox com inicialização do sistema</system:String>
<system:String x:Key="hideWoxWhenLoseFocus">Esconder Wox quando foco for perdido</system:String>
<system:String x:Key="dontPromptUpdateMsg">Não mostrar notificações de novas versões</system:String>
<system:String x:Key="rememberLastLocation">Lembrar última localização de lançamento</system:String>
<system:String x:Key="language">Idioma</system:String>
<system:String x:Key="lastQueryMode">Estilo da Última Consulta</system:String>
<system:String x:Key="LastQueryPreserved">Preservar Ú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">Máximo de resultados mostrados</system:String>
<system:String x:Key="ignoreHotkeysOnFullscreen">Ignorar atalhos em tela cheia</system:String>
<system:String x:Key="autoUpdates">Atualizar Automaticamente</system:String>
<system:String x:Key="hideOnStartup">Esconder Wox na inicialização</system:String>
<!--Setting Plugin-->
<system:String x:Key="plugin">Plugin</system:String>
<system:String x:Key="browserMorePlugins">Encontrar mais plugins</system:String>
<system:String x:Key="disable">Desabilitar</system:String>
<system:String x:Key="actionKeywords">Palavras-chave de ação</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: {0}ms</system:String>
<system:String x:Key="plugin_query_time">Tempo de consulta: {0}ms</system:String>
<!--Setting Theme-->
<system:String x:Key="theme">Tema</system:String>
<system:String x:Key="browserMoreThemes">Ver mais temas</system:String>
<system:String x:Key="helloWox">Olá Wox</system:String>
<system:String x:Key="queryBoxFont">Fonte da caixa de Consulta</system:String>
<system:String x:Key="resultItemFont">Fonte do Resultado</system:String>
<system:String x:Key="windowMode">Modo Janela</system:String>
<system:String x:Key="opacity">Opacidade</system:String>
<!--Setting Hotkey-->
<system:String x:Key="hotkey">Atalho</system:String>
<system:String x:Key="woxHotkey">Atalho do Wox</system:String>
<system:String x:Key="customQueryHotkey">Atalho de Consulta Personalizada</system:String>
<system:String x:Key="delete">Apagar</system:String>
<system:String x:Key="edit">Editar</system:String>
<system:String x:Key="add">Adicionar</system:String>
<system:String x:Key="pleaseSelectAnItem">Por favor selecione um item</system:String>
<system:String x:Key="deleteCustomHotkeyWarning">Tem cereza de que deseja deletar o atalho {0} do plugin?</system:String>
<!--Setting Proxy-->
<system:String x:Key="proxy">Proxy HTTP</system:String>
<system:String x:Key="enableProxy">Habilitar Proxy HTTP</system:String>
<system:String x:Key="server">Servidor HTTP</system:String>
<system:String x:Key="port">Porta</system:String>
<system:String x:Key="userName">Usuário</system:String>
<system:String x:Key="password">Senha</system:String>
<system:String x:Key="testProxy">Testar Proxy</system:String>
<system:String x:Key="save">Salvar</system:String>
<system:String x:Key="serverCantBeEmpty">O campo de servidor não pode ser vazio</system:String>
<system:String x:Key="portCantBeEmpty">O campo de porta não pode ser vazio</system:String>
<system:String x:Key="invalidPortFormat">Formato de porta inválido</system:String>
<system:String x:Key="saveProxySuccessfully">Configuração de proxy salva com sucesso</system:String>
<system:String x:Key="proxyIsCorrect">Proxy configurado corretamente</system:String>
<system:String x:Key="proxyConnectFailed">Conexão por proxy falhou</system:String>
<!--Setting About-->
<system:String x:Key="about">Sobre</system:String>
<system:String x:Key="website">Website</system:String>
<system:String x:Key="version">Versão</system:String>
<system:String x:Key="about_activate_times">Você ativou o Wox {0} vezes</system:String>
<system:String x:Key="checkUpdates">Procurar atualizações</system:String>
<system:String x:Key="newVersionTips">A nova versão {0} está disponível, por favor reinicie o Wox.</system:String>
<system:String x:Key="checkUpdatesFailed">Falha ao procurar atualizações, confira sua conexão e configuração de proxy para api.github.com.</system:String>
<system:String x:Key="downloadUpdatesFailed">
Falha ao baixar atualizações, confira sua conexão e configuração de proxy para github-cloud.s3.amazonaws.com,
ou acesse https://github.com/Wox-launcher/Wox/releases para baixar manualmente.
</system:String>
<system:String x:Key="releaseNotes">Notas de Versão:</system:String>
<!--Action Keyword Setting Dialog-->
<system:String x:Key="oldActionKeywords">Antiga palavra-chave da ação</system:String>
<system:String x:Key="newActionKeywords">Nova palavra-chave da ação</system:String>
<system:String x:Key="cancel">Cancelar</system:String>
<system:String x:Key="done">Finalizado</system:String>
<system:String x:Key="cannotFindSpecifiedPlugin">Não foi possível encontrar o plugin especificado</system:String>
<system:String x:Key="newActionKeywordsCannotBeEmpty">A nova palavra-chave da ação não pode ser vazia</system:String>
<system:String x:Key="newActionKeywordsHasBeenAssigned">A nova palavra-chave da ação já foi atribuída a outro plugin, por favor tente outra</system:String>
<system:String x:Key="success">Sucesso</system:String>
<system:String x:Key="actionkeyword_tips">Use * se não quiser especificar uma palavra-chave de ação</system:String>
<!--Custom Query Hotkey Dialog-->
<system:String x:Key="preview">Prévia</system:String>
<system:String x:Key="hotkeyIsNotUnavailable">Atalho indisponível, escolha outro</system:String>
<system:String x:Key="invalidPluginHotkey">Atalho de plugin inválido</system:String>
<system:String x:Key="update">Atualizar</system:String>
<!--Hotkey Control-->
<system:String x:Key="hotkeyUnavailable">Atalho indisponível</system:String>
<!--Crash Reporter-->
<system:String x:Key="reportWindow_version">Versão</system:String>
<system:String x:Key="reportWindow_time">Horário</system:String>
<system:String x:Key="reportWindow_reproduce">Por favor, conte como a aplicação parou de funcionar para que possamos consertar</system:String>
<system:String x:Key="reportWindow_send_report">Enviar Relatório</system:String>
<system:String x:Key="reportWindow_cancel">Cancelar</system:String>
<system:String x:Key="reportWindow_general">Geral</system:String>
<system:String x:Key="reportWindow_exceptions">Exceções</system:String>
<system:String x:Key="reportWindow_exception_type">Tipo de Exceção</system:String>
<system:String x:Key="reportWindow_source">Fonte</system:String>
<system:String x:Key="reportWindow_stack_trace">Rastreamento de pilha</system:String>
<system:String x:Key="reportWindow_sending">Enviando</system:String>
<system:String x:Key="reportWindow_report_succeed">Relatório enviado com sucesso</system:String>
<system:String x:Key="reportWindow_report_failed">Falha ao enviar relatório</system:String>
<system:String x:Key="reportWindow_wox_got_an_error">Wox apresentou um erro</system:String>
<!--update-->
<system:String x:Key="update_wox_update_new_version_available">A nova versão {0} do Wox agora está disponível</system:String>
<system:String x:Key="update_wox_update_error">Ocorreu um erro ao tentar instalar atualizações do progama</system:String>
<system:String x:Key="update_wox_update">Atualizar</system:String>
<system:String x:Key="update_wox_update_cancel">Cancelar</system:String>
<system:String x:Key="update_wox_update_restart_wox_tip">Essa atualização reiniciará o Wox</system:String>
<system:String x:Key="update_wox_update_upadte_files">Os seguintes arquivos serão atualizados</system:String>
<system:String x:Key="update_wox_update_files">Atualizar arquivos</system:String>
<system:String x:Key="update_wox_update_upadte_description">Atualizar descrição</system:String>
</ResourceDictionary>

View File

@@ -0,0 +1,130 @@
<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">
<!--MainWindow-->
<system:String x:Key="registerHotkeyFailed">Регистрация хоткея {0} не удалась</system:String>
<system:String x:Key="couldnotStartCmd">Не удалось запустить {0}</system:String>
<system:String x:Key="invalidWoxPluginFileFormat">Неверный формат файла wox плагина</system:String>
<system:String x:Key="setAsTopMostInThisQuery">Отображать это окно выше всех при этом запросе</system:String>
<system:String x:Key="cancelTopMostInThisQuery">Не отображать это окно выше всех при этом запросе</system:String>
<system:String x:Key="executeQuery">Выполнить запрос:{0}</system:String>
<system:String x:Key="lastExecuteTime">Последний раз выполнен в:{0}</system:String>
<system:String x:Key="iconTrayOpen">Открыть</system:String>
<system:String x:Key="iconTraySettings">Настройки</system:String>
<system:String x:Key="iconTrayAbout">О Wox</system:String>
<system:String x:Key="iconTrayExit">Закрыть</system:String>
<!--Setting General-->
<system:String x:Key="wox_settings">Настройки Wox</system:String>
<system:String x:Key="general">Общие</system:String>
<system:String x:Key="startWoxOnSystemStartup">Запускать Wox при запуске системы</system:String>
<system:String x:Key="hideWoxWhenLoseFocus">Скрывать Wox если потерян фокус</system:String>
<system:String x:Key="dontPromptUpdateMsg">Не отображать сообщение об обновлении когда доступна новая версия</system:String>
<system:String x:Key="rememberLastLocation">Запомнить последнее место запуска</system:String>
<system:String x:Key="language">Язык</system:String>
<system:String x:Key="maxShowResults">Максимальное количество результатов</system:String>
<system:String x:Key="ignoreHotkeysOnFullscreen">Игнорировать горячие клавиши, если окно в полноэкранном режиме</system:String>
<system:String x:Key="autoUpdates">Auto Update</system:String>
<system:String x:Key="hideOnStartup">Hide Wox on startup</system:String>
<!--Setting Plugin-->
<system:String x:Key="plugin">Плагины</system:String>
<system:String x:Key="browserMorePlugins">Найти больше плагинов</system:String>
<system:String x:Key="disable">Отключить</system:String>
<system:String x:Key="actionKeywords">Ключевое слово</system:String>
<system:String x:Key="pluginDirectory">Папка</system:String>
<system:String x:Key="author">Автор</system:String>
<system:String x:Key="plugin_init_time">Инициализация: {0}ms</system:String>
<system:String x:Key="plugin_query_time">Запрос: {0}ms</system:String>
<!--Setting Theme-->
<system:String x:Key="theme">Темы</system:String>
<system:String x:Key="browserMoreThemes">Найти больше тем</system:String>
<system:String x:Key="helloWox">Привет Wox</system:String>
<system:String x:Key="queryBoxFont">Шрифт запросов</system:String>
<system:String x:Key="resultItemFont">Шрифт результатов</system:String>
<system:String x:Key="windowMode">Оконный режим</system:String>
<system:String x:Key="opacity">Прозрачность</system:String>
<!--Setting Hotkey-->
<system:String x:Key="hotkey">Горячие клавиши</system:String>
<system:String x:Key="woxHotkey">Горячая клавиша Wox</system:String>
<system:String x:Key="customQueryHotkey">Задаваемые горячие клавиши для запросов</system:String>
<system:String x:Key="delete">Удалить</system:String>
<system:String x:Key="edit">Изменить</system:String>
<system:String x:Key="add">Добавить</system:String>
<system:String x:Key="pleaseSelectAnItem">Сначала выберите элемент</system:String>
<system:String x:Key="deleteCustomHotkeyWarning">Вы уверены что хотите удалить горячую клавишу для плагина {0}?</system:String>
<!--Setting Proxy-->
<system:String x:Key="proxy">HTTP Прокси</system:String>
<system:String x:Key="enableProxy">Включить HTTP прокси</system:String>
<system:String x:Key="server">HTTP Сервер</system:String>
<system:String x:Key="port">Порт</system:String>
<system:String x:Key="userName">Логин</system:String>
<system:String x:Key="password">Пароль</system:String>
<system:String x:Key="testProxy">Проверить</system:String>
<system:String x:Key="save">Сохранить</system:String>
<system:String x:Key="serverCantBeEmpty">Необходимо задать сервер</system:String>
<system:String x:Key="portCantBeEmpty">Необходимо задать порт</system:String>
<system:String x:Key="invalidPortFormat">Неверный формат порта</system:String>
<system:String x:Key="saveProxySuccessfully">Прокси успешно сохранён</system:String>
<system:String x:Key="proxyIsCorrect">Прокси сервер задан правильно</system:String>
<system:String x:Key="proxyConnectFailed">Подключение к прокси серверу не удалось</system:String>
<!--Setting About-->
<system:String x:Key="about">О Wox</system:String>
<system:String x:Key="website">Сайт</system:String>
<system:String x:Key="version">Версия</system:String>
<system:String x:Key="about_activate_times">Вы воспользовались Wox уже {0} раз</system:String>
<system:String x:Key="checkUpdates">Check for Updates</system:String>
<system:String x:Key="newVersionTips">New version {0} avaiable, please restart wox</system:String>
<system:String x:Key="releaseNotes">Release Notes:</system:String>
<!--Action Keyword Setting Dialog-->
<system:String x:Key="oldActionKeywords">Текущая горячая клавиша</system:String>
<system:String x:Key="newActionKeywords">Новая горячая клавиша</system:String>
<system:String x:Key="cancel">Отменить</system:String>
<system:String x:Key="done">Подтвердить</system:String>
<system:String x:Key="cannotFindSpecifiedPlugin">Не удалось найти заданный плагин</system:String>
<system:String x:Key="newActionKeywordsCannotBeEmpty">Новая горячая клавиша не может быть пустой</system:String>
<system:String x:Key="newActionKeywordsHasBeenAssigned">Новая горячая клавиша уже используется другим плагином. Пожалуйста, задайте новую</system:String>
<system:String x:Key="success">Сохранено</system:String>
<system:String x:Key="actionkeyword_tips">Используйте * в случае, если вы не хотите задавать конкретную горячую клавишу</system:String>
<!--Custom Query Hotkey Dialog-->
<system:String x:Key="preview">Проверить</system:String>
<system:String x:Key="hotkeyIsNotUnavailable">Горячая клавиша недоступна. Пожалуйста, задайте новую</system:String>
<system:String x:Key="invalidPluginHotkey">Недействительная горячая клавиша плагина</system:String>
<system:String x:Key="update">Изменить</system:String>
<!--Hotkey Control-->
<system:String x:Key="hotkeyUnavailable">Горячая клавиша недоступна</system:String>
<!--Crash Reporter-->
<system:String x:Key="reportWindow_version">Версия</system:String>
<system:String x:Key="reportWindow_time">Время</system:String>
<system:String x:Key="reportWindow_reproduce">Пожалуйста, сообщите что произошло когда произошёл сбой в приложении, чтобы мы могли его исправить</system:String>
<system:String x:Key="reportWindow_send_report">Отправить отчёт</system:String>
<system:String x:Key="reportWindow_cancel">Отмена</system:String>
<system:String x:Key="reportWindow_general">Общие</system:String>
<system:String x:Key="reportWindow_exceptions">Исключения</system:String>
<system:String x:Key="reportWindow_exception_type">Тип исключения</system:String>
<system:String x:Key="reportWindow_source">Источник</system:String>
<system:String x:Key="reportWindow_stack_trace">Трессировка стека</system:String>
<system:String x:Key="reportWindow_sending">Отправляем</system:String>
<system:String x:Key="reportWindow_report_succeed">Отчёт успешно отправлен</system:String>
<system:String x:Key="reportWindow_report_failed">Не удалось отправить отчёт</system:String>
<system:String x:Key="reportWindow_wox_got_an_error">Произошёл сбой в Wox</system:String>
<!--update-->
<system:String x:Key="update_wox_update_new_version_available">Доступна новая версия Wox V{0}</system:String>
<system:String x:Key="update_wox_update_error">Произошла ошибка при попытке установить обновление</system:String>
<system:String x:Key="update_wox_update">Обновить</system:String>
<system:String x:Key="update_wox_update_cancel">Отмена</system:String>
<system:String x:Key="update_wox_update_restart_wox_tip">Это обновление перезапустит Wox</system:String>
<system:String x:Key="update_wox_update_upadte_files">Следующие файлы будут обновлены</system:String>
<system:String x:Key="update_wox_update_files">Обновить файлы</system:String>
<system:String x:Key="update_wox_update_upadte_description">Описание обновления</system:String>
</ResourceDictionary>

View File

@@ -0,0 +1,140 @@
<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">
<!--MainWindow-->
<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="invalidWoxPluginFileFormat">Neplatný formát súboru pre plugin Wox</system:String>
<system:String x:Key="setAsTopMostInThisQuery">Pri tomto dopyte umiestniť navrchu</system:String>
<system:String x:Key="cancelTopMostInThisQuery">Zrušiť umiestnenie navrchu pri tomto dopyte</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="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>
<!--Setting General-->
<system:String x:Key="wox_settings">Nastavenia Wox</system:String>
<system:String x:Key="general">Všeobecné</system:String>
<system:String x:Key="startWoxOnSystemStartup">Spustiť Wox po štarte systému</system:String>
<system:String x:Key="hideWoxWhenLoseFocus">Schovať Wox 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>
<system:String x:Key="language">Jazyk</system:String>
<system:String x:Key="lastQueryMode">Posledný dopyt</system:String>
<system:String x:Key="LastQueryPreserved">Ponechať</system:String>
<system:String x:Key="LastQuerySelected">Označiť posledný dopyt</system:String>
<system:String x:Key="LastQueryEmpty">Prázdne</system:String>
<system:String x:Key="maxShowResults">Max. výsledkov</system:String>
<system:String x:Key="ignoreHotkeysOnFullscreen">Ignorovať klávesové skraty v režime na celú obrazovku</system:String>
<system:String x:Key="autoUpdates">Automatická aktualizácia</system:String>
<system:String x:Key="hideOnStartup">Schovať Wox po spustení</system:String>
<system:String x:Key="hideNotifyIcon">Schovať ikonu v oblasti oznámení</system:String>
<!--Setting Plugin-->
<system:String x:Key="plugin">Plugin</system:String>
<system:String x:Key="browserMorePlugins">Nájsť ďalšie pluginy</system:String>
<system:String x:Key="disable">Zakázať</system:String>
<system:String x:Key="actionKeywords">Skratka akcie</system:String>
<system:String x:Key="pluginDirectory">Priečinok s pluginmy</system:String>
<system:String x:Key="author">Autor</system:String>
<system:String x:Key="plugin_init_time">Čas inic.: {0}ms</system:String>
<system:String x:Key="plugin_query_time">Čas dopytu: {0}ms</system:String>
<!--Setting Theme-->
<system:String x:Key="theme">Motív</system:String>
<system:String x:Key="browserMoreThemes">Prehliadať viac motívov</system:String>
<system:String x:Key="helloWox">Ahoj Wox</system:String>
<system:String x:Key="queryBoxFont">Písmo poľa pre dopyt</system:String>
<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>
<!--Setting Hotkey-->
<system:String x:Key="hotkey">Klávesová skratka</system:String>
<system:String x:Key="woxHotkey">Klávesová skratka pre Wox</system:String>
<system:String x:Key="customQueryHotkey">Vlastná klávesová skratka pre dopyt</system:String>
<system:String x:Key="delete">Odstrániť</system:String>
<system:String x:Key="edit">Upraviť</system:String>
<system:String x:Key="add">Pridať</system:String>
<system:String x:Key="pleaseSelectAnItem">Vyberte položku, prosím</system:String>
<system:String x:Key="deleteCustomHotkeyWarning">Ste si istý, že chcete odstrániť klávesovú skratku {0} pre plugin?</system:String>
<!--Setting Proxy-->
<system:String x:Key="proxy">HTTP Proxy</system:String>
<system:String x:Key="enableProxy">Povoliť HTTP Proxy</system:String>
<system:String x:Key="server">HTTP Server</system:String>
<system:String x:Key="port">Port</system:String>
<system:String x:Key="userName">Používateľské meno</system:String>
<system:String x:Key="password">Heslo</system:String>
<system:String x:Key="testProxy">Test Proxy</system:String>
<system:String x:Key="save">Uložiť</system:String>
<system:String x:Key="serverCantBeEmpty">Pole Server nemôže byť prázdne</system:String>
<system:String x:Key="portCantBeEmpty">Pole Port nemôže byť prázdne</system:String>
<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>
<!--Setting About-->
<system:String x:Key="about">O aplikácii</system:String>
<system:String x:Key="website">Webstránka</system:String>
<system:String x:Key="version">Verzia</system:String>
<system:String x:Key="about_activate_times">Wox bol aktivovaný {0}-krát</system:String>
<system:String x:Key="checkUpdates">Skontrolovať aktualizácie</system:String>
<system:String x:Key="newVersionTips">Je dostupná nová verzia {0}, prosím, reštartujte Wox.</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="downloadUpdatesFailed">
Sťahovanie aktualizácií zlyhalo, skontrolujte pripojenie na internet a nastavenie proxy k github-cloud.s3.amazonaws.com,
alebo prejdite na https://github.com/Wox-launcher/Wox/releases pre manuálne stiahnutie aktualizácií.
</system:String>
<system:String x:Key="releaseNotes">Poznámky k vydaniu:</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="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="success">Úspešné</system:String>
<system:String x:Key="actionkeyword_tips">Použite * ak nechcete určiť skratku pre akciu</system:String>
<!--Custom Query Hotkey Dialog-->
<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="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>
<!--Crash Reporter-->
<system:String x:Key="reportWindow_version">Verzia</system:String>
<system:String x:Key="reportWindow_time">Čas</system:String>
<system:String x:Key="reportWindow_reproduce">Prosím, napíšte nám, ako došlo k pádu aplikácie, aby sme to mohli opraviť</system:String>
<system:String x:Key="reportWindow_send_report">Odoslať hlásenie</system:String>
<system:String x:Key="reportWindow_cancel">Zrušiť</system:String>
<system:String x:Key="reportWindow_general">Všeobecné</system:String>
<system:String x:Key="reportWindow_exceptions">Výnimky</system:String>
<system:String x:Key="reportWindow_exception_type">Typ výnimky</system:String>
<system:String x:Key="reportWindow_source">Zdroj</system:String>
<system:String x:Key="reportWindow_stack_trace">Stack Trace</system:String>
<system:String x:Key="reportWindow_sending">Odosiela sa</system:String>
<system:String x:Key="reportWindow_report_succeed">Hlásenie bolo úspešne odoslané</system:String>
<system:String x:Key="reportWindow_report_failed">Odoslanie hlásenia zlyhalo</system:String>
<system:String x:Key="reportWindow_wox_got_an_error">Wox zaznamenal chybu</system:String>
<!--update-->
<system:String x:Key="update_wox_update_new_version_available">Je dostupné nové vydanie Wox {0}</system:String>
<system:String x:Key="update_wox_update_error">Počas inštalácie aktualizácií došlo k chybe</system:String>
<system:String x:Key="update_wox_update">Aktualizovať</system:String>
<system:String x:Key="update_wox_update_cancel">Zrušiť</system:String>
<system:String x:Key="update_wox_update_restart_wox_tip">Tento upgrade reštartuje Wox</system:String>
<system:String x:Key="update_wox_update_upadte_files">Nasledujúce súbory budú aktualizované</system:String>
<system:String x:Key="update_wox_update_files">Aktualizovať súbory</system:String>
<system:String x:Key="update_wox_update_upadte_description">Aktualizovať popis</system:String>
</ResourceDictionary>

View File

@@ -0,0 +1,139 @@
<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">
<!--MainWindow-->
<system:String x:Key="registerHotkeyFailed">Neuspešno registrovana prečica: {0}</system:String>
<system:String x:Key="couldnotStartCmd">Neuspešno pokretanje {0}</system:String>
<system:String x:Key="invalidWoxPluginFileFormat">Nepravilni Wox plugin format datoteke</system:String>
<system:String x:Key="setAsTopMostInThisQuery">Postavi kao najviši u ovom upitu</system:String>
<system:String x:Key="cancelTopMostInThisQuery">Poništi najviši u ovom upitu</system:String>
<system:String x:Key="executeQuery">Izvrši upit: {0}</system:String>
<system:String x:Key="lastExecuteTime">Vreme poslednjeg izvršenja: {0}</system:String>
<system:String x:Key="iconTrayOpen">Otvori</system:String>
<system:String x:Key="iconTraySettings">Podešavanja</system:String>
<system:String x:Key="iconTrayAbout">O Wox-u</system:String>
<system:String x:Key="iconTrayExit">Izlaz</system:String>
<!--Setting General-->
<system:String x:Key="wox_settings">Wox Podešavanja</system:String>
<system:String x:Key="general">Opšte</system:String>
<system:String x:Key="startWoxOnSystemStartup">Pokreni Wox pri podizanju sistema</system:String>
<system:String x:Key="hideWoxWhenLoseFocus">Sakri Wox kada se izgubi fokus</system:String>
<system:String x:Key="dontPromptUpdateMsg">Ne prikazuj obaveštenje o novoj verziji</system:String>
<system:String x:Key="rememberLastLocation">Zapamti lokaciju poslednjeg pokretanja</system:String>
<system:String x:Key="language">Jezik</system:String>
<system:String x:Key="lastQueryMode">Stil Poslednjeg upita</system:String>
<system:String x:Key="LastQueryPreserved">Sačuvaj poslednji Upit</system:String>
<system:String x:Key="LastQuerySelected">Selektuj poslednji Upit</system:String>
<system:String x:Key="LastQueryEmpty">Isprazni poslednji Upit</system:String>
<system:String x:Key="maxShowResults">Maksimum prikazanih rezultata</system:String>
<system:String x:Key="ignoreHotkeysOnFullscreen">Ignoriši prečice u fullscreen režimu</system:String>
<system:String x:Key="autoUpdates">Auto ažuriranje</system:String>
<system:String x:Key="hideOnStartup">Sakrij Wox pri podizanju sistema</system:String>
<!--Setting Plugin-->
<system:String x:Key="plugin">Plugin</system:String>
<system:String x:Key="browserMorePlugins">Nađi još plugin-a</system:String>
<system:String x:Key="disable">Onemogući</system:String>
<system:String x:Key="actionKeywords">Ključne reči</system:String>
<system:String x:Key="pluginDirectory">Plugin direktorijum</system:String>
<system:String x:Key="author">Autor</system:String>
<system:String x:Key="plugin_init_time">Vreme inicijalizacije: {0}ms</system:String>
<system:String x:Key="plugin_query_time">Vreme upita: {0}ms</system:String>
<!--Setting Theme-->
<system:String x:Key="theme">Tema</system:String>
<system:String x:Key="browserMoreThemes">Pretražite još tema</system:String>
<system:String x:Key="helloWox">Zdravo Wox</system:String>
<system:String x:Key="queryBoxFont">Font upita</system:String>
<system:String x:Key="resultItemFont">Font rezultata</system:String>
<system:String x:Key="windowMode">Režim prozora</system:String>
<system:String x:Key="opacity">Neprozirnost</system:String>
<!--Setting Hotkey-->
<system:String x:Key="hotkey">Prečica</system:String>
<system:String x:Key="woxHotkey">Wox prečica</system:String>
<system:String x:Key="customQueryHotkey">prečica za ručno dodat upit</system:String>
<system:String x:Key="delete">Obriši</system:String>
<system:String x:Key="edit">Izmeni</system:String>
<system:String x:Key="add">Dodaj</system:String>
<system:String x:Key="pleaseSelectAnItem">Molim Vas izaberite stavku</system:String>
<system:String x:Key="deleteCustomHotkeyWarning">Da li ste sigurni da želite da obrišete prečicu za {0} plugin?</system:String>
<!--Setting Proxy-->
<system:String x:Key="proxy">HTTP proksi</system:String>
<system:String x:Key="enableProxy">Uključi HTTP proksi</system:String>
<system:String x:Key="server">HTTP Server</system:String>
<system:String x:Key="port">Port</system:String>
<system:String x:Key="userName">Korisničko ime</system:String>
<system:String x:Key="password">Šifra</system:String>
<system:String x:Key="testProxy">Test proksi</system:String>
<system:String x:Key="save">Sačuvaj</system:String>
<system:String x:Key="serverCantBeEmpty">Polje za server ne može da bude prazno</system:String>
<system:String x:Key="portCantBeEmpty">Polje za port ne može da bude prazno</system:String>
<system:String x:Key="invalidPortFormat">Nepravilan format porta</system:String>
<system:String x:Key="saveProxySuccessfully">Podešavanja proksija uspešno sačuvana</system:String>
<system:String x:Key="proxyIsCorrect">Proksi uspešno podešen</system:String>
<system:String x:Key="proxyConnectFailed">Veza sa proksijem neuspešna</system:String>
<!--Setting About-->
<system:String x:Key="about">O Wox-u</system:String>
<system:String x:Key="website">Veb sajt</system:String>
<system:String x:Key="version">Verzija</system:String>
<system:String x:Key="about_activate_times">Aktivirali ste Wox {0} puta</system:String>
<system:String x:Key="checkUpdates">Proveri ažuriranja</system:String>
<system:String x:Key="newVersionTips">Nove verzija {0} je dostupna, molim Vas ponovo pokrenite Wox.</system:String>
<system:String x:Key="checkUpdatesFailed">Neuspešna provera ažuriranja, molim Vas proverite vašu vezu i podešavanja za proksi prema api.github.com.</system:String>
<system:String x:Key="downloadUpdatesFailed">
Neuspešno preuzimanje ažuriranja, molim Vas proverite vašu vezu i podešavanja za proksi prema github-cloud.s3.amazonaws.com,
ili posetite https://github.com/Wox-launcher/Wox/releases da preuzmete ažuriranja ručno.
</system:String>
<system:String x:Key="releaseNotes">U novoj verziji:</system:String>
<!--Action Keyword Setting Dialog-->
<system:String x:Key="oldActionKeywords">Prečica za staru radnju</system:String>
<system:String x:Key="newActionKeywords">Prečica za novu radnju</system:String>
<system:String x:Key="cancel">Otkaži</system:String>
<system:String x:Key="done">Gotovo</system:String>
<system:String x:Key="cannotFindSpecifiedPlugin">Navedeni plugin nije moguće pronaći</system:String>
<system:String x:Key="newActionKeywordsCannotBeEmpty">Prečica za novu radnju ne može da bude prazna</system:String>
<system:String x:Key="newActionKeywordsHasBeenAssigned">Prečica za novu radnju je dodeljena drugom plugin-u, molim Vas dodelite drugu prečicu</system:String>
<system:String x:Key="success">Uspešno</system:String>
<system:String x:Key="actionkeyword_tips">Koristite * ako ne želite da navedete prečicu za radnju</system:String>
<!--Custom Query Hotkey Dialog-->
<system:String x:Key="preview">Pregled</system:String>
<system:String x:Key="hotkeyIsNotUnavailable">Prečica je nedustupna, molim Vas izaberite drugu prečicu</system:String>
<system:String x:Key="invalidPluginHotkey">Nepravlna prečica za plugin</system:String>
<system:String x:Key="update">Ažuriraj</system:String>
<!--Hotkey Control-->
<system:String x:Key="hotkeyUnavailable">Prečica nedostupna</system:String>
<!--Crash Reporter-->
<system:String x:Key="reportWindow_version">Verzija</system:String>
<system:String x:Key="reportWindow_time">Vreme</system:String>
<system:String x:Key="reportWindow_reproduce">Molimo Vas recite nam kako je aplikacija prestala sa radom, da bi smo je ispravili</system:String>
<system:String x:Key="reportWindow_send_report">Pošalji izveštaj</system:String>
<system:String x:Key="reportWindow_cancel">Otkaži</system:String>
<system:String x:Key="reportWindow_general">Opšte</system:String>
<system:String x:Key="reportWindow_exceptions">Izuzetak</system:String>
<system:String x:Key="reportWindow_exception_type">Tipovi Izuzetaka</system:String>
<system:String x:Key="reportWindow_source">Izvor</system:String>
<system:String x:Key="reportWindow_stack_trace">Stack Trace</system:String>
<system:String x:Key="reportWindow_sending">Slanje</system:String>
<system:String x:Key="reportWindow_report_succeed">Izveštaj uspešno poslat</system:String>
<system:String x:Key="reportWindow_report_failed">Izveštaj neuspešno poslat</system:String>
<system:String x:Key="reportWindow_wox_got_an_error">Wox je dobio grešku</system:String>
<!--update-->
<system:String x:Key="update_wox_update_new_version_available">Nova verzija Wox-a {0} je dostupna</system:String>
<system:String x:Key="update_wox_update_error">Došlo je do greške prilokom instalacije ažuriranja</system:String>
<system:String x:Key="update_wox_update">Ažuriraj</system:String>
<system:String x:Key="update_wox_update_cancel">Otkaži</system:String>
<system:String x:Key="update_wox_update_restart_wox_tip">Ova nadogradnja će ponovo pokrenuti Wox</system:String>
<system:String x:Key="update_wox_update_upadte_files">Sledeće datoteke će biti ažurirane</system:String>
<system:String x:Key="update_wox_update_files">Ažuriraj datoteke</system:String>
<system:String x:Key="update_wox_update_upadte_description">Opis ažuriranja</system:String>
</ResourceDictionary>

View File

@@ -0,0 +1,143 @@
<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">
<!--MainWindow-->
<system:String x:Key="registerHotkeyFailed">Kısayol tuşu ataması başarısız oldu: {0}</system:String>
<system:String x:Key="couldnotStartCmd">{0} başlatılamıyor</system:String>
<system:String x:Key="invalidWoxPluginFileFormat">Geçersiz Wox eklenti dosyası formatı</system:String>
<system:String x:Key="setAsTopMostInThisQuery">Bu sorgu için başa sabitle</system:String>
<system:String x:Key="cancelTopMostInThisQuery">Sabitlemeyi kaldır</system:String>
<system:String x:Key="executeQuery">Sorguyu çalıştır: {0}</system:String>
<system:String x:Key="lastExecuteTime">Son çalıştırma zamanı: {0}</system:String>
<system:String x:Key="iconTrayOpen">Aç</system:String>
<system:String x:Key="iconTraySettings">Ayarlar</system:String>
<system:String x:Key="iconTrayAbout">Hakkında</system:String>
<system:String x:Key="iconTrayExit">Çıkış</system:String>
<!--Setting General-->
<system:String x:Key="wox_settings">Wox Ayarları</system:String>
<system:String x:Key="general">Genel</system:String>
<system:String x:Key="startWoxOnSystemStartup">Wox'u başlangıçta başlat</system:String>
<system:String x:Key="hideWoxWhenLoseFocus">Odak pencereden ayrıldığında Wox'u gizle</system:String>
<system:String x:Key="dontPromptUpdateMsg">Güncelleme bildirimlerini gösterme</system:String>
<system:String x:Key="rememberLastLocation">Pencere konumunu hatırla</system:String>
<system:String x:Key="language">Dil</system:String>
<system:String x:Key="lastQueryMode">Pencere açıldığında</system:String>
<system:String x:Key="LastQueryPreserved">Son sorguyu sakla</system:String>
<system:String x:Key="LastQuerySelected">Son sorguyu sakla ve tümünü seç</system:String>
<system:String x:Key="LastQueryEmpty">Sorgu kutusunu temizle</system:String>
<system:String x:Key="maxShowResults">Maksimum sonuç sayısı</system:String>
<system:String x:Key="ignoreHotkeysOnFullscreen">Tam ekran modunda kısayol tuşunu gözardı et</system:String>
<system:String x:Key="autoUpdates">Otomatik Güncelle</system:String>
<system:String x:Key="hideOnStartup">Başlangıçta Wox'u gizle</system:String>
<system:String x:Key="hideNotifyIcon">Sistem çekmecesi simgesini gizle</system:String>
<system:String x:Key="querySearchPrecision">Sorgu Arama Hassasiyeti</system:String>
<!--Setting Plugin-->
<system:String x:Key="plugin">Eklentiler</system:String>
<system:String x:Key="browserMorePlugins">Daha fazla eklenti bul</system:String>
<system:String x:Key="disable">Devre Dışı</system:String>
<system:String x:Key="actionKeywords">Anahtar Kelimeler</system:String>
<system:String x:Key="pluginDirectory">Eklenti Klasörü</system:String>
<system:String x:Key="author">Yapımcı</system:String>
<system:String x:Key="plugin_init_time">Açılış Süresi: {0}ms</system:String>
<system:String x:Key="plugin_query_time">Sorgu Süresi: {0}ms</system:String>
<!--Setting Theme-->
<system:String x:Key="theme">Temalar</system:String>
<system:String x:Key="browserMoreThemes">Daha fazla tema bul</system:String>
<system:String x:Key="helloWox">Merhaba Wox</system:String>
<system:String x:Key="queryBoxFont">Pencere Yazı Tipi</system:String>
<system:String x:Key="resultItemFont">Sonuç Yazı Tipi</system:String>
<system:String x:Key="windowMode">Pencere Modu</system:String>
<system:String x:Key="opacity">Saydamlık</system:String>
<system:String x:Key="theme_load_failure_path_not_exists">{0} isimli tema bulunamadı, varsayılan temaya dönülüyor.</system:String>
<system:String x:Key="theme_load_failure_parse_error">{0} isimli tema yüklenirken hata oluştu, varsayılan temaya dönülüyor.</system:String>
<!--Setting Hotkey-->
<system:String x:Key="hotkey">Kısayol Tuşu</system:String>
<system:String x:Key="woxHotkey">Wox Kısayolu</system:String>
<system:String x:Key="customQueryHotkey">Özel Sorgu Kısayolları</system:String>
<system:String x:Key="delete">Sil</system:String>
<system:String x:Key="edit">Düzenle</system:String>
<system:String x:Key="add">Ekle</system:String>
<system:String x:Key="pleaseSelectAnItem">Lütfen bir öğe seçin</system:String>
<system:String x:Key="deleteCustomHotkeyWarning">{0} eklentisi için olan kısayolu silmek istediğinize emin misiniz?</system:String>
<!--Setting Proxy-->
<system:String x:Key="proxy">Vekil Sunucu</system:String>
<system:String x:Key="enableProxy">HTTP vekil sunucuyu etkinleştir.</system:String>
<system:String x:Key="server">Sunucu Adresi</system:String>
<system:String x:Key="port">Port</system:String>
<system:String x:Key="userName">Kullanıcı Adı</system:String>
<system:String x:Key="password">Parola</system:String>
<system:String x:Key="testProxy">Ayarları Sına</system:String>
<system:String x:Key="save">Kaydet</system:String>
<system:String x:Key="serverCantBeEmpty">Sunucu adresi boş olamaz</system:String>
<system:String x:Key="portCantBeEmpty">Port boş olamaz</system:String>
<system:String x:Key="invalidPortFormat">Port biçimi geçersiz</system:String>
<system:String x:Key="saveProxySuccessfully">Vekil sunucu ayarları başarıyla kaydedildi</system:String>
<system:String x:Key="proxyIsCorrect">Vekil sunucu doğru olarak ayarlandı</system:String>
<system:String x:Key="proxyConnectFailed">Vekil sunucuya bağlanılırken hata oluştu</system:String>
<!--Setting About-->
<system:String x:Key="about">Hakkında</system:String>
<system:String x:Key="website">Web Sitesi</system:String>
<system:String x:Key="version">Sürüm</system:String>
<system:String x:Key="about_activate_times">Şu ana kadar Wox'u {0} kez aktifleştirdiniz.</system:String>
<system:String x:Key="checkUpdates">Güncellemeleri Kontrol Et</system:String>
<system:String x:Key="newVersionTips">Uygulamanın yeni sürümü ({0}) mevcut, Lütfen Wox'u yeniden başlatın.</system:String>
<system:String x:Key="checkUpdatesFailed">Güncelleme kontrolü başarısız oldu. Lütfen bağlantınız ve vekil sunucu ayarlarınızın api.github.com adresine ulaşabilir olduğunu kontrol edin.</system:String>
<system:String x:Key="downloadUpdatesFailed">
Güncellemenin yüklenmesi başarısız oldu. Lütfen bağlantınız ve vekil sunucu ayarlarınızın github-cloud.s3.amazonaws.com
adresine ulaşabilir olduğunu kontrol edin ya da https://github.com/Wox-launcher/Wox/releases adresinden güncellemeyi elle indirin.
</system:String>
<system:String x:Key="releaseNotes">Sürüm Notları:</system:String>
<!--Action Keyword Setting Dialog-->
<system:String x:Key="oldActionKeywords">Eski Anahtar Kelime</system:String>
<system:String x:Key="newActionKeywords">Yeni Anahtar Kelime</system:String>
<system:String x:Key="cancel">İptal</system:String>
<system:String x:Key="done">Tamam</system:String>
<system:String x:Key="cannotFindSpecifiedPlugin">Belirtilen eklenti bulunamadı</system:String>
<system:String x:Key="newActionKeywordsCannotBeEmpty">Yeni anahtar kelime boş olamaz</system:String>
<system:String x:Key="newActionKeywordsHasBeenAssigned">Yeni anahtar kelime başka bir eklentiye atanmış durumda. Lütfen başka bir anahtar kelime seçin</system:String>
<system:String x:Key="success">Başarılı</system:String>
<system:String x:Key="actionkeyword_tips">Anahtar kelime belirlemek istemiyorsanız * kullanın</system:String>
<!--Custom Query Hotkey Dialog-->
<system:String x:Key="preview">Önizleme</system:String>
<system:String x:Key="hotkeyIsNotUnavailable">Kısayol tuşu kullanılabilir değil, lütfen başka bir kısayol tuşu seçin</system:String>
<system:String x:Key="invalidPluginHotkey">Geçersiz eklenti kısayol tuşu</system:String>
<system:String x:Key="update">Güncelle</system:String>
<!--Hotkey Control-->
<system:String x:Key="hotkeyUnavailable">Kısayol tuşu kullanılabilir değil</system:String>
<!--Crash Reporter-->
<system:String x:Key="reportWindow_version">Sürüm</system:String>
<system:String x:Key="reportWindow_time">Tarih</system:String>
<system:String x:Key="reportWindow_reproduce">Sorunu çözebilmemiz için lütfen uygulamanın ne yaparken çöktüğünü belirtin.</system:String>
<system:String x:Key="reportWindow_send_report">Raporu Gönder</system:String>
<system:String x:Key="reportWindow_cancel">İptal</system:String>
<system:String x:Key="reportWindow_general">Genel</system:String>
<system:String x:Key="reportWindow_exceptions">Özel Durumlar</system:String>
<system:String x:Key="reportWindow_exception_type">Özel Durum Tipi</system:String>
<system:String x:Key="reportWindow_source">Kaynak</system:String>
<system:String x:Key="reportWindow_stack_trace">Yığın İzleme</system:String>
<system:String x:Key="reportWindow_sending">Gönderiliyor</system:String>
<system:String x:Key="reportWindow_report_succeed">Hata raporu başarıyla gönderildi</system:String>
<system:String x:Key="reportWindow_report_failed">Hata raporu gönderimi başarısız oldu</system:String>
<system:String x:Key="reportWindow_wox_got_an_error">Wox'ta bir hata oluştu</system:String>
<!--update-->
<system:String x:Key="update_wox_update_new_version_available">Wox'un yeni bir sürümü ({0}) mevcut</system:String>
<system:String x:Key="update_wox_update_error">Güncellemelerin kurulması sırasında bir hata oluştu</system:String>
<system:String x:Key="update_wox_update">Güncelle</system:String>
<system:String x:Key="update_wox_update_cancel">İptal</system:String>
<system:String x:Key="update_wox_update_restart_wox_tip">Bu güncelleme Wox'u yeniden başlatacaktır</system:String>
<system:String x:Key="update_wox_update_upadte_files">Aşağıdaki dosyalar güncelleştirilecektir</system:String>
<system:String x:Key="update_wox_update_files">Güncellenecek dosyalar</system:String>
<system:String x:Key="update_wox_update_upadte_description">Güncelleme açıklaması</system:String>
</ResourceDictionary>

View File

@@ -0,0 +1,130 @@
<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">
<!--MainWindow-->
<system:String x:Key="registerHotkeyFailed">Реєстрація хоткея {0} не вдалася</system:String>
<system:String x:Key="couldnotStartCmd">Не вдалося запустити {0}</system:String>
<system:String x:Key="invalidWoxPluginFileFormat">Невірний формат файлу плагіна Wox</system:String>
<system:String x:Key="setAsTopMostInThisQuery">Відображати першим при такому ж запиті</system:String>
<system:String x:Key="cancelTopMostInThisQuery">Відмінити відображення першим при такому ж запиті</system:String>
<system:String x:Key="executeQuery">Виконати запит: {0}</system:String>
<system:String x:Key="lastExecuteTime">Час останнього використання: {0}</system:String>
<system:String x:Key="iconTrayOpen">Відкрити</system:String>
<system:String x:Key="iconTraySettings">Налаштування</system:String>
<system:String x:Key="iconTrayAbout">Про Wox</system:String>
<system:String x:Key="iconTrayExit">Закрити</system:String>
<!--Setting General-->
<system:String x:Key="wox_settings">Налаштування Wox</system:String>
<system:String x:Key="general">Основні</system:String>
<system:String x:Key="startWoxOnSystemStartup">Запускати Wox при запуску системи</system:String>
<system:String x:Key="hideWoxWhenLoseFocus">Сховати Wox якщо втрачено фокус</system:String>
<system:String x:Key="dontPromptUpdateMsg">Не повідомляти про доступні нові версії</system:String>
<system:String x:Key="rememberLastLocation">Запам'ятати останнє місце запуску</system:String>
<system:String x:Key="language">Мова</system:String>
<system:String x:Key="maxShowResults">Максимальна кількість результатів</system:String>
<system:String x:Key="ignoreHotkeysOnFullscreen">Ігнорувати гарячі клавіші в повноекранному режимі</system:String>
<system:String x:Key="autoUpdates">Автоматичне оновлення</system:String>
<system:String x:Key="hideOnStartup">Сховати Wox при запуску системи</system:String>
<!--Setting Plugin-->
<system:String x:Key="plugin">Плагіни</system:String>
<system:String x:Key="browserMorePlugins">Знайти більше плагінів</system:String>
<system:String x:Key="disable">Відключити</system:String>
<system:String x:Key="actionKeywords">Ключове слово</system:String>
<system:String x:Key="pluginDirectory">Директорія плагіну</system:String>
<system:String x:Key="author">Автор</system:String>
<system:String x:Key="plugin_init_time">Ініціалізація: {0}ms</system:String>
<system:String x:Key="plugin_query_time">Запит: {0}ms</system:String>
<!--Setting Theme-->
<system:String x:Key="theme">Теми</system:String>
<system:String x:Key="browserMoreThemes">Знайти більше тем</system:String>
<system:String x:Key="helloWox">Привіт Wox</system:String>
<system:String x:Key="queryBoxFont">Шрифт запитів</system:String>
<system:String x:Key="resultItemFont">Шрифт результатів</system:String>
<system:String x:Key="windowMode">Віконний режим</system:String>
<system:String x:Key="opacity">Прозорість</system:String>
<!--Setting Hotkey-->
<system:String x:Key="hotkey">Гарячі клавіші</system:String>
<system:String x:Key="woxHotkey">Гаряча клавіша Wox</system:String>
<system:String x:Key="customQueryHotkey">Задані гарячі клавіші для запитів</system:String>
<system:String x:Key="delete">Видалити</system:String>
<system:String x:Key="edit">Змінити</system:String>
<system:String x:Key="add">Додати</system:String>
<system:String x:Key="pleaseSelectAnItem">Спочатку виберіть елемент</system:String>
<system:String x:Key="deleteCustomHotkeyWarning">Ви впевнені, що хочете видалити гарячу клавішу ({0}) плагіну?</system:String>
<!--Setting Proxy-->
<system:String x:Key="proxy">HTTP Proxy</system:String>
<system:String x:Key="enableProxy">Включити HTTP Proxy</system:String>
<system:String x:Key="server">HTTP Сервер</system:String>
<system:String x:Key="port">Порт</system:String>
<system:String x:Key="userName">Логін</system:String>
<system:String x:Key="password">Пароль</system:String>
<system:String x:Key="testProxy">Перевірити Proxy</system:String>
<system:String x:Key="save">Зберегти</system:String>
<system:String x:Key="serverCantBeEmpty">Необхідно вказати "HTTP Сервер"</system:String>
<system:String x:Key="portCantBeEmpty">Необхідно вказати "Порт"</system:String>
<system:String x:Key="invalidPortFormat">Невірний формат порту</system:String>
<system:String x:Key="saveProxySuccessfully">Налаштування Proxy успішно збережено</system:String>
<system:String x:Key="proxyIsCorrect">Proxy успішно налаштований</system:String>
<system:String x:Key="proxyConnectFailed">Невдале підключення Proxy</system:String>
<!--Setting About-->
<system:String x:Key="about">Про Wox</system:String>
<system:String x:Key="website">Сайт</system:String>
<system:String x:Key="version">Версия</system:String>
<system:String x:Key="about_activate_times">Ви скористалися Wox вже {0} разів</system:String>
<system:String x:Key="checkUpdates">Перевірити наявність оновлень</system:String>
<system:String x:Key="newVersionTips">Доступна нова версія {0}, будь ласка, перезавантажте Wox</system:String>
<system:String x:Key="releaseNotes">Примітки до поточного релізу:</system:String>
<!--Action Keyword Setting Dialog-->
<system:String x:Key="oldActionKeywords">Поточна гаряча клавіша</system:String>
<system:String x:Key="newActionKeywords">Нова гаряча клавіша</system:String>
<system:String x:Key="cancel">Скасувати</system:String>
<system:String x:Key="done">Готово</system:String>
<system:String x:Key="cannotFindSpecifiedPlugin">Не вдалося знайти вказаний плагін</system:String>
<system:String x:Key="newActionKeywordsCannotBeEmpty">Нова гаряча клавіша не може бути порожньою</system:String>
<system:String x:Key="newActionKeywordsHasBeenAssigned">Нова гаряча клавіша вже використовується іншим плагіном. Будь ласка, вкажіть нову</system:String>
<system:String x:Key="success">Збережено</system:String>
<system:String x:Key="actionkeyword_tips">Використовуйте * у разі, якщо ви не хочете ставити конкретну гарячу клавішу</system:String>
<!--Custom Query Hotkey Dialog-->
<system:String x:Key="preview">Перевірити</system:String>
<system:String x:Key="hotkeyIsNotUnavailable">Гаряча клавіша недоступна. Будь ласка, вкажіть нову</system:String>
<system:String x:Key="invalidPluginHotkey">Недійсна гаряча клавіша плагіна</system:String>
<system:String x:Key="update">Оновити</system:String>
<!--Hotkey Control-->
<system:String x:Key="hotkeyUnavailable">Гаряча клавіша недоступна</system:String>
<!--Crash Reporter-->
<system:String x:Key="reportWindow_version">Версія</system:String>
<system:String x:Key="reportWindow_time">Час</system:String>
<system:String x:Key="reportWindow_reproduce">Будь ласка, розкажіть нам, як додаток вийшов із ладу, щоб ми могли це виправити</system:String>
<system:String x:Key="reportWindow_send_report">Надіслати звіт</system:String>
<system:String x:Key="reportWindow_cancel">Скасувати</system:String>
<system:String x:Key="reportWindow_general">Основне</system:String>
<system:String x:Key="reportWindow_exceptions">Винятки</system:String>
<system:String x:Key="reportWindow_exception_type">Тип винятку</system:String>
<system:String x:Key="reportWindow_source">Джерело</system:String>
<system:String x:Key="reportWindow_stack_trace">Траса стеку</system:String>
<system:String x:Key="reportWindow_sending">Відправити</system:String>
<system:String x:Key="reportWindow_report_succeed">Звіт успішно відправлено</system:String>
<system:String x:Key="reportWindow_report_failed">Не вдалося відправити звіт</system:String>
<system:String x:Key="reportWindow_wox_got_an_error">Стався збій в додатоку Wox</system:String>
<!--update-->
<system:String x:Key="update_wox_update_new_version_available">Доступна нова версія Wox V{0}</system:String>
<system:String x:Key="update_wox_update_error">Сталася помилка під час спроби встановити оновлення</system:String>
<system:String x:Key="update_wox_update">Оновити</system:String>
<system:String x:Key="update_wox_update_cancel">Скасувати</system:String>
<system:String x:Key="update_wox_update_restart_wox_tip">Це оновлення перезавантажить Wox</system:String>
<system:String x:Key="update_wox_update_upadte_files">Ці файли будуть оновлені</system:String>
<system:String x:Key="update_wox_update_files">Оновити файли</system:String>
<system:String x:Key="update_wox_update_upadte_description">Опис оновлення</system:String>
</ResourceDictionary>

View File

@@ -0,0 +1,137 @@
<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="registerHotkeyFailed">注册热键:{0} 失败</system:String>
<system:String x:Key="couldnotStartCmd">启动命令 {0} 失败</system:String>
<system:String x:Key="invalidWoxPluginFileFormat">不是合法的Wox插件格式</system:String>
<system:String x:Key="setAsTopMostInThisQuery">在当前查询中置顶</system:String>
<system:String x:Key="cancelTopMostInThisQuery">取消置顶</system:String>
<system:String x:Key="executeQuery">执行查询:{0}</system:String>
<system:String x:Key="lastExecuteTime">上次执行时间:{0}</system:String>
<system:String x:Key="iconTrayOpen">打开</system:String>
<system:String x:Key="iconTraySettings">设置</system:String>
<system:String x:Key="iconTrayAbout">关于</system:String>
<system:String x:Key="iconTrayExit">退出</system:String>
<!--设置,通用-->
<system:String x:Key="wox_settings">Wox设置</system:String>
<system:String x:Key="general">通用</system:String>
<system:String x:Key="startWoxOnSystemStartup">开机启动</system:String>
<system:String x:Key="hideWoxWhenLoseFocus">失去焦点时自动隐藏Wox</system:String>
<system:String x:Key="dontPromptUpdateMsg">不显示新版本提示</system:String>
<system:String x:Key="rememberLastLocation">记住上次启动位置</system:String>
<system:String x:Key="language">语言</system:String>
<system:String x:Key="lastQueryMode">上次搜索关键字模式</system:String>
<system:String x:Key="LastQueryPreserved">保留上次搜索关键字</system:String>
<system:String x:Key="LastQuerySelected">全选上次搜索关键字</system:String>
<system:String x:Key="LastQueryEmpty">清空上次搜索关键字</system:String>
<system:String x:Key="maxShowResults">最大结果显示个数</system:String>
<system:String x:Key="ignoreHotkeysOnFullscreen">全屏模式下忽略热键</system:String>
<system:String x:Key="autoUpdates">自动更新</system:String>
<system:String x:Key="hideOnStartup">启动时不显示主窗口</system:String>
<system:String x:Key="hideNotifyIcon">隐藏任务栏图标</system:String>
<!--设置,插件-->
<system:String x:Key="plugin">插件</system:String>
<system:String x:Key="browserMorePlugins">浏览更多插件</system:String>
<system:String x:Key="disable">禁用</system:String>
<system:String x:Key="actionKeywords">触发关键字</system:String>
<system:String x:Key="pluginDirectory">插件目录</system:String>
<system:String x:Key="author">作者</system:String>
<system:String x:Key="plugin_init_time">加载耗时 {0}ms</system:String>
<system:String x:Key="plugin_query_time">查询耗时 {0}ms</system:String>
<!--设置,主题-->
<system:String x:Key="theme">主题</system:String>
<system:String x:Key="browserMoreThemes">浏览更多主题</system:String>
<system:String x:Key="helloWox">你好Wox</system:String>
<system:String x:Key="queryBoxFont">查询框字体</system:String>
<system:String x:Key="resultItemFont">结果项字体</system:String>
<system:String x:Key="windowMode">窗口模式</system:String>
<system:String x:Key="opacity">透明度</system:String>
<system:String x:Key="theme_load_failure_path_not_exists">无法找到主题 {0} ,切换为默认主题</system:String>
<system:String x:Key="theme_load_failure_parse_error">无法加载主题 {0} ,切换为默认主题</system:String>
<!--设置,热键-->
<system:String x:Key="hotkey">热键</system:String>
<system:String x:Key="woxHotkey">Wox激活热键</system:String>
<system:String x:Key="customQueryHotkey">自定义查询热键</system:String>
<system:String x:Key="delete">删除</system:String>
<system:String x:Key="edit">编辑</system:String>
<system:String x:Key="add">增加</system:String>
<system:String x:Key="pleaseSelectAnItem">请选择一项</system:String>
<system:String x:Key="deleteCustomHotkeyWarning">你确定要删除插件 {0} 的热键吗?</system:String>
<!--设置,代理-->
<system:String x:Key="proxy">HTTP 代理</system:String>
<system:String x:Key="enableProxy">启用 HTTP 代理</system:String>
<system:String x:Key="server">HTTP 服务器</system:String>
<system:String x:Key="port">端口</system:String>
<system:String x:Key="userName">用户名</system:String>
<system:String x:Key="password">密码</system:String>
<system:String x:Key="testProxy">测试代理</system:String>
<system:String x:Key="save">保存</system:String>
<system:String x:Key="serverCantBeEmpty">服务器不能为空</system:String>
<system:String x:Key="portCantBeEmpty">端口不能为空</system:String>
<system:String x:Key="invalidPortFormat">非法的端口格式</system:String>
<system:String x:Key="saveProxySuccessfully">保存代理设置成功</system:String>
<system:String x:Key="proxyIsCorrect">代理设置正确</system:String>
<system:String x:Key="proxyConnectFailed">代理连接失败</system:String>
<!--设置 关于-->
<system:String x:Key="about">关于</system:String>
<system:String x:Key="website">网站</system:String>
<system:String x:Key="version">版本</system:String>
<system:String x:Key="about_activate_times">你已经激活了Wox {0} 次</system:String>
<system:String x:Key="checkUpdates">检查更新</system:String>
<system:String x:Key="newVersionTips">发现新版本 {0} , 请重启 wox。</system:String>
<system:String x:Key="releaseNotes">更新说明:</system:String>
<!--Action Keyword 设置对话框-->
<system:String x:Key="oldActionKeywords">旧触发关键字</system:String>
<system:String x:Key="newActionKeywords">新触发关键字</system:String>
<system:String x:Key="cancel">取消</system:String>
<system:String x:Key="done">确定</system:String>
<system:String x:Key="cannotFindSpecifiedPlugin">找不到指定的插件</system:String>
<system:String x:Key="newActionKeywordsCannotBeEmpty">新触发关键字不能为空</system:String>
<system:String x:Key="newActionKeywordsHasBeenAssigned">新触发关键字已经被指派给其他插件了,请重新选择一个关键字</system:String>
<system:String x:Key="success">成功</system:String>
<system:String x:Key="actionkeyword_tips">如果你不想设置触发关键字,可以使用*代替</system:String>
<!--Custom Query Hotkey 对话框-->
<system:String x:Key="preview">预览</system:String>
<system:String x:Key="hotkeyIsNotUnavailable">热键不可用,请选择一个新的热键</system:String>
<system:String x:Key="invalidPluginHotkey">插件热键不合法</system:String>
<system:String x:Key="update">更新</system:String>
<!--Hotkey 控件-->
<system:String x:Key="hotkeyUnavailable">热键不可用</system:String>
<!--崩溃报告窗体-->
<system:String x:Key="reportWindow_version">版本</system:String>
<system:String x:Key="reportWindow_time">时间</system:String>
<system:String x:Key="reportWindow_reproduce">请告诉我们如何重现此问题,以便我们进行修复</system:String>
<system:String x:Key="reportWindow_send_report">发送报告</system:String>
<system:String x:Key="reportWindow_cancel">取消</system:String>
<system:String x:Key="reportWindow_general">基本信息</system:String>
<system:String x:Key="reportWindow_exceptions">异常信息</system:String>
<system:String x:Key="reportWindow_exception_type">异常类型</system:String>
<system:String x:Key="reportWindow_source">异常源</system:String>
<system:String x:Key="reportWindow_stack_trace">堆栈信息</system:String>
<system:String x:Key="reportWindow_sending">发送中</system:String>
<system:String x:Key="reportWindow_report_succeed">发送成功</system:String>
<system:String x:Key="reportWindow_report_failed">发送失败</system:String>
<system:String x:Key="reportWindow_wox_got_an_error">Wox出错啦</system:String>
<!--更新-->
<system:String x:Key="update_wox_update_new_version_available">发现Wox新版本 V{0}</system:String>
<system:String x:Key="update_wox_update_error">更新Wox出错</system:String>
<system:String x:Key="update_wox_update">更新</system:String>
<system:String x:Key="update_wox_update_cancel">取消</system:String>
<system:String x:Key="update_wox_update_restart_wox_tip">此更新需要重启Wox</system:String>
<system:String x:Key="update_wox_update_upadte_files">下列文件会被更新</system:String>
<system:String x:Key="update_wox_update_files">更新文件</system:String>
<system:String x:Key="update_wox_update_upadte_description">更新日志</system:String>
</ResourceDictionary>

View File

@@ -0,0 +1,130 @@
<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="registerHotkeyFailed">登錄快速鍵:{0} 失敗</system:String>
<system:String x:Key="couldnotStartCmd">啟動命令 {0} 失敗</system:String>
<system:String x:Key="invalidWoxPluginFileFormat">無效的 Wox 外掛格式</system:String>
<system:String x:Key="setAsTopMostInThisQuery">在目前查詢中置頂</system:String>
<system:String x:Key="cancelTopMostInThisQuery">取消置頂</system:String>
<system:String x:Key="executeQuery">執行查詢:{0}</system:String>
<system:String x:Key="lastExecuteTime">上次執行時間:{0}</system:String>
<system:String x:Key="iconTrayOpen">開啟</system:String>
<system:String x:Key="iconTraySettings">設定</system:String>
<system:String x:Key="iconTrayAbout">關於</system:String>
<system:String x:Key="iconTrayExit">結束</system:String>
<!--設定,一般-->
<system:String x:Key="wox_settings">Wox 設定</system:String>
<system:String x:Key="general">一般</system:String>
<system:String x:Key="startWoxOnSystemStartup">開機時啟動</system:String>
<system:String x:Key="hideWoxWhenLoseFocus">失去焦點時自動隱藏 Wox</system:String>
<system:String x:Key="dontPromptUpdateMsg">不顯示新版本提示</system:String>
<system:String x:Key="rememberLastLocation">記住上次啟動位置</system:String>
<system:String x:Key="language">語言</system:String>
<system:String x:Key="maxShowResults">最大結果顯示個數</system:String>
<system:String x:Key="ignoreHotkeysOnFullscreen">全螢幕模式下忽略熱鍵</system:String>
<system:String x:Key="autoUpdates">自動更新</system:String>
<system:String x:Key="hideOnStartup">啟動時不顯示主視窗</system:String>
<!--設置,外掛-->
<system:String x:Key="plugin">外掛</system:String>
<system:String x:Key="browserMorePlugins">瀏覽更多外掛</system:String>
<system:String x:Key="disable">停用</system:String>
<system:String x:Key="actionKeywords">觸發關鍵字</system:String>
<system:String x:Key="pluginDirectory">外掛資料夾</system:String>
<system:String x:Key="author">作者</system:String>
<system:String x:Key="plugin_init_time">載入耗時:{0}ms</system:String>
<system:String x:Key="plugin_query_time">查詢耗時:{0}ms</system:String>
<!--設定,主題-->
<system:String x:Key="theme">主題</system:String>
<system:String x:Key="browserMoreThemes">瀏覽更多主題</system:String>
<system:String x:Key="helloWox">你好Wox</system:String>
<system:String x:Key="queryBoxFont">查詢框字體</system:String>
<system:String x:Key="resultItemFont">結果項字體</system:String>
<system:String x:Key="windowMode">視窗模式</system:String>
<system:String x:Key="opacity">透明度</system:String>
<!--設置,熱鍵-->
<system:String x:Key="hotkey">熱鍵</system:String>
<system:String x:Key="woxHotkey">Wox 執行熱鍵</system:String>
<system:String x:Key="customQueryHotkey">自定義熱鍵查詢</system:String>
<system:String x:Key="delete">刪除</system:String>
<system:String x:Key="edit">編輯</system:String>
<system:String x:Key="add">新增</system:String>
<system:String x:Key="pleaseSelectAnItem">請選擇一項</system:String>
<system:String x:Key="deleteCustomHotkeyWarning">確定要刪除外掛 {0} 的熱鍵嗎?</system:String>
<!--設置,代理-->
<system:String x:Key="proxy">HTTP 代理</system:String>
<system:String x:Key="enableProxy">啟用 HTTP 代理</system:String>
<system:String x:Key="server">HTTP 伺服器</system:String>
<system:String x:Key="Port">Port</system:String>
<system:String x:Key="userName">使用者</system:String>
<system:String x:Key="password">密碼</system:String>
<system:String x:Key="testProxy">測試代理</system:String>
<system:String x:Key="save">儲存</system:String>
<system:String x:Key="serverCantBeEmpty">伺服器不能為空</system:String>
<system:String x:Key="portCantBeEmpty">Port 不能為空</system:String>
<system:String x:Key="invalidPortFormat">不正確的 Port 格式</system:String>
<system:String x:Key="saveProxySuccessfully">儲存代理設定成功</system:String>
<system:String x:Key="proxyIsCorrect">代理設定完成</system:String>
<system:String x:Key="proxyConnectFailed">代理連線失敗</system:String>
<!--設定,關於-->
<system:String x:Key="about">關於</system:String>
<system:String x:Key="website">網站</system:String>
<system:String x:Key="version">版本</system:String>
<system:String x:Key="about_activate_times">您已經啟動了 Wox {0} 次</system:String>
<system:String x:Key="checkUpdates">檢查更新</system:String>
<system:String x:Key="newVersionTips">發現有新版本 {0} 請重新啟動 Wox。</system:String>
<system:String x:Key="releaseNotes">更新說明:</system:String>
<!--Action Keyword 設定對話框-->
<system:String x:Key="oldActionKeywords">舊觸發關鍵字</system:String>
<system:String x:Key="newActionKeywords">新觸發關鍵字</system:String>
<system:String x:Key="cancel">取消</system:String>
<system:String x:Key="done">確定</system:String>
<system:String x:Key="cannotFindSpecifiedPlugin">找不到指定的外掛</system:String>
<system:String x:Key="newActionKeywordsCannotBeEmpty">新觸發關鍵字不能為空白</system:String>
<system:String x:Key="newActionKeywordsHasBeenAssigned">新觸發關鍵字已經被指派給另一外掛,請設定其他關鍵字。</system:String>
<system:String x:Key="success">成功</system:String>
<system:String x:Key="actionkeyword_tips">如果不想設定觸發關鍵字,可以使用*代替</system:String>
<!--Custom Query Hotkey 對話框-->
<system:String x:Key="preview">預覽</system:String>
<system:String x:Key="hotkeyIsNotUnavailable">熱鍵不存在,請設定一個新的熱鍵</system:String>
<system:String x:Key="invalidPluginHotkey">外掛熱鍵無法使用</system:String>
<system:String x:Key="update">更新</system:String>
<!--Hotkey 控件-->
<system:String x:Key="hotkeyUnavailable">熱鍵無法使用</system:String>
<!--當機報告視窗-->
<system:String x:Key="reportWindow_version">版本</system:String>
<system:String x:Key="reportWindow_time">時間</system:String>
<system:String x:Key="reportWindow_reproduce">請告訴我們如何重現此問題,以便我們進行修復</system:String>
<system:String x:Key="reportWindow_send_report">發送報告</system:String>
<system:String x:Key="reportWindow_cancel">取消</system:String>
<system:String x:Key="reportWindow_general">基本訊息</system:String>
<system:String x:Key="reportWindow_exceptions">例外訊息</system:String>
<system:String x:Key="reportWindow_exception_type">例外類型</system:String>
<system:String x:Key="reportWindow_source">例外來源</system:String>
<system:String x:Key="reportWindow_stack_trace">堆疊資訊</system:String>
<system:String x:Key="reportWindow_sending">傳送中</system:String>
<system:String x:Key="reportWindow_report_succeed">傳送成功</system:String>
<system:String x:Key="reportWindow_report_failed">傳送失敗</system:String>
<system:String x:Key="reportWindow_wox_got_an_error">Wox 出錯啦</system:String>
<!--更新-->
<system:String x:Key="update_wox_update_new_version_available">發現 Wox 新版本 V{0}</system:String>
<system:String x:Key="update_wox_update_error">更新 Wox 出錯</system:String>
<system:String x:Key="update_wox_update">更新</system:String>
<system:String x:Key="update_wox_update_cancel">取消</system:String>
<system:String x:Key="update_wox_update_restart_wox_tip">此更新需要重新啟動 Wox</system:String>
<system:String x:Key="update_wox_update_upadte_files">下列檔案會被更新</system:String>
<system:String x:Key="update_wox_update_files">更新檔案</system:String>
<system:String x:Key="update_wox_update_upadte_description">更新日誌</system:String>
</ResourceDictionary>

View File

@@ -0,0 +1,90 @@
<Window x:Class="Wox.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:wox="clr-namespace:Wox"
xmlns:vm="clr-namespace:Wox.ViewModel"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="d"
Title="Wox"
Topmost="True"
SizeToContent="Height"
ResizeMode="NoResize"
WindowStyle="None"
WindowStartupLocation="Manual"
AllowDrop="True"
ShowInTaskbar="False"
Style="{DynamicResource WindowStyle}"
Icon="Images/app.png"
AllowsTransparency="True"
Loaded="OnLoaded"
Initialized="OnInitialized"
Closing="OnClosing"
Drop="OnDrop"
LocationChanged="OnLocationChanged"
Deactivated="OnDeactivated"
PreviewKeyDown="OnKeyDown"
Visibility="{Binding MainWindowVisibility, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
d:DataContext="{d:DesignInstance vm:MainViewModel}">
<Window.InputBindings>
<KeyBinding Key="Escape" Command="{Binding EscCommand}"></KeyBinding>
<KeyBinding Key="F1" Command="{Binding StartHelpCommand}"></KeyBinding>
<KeyBinding Key="Tab" Command="{Binding SelectNextItemCommand}"></KeyBinding>
<KeyBinding Key="Tab" Modifiers="Shift" Command="{Binding SelectPrevItemCommand}"></KeyBinding>
<KeyBinding Key="N" Modifiers="Ctrl" Command="{Binding SelectNextItemCommand}"></KeyBinding>
<KeyBinding Key="J" Modifiers="Ctrl" Command="{Binding SelectNextItemCommand}"></KeyBinding>
<KeyBinding Key="D" Modifiers="Ctrl" Command="{Binding SelectNextPageCommand}"></KeyBinding>
<KeyBinding Key="P" Modifiers="Ctrl" Command="{Binding SelectPrevItemCommand}"></KeyBinding>
<KeyBinding Key="K" Modifiers="Ctrl" Command="{Binding SelectPrevItemCommand}"></KeyBinding>
<KeyBinding Key="U" Modifiers="Ctrl" Command="{Binding SelectPrevPageCommand}"></KeyBinding>
<KeyBinding Key="Home" Modifiers="Alt" Command="{Binding SelectFirstResultCommand}"></KeyBinding>
<KeyBinding Key="O" Modifiers="Ctrl" Command="{Binding LoadContextMenuCommand}"></KeyBinding>
<KeyBinding Key="H" Modifiers="Ctrl" Command="{Binding LoadHistoryCommand}"></KeyBinding>
<KeyBinding Key="Enter" Modifiers="Shift" Command="{Binding LoadContextMenuCommand}"></KeyBinding>
<KeyBinding Key="Enter" Command="{Binding OpenResultCommand}"></KeyBinding>
<KeyBinding Key="Enter" Modifiers="Ctrl" Command="{Binding OpenResultCommand}"></KeyBinding>
<KeyBinding Key="Enter" Modifiers="Alt" Command="{Binding OpenResultCommand}"></KeyBinding>
<KeyBinding Key="D1" Modifiers="Alt" Command="{Binding OpenResultCommand}" CommandParameter="0"></KeyBinding>
<KeyBinding Key="D2" Modifiers="Alt" Command="{Binding OpenResultCommand}" CommandParameter="1"></KeyBinding>
<KeyBinding Key="D3" Modifiers="Alt" Command="{Binding OpenResultCommand}" CommandParameter="2"></KeyBinding>
<KeyBinding Key="D4" Modifiers="Alt" Command="{Binding OpenResultCommand}" CommandParameter="3"></KeyBinding>
<KeyBinding Key="D5" Modifiers="Alt" Command="{Binding OpenResultCommand}" CommandParameter="4"></KeyBinding>
<KeyBinding Key="D6" Modifiers="Alt" Command="{Binding OpenResultCommand}" CommandParameter="5"></KeyBinding>
<KeyBinding Key="D7" Modifiers="Alt" Command="{Binding OpenResultCommand}" CommandParameter="6"></KeyBinding>
<KeyBinding Key="D8" Modifiers="Alt" Command="{Binding OpenResultCommand}" CommandParameter="7"></KeyBinding>
<KeyBinding Key="D9" Modifiers="Alt" Command="{Binding OpenResultCommand}" CommandParameter="8"></KeyBinding>
</Window.InputBindings>
<Border Style="{DynamicResource WindowBorderStyle}" MouseDown="OnMouseDown" >
<StackPanel Orientation="Vertical">
<TextBox Style="{DynamicResource QueryBoxStyle}"
Text="{Binding QueryText, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
PreviewDragOver="OnPreviewDragOver"
TextChanged="OnTextChanged"
AllowDrop="True"
Visibility="Visible"
x:Name="QueryTextBox">
<TextBox.ContextMenu>
<ContextMenu>
<MenuItem Command="ApplicationCommands.Cut"/>
<MenuItem Command="ApplicationCommands.Copy"/>
<MenuItem Command="ApplicationCommands.Paste"/>
<Separator />
<MenuItem Header="Settings" Click="OnContextMenusForSettingsClick" />
</ContextMenu>
</TextBox.ContextMenu>
</TextBox>
<Line x:Name="ProgressBar" HorizontalAlignment="Right"
Style="{DynamicResource PendingLineStyle}" Visibility="{Binding ProgressBarVisibility, Mode=TwoWay}"
Y1="0" Y2="0" X2="100" Height="2" Width="752" StrokeThickness="1">
</Line>
<ContentControl>
<wox:ResultListBox DataContext="{Binding Results}" PreviewMouseDown="OnPreviewMouseButtonDown" />
</ContentControl>
<ContentControl>
<wox:ResultListBox DataContext="{Binding ContextMenu}" PreviewMouseDown="OnPreviewMouseButtonDown" />
</ContentControl>
<ContentControl>
<wox:ResultListBox DataContext="{Binding History}" PreviewMouseDown="OnPreviewMouseButtonDown" />
</ContentControl>
</StackPanel>
</Border>
</Window>

View File

@@ -0,0 +1,243 @@
using System;
using System.ComponentModel;
using System.Windows;
using System.Windows.Input;
using System.Windows.Media.Animation;
using System.Windows.Controls;
using System.Windows.Forms;
using Wox.Core.Plugin;
using Wox.Core.Resource;
using Wox.Helper;
using Wox.Infrastructure.UserSettings;
using Wox.ViewModel;
using Screen = System.Windows.Forms.Screen;
using ContextMenuStrip = System.Windows.Forms.ContextMenuStrip;
using DataFormats = System.Windows.DataFormats;
using DragEventArgs = System.Windows.DragEventArgs;
using KeyEventArgs = System.Windows.Input.KeyEventArgs;
using MessageBox = System.Windows.MessageBox;
namespace Wox
{
public partial class MainWindow
{
#region Private Fields
private readonly Storyboard _progressBarStoryboard = new Storyboard();
private Settings _settings;
private MainViewModel _viewModel;
#endregion
public MainWindow(Settings settings, MainViewModel mainVM)
{
DataContext = mainVM;
_viewModel = mainVM;
_settings = settings;
InitializeComponent();
}
public MainWindow()
{
InitializeComponent();
}
private void OnClosing(object sender, CancelEventArgs e)
{
_viewModel.Save();
}
private void OnInitialized(object sender, EventArgs e)
{
}
private void OnLoaded(object sender, RoutedEventArgs _)
{
// todo is there a way to set blur only once?
ThemeManager.Instance.SetBlurForWindow();
WindowsInteropHelper.DisableControlBox(this);
InitProgressbarAnimation();
InitializePosition();
// since the default main window visibility is visible
// so we need set focus during startup
QueryTextBox.Focus();
_viewModel.PropertyChanged += (o, e) =>
{
if (e.PropertyName == nameof(MainViewModel.MainWindowVisibility))
{
if (Visibility == Visibility.Visible)
{
Activate();
QueryTextBox.Focus();
UpdatePosition();
_settings.ActivateTimes++;
if (!_viewModel.LastQuerySelected)
{
QueryTextBox.SelectAll();
_viewModel.LastQuerySelected = true;
}
}
}
};
InitializePosition();
}
private void InitializePosition()
{
Top = WindowTop();
Left = WindowLeft();
_settings.WindowTop = Top;
_settings.WindowLeft = Left;
}
private void InitProgressbarAnimation()
{
var da = new DoubleAnimation(ProgressBar.X2, ActualWidth + 100, new Duration(new TimeSpan(0, 0, 0, 0, 1600)));
var da1 = new DoubleAnimation(ProgressBar.X1, ActualWidth, new Duration(new TimeSpan(0, 0, 0, 0, 1600)));
Storyboard.SetTargetProperty(da, new PropertyPath("(Line.X2)"));
Storyboard.SetTargetProperty(da1, new PropertyPath("(Line.X1)"));
_progressBarStoryboard.Children.Add(da);
_progressBarStoryboard.Children.Add(da1);
_progressBarStoryboard.RepeatBehavior = RepeatBehavior.Forever;
ProgressBar.BeginStoryboard(_progressBarStoryboard);
_viewModel.ProgressBarVisibility = Visibility.Hidden;
}
private void OnMouseDown(object sender, MouseButtonEventArgs e)
{
if (e.ChangedButton == MouseButton.Left) DragMove();
}
private void OnPreviewMouseButtonDown(object sender, MouseButtonEventArgs e)
{
if (sender != null && e.OriginalSource != null)
{
var r = (ResultListBox)sender;
var d = (DependencyObject)e.OriginalSource;
var item = ItemsControl.ContainerFromElement(r, d) as ListBoxItem;
var result = (ResultViewModel)item?.DataContext;
if (result != null)
{
if (e.ChangedButton == MouseButton.Left)
{
_viewModel.OpenResultCommand.Execute(null);
}
else if (e.ChangedButton == MouseButton.Right)
{
_viewModel.LoadContextMenuCommand.Execute(null);
}
}
}
}
private void OnDrop(object sender, DragEventArgs e)
{
if (e.Data.GetDataPresent(DataFormats.FileDrop))
{
// Note that you can have more than one file.
string[] files = (string[])e.Data.GetData(DataFormats.FileDrop);
if (files[0].ToLower().EndsWith(".wox"))
{
PluginManager.InstallPlugin(files[0]);
}
else
{
MessageBox.Show(InternationalizationManager.Instance.GetTranslation("invalidWoxPluginFileFormat"));
}
}
e.Handled = false;
}
private void OnPreviewDragOver(object sender, DragEventArgs e)
{
e.Handled = true;
}
private void OnContextMenusForSettingsClick(object sender, RoutedEventArgs e)
{
}
private void OnDeactivated(object sender, EventArgs e)
{
if (_settings.HideWhenDeactive)
{
Hide();
}
}
private void UpdatePosition()
{
if (_settings.RememberLastLaunchLocation)
{
Left = _settings.WindowLeft;
Top = _settings.WindowTop;
}
else
{
Left = WindowLeft();
Top = WindowTop();
}
}
private void OnLocationChanged(object sender, EventArgs e)
{
if (_settings.RememberLastLaunchLocation)
{
_settings.WindowLeft = Left;
_settings.WindowTop = Top;
}
}
private double WindowLeft()
{
var screen = Screen.FromPoint(System.Windows.Forms.Cursor.Position);
var dip1 = WindowsInteropHelper.TransformPixelsToDIP(this, screen.WorkingArea.X, 0);
var dip2 = WindowsInteropHelper.TransformPixelsToDIP(this, screen.WorkingArea.Width, 0);
var left = (dip2.X - ActualWidth) / 2 + dip1.X;
return left;
}
private double WindowTop()
{
var screen = Screen.FromPoint(System.Windows.Forms.Cursor.Position);
var dip1 = WindowsInteropHelper.TransformPixelsToDIP(this, 0, screen.WorkingArea.Y);
var dip2 = WindowsInteropHelper.TransformPixelsToDIP(this, 0, screen.WorkingArea.Height);
var top = (dip2.Y - QueryTextBox.ActualHeight) / 4 + dip1.Y;
return top;
}
/// <summary>
/// Register up and down key
/// todo: any way to put this in xaml ?
/// </summary>
private void OnKeyDown(object sender, KeyEventArgs e)
{
if (e.Key == Key.Down)
{
_viewModel.SelectNextItemCommand.Execute(null);
e.Handled = true;
}
else if (e.Key == Key.Up)
{
_viewModel.SelectPrevItemCommand.Execute(null);
e.Handled = true;
}
else if (e.Key == Key.PageDown)
{
_viewModel.SelectNextPageCommand.Execute(null);
e.Handled = true;
}
else if (e.Key == Key.PageUp)
{
_viewModel.SelectPrevPageCommand.Execute(null);
e.Handled = true;
}
}
private void OnTextChanged(object sender, TextChangedEventArgs e)
{
}
}
}

View File

@@ -0,0 +1,7 @@
using System.Reflection;
using System.Windows;
[assembly: ThemeInfo(
ResourceDictionaryLocation.None,
ResourceDictionaryLocation.SourceAssembly
)]

View File

@@ -0,0 +1,74 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.42000
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace Wox.Properties {
using System;
/// <summary>
/// A strongly-typed resource class, for looking up localized strings, etc.
/// </summary>
// This class was auto-generated by the StronglyTypedResourceBuilder
// class via a tool like ResGen or Visual Studio.
// To add or remove a member, edit your .ResX file then rerun ResGen
// with the /str option, or rebuild your VS project.
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "16.0.0.0")]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
internal class Resources {
private static global::System.Resources.ResourceManager resourceMan;
private static global::System.Globalization.CultureInfo resourceCulture;
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
internal Resources() {
}
/// <summary>
/// Returns the cached ResourceManager instance used by this class.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Resources.ResourceManager ResourceManager {
get {
if (object.ReferenceEquals(resourceMan, null)) {
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Wox.Properties.Resources", typeof(Resources).Assembly);
resourceMan = temp;
}
return resourceMan;
}
}
/// <summary>
/// Overrides the current thread's CurrentUICulture property for all
/// resource lookups using this strongly typed resource class.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Globalization.CultureInfo Culture {
get {
return resourceCulture;
}
set {
resourceCulture = value;
}
}
/// <summary>
/// Looks up a localized resource of type System.Drawing.Icon similar to (Icon).
/// </summary>
internal static System.Drawing.Icon placeholderLauncher
{
get {
object obj = ResourceManager.GetObject("placeholderLauncher", resourceCulture);
return ((System.Drawing.Icon)(obj));
}
}
}
}

View File

@@ -0,0 +1,124 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="placeholderLauncher" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\placeholderLauncher.ico;System.Drawing.Icon, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
</root>

View File

@@ -0,0 +1,35 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.42000
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace Wox.Properties {
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "16.4.0.0")]
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
public static Settings Default {
get {
return defaultInstance;
}
}
[global::System.Configuration.ApplicationScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("https://github.com/Microsoft/PowerToys")]
public string GithubRepo {
get {
return ((string)(this["GithubRepo"]));
}
}
}
}

View File

@@ -0,0 +1,9 @@
<?xml version='1.0' encoding='utf-8'?>
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)" GeneratedClassNamespace="Launcher.Properties" GeneratedClassName="Settings">
<Profiles />
<Settings>
<Setting Name="GithubRepo" Type="System.String" Scope="Application">
<Value Profile="(Default)">https://github.com/Microsoft/PowerToys</Value>
</Setting>
</Settings>
</SettingsFile>

View File

@@ -0,0 +1,158 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Threading.Tasks;
using System.Windows;
using Wox.Core.Plugin;
using Wox.Core.Resource;
using Wox.Helper;
using Wox.Infrastructure;
using Wox.Infrastructure.Hotkey;
using Wox.Infrastructure.Image;
using Wox.Plugin;
using Wox.ViewModel;
namespace Wox
{
public class PublicAPIInstance : IPublicAPI
{
private readonly SettingWindowViewModel _settingsVM;
private readonly MainViewModel _mainVM;
private readonly Alphabet _alphabet;
#region Constructor
public PublicAPIInstance(SettingWindowViewModel settingsVM, MainViewModel mainVM, Alphabet alphabet)
{
_settingsVM = settingsVM;
_mainVM = mainVM;
_alphabet = alphabet;
GlobalHotkey.Instance.hookedKeyboardCallback += KListener_hookedKeyboardCallback;
WebRequest.RegisterPrefix("data", new DataWebRequestFactory());
}
#endregion
#region Public API
public void ChangeQuery(string query, bool requery = false)
{
_mainVM.ChangeQueryText(query, requery);
}
public void ChangeQueryText(string query, bool selectAll = false)
{
_mainVM.ChangeQueryText(query, false);
}
[Obsolete]
public void CloseApp()
{
Application.Current.MainWindow.Close();
}
public void RestarApp()
{
_mainVM.MainWindowVisibility = Visibility.Hidden;
// we must manually save
// UpdateManager.RestartApp() will call Environment.Exit(0)
// which will cause ungraceful exit
SaveAppAllSettings();
Squirrel.UpdateManager.RestartApp();
}
public void CheckForNewUpdate()
{
//_settingsVM.UpdateApp();
}
public void SaveAppAllSettings()
{
_mainVM.Save();
_settingsVM.Save();
PluginManager.Save();
ImageLoader.Save();
_alphabet.Save();
}
public void ReloadAllPluginData()
{
PluginManager.ReloadData();
}
[Obsolete]
public void HideApp()
{
_mainVM.MainWindowVisibility = Visibility.Hidden;
}
[Obsolete]
public void ShowApp()
{
_mainVM.MainWindowVisibility = Visibility.Visible;
}
public void ShowMsg(string title, string subTitle = "", string iconPath = "", bool useMainWindowAsOwner = true)
{
}
public void StartLoadingBar()
{
_mainVM.ProgressBarVisibility = Visibility.Visible;
}
public void StopLoadingBar()
{
_mainVM.ProgressBarVisibility = Visibility.Collapsed;
}
public void InstallPlugin(string path)
{
Application.Current.Dispatcher.Invoke(() => PluginManager.InstallPlugin(path));
}
public string GetTranslation(string key)
{
return InternationalizationManager.Instance.GetTranslation(key);
}
public List<PluginPair> GetAllPlugins()
{
return PluginManager.AllPlugins.ToList();
}
public event WoxGlobalKeyboardEventHandler GlobalKeyboardEvent;
[Obsolete("This will be removed in Wox 1.3")]
public void PushResults(Query query, PluginMetadata plugin, List<Result> results)
{
results.ForEach(o =>
{
o.PluginDirectory = plugin.PluginDirectory;
o.PluginID = plugin.ID;
o.OriginQuery = query;
});
Task.Run(() =>
{
_mainVM.UpdateResultView(results, plugin, query);
});
}
#endregion
#region Private Methods
private bool KListener_hookedKeyboardCallback(KeyEvent keyevent, int vkcode, SpecialKeyState state)
{
if (GlobalKeyboardEvent != null)
{
return GlobalKeyboardEvent((int)keyevent, vkcode, state);
}
return true;
}
#endregion
}
}

View File

@@ -0,0 +1,23 @@
<Window x:Class="Wox.ReportWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
mc:Ignorable="d"
WindowStartupLocation="CenterScreen"
Icon="Images/app_error.png"
Topmost="True"
ResizeMode="NoResize"
Width="600"
Height="455"
Title="{DynamicResource reportWindow_wox_got_an_error}"
d:DesignHeight="300" d:DesignWidth="600" x:ClassModifier="internal">
<RichTextBox x:Name="ErrorTextbox"
IsDocumentEnabled="True"
VerticalScrollBarVisibility="Auto"
HorizontalScrollBarVisibility="Auto"
FontSize="14"
Margin="10"
BorderThickness="0"/>
</Window>

View File

@@ -0,0 +1,63 @@
using System;
using System.Diagnostics;
using System.Globalization;
using System.IO;
using System.Text;
using System.Linq;
using System.Windows;
using System.Windows.Documents;
using Wox.Helper;
using Wox.Infrastructure;
using Wox.Infrastructure.Logger;
namespace Wox
{
internal partial class ReportWindow
{
public ReportWindow(Exception exception)
{
InitializeComponent();
ErrorTextbox.Document.Blocks.FirstBlock.Margin = new Thickness(0);
SetException(exception);
}
private void SetException(Exception exception)
{
string path = Log.CurrentLogDirectory;
var directory = new DirectoryInfo(path);
var log = directory.GetFiles().OrderByDescending(f => f.LastWriteTime).First();
var paragraph = Hyperlink("Please open new issue in: ", Constant.Issue);
paragraph.Inlines.Add($"1. upload log file: {log.FullName}\n");
paragraph.Inlines.Add($"2. copy below exception message");
ErrorTextbox.Document.Blocks.Add(paragraph);
StringBuilder content = new StringBuilder();
content.AppendLine(ErrorReporting.RuntimeInfo());
content.AppendLine($"Date: {DateTime.Now.ToString(CultureInfo.InvariantCulture)}");
content.AppendLine("Exception:");
content.AppendLine(exception.ToString());
paragraph = new Paragraph();
paragraph.Inlines.Add(content.ToString());
ErrorTextbox.Document.Blocks.Add(paragraph);
}
private Paragraph Hyperlink(string textBeforeUrl, string url)
{
var paragraph = new Paragraph();
paragraph.Margin = new Thickness(0);
var link = new Hyperlink { IsEnabled = true };
link.Inlines.Add(url);
link.NavigateUri = new Uri(url);
link.RequestNavigate += (s, e) => Process.Start(e.Uri.ToString());
link.Click += (s, e) => Process.Start(url);
paragraph.Inlines.Add(textBeforeUrl);
paragraph.Inlines.Add(link);
paragraph.Inlines.Add("\n");
return paragraph;
}
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

View File

@@ -0,0 +1,119 @@
<ListBox x:Class="Wox.ResultListBox"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:vm="clr-namespace:Wox.ViewModel"
xmlns:converter="clr-namespace:Wox.Converters"
mc:Ignorable="d" d:DesignWidth="100" d:DesignHeight="100"
d:DataContext="{d:DesignInstance vm:ResultsViewModel}"
MaxHeight="{Binding MaxHeight}"
SelectedIndex="{Binding SelectedIndex, Mode=TwoWay}"
SelectedItem="{Binding SelectedItem, Mode=OneWayToSource}"
HorizontalContentAlignment="Stretch" ItemsSource="{Binding Results}"
Margin="{Binding Margin}"
Visibility="{Binding Visbility}"
Style="{DynamicResource BaseListboxStyle}" Focusable="False"
KeyboardNavigation.DirectionalNavigation="Cycle" SelectionMode="Single"
VirtualizingStackPanel.IsVirtualizing="True" VirtualizingStackPanel.VirtualizationMode="Standard"
SelectionChanged="OnSelectionChanged"
IsSynchronizedWithCurrentItem="True"
PreviewMouseDown="ListBox_PreviewMouseDown">
<!--IsSynchronizedWithCurrentItem: http://stackoverflow.com/a/7833798/2833083-->
<ListBox.ItemTemplate>
<DataTemplate>
<Button>
<Button.Template>
<ControlTemplate>
<ContentPresenter Content="{TemplateBinding Button.Content}" />
</ControlTemplate>
</Button.Template>
<Button.Content>
<Grid HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Margin="5"
Cursor="Hand" UseLayoutRounding="False">
<Grid.Resources>
<converter:HighlightTextConverter x:Key="HighlightTextConverter"/>
</Grid.Resources>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="32" />
<ColumnDefinition />
<ColumnDefinition Width="0" />
</Grid.ColumnDefinitions>
<Image x:Name="imgIco" Width="32" Height="32" HorizontalAlignment="Left"
Source="{Binding Image ,IsAsync=True}" />
<Grid Margin="5 0 5 0" Grid.Column="1" HorizontalAlignment="Stretch">
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition Height="Auto" x:Name="SubTitleRowDefinition" />
</Grid.RowDefinitions>
<TextBlock Style="{DynamicResource ItemTitleStyle}" DockPanel.Dock="Left"
VerticalAlignment="Center" ToolTip="{Binding Result.Title}" x:Name="Title"
Text="{Binding Result.Title}">
<vm:ResultsViewModel.FormattedText>
<MultiBinding Converter="{StaticResource HighlightTextConverter}">
<Binding Path="Result.Title" />
<Binding Path="Result.TitleHighlightData" />
</MultiBinding>
</vm:ResultsViewModel.FormattedText>
</TextBlock>
<TextBlock Style="{DynamicResource ItemSubTitleStyle}" ToolTip="{Binding Result.SubTitle}"
Grid.Row="1" x:Name="SubTitle" Text="{Binding Result.SubTitle}">
<vm:ResultsViewModel.FormattedText>
<MultiBinding Converter="{StaticResource HighlightTextConverter}">
<Binding Path="Result.SubTitle" />
<Binding Path="Result.SubTitleHighlightData" />
</MultiBinding>
</vm:ResultsViewModel.FormattedText>
</TextBlock>
</Grid>
</Grid>
</Button.Content>
</Button>
<!-- a result item height is 50 including margin -->
<DataTemplate.Triggers>
<DataTrigger
Binding="{Binding RelativeSource={RelativeSource Mode=FindAncestor,AncestorType={x:Type ListBoxItem}}, Path=IsSelected}"
Value="True">
<Setter TargetName="Title" Property="Style" Value="{DynamicResource ItemTitleSelectedStyle}" />
<Setter TargetName="SubTitle" Property="Style" Value="{DynamicResource ItemSubTitleSelectedStyle}" />
</DataTrigger>
</DataTemplate.Triggers>
</DataTemplate>
</ListBox.ItemTemplate>
<!--http://stackoverflow.com/questions/16819577/setting-background-color-or-wpf-4-0-listbox-windows-8/#16820062-->
<ListBox.ItemContainerStyle>
<Style TargetType="{x:Type ListBoxItem}">
<EventSetter Event="MouseEnter" Handler="OnMouseEnter" />
<EventSetter Event="MouseMove" Handler="OnMouseMove" />
<Setter Property="Height" Value="50" />
<Setter Property="Margin" Value="0" />
<Setter Property="Padding" Value="0" />
<Setter Property="BorderThickness" Value="0" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type ListBoxItem}">
<Border x:Name="Bd"
Background="{TemplateBinding Background}"
BorderBrush="{TemplateBinding BorderBrush}"
SnapsToDevicePixels="True">
<ContentPresenter HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
VerticalAlignment="{TemplateBinding VerticalContentAlignment}"
Content="{TemplateBinding Content}"
ContentStringFormat="{TemplateBinding ContentStringFormat}"
ContentTemplate="{TemplateBinding ContentTemplate}"
SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" />
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsSelected" Value="True">
<Setter TargetName="Bd" Property="Background"
Value="{DynamicResource ItemSelectedBackgroundColor}" />
<Setter TargetName="Bd" Property="BorderBrush"
Value="{DynamicResource ItemSelectedBackgroundColor}" />
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</ListBox.ItemContainerStyle>
</ListBox>

View File

@@ -0,0 +1,48 @@
using System.Windows;
using System.Windows.Controls;
using System.Windows.Input;
namespace Wox
{
public partial class ResultListBox
{
private Point _lastpos;
private ListBoxItem curItem = null;
public ResultListBox()
{
InitializeComponent();
}
private void OnSelectionChanged(object sender, SelectionChangedEventArgs e)
{
if (e.AddedItems.Count > 0 && e.AddedItems[0] != null)
{
ScrollIntoView(e.AddedItems[0]);
}
}
private void OnMouseEnter(object sender, MouseEventArgs e)
{
curItem = (ListBoxItem)sender;
var p = e.GetPosition((IInputElement)sender);
_lastpos = p;
}
private void OnMouseMove(object sender, MouseEventArgs e)
{
var p = e.GetPosition((IInputElement)sender);
if (_lastpos != p)
{
((ListBoxItem)sender).IsSelected = true;
}
}
private void ListBox_PreviewMouseDown(object sender, MouseButtonEventArgs e)
{
if (curItem != null)
{
curItem.IsSelected = true;
}
}
}
}

View File

@@ -0,0 +1,28 @@
namespace Wox.Properties {
// This class allows you to handle specific events on the settings class:
// The SettingChanging event is raised before a setting's value is changed.
// The PropertyChanged event is raised after a setting's value is changed.
// The SettingsLoaded event is raised after the setting values are loaded.
// The SettingsSaving event is raised before the setting values are saved.
internal sealed partial class Settings {
public Settings() {
// // To add event handlers for saving and changing settings, uncomment the lines below:
//
// this.SettingChanging += this.SettingChangingEventHandler;
//
// this.SettingsSaving += this.SettingsSavingEventHandler;
//
}
private void SettingChangingEventHandler(object sender, System.Configuration.SettingChangingEventArgs e) {
// Add code to handle the SettingChangingEvent event here.
}
private void SettingsSavingEventHandler(object sender, System.ComponentModel.CancelEventArgs e) {
// Add code to handle the SettingsSaving event here.
}
}
}

View File

@@ -0,0 +1,45 @@
using System;
namespace Wox.Storage
{
public class HistoryItem
{
public string Query { get; set; }
public DateTime ExecutedDateTime { get; set; }
public string GetTimeAgo()
{
return DateTimeAgo(ExecutedDateTime);
}
private string DateTimeAgo(DateTime dt)
{
var span = DateTime.Now - dt;
if (span.Days > 365)
{
int years = (span.Days / 365);
if (span.Days % 365 != 0)
years += 1;
return $"about {years} {(years == 1 ? "year" : "years")} ago";
}
if (span.Days > 30)
{
int months = (span.Days / 30);
if (span.Days % 31 != 0)
months += 1;
return $"about {months} {(months == 1 ? "month" : "months")} ago";
}
if (span.Days > 0)
return $"about {span.Days} {(span.Days == 1 ? "day" : "days")} ago";
if (span.Hours > 0)
return $"about {span.Hours} {(span.Hours == 1 ? "hour" : "hours")} ago";
if (span.Minutes > 0)
return $"about {span.Minutes} {(span.Minutes == 1 ? "minute" : "minutes")} ago";
if (span.Seconds > 5)
return $"about {span.Seconds} seconds ago";
if (span.Seconds <= 5)
return "just now";
return string.Empty;
}
}
}

View File

@@ -0,0 +1,37 @@
using System;
using System.Collections.Generic;
using System.Linq;
using Newtonsoft.Json;
using Wox.Plugin;
namespace Wox.Storage
{
public class History
{
public List<HistoryItem> Items { get; set; } = new List<HistoryItem>();
private int _maxHistory = 300;
public void Add(string query)
{
if (string.IsNullOrEmpty(query)) return;
if (Items.Count > _maxHistory)
{
Items.RemoveAt(0);
}
if (Items.Count > 0 && Items.Last().Query == query)
{
Items.Last().ExecutedDateTime = DateTime.Now;
}
else
{
Items.Add(new HistoryItem
{
Query = query,
ExecutedDateTime = DateTime.Now
});
}
}
}
}

View File

@@ -0,0 +1,58 @@
using System.Collections.Generic;
using System.Linq;
using Newtonsoft.Json;
using Wox.Plugin;
namespace Wox.Storage
{
// todo this class is not thread safe.... but used from multiple threads.
public class TopMostRecord
{
[JsonProperty]
private Dictionary<string, Record> records = new Dictionary<string, Record>();
internal bool IsTopMost(Result result)
{
if (records.Count == 0)
{
return false;
}
// since this dictionary should be very small (or empty) going over it should be pretty fast.
return records.Any(o => o.Value.Title == result.Title
&& o.Value.SubTitle == result.SubTitle
&& o.Value.PluginID == result.PluginID
&& o.Key == result.OriginQuery.RawQuery);
}
internal void Remove(Result result)
{
records.Remove(result.OriginQuery.RawQuery);
}
internal void AddOrUpdate(Result result)
{
var record = new Record
{
PluginID = result.PluginID,
Title = result.Title,
SubTitle = result.SubTitle
};
records[result.OriginQuery.RawQuery] = record;
}
public void Load(Dictionary<string, Record> dictionary)
{
records = dictionary;
}
}
public class Record
{
public string Title { get; set; }
public string SubTitle { get; set; }
public string PluginID { get; set; }
}
}

View File

@@ -0,0 +1,36 @@
using System.Collections.Generic;
using Newtonsoft.Json;
using Wox.Infrastructure.Storage;
using Wox.Plugin;
namespace Wox.Storage
{
public class UserSelectedRecord
{
[JsonProperty]
private Dictionary<string, int> records = new Dictionary<string, int>();
public void Add(Result result)
{
var key = result.ToString();
if (records.TryGetValue(key, out int value))
{
records[key] = value + 1;
}
else
{
records.Add(key, 1);
}
}
public int GetSelectedCount(Result result)
{
if (records.TryGetValue(result.ToString(), out int value))
{
return value;
}
return 0;
}
}
}

View File

@@ -0,0 +1,141 @@
<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">
<Style x:Key="BaseQueryBoxStyle" TargetType="{x:Type TextBox}">
<Setter Property="BorderThickness" Value="0" />
<Setter Property="FontSize" Value="28" />
<Setter Property="FontWeight" Value="Medium" />
<Setter Property="Height" Value="46" />
<Setter Property="Background" Value="#616161" />
<Setter Property="Foreground" Value="#E3E0E3" />
<Setter Property="VerticalContentAlignment" Value="Center" />
<Setter Property="Stylus.IsFlicksEnabled" Value="False" />
</Style>
<Style x:Key="BaseWindowBorderStyle" TargetType="{x:Type Border}">
<Setter Property="BorderThickness" Value="0" />
<Setter Property="CornerRadius" Value="0" />
<Setter Property="Background" Value="#424242"></Setter>
<Setter Property="Padding" Value="8 10 8 8" />
</Style>
<Style x:Key="BaseWindowStyle" TargetType="{x:Type Window}">
<Setter Property="Width" Value="800" />
<Setter Property="MaxWidth" Value="800" />
</Style>
<Style x:Key="BasePendingLineStyle" TargetType="{x:Type Line}">
<Setter Property="Stroke" Value="Blue" />
</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" />
</Style>
<Style x:Key="BaseItemSubTitleStyle" TargetType="{x:Type TextBlock}" >
<Setter Property="Foreground" Value="#D9D9D4" />
</Style>
<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="FontSize" Value="22" />
</Style>
<Style x:Key="BaseItemTitleSelectedStyle" TargetType="{x:Type TextBlock}" >
<Setter Property="Foreground" Value="#FFFFF8" />
<Setter Property="FontSize" Value="16" />
<Setter Property="FontWeight" Value="Medium" />
</Style>
<Style x:Key="BaseItemSubTitleSelectedStyle" TargetType="{x:Type TextBlock}" >
<Setter Property="Foreground" Value="#D9D9D4" />
</Style>
<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="Template">
<Setter.Value>
<ControlTemplate TargetType="ListBox">
<ScrollViewer Focusable="false" Template="{DynamicResource ScrollViewerControlTemplate}">
<VirtualizingStackPanel IsItemsHost="True" />
</ScrollViewer>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<!-- ScrollViewer Style -->
<ControlTemplate x:Key="ScrollViewerControlTemplate" TargetType="{x:Type ScrollViewer}">
<Grid x:Name="Grid" Background="{TemplateBinding Background}">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<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="{TemplateBinding Padding}"
Grid.Row="0" />
<!--Scrollbar in thr rigth of ScrollViewer-->
<ScrollBar x:Name="PART_VerticalScrollBar"
AutomationProperties.AutomationId="VerticalScrollBar"
Cursor="Arrow"
Grid.Column="1"
Margin="3 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}" />
</Grid>
</ControlTemplate>
<!-- 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="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type Thumb}">
<Border CornerRadius="2" DockPanel.Dock="Right" Background="#616161" BorderBrush="Transparent" BorderThickness="0" />
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<Style x:Key="BaseScrollBarStyle" TargetType="{x:Type ScrollBar}">
<Setter Property="Stylus.IsPressAndHoldEnabled" Value="false" />
<Setter Property="Stylus.IsFlicksEnabled" Value="false" />
<!-- 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.Thumb>
<Thumb Style="{DynamicResource ThumbStyle}"/>
</Track.Thumb>
</Track>
</DockPanel>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</ResourceDictionary>

View File

@@ -0,0 +1 @@
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> <ResourceDictionary.MergedDictionaries> <ResourceDictionary Source="Base.xaml"></ResourceDictionary> </ResourceDictionary.MergedDictionaries> <Style x:Key="QueryBoxStyle" BasedOn="{StaticResource BaseQueryBoxStyle}" TargetType="{x:Type TextBox}"> <Setter Property="Background" Value="#000000"/> <Setter Property="Foreground" Value="#ffffff" /> </Style> <Style x:Key="WindowBorderStyle" BasedOn="{StaticResource BaseWindowBorderStyle}" TargetType="{x:Type Border}"> <Setter Property="Background" Value="#000000"></Setter> </Style> <Style x:Key="WindowStyle" TargetType="{x:Type Window}" BasedOn="{StaticResource BaseWindowStyle}" > </Style> <Style x:Key="PendingLineStyle" BasedOn="{StaticResource BasePendingLineStyle}" TargetType="{x:Type Line}" > </Style> <Style x:Key="ItemTitleStyle" BasedOn="{StaticResource BaseItemTitleStyle}" TargetType="{x:Type TextBlock}" > <Setter Property="Foreground" Value="#FFFFF8"></Setter> </Style> <Style x:Key="ItemSubTitleStyle" BasedOn="{StaticResource BaseItemSubTitleStyle}" TargetType="{x:Type TextBlock}" > <Setter Property="Foreground" Value="#D9D9D4"></Setter> </Style> <Style x:Key="ItemTitleSelectedStyle" BasedOn="{StaticResource BaseItemTitleSelectedStyle}" TargetType="{x:Type TextBlock}"> <Setter Property="Foreground" Value="#FFFFF8" /> </Style> <Style x:Key="ItemSubTitleSelectedStyle" BasedOn="{StaticResource BaseItemSubTitleSelectedStyle}" TargetType="{x:Type TextBlock}"> <Setter Property="Foreground" Value="#D9D9D4" /> </Style> <SolidColorBrush x:Key="ItemSelectedBackgroundColor">#4F6180</SolidColorBrush> <Style x:Key="ThumbStyle" BasedOn="{StaticResource BaseThumbStyle}" TargetType="{x:Type Thumb}"> </Style> <Style x:Key="ScrollBarStyle" BasedOn="{StaticResource BaseScrollBarStyle}" TargetType="{x:Type ScrollBar}"> </Style> </ResourceDictionary>

View File

@@ -0,0 +1,58 @@
<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">
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="pack://application:,,,/Themes/Base.xaml" />
</ResourceDictionary.MergedDictionaries>
<system:Boolean x:Key="ThemeBlurEnabled">True</system:Boolean>
<Style x:Key="QueryBoxStyle" BasedOn="{StaticResource BaseQueryBoxStyle}" TargetType="{x:Type TextBox}">
<Setter Property="Foreground" Value="#FFFFFFFF" />
<Setter Property="Background" Value="#01000001" />
</Style>
<Style x:Key="WindowBorderStyle" BasedOn="{StaticResource BaseWindowBorderStyle}" TargetType="{x:Type Border}">
<Setter Property="Background">
<Setter.Value>
<SolidColorBrush Color="Black" Opacity="0.3"/>
</Setter.Value>
</Setter>
</Style>
<Style x:Key="WindowStyle" BasedOn="{StaticResource BaseWindowStyle}" TargetType="{x:Type Window}">
<Setter Property="Background">
<Setter.Value>
<SolidColorBrush Color="Black" Opacity="0.3"/>
</Setter.Value>
</Setter>
</Style>
<Style x:Key="PendingLineStyle" BasedOn="{StaticResource BasePendingLineStyle}" TargetType="{x:Type Line}">
</Style>
<!-- Item Style -->
<Style x:Key="ItemTitleStyle" BasedOn="{StaticResource BaseItemTitleStyle}" TargetType="{x:Type TextBlock}">
<Setter Property="Margin" Value="0, -10"/>
<Setter Property="Foreground" Value="#FFFFFFFF"/>
</Style>
<Style x:Key="ItemSubTitleStyle" BasedOn="{StaticResource BaseItemSubTitleStyle}" TargetType="{x:Type TextBlock}" >
<Setter Property="Foreground" Value="#FFFFFFFF"/>
</Style>
<Style x:Key="ItemTitleSelectedStyle" BasedOn="{StaticResource BaseItemTitleSelectedStyle}" TargetType="{x:Type TextBlock}" >
<Setter Property="Margin" Value="0, -10"/>
<Setter Property="Foreground" Value="#FFFFFFFF"/>
</Style>
<Style x:Key="ItemSubTitleSelectedStyle" BasedOn="{StaticResource BaseItemSubTitleSelectedStyle}" TargetType="{x:Type TextBlock}" >
<Setter Property="Foreground" Value="#FFFFFFFF"/>
</Style>
<SolidColorBrush x:Key="ItemSelectedBackgroundColor">#356ef3</SolidColorBrush>
<!-- button style in the middle of the scrollbar -->
<Style x:Key="ThumbStyle" BasedOn="{StaticResource BaseThumbStyle}" TargetType="{x:Type Thumb}">
</Style>
<Style x:Key="ScrollBarStyle" BasedOn="{StaticResource BaseScrollBarStyle}" TargetType="{x:Type ScrollBar}">
<Setter Property="Background" Value="#a0a0a0"/>
</Style>
</ResourceDictionary>

View File

@@ -0,0 +1,58 @@
<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">
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="pack://application:,,,/Themes/Base.xaml" />
</ResourceDictionary.MergedDictionaries>
<system:Boolean x:Key="ThemeBlurEnabled">True</system:Boolean>
<Style x:Key="QueryBoxStyle" BasedOn="{StaticResource BaseQueryBoxStyle}" TargetType="{x:Type TextBox}">
<Setter Property="Foreground" Value="#FF000000" />
<Setter Property="Background" Value="#01FFFFFF" />
</Style>
<Style x:Key="WindowBorderStyle" BasedOn="{StaticResource BaseWindowBorderStyle}" TargetType="{x:Type Border}">
<Setter Property="Background">
<Setter.Value>
<SolidColorBrush Color="White" Opacity="0.1"/>
</Setter.Value>
</Setter>
</Style>
<Style x:Key="WindowStyle" BasedOn="{StaticResource BaseWindowStyle}" TargetType="{x:Type Window}">
<Setter Property="Background">
<Setter.Value>
<SolidColorBrush Color="White" Opacity="0.1"/>
</Setter.Value>
</Setter>
</Style>
<Style x:Key="PendingLineStyle" BasedOn="{StaticResource BasePendingLineStyle}" TargetType="{x:Type Line}">
</Style>
<!-- Item Style -->
<Style x:Key="ItemTitleStyle" BasedOn="{StaticResource BaseItemTitleStyle}" TargetType="{x:Type TextBlock}">
<Setter Property="Margin" Value="0, -10"/>
<Setter Property="Foreground" Value="#FF000000"/>
</Style>
<Style x:Key="ItemSubTitleStyle" BasedOn="{StaticResource BaseItemSubTitleStyle}" TargetType="{x:Type TextBlock}" >
<Setter Property="Foreground" Value="#FF000000"/>
</Style>
<Style x:Key="ItemTitleSelectedStyle" BasedOn="{StaticResource BaseItemTitleSelectedStyle}" TargetType="{x:Type TextBlock}" >
<Setter Property="Margin" Value="0, -10"/>
<Setter Property="Foreground" Value="#FFFFFFFF"/>
</Style>
<Style x:Key="ItemSubTitleSelectedStyle" BasedOn="{StaticResource BaseItemSubTitleSelectedStyle}" TargetType="{x:Type TextBlock}" >
<Setter Property="Foreground" Value="#FFFFFFFF"/>
</Style>
<SolidColorBrush x:Key="ItemSelectedBackgroundColor">#356ef3</SolidColorBrush>
<!-- button style in the middle of the scrollbar -->
<Style x:Key="ThumbStyle" BasedOn="{StaticResource BaseThumbStyle}" TargetType="{x:Type Thumb}">
</Style>
<Style x:Key="ScrollBarStyle" BasedOn="{StaticResource BaseScrollBarStyle}" TargetType="{x:Type ScrollBar}">
<Setter Property="Background" Value="#a0a0a0"/>
</Style>
</ResourceDictionary>

View File

@@ -0,0 +1,40 @@
<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">
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="pack://application:,,,/Themes/Base.xaml" />
</ResourceDictionary.MergedDictionaries>
<Style x:Key="QueryBoxStyle" BasedOn="{StaticResource BaseQueryBoxStyle}" TargetType="{x:Type TextBox}">
</Style>
<Style x:Key="WindowBorderStyle" BasedOn="{StaticResource BaseWindowBorderStyle}" TargetType="{x:Type Border}">
</Style>
<Style x:Key="WindowStyle" BasedOn="{StaticResource BaseWindowStyle}" TargetType="{x:Type Window}">
</Style>
<Style x:Key="PendingLineStyle" BasedOn="{StaticResource BasePendingLineStyle}" TargetType="{x:Type Line}">
</Style>
<!-- Item Style -->
<Style x:Key="ItemTitleStyle" BasedOn="{StaticResource BaseItemTitleStyle}" TargetType="{x:Type TextBlock}">
</Style>
<Style x:Key="ItemSubTitleStyle" BasedOn="{StaticResource BaseItemSubTitleStyle}" TargetType="{x:Type TextBlock}" >
</Style>
<Style x:Key="ItemTitleSelectedStyle" BasedOn="{StaticResource BaseItemTitleSelectedStyle}" TargetType="{x:Type TextBlock}" >
</Style>
<Style x:Key="ItemSubTitleSelectedStyle" BasedOn="{StaticResource BaseItemSubTitleSelectedStyle}" TargetType="{x:Type TextBlock}" >
</Style>
<SolidColorBrush x:Key="ItemSelectedBackgroundColor">#4F6180</SolidColorBrush>
<!-- button style in the middle of the scrollbar -->
<Style x:Key="ThumbStyle" BasedOn="{StaticResource BaseThumbStyle}" TargetType="{x:Type Thumb}">
</Style>
<Style x:Key="ScrollBarStyle" BasedOn="{StaticResource BaseScrollBarStyle}" TargetType="{x:Type ScrollBar}">
</Style>
</ResourceDictionary>

View File

@@ -0,0 +1,49 @@
<?xml version="1.0" encoding="UTF-8"?>
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="pack://application:,,,/Themes/Base.xaml" />
</ResourceDictionary.MergedDictionaries>
<Style x:Key="QueryBoxStyle" BasedOn="{StaticResource BaseQueryBoxStyle}" TargetType="{x:Type TextBox}">
<Setter Property="Background" Value="#EDEDED" />
<Setter Property="Foreground" Value="#222222" />
<Setter Property="FontSize" Value="38" />
</Style>
<Style x:Key="WindowBorderStyle" BasedOn="{StaticResource BaseWindowBorderStyle}" TargetType="{x:Type Border}">
<Setter Property="BorderBrush" Value="#B0B0B0" />
<Setter Property="BorderThickness" Value="1" />
<Setter Property="Background" Value="#EDEDED"></Setter>
</Style>
<Style x:Key="WindowStyle" TargetType="{x:Type Window}" BasedOn="{StaticResource BaseWindowStyle}" >
</Style>
<Style x:Key="PendingLineStyle" BasedOn="{StaticResource BasePendingLineStyle}" TargetType="{x:Type Line}" />
<Style x:Key="ItemTitleStyle" BasedOn="{StaticResource BaseItemTitleStyle}" TargetType="{x:Type TextBlock}">
<Setter Property="Foreground" Value="#333333" />
<Setter Property="FontWeight" Value="Bold" />
</Style>
<Style x:Key="ItemNumberStyle" BasedOn="{StaticResource BaseItemNumberStyle}" TargetType="{x:Type TextBlock}">
<Setter Property="Foreground" Value="#A6A6A6" />
</Style>
<Style x:Key="ItemSubTitleStyle" BasedOn="{StaticResource BaseItemSubTitleStyle}" TargetType="{x:Type TextBlock}">
<Setter Property="Foreground" Value="#A6A6A6" />
</Style>
<Style x:Key="ItemTitleSelectedStyle" BasedOn="{StaticResource BaseItemTitleSelectedStyle}" TargetType="{x:Type TextBlock}">
<Setter Property="Foreground" Value="#FFFFF8" />
</Style>
<Style x:Key="ItemSubTitleSelectedStyle" BasedOn="{StaticResource BaseItemSubTitleSelectedStyle}" TargetType="{x:Type TextBlock}">
<Setter Property="Foreground" Value="#ffffff" />
</Style>
<SolidColorBrush x:Key="ItemSelectedBackgroundColor">#00AAF6</SolidColorBrush>
<Style x:Key="ThumbStyle" BasedOn="{StaticResource BaseThumbStyle}" TargetType="{x:Type Thumb}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type Thumb}">
<Border CornerRadius="2" DockPanel.Dock="Right" Background="#DBDADB" BorderBrush="Transparent" BorderThickness="0" />
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<Style x:Key="ScrollBarStyle" BasedOn="{StaticResource BaseScrollBarStyle}" TargetType="{x:Type ScrollBar}" >
<Setter Property="Width" Value="3"/>
</Style>
</ResourceDictionary>

View File

@@ -0,0 +1,50 @@
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="pack://application:,,,/Themes/Base.xaml"></ResourceDictionary>
</ResourceDictionary.MergedDictionaries>
<Style x:Key="QueryBoxStyle" BasedOn="{StaticResource BaseQueryBoxStyle}" TargetType="{x:Type TextBox}">
<Setter Property="Background" Value="#EBEBEB"/>
<Setter Property="Foreground" Value="#000000" />
</Style>
<Style x:Key="WindowBorderStyle" BasedOn="{StaticResource BaseWindowBorderStyle}" TargetType="{x:Type Border}">
<Setter Property="BorderBrush" Value="#AAAAAA" />
<Setter Property="BorderThickness" Value="5" />
<Setter Property="Background" Value="#ffffff"></Setter>
</Style>
<Style x:Key="WindowStyle" TargetType="{x:Type Window}" BasedOn="{StaticResource BaseWindowStyle}" >
</Style>
<Style x:Key="PendingLineStyle" BasedOn="{StaticResource BasePendingLineStyle}" TargetType="{x:Type Line}" >
</Style>
<!-- Item Style -->
<Style x:Key="ItemTitleStyle" BasedOn="{StaticResource BaseItemTitleStyle}" TargetType="{x:Type TextBlock}" >
<Setter Property="Foreground" Value="#000000"></Setter>
</Style>
<Style x:Key="ItemSubTitleStyle" BasedOn="{StaticResource BaseItemSubTitleStyle}" TargetType="{x:Type TextBlock}" >
<Setter Property="Foreground" Value="#000000"></Setter>
</Style>
<Style x:Key="ItemTitleSelectedStyle" BasedOn="{StaticResource BaseItemTitleSelectedStyle}" TargetType="{x:Type TextBlock}">
<Setter Property="Foreground" Value="#F6F6FF" />
</Style>
<Style x:Key="ItemSubTitleSelectedStyle" BasedOn="{StaticResource BaseItemSubTitleSelectedStyle}" TargetType="{x:Type TextBlock}">
<Setter Property="Foreground" Value="#F6F6FF" />
</Style>
<SolidColorBrush x:Key="ItemSelectedBackgroundColor">#3875D7</SolidColorBrush>
<!-- button style in the middle of the scrollbar -->
<Style x:Key="ThumbStyle" BasedOn="{StaticResource BaseThumbStyle}" TargetType="{x:Type Thumb}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type Thumb}">
<Border CornerRadius="2" DockPanel.Dock="Right" Background="#DEDEDE" BorderBrush="Transparent" BorderThickness="0" />
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<Style x:Key="ScrollBarStyle" BasedOn="{StaticResource BaseScrollBarStyle}" TargetType="{x:Type ScrollBar}">
</Style>
</ResourceDictionary>

View File

@@ -0,0 +1,33 @@
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="pack://application:,,,/Themes/Base.xaml"></ResourceDictionary>
</ResourceDictionary.MergedDictionaries>
<Style x:Key="QueryBoxStyle" BasedOn="{StaticResource BaseQueryBoxStyle}" TargetType="{x:Type TextBox}">
<Setter Property="Background" Value="#ffffff"/>
<Setter Property="Foreground" Value="#000000" />
</Style>
<Style x:Key="WindowBorderStyle" BasedOn="{StaticResource BaseWindowBorderStyle}" TargetType="{x:Type Border}">
<Setter Property="Background" Value="#001e4e"></Setter>
</Style>
<Style x:Key="WindowStyle" TargetType="{x:Type Window}" BasedOn="{StaticResource BaseWindowStyle}" >
</Style>
<Style x:Key="PendingLineStyle" BasedOn="{StaticResource BasePendingLineStyle}" TargetType="{x:Type Line}" >
</Style>
<Style x:Key="ItemTitleStyle" BasedOn="{StaticResource BaseItemTitleStyle}" TargetType="{x:Type TextBlock}" >
<Setter Property="Foreground" Value="#f5f5f5"></Setter>
</Style>
<Style x:Key="ItemSubTitleStyle" BasedOn="{StaticResource BaseItemSubTitleStyle}" TargetType="{x:Type TextBlock}" >
<Setter Property="Foreground" Value="#c2c2c2"></Setter>
</Style>
<Style x:Key="ItemTitleSelectedStyle" BasedOn="{StaticResource BaseItemTitleSelectedStyle}" TargetType="{x:Type TextBlock}">
<Setter Property="Foreground" Value="#f5f5f5" />
</Style>
<Style x:Key="ItemSubTitleSelectedStyle" BasedOn="{StaticResource BaseItemSubTitleSelectedStyle}" TargetType="{x:Type TextBlock}">
<Setter Property="Foreground" Value="#c2c2c2" />
</Style>
<SolidColorBrush x:Key="ItemSelectedBackgroundColor">#006ac1</SolidColorBrush>
<Style x:Key="ThumbStyle" BasedOn="{StaticResource BaseThumbStyle}" TargetType="{x:Type Thumb}">
</Style>
<Style x:Key="ScrollBarStyle" BasedOn="{StaticResource BaseScrollBarStyle}" TargetType="{x:Type ScrollBar}">
</Style>
</ResourceDictionary>

View File

@@ -0,0 +1,30 @@
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="pack://application:,,,/Themes/Base.xaml"></ResourceDictionary>
</ResourceDictionary.MergedDictionaries>
<Style x:Key="QueryBoxStyle" BasedOn="{StaticResource BaseQueryBoxStyle}" TargetType="{x:Type TextBox}">
<Setter Property="Background" Value="#1f1d1f"/>
<Setter Property="Foreground" Value="#cc1081" />
</Style>
<Style x:Key="WindowBorderStyle" BasedOn="{StaticResource BaseWindowBorderStyle}" TargetType="{x:Type Border}">
<Setter Property="Background" Value="#1f1d1f"></Setter>
</Style>
<Style x:Key="WindowStyle" TargetType="{x:Type Window}" BasedOn="{StaticResource BaseWindowStyle}" >
</Style>
<Style x:Key="PendingLineStyle" BasedOn="{StaticResource BasePendingLineStyle}" TargetType="{x:Type Line}" ></Style>
<Style x:Key="ItemTitleStyle" BasedOn="{StaticResource BaseItemTitleStyle}" TargetType="{x:Type TextBlock}" >
<Setter Property="Foreground" Value="#f5f5f5"></Setter>
</Style>
<Style x:Key="ItemSubTitleStyle" BasedOn="{StaticResource BaseItemSubTitleStyle}" TargetType="{x:Type TextBlock}" >
<Setter Property="Foreground" Value="#c2c2c2"></Setter>
</Style>
<Style x:Key="ItemTitleSelectedStyle" BasedOn="{StaticResource BaseItemTitleSelectedStyle}" TargetType="{x:Type TextBlock}">
<Setter Property="Foreground" Value="#f5f5f5" />
</Style>
<Style x:Key="ItemSubTitleSelectedStyle" BasedOn="{StaticResource BaseItemSubTitleSelectedStyle}" TargetType="{x:Type TextBlock}">
<Setter Property="Foreground" Value="#c2c2c2" />
</Style>
<SolidColorBrush x:Key="ItemSelectedBackgroundColor">#cc1081</SolidColorBrush>
<Style x:Key="ThumbStyle" BasedOn="{StaticResource BaseThumbStyle}" TargetType="{x:Type Thumb}"></Style>
<Style x:Key="ScrollBarStyle" BasedOn="{StaticResource BaseScrollBarStyle}" TargetType="{x:Type ScrollBar}"></Style>
</ResourceDictionary>

View File

@@ -0,0 +1,52 @@
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="Base.xaml"></ResourceDictionary>
</ResourceDictionary.MergedDictionaries>
<Style x:Key="QueryBoxStyle" BasedOn="{StaticResource BaseQueryBoxStyle}" TargetType="{x:Type TextBox}">
<Setter Property="Background" Value="{%searchFieldBackgroundColor%}"/>
<Setter Property="Foreground" Value="{%searchFieldTextColor%}" />
</Style>
<Style x:Key="WindowBorderStyle" BasedOn="{StaticResource BaseWindowBorderStyle}" TargetType="{x:Type Border}">
<Setter Property="Background" Value="{%backgroundColor%}"></Setter>
<Setter Property="CornerRadius" Value="8" />
<Setter Property="BorderBrush" Value="{%borderColor%}" />
<Setter Property="BorderThickness" Value="10" />
</Style>
<Style x:Key="WindowStyle" TargetType="{x:Type Window}" BasedOn="{StaticResource BaseWindowStyle}" >
<Setter Property="Width" Value="520"></Setter>
</Style>
<Style x:Key="PendingLineStyle" BasedOn="{StaticResource BasePendingLineStyle}" TargetType="{x:Type Line}" >
</Style>
<!-- Item Style -->
<Style x:Key="ItemTitleStyle" BasedOn="{StaticResource BaseItemTitleStyle}" TargetType="{x:Type TextBlock}" >
<Setter Property="Foreground" Value="{%resultTextColor%}"></Setter>
</Style>
<Style x:Key="ItemSubTitleStyle" BasedOn="{StaticResource BaseItemSubTitleStyle}" TargetType="{x:Type TextBlock}" >
<Setter Property="Foreground" Value="{%resultSubtextColor%}"></Setter>
</Style>
<Style x:Key="ItemTitleSelectedStyle" BasedOn="{StaticResource BaseItemTitleSelectedStyle}" TargetType="{x:Type TextBlock}">
<Setter Property="Foreground" Value="{%selectedResultForeground%}" />
</Style>
<Style x:Key="ItemSubTitleSelectedStyle" BasedOn="{StaticResource BaseItemSubTitleSelectedStyle}" TargetType="{x:Type TextBlock}">
<Setter Property="Foreground" Value="{%selectedSubtextForeground%}" />
</Style>
<Color x:Key="ItemSelectedBackgroundColor">{%selectedResultBackgroundColor%}</Color>
<!-- button style in the middle of the scrollbar -->
<Style x:Key="ThumbStyle" BasedOn="{StaticResource BaseThumbStyle}" TargetType="{x:Type Thumb}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type Thumb}">
<Border CornerRadius="2" DockPanel.Dock="Right" Background="{%scrollbarColor%}" BorderBrush="Transparent" BorderThickness="0" />
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<Style x:Key="ScrollBarStyle" BasedOn="{StaticResource BaseScrollBarStyle}" TargetType="{x:Type ScrollBar}">
</Style>
</ResourceDictionary>

View File

@@ -0,0 +1,26 @@
import os,plistlib
def convert(path,templatePath):
pl = plistlib.readPlist(path)
with open(templatePath, 'r') as content_file:
template = content_file.read()
for key in pl:
if "rgba" in pl[key]:
template = template.replace("{%"+key+"%}",tohex(pl[key].replace("rgba","rgb")))
f = open(path.replace(".alfredtheme",".xaml"),'w')
f.write(template)
f.close()
def tohex(string):
string = string[4:]
split = string.split(",")
split[2] = ''.join(split[2].split(")")[0])
r = int(split[0])
g = int(split[1])
b = int(split[2])
tu = (r, g, b)
return '#%02x%02x%02x' % tu
#print tohex("rgb(255,255,255,0.50)")
print convert("Night.alfredtheme","Light.xaml")

View File

@@ -0,0 +1,65 @@
// code block is from
// unblocking https://github.com/Squirrel/Squirrel.Windows/blob/master/src/Squirrel/UpdateManager.cs
// https://github.com/Squirrel/Squirrel.Windows/blob/develop/COPYING
// license is MIT
using System;
using System.Diagnostics;
using System.IO;
using System.Reflection;
using System.Threading;
namespace Squirrel
{
public sealed partial class UpdateManager
{
public static void RestartApp(string exeToStart = null, string arguments = null)
{
// NB: Here's how this method works:
//
// 1. We're going to pass the *name* of our EXE and the params to
// Update.exe
// 2. Update.exe is going to grab our PID (via getting its parent),
// then wait for us to exit.
// 3. We exit cleanly, dropping any single-instance mutexes or
// whatever.
// 4. Update.exe unblocks, then we launch the app again, possibly
// launching a different version than we started with (this is why
// we take the app's *name* rather than a full path)
exeToStart = exeToStart ?? Path.GetFileName(Assembly.GetEntryAssembly().Location);
var argsArg = arguments != null ?
string.Format("-a \"{0}\"", arguments) : "";
Process.Start(getUpdateExe(), string.Format("--processStartAndWait {0} {1}", exeToStart, argsArg));
// NB: We have to give update.exe some time to grab our PID, but
// we can't use WaitForInputIdle because we probably don't have
// whatever WaitForInputIdle considers a message loop.
Thread.Sleep(500);
Environment.Exit(0);
}
static string getUpdateExe()
{
var assembly = Assembly.GetEntryAssembly();
// Are we update.exe?
if (assembly != null &&
Path.GetFileName(assembly.Location).Equals("update.exe", StringComparison.OrdinalIgnoreCase) &&
assembly.Location.IndexOf("app-", StringComparison.OrdinalIgnoreCase) == -1 &&
assembly.Location.IndexOf("SquirrelTemp", StringComparison.OrdinalIgnoreCase) == -1)
{
return Path.GetFullPath(assembly.Location);
}
assembly = Assembly.GetEntryAssembly() ?? Assembly.GetExecutingAssembly();
var updateDotExe = Path.Combine(Path.GetDirectoryName(assembly.Location), "..\\Update.exe");
var target = new FileInfo(updateDotExe);
if (!target.Exists) throw new Exception("Update.exe not found, not a Squirrel-installed app?");
return target.FullName;
}
}
}

View File

@@ -0,0 +1,17 @@
using System.Drawing;
using System.Windows.Input;
using Wox.Plugin;
namespace Wox.ViewModel
{
public class ContextMenuItemViewModel : BaseModel
{
public string Title { get; set; }
public string Glyph { get; set; }
public string FontFamily { get; set; }
public ICommand Command { get; set; }
public string AcceleratorKey { get; set; }
public string AcceleratorModifiers { get; set; }
public bool IsAcceleratorKeyEnabled { get; set; }
}
}

View File

@@ -0,0 +1,662 @@
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Input;
using System.Windows.Media;
using NHotkey;
using NHotkey.Wpf;
using Wox.Core.Plugin;
using Wox.Core.Resource;
using Wox.Helper;
using Wox.Infrastructure;
using Wox.Infrastructure.Hotkey;
using Wox.Infrastructure.Storage;
using Wox.Infrastructure.UserSettings;
using Wox.Plugin;
using Wox.Storage;
namespace Wox.ViewModel
{
public class MainViewModel : BaseModel, ISavable
{
#region Private Fields
private bool _isQueryRunning;
private Query _lastQuery;
private string _queryTextBeforeLeaveResults;
private readonly WoxJsonStorage<History> _historyItemsStorage;
private readonly WoxJsonStorage<UserSelectedRecord> _userSelectedRecordStorage;
private readonly WoxJsonStorage<TopMostRecord> _topMostRecordStorage;
private readonly Settings _settings;
private readonly History _history;
private readonly UserSelectedRecord _userSelectedRecord;
private readonly TopMostRecord _topMostRecord;
private CancellationTokenSource _updateSource;
private CancellationToken _updateToken;
private bool _saved;
private readonly Internationalization _translator = InternationalizationManager.Instance;
#endregion
#region Constructor
public MainViewModel(Settings settings)
{
_saved = false;
_queryTextBeforeLeaveResults = "";
_lastQuery = new Query();
_settings = settings;
_historyItemsStorage = new WoxJsonStorage<History>();
_userSelectedRecordStorage = new WoxJsonStorage<UserSelectedRecord>();
_topMostRecordStorage = new WoxJsonStorage<TopMostRecord>();
_history = _historyItemsStorage.Load();
_userSelectedRecord = _userSelectedRecordStorage.Load();
_topMostRecord = _topMostRecordStorage.Load();
ContextMenu = new ResultsViewModel(_settings);
Results = new ResultsViewModel(_settings);
History = new ResultsViewModel(_settings);
_selectedResults = Results;
InitializeKeyCommands();
RegisterResultsUpdatedEvent();
_settings.PropertyChanged += (s, e) =>
{
if (e.PropertyName == nameof(Settings.Hotkey))
{
Application.Current.Dispatcher.Invoke(() =>
{
if (_settings.PreviousHotkey != "")
{
RemoveHotkey(_settings.PreviousHotkey);
}
if (_settings.Hotkey != "")
{
SetHotkey(_settings.Hotkey, OnHotkey);
}
});
}
};
SetHotkey(_settings.Hotkey, OnHotkey);
SetCustomPluginHotkey();
}
private void RegisterResultsUpdatedEvent()
{
foreach (var pair in PluginManager.GetPluginsForInterface<IResultUpdated>())
{
var plugin = (IResultUpdated)pair.Plugin;
plugin.ResultsUpdated += (s, e) =>
{
Task.Run(() =>
{
PluginManager.UpdatePluginMetadata(e.Results, pair.Metadata, e.Query);
UpdateResultView(e.Results, pair.Metadata, e.Query);
}, _updateToken);
};
}
}
private void InitializeKeyCommands()
{
EscCommand = new RelayCommand(_ =>
{
if (!SelectedIsFromQueryResults())
{
SelectedResults = Results;
}
else
{
MainWindowVisibility = Visibility.Collapsed;
}
});
SelectNextItemCommand = new RelayCommand(_ =>
{
SelectedResults.SelectNextResult();
});
SelectPrevItemCommand = new RelayCommand(_ =>
{
SelectedResults.SelectPrevResult();
});
SelectNextTabItemCommand = new RelayCommand(_ =>
{
SelectedResults.SelectNextTabItem();
});
SelectPrevTabItemCommand = new RelayCommand(_ =>
{
SelectedResults.SelectPrevTabItem();
});
SelectNextPageCommand = new RelayCommand(_ =>
{
SelectedResults.SelectNextPage();
});
SelectPrevPageCommand = new RelayCommand(_ =>
{
SelectedResults.SelectPrevPage();
});
SelectFirstResultCommand = new RelayCommand(_ => SelectedResults.SelectFirstResult());
StartHelpCommand = new RelayCommand(_ =>
{
Process.Start("http://doc.wox.one/");
});
OpenResultCommand = new RelayCommand(index =>
{
var results = SelectedResults;
if (index != null)
{
results.SelectedIndex = int.Parse(index.ToString());
}
if(results.SelectedItem != null)
{
//If there is a context button selected fire the action for that button before the main command.
bool didExecuteContextButton = results.SelectedItem.ExecuteSelectedContextButton();
if (!didExecuteContextButton)
{
var result = results.SelectedItem.Result;
if (result != null && result.Action != null) // SelectedItem returns null if selection is empty.
{
MainWindowVisibility = Visibility.Collapsed;
Task.Run(() =>
{
result.Action(new ActionContext
{
SpecialKeyState = GlobalHotkey.Instance.CheckModifiers()
});
});
if (SelectedIsFromQueryResults())
{
_userSelectedRecord.Add(result);
_history.Add(result.OriginQuery.RawQuery);
}
else
{
SelectedResults = Results;
}
}
}
}
});
LoadContextMenuCommand = new RelayCommand(_ =>
{
if (SelectedIsFromQueryResults())
{
SelectedResults = ContextMenu;
}
else
{
SelectedResults = Results;
}
});
LoadHistoryCommand = new RelayCommand(_ =>
{
if (SelectedIsFromQueryResults())
{
SelectedResults = History;
History.SelectedIndex = _history.Items.Count - 1;
}
else
{
SelectedResults = Results;
}
});
}
#endregion
#region ViewModel Properties
public Brush MainWindowBackground { get; set; }
public Brush MainWindowBorderBrush { get; set; }
public ResultsViewModel Results { get; private set; }
public ResultsViewModel ContextMenu { get; private set; }
public ResultsViewModel History { get; private set; }
public string SystemQueryText { get; set; } = String.Empty;
public string QueryText { get; set; } = String.Empty;
/// <summary>
/// we need move cursor to end when we manually changed query
/// but we don't want to move cursor to end when query is updated from TextBox.
/// Also we don't want to force the results to change unless explicity told to.
/// </summary>
/// <param name="queryText"></param>
/// <param name="requery">Optional Parameter that if true, will automatically execute a query against the updated text</param>
public void ChangeQueryText(string queryText, bool requery=false)
{
SystemQueryText = queryText;
if(requery)
{
QueryText = queryText;
Query();
}
}
public bool LastQuerySelected { get; set; }
private ResultsViewModel _selectedResults;
private ResultsViewModel SelectedResults
{
get { return _selectedResults; }
set
{
_selectedResults = value;
if (SelectedIsFromQueryResults())
{
ContextMenu.Visbility = Visibility.Collapsed;
History.Visbility = Visibility.Collapsed;
ChangeQueryText(_queryTextBeforeLeaveResults);
}
else
{
Results.Visbility = Visibility.Collapsed;
_queryTextBeforeLeaveResults = QueryText;
// Because of Fody's optimization
// setter won't be called when property value is not changed.
// so we need manually call Query()
// http://stackoverflow.com/posts/25895769/revisions
if (string.IsNullOrEmpty(QueryText))
{
Query();
}
else
{
QueryText = string.Empty;
}
}
_selectedResults.Visbility = Visibility.Visible;
}
}
public Visibility ProgressBarVisibility { get; set; }
public Visibility MainWindowVisibility { get; set; }
public ICommand EscCommand { get; set; }
public ICommand SelectNextItemCommand { get; set; }
public ICommand SelectPrevItemCommand { get; set; }
public ICommand SelectNextTabItemCommand { get; set; }
public ICommand SelectPrevTabItemCommand { get; set; }
public ICommand SelectNextPageCommand { get; set; }
public ICommand SelectPrevPageCommand { get; set; }
public ICommand SelectFirstResultCommand { get; set; }
public ICommand StartHelpCommand { get; set; }
public ICommand LoadContextMenuCommand { get; set; }
public ICommand LoadHistoryCommand { get; set; }
public ICommand OpenResultCommand { get; set; }
#endregion
public void Query()
{
if (SelectedIsFromQueryResults())
{
QueryResults();
}
else if (HistorySelected())
{
QueryHistory();
}
}
private void QueryHistory()
{
const string id = "Query History ID";
var query = QueryText.ToLower().Trim();
History.Clear();
var results = new List<Result>();
foreach (var h in _history.Items)
{
var title = _translator.GetTranslation("executeQuery");
var time = _translator.GetTranslation("lastExecuteTime");
var result = new Result
{
Title = string.Format(title, h.Query),
SubTitle = string.Format(time, h.ExecutedDateTime),
IcoPath = "Images\\history.png",
OriginQuery = new Query { RawQuery = h.Query },
Action = _ =>
{
SelectedResults = Results;
ChangeQueryText(h.Query);
return false;
}
};
results.Add(result);
}
if (!string.IsNullOrEmpty(query))
{
var filtered = results.Where
(
r => StringMatcher.FuzzySearch(query, r.Title).IsSearchPrecisionScoreMet() ||
StringMatcher.FuzzySearch(query, r.SubTitle).IsSearchPrecisionScoreMet()
).ToList();
History.AddResults(filtered, id);
}
else
{
History.AddResults(results, id);
}
}
private void QueryResults()
{
if (!string.IsNullOrEmpty(QueryText))
{
_updateSource?.Cancel();
var currentUpdateSource = new CancellationTokenSource();
_updateSource = currentUpdateSource;
var currentCancellationToken = _updateSource.Token;
_updateToken = currentCancellationToken;
ProgressBarVisibility = Visibility.Hidden;
_isQueryRunning = true;
var query = QueryBuilder.Build(QueryText.Trim(), PluginManager.NonGlobalPlugins);
if (query != null)
{
// handle the exclusiveness of plugin using action keyword
RemoveOldQueryResults(query);
_lastQuery = query;
var plugins = PluginManager.ValidPluginsForQuery(query);
Task.Run(() =>
{
// so looping will stop once it was cancelled
var parallelOptions = new ParallelOptions { CancellationToken = currentCancellationToken };
try
{
Parallel.ForEach(plugins, parallelOptions, plugin =>
{
if (!plugin.Metadata.Disabled)
{
var results = PluginManager.QueryForPlugin(plugin, query);
if (Application.Current.Dispatcher.CheckAccess())
{
UpdateResultView(results, plugin.Metadata, query);
}
else
{
Application.Current.Dispatcher.BeginInvoke(new Action(() =>
{
UpdateResultView(results, plugin.Metadata, query);
}));
}
}
});
}
catch (OperationCanceledException)
{
// nothing to do here
}
// this should happen once after all queries are done so progress bar should continue
// until the end of all querying
_isQueryRunning = false;
if (currentUpdateSource == _updateSource)
{ // update to hidden if this is still the current query
ProgressBarVisibility = Visibility.Hidden;
}
}, currentCancellationToken);
}
}
else
{
Results.SelectedItem = null;
Results.Clear();
Results.Visbility = Visibility.Collapsed;
}
}
private void RemoveOldQueryResults(Query query)
{
string lastKeyword = _lastQuery.ActionKeyword;
string keyword = query.ActionKeyword;
if (string.IsNullOrEmpty(lastKeyword))
{
if (!string.IsNullOrEmpty(keyword))
{
Results.RemoveResultsExcept(PluginManager.NonGlobalPlugins[keyword].Metadata);
}
}
else
{
if (string.IsNullOrEmpty(keyword))
{
Results.RemoveResultsFor(PluginManager.NonGlobalPlugins[lastKeyword].Metadata);
}
else if (lastKeyword != keyword)
{
Results.RemoveResultsExcept(PluginManager.NonGlobalPlugins[keyword].Metadata);
}
}
}
private bool SelectedIsFromQueryResults()
{
var selected = SelectedResults == Results;
return selected;
}
private bool ContextMenuSelected()
{
var selected = SelectedResults == ContextMenu;
return selected;
}
private bool HistorySelected()
{
var selected = SelectedResults == History;
return selected;
}
#region Hotkey
private void SetHotkey(string hotkeyStr, EventHandler<HotkeyEventArgs> action)
{
var hotkey = new HotkeyModel(hotkeyStr);
SetHotkey(hotkey, action);
}
private void SetHotkey(HotkeyModel hotkey, EventHandler<HotkeyEventArgs> action)
{
string hotkeyStr = hotkey.ToString();
try
{
HotkeyManager.Current.AddOrReplace(hotkeyStr, hotkey.CharKey, hotkey.ModifierKeys, action);
}
catch (Exception)
{
string errorMsg =
string.Format(InternationalizationManager.Instance.GetTranslation("registerHotkeyFailed"), hotkeyStr);
MessageBox.Show(errorMsg);
}
}
public void RemoveHotkey(string hotkeyStr)
{
if (!string.IsNullOrEmpty(hotkeyStr))
{
HotkeyManager.Current.Remove(hotkeyStr);
}
}
/// <summary>
/// Checks if Wox should ignore any hotkeys
/// </summary>
/// <returns></returns>
private bool ShouldIgnoreHotkeys()
{
//double if to omit calling win32 function
if (_settings.IgnoreHotkeysOnFullscreen)
if (WindowsInteropHelper.IsWindowFullscreen())
return true;
return false;
}
private void SetCustomPluginHotkey()
{
if (_settings.CustomPluginHotkeys == null) return;
foreach (CustomPluginHotkey hotkey in _settings.CustomPluginHotkeys)
{
SetHotkey(hotkey.Hotkey, (s, e) =>
{
if (ShouldIgnoreHotkeys()) return;
MainWindowVisibility = Visibility.Visible;
ChangeQueryText(hotkey.ActionKeyword);
});
}
}
private void OnHotkey(object sender, HotkeyEventArgs e)
{
if (!ShouldIgnoreHotkeys())
{
if (_settings.LastQueryMode == LastQueryMode.Empty)
{
ChangeQueryText(string.Empty);
}
else if (_settings.LastQueryMode == LastQueryMode.Preserved)
{
LastQuerySelected = true;
}
else if (_settings.LastQueryMode == LastQueryMode.Selected)
{
LastQuerySelected = false;
}
else
{
throw new ArgumentException($"wrong LastQueryMode: <{_settings.LastQueryMode}>");
}
ToggleWox();
e.Handled = true;
}
}
private void ToggleWox()
{
if (MainWindowVisibility != Visibility.Visible)
{
MainWindowVisibility = Visibility.Visible;
}
else
{
MainWindowVisibility = Visibility.Collapsed;
}
}
#endregion
#region Public Methods
public void Save()
{
if (!_saved)
{
_historyItemsStorage.Save();
_userSelectedRecordStorage.Save();
_topMostRecordStorage.Save();
_saved = true;
}
}
/// <summary>
/// To avoid deadlock, this method should not called from main thread
/// </summary>
public void UpdateResultView(List<Result> list, PluginMetadata metadata, Query originQuery)
{
foreach (var result in list)
{
if (_topMostRecord.IsTopMost(result))
{
result.Score = int.MaxValue;
}
else
{
result.Score += _userSelectedRecord.GetSelectedCount(result) * 5;
}
}
if (originQuery.RawQuery == _lastQuery.RawQuery)
{
Results.AddResults(list, metadata.ID);
}
if (Results.Visbility != Visibility.Visible && list.Count > 0)
{
Results.Visbility = Visibility.Visible;
}
}
public void ColdStartFix()
{
// Fix Cold start for List view xaml island
List<Result> list = new List<Result>();
Result r = new Result
{
Title = "hello"
};
list.Add(r);
Results.AddResults(list, "0");
Results.Clear();
MainWindowVisibility = System.Windows.Visibility.Collapsed;
// Fix Cold start for plugins
string s = "m";
var query = QueryBuilder.Build(s.Trim(), PluginManager.NonGlobalPlugins);
var plugins = PluginManager.ValidPluginsForQuery(query);
foreach (PluginPair plugin in plugins)
{
if (!plugin.Metadata.Disabled && plugin.Metadata.Name != "Window Walker")
{
var _ = PluginManager.QueryForPlugin(plugin, query);
}
};
}
#endregion
}
}

View File

@@ -0,0 +1,21 @@
using System.Windows;
using Wox.Plugin;
using Wox.Core.Resource;
using Wox.Infrastructure.Image;
using Windows.UI.Xaml.Media;
namespace Wox.ViewModel
{
public class PluginViewModel : BaseModel
{
public PluginPair PluginPair { get; set; }
private readonly Internationalization _translator = InternationalizationManager.Instance;
public ImageSource Image => ImageLoader.Load(PluginPair.Metadata.IcoPath);
public Visibility ActionKeywordsVisibility => PluginPair.Metadata.ActionKeywords.Count > 1 ? Visibility.Collapsed : Visibility.Visible;
public string InitilizaTime => string.Format(_translator.GetTranslation("plugin_init_time"), PluginPair.Metadata.InitTime);
public string QueryTime => string.Format(_translator.GetTranslation("plugin_query_time"), PluginPair.Metadata.AvgQueryTime);
public string ActionKeywordsText => string.Join(Query.ActionKeywordSeperater, PluginPair.Metadata.ActionKeywords);
}
}

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