mirror of
https://github.com/microsoft/PowerToys.git
synced 2026-04-08 12:18:50 +02:00
Add find file plugin.
This commit is contained in:
@@ -8,7 +8,7 @@ namespace Wox.Plugin.BrowserBookmark
|
|||||||
{
|
{
|
||||||
private PluginInitContext context;
|
private PluginInitContext context;
|
||||||
|
|
||||||
// TODO: periodically refresh the cache?
|
// TODO: periodically refresh the Cache?
|
||||||
private List<Bookmark> cachedBookmarks = new List<Bookmark>();
|
private List<Bookmark> cachedBookmarks = new List<Bookmark>();
|
||||||
|
|
||||||
public void Init(PluginInitContext context)
|
public void Init(PluginInitContext context)
|
||||||
|
|||||||
BIN
Plugins/Wox.Plugin.FindFile/Images/file.png
Normal file
BIN
Plugins/Wox.Plugin.FindFile/Images/file.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1.1 KiB |
BIN
Plugins/Wox.Plugin.FindFile/Images/find.png
Normal file
BIN
Plugins/Wox.Plugin.FindFile/Images/find.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 522 B |
BIN
Plugins/Wox.Plugin.FindFile/Images/folder.png
Normal file
BIN
Plugins/Wox.Plugin.FindFile/Images/folder.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 4.2 KiB |
BIN
Plugins/Wox.Plugin.FindFile/Images/warning.png
Normal file
BIN
Plugins/Wox.Plugin.FindFile/Images/warning.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 5.1 KiB |
74
Plugins/Wox.Plugin.FindFile/Main.cs
Normal file
74
Plugins/Wox.Plugin.FindFile/Main.cs
Normal file
@@ -0,0 +1,74 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Diagnostics;
|
||||||
|
using System.IO;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Runtime.Serialization.Formatters.Binary;
|
||||||
|
using System.Text;
|
||||||
|
using Wox.Infrastructure;
|
||||||
|
using Wox.Infrastructure.MFTSearch;
|
||||||
|
|
||||||
|
namespace Wox.Plugin.FindFile
|
||||||
|
{
|
||||||
|
public class Main : IPlugin
|
||||||
|
{
|
||||||
|
private PluginInitContext context;
|
||||||
|
private bool initial = false;
|
||||||
|
|
||||||
|
public List<Result> Query(Query query)
|
||||||
|
{
|
||||||
|
if (!initial)
|
||||||
|
{
|
||||||
|
return new List<Result>()
|
||||||
|
{
|
||||||
|
new Result("Wox is indexing your files, please try later.","Images/warning.png")
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
string q = query.GetAllRemainingParameter();
|
||||||
|
return MFTSearcher.Search(q).Take(100).Select(t => ConvertMFTSearch(t, q)).ToList();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Init(PluginInitContext context)
|
||||||
|
{
|
||||||
|
this.context = context;
|
||||||
|
var searchtimestart = DateTime.Now;
|
||||||
|
MFTSearcher.IndexAllVolumes();
|
||||||
|
initial = true;
|
||||||
|
var searchtimeend = DateTime.Now;
|
||||||
|
Debug.WriteLine(string.Format("{0} file, {1} folder indexed, {2}ms has spent.", MFTSearcher.IndexedFileCount, MFTSearcher.IndexedFolderCount, searchtimeend.Subtract(searchtimestart).TotalMilliseconds));
|
||||||
|
}
|
||||||
|
|
||||||
|
private Result ConvertMFTSearch(MFTSearchRecord record, string query)
|
||||||
|
{
|
||||||
|
string icoPath = "Images/file.png";
|
||||||
|
if (record.IsFolder)
|
||||||
|
{
|
||||||
|
icoPath = "Images/folder.png";
|
||||||
|
}
|
||||||
|
|
||||||
|
string name = Path.GetFileName(record.FullPath);
|
||||||
|
FuzzyMatcher matcher = FuzzyMatcher.Create(query);
|
||||||
|
return new Result()
|
||||||
|
{
|
||||||
|
Title = name,
|
||||||
|
Score = matcher.Evaluate(name).Score,
|
||||||
|
SubTitle = record.FullPath,
|
||||||
|
IcoPath = icoPath,
|
||||||
|
Action = _ =>
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
Process.Start(record.FullPath);
|
||||||
|
}
|
||||||
|
catch
|
||||||
|
{
|
||||||
|
context.API.ShowMsg("Can't open " + record.FullPath, string.Empty, string.Empty);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
36
Plugins/Wox.Plugin.FindFile/Properties/AssemblyInfo.cs
Normal file
36
Plugins/Wox.Plugin.FindFile/Properties/AssemblyInfo.cs
Normal file
@@ -0,0 +1,36 @@
|
|||||||
|
using System.Reflection;
|
||||||
|
using System.Runtime.CompilerServices;
|
||||||
|
using System.Runtime.InteropServices;
|
||||||
|
|
||||||
|
// 有关程序集的常规信息通过以下
|
||||||
|
// 特性集控制。更改这些特性值可修改
|
||||||
|
// 与程序集关联的信息。
|
||||||
|
[assembly: AssemblyTitle("Wox.Plugin.FindFile")]
|
||||||
|
[assembly: AssemblyDescription("")]
|
||||||
|
[assembly: AssemblyConfiguration("")]
|
||||||
|
[assembly: AssemblyCompany("")]
|
||||||
|
[assembly: AssemblyProduct("Wox.Plugin.FindFile")]
|
||||||
|
[assembly: AssemblyCopyright("Copyright © 2014")]
|
||||||
|
[assembly: AssemblyTrademark("")]
|
||||||
|
[assembly: AssemblyCulture("")]
|
||||||
|
|
||||||
|
// 将 ComVisible 设置为 false 使此程序集中的类型
|
||||||
|
// 对 COM 组件不可见。 如果需要从 COM 访问此程序集中的类型,
|
||||||
|
// 则将该类型上的 ComVisible 特性设置为 true。
|
||||||
|
[assembly: ComVisible(false)]
|
||||||
|
|
||||||
|
// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID
|
||||||
|
[assembly: Guid("93b857b4-07a4-4ac1-a3ee-d038ace03ce9")]
|
||||||
|
|
||||||
|
// 程序集的版本信息由下面四个值组成:
|
||||||
|
//
|
||||||
|
// 主版本
|
||||||
|
// 次版本
|
||||||
|
// 生成号
|
||||||
|
// 修订号
|
||||||
|
//
|
||||||
|
// 可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值,
|
||||||
|
// 方法是按如下所示使用“*”:
|
||||||
|
// [assembly: AssemblyVersion("1.0.*")]
|
||||||
|
[assembly: AssemblyVersion("1.0.0.0")]
|
||||||
|
[assembly: AssemblyFileVersion("1.0.0.0")]
|
||||||
81
Plugins/Wox.Plugin.FindFile/Wox.Plugin.FindFile.csproj
Normal file
81
Plugins/Wox.Plugin.FindFile/Wox.Plugin.FindFile.csproj
Normal file
@@ -0,0 +1,81 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
|
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
|
||||||
|
<PropertyGroup>
|
||||||
|
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||||
|
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||||
|
<ProjectGuid>{84EA88B4-71F2-4A3D-9771-D7B0244C0D81}</ProjectGuid>
|
||||||
|
<OutputType>Library</OutputType>
|
||||||
|
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||||
|
<RootNamespace>Wox.Plugin.FindFile</RootNamespace>
|
||||||
|
<AssemblyName>Wox.Plugin.FindFile</AssemblyName>
|
||||||
|
<TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
|
||||||
|
<FileAlignment>512</FileAlignment>
|
||||||
|
<TargetFrameworkProfile />
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||||
|
<DebugSymbols>true</DebugSymbols>
|
||||||
|
<DebugType>full</DebugType>
|
||||||
|
<Optimize>false</Optimize>
|
||||||
|
<OutputPath>..\..\Output\Debug\Plugins\Wox.Plugin.FindFile\</OutputPath>
|
||||||
|
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||||
|
<ErrorReport>prompt</ErrorReport>
|
||||||
|
<WarningLevel>4</WarningLevel>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||||
|
<DebugType>pdbonly</DebugType>
|
||||||
|
<Optimize>true</Optimize>
|
||||||
|
<OutputPath>..\..\Output\Release\Plugins\Wox.Plugin.FindFile\</OutputPath>
|
||||||
|
<DefineConstants>TRACE</DefineConstants>
|
||||||
|
<ErrorReport>prompt</ErrorReport>
|
||||||
|
<WarningLevel>4</WarningLevel>
|
||||||
|
</PropertyGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<Reference Include="System" />
|
||||||
|
<Reference Include="System.Core" />
|
||||||
|
<Reference Include="System.Xml.Linq" />
|
||||||
|
<Reference Include="System.Data.DataSetExtensions" />
|
||||||
|
<Reference Include="Microsoft.CSharp" />
|
||||||
|
<Reference Include="System.Data" />
|
||||||
|
<Reference Include="System.Xml" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<Compile Include="Main.cs" />
|
||||||
|
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<ProjectReference Include="..\..\Wox.Infrastructure\Wox.Infrastructure.csproj">
|
||||||
|
<Project>{4fd29318-a8ab-4d8f-aa47-60bc241b8da3}</Project>
|
||||||
|
<Name>Wox.Infrastructure</Name>
|
||||||
|
</ProjectReference>
|
||||||
|
<ProjectReference Include="..\..\Wox.Plugin\Wox.Plugin.csproj">
|
||||||
|
<Project>{8451ecdd-2ea4-4966-bb0a-7bbc40138e80}</Project>
|
||||||
|
<Name>Wox.Plugin</Name>
|
||||||
|
</ProjectReference>
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<Content Include="Images\find.png" />
|
||||||
|
<Content Include="Images\folder.png">
|
||||||
|
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||||
|
</Content>
|
||||||
|
<Content Include="Images\file.png">
|
||||||
|
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||||
|
</Content>
|
||||||
|
<Content Include="Images\warning.png">
|
||||||
|
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||||
|
</Content>
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<None Include="plugin.json">
|
||||||
|
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||||
|
</None>
|
||||||
|
</ItemGroup>
|
||||||
|
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||||
|
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
||||||
|
Other similar extension points exist, see Microsoft.Common.targets.
|
||||||
|
<Target Name="BeforeBuild">
|
||||||
|
</Target>
|
||||||
|
<Target Name="AfterBuild">
|
||||||
|
</Target>
|
||||||
|
-->
|
||||||
|
</Project>
|
||||||
12
Plugins/Wox.Plugin.FindFile/plugin.json
Normal file
12
Plugins/Wox.Plugin.FindFile/plugin.json
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
{
|
||||||
|
"ID":"64EDFA42642446E5BBFF2546EE4549BB",
|
||||||
|
"ActionKeyword":"f",
|
||||||
|
"Name":"Find Files and Folders",
|
||||||
|
"Description":"Search all your files and folders in your disk",
|
||||||
|
"Author":"qianlifeng",
|
||||||
|
"Version":"1.0",
|
||||||
|
"Language":"csharp",
|
||||||
|
"Website":"http://www.getwox.com/plugin",
|
||||||
|
"ExecuteFileName":"Wox.Plugin.FindFile.dll",
|
||||||
|
"IcoPath":"Images\\find.png"
|
||||||
|
}
|
||||||
@@ -5,6 +5,7 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.ComponentModel;
|
using System.ComponentModel;
|
||||||
|
using System.Diagnostics;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Runtime.InteropServices;
|
using System.Runtime.InteropServices;
|
||||||
@@ -30,13 +31,26 @@ namespace Wox.Infrastructure.MFTSearch
|
|||||||
{
|
{
|
||||||
foreach (DriveInfo drive in DriveInfo.GetDrives())
|
foreach (DriveInfo drive in DriveInfo.GetDrives())
|
||||||
{
|
{
|
||||||
IndexVolume(drive.VolumeLabel);
|
IndexVolume(drive.Name.Replace("\\", ""));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static long IndexedFileCount
|
||||||
|
{
|
||||||
|
get { return cache.FileCount; }
|
||||||
|
}
|
||||||
|
public static long IndexedFolderCount
|
||||||
|
{
|
||||||
|
get { return cache.FolderCount; }
|
||||||
|
}
|
||||||
|
|
||||||
public static List<MFTSearchRecord> Search(string item)
|
public static List<MFTSearchRecord> Search(string item)
|
||||||
{
|
{
|
||||||
return null;
|
if (string.IsNullOrEmpty(item)) return new List<MFTSearchRecord>();
|
||||||
|
|
||||||
|
List<USNRecord> found = cache.FindByName(item);
|
||||||
|
found.ForEach(x => FillPath(x.VolumeName, x, cache));
|
||||||
|
return found.ConvertAll(o => new MFTSearchRecord(o));
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void AddVolumeRootRecord(string volumeName, ref List<USNRecord> folders)
|
private static void AddVolumeRootRecord(string volumeName, ref List<USNRecord> folders)
|
||||||
|
|||||||
@@ -85,22 +85,19 @@ namespace Wox.Infrastructure.MFTSearch
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
public List<USNRecord> FindByName(string filename, out long foundFileCnt, out long fountFolderCnt)
|
public List<USNRecord> FindByName(string filename)
|
||||||
{
|
{
|
||||||
|
filename = filename.ToLower();
|
||||||
var fileQuery = from filesInVolumeDic in _volumes_files.Values
|
var fileQuery = from filesInVolumeDic in _volumes_files.Values
|
||||||
from eachFilePair in filesInVolumeDic
|
from eachFilePair in filesInVolumeDic
|
||||||
where eachFilePair.Value.Name.Contains(filename)
|
where eachFilePair.Value.Name.ToLower().Contains(filename)
|
||||||
select eachFilePair.Value;
|
select eachFilePair.Value;
|
||||||
|
|
||||||
var folderQuery = from fldsInVolumeDic in _volumes_folders.Values
|
var folderQuery = from fldsInVolumeDic in _volumes_folders.Values
|
||||||
from eachFldPair in fldsInVolumeDic
|
from eachFldPair in fldsInVolumeDic
|
||||||
where eachFldPair.Value.Name.Contains(filename)
|
where eachFldPair.Value.Name.ToLower().Contains(filename)
|
||||||
select eachFldPair.Value;
|
select eachFldPair.Value;
|
||||||
|
|
||||||
foundFileCnt = fileQuery.Count();
|
|
||||||
fountFolderCnt = folderQuery.Count();
|
|
||||||
|
|
||||||
List<USNRecord> result = new List<USNRecord>();
|
List<USNRecord> result = new List<USNRecord>();
|
||||||
|
|
||||||
result.AddRange(fileQuery);
|
result.AddRange(fileQuery);
|
||||||
|
|||||||
32
Wox.Test/MFTSearcherTest.cs
Normal file
32
Wox.Test/MFTSearcherTest.cs
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using NUnit.Framework;
|
||||||
|
using Wox.Infrastructure.MFTSearch;
|
||||||
|
|
||||||
|
namespace Wox.Test
|
||||||
|
{
|
||||||
|
[TestFixture]
|
||||||
|
public class MFTSearcherTest
|
||||||
|
{
|
||||||
|
[Test]
|
||||||
|
public void MatchTest()
|
||||||
|
{
|
||||||
|
var searchtimestart = DateTime.Now;
|
||||||
|
MFTSearcher.IndexAllVolumes();
|
||||||
|
var searchtimeend = DateTime.Now;
|
||||||
|
Console.WriteLine(string.Format("{0} file indexed, {1}ms has spent.", MFTSearcher.IndexedFileCount, searchtimeend.Subtract(searchtimestart).TotalMilliseconds));
|
||||||
|
|
||||||
|
searchtimestart = DateTime.Now;
|
||||||
|
List<MFTSearchRecord> mftSearchRecords = MFTSearcher.Search("q");
|
||||||
|
searchtimeend = DateTime.Now;
|
||||||
|
Console.WriteLine(string.Format("{0} file searched, {1}ms has spent.", mftSearchRecords.Count, searchtimeend.Subtract(searchtimestart).TotalMilliseconds));
|
||||||
|
|
||||||
|
searchtimestart = DateTime.Now;
|
||||||
|
mftSearchRecords = MFTSearcher.Search("ss");
|
||||||
|
searchtimeend = DateTime.Now;
|
||||||
|
Console.WriteLine(string.Format("{0} file searched, {1}ms has spent.", mftSearchRecords.Count, searchtimeend.Subtract(searchtimestart).TotalMilliseconds));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -44,6 +44,7 @@
|
|||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Compile Include="FuzzyMatcherTest.cs" />
|
<Compile Include="FuzzyMatcherTest.cs" />
|
||||||
|
<Compile Include="MFTSearcherTest.cs" />
|
||||||
<Compile Include="QueryTest.cs" />
|
<Compile Include="QueryTest.cs" />
|
||||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|||||||
9
Wox.sln
9
Wox.sln
@@ -1,7 +1,7 @@
|
|||||||
|
|
||||||
Microsoft Visual Studio Solution File, Format Version 12.00
|
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||||
# Visual Studio 2013
|
# Visual Studio 2013
|
||||||
VisualStudioVersion = 12.0.21005.1
|
VisualStudioVersion = 12.0.30723.0
|
||||||
MinimumVisualStudioVersion = 10.0.40219.1
|
MinimumVisualStudioVersion = 10.0.40219.1
|
||||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Wox.Test", "Wox.Test\Wox.Test.csproj", "{FF742965-9A80-41A5-B042-D6C7D3A21708}"
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Wox.Test", "Wox.Test\Wox.Test.csproj", "{FF742965-9A80-41A5-B042-D6C7D3A21708}"
|
||||||
EndProject
|
EndProject
|
||||||
@@ -19,6 +19,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Wox.Plugin.PluginManagement
|
|||||||
EndProject
|
EndProject
|
||||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Wox.Plugin.BrowserBookmark", "Plugins\Wox.Plugin.BrowserBookmark\Wox.Plugin.BrowserBookmark.csproj", "{9B130CC5-14FB-41FF-B310-0A95B6894C37}"
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Wox.Plugin.BrowserBookmark", "Plugins\Wox.Plugin.BrowserBookmark\Wox.Plugin.BrowserBookmark.csproj", "{9B130CC5-14FB-41FF-B310-0A95B6894C37}"
|
||||||
EndProject
|
EndProject
|
||||||
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Wox.Plugin.FindFile", "Plugins\Wox.Plugin.FindFile\Wox.Plugin.FindFile.csproj", "{84EA88B4-71F2-4A3D-9771-D7B0244C0D81}"
|
||||||
|
EndProject
|
||||||
Global
|
Global
|
||||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||||
Debug|Any CPU = Debug|Any CPU
|
Debug|Any CPU = Debug|Any CPU
|
||||||
@@ -53,6 +55,10 @@ Global
|
|||||||
{9B130CC5-14FB-41FF-B310-0A95B6894C37}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
{9B130CC5-14FB-41FF-B310-0A95B6894C37}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
{9B130CC5-14FB-41FF-B310-0A95B6894C37}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
{9B130CC5-14FB-41FF-B310-0A95B6894C37}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
{9B130CC5-14FB-41FF-B310-0A95B6894C37}.Release|Any CPU.Build.0 = Release|Any CPU
|
{9B130CC5-14FB-41FF-B310-0A95B6894C37}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
|
{84EA88B4-71F2-4A3D-9771-D7B0244C0D81}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
|
{84EA88B4-71F2-4A3D-9771-D7B0244C0D81}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{84EA88B4-71F2-4A3D-9771-D7B0244C0D81}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
|
{84EA88B4-71F2-4A3D-9771-D7B0244C0D81}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
EndGlobalSection
|
EndGlobalSection
|
||||||
GlobalSection(SolutionProperties) = preSolution
|
GlobalSection(SolutionProperties) = preSolution
|
||||||
HideSolutionNode = FALSE
|
HideSolutionNode = FALSE
|
||||||
@@ -60,5 +66,6 @@ Global
|
|||||||
GlobalSection(NestedProjects) = preSolution
|
GlobalSection(NestedProjects) = preSolution
|
||||||
{049490F0-ECD2-4148-9B39-2135EC346EBE} = {3A73F5A7-0335-40D8-BF7C-F20BE5D0BA87}
|
{049490F0-ECD2-4148-9B39-2135EC346EBE} = {3A73F5A7-0335-40D8-BF7C-F20BE5D0BA87}
|
||||||
{9B130CC5-14FB-41FF-B310-0A95B6894C37} = {3A73F5A7-0335-40D8-BF7C-F20BE5D0BA87}
|
{9B130CC5-14FB-41FF-B310-0A95B6894C37} = {3A73F5A7-0335-40D8-BF7C-F20BE5D0BA87}
|
||||||
|
{84EA88B4-71F2-4A3D-9771-D7B0244C0D81} = {3A73F5A7-0335-40D8-BF7C-F20BE5D0BA87}
|
||||||
EndGlobalSection
|
EndGlobalSection
|
||||||
EndGlobal
|
EndGlobal
|
||||||
|
|||||||
@@ -10,21 +10,11 @@ namespace Wox.Commands
|
|||||||
{
|
{
|
||||||
internal static class CommandFactory
|
internal static class CommandFactory
|
||||||
{
|
{
|
||||||
private static PluginCommand pluginCmd;
|
private static PluginCommand pluginCmd = new PluginCommand();
|
||||||
private static SystemCommand systemCmd;
|
private static SystemCommand systemCmd = new SystemCommand();
|
||||||
|
|
||||||
public static void DispatchCommand(Query query)
|
public static void DispatchCommand(Query query)
|
||||||
{
|
{
|
||||||
//lazy init command instance.
|
|
||||||
if (pluginCmd == null)
|
|
||||||
{
|
|
||||||
pluginCmd = new PluginCommand();
|
|
||||||
}
|
|
||||||
if (systemCmd == null)
|
|
||||||
{
|
|
||||||
systemCmd = new SystemCommand();
|
|
||||||
}
|
|
||||||
|
|
||||||
if (Plugins.HitThirdpartyKeyword(query))
|
if (Plugins.HitThirdpartyKeyword(query))
|
||||||
{
|
{
|
||||||
pluginCmd.Dispatch(query);
|
pluginCmd.Dispatch(query);
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ using System.Collections.Generic;
|
|||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using System.Threading;
|
using System.Threading;
|
||||||
|
using Wox.Infrastructure.MFTSearch;
|
||||||
using Wox.Infrastructure.Storage.UserSettings;
|
using Wox.Infrastructure.Storage.UserSettings;
|
||||||
using Wox.Plugin;
|
using Wox.Plugin;
|
||||||
using Wox.Plugin.SystemPlugins;
|
using Wox.Plugin.SystemPlugins;
|
||||||
@@ -12,9 +13,10 @@ namespace Wox.Commands
|
|||||||
{
|
{
|
||||||
public class SystemCommand : BaseCommand
|
public class SystemCommand : BaseCommand
|
||||||
{
|
{
|
||||||
|
private IEnumerable<PluginPair> allSytemPlugins = Plugins.AllPlugins.Where(o => o.Metadata.PluginType == PluginType.System);
|
||||||
|
|
||||||
public override void Dispatch(Query query)
|
public override void Dispatch(Query query)
|
||||||
{
|
{
|
||||||
var allSytemPlugins = Plugins.AllPlugins.Where(o => o.Metadata.PluginType == PluginType.System);
|
|
||||||
if (UserSettingStorage.Instance.WebSearches.Exists(o => o.ActionWord == query.ActionName && o.Enabled))
|
if (UserSettingStorage.Instance.WebSearches.Exists(o => o.ActionWord == query.ActionName && o.Enabled))
|
||||||
{
|
{
|
||||||
//websearch mode
|
//websearch mode
|
||||||
|
|||||||
@@ -17,6 +17,7 @@ using NHotkey.Wpf;
|
|||||||
using Wox.Commands;
|
using Wox.Commands;
|
||||||
using Wox.Helper;
|
using Wox.Helper;
|
||||||
using Wox.Infrastructure;
|
using Wox.Infrastructure;
|
||||||
|
using Wox.Infrastructure.MFTSearch;
|
||||||
using Wox.Infrastructure.Storage;
|
using Wox.Infrastructure.Storage;
|
||||||
using Wox.Infrastructure.Storage.UserSettings;
|
using Wox.Infrastructure.Storage.UserSettings;
|
||||||
using Wox.Plugin;
|
using Wox.Plugin;
|
||||||
|
|||||||
@@ -32,7 +32,8 @@ namespace Wox.PluginLoader
|
|||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
|
|
||||||
forker.Join();
|
//if plugin init do heavy works, join here will block the UI
|
||||||
|
//forker.Join();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static List<PluginPair> AllPlugins
|
public static List<PluginPair> AllPlugins
|
||||||
|
|||||||
@@ -58,6 +58,9 @@
|
|||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<StartupObject>Wox.EntryPoint</StartupObject>
|
<StartupObject>Wox.EntryPoint</StartupObject>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
<PropertyGroup>
|
||||||
|
<ApplicationManifest>app.manifest</ApplicationManifest>
|
||||||
|
</PropertyGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Reference Include="Accessibility" />
|
<Reference Include="Accessibility" />
|
||||||
<Reference Include="ICSharpCode.SharpZipLib, Version=0.86.0.518, Culture=neutral, PublicKeyToken=1b03e6acf1164f73, processorArchitecture=MSIL">
|
<Reference Include="ICSharpCode.SharpZipLib, Version=0.86.0.518, Culture=neutral, PublicKeyToken=1b03e6acf1164f73, processorArchitecture=MSIL">
|
||||||
@@ -202,6 +205,7 @@
|
|||||||
<SubType>Designer</SubType>
|
<SubType>Designer</SubType>
|
||||||
<Generator>MSBuild:Compile</Generator>
|
<Generator>MSBuild:Compile</Generator>
|
||||||
</Page>
|
</Page>
|
||||||
|
<None Include="app.manifest" />
|
||||||
<None Include="Themes\Aero Dark.xaml">
|
<None Include="Themes\Aero Dark.xaml">
|
||||||
<Generator>MSBuild:Compile</Generator>
|
<Generator>MSBuild:Compile</Generator>
|
||||||
<SubType>Designer</SubType>
|
<SubType>Designer</SubType>
|
||||||
@@ -380,6 +384,14 @@
|
|||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Resource Include="Images\url.png" />
|
<Resource Include="Images\url.png" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<Resource Include="Images\ControlPanel.png" />
|
||||||
|
<Resource Include="Images\file.png" />
|
||||||
|
<Resource Include="Images\list.png" />
|
||||||
|
<Resource Include="Images\program.png" />
|
||||||
|
<Resource Include="Images\restart.png" />
|
||||||
|
<Resource Include="Images\web_search.png" />
|
||||||
|
</ItemGroup>
|
||||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||||
<Import Project="$(SolutionDir)\.nuget\NuGet.targets" Condition="Exists('$(SolutionDir)\.nuget\NuGet.targets')" />
|
<Import Project="$(SolutionDir)\.nuget\NuGet.targets" Condition="Exists('$(SolutionDir)\.nuget\NuGet.targets')" />
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
|
|||||||
15
Wox/app.manifest
Normal file
15
Wox/app.manifest
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<asmv1:assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1" xmlns:asmv1="urn:schemas-microsoft-com:asm.v1" xmlns:asmv2="urn:schemas-microsoft-com:asm.v2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
||||||
|
<assemblyIdentity version="1.0.0.0" name="MyApplication.app"/>
|
||||||
|
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
|
||||||
|
<security>
|
||||||
|
<requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
|
||||||
|
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
|
||||||
|
</requestedPrivileges>
|
||||||
|
</security>
|
||||||
|
</trustInfo>
|
||||||
|
<compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
|
||||||
|
<application>
|
||||||
|
</application>
|
||||||
|
</compatibility>
|
||||||
|
</asmv1:assembly>
|
||||||
Reference in New Issue
Block a user