public static void QueryForAllPlugins(Query query) { var pluginPairs = NonGlobalPlugins.ContainsKey(query.ActionKeyword) ? new List <PluginPair> { NonGlobalPlugins[query.ActionKeyword] } : GlobalPlugins; foreach (var plugin in pluginPairs) { var customizedPluginConfig = UserSettingStorage.Instance. CustomizedPluginConfigs.FirstOrDefault(o => o.ID == plugin.Metadata.ID); if (customizedPluginConfig != null && customizedPluginConfig.Disabled) { continue; } if (IsInstantQueryPlugin(plugin)) { Stopwatch.Normal($"Instant QueryForPlugin for {plugin.Metadata.Name}", () => { QueryForPlugin(plugin, query); }); } else { ThreadPool.QueueUserWorkItem(state => { Stopwatch.Normal($"Normal QueryForPlugin for {plugin.Metadata.Name}", () => { QueryForPlugin(plugin, query); }); }); } } }
public static Query QueryInit(string text) //todo is that possible to move it into type Query? { // replace multiple white spaces with one white space var terms = text.Split(new[] { Query.TermSeperater }, StringSplitOptions.RemoveEmptyEntries); var rawQuery = string.Join(Query.TermSeperater, terms); var actionKeyword = string.Empty; var search = rawQuery; List <string> actionParameters = terms.ToList(); if (terms.Length == 0) { return(null); } if (NonGlobalPlugins.ContainsKey(terms[0])) { actionKeyword = terms[0]; actionParameters = terms.Skip(1).ToList(); search = string.Join(Query.TermSeperater, actionParameters.ToArray()); } return(new Query { Terms = terms, RawQuery = rawQuery, ActionKeyword = actionKeyword, Search = search, // Obsolete value initialisation ActionName = actionKeyword, ActionParameters = actionParameters }); }
public static void UpdateActionKeywordForPlugin(PluginPair plugin, string oldActionKeyword, string newActionKeyword) { var actionKeywords = plugin.Metadata.ActionKeywords; if (string.IsNullOrEmpty(newActionKeyword)) { string msg = InternationalizationManager.Instance.GetTranslation("newActionKeywordsCannotBeEmpty"); throw new WoxPluginException(plugin.Metadata.Name, msg); } // do nothing if they are same if (oldActionKeyword == newActionKeyword) { return; } if (NonGlobalPlugins.ContainsKey(newActionKeyword)) { string msg = InternationalizationManager.Instance.GetTranslation("newActionKeywordsHasBeenAssigned"); throw new WoxPluginException(plugin.Metadata.Name, msg); } // add new action keyword if (string.IsNullOrEmpty(oldActionKeyword)) { actionKeywords.Add(newActionKeyword); if (newActionKeyword == Query.GlobalPluginWildcardSign) { GlobalPlugins.Add(plugin); } else { NonGlobalPlugins[newActionKeyword] = plugin; } } // update existing action keyword else { int index = actionKeywords.IndexOf(oldActionKeyword); actionKeywords[index] = newActionKeyword; if (oldActionKeyword == Query.GlobalPluginWildcardSign) { GlobalPlugins.Remove(plugin); } else { NonGlobalPlugins.Remove(oldActionKeyword); } if (newActionKeyword == Query.GlobalPluginWildcardSign) { GlobalPlugins.Add(plugin); } else { NonGlobalPlugins[newActionKeyword] = plugin; } } }