internal static bool OnMenuAction(string action, Query query, Result result, Result menu, ActionContext e) { lock (s_PluginLock) { //由于Wox实现上的缺陷,这里根据menu的Title与SubTitle在菜单列表里查找真正的菜单项再调action int ix = s_ContextMenus.IndexOf(menu); if (ix < 0) { s_Context.API.ShowMsg("Can't find menu " + menu.Title, menu.SubTitle, menu.IcoPath); return(false); } if (s_ContextMenus[ix].ContextData != menu.ContextData || s_ContextMenus[ix].Action != menu.Action) { return(s_ContextMenus[ix].Action(e)); } object r = BatchScript.Call(action, CalculatorValue.FromObject(query), CalculatorValue.FromObject(result), CalculatorValue.FromObject(menu), CalculatorValue.FromObject(e)); ShowLog("OnMenuAction"); if (s_NeedReload) { s_NeedReload = false; ReloadDsl(); } if (null != r) { bool ret = (bool)Convert.ChangeType(r, typeof(bool)); return(ret); } else { return(false); } } }
internal static bool OnAction(string action, Query query, Result result, ActionContext e) { lock (s_PluginLock) { //由于Wox实现上的缺陷,这里根据result的Title与SubTitle在结果列表里查找真正的result项再调action int ix = s_Results.IndexOf(result); if (ix < 0) { s_Context.API.ShowMsg("Can't find result " + result.Title, result.SubTitle, result.IcoPath); return(false); } if (s_Results[ix].ContextData != result.ContextData || s_Results[ix].Action != result.Action) { return(s_Results[ix].Action(e)); } var r = BatchScript.Call(action, CalculatorValue.FromObject(query), CalculatorValue.FromObject(result), CalculatorValue.FromObject(e)); ShowLog("OnAction"); if (s_NeedReload) { s_NeedReload = false; ReloadDsl(); } if (r.IsBoolean) { bool ret = r.GetBool(); return(ret); } else { return(false); } } }
public List <Result> Query(Query query) { lock (s_PluginLock) { s_Results.Clear(); BatchScript.Call("on_query", CalculatorValue.FromObject(query)); ShowLog("Query"); return(s_Results); } }
public List <Result> LoadContextMenus(Result selectedResult) { lock (s_PluginLock) { s_ContextMenus.Clear(); Query query = selectedResult.ContextData as Query; BatchScript.Call("on_context_menus", CalculatorValue.FromObject(query), CalculatorValue.FromObject(selectedResult)); ShowLog("LoadContextMenus"); return(s_ContextMenus); } }
protected override CalculatorValue OnCalc(IList <CalculatorValue> operands) { CalculatorValue r = CalculatorValue.NullObject; if (operands.Count >= 1) { string code = operands[0].As <string>(); var args = BatchScript.NewCalculatorValueList(); for (int i = 1; i < operands.Count; ++i) { var arg = operands[i]; args.Add(arg); } var id = BatchScript.Eval(code, new string[] { "$query", "$result", "$actionContext" }); if (null != id) { r = BatchScript.Call(id, args); } BatchScript.RecycleCalculatorValueList(args); } return(r); }