ContextMenu 4: for non c# plugin #1366

This commit is contained in:
Michael Eichhorn
2017-04-11 14:34:04 +01:00
committed by bao-qian
parent f3d79d906e
commit 5640b2157f
5 changed files with 64 additions and 8 deletions

View File

@@ -39,5 +39,16 @@ namespace Wox.Core.Plugin
_startInfo.Arguments = $"\"{rpcRequest}\"";
return Execute(_startInfo);
}
protected override string ExecuteContextMenu(Result selectedResult) {
JsonRPCServerRequestModel request = new JsonRPCServerRequestModel {
Method = "contextmenu",
Parameters = new object[] { selectedResult.ContextData },
};
_startInfo.Arguments = $"\"{request}\"";
return Execute(_startInfo);
}
}
}

View File

@@ -17,7 +17,7 @@ namespace Wox.Core.Plugin
/// Represent the plugin that using JsonPRC
/// every JsonRPC plugin should has its own plugin instance
/// </summary>
internal abstract class JsonRPCPlugin : IPlugin
internal abstract class JsonRPCPlugin : IPlugin, IContextMenu
{
protected PluginInitContext context;
public const string JsonRPC = "JsonRPC";
@@ -29,6 +29,7 @@ namespace Wox.Core.Plugin
protected abstract string ExecuteQuery(Query query);
protected abstract string ExecuteCallback(JsonRPCRequestModel rpcRequest);
protected abstract string ExecuteContextMenu(Result selectedResult);
public List<Result> Query(Query query)
{
@@ -44,7 +45,21 @@ namespace Wox.Core.Plugin
}
}
public List<Result> DeserializedResult(string output)
public List<Result> LoadContextMenus(Result selectedResult)
{
string output = ExecuteContextMenu(selectedResult);
try
{
return DeserializedResult(output);
}
catch (Exception e)
{
Log.Exception($"|JsonRPCPlugin.LoadContextMenus|Exception on result <{selectedResult}>", e);
return null;
}
}
private List<Result> DeserializedResult(string output)
{
if (!String.IsNullOrEmpty(output))
{
@@ -84,10 +99,12 @@ namespace Wox.Core.Plugin
}
return results;
}
return null;
else
{
return null;
}
}
private void ExecuteWoxAPI(string method, object[] parameters)
{
MethodInfo methodInfo = PluginManager.API.GetType().GetMethod(method);
@@ -184,4 +201,4 @@ namespace Wox.Core.Plugin
context = ctx;
}
}
}
}

View File

@@ -49,5 +49,16 @@ namespace Wox.Core.Plugin
_startInfo.WorkingDirectory = context.CurrentPluginMetadata.PluginDirectory;
return Execute(_startInfo);
}
protected override string ExecuteContextMenu(Result selectedResult) {
JsonRPCServerRequestModel request = new JsonRPCServerRequestModel {
Method = "context_menu",
Parameters = new object[] { selectedResult.ContextData },
};
_startInfo.Arguments = $"-B \"{context.CurrentPluginMetadata.ExecuteFilePath}\" \"{request}\"";
_startInfo.WorkingDirectory = context.CurrentPluginMetadata.PluginDirectory;
return Execute(_startInfo);
}
}
}