mirror of
https://github.com/microsoft/PowerToys.git
synced 2026-04-06 19:26:39 +02:00
use %APPDATA%
1. Fix can't find Result.ctor bug for plugin introduced in c0889de1f9ae460b2cc189eb59e5bd90ddb7d17e 2. use %APPDATA% for all data, part of #389 3. MISC
This commit is contained in:
@@ -19,7 +19,7 @@ namespace Wox.Core.Plugin
|
||||
/// </summary>
|
||||
/// <param name="pluginDirectories"></param>
|
||||
/// <returns></returns>
|
||||
public static List<PluginMetadata> Parse(List<string> pluginDirectories)
|
||||
public static List<PluginMetadata> Parse(string[] pluginDirectories)
|
||||
{
|
||||
pluginMetadatas.Clear();
|
||||
foreach (string pluginDirectory in pluginDirectories)
|
||||
|
||||
@@ -34,7 +34,7 @@ namespace Wox.Core.Plugin
|
||||
return;
|
||||
}
|
||||
|
||||
string pluginFolerPath = PluginManager.PluginDirectory;
|
||||
string pluginFolerPath = PluginManager.UserDirectory;
|
||||
|
||||
string newPluginName = plugin.Name
|
||||
.Replace("/", "_")
|
||||
|
||||
@@ -17,13 +17,11 @@ namespace Wox.Core.Plugin
|
||||
/// </summary>
|
||||
public static class PluginManager
|
||||
{
|
||||
public const string DirectoryName = "Plugins";
|
||||
private static IEnumerable<PluginPair> _contextMenuPlugins;
|
||||
|
||||
/// <summary>
|
||||
/// Directories that will hold Wox plugin directory
|
||||
/// </summary>
|
||||
private static readonly List<string> PluginDirectories = new List<string>();
|
||||
|
||||
public static List<PluginPair> AllPlugins { get; private set; }
|
||||
|
||||
@@ -34,47 +32,31 @@ namespace Wox.Core.Plugin
|
||||
private static IEnumerable<PluginPair> InstantQueryPlugins { get; set; }
|
||||
public static IPublicAPI API { private set; get; }
|
||||
|
||||
public static readonly string PluginDirectory = Path.Combine(WoxDirectroy.Executable, DirectoryName);
|
||||
public const string DirectoryName = "Plugins";
|
||||
public static readonly string PreinstalledDirectory = Path.Combine(Infrastructure.Wox.ProgramPath, DirectoryName);
|
||||
public static readonly string UserDirectory = Path.Combine(Infrastructure.Wox.DataPath, DirectoryName);
|
||||
private static readonly string[] Directories = { PreinstalledDirectory, UserDirectory };
|
||||
|
||||
private static void SetupPluginDirectories()
|
||||
private static void ValidateUserDirectory()
|
||||
{
|
||||
PluginDirectories.Add(PluginDirectory);
|
||||
MakesurePluginDirectoriesExist();
|
||||
}
|
||||
|
||||
private static void MakesurePluginDirectoriesExist()
|
||||
{
|
||||
foreach (string pluginDirectory in PluginDirectories)
|
||||
if (!Directory.Exists(UserDirectory))
|
||||
{
|
||||
if (!Directory.Exists(pluginDirectory))
|
||||
{
|
||||
try
|
||||
{
|
||||
Directory.CreateDirectory(pluginDirectory);
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
Log.Error(e);
|
||||
}
|
||||
}
|
||||
Directory.CreateDirectory(UserDirectory);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Load and init all Wox plugins
|
||||
/// </summary>
|
||||
///
|
||||
public static void Initialize()
|
||||
static PluginManager()
|
||||
{
|
||||
SetupPluginDirectories();
|
||||
|
||||
var metadatas = PluginConfig.Parse(PluginDirectories);
|
||||
AllPlugins = new CSharpPluginLoader().LoadPlugin(metadatas).Concat(
|
||||
new JsonRPCPluginLoader<PythonPlugin>().LoadPlugin(metadatas)).ToList();
|
||||
ValidateUserDirectory();
|
||||
}
|
||||
|
||||
public static void InitializePlugins(IPublicAPI api)
|
||||
{
|
||||
var metadatas = PluginConfig.Parse(Directories);
|
||||
var plugins1 = new CSharpPluginLoader().LoadPlugin(metadatas);
|
||||
var plugins2 = new JsonRPCPluginLoader<PythonPlugin>().LoadPlugin(metadatas);
|
||||
AllPlugins = plugins1.Concat(plugins2).ToList();
|
||||
|
||||
//load plugin i18n languages
|
||||
ResourceMerger.UpdatePluginLanguages();
|
||||
|
||||
@@ -228,14 +210,6 @@ namespace Wox.Core.Plugin
|
||||
return metadata.ActionKeywords.Contains(Query.GlobalPluginWildcardSign);
|
||||
}
|
||||
|
||||
private static bool IsInstantQueryPlugin(PluginPair plugin)
|
||||
{
|
||||
//any plugin that takes more than 200ms for AvgQueryTime won't be treated as IInstantQuery plugin anymore.
|
||||
return plugin.AvgQueryTime < 200 &&
|
||||
plugin.Plugin is IInstantQuery &&
|
||||
InstantQueryPlugins.Any(p => p.Metadata.ID == plugin.Metadata.ID);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// get specified plugin, return null if not found
|
||||
/// </summary>
|
||||
|
||||
@@ -8,7 +8,7 @@ namespace Wox.Core.Plugin
|
||||
{
|
||||
internal class PythonPlugin : JsonRPCPlugin
|
||||
{
|
||||
private static readonly string PythonHome = Path.Combine(WoxDirectroy.Executable, "PythonHome");
|
||||
private static readonly string PythonHome = Path.Combine(Infrastructure.Wox.ProgramPath, "PythonHome");
|
||||
private readonly ProcessStartInfo _startInfo;
|
||||
|
||||
public override string SupportedLanguage => AllowedLanguage.Python;
|
||||
|
||||
Reference in New Issue
Block a user