Beispiel #1
0
 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);
         }
     }
 }
Beispiel #2
0
 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);
         }
     }
 }
Beispiel #3
0
 public List <Result> Query(Query query)
 {
     lock (s_PluginLock) {
         s_Results.Clear();
         BatchScript.Call("on_query", CalculatorValue.FromObject(query));
         ShowLog("Query");
         return(s_Results);
     }
 }
Beispiel #4
0
 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);
     }
 }
Beispiel #5
0
    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);
    }