Merge branch 'master' into dotnet-core-upgrade
# Conflicts: # src/modules/launcher/Plugins/Wox.Plugin.BrowserBookmark/Wox.Plugin.BrowserBookmark.csproj # src/modules/launcher/Plugins/Wox.Plugin.Calculator/Wox.Plugin.Calculator.csproj # src/modules/launcher/Plugins/Wox.Plugin.Color/Wox.Plugin.Color.csproj # src/modules/launcher/Plugins/Wox.Plugin.ControlPanel/Wox.Plugin.ControlPanel.csproj # src/modules/launcher/Plugins/Wox.Plugin.Everything/Wox.Plugin.Everything.csproj # src/modules/launcher/Plugins/Wox.Plugin.Folder/Wox.Plugin.Folder.csproj # src/modules/launcher/Plugins/Wox.Plugin.Indexer/Properties/AssemblyInfo.cs # src/modules/launcher/Plugins/Wox.Plugin.Indexer/Wox.Plugin.Indexer.csproj # src/modules/launcher/Plugins/Wox.Plugin.PluginIndicator/Wox.Plugin.PluginIndicator.csproj # src/modules/launcher/Plugins/Wox.Plugin.PluginManagement/Wox.Plugin.PluginManagement.csproj # src/modules/launcher/Plugins/Wox.Plugin.Program/Wox.Plugin.Program.csproj # src/modules/launcher/Plugins/Wox.Plugin.Shell/Wox.Plugin.Shell.csproj # src/modules/launcher/Plugins/Wox.Plugin.Sys/Wox.Plugin.Sys.csproj # src/modules/launcher/Plugins/Wox.Plugin.Url/Wox.Plugin.Url.csproj # src/modules/launcher/Plugins/Wox.Plugin.WebSearch/Wox.Plugin.WebSearch.csproj # src/modules/launcher/Wox.Core/Wox.Core.csproj # src/modules/launcher/Wox.Infrastructure/Wox.Infrastructure.csproj # src/modules/launcher/Wox.Plugin/Wox.Plugin.csproj # src/modules/launcher/Wox.Test/Wox.Test.csproj # src/modules/launcher/Wox/Wox.csproj
109
PowerToys.sln
@@ -132,252 +132,172 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "msi_to_msix_upgrade_lib", "
|
|||||||
EndProject
|
EndProject
|
||||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "launcher", "launcher", "{C140A3EF-6DBF-4084-9D4C-4EB5A99FEE68}"
|
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "launcher", "launcher", "{C140A3EF-6DBF-4084-9D4C-4EB5A99FEE68}"
|
||||||
EndProject
|
EndProject
|
||||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Wox", "src\modules\launcher\Wox\Wox.csproj", "{DB90F671-D861-46BB-93A3-F1304F5BA1C5}"
|
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Wox", "src\modules\launcher\Wox\Wox.csproj", "{DB90F671-D861-46BB-93A3-F1304F5BA1C5}"
|
||||||
EndProject
|
EndProject
|
||||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Wox.Core", "src\modules\launcher\Wox.Core\Wox.Core.csproj", "{B749F0DB-8E75-47DB-9E5E-265D16D0C0D2}"
|
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Wox.Core", "src\modules\launcher\Wox.Core\Wox.Core.csproj", "{B749F0DB-8E75-47DB-9E5E-265D16D0C0D2}"
|
||||||
EndProject
|
EndProject
|
||||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Wox.Infrastructure", "src\modules\launcher\Wox.Infrastructure\Wox.Infrastructure.csproj", "{4FD29318-A8AB-4D8F-AA47-60BC241B8DA3}"
|
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Wox.Infrastructure", "src\modules\launcher\Wox.Infrastructure\Wox.Infrastructure.csproj", "{4FD29318-A8AB-4D8F-AA47-60BC241B8DA3}"
|
||||||
EndProject
|
EndProject
|
||||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Wox.Plugin", "src\modules\launcher\Wox.Plugin\Wox.Plugin.csproj", "{8451ECDD-2EA4-4966-BB0A-7BBC40138E80}"
|
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Wox.Plugin", "src\modules\launcher\Wox.Plugin\Wox.Plugin.csproj", "{8451ECDD-2EA4-4966-BB0A-7BBC40138E80}"
|
||||||
EndProject
|
EndProject
|
||||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Wox.Test", "src\modules\launcher\Wox.Test\Wox.Test.csproj", "{FF742965-9A80-41A5-B042-D6C7D3A21708}"
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Wox.Test", "src\modules\launcher\Wox.Test\Wox.Test.csproj", "{FF742965-9A80-41A5-B042-D6C7D3A21708}"
|
||||||
EndProject
|
EndProject
|
||||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Plugins", "Plugins", "{4AFC9975-2456-4C70-94A4-84073C1CED93}"
|
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Plugins", "Plugins", "{4AFC9975-2456-4C70-94A4-84073C1CED93}"
|
||||||
EndProject
|
EndProject
|
||||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Wox.Plugin.Calculator", "src\modules\launcher\Plugins\Wox.Plugin.Calculator\Wox.Plugin.Calculator.csproj", "{59BD9891-3837-438A-958D-ADC7F91F6F7E}"
|
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Wox.Plugin.Calculator", "src\modules\launcher\Plugins\Wox.Plugin.Calculator\Wox.Plugin.Calculator.csproj", "{59BD9891-3837-438A-958D-ADC7F91F6F7E}"
|
||||||
EndProject
|
EndProject
|
||||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Wox.Plugin.Program", "src\modules\launcher\Plugins\Wox.Plugin.Program\Wox.Plugin.Program.csproj", "{FDB3555B-58EF-4AE6-B5F1-904719637AB4}"
|
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Wox.Plugin.Program", "src\modules\launcher\Plugins\Wox.Plugin.Program\Wox.Plugin.Program.csproj", "{FDB3555B-58EF-4AE6-B5F1-904719637AB4}"
|
||||||
EndProject
|
EndProject
|
||||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Wox.Plugin.Shell", "src\modules\launcher\Plugins\Wox.Plugin.Shell\Wox.Plugin.Shell.csproj", "{C21BFF9C-2C99-4B5F-B7C9-A5E6DDDB37B0}"
|
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Wox.Plugin.Shell", "src\modules\launcher\Plugins\Wox.Plugin.Shell\Wox.Plugin.Shell.csproj", "{C21BFF9C-2C99-4B5F-B7C9-A5E6DDDB37B0}"
|
||||||
EndProject
|
EndProject
|
||||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Wox.Plugin.Folder", "src\modules\launcher\Plugins\Wox.Plugin.Folder\Wox.Plugin.Folder.csproj", "{787B8AA6-CA93-4C84-96FE-DF31110AD1C4}"
|
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Wox.Plugin.Folder", "src\modules\launcher\Plugins\Wox.Plugin.Folder\Wox.Plugin.Folder.csproj", "{787B8AA6-CA93-4C84-96FE-DF31110AD1C4}"
|
||||||
EndProject
|
EndProject
|
||||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Wox.Launcher", "src\modules\launcher\Wox.Launcher\Wox.Launcher.vcxproj", "{E364F67B-BB12-4E91-B639-355866EBCD8B}"
|
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Wox.Launcher", "src\modules\launcher\Wox.Launcher\Wox.Launcher.vcxproj", "{E364F67B-BB12-4E91-B639-355866EBCD8B}"
|
||||||
EndProject
|
EndProject
|
||||||
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Wox.Plugin.Indexer", "src\modules\launcher\Plugins\Wox.Plugin.Indexer\Wox.Plugin.Indexer.csproj", "{63C3CEA8-51FE-472E-B97C-B58F8B17DD51}"
|
||||||
|
EndProject
|
||||||
Global
|
Global
|
||||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||||
Debug|Any CPU = Debug|Any CPU
|
|
||||||
Debug|x64 = Debug|x64
|
Debug|x64 = Debug|x64
|
||||||
Release|Any CPU = Release|Any CPU
|
|
||||||
Release|x64 = Release|x64
|
Release|x64 = Release|x64
|
||||||
EndGlobalSection
|
EndGlobalSection
|
||||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||||
{9412D5C6-2CF2-4FC2-A601-B55508EA9B27}.Debug|Any CPU.ActiveCfg = Debug|x64
|
|
||||||
{9412D5C6-2CF2-4FC2-A601-B55508EA9B27}.Debug|x64.ActiveCfg = Debug|x64
|
{9412D5C6-2CF2-4FC2-A601-B55508EA9B27}.Debug|x64.ActiveCfg = Debug|x64
|
||||||
{9412D5C6-2CF2-4FC2-A601-B55508EA9B27}.Debug|x64.Build.0 = Debug|x64
|
{9412D5C6-2CF2-4FC2-A601-B55508EA9B27}.Debug|x64.Build.0 = Debug|x64
|
||||||
{9412D5C6-2CF2-4FC2-A601-B55508EA9B27}.Release|Any CPU.ActiveCfg = Release|x64
|
|
||||||
{9412D5C6-2CF2-4FC2-A601-B55508EA9B27}.Release|x64.ActiveCfg = Release|x64
|
{9412D5C6-2CF2-4FC2-A601-B55508EA9B27}.Release|x64.ActiveCfg = Release|x64
|
||||||
{9412D5C6-2CF2-4FC2-A601-B55508EA9B27}.Release|x64.Build.0 = Release|x64
|
{9412D5C6-2CF2-4FC2-A601-B55508EA9B27}.Release|x64.Build.0 = Release|x64
|
||||||
{74485049-C722-400F-ABE5-86AC52D929B3}.Debug|Any CPU.ActiveCfg = Debug|x64
|
|
||||||
{74485049-C722-400F-ABE5-86AC52D929B3}.Debug|x64.ActiveCfg = Debug|x64
|
{74485049-C722-400F-ABE5-86AC52D929B3}.Debug|x64.ActiveCfg = Debug|x64
|
||||||
{74485049-C722-400F-ABE5-86AC52D929B3}.Debug|x64.Build.0 = Debug|x64
|
{74485049-C722-400F-ABE5-86AC52D929B3}.Debug|x64.Build.0 = Debug|x64
|
||||||
{74485049-C722-400F-ABE5-86AC52D929B3}.Release|Any CPU.ActiveCfg = Release|x64
|
|
||||||
{74485049-C722-400F-ABE5-86AC52D929B3}.Release|x64.ActiveCfg = Release|x64
|
{74485049-C722-400F-ABE5-86AC52D929B3}.Release|x64.ActiveCfg = Release|x64
|
||||||
{74485049-C722-400F-ABE5-86AC52D929B3}.Release|x64.Build.0 = Release|x64
|
{74485049-C722-400F-ABE5-86AC52D929B3}.Release|x64.Build.0 = Release|x64
|
||||||
{A46629C4-1A6C-40FA-A8B6-10E5102BB0BA}.Debug|Any CPU.ActiveCfg = Debug|x64
|
|
||||||
{A46629C4-1A6C-40FA-A8B6-10E5102BB0BA}.Debug|x64.ActiveCfg = Debug|x64
|
{A46629C4-1A6C-40FA-A8B6-10E5102BB0BA}.Debug|x64.ActiveCfg = Debug|x64
|
||||||
{A46629C4-1A6C-40FA-A8B6-10E5102BB0BA}.Debug|x64.Build.0 = Debug|x64
|
{A46629C4-1A6C-40FA-A8B6-10E5102BB0BA}.Debug|x64.Build.0 = Debug|x64
|
||||||
{A46629C4-1A6C-40FA-A8B6-10E5102BB0BA}.Release|Any CPU.ActiveCfg = Release|x64
|
|
||||||
{A46629C4-1A6C-40FA-A8B6-10E5102BB0BA}.Release|x64.ActiveCfg = Release|x64
|
{A46629C4-1A6C-40FA-A8B6-10E5102BB0BA}.Release|x64.ActiveCfg = Release|x64
|
||||||
{A46629C4-1A6C-40FA-A8B6-10E5102BB0BA}.Release|x64.Build.0 = Release|x64
|
{A46629C4-1A6C-40FA-A8B6-10E5102BB0BA}.Release|x64.Build.0 = Release|x64
|
||||||
{44CC9375-3E6E-4D99-8913-7FB748807EBD}.Debug|Any CPU.ActiveCfg = Debug|x64
|
|
||||||
{44CC9375-3E6E-4D99-8913-7FB748807EBD}.Debug|x64.ActiveCfg = Debug|x64
|
{44CC9375-3E6E-4D99-8913-7FB748807EBD}.Debug|x64.ActiveCfg = Debug|x64
|
||||||
{44CC9375-3E6E-4D99-8913-7FB748807EBD}.Debug|x64.Build.0 = Debug|x64
|
{44CC9375-3E6E-4D99-8913-7FB748807EBD}.Debug|x64.Build.0 = Debug|x64
|
||||||
{44CC9375-3E6E-4D99-8913-7FB748807EBD}.Release|Any CPU.ActiveCfg = Release|x64
|
|
||||||
{44CC9375-3E6E-4D99-8913-7FB748807EBD}.Release|x64.ActiveCfg = Release|x64
|
{44CC9375-3E6E-4D99-8913-7FB748807EBD}.Release|x64.ActiveCfg = Release|x64
|
||||||
{44CC9375-3E6E-4D99-8913-7FB748807EBD}.Release|x64.Build.0 = Release|x64
|
{44CC9375-3E6E-4D99-8913-7FB748807EBD}.Release|x64.Build.0 = Release|x64
|
||||||
{07C389E3-6BC8-41CF-923E-307B1265FA2D}.Debug|Any CPU.ActiveCfg = Debug|x64
|
|
||||||
{07C389E3-6BC8-41CF-923E-307B1265FA2D}.Debug|x64.ActiveCfg = Debug|x64
|
{07C389E3-6BC8-41CF-923E-307B1265FA2D}.Debug|x64.ActiveCfg = Debug|x64
|
||||||
{07C389E3-6BC8-41CF-923E-307B1265FA2D}.Debug|x64.Build.0 = Debug|x64
|
{07C389E3-6BC8-41CF-923E-307B1265FA2D}.Debug|x64.Build.0 = Debug|x64
|
||||||
{07C389E3-6BC8-41CF-923E-307B1265FA2D}.Release|Any CPU.ActiveCfg = Release|x64
|
|
||||||
{07C389E3-6BC8-41CF-923E-307B1265FA2D}.Release|x64.ActiveCfg = Release|x64
|
{07C389E3-6BC8-41CF-923E-307B1265FA2D}.Release|x64.ActiveCfg = Release|x64
|
||||||
{07C389E3-6BC8-41CF-923E-307B1265FA2D}.Release|x64.Build.0 = Release|x64
|
{07C389E3-6BC8-41CF-923E-307B1265FA2D}.Release|x64.Build.0 = Release|x64
|
||||||
{F9C68EDF-AC74-4B77-9AF1-005D9C9F6A99}.Debug|Any CPU.ActiveCfg = Debug|x64
|
|
||||||
{F9C68EDF-AC74-4B77-9AF1-005D9C9F6A99}.Debug|x64.ActiveCfg = Debug|x64
|
{F9C68EDF-AC74-4B77-9AF1-005D9C9F6A99}.Debug|x64.ActiveCfg = Debug|x64
|
||||||
{F9C68EDF-AC74-4B77-9AF1-005D9C9F6A99}.Debug|x64.Build.0 = Debug|x64
|
{F9C68EDF-AC74-4B77-9AF1-005D9C9F6A99}.Debug|x64.Build.0 = Debug|x64
|
||||||
{F9C68EDF-AC74-4B77-9AF1-005D9C9F6A99}.Release|Any CPU.ActiveCfg = Release|x64
|
|
||||||
{F9C68EDF-AC74-4B77-9AF1-005D9C9F6A99}.Release|x64.ActiveCfg = Release|x64
|
{F9C68EDF-AC74-4B77-9AF1-005D9C9F6A99}.Release|x64.ActiveCfg = Release|x64
|
||||||
{F9C68EDF-AC74-4B77-9AF1-005D9C9F6A99}.Release|x64.Build.0 = Release|x64
|
{F9C68EDF-AC74-4B77-9AF1-005D9C9F6A99}.Release|x64.Build.0 = Release|x64
|
||||||
{48804216-2A0E-4168-A6D8-9CD068D14227}.Debug|Any CPU.ActiveCfg = Debug|x64
|
|
||||||
{48804216-2A0E-4168-A6D8-9CD068D14227}.Debug|x64.ActiveCfg = Debug|x64
|
{48804216-2A0E-4168-A6D8-9CD068D14227}.Debug|x64.ActiveCfg = Debug|x64
|
||||||
{48804216-2A0E-4168-A6D8-9CD068D14227}.Debug|x64.Build.0 = Debug|x64
|
{48804216-2A0E-4168-A6D8-9CD068D14227}.Debug|x64.Build.0 = Debug|x64
|
||||||
{48804216-2A0E-4168-A6D8-9CD068D14227}.Release|Any CPU.ActiveCfg = Release|x64
|
|
||||||
{48804216-2A0E-4168-A6D8-9CD068D14227}.Release|x64.ActiveCfg = Release|x64
|
{48804216-2A0E-4168-A6D8-9CD068D14227}.Release|x64.ActiveCfg = Release|x64
|
||||||
{48804216-2A0E-4168-A6D8-9CD068D14227}.Release|x64.Build.0 = Release|x64
|
{48804216-2A0E-4168-A6D8-9CD068D14227}.Release|x64.Build.0 = Release|x64
|
||||||
{9C6A7905-72D4-4BF5-B256-ABFDAEF68AE9}.Debug|Any CPU.ActiveCfg = Debug|x64
|
|
||||||
{9C6A7905-72D4-4BF5-B256-ABFDAEF68AE9}.Debug|x64.ActiveCfg = Debug|x64
|
{9C6A7905-72D4-4BF5-B256-ABFDAEF68AE9}.Debug|x64.ActiveCfg = Debug|x64
|
||||||
{9C6A7905-72D4-4BF5-B256-ABFDAEF68AE9}.Debug|x64.Build.0 = Debug|x64
|
{9C6A7905-72D4-4BF5-B256-ABFDAEF68AE9}.Debug|x64.Build.0 = Debug|x64
|
||||||
{9C6A7905-72D4-4BF5-B256-ABFDAEF68AE9}.Release|Any CPU.ActiveCfg = Release|x64
|
|
||||||
{9C6A7905-72D4-4BF5-B256-ABFDAEF68AE9}.Release|x64.ActiveCfg = Release|x64
|
{9C6A7905-72D4-4BF5-B256-ABFDAEF68AE9}.Release|x64.ActiveCfg = Release|x64
|
||||||
{9C6A7905-72D4-4BF5-B256-ABFDAEF68AE9}.Release|x64.Build.0 = Release|x64
|
{9C6A7905-72D4-4BF5-B256-ABFDAEF68AE9}.Release|x64.Build.0 = Release|x64
|
||||||
{1A066C63-64B3-45F8-92FE-664E1CCE8077}.Debug|Any CPU.ActiveCfg = Debug|x64
|
|
||||||
{1A066C63-64B3-45F8-92FE-664E1CCE8077}.Debug|x64.ActiveCfg = Debug|x64
|
{1A066C63-64B3-45F8-92FE-664E1CCE8077}.Debug|x64.ActiveCfg = Debug|x64
|
||||||
{1A066C63-64B3-45F8-92FE-664E1CCE8077}.Debug|x64.Build.0 = Debug|x64
|
{1A066C63-64B3-45F8-92FE-664E1CCE8077}.Debug|x64.Build.0 = Debug|x64
|
||||||
{1A066C63-64B3-45F8-92FE-664E1CCE8077}.Release|Any CPU.ActiveCfg = Release|x64
|
|
||||||
{1A066C63-64B3-45F8-92FE-664E1CCE8077}.Release|x64.ActiveCfg = Release|x64
|
{1A066C63-64B3-45F8-92FE-664E1CCE8077}.Release|x64.ActiveCfg = Release|x64
|
||||||
{1A066C63-64B3-45F8-92FE-664E1CCE8077}.Release|x64.Build.0 = Release|x64
|
{1A066C63-64B3-45F8-92FE-664E1CCE8077}.Release|x64.Build.0 = Release|x64
|
||||||
{5CCC8468-DEC8-4D36-99D4-5C891BEBD481}.Debug|Any CPU.ActiveCfg = Debug|x64
|
|
||||||
{5CCC8468-DEC8-4D36-99D4-5C891BEBD481}.Debug|x64.ActiveCfg = Debug|x64
|
{5CCC8468-DEC8-4D36-99D4-5C891BEBD481}.Debug|x64.ActiveCfg = Debug|x64
|
||||||
{5CCC8468-DEC8-4D36-99D4-5C891BEBD481}.Debug|x64.Build.0 = Debug|x64
|
{5CCC8468-DEC8-4D36-99D4-5C891BEBD481}.Debug|x64.Build.0 = Debug|x64
|
||||||
{5CCC8468-DEC8-4D36-99D4-5C891BEBD481}.Release|Any CPU.ActiveCfg = Release|x64
|
|
||||||
{5CCC8468-DEC8-4D36-99D4-5C891BEBD481}.Release|x64.ActiveCfg = Release|x64
|
{5CCC8468-DEC8-4D36-99D4-5C891BEBD481}.Release|x64.ActiveCfg = Release|x64
|
||||||
{5CCC8468-DEC8-4D36-99D4-5C891BEBD481}.Release|x64.Build.0 = Release|x64
|
{5CCC8468-DEC8-4D36-99D4-5C891BEBD481}.Release|x64.Build.0 = Release|x64
|
||||||
{B25AC7A5-FB9F-4789-B392-D5C85E948670}.Debug|Any CPU.ActiveCfg = Debug|Win32
|
|
||||||
{B25AC7A5-FB9F-4789-B392-D5C85E948670}.Debug|x64.ActiveCfg = Debug|x64
|
{B25AC7A5-FB9F-4789-B392-D5C85E948670}.Debug|x64.ActiveCfg = Debug|x64
|
||||||
{B25AC7A5-FB9F-4789-B392-D5C85E948670}.Debug|x64.Build.0 = Debug|x64
|
{B25AC7A5-FB9F-4789-B392-D5C85E948670}.Debug|x64.Build.0 = Debug|x64
|
||||||
{B25AC7A5-FB9F-4789-B392-D5C85E948670}.Release|Any CPU.ActiveCfg = Release|Win32
|
|
||||||
{B25AC7A5-FB9F-4789-B392-D5C85E948670}.Release|x64.ActiveCfg = Release|x64
|
{B25AC7A5-FB9F-4789-B392-D5C85E948670}.Release|x64.ActiveCfg = Release|x64
|
||||||
{B25AC7A5-FB9F-4789-B392-D5C85E948670}.Release|x64.Build.0 = Release|x64
|
{B25AC7A5-FB9F-4789-B392-D5C85E948670}.Release|x64.Build.0 = Release|x64
|
||||||
{51920F1F-C28C-4ADF-8660-4238766796C2}.Debug|Any CPU.ActiveCfg = Debug|Win32
|
|
||||||
{51920F1F-C28C-4ADF-8660-4238766796C2}.Debug|x64.ActiveCfg = Debug|x64
|
{51920F1F-C28C-4ADF-8660-4238766796C2}.Debug|x64.ActiveCfg = Debug|x64
|
||||||
{51920F1F-C28C-4ADF-8660-4238766796C2}.Debug|x64.Build.0 = Debug|x64
|
{51920F1F-C28C-4ADF-8660-4238766796C2}.Debug|x64.Build.0 = Debug|x64
|
||||||
{51920F1F-C28C-4ADF-8660-4238766796C2}.Release|Any CPU.ActiveCfg = Release|Win32
|
|
||||||
{51920F1F-C28C-4ADF-8660-4238766796C2}.Release|x64.ActiveCfg = Release|x64
|
{51920F1F-C28C-4ADF-8660-4238766796C2}.Release|x64.ActiveCfg = Release|x64
|
||||||
{51920F1F-C28C-4ADF-8660-4238766796C2}.Release|x64.Build.0 = Release|x64
|
{51920F1F-C28C-4ADF-8660-4238766796C2}.Release|x64.Build.0 = Release|x64
|
||||||
{0E072714-D127-460B-AFAD-B4C40B412798}.Debug|Any CPU.ActiveCfg = Debug|x64
|
|
||||||
{0E072714-D127-460B-AFAD-B4C40B412798}.Debug|x64.ActiveCfg = Debug|x64
|
{0E072714-D127-460B-AFAD-B4C40B412798}.Debug|x64.ActiveCfg = Debug|x64
|
||||||
{0E072714-D127-460B-AFAD-B4C40B412798}.Debug|x64.Build.0 = Debug|x64
|
{0E072714-D127-460B-AFAD-B4C40B412798}.Debug|x64.Build.0 = Debug|x64
|
||||||
{0E072714-D127-460B-AFAD-B4C40B412798}.Release|Any CPU.ActiveCfg = Release|x64
|
|
||||||
{0E072714-D127-460B-AFAD-B4C40B412798}.Release|x64.ActiveCfg = Release|x64
|
{0E072714-D127-460B-AFAD-B4C40B412798}.Release|x64.ActiveCfg = Release|x64
|
||||||
{0E072714-D127-460B-AFAD-B4C40B412798}.Release|x64.Build.0 = Release|x64
|
{0E072714-D127-460B-AFAD-B4C40B412798}.Release|x64.Build.0 = Release|x64
|
||||||
{A3935CF4-46C5-4A88-84D3-6B12E16E6BA2}.Debug|Any CPU.ActiveCfg = Debug|Win32
|
|
||||||
{A3935CF4-46C5-4A88-84D3-6B12E16E6BA2}.Debug|x64.ActiveCfg = Debug|x64
|
{A3935CF4-46C5-4A88-84D3-6B12E16E6BA2}.Debug|x64.ActiveCfg = Debug|x64
|
||||||
{A3935CF4-46C5-4A88-84D3-6B12E16E6BA2}.Debug|x64.Build.0 = Debug|x64
|
{A3935CF4-46C5-4A88-84D3-6B12E16E6BA2}.Debug|x64.Build.0 = Debug|x64
|
||||||
{A3935CF4-46C5-4A88-84D3-6B12E16E6BA2}.Release|Any CPU.ActiveCfg = Release|Win32
|
|
||||||
{A3935CF4-46C5-4A88-84D3-6B12E16E6BA2}.Release|x64.ActiveCfg = Release|x64
|
{A3935CF4-46C5-4A88-84D3-6B12E16E6BA2}.Release|x64.ActiveCfg = Release|x64
|
||||||
{A3935CF4-46C5-4A88-84D3-6B12E16E6BA2}.Release|x64.Build.0 = Release|x64
|
{A3935CF4-46C5-4A88-84D3-6B12E16E6BA2}.Release|x64.Build.0 = Release|x64
|
||||||
{2151F984-E006-4A9F-92EF-C6DDE3DC8413}.Debug|Any CPU.ActiveCfg = Debug|Win32
|
|
||||||
{2151F984-E006-4A9F-92EF-C6DDE3DC8413}.Debug|x64.ActiveCfg = Debug|x64
|
{2151F984-E006-4A9F-92EF-C6DDE3DC8413}.Debug|x64.ActiveCfg = Debug|x64
|
||||||
{2151F984-E006-4A9F-92EF-C6DDE3DC8413}.Debug|x64.Build.0 = Debug|x64
|
{2151F984-E006-4A9F-92EF-C6DDE3DC8413}.Debug|x64.Build.0 = Debug|x64
|
||||||
{2151F984-E006-4A9F-92EF-C6DDE3DC8413}.Release|Any CPU.ActiveCfg = Release|Win32
|
|
||||||
{2151F984-E006-4A9F-92EF-C6DDE3DC8413}.Release|x64.ActiveCfg = Release|x64
|
{2151F984-E006-4A9F-92EF-C6DDE3DC8413}.Release|x64.ActiveCfg = Release|x64
|
||||||
{2151F984-E006-4A9F-92EF-C6DDE3DC8413}.Release|x64.Build.0 = Release|x64
|
{2151F984-E006-4A9F-92EF-C6DDE3DC8413}.Release|x64.Build.0 = Release|x64
|
||||||
{64A80062-4D8B-4229-8A38-DFA1D7497749}.Debug|Any CPU.ActiveCfg = Debug|x64
|
|
||||||
{64A80062-4D8B-4229-8A38-DFA1D7497749}.Debug|x64.ActiveCfg = Debug|x64
|
{64A80062-4D8B-4229-8A38-DFA1D7497749}.Debug|x64.ActiveCfg = Debug|x64
|
||||||
{64A80062-4D8B-4229-8A38-DFA1D7497749}.Debug|x64.Build.0 = Debug|x64
|
{64A80062-4D8B-4229-8A38-DFA1D7497749}.Debug|x64.Build.0 = Debug|x64
|
||||||
{64A80062-4D8B-4229-8A38-DFA1D7497749}.Release|Any CPU.ActiveCfg = Release|x64
|
|
||||||
{64A80062-4D8B-4229-8A38-DFA1D7497749}.Release|x64.ActiveCfg = Release|x64
|
{64A80062-4D8B-4229-8A38-DFA1D7497749}.Release|x64.ActiveCfg = Release|x64
|
||||||
{64A80062-4D8B-4229-8A38-DFA1D7497749}.Release|x64.Build.0 = Release|x64
|
{64A80062-4D8B-4229-8A38-DFA1D7497749}.Release|x64.Build.0 = Release|x64
|
||||||
{0485F45C-EA7A-4BB5-804B-3E8D14699387}.Debug|Any CPU.ActiveCfg = Debug|x64
|
|
||||||
{0485F45C-EA7A-4BB5-804B-3E8D14699387}.Debug|x64.ActiveCfg = Debug|x64
|
{0485F45C-EA7A-4BB5-804B-3E8D14699387}.Debug|x64.ActiveCfg = Debug|x64
|
||||||
{0485F45C-EA7A-4BB5-804B-3E8D14699387}.Debug|x64.Build.0 = Debug|x64
|
{0485F45C-EA7A-4BB5-804B-3E8D14699387}.Debug|x64.Build.0 = Debug|x64
|
||||||
{0485F45C-EA7A-4BB5-804B-3E8D14699387}.Release|Any CPU.ActiveCfg = Release|x64
|
|
||||||
{0485F45C-EA7A-4BB5-804B-3E8D14699387}.Release|x64.ActiveCfg = Release|x64
|
{0485F45C-EA7A-4BB5-804B-3E8D14699387}.Release|x64.ActiveCfg = Release|x64
|
||||||
{0485F45C-EA7A-4BB5-804B-3E8D14699387}.Release|x64.Build.0 = Release|x64
|
{0485F45C-EA7A-4BB5-804B-3E8D14699387}.Release|x64.Build.0 = Release|x64
|
||||||
{0B593A6C-4143-4337-860E-DB5710FB87DB}.Debug|Any CPU.ActiveCfg = Debug|Win32
|
|
||||||
{0B593A6C-4143-4337-860E-DB5710FB87DB}.Debug|x64.ActiveCfg = Debug|x64
|
{0B593A6C-4143-4337-860E-DB5710FB87DB}.Debug|x64.ActiveCfg = Debug|x64
|
||||||
{0B593A6C-4143-4337-860E-DB5710FB87DB}.Debug|x64.Build.0 = Debug|x64
|
{0B593A6C-4143-4337-860E-DB5710FB87DB}.Debug|x64.Build.0 = Debug|x64
|
||||||
{0B593A6C-4143-4337-860E-DB5710FB87DB}.Release|Any CPU.ActiveCfg = Release|Win32
|
|
||||||
{0B593A6C-4143-4337-860E-DB5710FB87DB}.Release|x64.ActiveCfg = Release|x64
|
{0B593A6C-4143-4337-860E-DB5710FB87DB}.Release|x64.ActiveCfg = Release|x64
|
||||||
{0B593A6C-4143-4337-860E-DB5710FB87DB}.Release|x64.Build.0 = Release|x64
|
{0B593A6C-4143-4337-860E-DB5710FB87DB}.Release|x64.Build.0 = Release|x64
|
||||||
{031AC72E-FA28-4AB7-B690-6F7B9C28AA73}.Debug|Any CPU.ActiveCfg = Debug|Win32
|
|
||||||
{031AC72E-FA28-4AB7-B690-6F7B9C28AA73}.Debug|x64.ActiveCfg = Debug|x64
|
{031AC72E-FA28-4AB7-B690-6F7B9C28AA73}.Debug|x64.ActiveCfg = Debug|x64
|
||||||
{031AC72E-FA28-4AB7-B690-6F7B9C28AA73}.Debug|x64.Build.0 = Debug|x64
|
{031AC72E-FA28-4AB7-B690-6F7B9C28AA73}.Debug|x64.Build.0 = Debug|x64
|
||||||
{031AC72E-FA28-4AB7-B690-6F7B9C28AA73}.Release|Any CPU.ActiveCfg = Release|Win32
|
|
||||||
{031AC72E-FA28-4AB7-B690-6F7B9C28AA73}.Release|x64.ActiveCfg = Release|x64
|
{031AC72E-FA28-4AB7-B690-6F7B9C28AA73}.Release|x64.ActiveCfg = Release|x64
|
||||||
{031AC72E-FA28-4AB7-B690-6F7B9C28AA73}.Release|x64.Build.0 = Release|x64
|
{031AC72E-FA28-4AB7-B690-6F7B9C28AA73}.Release|x64.Build.0 = Release|x64
|
||||||
{B9BDF8BE-FED7-49B5-A7AE-DD4D1CA2D9EB}.Debug|Any CPU.ActiveCfg = Debug|x64
|
|
||||||
{B9BDF8BE-FED7-49B5-A7AE-DD4D1CA2D9EB}.Debug|x64.ActiveCfg = Debug|x64
|
{B9BDF8BE-FED7-49B5-A7AE-DD4D1CA2D9EB}.Debug|x64.ActiveCfg = Debug|x64
|
||||||
{B9BDF8BE-FED7-49B5-A7AE-DD4D1CA2D9EB}.Debug|x64.Build.0 = Debug|x64
|
{B9BDF8BE-FED7-49B5-A7AE-DD4D1CA2D9EB}.Debug|x64.Build.0 = Debug|x64
|
||||||
{B9BDF8BE-FED7-49B5-A7AE-DD4D1CA2D9EB}.Release|Any CPU.ActiveCfg = Release|x64
|
|
||||||
{B9BDF8BE-FED7-49B5-A7AE-DD4D1CA2D9EB}.Release|x64.ActiveCfg = Release|x64
|
{B9BDF8BE-FED7-49B5-A7AE-DD4D1CA2D9EB}.Release|x64.ActiveCfg = Release|x64
|
||||||
{B9BDF8BE-FED7-49B5-A7AE-DD4D1CA2D9EB}.Release|x64.Build.0 = Release|x64
|
{B9BDF8BE-FED7-49B5-A7AE-DD4D1CA2D9EB}.Release|x64.Build.0 = Release|x64
|
||||||
{51D3BD1F-07A8-48EB-B2A0-0A249CD4E1A6}.Debug|Any CPU.ActiveCfg = Debug|x64
|
|
||||||
{51D3BD1F-07A8-48EB-B2A0-0A249CD4E1A6}.Debug|x64.ActiveCfg = Debug|x64
|
{51D3BD1F-07A8-48EB-B2A0-0A249CD4E1A6}.Debug|x64.ActiveCfg = Debug|x64
|
||||||
{51D3BD1F-07A8-48EB-B2A0-0A249CD4E1A6}.Debug|x64.Build.0 = Debug|x64
|
{51D3BD1F-07A8-48EB-B2A0-0A249CD4E1A6}.Debug|x64.Build.0 = Debug|x64
|
||||||
{51D3BD1F-07A8-48EB-B2A0-0A249CD4E1A6}.Release|Any CPU.ActiveCfg = Release|x64
|
|
||||||
{51D3BD1F-07A8-48EB-B2A0-0A249CD4E1A6}.Release|x64.ActiveCfg = Release|x64
|
{51D3BD1F-07A8-48EB-B2A0-0A249CD4E1A6}.Release|x64.ActiveCfg = Release|x64
|
||||||
{51D3BD1F-07A8-48EB-B2A0-0A249CD4E1A6}.Release|x64.Build.0 = Release|x64
|
{51D3BD1F-07A8-48EB-B2A0-0A249CD4E1A6}.Release|x64.Build.0 = Release|x64
|
||||||
{D29DDD63-E2CF-4657-9FD5-2AEDE4257E5D}.Debug|Any CPU.ActiveCfg = Debug|Win32
|
|
||||||
{D29DDD63-E2CF-4657-9FD5-2AEDE4257E5D}.Debug|x64.ActiveCfg = Debug|x64
|
{D29DDD63-E2CF-4657-9FD5-2AEDE4257E5D}.Debug|x64.ActiveCfg = Debug|x64
|
||||||
{D29DDD63-E2CF-4657-9FD5-2AEDE4257E5D}.Debug|x64.Build.0 = Debug|x64
|
{D29DDD63-E2CF-4657-9FD5-2AEDE4257E5D}.Debug|x64.Build.0 = Debug|x64
|
||||||
{D29DDD63-E2CF-4657-9FD5-2AEDE4257E5D}.Release|Any CPU.ActiveCfg = Release|Win32
|
|
||||||
{D29DDD63-E2CF-4657-9FD5-2AEDE4257E5D}.Release|x64.ActiveCfg = Release|x64
|
{D29DDD63-E2CF-4657-9FD5-2AEDE4257E5D}.Release|x64.ActiveCfg = Release|x64
|
||||||
{D29DDD63-E2CF-4657-9FD5-2AEDE4257E5D}.Release|x64.Build.0 = Release|x64
|
{D29DDD63-E2CF-4657-9FD5-2AEDE4257E5D}.Release|x64.Build.0 = Release|x64
|
||||||
{17DA04DF-E393-4397-9CF0-84DABE11032E}.Debug|Any CPU.ActiveCfg = Debug|Win32
|
|
||||||
{17DA04DF-E393-4397-9CF0-84DABE11032E}.Debug|x64.ActiveCfg = Debug|x64
|
{17DA04DF-E393-4397-9CF0-84DABE11032E}.Debug|x64.ActiveCfg = Debug|x64
|
||||||
{17DA04DF-E393-4397-9CF0-84DABE11032E}.Debug|x64.Build.0 = Debug|x64
|
{17DA04DF-E393-4397-9CF0-84DABE11032E}.Debug|x64.Build.0 = Debug|x64
|
||||||
{17DA04DF-E393-4397-9CF0-84DABE11032E}.Release|Any CPU.ActiveCfg = Release|Win32
|
|
||||||
{17DA04DF-E393-4397-9CF0-84DABE11032E}.Release|x64.ActiveCfg = Release|x64
|
{17DA04DF-E393-4397-9CF0-84DABE11032E}.Release|x64.ActiveCfg = Release|x64
|
||||||
{17DA04DF-E393-4397-9CF0-84DABE11032E}.Release|x64.Build.0 = Release|x64
|
{17DA04DF-E393-4397-9CF0-84DABE11032E}.Release|x64.Build.0 = Release|x64
|
||||||
{DB90F671-D861-46BB-93A3-F1304F5BA1C5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
|
||||||
{DB90F671-D861-46BB-93A3-F1304F5BA1C5}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
|
||||||
{DB90F671-D861-46BB-93A3-F1304F5BA1C5}.Debug|x64.ActiveCfg = Debug|Any CPU
|
{DB90F671-D861-46BB-93A3-F1304F5BA1C5}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||||
{DB90F671-D861-46BB-93A3-F1304F5BA1C5}.Debug|x64.Build.0 = Debug|Any CPU
|
{DB90F671-D861-46BB-93A3-F1304F5BA1C5}.Debug|x64.Build.0 = Debug|Any CPU
|
||||||
{DB90F671-D861-46BB-93A3-F1304F5BA1C5}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
|
||||||
{DB90F671-D861-46BB-93A3-F1304F5BA1C5}.Release|Any CPU.Build.0 = Release|Any CPU
|
|
||||||
{DB90F671-D861-46BB-93A3-F1304F5BA1C5}.Release|x64.ActiveCfg = Release|Any CPU
|
{DB90F671-D861-46BB-93A3-F1304F5BA1C5}.Release|x64.ActiveCfg = Release|Any CPU
|
||||||
{DB90F671-D861-46BB-93A3-F1304F5BA1C5}.Release|x64.Build.0 = Release|Any CPU
|
{DB90F671-D861-46BB-93A3-F1304F5BA1C5}.Release|x64.Build.0 = Release|Any CPU
|
||||||
{B749F0DB-8E75-47DB-9E5E-265D16D0C0D2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
|
||||||
{B749F0DB-8E75-47DB-9E5E-265D16D0C0D2}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
|
||||||
{B749F0DB-8E75-47DB-9E5E-265D16D0C0D2}.Debug|x64.ActiveCfg = Debug|Any CPU
|
{B749F0DB-8E75-47DB-9E5E-265D16D0C0D2}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||||
{B749F0DB-8E75-47DB-9E5E-265D16D0C0D2}.Debug|x64.Build.0 = Debug|Any CPU
|
{B749F0DB-8E75-47DB-9E5E-265D16D0C0D2}.Debug|x64.Build.0 = Debug|Any CPU
|
||||||
{B749F0DB-8E75-47DB-9E5E-265D16D0C0D2}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
|
||||||
{B749F0DB-8E75-47DB-9E5E-265D16D0C0D2}.Release|Any CPU.Build.0 = Release|Any CPU
|
|
||||||
{B749F0DB-8E75-47DB-9E5E-265D16D0C0D2}.Release|x64.ActiveCfg = Release|Any CPU
|
{B749F0DB-8E75-47DB-9E5E-265D16D0C0D2}.Release|x64.ActiveCfg = Release|Any CPU
|
||||||
{B749F0DB-8E75-47DB-9E5E-265D16D0C0D2}.Release|x64.Build.0 = Release|Any CPU
|
{B749F0DB-8E75-47DB-9E5E-265D16D0C0D2}.Release|x64.Build.0 = Release|Any CPU
|
||||||
{4FD29318-A8AB-4D8F-AA47-60BC241B8DA3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
|
||||||
{4FD29318-A8AB-4D8F-AA47-60BC241B8DA3}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
|
||||||
{4FD29318-A8AB-4D8F-AA47-60BC241B8DA3}.Debug|x64.ActiveCfg = Debug|Any CPU
|
{4FD29318-A8AB-4D8F-AA47-60BC241B8DA3}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||||
{4FD29318-A8AB-4D8F-AA47-60BC241B8DA3}.Debug|x64.Build.0 = Debug|Any CPU
|
{4FD29318-A8AB-4D8F-AA47-60BC241B8DA3}.Debug|x64.Build.0 = Debug|Any CPU
|
||||||
{4FD29318-A8AB-4D8F-AA47-60BC241B8DA3}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
|
||||||
{4FD29318-A8AB-4D8F-AA47-60BC241B8DA3}.Release|Any CPU.Build.0 = Release|Any CPU
|
|
||||||
{4FD29318-A8AB-4D8F-AA47-60BC241B8DA3}.Release|x64.ActiveCfg = Release|Any CPU
|
{4FD29318-A8AB-4D8F-AA47-60BC241B8DA3}.Release|x64.ActiveCfg = Release|Any CPU
|
||||||
{4FD29318-A8AB-4D8F-AA47-60BC241B8DA3}.Release|x64.Build.0 = Release|Any CPU
|
{4FD29318-A8AB-4D8F-AA47-60BC241B8DA3}.Release|x64.Build.0 = Release|Any CPU
|
||||||
{8451ECDD-2EA4-4966-BB0A-7BBC40138E80}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
|
||||||
{8451ECDD-2EA4-4966-BB0A-7BBC40138E80}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
|
||||||
{8451ECDD-2EA4-4966-BB0A-7BBC40138E80}.Debug|x64.ActiveCfg = Debug|Any CPU
|
{8451ECDD-2EA4-4966-BB0A-7BBC40138E80}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||||
{8451ECDD-2EA4-4966-BB0A-7BBC40138E80}.Debug|x64.Build.0 = Debug|Any CPU
|
{8451ECDD-2EA4-4966-BB0A-7BBC40138E80}.Debug|x64.Build.0 = Debug|Any CPU
|
||||||
{8451ECDD-2EA4-4966-BB0A-7BBC40138E80}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
|
||||||
{8451ECDD-2EA4-4966-BB0A-7BBC40138E80}.Release|Any CPU.Build.0 = Release|Any CPU
|
|
||||||
{8451ECDD-2EA4-4966-BB0A-7BBC40138E80}.Release|x64.ActiveCfg = Release|Any CPU
|
{8451ECDD-2EA4-4966-BB0A-7BBC40138E80}.Release|x64.ActiveCfg = Release|Any CPU
|
||||||
{8451ECDD-2EA4-4966-BB0A-7BBC40138E80}.Release|x64.Build.0 = Release|Any CPU
|
{8451ECDD-2EA4-4966-BB0A-7BBC40138E80}.Release|x64.Build.0 = Release|Any CPU
|
||||||
{FF742965-9A80-41A5-B042-D6C7D3A21708}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
|
||||||
{FF742965-9A80-41A5-B042-D6C7D3A21708}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
|
||||||
{FF742965-9A80-41A5-B042-D6C7D3A21708}.Debug|x64.ActiveCfg = Debug|Any CPU
|
{FF742965-9A80-41A5-B042-D6C7D3A21708}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||||
{FF742965-9A80-41A5-B042-D6C7D3A21708}.Debug|x64.Build.0 = Debug|Any CPU
|
{FF742965-9A80-41A5-B042-D6C7D3A21708}.Debug|x64.Build.0 = Debug|Any CPU
|
||||||
{FF742965-9A80-41A5-B042-D6C7D3A21708}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
|
||||||
{FF742965-9A80-41A5-B042-D6C7D3A21708}.Release|Any CPU.Build.0 = Release|Any CPU
|
|
||||||
{FF742965-9A80-41A5-B042-D6C7D3A21708}.Release|x64.ActiveCfg = Release|Any CPU
|
{FF742965-9A80-41A5-B042-D6C7D3A21708}.Release|x64.ActiveCfg = Release|Any CPU
|
||||||
{FF742965-9A80-41A5-B042-D6C7D3A21708}.Release|x64.Build.0 = Release|Any CPU
|
{FF742965-9A80-41A5-B042-D6C7D3A21708}.Release|x64.Build.0 = Release|Any CPU
|
||||||
{59BD9891-3837-438A-958D-ADC7F91F6F7E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
|
||||||
{59BD9891-3837-438A-958D-ADC7F91F6F7E}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
|
||||||
{59BD9891-3837-438A-958D-ADC7F91F6F7E}.Debug|x64.ActiveCfg = Debug|Any CPU
|
{59BD9891-3837-438A-958D-ADC7F91F6F7E}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||||
{59BD9891-3837-438A-958D-ADC7F91F6F7E}.Debug|x64.Build.0 = Debug|Any CPU
|
{59BD9891-3837-438A-958D-ADC7F91F6F7E}.Debug|x64.Build.0 = Debug|Any CPU
|
||||||
{59BD9891-3837-438A-958D-ADC7F91F6F7E}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
|
||||||
{59BD9891-3837-438A-958D-ADC7F91F6F7E}.Release|Any CPU.Build.0 = Release|Any CPU
|
|
||||||
{59BD9891-3837-438A-958D-ADC7F91F6F7E}.Release|x64.ActiveCfg = Release|Any CPU
|
{59BD9891-3837-438A-958D-ADC7F91F6F7E}.Release|x64.ActiveCfg = Release|Any CPU
|
||||||
{59BD9891-3837-438A-958D-ADC7F91F6F7E}.Release|x64.Build.0 = Release|Any CPU
|
{59BD9891-3837-438A-958D-ADC7F91F6F7E}.Release|x64.Build.0 = Release|Any CPU
|
||||||
{FDB3555B-58EF-4AE6-B5F1-904719637AB4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
|
||||||
{FDB3555B-58EF-4AE6-B5F1-904719637AB4}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
|
||||||
{FDB3555B-58EF-4AE6-B5F1-904719637AB4}.Debug|x64.ActiveCfg = Debug|Any CPU
|
{FDB3555B-58EF-4AE6-B5F1-904719637AB4}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||||
{FDB3555B-58EF-4AE6-B5F1-904719637AB4}.Debug|x64.Build.0 = Debug|Any CPU
|
{FDB3555B-58EF-4AE6-B5F1-904719637AB4}.Debug|x64.Build.0 = Debug|Any CPU
|
||||||
{FDB3555B-58EF-4AE6-B5F1-904719637AB4}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
|
||||||
{FDB3555B-58EF-4AE6-B5F1-904719637AB4}.Release|Any CPU.Build.0 = Release|Any CPU
|
|
||||||
{FDB3555B-58EF-4AE6-B5F1-904719637AB4}.Release|x64.ActiveCfg = Release|Any CPU
|
{FDB3555B-58EF-4AE6-B5F1-904719637AB4}.Release|x64.ActiveCfg = Release|Any CPU
|
||||||
{FDB3555B-58EF-4AE6-B5F1-904719637AB4}.Release|x64.Build.0 = Release|Any CPU
|
{FDB3555B-58EF-4AE6-B5F1-904719637AB4}.Release|x64.Build.0 = Release|Any CPU
|
||||||
{C21BFF9C-2C99-4B5F-B7C9-A5E6DDDB37B0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
|
||||||
{C21BFF9C-2C99-4B5F-B7C9-A5E6DDDB37B0}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
|
||||||
{C21BFF9C-2C99-4B5F-B7C9-A5E6DDDB37B0}.Debug|x64.ActiveCfg = Debug|Any CPU
|
{C21BFF9C-2C99-4B5F-B7C9-A5E6DDDB37B0}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||||
{C21BFF9C-2C99-4B5F-B7C9-A5E6DDDB37B0}.Debug|x64.Build.0 = Debug|Any CPU
|
{C21BFF9C-2C99-4B5F-B7C9-A5E6DDDB37B0}.Debug|x64.Build.0 = Debug|Any CPU
|
||||||
{C21BFF9C-2C99-4B5F-B7C9-A5E6DDDB37B0}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
|
||||||
{C21BFF9C-2C99-4B5F-B7C9-A5E6DDDB37B0}.Release|Any CPU.Build.0 = Release|Any CPU
|
|
||||||
{C21BFF9C-2C99-4B5F-B7C9-A5E6DDDB37B0}.Release|x64.ActiveCfg = Release|Any CPU
|
{C21BFF9C-2C99-4B5F-B7C9-A5E6DDDB37B0}.Release|x64.ActiveCfg = Release|Any CPU
|
||||||
{C21BFF9C-2C99-4B5F-B7C9-A5E6DDDB37B0}.Release|x64.Build.0 = Release|Any CPU
|
{C21BFF9C-2C99-4B5F-B7C9-A5E6DDDB37B0}.Release|x64.Build.0 = Release|Any CPU
|
||||||
{787B8AA6-CA93-4C84-96FE-DF31110AD1C4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
|
||||||
{787B8AA6-CA93-4C84-96FE-DF31110AD1C4}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
|
||||||
{787B8AA6-CA93-4C84-96FE-DF31110AD1C4}.Debug|x64.ActiveCfg = Debug|Any CPU
|
{787B8AA6-CA93-4C84-96FE-DF31110AD1C4}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||||
{787B8AA6-CA93-4C84-96FE-DF31110AD1C4}.Debug|x64.Build.0 = Debug|Any CPU
|
{787B8AA6-CA93-4C84-96FE-DF31110AD1C4}.Debug|x64.Build.0 = Debug|Any CPU
|
||||||
{787B8AA6-CA93-4C84-96FE-DF31110AD1C4}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
|
||||||
{787B8AA6-CA93-4C84-96FE-DF31110AD1C4}.Release|Any CPU.Build.0 = Release|Any CPU
|
|
||||||
{787B8AA6-CA93-4C84-96FE-DF31110AD1C4}.Release|x64.ActiveCfg = Release|Any CPU
|
{787B8AA6-CA93-4C84-96FE-DF31110AD1C4}.Release|x64.ActiveCfg = Release|Any CPU
|
||||||
{787B8AA6-CA93-4C84-96FE-DF31110AD1C4}.Release|x64.Build.0 = Release|Any CPU
|
{787B8AA6-CA93-4C84-96FE-DF31110AD1C4}.Release|x64.Build.0 = Release|Any CPU
|
||||||
{E364F67B-BB12-4E91-B639-355866EBCD8B}.Debug|Any CPU.ActiveCfg = Debug|x64
|
|
||||||
{E364F67B-BB12-4E91-B639-355866EBCD8B}.Debug|x64.ActiveCfg = Debug|x64
|
{E364F67B-BB12-4E91-B639-355866EBCD8B}.Debug|x64.ActiveCfg = Debug|x64
|
||||||
{E364F67B-BB12-4E91-B639-355866EBCD8B}.Debug|x64.Build.0 = Debug|x64
|
{E364F67B-BB12-4E91-B639-355866EBCD8B}.Debug|x64.Build.0 = Debug|x64
|
||||||
{E364F67B-BB12-4E91-B639-355866EBCD8B}.Release|Any CPU.ActiveCfg = Release|x64
|
|
||||||
{E364F67B-BB12-4E91-B639-355866EBCD8B}.Release|x64.ActiveCfg = Release|x64
|
{E364F67B-BB12-4E91-B639-355866EBCD8B}.Release|x64.ActiveCfg = Release|x64
|
||||||
{E364F67B-BB12-4E91-B639-355866EBCD8B}.Release|x64.Build.0 = Release|x64
|
{E364F67B-BB12-4E91-B639-355866EBCD8B}.Release|x64.Build.0 = Release|x64
|
||||||
|
{63C3CEA8-51FE-472E-B97C-B58F8B17DD51}.Debug|x64.ActiveCfg = Debug|x64
|
||||||
|
{63C3CEA8-51FE-472E-B97C-B58F8B17DD51}.Debug|x64.Build.0 = Debug|x64
|
||||||
|
{63C3CEA8-51FE-472E-B97C-B58F8B17DD51}.Release|x64.ActiveCfg = Release|x64
|
||||||
|
{63C3CEA8-51FE-472E-B97C-B58F8B17DD51}.Release|x64.Build.0 = Release|x64
|
||||||
EndGlobalSection
|
EndGlobalSection
|
||||||
GlobalSection(SolutionProperties) = preSolution
|
GlobalSection(SolutionProperties) = preSolution
|
||||||
HideSolutionNode = FALSE
|
HideSolutionNode = FALSE
|
||||||
@@ -419,6 +339,7 @@ Global
|
|||||||
{C21BFF9C-2C99-4B5F-B7C9-A5E6DDDB37B0} = {4AFC9975-2456-4C70-94A4-84073C1CED93}
|
{C21BFF9C-2C99-4B5F-B7C9-A5E6DDDB37B0} = {4AFC9975-2456-4C70-94A4-84073C1CED93}
|
||||||
{787B8AA6-CA93-4C84-96FE-DF31110AD1C4} = {4AFC9975-2456-4C70-94A4-84073C1CED93}
|
{787B8AA6-CA93-4C84-96FE-DF31110AD1C4} = {4AFC9975-2456-4C70-94A4-84073C1CED93}
|
||||||
{E364F67B-BB12-4E91-B639-355866EBCD8B} = {C140A3EF-6DBF-4084-9D4C-4EB5A99FEE68}
|
{E364F67B-BB12-4E91-B639-355866EBCD8B} = {C140A3EF-6DBF-4084-9D4C-4EB5A99FEE68}
|
||||||
|
{63C3CEA8-51FE-472E-B97C-B58F8B17DD51} = {4AFC9975-2456-4C70-94A4-84073C1CED93}
|
||||||
EndGlobalSection
|
EndGlobalSection
|
||||||
GlobalSection(ExtensibilityGlobals) = postSolution
|
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||||
SolutionGuid = {C3A2F9D1-7930-4EF4-A6FC-7EE0A99821D0}
|
SolutionGuid = {C3A2F9D1-7930-4EF4-A6FC-7EE0A99821D0}
|
||||||
|
|||||||
@@ -87,7 +87,7 @@
|
|||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||||
<ClCompile>
|
<ClCompile>
|
||||||
<PrecompiledHeader>Use</PrecompiledHeader>
|
<PrecompiledHeader>Use</PrecompiledHeader>
|
||||||
<WarningLevel>Level4</WarningLevel>
|
<WarningLevel>Level3</WarningLevel>
|
||||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||||
<SDLCheck>true</SDLCheck>
|
<SDLCheck>true</SDLCheck>
|
||||||
@@ -129,7 +129,7 @@
|
|||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||||
<ClCompile>
|
<ClCompile>
|
||||||
<PrecompiledHeader>Use</PrecompiledHeader>
|
<PrecompiledHeader>Use</PrecompiledHeader>
|
||||||
<WarningLevel>Level4</WarningLevel>
|
<WarningLevel>Level3</WarningLevel>
|
||||||
<SDLCheck>true</SDLCheck>
|
<SDLCheck>true</SDLCheck>
|
||||||
<PreprocessorDefinitions>_DEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
<PreprocessorDefinitions>_DEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
<ConformanceMode>true</ConformanceMode>
|
<ConformanceMode>true</ConformanceMode>
|
||||||
|
|||||||
@@ -1,59 +0,0 @@
|
|||||||
<Project Sdk="Microsoft.NET.Sdk.WindowsDesktop">
|
|
||||||
|
|
||||||
<PropertyGroup>
|
|
||||||
<TargetFramework>netcoreapp3.1</TargetFramework>
|
|
||||||
<ProjectGuid>{03FFA443-5F50-48D5-8869-F3DF316803AA}</ProjectGuid>
|
|
||||||
<AppDesignerFolder>Properties</AppDesignerFolder>
|
|
||||||
<RootNamespace>HelloWorldCSharp</RootNamespace>
|
|
||||||
<AssemblyName>HelloWorldCSharp</AssemblyName>
|
|
||||||
<AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath>
|
|
||||||
<AppendRuntimeIdentifierToOutputPath>false</AppendRuntimeIdentifierToOutputPath>
|
|
||||||
<ApplicationIcon />
|
|
||||||
<OutputType>Library</OutputType>
|
|
||||||
<StartupObject />
|
|
||||||
</PropertyGroup>
|
|
||||||
|
|
||||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
|
||||||
<PlatformTarget>AnyCPU</PlatformTarget>
|
|
||||||
<DebugSymbols>true</DebugSymbols>
|
|
||||||
<DebugType>full</DebugType>
|
|
||||||
<Optimize>false</Optimize>
|
|
||||||
<OutputPath>..\..\Output\Debug\Plugins\HelloWorldCSharp\</OutputPath>
|
|
||||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
|
||||||
<ErrorReport>prompt</ErrorReport>
|
|
||||||
<WarningLevel>4</WarningLevel>
|
|
||||||
<Prefer32Bit>false</Prefer32Bit>
|
|
||||||
</PropertyGroup>
|
|
||||||
|
|
||||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
|
||||||
<PlatformTarget>AnyCPU</PlatformTarget>
|
|
||||||
<DebugType>pdbonly</DebugType>
|
|
||||||
<Optimize>true</Optimize>
|
|
||||||
<OutputPath>..\..\Output\Release\Plugins\HelloWorldCSharp\</OutputPath>
|
|
||||||
<DefineConstants>TRACE</DefineConstants>
|
|
||||||
<ErrorReport>prompt</ErrorReport>
|
|
||||||
<WarningLevel>4</WarningLevel>
|
|
||||||
<Prefer32Bit>false</Prefer32Bit>
|
|
||||||
</PropertyGroup>
|
|
||||||
|
|
||||||
<ItemGroup>
|
|
||||||
<None Include="plugin.json">
|
|
||||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
|
||||||
</None>
|
|
||||||
</ItemGroup>
|
|
||||||
|
|
||||||
<ItemGroup>
|
|
||||||
<ProjectReference Include="..\..\Wox.Plugin\Wox.Plugin.csproj" />
|
|
||||||
</ItemGroup>
|
|
||||||
|
|
||||||
<ItemGroup>
|
|
||||||
<Content Include="Images\app.png">
|
|
||||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
|
||||||
</Content>
|
|
||||||
</ItemGroup>
|
|
||||||
|
|
||||||
<ItemGroup>
|
|
||||||
<Folder Include="Properties\" />
|
|
||||||
</ItemGroup>
|
|
||||||
|
|
||||||
</Project>
|
|
||||||
|
Before Width: | Height: | Size: 11 KiB |
@@ -1,28 +0,0 @@
|
|||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
using Wox.Plugin;
|
|
||||||
|
|
||||||
namespace HelloWorldCSharp
|
|
||||||
{
|
|
||||||
class Main : IPlugin
|
|
||||||
{
|
|
||||||
public List<Result> Query(Query query)
|
|
||||||
{
|
|
||||||
var result = new Result
|
|
||||||
{
|
|
||||||
Title = "Hello World from CSharp",
|
|
||||||
SubTitle = $"Query: {query.Search}",
|
|
||||||
IcoPath = "app.png"
|
|
||||||
};
|
|
||||||
return new List<Result> {result};
|
|
||||||
}
|
|
||||||
|
|
||||||
public void Init(PluginInitContext context)
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,13 +0,0 @@
|
|||||||
{
|
|
||||||
"ID":"CEA0FDFC6D3B4085823D60DC76F28844",
|
|
||||||
"ActionKeyword":"hc",
|
|
||||||
"Name":"Hello World CSharp",
|
|
||||||
"Description":"Hello World CSharp",
|
|
||||||
"Author":"happlebao",
|
|
||||||
"Version":"1.0.0",
|
|
||||||
"Language":"csharp",
|
|
||||||
"Website":"https://github.com/Wox-launcher/Wox",
|
|
||||||
"ExecuteFileName":"HelloWorldCSharp.dll",
|
|
||||||
"IcoPath":"app.png",
|
|
||||||
"Disabled": true
|
|
||||||
}
|
|
||||||
|
Before Width: | Height: | Size: 11 KiB |
@@ -1,27 +0,0 @@
|
|||||||
# -*- coding: utf-8 -*-
|
|
||||||
|
|
||||||
from wox import Wox
|
|
||||||
|
|
||||||
class HelloWorld(Wox):
|
|
||||||
|
|
||||||
def query(self, query):
|
|
||||||
results = []
|
|
||||||
results.append({
|
|
||||||
"Title": "Hello World",
|
|
||||||
"SubTitle": "Query: {}".format(query),
|
|
||||||
"IcoPath":"Images/app.ico",
|
|
||||||
"ContextData": "ctxData"
|
|
||||||
})
|
|
||||||
return results
|
|
||||||
|
|
||||||
def context_menu(self, data):
|
|
||||||
results = []
|
|
||||||
results.append({
|
|
||||||
"Title": "Context menu entry",
|
|
||||||
"SubTitle": "Data: {}".format(data),
|
|
||||||
"IcoPath":"Images/app.ico"
|
|
||||||
})
|
|
||||||
return results
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
|
||||||
HelloWorld()
|
|
||||||
@@ -1,12 +0,0 @@
|
|||||||
{
|
|
||||||
"ID":"2f4e384e-76ce-45c3-aea2-b16f5e5c328f",
|
|
||||||
"ActionKeyword":"h",
|
|
||||||
"Name":"Hello World Python",
|
|
||||||
"Description":"Hello World",
|
|
||||||
"Author":"happlebao",
|
|
||||||
"Version":"1.0",
|
|
||||||
"Language":"python",
|
|
||||||
"Website":"https://github.com/Wox-launcher/Wox",
|
|
||||||
"IcoPath":"Images\\app.png",
|
|
||||||
"ExecuteFileName":"main.py"
|
|
||||||
}
|
|
||||||
@@ -1,58 +0,0 @@
|
|||||||
using BinaryAnalysis.UnidecodeSharp;
|
|
||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
|
|
||||||
|
|
||||||
namespace Wox.Plugin.BrowserBookmark
|
|
||||||
{
|
|
||||||
public class Bookmark : IEquatable<Bookmark>, IEqualityComparer<Bookmark>
|
|
||||||
{
|
|
||||||
private string m_Name;
|
|
||||||
public string Name
|
|
||||||
{
|
|
||||||
get
|
|
||||||
{
|
|
||||||
return m_Name;
|
|
||||||
}
|
|
||||||
set
|
|
||||||
{
|
|
||||||
m_Name = value;
|
|
||||||
PinyinName = m_Name.Unidecode();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
public string PinyinName { get; private set; }
|
|
||||||
public string Url { get; set; }
|
|
||||||
public string Source { get; set; }
|
|
||||||
public int Score { get; set; }
|
|
||||||
|
|
||||||
/* TODO: since Source maybe unimportant, we just need to compare Name and Url */
|
|
||||||
public bool Equals(Bookmark other)
|
|
||||||
{
|
|
||||||
return Equals(this, other);
|
|
||||||
}
|
|
||||||
|
|
||||||
public bool Equals(Bookmark x, Bookmark y)
|
|
||||||
{
|
|
||||||
if (Object.ReferenceEquals(x, y)) return true;
|
|
||||||
if (Object.ReferenceEquals(x, null) || Object.ReferenceEquals(y, null))
|
|
||||||
return false;
|
|
||||||
|
|
||||||
return x.Name == y.Name && x.Url == y.Url;
|
|
||||||
}
|
|
||||||
|
|
||||||
public int GetHashCode(Bookmark bookmark)
|
|
||||||
{
|
|
||||||
if (Object.ReferenceEquals(bookmark, null)) return 0;
|
|
||||||
int hashName = bookmark.Name == null ? 0 : bookmark.Name.GetHashCode();
|
|
||||||
int hashUrl = bookmark.Url == null ? 0 : bookmark.Url.GetHashCode();
|
|
||||||
return hashName ^ hashUrl;
|
|
||||||
}
|
|
||||||
|
|
||||||
public override int GetHashCode()
|
|
||||||
{
|
|
||||||
return GetHashCode(this);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,87 +0,0 @@
|
|||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.IO;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Text.RegularExpressions;
|
|
||||||
|
|
||||||
namespace Wox.Plugin.BrowserBookmark
|
|
||||||
{
|
|
||||||
public class ChromeBookmarks
|
|
||||||
{
|
|
||||||
private List<Bookmark> bookmarks = new List<Bookmark>();
|
|
||||||
|
|
||||||
public List<Bookmark> GetBookmarks()
|
|
||||||
{
|
|
||||||
bookmarks.Clear();
|
|
||||||
LoadChromeBookmarks();
|
|
||||||
|
|
||||||
return bookmarks;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void ParseChromeBookmarks(String path, string source)
|
|
||||||
{
|
|
||||||
if (!File.Exists(path)) return;
|
|
||||||
|
|
||||||
string all = File.ReadAllText(path);
|
|
||||||
Regex nameRegex = new Regex("\"name\": \"(?<name>.*?)\"");
|
|
||||||
MatchCollection nameCollection = nameRegex.Matches(all);
|
|
||||||
Regex typeRegex = new Regex("\"type\": \"(?<type>.*?)\"");
|
|
||||||
MatchCollection typeCollection = typeRegex.Matches(all);
|
|
||||||
Regex urlRegex = new Regex("\"url\": \"(?<url>.*?)\"");
|
|
||||||
MatchCollection urlCollection = urlRegex.Matches(all);
|
|
||||||
|
|
||||||
List<string> names = (from Match match in nameCollection select match.Groups["name"].Value).ToList();
|
|
||||||
List<string> types = (from Match match in typeCollection select match.Groups["type"].Value).ToList();
|
|
||||||
List<string> urls = (from Match match in urlCollection select match.Groups["url"].Value).ToList();
|
|
||||||
|
|
||||||
int urlIndex = 0;
|
|
||||||
for (int i = 0; i < names.Count; i++)
|
|
||||||
{
|
|
||||||
string name = DecodeUnicode(names[i]);
|
|
||||||
string type = types[i];
|
|
||||||
if (type == "url")
|
|
||||||
{
|
|
||||||
string url = urls[urlIndex];
|
|
||||||
urlIndex++;
|
|
||||||
|
|
||||||
if (url == null) continue;
|
|
||||||
if (url.StartsWith("javascript:", StringComparison.OrdinalIgnoreCase)) continue;
|
|
||||||
if (url.StartsWith("vbscript:", StringComparison.OrdinalIgnoreCase)) continue;
|
|
||||||
|
|
||||||
bookmarks.Add(new Bookmark()
|
|
||||||
{
|
|
||||||
Name = name,
|
|
||||||
Url = url,
|
|
||||||
Source = source
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void LoadChromeBookmarks(string path, string name)
|
|
||||||
{
|
|
||||||
if (!Directory.Exists(path)) return;
|
|
||||||
var paths = Directory.GetDirectories(path);
|
|
||||||
|
|
||||||
foreach (var profile in paths)
|
|
||||||
{
|
|
||||||
if (File.Exists(Path.Combine(profile, "Bookmarks")))
|
|
||||||
ParseChromeBookmarks(Path.Combine(profile, "Bookmarks"), name + (Path.GetFileName(profile) == "Default" ? "" : (" (" + Path.GetFileName(profile) + ")")));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void LoadChromeBookmarks()
|
|
||||||
{
|
|
||||||
String platformPath = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData);
|
|
||||||
LoadChromeBookmarks(Path.Combine(platformPath, @"Google\Chrome\User Data"), "Google Chrome");
|
|
||||||
LoadChromeBookmarks(Path.Combine(platformPath, @"Google\Chrome SxS\User Data"), "Google Chrome Canary");
|
|
||||||
LoadChromeBookmarks(Path.Combine(platformPath, @"Chromium\User Data"), "Chromium");
|
|
||||||
}
|
|
||||||
|
|
||||||
private String DecodeUnicode(String dataStr)
|
|
||||||
{
|
|
||||||
Regex reg = new Regex(@"(?i)\\[uU]([0-9a-f]{4})");
|
|
||||||
return reg.Replace(dataStr, m => ((char)Convert.ToInt32(m.Groups[1].Value, 16)).ToString());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,35 +0,0 @@
|
|||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using Wox.Infrastructure;
|
|
||||||
|
|
||||||
namespace Wox.Plugin.BrowserBookmark.Commands
|
|
||||||
{
|
|
||||||
internal static class Bookmarks
|
|
||||||
{
|
|
||||||
internal static bool MatchProgram(Bookmark bookmark, string queryString)
|
|
||||||
{
|
|
||||||
if (StringMatcher.FuzzySearch(queryString, bookmark.Name).IsSearchPrecisionScoreMet()) return true;
|
|
||||||
if (StringMatcher.FuzzySearch(queryString, bookmark.PinyinName).IsSearchPrecisionScoreMet()) return true;
|
|
||||||
if (StringMatcher.FuzzySearch(queryString, bookmark.Url).IsSearchPrecisionScoreMet()) return true;
|
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
internal static List<Bookmark> LoadAllBookmarks()
|
|
||||||
{
|
|
||||||
var allbookmarks = new List<Bookmark>();
|
|
||||||
|
|
||||||
var chromeBookmarks = new ChromeBookmarks();
|
|
||||||
var mozBookmarks = new FirefoxBookmarks();
|
|
||||||
|
|
||||||
//TODO: Let the user select which browser's bookmarks are displayed
|
|
||||||
// Add Firefox bookmarks
|
|
||||||
mozBookmarks.GetBookmarks().ForEach(x => allbookmarks.Add(x));
|
|
||||||
|
|
||||||
// Add Chrome bookmarks
|
|
||||||
chromeBookmarks.GetBookmarks().ForEach(x => allbookmarks.Add(x));
|
|
||||||
|
|
||||||
return allbookmarks.Distinct().ToList();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,129 +0,0 @@
|
|||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Data.SQLite;
|
|
||||||
using System.IO;
|
|
||||||
using System.Linq;
|
|
||||||
|
|
||||||
namespace Wox.Plugin.BrowserBookmark
|
|
||||||
{
|
|
||||||
public class FirefoxBookmarks
|
|
||||||
{
|
|
||||||
private const string queryAllBookmarks = @"SELECT moz_places.url, moz_bookmarks.title
|
|
||||||
FROM moz_places
|
|
||||||
INNER JOIN moz_bookmarks ON (
|
|
||||||
moz_bookmarks.fk NOT NULL AND moz_bookmarks.fk = moz_places.id
|
|
||||||
)
|
|
||||||
ORDER BY moz_places.visit_count DESC
|
|
||||||
";
|
|
||||||
|
|
||||||
private const string dbPathFormat = "Data Source ={0};Version=3;New=False;Compress=True;";
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Searches the places.sqlite db and returns all bookmarks
|
|
||||||
/// </summary>
|
|
||||||
public List<Bookmark> GetBookmarks()
|
|
||||||
{
|
|
||||||
// Return empty list if the places.sqlite file cannot be found
|
|
||||||
if (string.IsNullOrEmpty(PlacesPath) || !File.Exists(PlacesPath))
|
|
||||||
return new List<Bookmark>();
|
|
||||||
|
|
||||||
var bookmarList = new List<Bookmark>();
|
|
||||||
|
|
||||||
// create the connection string and init the connection
|
|
||||||
string dbPath = string.Format(dbPathFormat, PlacesPath);
|
|
||||||
using (var dbConnection = new SQLiteConnection(dbPath))
|
|
||||||
{
|
|
||||||
// Open connection to the database file and execute the query
|
|
||||||
dbConnection.Open();
|
|
||||||
var reader = new SQLiteCommand(queryAllBookmarks, dbConnection).ExecuteReader();
|
|
||||||
|
|
||||||
// return results in List<Bookmark> format
|
|
||||||
bookmarList = reader.Select(x => new Bookmark()
|
|
||||||
{
|
|
||||||
Name = (x["title"] is DBNull) ? string.Empty : x["title"].ToString(),
|
|
||||||
Url = x["url"].ToString()
|
|
||||||
}).ToList();
|
|
||||||
}
|
|
||||||
|
|
||||||
return bookmarList;
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Path to places.sqlite
|
|
||||||
/// </summary>
|
|
||||||
private string PlacesPath
|
|
||||||
{
|
|
||||||
get
|
|
||||||
{
|
|
||||||
var profileFolderPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), @"Mozilla\Firefox");
|
|
||||||
var profileIni = Path.Combine(profileFolderPath, @"profiles.ini");
|
|
||||||
|
|
||||||
if (!File.Exists(profileIni))
|
|
||||||
return string.Empty;
|
|
||||||
|
|
||||||
// get firefox default profile directory from profiles.ini
|
|
||||||
string ini;
|
|
||||||
using (var sReader = new StreamReader(profileIni)) {
|
|
||||||
ini = sReader.ReadToEnd();
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
Current profiles.ini structure example as of Firefox version 69.0.1
|
|
||||||
|
|
||||||
[Install736426B0AF4A39CB]
|
|
||||||
Default=Profiles/7789f565.default-release <== this is the default profile this plugin will get the bookmarks from. When opened Firefox will load the default profile
|
|
||||||
Locked=1
|
|
||||||
|
|
||||||
[Profile2]
|
|
||||||
Name=newblahprofile
|
|
||||||
IsRelative=0
|
|
||||||
Path=C:\t6h2yuq8.newblahprofile <== Note this is a custom location path for the profile user can set, we need to cater for this in code.
|
|
||||||
|
|
||||||
[Profile1]
|
|
||||||
Name=default
|
|
||||||
IsRelative=1
|
|
||||||
Path=Profiles/cydum7q4.default
|
|
||||||
Default=1
|
|
||||||
|
|
||||||
[Profile0]
|
|
||||||
Name=default-release
|
|
||||||
IsRelative=1
|
|
||||||
Path=Profiles/7789f565.default-release
|
|
||||||
|
|
||||||
[General]
|
|
||||||
StartWithLastProfile=1
|
|
||||||
Version=2
|
|
||||||
*/
|
|
||||||
|
|
||||||
var lines = ini.Split(new string[] { "\r\n" }, StringSplitOptions.None).ToList();
|
|
||||||
|
|
||||||
var defaultProfileFolderNameRaw = lines.Where(x => x.Contains("Default=") && x != "Default=1").FirstOrDefault() ?? string.Empty;
|
|
||||||
|
|
||||||
if (string.IsNullOrEmpty(defaultProfileFolderNameRaw))
|
|
||||||
return string.Empty;
|
|
||||||
|
|
||||||
var defaultProfileFolderName = defaultProfileFolderNameRaw.Split('=').Last();
|
|
||||||
|
|
||||||
var indexOfDefaultProfileAtttributePath = lines.IndexOf("Path="+ defaultProfileFolderName);
|
|
||||||
|
|
||||||
// Seen in the example above, the IsRelative attribute is always above the Path attribute
|
|
||||||
var relativeAttribute = lines[indexOfDefaultProfileAtttributePath - 1];
|
|
||||||
|
|
||||||
return relativeAttribute == "0" // See above, the profile is located in a custom location, path is not relative, so IsRelative=0
|
|
||||||
? defaultProfileFolderName + @"\places.sqlite"
|
|
||||||
: Path.Combine(profileFolderPath, defaultProfileFolderName) + @"\places.sqlite";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public static class Extensions
|
|
||||||
{
|
|
||||||
public static IEnumerable<T> Select<T>(this SQLiteDataReader reader, Func<SQLiteDataReader, T> projection)
|
|
||||||
{
|
|
||||||
while (reader.Read())
|
|
||||||
{
|
|
||||||
yield return projection(reader);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
Before Width: | Height: | Size: 4.4 KiB |
@@ -1,9 +0,0 @@
|
|||||||
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
|
||||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
|
||||||
xmlns:system="clr-namespace:System;assembly=mscorlib">
|
|
||||||
|
|
||||||
<!--Plugin Info-->
|
|
||||||
<system:String x:Key="wox_plugin_browserbookmark_plugin_name">Browser Bookmarks</system:String>
|
|
||||||
<system:String x:Key="wox_plugin_browserbookmark_plugin_description">Search your browser bookmarks</system:String>
|
|
||||||
|
|
||||||
</ResourceDictionary>
|
|
||||||
@@ -1,9 +0,0 @@
|
|||||||
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
|
||||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
|
||||||
xmlns:system="clr-namespace:System;assembly=mscorlib">
|
|
||||||
|
|
||||||
<!--Eklenti Bilgisi-->
|
|
||||||
<system:String x:Key="wox_plugin_browserbookmark_plugin_name">Yer İşaretleri</system:String>
|
|
||||||
<system:String x:Key="wox_plugin_browserbookmark_plugin_description">Tarayıcılarınızdaki yer işaretlerini arayın.</system:String>
|
|
||||||
|
|
||||||
</ResourceDictionary>
|
|
||||||
@@ -1,99 +0,0 @@
|
|||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Windows.Controls;
|
|
||||||
using Wox.Infrastructure.Storage;
|
|
||||||
using Wox.Plugin.BrowserBookmark.Commands;
|
|
||||||
using Wox.Plugin.BrowserBookmark.Models;
|
|
||||||
using Wox.Plugin.BrowserBookmark.Views;
|
|
||||||
using Wox.Plugin.SharedCommands;
|
|
||||||
|
|
||||||
namespace Wox.Plugin.BrowserBookmark
|
|
||||||
{
|
|
||||||
public class Main : ISettingProvider, IPlugin, IReloadable, IPluginI18n, ISavable
|
|
||||||
{
|
|
||||||
private PluginInitContext context;
|
|
||||||
|
|
||||||
private List<Bookmark> cachedBookmarks = new List<Bookmark>();
|
|
||||||
|
|
||||||
private readonly Settings _settings;
|
|
||||||
private readonly PluginJsonStorage<Settings> _storage;
|
|
||||||
|
|
||||||
public Main()
|
|
||||||
{
|
|
||||||
_storage = new PluginJsonStorage<Settings>();
|
|
||||||
_settings = _storage.Load();
|
|
||||||
|
|
||||||
cachedBookmarks = Bookmarks.LoadAllBookmarks();
|
|
||||||
}
|
|
||||||
|
|
||||||
public void Init(PluginInitContext context)
|
|
||||||
{
|
|
||||||
this.context = context;
|
|
||||||
}
|
|
||||||
|
|
||||||
public List<Result> Query(Query query)
|
|
||||||
{
|
|
||||||
string param = query.GetAllRemainingParameter().TrimStart();
|
|
||||||
|
|
||||||
// Should top results be returned? (true if no search parameters have been passed)
|
|
||||||
var topResults = string.IsNullOrEmpty(param);
|
|
||||||
|
|
||||||
var returnList = cachedBookmarks;
|
|
||||||
|
|
||||||
if (!topResults)
|
|
||||||
{
|
|
||||||
// Since we mixed chrome and firefox bookmarks, we should order them again
|
|
||||||
returnList = cachedBookmarks.Where(o => Bookmarks.MatchProgram(o, param)).ToList();
|
|
||||||
returnList = returnList.OrderByDescending(o => o.Score).ToList();
|
|
||||||
}
|
|
||||||
|
|
||||||
return returnList.Select(c => new Result()
|
|
||||||
{
|
|
||||||
Title = c.Name,
|
|
||||||
SubTitle = c.Url,
|
|
||||||
IcoPath = @"Images\bookmark.png",
|
|
||||||
Score = 5,
|
|
||||||
Action = (e) =>
|
|
||||||
{
|
|
||||||
if (_settings.OpenInNewBrowserWindow)
|
|
||||||
{
|
|
||||||
c.Url.NewBrowserWindow(_settings.BrowserPath);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
c.Url.NewTabInBrowser(_settings.BrowserPath);
|
|
||||||
}
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}).ToList();
|
|
||||||
}
|
|
||||||
|
|
||||||
public void ReloadData()
|
|
||||||
{
|
|
||||||
cachedBookmarks.Clear();
|
|
||||||
|
|
||||||
cachedBookmarks = Bookmarks.LoadAllBookmarks();
|
|
||||||
}
|
|
||||||
|
|
||||||
public string GetTranslatedPluginTitle()
|
|
||||||
{
|
|
||||||
return context.API.GetTranslation("wox_plugin_browserbookmark_plugin_name");
|
|
||||||
}
|
|
||||||
|
|
||||||
public string GetTranslatedPluginDescription()
|
|
||||||
{
|
|
||||||
return context.API.GetTranslation("wox_plugin_browserbookmark_plugin_description");
|
|
||||||
}
|
|
||||||
|
|
||||||
public Control CreateSettingPanel()
|
|
||||||
{
|
|
||||||
return new SettingsControl(_settings);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void Save()
|
|
||||||
{
|
|
||||||
_storage.Save();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,9 +0,0 @@
|
|||||||
namespace Wox.Plugin.BrowserBookmark.Models
|
|
||||||
{
|
|
||||||
public class Settings : BaseModel
|
|
||||||
{
|
|
||||||
public bool OpenInNewBrowserWindow { get; set; } = true;
|
|
||||||
|
|
||||||
public string BrowserPath { get; set; }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,25 +0,0 @@
|
|||||||
<UserControl x:Class="Wox.Plugin.BrowserBookmark.Views.SettingsControl"
|
|
||||||
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"
|
|
||||||
Background="White"
|
|
||||||
d:DesignHeight="300" d:DesignWidth="500">
|
|
||||||
<Grid Margin="10,10,10,0">
|
|
||||||
<Grid.RowDefinitions>
|
|
||||||
<RowDefinition Height="40" />
|
|
||||||
<RowDefinition />
|
|
||||||
</Grid.RowDefinitions>
|
|
||||||
<StackPanel Orientation="Horizontal" Grid.Row="0">
|
|
||||||
<Label Content="Open bookmark in:" Margin="40 3 0 8"/>
|
|
||||||
<RadioButton Name="NewWindowBrowser" GroupName="OpenSearchBehaviour" Content="New window" Click="OnNewBrowserWindowClick" Margin="10" />
|
|
||||||
<RadioButton Name="NewTabInBrowser" GroupName="OpenSearchBehaviour" Content="New tab" Click="OnNewTabClick" Margin="10" />
|
|
||||||
</StackPanel>
|
|
||||||
<StackPanel VerticalAlignment="Top" Grid.Row="1" Height="106" Margin="41,13,0,0">
|
|
||||||
<Label Content="Set browser from path:" Height="28" Margin="0,0,155,0" HorizontalAlignment="Left" Width="290"/>
|
|
||||||
<TextBox x:Name="browserPathBox" HorizontalAlignment="Left" Height="34" Margin="5,0,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="311" RenderTransformOrigin="0.502,-1.668"/>
|
|
||||||
<Button x:Name="viewButton" HorizontalAlignment="Left" Margin="340,-33,-1,0" Width="100" Height="28" Click="OnChooseClick" FontSize="10" Content="Choose" />
|
|
||||||
</StackPanel>
|
|
||||||
</Grid>
|
|
||||||
</UserControl>
|
|
||||||
@@ -1,47 +0,0 @@
|
|||||||
using Microsoft.Win32;
|
|
||||||
using System.Windows;
|
|
||||||
using System.Windows.Controls;
|
|
||||||
using Wox.Plugin.BrowserBookmark.Models;
|
|
||||||
|
|
||||||
namespace Wox.Plugin.BrowserBookmark.Views
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// Interaction logic for BrowserBookmark.xaml
|
|
||||||
/// </summary>
|
|
||||||
public partial class SettingsControl : UserControl
|
|
||||||
{
|
|
||||||
private readonly Settings _settings;
|
|
||||||
|
|
||||||
public SettingsControl(Settings settings)
|
|
||||||
{
|
|
||||||
InitializeComponent();
|
|
||||||
_settings = settings;
|
|
||||||
browserPathBox.Text = _settings.BrowserPath;
|
|
||||||
NewWindowBrowser.IsChecked = _settings.OpenInNewBrowserWindow;
|
|
||||||
NewTabInBrowser.IsChecked = !_settings.OpenInNewBrowserWindow;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void OnNewBrowserWindowClick(object sender, RoutedEventArgs e)
|
|
||||||
{
|
|
||||||
_settings.OpenInNewBrowserWindow = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void OnNewTabClick(object sender, RoutedEventArgs e)
|
|
||||||
{
|
|
||||||
_settings.OpenInNewBrowserWindow = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void OnChooseClick(object sender, RoutedEventArgs e)
|
|
||||||
{
|
|
||||||
var fileBrowserDialog = new OpenFileDialog();
|
|
||||||
fileBrowserDialog.Filter = "Application(*.exe)|*.exe|All files|*.*";
|
|
||||||
fileBrowserDialog.CheckFileExists = true;
|
|
||||||
fileBrowserDialog.CheckPathExists = true;
|
|
||||||
if (fileBrowserDialog.ShowDialog() == true)
|
|
||||||
{
|
|
||||||
browserPathBox.Text = fileBrowserDialog.FileName;
|
|
||||||
_settings.BrowserPath = fileBrowserDialog.FileName;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,12 +0,0 @@
|
|||||||
{
|
|
||||||
"ID":"0ECADE17459B49F587BF81DC3A125110",
|
|
||||||
"ActionKeyword":"b",
|
|
||||||
"Name":"Browser Bookmarks",
|
|
||||||
"Description":"Search your browser bookmarks",
|
|
||||||
"Author":"qianlifeng, Ioannis G.",
|
|
||||||
"Version":"1.1",
|
|
||||||
"Language":"csharp",
|
|
||||||
"Website":"http://www.getwox.com/plugin",
|
|
||||||
"ExecuteFileName":"Wox.Plugin.browserBookmark.dll",
|
|
||||||
"IcoPath":"Images\\bookmark.png"
|
|
||||||
}
|
|
||||||
@@ -9,26 +9,30 @@
|
|||||||
<AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath>
|
<AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath>
|
||||||
<AppendRuntimeIdentifierToOutputPath>false</AppendRuntimeIdentifierToOutputPath>
|
<AppendRuntimeIdentifierToOutputPath>false</AppendRuntimeIdentifierToOutputPath>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x64'">
|
||||||
<DebugSymbols>true</DebugSymbols>
|
<DebugSymbols>true</DebugSymbols>
|
||||||
<DebugType>full</DebugType>
|
<OutputPath>..\..\..\..\..\x64\Debug\modules\launcher\Plugins\Wox.Plugin.Caculator\</OutputPath>
|
||||||
<Optimize>false</Optimize>
|
|
||||||
<OutputPath>..\..\Output\Debug\Plugins\Wox.Plugin.Caculator\</OutputPath>
|
|
||||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||||
|
<DebugType>full</DebugType>
|
||||||
|
<PlatformTarget>x64</PlatformTarget>
|
||||||
|
<LangVersion>7.3</LangVersion>
|
||||||
<ErrorReport>prompt</ErrorReport>
|
<ErrorReport>prompt</ErrorReport>
|
||||||
|
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
|
||||||
<WarningLevel>4</WarningLevel>
|
<WarningLevel>4</WarningLevel>
|
||||||
<Prefer32Bit>false</Prefer32Bit>
|
<Optimize>false</Optimize>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x64'">
|
||||||
<DebugType>pdbonly</DebugType>
|
<OutputPath>..\..\..\..\..\x64\Release\modules\launcher\Plugins\Wox.Plugin.Caculator\</OutputPath>
|
||||||
<Optimize>true</Optimize>
|
|
||||||
<OutputPath>..\..\Output\Release\Plugins\Wox.Plugin.Caculator\</OutputPath>
|
|
||||||
<DefineConstants>TRACE</DefineConstants>
|
<DefineConstants>TRACE</DefineConstants>
|
||||||
|
<Optimize>true</Optimize>
|
||||||
|
<DebugType>pdbonly</DebugType>
|
||||||
|
<PlatformTarget>x64</PlatformTarget>
|
||||||
|
<LangVersion>7.3</LangVersion>
|
||||||
<ErrorReport>prompt</ErrorReport>
|
<ErrorReport>prompt</ErrorReport>
|
||||||
|
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
|
||||||
<WarningLevel>4</WarningLevel>
|
<WarningLevel>4</WarningLevel>
|
||||||
<Prefer32Bit>false</Prefer32Bit>
|
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 1.8 KiB |
@@ -1,8 +0,0 @@
|
|||||||
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
|
||||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
|
||||||
xmlns:system="clr-namespace:System;assembly=mscorlib">
|
|
||||||
|
|
||||||
<system:String x:Key="wox_plugin_color_plugin_name">Farben</system:String>
|
|
||||||
<system:String x:Key="wox_plugin_color_plugin_description">Stellt eine HEX-Farben Vorschau bereit. (Versuche #000 in Wox)</system:String>
|
|
||||||
|
|
||||||
</ResourceDictionary>
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
|
||||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
|
||||||
xmlns:system="clr-namespace:System;assembly=mscorlib">
|
|
||||||
|
|
||||||
<system:String x:Key="wox_plugin_color_plugin_name">Colors</system:String>
|
|
||||||
<system:String x:Key="wox_plugin_color_plugin_description">Allows to preview colors using hex values.(Try #000 in Wox)</system:String>
|
|
||||||
|
|
||||||
</ResourceDictionary>
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
|
||||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
|
||||||
xmlns:system="clr-namespace:System;assembly=mscorlib">
|
|
||||||
|
|
||||||
<system:String x:Key="wox_plugin_color_plugin_name">Kolory</system:String>
|
|
||||||
<system:String x:Key="wox_plugin_color_plugin_description">Podgląd kolorów po wpisaniu ich kodu szesnastkowego. (Spróbuj wpisać #000 w oknie Woxa)</system:String>
|
|
||||||
|
|
||||||
</ResourceDictionary>
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
|
||||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
|
||||||
xmlns:system="clr-namespace:System;assembly=mscorlib">
|
|
||||||
|
|
||||||
<system:String x:Key="wox_plugin_color_plugin_name">Renkler</system:String>
|
|
||||||
<system:String x:Key="wox_plugin_color_plugin_description">Hex kodunu girdiğiniz renkleri görüntülemeye yarar.(#000 yazmayı deneyin)</system:String>
|
|
||||||
|
|
||||||
</ResourceDictionary>
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
|
||||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
|
||||||
xmlns:system="clr-namespace:System;assembly=mscorlib">
|
|
||||||
|
|
||||||
<system:String x:Key="wox_plugin_color_plugin_name">颜色</system:String>
|
|
||||||
<system:String x:Key="wox_plugin_color_plugin_description">提供在Wox查询hex颜色。(尝试在Wox中输入#000)</system:String>
|
|
||||||
|
|
||||||
</ResourceDictionary>
|
|
||||||
@@ -1,7 +0,0 @@
|
|||||||
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
|
||||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
|
||||||
xmlns:system="clr-namespace:System;assembly=mscorlib">
|
|
||||||
|
|
||||||
<system:String x:Key="wox_plugin_color_plugin_name">顏色</system:String>
|
|
||||||
<system:String x:Key="wox_plugin_color_plugin_description">提供在 Wox 查詢 hex 顏色。(試著在 Wox 中輸入 #000)</system:String>
|
|
||||||
</ResourceDictionary>
|
|
||||||
@@ -1,121 +0,0 @@
|
|||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Drawing;
|
|
||||||
using System.Drawing.Imaging;
|
|
||||||
using System.IO;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Windows;
|
|
||||||
|
|
||||||
namespace Wox.Plugin.Color
|
|
||||||
{
|
|
||||||
public sealed class ColorsPlugin : IPlugin, IPluginI18n
|
|
||||||
{
|
|
||||||
private string DIR_PATH = Path.Combine(Path.GetTempPath(), @"Plugins\Colors\");
|
|
||||||
private PluginInitContext context;
|
|
||||||
private const int IMG_SIZE = 32;
|
|
||||||
|
|
||||||
private DirectoryInfo ColorsDirectory { get; set; }
|
|
||||||
|
|
||||||
public ColorsPlugin()
|
|
||||||
{
|
|
||||||
if (!Directory.Exists(DIR_PATH))
|
|
||||||
{
|
|
||||||
ColorsDirectory = Directory.CreateDirectory(DIR_PATH);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
ColorsDirectory = new DirectoryInfo(DIR_PATH);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public List<Result> Query(Query query)
|
|
||||||
{
|
|
||||||
var raw = query.Search;
|
|
||||||
if (!IsAvailable(raw)) return new List<Result>(0);
|
|
||||||
try
|
|
||||||
{
|
|
||||||
var cached = Find(raw);
|
|
||||||
if (cached.Length == 0)
|
|
||||||
{
|
|
||||||
var path = CreateImage(raw);
|
|
||||||
return new List<Result>
|
|
||||||
{
|
|
||||||
new Result
|
|
||||||
{
|
|
||||||
Title = raw,
|
|
||||||
IcoPath = path,
|
|
||||||
Action = _ =>
|
|
||||||
{
|
|
||||||
Clipboard.SetText(raw);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
}
|
|
||||||
return cached.Select(x => new Result
|
|
||||||
{
|
|
||||||
Title = raw,
|
|
||||||
IcoPath = x.FullName,
|
|
||||||
Action = _ =>
|
|
||||||
{
|
|
||||||
Clipboard.SetText(raw);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}).ToList();
|
|
||||||
}
|
|
||||||
catch (Exception exception)
|
|
||||||
{
|
|
||||||
// todo: log
|
|
||||||
return new List<Result>(0);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private bool IsAvailable(string query)
|
|
||||||
{
|
|
||||||
// todo: rgb, names
|
|
||||||
var length = query.Length - 1; // minus `#` sign
|
|
||||||
return query.StartsWith("#") && (length == 3 || length == 6);
|
|
||||||
}
|
|
||||||
|
|
||||||
public FileInfo[] Find(string name)
|
|
||||||
{
|
|
||||||
var file = string.Format("{0}.png", name.Substring(1));
|
|
||||||
return ColorsDirectory.GetFiles(file, SearchOption.TopDirectoryOnly);
|
|
||||||
}
|
|
||||||
|
|
||||||
private string CreateImage(string name)
|
|
||||||
{
|
|
||||||
using (var bitmap = new Bitmap(IMG_SIZE, IMG_SIZE))
|
|
||||||
using (var graphics = Graphics.FromImage(bitmap))
|
|
||||||
{
|
|
||||||
var color = ColorTranslator.FromHtml(name);
|
|
||||||
graphics.Clear(color);
|
|
||||||
|
|
||||||
var path = CreateFileName(name);
|
|
||||||
bitmap.Save(path, ImageFormat.Png);
|
|
||||||
return path;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private string CreateFileName(string name)
|
|
||||||
{
|
|
||||||
return string.Format("{0}{1}.png", ColorsDirectory.FullName, name.Substring(1));
|
|
||||||
}
|
|
||||||
|
|
||||||
public void Init(PluginInitContext context)
|
|
||||||
{
|
|
||||||
this.context = context;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
public string GetTranslatedPluginTitle()
|
|
||||||
{
|
|
||||||
return context.API.GetTranslation("wox_plugin_color_plugin_name");
|
|
||||||
}
|
|
||||||
|
|
||||||
public string GetTranslatedPluginDescription()
|
|
||||||
{
|
|
||||||
return context.API.GetTranslation("wox_plugin_color_plugin_description");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,12 +0,0 @@
|
|||||||
{
|
|
||||||
"ID":"9B36CE6181FC47FBB597AA2C29CD9B0A",
|
|
||||||
"ActionKeyword":"*",
|
|
||||||
"Name":"Colors",
|
|
||||||
"Description":"Provide hex color preview.(Try #000 in Wox)",
|
|
||||||
"Author":"qianlifeng",
|
|
||||||
"Version":"1.0.0",
|
|
||||||
"Language":"csharp",
|
|
||||||
"Website":"http://www.wox.one/plugin",
|
|
||||||
"ExecuteFileName":"Wox.Plugin.Color.dll",
|
|
||||||
"IcoPath":"Images\\color.png"
|
|
||||||
}
|
|
||||||
@@ -1,25 +0,0 @@
|
|||||||
using System.Diagnostics;
|
|
||||||
using System.Drawing;
|
|
||||||
|
|
||||||
namespace Wox.Plugin.ControlPanel
|
|
||||||
{
|
|
||||||
//from:https://raw.githubusercontent.com/CoenraadS/Windows-Control-Panel-Items
|
|
||||||
public class ControlPanelItem
|
|
||||||
{
|
|
||||||
public string LocalizedString { get; private set; }
|
|
||||||
public string InfoTip { get; private set; }
|
|
||||||
public string GUID { get; private set; }
|
|
||||||
public ProcessStartInfo ExecutablePath { get; private set; }
|
|
||||||
public Icon Icon { get; private set; }
|
|
||||||
public int Score { get; set; }
|
|
||||||
|
|
||||||
public ControlPanelItem(string newLocalizedString, string newInfoTip, string newGUID, ProcessStartInfo newExecutablePath, Icon newIcon)
|
|
||||||
{
|
|
||||||
LocalizedString = newLocalizedString;
|
|
||||||
InfoTip = newInfoTip;
|
|
||||||
ExecutablePath = newExecutablePath;
|
|
||||||
Icon = newIcon;
|
|
||||||
GUID = newGUID;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,339 +0,0 @@
|
|||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Diagnostics;
|
|
||||||
using System.Drawing;
|
|
||||||
using System.Runtime.InteropServices;
|
|
||||||
using System.Text;
|
|
||||||
using Microsoft.Win32;
|
|
||||||
|
|
||||||
namespace Wox.Plugin.ControlPanel
|
|
||||||
{
|
|
||||||
//from:https://raw.githubusercontent.com/CoenraadS/Windows-Control-Panel-Items
|
|
||||||
public static class ControlPanelList
|
|
||||||
{
|
|
||||||
private const uint GROUP_ICON = 14;
|
|
||||||
private const uint LOAD_LIBRARY_AS_DATAFILE = 0x00000002;
|
|
||||||
private const string CONTROL = @"%SystemRoot%\System32\control.exe";
|
|
||||||
|
|
||||||
private delegate bool EnumResNameDelegate(
|
|
||||||
IntPtr hModule,
|
|
||||||
IntPtr lpszType,
|
|
||||||
IntPtr lpszName,
|
|
||||||
IntPtr lParam);
|
|
||||||
|
|
||||||
[DllImport("kernel32.dll", EntryPoint = "EnumResourceNamesW", CharSet = CharSet.Unicode, SetLastError = true)]
|
|
||||||
static extern bool EnumResourceNamesWithID(IntPtr hModule, uint lpszType, EnumResNameDelegate lpEnumFunc, IntPtr lParam);
|
|
||||||
|
|
||||||
[DllImport("kernel32.dll", SetLastError = true)]
|
|
||||||
static extern IntPtr LoadLibraryEx(string lpFileName, IntPtr hFile, uint dwFlags);
|
|
||||||
|
|
||||||
[DllImport("kernel32.dll", SetLastError = true)]
|
|
||||||
static extern bool FreeLibrary(IntPtr hModule);
|
|
||||||
|
|
||||||
[DllImport("user32.dll", CharSet = CharSet.Auto)]
|
|
||||||
static extern int LoadString(IntPtr hInstance, uint uID, StringBuilder lpBuffer, int nBufferMax);
|
|
||||||
|
|
||||||
[DllImport("user32.dll", SetLastError = true, CharSet = CharSet.Auto)]
|
|
||||||
static extern IntPtr LoadImage(IntPtr hinst, IntPtr lpszName, uint uType,
|
|
||||||
int cxDesired, int cyDesired, uint fuLoad);
|
|
||||||
|
|
||||||
[DllImport("user32.dll", CharSet = CharSet.Auto)]
|
|
||||||
extern static bool DestroyIcon(IntPtr handle);
|
|
||||||
|
|
||||||
[DllImport("kernel32.dll")]
|
|
||||||
static extern IntPtr FindResource(IntPtr hModule, IntPtr lpName, IntPtr lpType);
|
|
||||||
|
|
||||||
static IntPtr defaultIconPtr;
|
|
||||||
|
|
||||||
|
|
||||||
static RegistryKey nameSpace = Registry.LocalMachine.OpenSubKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\ControlPanel\\NameSpace");
|
|
||||||
static RegistryKey clsid = Registry.ClassesRoot.OpenSubKey("CLSID");
|
|
||||||
|
|
||||||
public static List<ControlPanelItem> Create(uint iconSize)
|
|
||||||
{
|
|
||||||
int size = (int)iconSize;
|
|
||||||
RegistryKey currentKey;
|
|
||||||
ProcessStartInfo executablePath;
|
|
||||||
List<ControlPanelItem> controlPanelItems = new List<ControlPanelItem>();
|
|
||||||
string localizedString;
|
|
||||||
string infoTip;
|
|
||||||
Icon myIcon;
|
|
||||||
|
|
||||||
foreach (string key in nameSpace.GetSubKeyNames())
|
|
||||||
{
|
|
||||||
currentKey = clsid.OpenSubKey(key);
|
|
||||||
if (currentKey != null)
|
|
||||||
{
|
|
||||||
executablePath = getExecutablePath(currentKey);
|
|
||||||
|
|
||||||
if (!(executablePath == null)) //Cannot have item without executable path
|
|
||||||
{
|
|
||||||
localizedString = getLocalizedString(currentKey);
|
|
||||||
|
|
||||||
if (!string.IsNullOrEmpty(localizedString))//Cannot have item without Title
|
|
||||||
{
|
|
||||||
infoTip = getInfoTip(currentKey);
|
|
||||||
|
|
||||||
myIcon = getIcon(currentKey, size);
|
|
||||||
|
|
||||||
controlPanelItems.Add(new ControlPanelItem(localizedString, infoTip, key, executablePath, myIcon));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return controlPanelItems;
|
|
||||||
}
|
|
||||||
|
|
||||||
private static ProcessStartInfo getExecutablePath(RegistryKey currentKey)
|
|
||||||
{
|
|
||||||
ProcessStartInfo executablePath = new ProcessStartInfo();
|
|
||||||
string applicationName;
|
|
||||||
|
|
||||||
if (currentKey.GetValue("System.ApplicationName") != null)
|
|
||||||
{
|
|
||||||
//CPL Files (usually native MS items)
|
|
||||||
applicationName = currentKey.GetValue("System.ApplicationName").ToString();
|
|
||||||
executablePath.FileName = Environment.ExpandEnvironmentVariables(CONTROL);
|
|
||||||
executablePath.Arguments = "-name " + applicationName;
|
|
||||||
}
|
|
||||||
else if (currentKey.OpenSubKey("Shell\\Open\\Command") != null && currentKey.OpenSubKey("Shell\\Open\\Command").GetValue(null) != null)
|
|
||||||
{
|
|
||||||
//Other files (usually third party items)
|
|
||||||
string input = "\"" + Environment.ExpandEnvironmentVariables(currentKey.OpenSubKey("Shell\\Open\\Command").GetValue(null).ToString()) + "\"";
|
|
||||||
executablePath.FileName = "cmd.exe";
|
|
||||||
executablePath.Arguments = "/C " + input;
|
|
||||||
executablePath.WindowStyle = ProcessWindowStyle.Hidden;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
return executablePath;
|
|
||||||
}
|
|
||||||
|
|
||||||
private static string getLocalizedString(RegistryKey currentKey)
|
|
||||||
{
|
|
||||||
IntPtr dataFilePointer;
|
|
||||||
string[] localizedStringRaw;
|
|
||||||
uint stringTableIndex;
|
|
||||||
StringBuilder resource;
|
|
||||||
string localizedString;
|
|
||||||
|
|
||||||
if (currentKey.GetValue("LocalizedString") != null)
|
|
||||||
{
|
|
||||||
localizedStringRaw = currentKey.GetValue("LocalizedString").ToString().Split(new[] { ",-" }, StringSplitOptions.None);
|
|
||||||
|
|
||||||
if (localizedStringRaw.Length > 1)
|
|
||||||
{
|
|
||||||
if (localizedStringRaw[0][0] == '@')
|
|
||||||
{
|
|
||||||
localizedStringRaw[0] = localizedStringRaw[0].Substring(1);
|
|
||||||
}
|
|
||||||
|
|
||||||
localizedStringRaw[0] = Environment.ExpandEnvironmentVariables(localizedStringRaw[0]);
|
|
||||||
|
|
||||||
dataFilePointer = LoadLibraryEx(localizedStringRaw[0], IntPtr.Zero, LOAD_LIBRARY_AS_DATAFILE); //Load file with strings
|
|
||||||
|
|
||||||
stringTableIndex = sanitizeUint(localizedStringRaw[1]);
|
|
||||||
|
|
||||||
resource = new StringBuilder(255);
|
|
||||||
LoadString(dataFilePointer, stringTableIndex, resource, resource.Capacity + 1); //Extract needed string
|
|
||||||
FreeLibrary(dataFilePointer);
|
|
||||||
|
|
||||||
localizedString = resource.ToString();
|
|
||||||
|
|
||||||
//Some apps don't return a string, although they do have a stringIndex. Use Default value.
|
|
||||||
|
|
||||||
if (String.IsNullOrEmpty(localizedString))
|
|
||||||
{
|
|
||||||
if (currentKey.GetValue(null) != null)
|
|
||||||
{
|
|
||||||
localizedString = currentKey.GetValue(null).ToString();
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
return null; //Cannot have item without title.
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
localizedString = localizedStringRaw[0];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if (currentKey.GetValue(null) != null)
|
|
||||||
{
|
|
||||||
localizedString = currentKey.GetValue(null).ToString();
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
return null; //Cannot have item without title.
|
|
||||||
}
|
|
||||||
return localizedString;
|
|
||||||
}
|
|
||||||
|
|
||||||
private static string getInfoTip(RegistryKey currentKey)
|
|
||||||
{
|
|
||||||
IntPtr dataFilePointer;
|
|
||||||
string[] infoTipRaw;
|
|
||||||
uint stringTableIndex;
|
|
||||||
StringBuilder resource;
|
|
||||||
string infoTip = "";
|
|
||||||
|
|
||||||
if (currentKey.GetValue("InfoTip") != null)
|
|
||||||
{
|
|
||||||
infoTipRaw = currentKey.GetValue("InfoTip").ToString().Split(new[] { ",-" }, StringSplitOptions.None);
|
|
||||||
|
|
||||||
if (infoTipRaw.Length == 2)
|
|
||||||
{
|
|
||||||
if (infoTipRaw[0][0] == '@')
|
|
||||||
{
|
|
||||||
infoTipRaw[0] = infoTipRaw[0].Substring(1);
|
|
||||||
}
|
|
||||||
infoTipRaw[0] = Environment.ExpandEnvironmentVariables(infoTipRaw[0]);
|
|
||||||
|
|
||||||
dataFilePointer = LoadLibraryEx(infoTipRaw[0], IntPtr.Zero, LOAD_LIBRARY_AS_DATAFILE); //Load file with strings
|
|
||||||
|
|
||||||
stringTableIndex = sanitizeUint(infoTipRaw[1]);
|
|
||||||
|
|
||||||
resource = new StringBuilder(255);
|
|
||||||
LoadString(dataFilePointer, stringTableIndex, resource, resource.Capacity + 1); //Extract needed string
|
|
||||||
FreeLibrary(dataFilePointer);
|
|
||||||
|
|
||||||
infoTip = resource.ToString();
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
infoTip = currentKey.GetValue("InfoTip").ToString();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
infoTip = "";
|
|
||||||
}
|
|
||||||
|
|
||||||
return infoTip;
|
|
||||||
}
|
|
||||||
|
|
||||||
private static Icon getIcon(RegistryKey currentKey, int iconSize)
|
|
||||||
{
|
|
||||||
IntPtr iconPtr = IntPtr.Zero;
|
|
||||||
List<string> iconString;
|
|
||||||
IntPtr dataFilePointer;
|
|
||||||
IntPtr iconIndex;
|
|
||||||
Icon myIcon = null;
|
|
||||||
|
|
||||||
if (currentKey.OpenSubKey("DefaultIcon") != null)
|
|
||||||
{
|
|
||||||
if (currentKey.OpenSubKey("DefaultIcon").GetValue(null) != null)
|
|
||||||
{
|
|
||||||
iconString = new List<string>(currentKey.OpenSubKey("DefaultIcon").GetValue(null).ToString().Split(new[] { ',' }, 2));
|
|
||||||
if (string.IsNullOrEmpty(iconString[0]))
|
|
||||||
{
|
|
||||||
// fallback to default icon
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (iconString[0][0] == '@')
|
|
||||||
{
|
|
||||||
iconString[0] = iconString[0].Substring(1);
|
|
||||||
}
|
|
||||||
|
|
||||||
dataFilePointer = LoadLibraryEx(iconString[0], IntPtr.Zero, LOAD_LIBRARY_AS_DATAFILE);
|
|
||||||
|
|
||||||
if (iconString.Count == 2)
|
|
||||||
{
|
|
||||||
iconIndex = (IntPtr)sanitizeUint(iconString[1]);
|
|
||||||
|
|
||||||
iconPtr = LoadImage(dataFilePointer, iconIndex, 1, iconSize, iconSize, 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (iconPtr == IntPtr.Zero)
|
|
||||||
{
|
|
||||||
defaultIconPtr = IntPtr.Zero;
|
|
||||||
EnumResourceNamesWithID(dataFilePointer, GROUP_ICON, EnumRes, IntPtr.Zero); //Iterate through resources.
|
|
||||||
|
|
||||||
iconPtr = LoadImage(dataFilePointer, defaultIconPtr, 1, iconSize, iconSize, 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
FreeLibrary(dataFilePointer);
|
|
||||||
|
|
||||||
if (iconPtr != IntPtr.Zero)
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
myIcon = Icon.FromHandle(iconPtr);
|
|
||||||
myIcon = (Icon)myIcon.Clone(); //Remove pointer dependancy.
|
|
||||||
}
|
|
||||||
catch
|
|
||||||
{
|
|
||||||
//Silently fail for now.
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (iconPtr != IntPtr.Zero)
|
|
||||||
{
|
|
||||||
DestroyIcon(iconPtr);
|
|
||||||
}
|
|
||||||
return myIcon;
|
|
||||||
}
|
|
||||||
|
|
||||||
private static uint sanitizeUint(string args) //Remove all chars before and after first set of digits.
|
|
||||||
{
|
|
||||||
int x = 0;
|
|
||||||
|
|
||||||
while (x < args.Length && !Char.IsDigit(args[x]))
|
|
||||||
{
|
|
||||||
args = args.Substring(1);
|
|
||||||
}
|
|
||||||
|
|
||||||
x = 0;
|
|
||||||
|
|
||||||
while (x < args.Length && Char.IsDigit(args[x]))
|
|
||||||
{
|
|
||||||
x++;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (x < args.Length)
|
|
||||||
{
|
|
||||||
args = args.Remove(x);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*If the logic is correct, this should never through an exception.
|
|
||||||
* If there is an exception, then need to analyze what the input is.
|
|
||||||
* Returning the wrong number will cause more errors */
|
|
||||||
return Convert.ToUInt32(args);
|
|
||||||
}
|
|
||||||
|
|
||||||
private static bool IS_INTRESOURCE(IntPtr value)
|
|
||||||
{
|
|
||||||
if (((uint)value) > ushort.MaxValue)
|
|
||||||
return false;
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
private static uint GET_RESOURCE_ID(IntPtr value)
|
|
||||||
{
|
|
||||||
if (IS_INTRESOURCE(value))
|
|
||||||
return (uint)value;
|
|
||||||
throw new NotSupportedException("value is not an ID!");
|
|
||||||
}
|
|
||||||
|
|
||||||
private static string GET_RESOURCE_NAME(IntPtr value)
|
|
||||||
{
|
|
||||||
if (IS_INTRESOURCE(value))
|
|
||||||
return value.ToString();
|
|
||||||
return Marshal.PtrToStringUni(value);
|
|
||||||
}
|
|
||||||
|
|
||||||
private static bool EnumRes(IntPtr hModule, IntPtr lpszType, IntPtr lpszName, IntPtr lParam)
|
|
||||||
{
|
|
||||||
defaultIconPtr = lpszName;
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
Before Width: | Height: | Size: 1.3 KiB |
@@ -1,8 +0,0 @@
|
|||||||
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
|
||||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
|
||||||
xmlns:system="clr-namespace:System;assembly=mscorlib">
|
|
||||||
|
|
||||||
<system:String x:Key="wox_plugin_controlpanel_plugin_name">Systemsteuerung</system:String>
|
|
||||||
<system:String x:Key="wox_plugin_controlpanel_plugin_description">Suche in der Systemsteuerung</system:String>
|
|
||||||
|
|
||||||
</ResourceDictionary>
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
|
||||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
|
||||||
xmlns:system="clr-namespace:System;assembly=mscorlib">
|
|
||||||
|
|
||||||
<system:String x:Key="wox_plugin_controlpanel_plugin_name">Control Panel</system:String>
|
|
||||||
<system:String x:Key="wox_plugin_controlpanel_plugin_description">Search within the Control Panel</system:String>
|
|
||||||
|
|
||||||
</ResourceDictionary>
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
|
||||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
|
||||||
xmlns:system="clr-namespace:System;assembly=mscorlib">
|
|
||||||
|
|
||||||
<system:String x:Key="wox_plugin_controlpanel_plugin_name">Panel sterowania</system:String>
|
|
||||||
<system:String x:Key="wox_plugin_controlpanel_plugin_description">Szybie wyszukiwanie ustawień w panelu sterowania</system:String>
|
|
||||||
|
|
||||||
</ResourceDictionary>
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
|
||||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
|
||||||
xmlns:system="clr-namespace:System;assembly=mscorlib">
|
|
||||||
|
|
||||||
<system:String x:Key="wox_plugin_controlpanel_plugin_name">Denetim Masası</system:String>
|
|
||||||
<system:String x:Key="wox_plugin_controlpanel_plugin_description">Denetim Masası'nda arama yapın.</system:String>
|
|
||||||
|
|
||||||
</ResourceDictionary>
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
|
||||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
|
||||||
xmlns:system="clr-namespace:System;assembly=mscorlib">
|
|
||||||
|
|
||||||
<system:String x:Key="wox_plugin_controlpanel_plugin_name">控制面板</system:String>
|
|
||||||
<system:String x:Key="wox_plugin_controlpanel_plugin_description">搜索控制面板</system:String>
|
|
||||||
|
|
||||||
</ResourceDictionary>
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
|
||||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
|
||||||
xmlns:system="clr-namespace:System;assembly=mscorlib">
|
|
||||||
|
|
||||||
<system:String x:Key="wox_plugin_controlpanel_plugin_name">控制台</system:String>
|
|
||||||
<system:String x:Key="wox_plugin_controlpanel_plugin_description">搜尋控制台</system:String>
|
|
||||||
|
|
||||||
</ResourceDictionary>
|
|
||||||
@@ -1,99 +0,0 @@
|
|||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Diagnostics;
|
|
||||||
using System.IO;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
using Wox.Infrastructure;
|
|
||||||
|
|
||||||
namespace Wox.Plugin.ControlPanel
|
|
||||||
{
|
|
||||||
public class Main : IPlugin, IPluginI18n
|
|
||||||
{
|
|
||||||
private PluginInitContext context;
|
|
||||||
private List<ControlPanelItem> controlPanelItems = new List<ControlPanelItem>();
|
|
||||||
private string iconFolder;
|
|
||||||
private string fileType;
|
|
||||||
|
|
||||||
public void Init(PluginInitContext context)
|
|
||||||
{
|
|
||||||
this.context = context;
|
|
||||||
controlPanelItems = ControlPanelList.Create(48);
|
|
||||||
iconFolder = Path.Combine(context.CurrentPluginMetadata.PluginDirectory, @"Images\ControlPanelIcons\");
|
|
||||||
fileType = ".bmp";
|
|
||||||
|
|
||||||
if (!Directory.Exists(iconFolder))
|
|
||||||
{
|
|
||||||
Directory.CreateDirectory(iconFolder);
|
|
||||||
}
|
|
||||||
|
|
||||||
foreach (ControlPanelItem item in controlPanelItems)
|
|
||||||
{
|
|
||||||
if (!File.Exists(iconFolder + item.GUID + fileType) && item.Icon != null)
|
|
||||||
{
|
|
||||||
item.Icon.ToBitmap().Save(iconFolder + item.GUID + fileType);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public List<Result> Query(Query query)
|
|
||||||
{
|
|
||||||
List<Result> results = new List<Result>();
|
|
||||||
|
|
||||||
foreach (var item in controlPanelItems)
|
|
||||||
{
|
|
||||||
var titleMatch = StringMatcher.FuzzySearch(query.Search, item.LocalizedString);
|
|
||||||
var subTitleMatch = StringMatcher.FuzzySearch(query.Search, item.InfoTip);
|
|
||||||
|
|
||||||
item.Score = Math.Max(titleMatch.Score, subTitleMatch.Score);
|
|
||||||
if (item.Score > 0)
|
|
||||||
{
|
|
||||||
var result = new Result
|
|
||||||
{
|
|
||||||
Title = item.LocalizedString,
|
|
||||||
SubTitle = item.InfoTip,
|
|
||||||
Score = item.Score,
|
|
||||||
IcoPath = Path.Combine(context.CurrentPluginMetadata.PluginDirectory,
|
|
||||||
@"Images\\ControlPanelIcons\\" + item.GUID + fileType),
|
|
||||||
Action = e =>
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
Process.Start(item.ExecutablePath);
|
|
||||||
}
|
|
||||||
catch (Exception)
|
|
||||||
{
|
|
||||||
//Silently Fail for now.. todo
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
if (item.Score == titleMatch.Score)
|
|
||||||
{
|
|
||||||
result.TitleHighlightData = titleMatch.MatchData;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
result.SubTitleHighlightData = subTitleMatch.MatchData;
|
|
||||||
}
|
|
||||||
|
|
||||||
results.Add(result);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
List<Result> panelItems = results.OrderByDescending(o => o.Score).Take(5).ToList();
|
|
||||||
return panelItems;
|
|
||||||
}
|
|
||||||
|
|
||||||
public string GetTranslatedPluginTitle()
|
|
||||||
{
|
|
||||||
return context.API.GetTranslation("wox_plugin_controlpanel_plugin_name");
|
|
||||||
}
|
|
||||||
|
|
||||||
public string GetTranslatedPluginDescription()
|
|
||||||
{
|
|
||||||
return context.API.GetTranslation("wox_plugin_controlpanel_plugin_description");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,12 +0,0 @@
|
|||||||
{
|
|
||||||
"ID":"209621585B9B4D81813913C507C058C6",
|
|
||||||
"ActionKeyword":"*",
|
|
||||||
"Name":"Control Panel",
|
|
||||||
"Description":"Search within the Control Panel.",
|
|
||||||
"Author":"CoenraadS",
|
|
||||||
"Version":"1.0.0",
|
|
||||||
"Language":"csharp",
|
|
||||||
"Website":"http://www.wox.one/plugin",
|
|
||||||
"ExecuteFileName":"Wox.Plugin.ControlPanel.dll",
|
|
||||||
"IcoPath":"Images\\ControlPanel.png"
|
|
||||||
}
|
|
||||||
@@ -1,63 +0,0 @@
|
|||||||
###############################################################################
|
|
||||||
# Set default behavior to automatically normalize line endings.
|
|
||||||
###############################################################################
|
|
||||||
* text=auto
|
|
||||||
|
|
||||||
###############################################################################
|
|
||||||
# Set default behavior for command prompt diff.
|
|
||||||
#
|
|
||||||
# This is need for earlier builds of msysgit that does not have it on by
|
|
||||||
# default for csharp files.
|
|
||||||
# Note: This is only used by command line
|
|
||||||
###############################################################################
|
|
||||||
#*.cs diff=csharp
|
|
||||||
|
|
||||||
###############################################################################
|
|
||||||
# Set the merge driver for project and solution files
|
|
||||||
#
|
|
||||||
# Merging from the command prompt will add diff markers to the files if there
|
|
||||||
# are conflicts (Merging from VS is not affected by the settings below, in VS
|
|
||||||
# the diff markers are never inserted). Diff markers may cause the following
|
|
||||||
# file extensions to fail to load in VS. An alternative would be to treat
|
|
||||||
# these files as binary and thus will always conflict and require user
|
|
||||||
# intervention with every merge. To do so, just uncomment the entries below
|
|
||||||
###############################################################################
|
|
||||||
#*.sln merge=binary
|
|
||||||
#*.csproj merge=binary
|
|
||||||
#*.vbproj merge=binary
|
|
||||||
#*.vcxproj merge=binary
|
|
||||||
#*.vcproj merge=binary
|
|
||||||
#*.dbproj merge=binary
|
|
||||||
#*.fsproj merge=binary
|
|
||||||
#*.lsproj merge=binary
|
|
||||||
#*.wixproj merge=binary
|
|
||||||
#*.modelproj merge=binary
|
|
||||||
#*.sqlproj merge=binary
|
|
||||||
#*.wwaproj merge=binary
|
|
||||||
|
|
||||||
###############################################################################
|
|
||||||
# behavior for image files
|
|
||||||
#
|
|
||||||
# image files are treated as binary by default.
|
|
||||||
###############################################################################
|
|
||||||
#*.jpg binary
|
|
||||||
#*.png binary
|
|
||||||
#*.gif binary
|
|
||||||
|
|
||||||
###############################################################################
|
|
||||||
# diff behavior for common document formats
|
|
||||||
#
|
|
||||||
# Convert binary document formats to text before diffing them. This feature
|
|
||||||
# is only available from the command line. Turn it on by uncommenting the
|
|
||||||
# entries below.
|
|
||||||
###############################################################################
|
|
||||||
#*.doc diff=astextplain
|
|
||||||
#*.DOC diff=astextplain
|
|
||||||
#*.docx diff=astextplain
|
|
||||||
#*.DOCX diff=astextplain
|
|
||||||
#*.dot diff=astextplain
|
|
||||||
#*.DOT diff=astextplain
|
|
||||||
#*.pdf diff=astextplain
|
|
||||||
#*.PDF diff=astextplain
|
|
||||||
#*.rtf diff=astextplain
|
|
||||||
#*.RTF diff=astextplain
|
|
||||||
@@ -1,156 +0,0 @@
|
|||||||
## Ignore Visual Studio temporary files, build results, and
|
|
||||||
## files generated by popular Visual Studio add-ons.
|
|
||||||
|
|
||||||
# User-specific files
|
|
||||||
*.suo
|
|
||||||
*.user
|
|
||||||
*.sln.docstates
|
|
||||||
|
|
||||||
# Build results
|
|
||||||
|
|
||||||
[Dd]ebug/
|
|
||||||
[Rr]elease/
|
|
||||||
x64/
|
|
||||||
build/
|
|
||||||
[Bb]in/
|
|
||||||
[Oo]bj/
|
|
||||||
|
|
||||||
# Enable "build/" folder in the NuGet Packages folder since NuGet packages use it for MSBuild targets
|
|
||||||
!packages/*/build/
|
|
||||||
|
|
||||||
# MSTest test Results
|
|
||||||
[Tt]est[Rr]esult*/
|
|
||||||
[Bb]uild[Ll]og.*
|
|
||||||
|
|
||||||
*_i.c
|
|
||||||
*_p.c
|
|
||||||
*.ilk
|
|
||||||
*.meta
|
|
||||||
*.obj
|
|
||||||
*.pch
|
|
||||||
*.pdb
|
|
||||||
*.pgc
|
|
||||||
*.pgd
|
|
||||||
*.rsp
|
|
||||||
*.sbr
|
|
||||||
*.tlb
|
|
||||||
*.tli
|
|
||||||
*.tlh
|
|
||||||
*.tmp
|
|
||||||
*.tmp_proj
|
|
||||||
*.log
|
|
||||||
*.vspscc
|
|
||||||
*.vssscc
|
|
||||||
.builds
|
|
||||||
*.pidb
|
|
||||||
*.log
|
|
||||||
*.scc
|
|
||||||
|
|
||||||
# Visual C++ cache files
|
|
||||||
ipch/
|
|
||||||
*.aps
|
|
||||||
*.ncb
|
|
||||||
*.opensdf
|
|
||||||
*.sdf
|
|
||||||
*.cachefile
|
|
||||||
|
|
||||||
# Visual Studio profiler
|
|
||||||
*.psess
|
|
||||||
*.vsp
|
|
||||||
*.vspx
|
|
||||||
|
|
||||||
# Guidance Automation Toolkit
|
|
||||||
*.gpState
|
|
||||||
|
|
||||||
# ReSharper is a .NET coding add-in
|
|
||||||
_ReSharper*/
|
|
||||||
*.[Rr]e[Ss]harper
|
|
||||||
|
|
||||||
# TeamCity is a build add-in
|
|
||||||
_TeamCity*
|
|
||||||
|
|
||||||
# DotCover is a Code Coverage Tool
|
|
||||||
*.dotCover
|
|
||||||
|
|
||||||
# NCrunch
|
|
||||||
*.ncrunch*
|
|
||||||
.*crunch*.local.xml
|
|
||||||
|
|
||||||
# Installshield output folder
|
|
||||||
[Ee]xpress/
|
|
||||||
|
|
||||||
# DocProject is a documentation generator add-in
|
|
||||||
DocProject/buildhelp/
|
|
||||||
DocProject/Help/*.HxT
|
|
||||||
DocProject/Help/*.HxC
|
|
||||||
DocProject/Help/*.hhc
|
|
||||||
DocProject/Help/*.hhk
|
|
||||||
DocProject/Help/*.hhp
|
|
||||||
DocProject/Help/Html2
|
|
||||||
DocProject/Help/html
|
|
||||||
|
|
||||||
# Click-Once directory
|
|
||||||
publish/
|
|
||||||
|
|
||||||
# Publish Web Output
|
|
||||||
*.Publish.xml
|
|
||||||
|
|
||||||
# NuGet Packages Directory
|
|
||||||
## TODO: If you have NuGet Package Restore enabled, uncomment the next line
|
|
||||||
packages/
|
|
||||||
|
|
||||||
# Windows Azure Build Output
|
|
||||||
csx
|
|
||||||
*.build.csdef
|
|
||||||
|
|
||||||
# Windows Store app package directory
|
|
||||||
AppPackages/
|
|
||||||
|
|
||||||
# Others
|
|
||||||
sql/
|
|
||||||
*.Cache
|
|
||||||
ClientBin/
|
|
||||||
[Ss]tyle[Cc]op.*
|
|
||||||
~$*
|
|
||||||
*~
|
|
||||||
*.dbmdl
|
|
||||||
*.[Pp]ublish.xml
|
|
||||||
*.pfx
|
|
||||||
*.publishsettings
|
|
||||||
|
|
||||||
# RIA/Silverlight projects
|
|
||||||
Generated_Code/
|
|
||||||
|
|
||||||
# Backup & report files from converting an old project file to a newer
|
|
||||||
# Visual Studio version. Backup files are not needed, because we have git ;-)
|
|
||||||
_UpgradeReport_Files/
|
|
||||||
Backup*/
|
|
||||||
UpgradeLog*.XML
|
|
||||||
UpgradeLog*.htm
|
|
||||||
|
|
||||||
# SQL Server files
|
|
||||||
App_Data/*.mdf
|
|
||||||
App_Data/*.ldf
|
|
||||||
|
|
||||||
|
|
||||||
#LightSwitch generated files
|
|
||||||
GeneratedArtifacts/
|
|
||||||
_Pvt_Extensions/
|
|
||||||
ModelManifest.xml
|
|
||||||
|
|
||||||
# =========================
|
|
||||||
# Windows detritus
|
|
||||||
# =========================
|
|
||||||
|
|
||||||
# Windows image file caches
|
|
||||||
Thumbs.db
|
|
||||||
ehthumbs.db
|
|
||||||
|
|
||||||
# Folder config file
|
|
||||||
Desktop.ini
|
|
||||||
|
|
||||||
# Recycle Bin used on file shares
|
|
||||||
$RECYCLE.BIN/
|
|
||||||
|
|
||||||
# Mac desktop service store files
|
|
||||||
.DS_Store
|
|
||||||
@@ -1,218 +0,0 @@
|
|||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Runtime.InteropServices;
|
|
||||||
using System.Text;
|
|
||||||
using System.Threading;
|
|
||||||
using Wox.Infrastructure.Logger;
|
|
||||||
using Wox.Plugin.Everything.Everything.Exceptions;
|
|
||||||
|
|
||||||
namespace Wox.Plugin.Everything.Everything
|
|
||||||
{
|
|
||||||
public interface IEverythingApi
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// Searches the specified key word.
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="keyWord">The key word.</param>
|
|
||||||
/// <param name="token">token that allow cancellation</param>
|
|
||||||
/// <param name="offset">The offset.</param>
|
|
||||||
/// <param name="maxCount">The max count.</param>
|
|
||||||
/// <returns></returns>
|
|
||||||
List<SearchResult> Search(string keyWord, CancellationToken token, int offset = 0, int maxCount = 100);
|
|
||||||
|
|
||||||
void Load(string sdkPath);
|
|
||||||
}
|
|
||||||
|
|
||||||
public sealed class EverythingApi : IEverythingApi
|
|
||||||
{
|
|
||||||
private const int BufferSize = 4096;
|
|
||||||
|
|
||||||
private readonly object _syncObject = new object();
|
|
||||||
// cached buffer to remove redundant allocations.
|
|
||||||
private readonly StringBuilder _buffer = new StringBuilder(BufferSize);
|
|
||||||
|
|
||||||
public enum StateCode
|
|
||||||
{
|
|
||||||
OK,
|
|
||||||
MemoryError,
|
|
||||||
IPCError,
|
|
||||||
RegisterClassExError,
|
|
||||||
CreateWindowError,
|
|
||||||
CreateThreadError,
|
|
||||||
InvalidIndexError,
|
|
||||||
InvalidCallError
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Gets or sets a value indicating whether [match path].
|
|
||||||
/// </summary>
|
|
||||||
/// <value><c>true</c> if [match path]; otherwise, <c>false</c>.</value>
|
|
||||||
public bool MatchPath
|
|
||||||
{
|
|
||||||
get
|
|
||||||
{
|
|
||||||
return EverythingApiDllImport.Everything_GetMatchPath();
|
|
||||||
}
|
|
||||||
set
|
|
||||||
{
|
|
||||||
EverythingApiDllImport.Everything_SetMatchPath(value);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Gets or sets a value indicating whether [match case].
|
|
||||||
/// </summary>
|
|
||||||
/// <value><c>true</c> if [match case]; otherwise, <c>false</c>.</value>
|
|
||||||
public bool MatchCase
|
|
||||||
{
|
|
||||||
get
|
|
||||||
{
|
|
||||||
return EverythingApiDllImport.Everything_GetMatchCase();
|
|
||||||
}
|
|
||||||
set
|
|
||||||
{
|
|
||||||
EverythingApiDllImport.Everything_SetMatchCase(value);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Gets or sets a value indicating whether [match whole word].
|
|
||||||
/// </summary>
|
|
||||||
/// <value><c>true</c> if [match whole word]; otherwise, <c>false</c>.</value>
|
|
||||||
public bool MatchWholeWord
|
|
||||||
{
|
|
||||||
get
|
|
||||||
{
|
|
||||||
return EverythingApiDllImport.Everything_GetMatchWholeWord();
|
|
||||||
}
|
|
||||||
set
|
|
||||||
{
|
|
||||||
EverythingApiDllImport.Everything_SetMatchWholeWord(value);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Gets or sets a value indicating whether [enable regex].
|
|
||||||
/// </summary>
|
|
||||||
/// <value><c>true</c> if [enable regex]; otherwise, <c>false</c>.</value>
|
|
||||||
public bool EnableRegex
|
|
||||||
{
|
|
||||||
get
|
|
||||||
{
|
|
||||||
return EverythingApiDllImport.Everything_GetRegex();
|
|
||||||
}
|
|
||||||
set
|
|
||||||
{
|
|
||||||
EverythingApiDllImport.Everything_SetRegex(value);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Resets this instance.
|
|
||||||
/// </summary>
|
|
||||||
public void Reset()
|
|
||||||
{
|
|
||||||
lock (_syncObject)
|
|
||||||
{
|
|
||||||
EverythingApiDllImport.Everything_Reset();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Searches the specified key word and reset the everything API afterwards
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="keyWord">The key word.</param>
|
|
||||||
/// <param name="token">when cancelled the current search will stop and exit (and would not reset)</param>
|
|
||||||
/// <param name="offset">The offset.</param>
|
|
||||||
/// <param name="maxCount">The max count.</param>
|
|
||||||
/// <returns></returns>
|
|
||||||
public List<SearchResult> Search(string keyWord, CancellationToken token, int offset = 0, int maxCount = 100)
|
|
||||||
{
|
|
||||||
if (string.IsNullOrEmpty(keyWord))
|
|
||||||
throw new ArgumentNullException(nameof(keyWord));
|
|
||||||
|
|
||||||
if (offset < 0)
|
|
||||||
throw new ArgumentOutOfRangeException(nameof(offset));
|
|
||||||
|
|
||||||
if (maxCount < 0)
|
|
||||||
throw new ArgumentOutOfRangeException(nameof(maxCount));
|
|
||||||
|
|
||||||
lock (_syncObject)
|
|
||||||
{
|
|
||||||
if (keyWord.StartsWith("@"))
|
|
||||||
{
|
|
||||||
EverythingApiDllImport.Everything_SetRegex(true);
|
|
||||||
keyWord = keyWord.Substring(1);
|
|
||||||
}
|
|
||||||
|
|
||||||
EverythingApiDllImport.Everything_SetSearchW(keyWord);
|
|
||||||
EverythingApiDllImport.Everything_SetOffset(offset);
|
|
||||||
EverythingApiDllImport.Everything_SetMax(maxCount);
|
|
||||||
|
|
||||||
if (token.IsCancellationRequested)
|
|
||||||
{
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
if (!EverythingApiDllImport.Everything_QueryW(true))
|
|
||||||
{
|
|
||||||
CheckAndThrowExceptionOnError();
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
var results = new List<SearchResult>();
|
|
||||||
for (int idx = 0; idx < EverythingApiDllImport.Everything_GetNumResults(); ++idx)
|
|
||||||
{
|
|
||||||
if (token.IsCancellationRequested)
|
|
||||||
{
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
EverythingApiDllImport.Everything_GetResultFullPathNameW(idx, _buffer, BufferSize);
|
|
||||||
|
|
||||||
var result = new SearchResult { FullPath = _buffer.ToString() };
|
|
||||||
if (EverythingApiDllImport.Everything_IsFolderResult(idx))
|
|
||||||
result.Type = ResultType.Folder;
|
|
||||||
else if (EverythingApiDllImport.Everything_IsFileResult(idx))
|
|
||||||
result.Type = ResultType.File;
|
|
||||||
|
|
||||||
results.Add(result);
|
|
||||||
}
|
|
||||||
|
|
||||||
Reset();
|
|
||||||
|
|
||||||
return results;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
[DllImport("kernel32.dll")]
|
|
||||||
private static extern int LoadLibrary(string name);
|
|
||||||
|
|
||||||
public void Load(string sdkPath)
|
|
||||||
{
|
|
||||||
LoadLibrary(sdkPath);
|
|
||||||
}
|
|
||||||
|
|
||||||
private static void CheckAndThrowExceptionOnError()
|
|
||||||
{
|
|
||||||
switch (EverythingApiDllImport.Everything_GetLastError())
|
|
||||||
{
|
|
||||||
case StateCode.CreateThreadError:
|
|
||||||
throw new CreateThreadException();
|
|
||||||
case StateCode.CreateWindowError:
|
|
||||||
throw new CreateWindowException();
|
|
||||||
case StateCode.InvalidCallError:
|
|
||||||
throw new InvalidCallException();
|
|
||||||
case StateCode.InvalidIndexError:
|
|
||||||
throw new InvalidIndexException();
|
|
||||||
case StateCode.IPCError:
|
|
||||||
throw new IPCErrorException();
|
|
||||||
case StateCode.MemoryError:
|
|
||||||
throw new MemoryErrorException();
|
|
||||||
case StateCode.RegisterClassExError:
|
|
||||||
throw new RegisterClassExException();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,92 +0,0 @@
|
|||||||
using System.Runtime.InteropServices;
|
|
||||||
using System.Text;
|
|
||||||
|
|
||||||
namespace Wox.Plugin.Everything.Everything
|
|
||||||
{
|
|
||||||
public sealed class EverythingApiDllImport
|
|
||||||
{
|
|
||||||
[DllImport(Main.DLL, CharSet = CharSet.Unicode)]
|
|
||||||
internal static extern int Everything_SetSearchW(string lpSearchString);
|
|
||||||
|
|
||||||
[DllImport(Main.DLL)]
|
|
||||||
internal static extern void Everything_SetMatchPath(bool bEnable);
|
|
||||||
|
|
||||||
[DllImport(Main.DLL)]
|
|
||||||
internal static extern void Everything_SetMatchCase(bool bEnable);
|
|
||||||
|
|
||||||
[DllImport(Main.DLL)]
|
|
||||||
internal static extern void Everything_SetMatchWholeWord(bool bEnable);
|
|
||||||
|
|
||||||
[DllImport(Main.DLL)]
|
|
||||||
internal static extern void Everything_SetRegex(bool bEnable);
|
|
||||||
|
|
||||||
[DllImport(Main.DLL)]
|
|
||||||
internal static extern void Everything_SetMax(int dwMax);
|
|
||||||
|
|
||||||
[DllImport(Main.DLL)]
|
|
||||||
internal static extern void Everything_SetOffset(int dwOffset);
|
|
||||||
|
|
||||||
[DllImport(Main.DLL)]
|
|
||||||
internal static extern bool Everything_GetMatchPath();
|
|
||||||
|
|
||||||
[DllImport(Main.DLL)]
|
|
||||||
internal static extern bool Everything_GetMatchCase();
|
|
||||||
|
|
||||||
[DllImport(Main.DLL)]
|
|
||||||
internal static extern bool Everything_GetMatchWholeWord();
|
|
||||||
|
|
||||||
[DllImport(Main.DLL)]
|
|
||||||
internal static extern bool Everything_GetRegex();
|
|
||||||
|
|
||||||
[DllImport(Main.DLL)]
|
|
||||||
internal static extern uint Everything_GetMax();
|
|
||||||
|
|
||||||
[DllImport(Main.DLL)]
|
|
||||||
internal static extern uint Everything_GetOffset();
|
|
||||||
|
|
||||||
[DllImport(Main.DLL, CharSet = CharSet.Unicode)]
|
|
||||||
internal static extern string Everything_GetSearchW();
|
|
||||||
|
|
||||||
[DllImport(Main.DLL)]
|
|
||||||
internal static extern EverythingApi.StateCode Everything_GetLastError();
|
|
||||||
|
|
||||||
[DllImport(Main.DLL, CharSet = CharSet.Unicode)]
|
|
||||||
internal static extern bool Everything_QueryW(bool bWait);
|
|
||||||
|
|
||||||
[DllImport(Main.DLL)]
|
|
||||||
internal static extern void Everything_SortResultsByPath();
|
|
||||||
|
|
||||||
[DllImport(Main.DLL)]
|
|
||||||
internal static extern int Everything_GetNumFileResults();
|
|
||||||
|
|
||||||
[DllImport(Main.DLL)]
|
|
||||||
internal static extern int Everything_GetNumFolderResults();
|
|
||||||
|
|
||||||
[DllImport(Main.DLL)]
|
|
||||||
internal static extern int Everything_GetNumResults();
|
|
||||||
|
|
||||||
[DllImport(Main.DLL)]
|
|
||||||
internal static extern int Everything_GetTotFileResults();
|
|
||||||
|
|
||||||
[DllImport(Main.DLL)]
|
|
||||||
internal static extern int Everything_GetTotFolderResults();
|
|
||||||
|
|
||||||
[DllImport(Main.DLL)]
|
|
||||||
internal static extern int Everything_GetTotResults();
|
|
||||||
|
|
||||||
[DllImport(Main.DLL)]
|
|
||||||
internal static extern bool Everything_IsVolumeResult(int nIndex);
|
|
||||||
|
|
||||||
[DllImport(Main.DLL)]
|
|
||||||
internal static extern bool Everything_IsFolderResult(int nIndex);
|
|
||||||
|
|
||||||
[DllImport(Main.DLL)]
|
|
||||||
internal static extern bool Everything_IsFileResult(int nIndex);
|
|
||||||
|
|
||||||
[DllImport(Main.DLL, CharSet = CharSet.Unicode)]
|
|
||||||
internal static extern void Everything_GetResultFullPathNameW(int nIndex, StringBuilder lpString, int nMaxCount);
|
|
||||||
|
|
||||||
[DllImport(Main.DLL)]
|
|
||||||
internal static extern void Everything_Reset();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,11 +0,0 @@
|
|||||||
using System;
|
|
||||||
|
|
||||||
namespace Wox.Plugin.Everything.Everything
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
///
|
|
||||||
/// </summary>
|
|
||||||
public class CreateThreadException : ApplicationException
|
|
||||||
{
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,11 +0,0 @@
|
|||||||
using System;
|
|
||||||
|
|
||||||
namespace Wox.Plugin.Everything.Everything
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
///
|
|
||||||
/// </summary>
|
|
||||||
public class CreateWindowException : ApplicationException
|
|
||||||
{
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,11 +0,0 @@
|
|||||||
using System;
|
|
||||||
|
|
||||||
namespace Wox.Plugin.Everything.Everything
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
///
|
|
||||||
/// </summary>
|
|
||||||
public class IPCErrorException : ApplicationException
|
|
||||||
{
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,11 +0,0 @@
|
|||||||
using System;
|
|
||||||
|
|
||||||
namespace Wox.Plugin.Everything.Everything
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
///
|
|
||||||
/// </summary>
|
|
||||||
public class InvalidCallException : ApplicationException
|
|
||||||
{
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,11 +0,0 @@
|
|||||||
using System;
|
|
||||||
|
|
||||||
namespace Wox.Plugin.Everything.Everything
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
///
|
|
||||||
/// </summary>
|
|
||||||
public class InvalidIndexException : ApplicationException
|
|
||||||
{
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,11 +0,0 @@
|
|||||||
using System;
|
|
||||||
|
|
||||||
namespace Wox.Plugin.Everything.Everything.Exceptions
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
///
|
|
||||||
/// </summary>
|
|
||||||
public class MemoryErrorException : ApplicationException
|
|
||||||
{
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,11 +0,0 @@
|
|||||||
using System;
|
|
||||||
|
|
||||||
namespace Wox.Plugin.Everything.Everything
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
///
|
|
||||||
/// </summary>
|
|
||||||
public class RegisterClassExException : ApplicationException
|
|
||||||
{
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,9 +0,0 @@
|
|||||||
namespace Wox.Plugin.Everything.Everything
|
|
||||||
{
|
|
||||||
public enum ResultType
|
|
||||||
{
|
|
||||||
Volume,
|
|
||||||
Folder,
|
|
||||||
File
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
namespace Wox.Plugin.Everything.Everything
|
|
||||||
{
|
|
||||||
public class SearchResult
|
|
||||||
{
|
|
||||||
public string FullPath { get; set; }
|
|
||||||
public ResultType Type { get; set; }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,26 +0,0 @@
|
|||||||
<UserControl x:Class="Wox.Plugin.Everything.EverythingSettings"
|
|
||||||
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"
|
|
||||||
Loaded="View_Loaded"
|
|
||||||
d:DesignHeight="300" d:DesignWidth="300">
|
|
||||||
<Border BorderBrush="Gray" Margin="10" BorderThickness="1">
|
|
||||||
<Grid Margin="10" VerticalAlignment="Top" >
|
|
||||||
<Grid.RowDefinitions>
|
|
||||||
<RowDefinition/>
|
|
||||||
<RowDefinition/>
|
|
||||||
</Grid.RowDefinitions>
|
|
||||||
<Grid.ColumnDefinitions>
|
|
||||||
<ColumnDefinition Width="Auto"></ColumnDefinition>
|
|
||||||
<ColumnDefinition Width="*"></ColumnDefinition>
|
|
||||||
<ColumnDefinition Width="Auto"></ColumnDefinition>
|
|
||||||
</Grid.ColumnDefinitions>
|
|
||||||
<CheckBox Grid.Row="0" Grid.ColumnSpan="3" x:Name="UseLocationAsWorkingDir" Content="{DynamicResource wox_plugin_everything_use_location_as_working_dir}" Margin="10" HorizontalAlignment="Left" />
|
|
||||||
<Label Grid.Row="1" Margin="10" Content="{DynamicResource wox_plugin_everything_editor_path}" HorizontalAlignment="Left"/>
|
|
||||||
<Label Grid.Row="1" Grid.Column="1" x:Name="EditorPath" Margin="10" HorizontalAlignment="Stretch" />
|
|
||||||
<Button Grid.Row="1" Grid.Column="2" x:Name="OpenEditorPath" Content="..." Margin="10" HorizontalAlignment="Right" Click="EditorPath_Clicked"/>
|
|
||||||
</Grid>
|
|
||||||
</Border>
|
|
||||||
</UserControl>
|
|
||||||
@@ -1,49 +0,0 @@
|
|||||||
using System.Windows;
|
|
||||||
using System.Windows.Controls;
|
|
||||||
using Microsoft.Win32;
|
|
||||||
|
|
||||||
namespace Wox.Plugin.Everything
|
|
||||||
{
|
|
||||||
public partial class EverythingSettings : UserControl
|
|
||||||
{
|
|
||||||
private readonly Settings _settings;
|
|
||||||
|
|
||||||
public EverythingSettings(Settings settings)
|
|
||||||
{
|
|
||||||
InitializeComponent();
|
|
||||||
_settings = settings;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void View_Loaded(object sender, RoutedEventArgs re)
|
|
||||||
{
|
|
||||||
UseLocationAsWorkingDir.IsChecked = _settings.UseLocationAsWorkingDir;
|
|
||||||
|
|
||||||
UseLocationAsWorkingDir.Checked += (o, e) =>
|
|
||||||
{
|
|
||||||
_settings.UseLocationAsWorkingDir = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
UseLocationAsWorkingDir.Unchecked += (o, e) =>
|
|
||||||
{
|
|
||||||
_settings.UseLocationAsWorkingDir = false;
|
|
||||||
};
|
|
||||||
|
|
||||||
EditorPath.Content = _settings.EditorPath;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void EditorPath_Clicked(object sender, RoutedEventArgs e)
|
|
||||||
{
|
|
||||||
OpenFileDialog openFileDialog = new OpenFileDialog();
|
|
||||||
openFileDialog.Filter = "Executable File(*.exe)| *.exe";
|
|
||||||
if (!string.IsNullOrEmpty(_settings.EditorPath))
|
|
||||||
openFileDialog.InitialDirectory = System.IO.Path.GetDirectoryName(_settings.EditorPath);
|
|
||||||
|
|
||||||
if (openFileDialog.ShowDialog() == true)
|
|
||||||
{
|
|
||||||
_settings.EditorPath = openFileDialog.FileName;
|
|
||||||
}
|
|
||||||
|
|
||||||
EditorPath.Content = _settings.EditorPath;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
Before Width: | Height: | Size: 1.0 KiB |
|
Before Width: | Height: | Size: 290 B |
|
Before Width: | Height: | Size: 1.4 KiB |
|
Before Width: | Height: | Size: 468 B |
|
Before Width: | Height: | Size: 634 B |
|
Before Width: | Height: | Size: 738 B |
@@ -1,18 +0,0 @@
|
|||||||
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
|
||||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
|
||||||
xmlns:system="clr-namespace:System;assembly=mscorlib">
|
|
||||||
|
|
||||||
<system:String x:Key="wox_plugin_everything_is_not_running">Everything Service läuft nicht</system:String>
|
|
||||||
<system:String x:Key="wox_plugin_everything_query_error">Everything Plugin hat einen Fehler (drücke Enter zum kopieren der Fehlernachricht)</system:String>
|
|
||||||
<system:String x:Key="wox_plugin_everything_copied">kopiert</system:String>
|
|
||||||
<system:String x:Key="wox_plugin_everything_canot_start">Kann {0} nicht starten</system:String>
|
|
||||||
<system:String x:Key="wox_plugin_everything_open_containing_folder">Öffne enthaltenden Ordner</system:String>
|
|
||||||
<system:String x:Key="wox_plugin_everything_open_with_editor">Openen met {0}</system:String>
|
|
||||||
<system:String x:Key="wox_plugin_everything_editor_path">Editor pad</system:String>
|
|
||||||
|
|
||||||
<system:String x:Key="wox_plugin_everything_plugin_name">Everything</system:String>
|
|
||||||
<system:String x:Key="wox_plugin_everything_plugin_description">Suche Dateien mit Everything</system:String>
|
|
||||||
|
|
||||||
<system:String x:Key="wox_plugin_everything_use_location_as_working_dir">Verwenden Suchergebnis Standort als ausführbare Arbeitsverzeichnis</system:String>
|
|
||||||
|
|
||||||
</ResourceDictionary>
|
|
||||||
@@ -1,22 +0,0 @@
|
|||||||
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
|
||||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
|
||||||
xmlns:system="clr-namespace:System;assembly=mscorlib">
|
|
||||||
|
|
||||||
<system:String x:Key="wox_plugin_everything_is_not_running">Everything Service is not running</system:String>
|
|
||||||
<system:String x:Key="wox_plugin_everything_query_error">Error while querying Everything</system:String>
|
|
||||||
<system:String x:Key="wox_plugin_everything_copied">Copied</system:String>
|
|
||||||
<system:String x:Key="wox_plugin_everything_canot_start">Can’t start {0}</system:String>
|
|
||||||
<system:String x:Key="wox_plugin_everything_open_containing_folder">Open parent folder</system:String>
|
|
||||||
<system:String x:Key="wox_plugin_everything_open_with_editor">Open with {0}</system:String>
|
|
||||||
<system:String x:Key="wox_plugin_everything_editor_path">Editor Path</system:String>
|
|
||||||
<system:String x:Key="wox_plugin_everything_copy_path">Copy path</system:String>
|
|
||||||
<system:String x:Key="wox_plugin_everything_copy">Copy</system:String>
|
|
||||||
<system:String x:Key="wox_plugin_everything_delete">Delete</system:String>
|
|
||||||
<system:String x:Key="wox_plugin_everything_canot_delete">Can't delete {0}</system:String>
|
|
||||||
|
|
||||||
<system:String x:Key="wox_plugin_everything_plugin_name">Everything</system:String>
|
|
||||||
<system:String x:Key="wox_plugin_everything_plugin_description">Search on-disk files using Everything</system:String>
|
|
||||||
|
|
||||||
<system:String x:Key="wox_plugin_everything_use_location_as_working_dir">Use search result's location as executable working directory</system:String>
|
|
||||||
|
|
||||||
</ResourceDictionary>
|
|
||||||
@@ -1,16 +0,0 @@
|
|||||||
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
|
||||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
|
||||||
xmlns:system="clr-namespace:System;assembly=mscorlib">
|
|
||||||
|
|
||||||
<system:String x:Key="wox_plugin_everything_is_not_running">Everything Service nie jest uruchomiony</system:String>
|
|
||||||
<system:String x:Key="wox_plugin_everything_query_error">Wystąpił błąd podczas pobierania wyników z Everything</system:String>
|
|
||||||
<system:String x:Key="wox_plugin_everything_copied">Skopiowano</system:String>
|
|
||||||
<system:String x:Key="wox_plugin_everything_canot_start">Nie udało się uruchomić {0}</system:String>
|
|
||||||
<system:String x:Key="wox_plugin_everything_open_containing_folder">Otwórz folder nadrzędny.</system:String>
|
|
||||||
<system:String x:Key="wox_plugin_everything_open_with_editor">Otwórz za pomocą {0}</system:String>
|
|
||||||
<system:String x:Key="wox_plugin_everything_editor_path">Ścieżka edytora</system:String>
|
|
||||||
|
|
||||||
<system:String x:Key="wox_plugin_everything_plugin_name">Everything</system:String>
|
|
||||||
<system:String x:Key="wox_plugin_everything_plugin_description">Szukaj w plikach na dysku używając programu Everything</system:String>
|
|
||||||
|
|
||||||
</ResourceDictionary>
|
|
||||||
@@ -1,22 +0,0 @@
|
|||||||
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
|
||||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
|
||||||
xmlns:system="clr-namespace:System;assembly=mscorlib">
|
|
||||||
|
|
||||||
<system:String x:Key="wox_plugin_everything_is_not_running">Everything Servisi çalışmıyor</system:String>
|
|
||||||
<system:String x:Key="wox_plugin_everything_query_error">Sorgu Everything üzerinde çalıştırılırken hata oluştu</system:String>
|
|
||||||
<system:String x:Key="wox_plugin_everything_copied">Kopyalandı</system:String>
|
|
||||||
<system:String x:Key="wox_plugin_everything_canot_start">{0} başlatılamıyor</system:String>
|
|
||||||
<system:String x:Key="wox_plugin_everything_open_containing_folder">İçeren klasörü aç</system:String>
|
|
||||||
<system:String x:Key="wox_plugin_everything_open_with_editor">{0} ile aç</system:String>
|
|
||||||
<system:String x:Key="wox_plugin_everything_editor_path">Düzenleyici Konumu</system:String>
|
|
||||||
<system:String x:Key="wox_plugin_everything_copy_path">Konumu Kopyala</system:String>
|
|
||||||
<system:String x:Key="wox_plugin_everything_copy">Kopyala</system:String>
|
|
||||||
<system:String x:Key="wox_plugin_everything_delete">Sil</system:String>
|
|
||||||
<system:String x:Key="wox_plugin_everything_canot_delete">{0} silinemiyor</system:String>
|
|
||||||
|
|
||||||
<system:String x:Key="wox_plugin_everything_plugin_name">Everything</system:String>
|
|
||||||
<system:String x:Key="wox_plugin_everything_plugin_description">Everything programı yardımıyla diskteki dosyalarınızı arayın.</system:String>
|
|
||||||
|
|
||||||
<system:String x:Key="wox_plugin_everything_use_location_as_working_dir">Programın çalışma klasörü olarak sonuç klasörünü kullan</system:String>
|
|
||||||
|
|
||||||
</ResourceDictionary>
|
|
||||||
@@ -1,21 +0,0 @@
|
|||||||
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
|
||||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
|
||||||
xmlns:system="clr-namespace:System;assembly=mscorlib">
|
|
||||||
|
|
||||||
<system:String x:Key="wox_plugin_everything_is_not_running">Everything Service 没有运行</system:String>
|
|
||||||
<system:String x:Key="wox_plugin_everything_query_error">Everything 插件发生了一个错误(回车拷贝具体错误信息)</system:String>
|
|
||||||
<system:String x:Key="wox_plugin_everything_copied">拷贝成功</system:String>
|
|
||||||
<system:String x:Key="wox_plugin_everything_canot_start">不能启动 {0}</system:String>
|
|
||||||
<system:String x:Key="wox_plugin_everything_open_containing_folder">打开所属文件夹</system:String>
|
|
||||||
<system:String x:Key="wox_plugin_everything_open_with_editor">使用{0}打开</system:String>
|
|
||||||
<system:String x:Key="wox_plugin_everything_editor_path">编辑器路径</system:String>
|
|
||||||
<system:String x:Key="wox_plugin_everything_copy_path">拷贝路径</system:String>
|
|
||||||
<system:String x:Key="wox_plugin_everything_copy">拷贝</system:String>
|
|
||||||
<system:String x:Key="wox_plugin_everything_delete">删除</system:String>
|
|
||||||
<system:String x:Key="wox_plugin_everything_canot_delete">无法删除 {0}</system:String>
|
|
||||||
|
|
||||||
<system:String x:Key="wox_plugin_everything_plugin_name">Everything</system:String>
|
|
||||||
<system:String x:Key="wox_plugin_everything_plugin_description">利用 Everything 搜索磁盘文件</system:String>
|
|
||||||
|
|
||||||
<system:String x:Key="wox_plugin_everything_use_location_as_working_dir">使用应用程序的位置为可执行的工作目录</system:String>
|
|
||||||
</ResourceDictionary>
|
|
||||||
@@ -1,17 +0,0 @@
|
|||||||
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
|
||||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
|
||||||
xmlns:system="clr-namespace:System;assembly=mscorlib">
|
|
||||||
|
|
||||||
<system:String x:Key="wox_plugin_everything_is_not_running">Everything Service 尚未啟動</system:String>
|
|
||||||
<system:String x:Key="wox_plugin_everything_query_error">Everything 套件發生錯誤(Enter 複製具體錯誤訊息)</system:String>
|
|
||||||
<system:String x:Key="wox_plugin_everything_copied">複製成功</system:String>
|
|
||||||
<system:String x:Key="wox_plugin_everything_canot_start">無法啟動 {0}</system:String>
|
|
||||||
<system:String x:Key="wox_plugin_everything_open_containing_folder">開啟檔案位置</system:String>
|
|
||||||
<system:String x:Key="wox_plugin_everything_open_with_editor">利用{0}啟動</system:String>
|
|
||||||
<system:String x:Key="wox_plugin_everything_editor_path">編輯器路径</system:String>
|
|
||||||
|
|
||||||
<system:String x:Key="wox_plugin_everything_plugin_name">Everything</system:String>
|
|
||||||
<system:String x:Key="wox_plugin_everything_plugin_description">利用 Everything 搜尋磁碟上的檔案</system:String>
|
|
||||||
|
|
||||||
<system:String x:Key="wox_plugin_everything_use_location_as_working_dir">使用程式所在目錄作為工作目錄</system:String>
|
|
||||||
</ResourceDictionary>
|
|
||||||
@@ -1,286 +0,0 @@
|
|||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.ComponentModel;
|
|
||||||
using System.Diagnostics;
|
|
||||||
using System.IO;
|
|
||||||
using System.Runtime.InteropServices;
|
|
||||||
using System.Threading;
|
|
||||||
using System.Windows;
|
|
||||||
using System.Windows.Controls;
|
|
||||||
using Wox.Infrastructure;
|
|
||||||
using Wox.Infrastructure.Logger;
|
|
||||||
using Wox.Infrastructure.Storage;
|
|
||||||
using Wox.Plugin.Everything.Everything;
|
|
||||||
|
|
||||||
namespace Wox.Plugin.Everything
|
|
||||||
{
|
|
||||||
public class Main : IPlugin, ISettingProvider, IPluginI18n, IContextMenu, ISavable
|
|
||||||
{
|
|
||||||
public const string DLL = "Everything.dll";
|
|
||||||
private readonly IEverythingApi _api = new EverythingApi();
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
private PluginInitContext _context;
|
|
||||||
|
|
||||||
private Settings _settings;
|
|
||||||
private PluginJsonStorage<Settings> _storage;
|
|
||||||
private CancellationTokenSource _cancellationTokenSource;
|
|
||||||
|
|
||||||
public void Save()
|
|
||||||
{
|
|
||||||
_storage.Save();
|
|
||||||
}
|
|
||||||
|
|
||||||
public List<Result> Query(Query query)
|
|
||||||
{
|
|
||||||
_cancellationTokenSource?.Cancel(); // cancel if already exist
|
|
||||||
var cts = _cancellationTokenSource = new CancellationTokenSource();
|
|
||||||
var results = new List<Result>();
|
|
||||||
if (!string.IsNullOrEmpty(query.Search))
|
|
||||||
{
|
|
||||||
var keyword = query.Search;
|
|
||||||
|
|
||||||
try
|
|
||||||
{
|
|
||||||
var searchList = _api.Search(keyword, cts.Token, maxCount: _settings.MaxSearchCount);
|
|
||||||
if (searchList == null)
|
|
||||||
{
|
|
||||||
return results;
|
|
||||||
}
|
|
||||||
|
|
||||||
foreach (var searchResult in searchList)
|
|
||||||
{
|
|
||||||
var r = CreateResult(keyword, searchResult);
|
|
||||||
results.Add(r);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
catch (IPCErrorException)
|
|
||||||
{
|
|
||||||
results.Add(new Result
|
|
||||||
{
|
|
||||||
Title = _context.API.GetTranslation("wox_plugin_everything_is_not_running"),
|
|
||||||
IcoPath = "Images\\warning.png"
|
|
||||||
});
|
|
||||||
}
|
|
||||||
catch (Exception e)
|
|
||||||
{
|
|
||||||
Log.Exception("EverythingPlugin", "Query Error", e);
|
|
||||||
results.Add(new Result
|
|
||||||
{
|
|
||||||
Title = _context.API.GetTranslation("wox_plugin_everything_query_error"),
|
|
||||||
SubTitle = e.Message,
|
|
||||||
Action = _ =>
|
|
||||||
{
|
|
||||||
Clipboard.SetText(e.Message + "\r\n" + e.StackTrace);
|
|
||||||
_context.API.ShowMsg(_context.API.GetTranslation("wox_plugin_everything_copied"), null, string.Empty);
|
|
||||||
return false;
|
|
||||||
},
|
|
||||||
IcoPath = "Images\\error.png"
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return results;
|
|
||||||
}
|
|
||||||
|
|
||||||
private Result CreateResult(string keyword, SearchResult searchResult)
|
|
||||||
{
|
|
||||||
var path = searchResult.FullPath;
|
|
||||||
|
|
||||||
string workingDir = null;
|
|
||||||
if (_settings.UseLocationAsWorkingDir)
|
|
||||||
workingDir = Path.GetDirectoryName(path);
|
|
||||||
|
|
||||||
var r = new Result
|
|
||||||
{
|
|
||||||
Title = Path.GetFileName(path),
|
|
||||||
SubTitle = path,
|
|
||||||
IcoPath = path,
|
|
||||||
TitleHighlightData = StringMatcher.FuzzySearch(keyword, Path.GetFileName(path)).MatchData,
|
|
||||||
Action = c =>
|
|
||||||
{
|
|
||||||
bool hide;
|
|
||||||
try
|
|
||||||
{
|
|
||||||
Process.Start(new ProcessStartInfo
|
|
||||||
{
|
|
||||||
FileName = path, UseShellExecute = true, WorkingDirectory = workingDir
|
|
||||||
});
|
|
||||||
hide = true;
|
|
||||||
}
|
|
||||||
catch (Win32Exception)
|
|
||||||
{
|
|
||||||
var name = $"Plugin: {_context.CurrentPluginMetadata.Name}";
|
|
||||||
var message = "Can't open this file";
|
|
||||||
_context.API.ShowMsg(name, message, string.Empty);
|
|
||||||
hide = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
return hide;
|
|
||||||
},
|
|
||||||
ContextData = searchResult,
|
|
||||||
SubTitleHighlightData = StringMatcher.FuzzySearch(keyword, path).MatchData
|
|
||||||
};
|
|
||||||
return r;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
private List<ContextMenu> GetDefaultContextMenu()
|
|
||||||
{
|
|
||||||
List<ContextMenu> defaultContextMenus = new List<ContextMenu>();
|
|
||||||
ContextMenu openFolderContextMenu = new ContextMenu
|
|
||||||
{
|
|
||||||
Name = _context.API.GetTranslation("wox_plugin_everything_open_containing_folder"),
|
|
||||||
Command = "explorer.exe",
|
|
||||||
Argument = " /select,\"{path}\"",
|
|
||||||
ImagePath = "Images\\folder.png"
|
|
||||||
};
|
|
||||||
|
|
||||||
defaultContextMenus.Add(openFolderContextMenu);
|
|
||||||
|
|
||||||
string editorPath = string.IsNullOrEmpty(_settings.EditorPath) ? "notepad.exe" : _settings.EditorPath;
|
|
||||||
|
|
||||||
ContextMenu openWithEditorContextMenu = new ContextMenu
|
|
||||||
{
|
|
||||||
Name = string.Format(_context.API.GetTranslation("wox_plugin_everything_open_with_editor"), Path.GetFileNameWithoutExtension(editorPath)),
|
|
||||||
Command = editorPath,
|
|
||||||
Argument = " \"{path}\"",
|
|
||||||
ImagePath = editorPath
|
|
||||||
};
|
|
||||||
|
|
||||||
defaultContextMenus.Add(openWithEditorContextMenu);
|
|
||||||
|
|
||||||
return defaultContextMenus;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void Init(PluginInitContext context)
|
|
||||||
{
|
|
||||||
_context = context;
|
|
||||||
_storage = new PluginJsonStorage<Settings>();
|
|
||||||
_settings = _storage.Load();
|
|
||||||
if (_settings.MaxSearchCount <= 0)
|
|
||||||
{
|
|
||||||
_settings.MaxSearchCount = Settings.DefaultMaxSearchCount;
|
|
||||||
}
|
|
||||||
|
|
||||||
var pluginDirectory = context.CurrentPluginMetadata.PluginDirectory;
|
|
||||||
const string sdk = "EverythingSDK";
|
|
||||||
var bundledSDKDirectory = Path.Combine(pluginDirectory, sdk, CpuType());
|
|
||||||
var sdkDirectory = Path.Combine(_storage.DirectoryPath, sdk, CpuType());
|
|
||||||
Helper.ValidateDataDirectory(bundledSDKDirectory, sdkDirectory);
|
|
||||||
|
|
||||||
var sdkPath = Path.Combine(sdkDirectory, DLL);
|
|
||||||
Constant.EverythingSDKPath = sdkPath;
|
|
||||||
_api.Load(sdkPath);
|
|
||||||
}
|
|
||||||
|
|
||||||
private static string CpuType()
|
|
||||||
{
|
|
||||||
return Environment.Is64BitOperatingSystem ? "x64" : "x86";
|
|
||||||
}
|
|
||||||
|
|
||||||
public string GetTranslatedPluginTitle()
|
|
||||||
{
|
|
||||||
return _context.API.GetTranslation("wox_plugin_everything_plugin_name");
|
|
||||||
}
|
|
||||||
|
|
||||||
public string GetTranslatedPluginDescription()
|
|
||||||
{
|
|
||||||
return _context.API.GetTranslation("wox_plugin_everything_plugin_description");
|
|
||||||
}
|
|
||||||
|
|
||||||
public List<Result> LoadContextMenus(Result selectedResult)
|
|
||||||
{
|
|
||||||
SearchResult record = selectedResult.ContextData as SearchResult;
|
|
||||||
List<Result> contextMenus = new List<Result>();
|
|
||||||
if (record == null) return contextMenus;
|
|
||||||
|
|
||||||
List<ContextMenu> availableContextMenus = new List<ContextMenu>();
|
|
||||||
availableContextMenus.AddRange(GetDefaultContextMenu());
|
|
||||||
availableContextMenus.AddRange(_settings.ContextMenus);
|
|
||||||
|
|
||||||
if (record.Type == ResultType.File)
|
|
||||||
{
|
|
||||||
foreach (ContextMenu contextMenu in availableContextMenus)
|
|
||||||
{
|
|
||||||
var menu = contextMenu;
|
|
||||||
contextMenus.Add(new Result
|
|
||||||
{
|
|
||||||
Title = contextMenu.Name,
|
|
||||||
Action = _ =>
|
|
||||||
{
|
|
||||||
string argument = menu.Argument.Replace("{path}", record.FullPath);
|
|
||||||
try
|
|
||||||
{
|
|
||||||
Process.Start(menu.Command, argument);
|
|
||||||
}
|
|
||||||
catch
|
|
||||||
{
|
|
||||||
_context.API.ShowMsg(string.Format(_context.API.GetTranslation("wox_plugin_everything_canot_start"), record.FullPath), string.Empty, string.Empty);
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
},
|
|
||||||
IcoPath = contextMenu.ImagePath
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
var icoPath = (record.Type == ResultType.File) ? "Images\\file.png" : "Images\\folder.png";
|
|
||||||
contextMenus.Add(new Result
|
|
||||||
{
|
|
||||||
Title = _context.API.GetTranslation("wox_plugin_everything_copy_path"),
|
|
||||||
Action = (context) =>
|
|
||||||
{
|
|
||||||
Clipboard.SetText(record.FullPath);
|
|
||||||
return true;
|
|
||||||
},
|
|
||||||
IcoPath = icoPath
|
|
||||||
});
|
|
||||||
|
|
||||||
contextMenus.Add(new Result
|
|
||||||
{
|
|
||||||
Title = _context.API.GetTranslation("wox_plugin_everything_copy"),
|
|
||||||
Action = (context) =>
|
|
||||||
{
|
|
||||||
Clipboard.SetFileDropList(new System.Collections.Specialized.StringCollection { record.FullPath });
|
|
||||||
return true;
|
|
||||||
},
|
|
||||||
IcoPath = icoPath
|
|
||||||
});
|
|
||||||
|
|
||||||
if (record.Type == ResultType.File || record.Type == ResultType.Folder)
|
|
||||||
contextMenus.Add(new Result
|
|
||||||
{
|
|
||||||
Title = _context.API.GetTranslation("wox_plugin_everything_delete"),
|
|
||||||
Action = (context) =>
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
if (record.Type == ResultType.File)
|
|
||||||
System.IO.File.Delete(record.FullPath);
|
|
||||||
else
|
|
||||||
System.IO.Directory.Delete(record.FullPath);
|
|
||||||
}
|
|
||||||
catch
|
|
||||||
{
|
|
||||||
_context.API.ShowMsg(string.Format(_context.API.GetTranslation("wox_plugin_everything_canot_delete"), record.FullPath), string.Empty, string.Empty);
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
return true;
|
|
||||||
},
|
|
||||||
IcoPath = icoPath
|
|
||||||
});
|
|
||||||
|
|
||||||
return contextMenus;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Control CreateSettingPanel()
|
|
||||||
{
|
|
||||||
return new EverythingSettings(_settings);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
Wox.Plugin.Everything
|
|
||||||
=====================
|
|
||||||
|
|
||||||
Wox plugin for Everything
|
|
||||||
@@ -1,13 +0,0 @@
|
|||||||
{
|
|
||||||
"ID":"D2D2C23B084D411DB66FE0C79D6C2A6E",
|
|
||||||
"ActionKeyword":"*",
|
|
||||||
"Name":"Everything",
|
|
||||||
"Description":"Search Everything",
|
|
||||||
"Author":"qianlifeng,orzfly",
|
|
||||||
"Version":"1.1.0",
|
|
||||||
"Language":"csharp",
|
|
||||||
"Website":"http://www.wox.one",
|
|
||||||
"IcoPath":"Images\\find.png",
|
|
||||||
"ExecuteFileName":"Wox.Plugin.Everything.dll",
|
|
||||||
"Disabled": true
|
|
||||||
}
|
|
||||||
@@ -10,26 +10,30 @@
|
|||||||
<AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath>
|
<AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath>
|
||||||
<AppendRuntimeIdentifierToOutputPath>false</AppendRuntimeIdentifierToOutputPath>
|
<AppendRuntimeIdentifierToOutputPath>false</AppendRuntimeIdentifierToOutputPath>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x64'">
|
||||||
<DebugSymbols>true</DebugSymbols>
|
<DebugSymbols>true</DebugSymbols>
|
||||||
<DebugType>full</DebugType>
|
<OutputPath>..\..\..\..\..\x64\Debug\modules\launcher\Plugins\Wox.Plugin.Folder\</OutputPath>
|
||||||
<Optimize>false</Optimize>
|
|
||||||
<OutputPath>..\..\Output\Debug\Plugins\Wox.Plugin.Folder\</OutputPath>
|
|
||||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||||
|
<DebugType>full</DebugType>
|
||||||
|
<PlatformTarget>x64</PlatformTarget>
|
||||||
|
<LangVersion>7.3</LangVersion>
|
||||||
<ErrorReport>prompt</ErrorReport>
|
<ErrorReport>prompt</ErrorReport>
|
||||||
|
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
|
||||||
<WarningLevel>4</WarningLevel>
|
<WarningLevel>4</WarningLevel>
|
||||||
<Prefer32Bit>false</Prefer32Bit>
|
<Optimize>false</Optimize>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x64'">
|
||||||
<DebugType>pdbonly</DebugType>
|
<OutputPath>..\..\..\..\..\x64\Release\modules\launcher\Plugins\Wox.Plugin.Folder\</OutputPath>
|
||||||
<Optimize>true</Optimize>
|
|
||||||
<OutputPath>..\..\Output\Release\Plugins\Wox.Plugin.Folder\</OutputPath>
|
|
||||||
<DefineConstants>TRACE</DefineConstants>
|
<DefineConstants>TRACE</DefineConstants>
|
||||||
|
<Optimize>true</Optimize>
|
||||||
|
<DebugType>pdbonly</DebugType>
|
||||||
|
<PlatformTarget>x64</PlatformTarget>
|
||||||
|
<LangVersion>7.3</LangVersion>
|
||||||
<ErrorReport>prompt</ErrorReport>
|
<ErrorReport>prompt</ErrorReport>
|
||||||
|
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
|
||||||
<WarningLevel>4</WarningLevel>
|
<WarningLevel>4</WarningLevel>
|
||||||
<Prefer32Bit>false</Prefer32Bit>
|
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
|||||||
|
After Width: | Height: | Size: 3.7 KiB |
128
src/modules/launcher/Plugins/Wox.Plugin.Indexer/Main.cs
Normal file
@@ -0,0 +1,128 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Diagnostics;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using Wox.Plugin;
|
||||||
|
using System.IO;
|
||||||
|
using System.ComponentModel;
|
||||||
|
using Wox.Infrastructure.Storage;
|
||||||
|
using Wox.Plugin.Indexer.SearchHelper;
|
||||||
|
using Microsoft.Search.Interop;
|
||||||
|
|
||||||
|
namespace Wox.Plugin.Indexer
|
||||||
|
{
|
||||||
|
class Main : IPlugin, ISavable, IPluginI18n
|
||||||
|
{
|
||||||
|
|
||||||
|
// This variable contains metadata about the Plugin
|
||||||
|
private PluginInitContext _context;
|
||||||
|
|
||||||
|
// This variable contains information about the context menus
|
||||||
|
private Settings _settings;
|
||||||
|
|
||||||
|
// Contains information about the plugin stored in json format
|
||||||
|
private PluginJsonStorage<Settings> _storage;
|
||||||
|
|
||||||
|
// To access Windows Search functionalities
|
||||||
|
private readonly WindowsSearchAPI _api = new WindowsSearchAPI();
|
||||||
|
|
||||||
|
// To save the configurations of plugins
|
||||||
|
public void Save()
|
||||||
|
{
|
||||||
|
_storage.Save();
|
||||||
|
}
|
||||||
|
|
||||||
|
// This function uses the Windows indexer and returns the list of results obtained
|
||||||
|
public List<Result> Query(Query query)
|
||||||
|
{
|
||||||
|
var results = new List<Result>();
|
||||||
|
if (!string.IsNullOrEmpty(query.Search))
|
||||||
|
{
|
||||||
|
var searchQuery = query.Search;
|
||||||
|
if (_settings.MaxSearchCount <= 0)
|
||||||
|
{
|
||||||
|
_settings.MaxSearchCount = 50;
|
||||||
|
}
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
var searchResultsList = _api.Search(searchQuery, maxCount: _settings.MaxSearchCount).ToList();
|
||||||
|
foreach (var searchResult in searchResultsList)
|
||||||
|
{
|
||||||
|
var path = searchResult.Path;
|
||||||
|
|
||||||
|
string workingDir = null;
|
||||||
|
if (_settings.UseLocationAsWorkingDir)
|
||||||
|
workingDir = Path.GetDirectoryName(path);
|
||||||
|
|
||||||
|
Result r = new Result();
|
||||||
|
r.Title = Path.GetFileName(path);
|
||||||
|
r.SubTitle = path;
|
||||||
|
r.IcoPath = path;
|
||||||
|
r.Action = c =>
|
||||||
|
{
|
||||||
|
bool hide;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
Process.Start(new ProcessStartInfo
|
||||||
|
{
|
||||||
|
FileName = path,
|
||||||
|
UseShellExecute = true,
|
||||||
|
WorkingDirectory = workingDir
|
||||||
|
});
|
||||||
|
hide = true;
|
||||||
|
}
|
||||||
|
catch (Win32Exception)
|
||||||
|
{
|
||||||
|
var name = $"Plugin: {_context.CurrentPluginMetadata.Name}";
|
||||||
|
var msg = "Can't Open this file";
|
||||||
|
_context.API.ShowMsg(name, msg, string.Empty);
|
||||||
|
hide = false;
|
||||||
|
}
|
||||||
|
return hide;
|
||||||
|
};
|
||||||
|
r.ContextData = searchResult;
|
||||||
|
results.Add(r);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
results.Add(new Result
|
||||||
|
{
|
||||||
|
// TODO: Localize the string
|
||||||
|
Title = "Windows indexer plugin is not running",
|
||||||
|
IcoPath = "Images\\WindowsIndexerImg.bmp"
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return results;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Init(PluginInitContext context)
|
||||||
|
{
|
||||||
|
// initialize the context of the plugin
|
||||||
|
_context = context;
|
||||||
|
_storage = new PluginJsonStorage<Settings>();
|
||||||
|
_settings = _storage.Load();
|
||||||
|
}
|
||||||
|
|
||||||
|
// TODO: Localize the strings
|
||||||
|
// Set the Plugin Title
|
||||||
|
public string GetTranslatedPluginTitle()
|
||||||
|
{
|
||||||
|
return "Windows Indexer Plugin";
|
||||||
|
}
|
||||||
|
|
||||||
|
// TODO: Localize the string
|
||||||
|
// Set the plugin Description
|
||||||
|
public string GetTranslatedPluginDescription()
|
||||||
|
{
|
||||||
|
return "Returns files and folders";
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,36 @@
|
|||||||
|
using System.Reflection;
|
||||||
|
using System.Runtime.CompilerServices;
|
||||||
|
using System.Runtime.InteropServices;
|
||||||
|
|
||||||
|
// General Information about an assembly is controlled through the following
|
||||||
|
// set of attributes. Change these attribute values to modify the information
|
||||||
|
// associated with an assembly.
|
||||||
|
[assembly: AssemblyTitle("Wox.Plugin.Indexer")]
|
||||||
|
[assembly: AssemblyDescription("")]
|
||||||
|
[assembly: AssemblyConfiguration("")]
|
||||||
|
[assembly: AssemblyCompany("")]
|
||||||
|
[assembly: AssemblyProduct("Wox.Plugin.Indexer")]
|
||||||
|
[assembly: AssemblyCopyright("Copyright © 2020")]
|
||||||
|
[assembly: AssemblyTrademark("")]
|
||||||
|
[assembly: AssemblyCulture("")]
|
||||||
|
|
||||||
|
// Setting ComVisible to false makes the types in this assembly not visible
|
||||||
|
// to COM components. If you need to access a type in this assembly from
|
||||||
|
// COM, set the ComVisible attribute to true on that type.
|
||||||
|
[assembly: ComVisible(false)]
|
||||||
|
|
||||||
|
// The following GUID is for the ID of the typelib if this project is exposed to COM
|
||||||
|
[assembly: Guid("63c3cea8-51fe-472e-b97c-b58f8b17dd51")]
|
||||||
|
|
||||||
|
// Version information for an assembly consists of the following four values:
|
||||||
|
//
|
||||||
|
// Major Version
|
||||||
|
// Minor Version
|
||||||
|
// Build Number
|
||||||
|
// Revision
|
||||||
|
//
|
||||||
|
// You can specify all the values or you can default the Build and Revision Numbers
|
||||||
|
// by using the '*' as shown below:
|
||||||
|
// [assembly: AssemblyVersion("1.0.*")]
|
||||||
|
[assembly: AssemblyVersion("1.0.0.0")]
|
||||||
|
[assembly: AssemblyFileVersion("1.0.0.0")]
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace Wox.Plugin.Indexer.SearchHelper
|
||||||
|
{
|
||||||
|
public class SearchResult
|
||||||
|
{
|
||||||
|
// Contains the Path of the file or folder
|
||||||
|
public string Path { get; set; }
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,99 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Data.OleDb;
|
||||||
|
using Microsoft.Search.Interop;
|
||||||
|
|
||||||
|
namespace Wox.Plugin.Indexer.SearchHelper
|
||||||
|
{
|
||||||
|
public class WindowsSearchAPI
|
||||||
|
{
|
||||||
|
public OleDbConnection conn;
|
||||||
|
public OleDbCommand command;
|
||||||
|
public OleDbDataReader WDSResults;
|
||||||
|
|
||||||
|
public IEnumerable<SearchResult> ExecuteQuery(ISearchQueryHelper queryHelper, string keyword)
|
||||||
|
{
|
||||||
|
// Generate SQL from our parameters, converting the userQuery from AQS->WHERE clause
|
||||||
|
string sqlQuery = queryHelper.GenerateSQLFromUserQuery(keyword);
|
||||||
|
|
||||||
|
// --- Perform the query ---
|
||||||
|
// create an OleDbConnection object which connects to the indexer provider with the windows application
|
||||||
|
using (conn = new OleDbConnection(queryHelper.ConnectionString))
|
||||||
|
{
|
||||||
|
// open the connection
|
||||||
|
conn.Open();
|
||||||
|
|
||||||
|
// now create an OleDB command object with the query we built above and the connection we just opened.
|
||||||
|
using (command = new OleDbCommand(sqlQuery, conn))
|
||||||
|
{
|
||||||
|
// execute the command, which returns the results as an OleDbDataReader.
|
||||||
|
using (WDSResults = command.ExecuteReader())
|
||||||
|
{
|
||||||
|
while (WDSResults.Read())
|
||||||
|
{
|
||||||
|
// col 0 is our path in display format
|
||||||
|
Console.WriteLine("{0}", WDSResults.GetString(0));
|
||||||
|
var result = new SearchResult { Path = WDSResults.GetString(0) };
|
||||||
|
|
||||||
|
yield return result;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public void ModifyQueryHelper(ref ISearchQueryHelper queryHelper, string pattern)
|
||||||
|
{
|
||||||
|
// convert file pattern if it is not '*'. Don't create restriction for '*' as it includes all files.
|
||||||
|
if (pattern != "*")
|
||||||
|
{
|
||||||
|
pattern = pattern.Replace("*", "%");
|
||||||
|
pattern = pattern.Replace("?", "_");
|
||||||
|
|
||||||
|
if (pattern.Contains("%") || pattern.Contains("_"))
|
||||||
|
{
|
||||||
|
queryHelper.QueryWhereRestrictions += " AND System.FileName LIKE '" + pattern + "' ";
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// if there are no wildcards we can use a contains which is much faster as it uses the index
|
||||||
|
queryHelper.QueryWhereRestrictions += " AND Contains(System.FileName, '" + pattern + "') ";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void InitQueryHelper(out ISearchQueryHelper queryHelper, int maxCount)
|
||||||
|
{
|
||||||
|
// This uses the Microsoft.Search.Interop assembly
|
||||||
|
CSearchManager manager = new CSearchManager();
|
||||||
|
|
||||||
|
// SystemIndex catalog is the default catalog in Windows
|
||||||
|
ISearchCatalogManager catalogManager = manager.GetCatalog("SystemIndex");
|
||||||
|
|
||||||
|
// Get the ISearchQueryHelper which will help us to translate AQS --> SQL necessary to query the indexer
|
||||||
|
queryHelper = catalogManager.GetQueryHelper();
|
||||||
|
|
||||||
|
// Set the number of results we want. Don't set this property if all results are needed.
|
||||||
|
queryHelper.QueryMaxResults = maxCount;
|
||||||
|
|
||||||
|
// Set list of columns we want to display, getting the path presently
|
||||||
|
queryHelper.QuerySelectColumns = "System.ItemPathDisplay";
|
||||||
|
|
||||||
|
// Set additional query restriction
|
||||||
|
queryHelper.QueryWhereRestrictions = "AND scope='file:'";
|
||||||
|
|
||||||
|
// Set sorting order
|
||||||
|
queryHelper.QuerySorting = "System.DateModified DESC";
|
||||||
|
}
|
||||||
|
|
||||||
|
public IEnumerable<SearchResult> Search(string keyword, string pattern = "*", int maxCount = 100)
|
||||||
|
{
|
||||||
|
ISearchQueryHelper queryHelper;
|
||||||
|
InitQueryHelper(out queryHelper, maxCount);
|
||||||
|
ModifyQueryHelper(ref queryHelper, pattern);
|
||||||
|
return ExecuteQuery(queryHelper, keyword);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,20 +1,15 @@
|
|||||||
using System.Collections.Generic;
|
using System;
|
||||||
using System.ComponentModel;
|
using System.Collections.Generic;
|
||||||
using Newtonsoft.Json;
|
using System.Linq;
|
||||||
using Wox.Infrastructure.Storage;
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
namespace Wox.Plugin.Everything
|
namespace Wox.Plugin.Indexer
|
||||||
{
|
{
|
||||||
public class Settings
|
public class Settings
|
||||||
{
|
{
|
||||||
public const int DefaultMaxSearchCount = 50;
|
|
||||||
|
|
||||||
public string EditorPath { get; set; } = "";
|
|
||||||
|
|
||||||
public List<ContextMenu> ContextMenus = new List<ContextMenu>();
|
public List<ContextMenu> ContextMenus = new List<ContextMenu>();
|
||||||
|
public int MaxSearchCount { get; set; } = 100;
|
||||||
public int MaxSearchCount { get; set; } = DefaultMaxSearchCount;
|
|
||||||
|
|
||||||
public bool UseLocationAsWorkingDir { get; set; } = false;
|
public bool UseLocationAsWorkingDir { get; set; } = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -25,4 +20,4 @@ namespace Wox.Plugin.Everything
|
|||||||
public string Argument { get; set; }
|
public string Argument { get; set; }
|
||||||
public string ImagePath { get; set; }
|
public string ImagePath { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,87 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<Project ToolsVersion="15.0" 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>{63C3CEA8-51FE-472E-B97C-B58F8B17DD51}</ProjectGuid>
|
||||||
|
<OutputType>Library</OutputType>
|
||||||
|
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||||
|
<RootNamespace>Wox.Plugin.Indexer</RootNamespace>
|
||||||
|
<AssemblyName>Wox.Plugin.Indexer</AssemblyName>
|
||||||
|
<TargetFrameworkVersion>v4.5.2</TargetFrameworkVersion>
|
||||||
|
<FileAlignment>512</FileAlignment>
|
||||||
|
<Deterministic>true</Deterministic>
|
||||||
|
<TargetFrameworkProfile />
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x64'">
|
||||||
|
<DebugSymbols>true</DebugSymbols>
|
||||||
|
<OutputPath>..\..\..\..\..\x64\Debug\modules\launcher\Plugins\Wox.Plugin.Indexer\</OutputPath>
|
||||||
|
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||||
|
<DebugType>full</DebugType>
|
||||||
|
<PlatformTarget>x64</PlatformTarget>
|
||||||
|
<LangVersion>7.3</LangVersion>
|
||||||
|
<ErrorReport>prompt</ErrorReport>
|
||||||
|
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
|
||||||
|
<WarningLevel>4</WarningLevel>
|
||||||
|
<Optimize>false</Optimize>
|
||||||
|
</PropertyGroup>
|
||||||
|
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x64'">
|
||||||
|
<OutputPath>..\..\..\..\..\x64\Release\modules\launcher\Plugins\Wox.Plugin.Indexer\</OutputPath>
|
||||||
|
<DefineConstants>TRACE</DefineConstants>
|
||||||
|
<Optimize>true</Optimize>
|
||||||
|
<DebugType>pdbonly</DebugType>
|
||||||
|
<PlatformTarget>x64</PlatformTarget>
|
||||||
|
<LangVersion>7.3</LangVersion>
|
||||||
|
<ErrorReport>prompt</ErrorReport>
|
||||||
|
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
|
||||||
|
<WarningLevel>4</WarningLevel>
|
||||||
|
</PropertyGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<Reference Include="Microsoft.Search.Interop, Version=1.0.0.0, Culture=neutral, PublicKeyToken=9f748985a6e9a7cb, processorArchitecture=MSIL">
|
||||||
|
<HintPath>..\..\..\..\..\packages\tlbimp-Microsoft.Search.Interop.1.0.0\lib\net45\Microsoft.Search.Interop.dll</HintPath>
|
||||||
|
<EmbedInteropTypes>True</EmbedInteropTypes>
|
||||||
|
</Reference>
|
||||||
|
<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.Net.Http" />
|
||||||
|
<Reference Include="System.Xml" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<Compile Include="Main.cs" />
|
||||||
|
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||||
|
<Compile Include="SearchHelper\SearchResult.cs" />
|
||||||
|
<Compile Include="SearchHelper\WindowsSearchAPI.cs" />
|
||||||
|
<Compile Include="Settings.cs" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<None Include="packages.config" />
|
||||||
|
<None Include="plugin.json">
|
||||||
|
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||||
|
</None>
|
||||||
|
</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\WindowsIndexerImg.bmp">
|
||||||
|
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||||
|
</Content>
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||||
|
</Project>
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<packages>
|
||||||
|
<package id="tlbimp-Microsoft.Search.Interop" version="1.0.0" targetFramework="net472" />
|
||||||
|
</packages>
|
||||||
12
src/modules/launcher/Plugins/Wox.Plugin.Indexer/plugin.json
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
{
|
||||||
|
"ID": "2140FC9819AD43A3A616E2735815C27C",
|
||||||
|
"ActionKeyword": "*",
|
||||||
|
"Name": "Windows Indexer",
|
||||||
|
"Description": "Search for files and folders",
|
||||||
|
"Author": "??",
|
||||||
|
"Version": "1.0.0",
|
||||||
|
"Language": "csharp",
|
||||||
|
"Website": "http://www.wox.one/plugin",
|
||||||
|
"ExecuteFileName": "Wox.Plugin.Indexer.dll",
|
||||||
|
"IcoPath": "Images\\WindowsIndexerImg.bmp"
|
||||||
|
}
|
||||||
|
Before Width: | Height: | Size: 269 B |
@@ -1,8 +0,0 @@
|
|||||||
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
|
||||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
|
||||||
xmlns:system="clr-namespace:System;assembly=mscorlib">
|
|
||||||
|
|
||||||
<system:String x:Key="wox_plugin_pluginindicator_plugin_name">Plugin Indikator</system:String>
|
|
||||||
<system:String x:Key="wox_plugin_pluginindicator_plugin_description">Stellt Vorschläge für Plugin-Befehle bereit</system:String>
|
|
||||||
|
|
||||||
</ResourceDictionary>
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
|
||||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
|
||||||
xmlns:system="clr-namespace:System;assembly=mscorlib">
|
|
||||||
|
|
||||||
<system:String x:Key="wox_plugin_pluginindicator_plugin_name">Plugin Indicator</system:String>
|
|
||||||
<system:String x:Key="wox_plugin_pluginindicator_plugin_description">Provides plugins action words suggestions</system:String>
|
|
||||||
|
|
||||||
</ResourceDictionary>
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
|
||||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
|
||||||
xmlns:system="clr-namespace:System;assembly=mscorlib">
|
|
||||||
|
|
||||||
<system:String x:Key="wox_plugin_pluginindicator_plugin_name">Plugin Indicator</system:String>
|
|
||||||
<system:String x:Key="wox_plugin_pluginindicator_plugin_description">Pokazuje podpowiedzi jakich zainstalowanych wtyczek możesz użyć</system:String>
|
|
||||||
|
|
||||||
</ResourceDictionary>
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
|
||||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
|
||||||
xmlns:system="clr-namespace:System;assembly=mscorlib">
|
|
||||||
|
|
||||||
<system:String x:Key="wox_plugin_pluginindicator_plugin_name">Eklenti Göstergesi</system:String>
|
|
||||||
<system:String x:Key="wox_plugin_pluginindicator_plugin_description">Eklenti eylemleri hakkında kelime önerileri sunar</system:String>
|
|
||||||
|
|
||||||
</ResourceDictionary>
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
|
||||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
|
||||||
xmlns:system="clr-namespace:System;assembly=mscorlib">
|
|
||||||
|
|
||||||
<system:String x:Key="wox_plugin_pluginindicator_plugin_name">插件关键词提示</system:String>
|
|
||||||
<system:String x:Key="wox_plugin_pluginindicator_plugin_description">提供插件关键词搜索提示</system:String>
|
|
||||||
|
|
||||||
</ResourceDictionary>
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
|
||||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
|
||||||
xmlns:system="clr-namespace:System;assembly=mscorlib">
|
|
||||||
|
|
||||||
<system:String x:Key="wox_plugin_pluginindicator_plugin_name">套件關鍵字提示</system:String>
|
|
||||||
<system:String x:Key="wox_plugin_pluginindicator_plugin_description">提供套件關鍵字搜尋提示</system:String>
|
|
||||||
|
|
||||||
</ResourceDictionary>
|
|
||||||
@@ -1,47 +0,0 @@
|
|||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using Wox.Core.Plugin;
|
|
||||||
|
|
||||||
namespace Wox.Plugin.PluginIndicator
|
|
||||||
{
|
|
||||||
public class Main : IPlugin, IPluginI18n
|
|
||||||
{
|
|
||||||
private PluginInitContext context;
|
|
||||||
|
|
||||||
public List<Result> Query(Query query)
|
|
||||||
{
|
|
||||||
var results = from keyword in PluginManager.NonGlobalPlugins.Keys
|
|
||||||
where keyword.StartsWith(query.Terms[0])
|
|
||||||
let metadata = PluginManager.NonGlobalPlugins[keyword].Metadata
|
|
||||||
where !metadata.Disabled
|
|
||||||
select new Result
|
|
||||||
{
|
|
||||||
Title = keyword,
|
|
||||||
SubTitle = $"Activate {metadata.Name} plugin",
|
|
||||||
Score = 100,
|
|
||||||
IcoPath = metadata.IcoPath,
|
|
||||||
Action = c =>
|
|
||||||
{
|
|
||||||
context.API.ChangeQuery($"{keyword}{Plugin.Query.TermSeperater}");
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
return results.ToList();
|
|
||||||
}
|
|
||||||
|
|
||||||
public void Init(PluginInitContext context)
|
|
||||||
{
|
|
||||||
this.context = context;
|
|
||||||
}
|
|
||||||
|
|
||||||
public string GetTranslatedPluginTitle()
|
|
||||||
{
|
|
||||||
return context.API.GetTranslation("wox_plugin_pluginindicator_plugin_name");
|
|
||||||
}
|
|
||||||
|
|
||||||
public string GetTranslatedPluginDescription()
|
|
||||||
{
|
|
||||||
return context.API.GetTranslation("wox_plugin_pluginindicator_plugin_description");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,12 +0,0 @@
|
|||||||
{
|
|
||||||
"ID":"6A122269676E40EB86EB543B945932B9",
|
|
||||||
"ActionKeyword":"*",
|
|
||||||
"Name":"Plugin Indicator",
|
|
||||||
"Description":"Provide plugin actionword suggestion",
|
|
||||||
"Author":"qianlifeng",
|
|
||||||
"Version":"1.0.0",
|
|
||||||
"Language":"csharp",
|
|
||||||
"Website":"http://www.wox.one/plugin",
|
|
||||||
"ExecuteFileName":"Wox.Plugin.PluginIndicator.dll",
|
|
||||||
"IcoPath":"Images\\work.png"
|
|
||||||
}
|
|
||||||
|
Before Width: | Height: | Size: 269 B |
@@ -1,8 +0,0 @@
|
|||||||
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
|
||||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
|
||||||
xmlns:system="clr-namespace:System;assembly=mscorlib">
|
|
||||||
|
|
||||||
<system:String x:Key="wox_plugin_plugin_management_plugin_name">Wox Plugin Verwaltung</system:String>
|
|
||||||
<system:String x:Key="wox_plugin_plugin_management_plugin_description">Installiere/Entferne/Aktualisiere Wox Plugins</system:String>
|
|
||||||
|
|
||||||
</ResourceDictionary>
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
|
||||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
|
||||||
xmlns:system="clr-namespace:System;assembly=mscorlib">
|
|
||||||
|
|
||||||
<system:String x:Key="wox_plugin_plugin_management_plugin_name">Wox Plugin Management</system:String>
|
|
||||||
<system:String x:Key="wox_plugin_plugin_management_plugin_description">Install, remove or update Wox plugins</system:String>
|
|
||||||
|
|
||||||
</ResourceDictionary>
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
|
||||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
|
||||||
xmlns:system="clr-namespace:System;assembly=mscorlib">
|
|
||||||
|
|
||||||
<system:String x:Key="wox_plugin_plugin_management_plugin_name">Zarządzanie wtyczkami Wox</system:String>
|
|
||||||
<system:String x:Key="wox_plugin_plugin_management_plugin_description">Pozwala na instalacje, usuwanie i aktualizacje wtyczek</system:String>
|
|
||||||
|
|
||||||
</ResourceDictionary>
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
|
||||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
|
||||||
xmlns:system="clr-namespace:System;assembly=mscorlib">
|
|
||||||
|
|
||||||
<system:String x:Key="wox_plugin_plugin_management_plugin_name">Wox Eklenti Yöneticisi</system:String>
|
|
||||||
<system:String x:Key="wox_plugin_plugin_management_plugin_description">Wox eklentilerini kurun, kaldırın ya da güncelleyin</system:String>
|
|
||||||
|
|
||||||
</ResourceDictionary>
|
|
||||||