Exemple #1
0
        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);
                        });
                    });
                }
            }
        }
Exemple #2
0
        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
            });
        }
Exemple #3
0
        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;
                }
            }
        }