public bool SelectObject(ISearchContext context, Action <Object, bool> selectHandler, Action <Object> trackingHandler) { var selectContext = (ObjectSelectorSearchContext)context; var viewFlags = SearchFlags.OpenPicker; if (Utils.IsRunningTests()) { viewFlags |= SearchFlags.Dockable; } SearchAnalytics.SendEvent(null, SearchAnalytics.GenericEventType.QuickSearchPickerOpens, "", "object", "ObjectSelectorEngine"); var searchQuery = string.Join(" ", context.requiredTypeNames.Select(tn => tn == null ? "" : $"t:{tn.ToLowerInvariant()}")); if (string.IsNullOrEmpty(searchQuery)) { searchQuery = ""; } else { searchQuery += " "; } var viewstate = new SearchViewState( SearchService.CreateContext(GetObjectSelectorProviders(selectContext), searchQuery, viewFlags), selectHandler, trackingHandler, selectContext.requiredTypeNames.First(), selectContext.requiredTypes.First()); qsWindow = SearchService.ShowPicker(viewstate) as QuickSearch; return(qsWindow != null); }
// Evaluate arguments as search expressions public IEnumerable <object> EvaluateArgs(bool reevaluateLiterals = false) { using (var context = SearchService.CreateContext("")) { return(EvaluateArgs(context, reevaluateLiterals).ToList()); // Calling ToList to force evaluation so context is not used after disposal. } }
public IEnumerable <object> Evaluate(bool reevaluateLiterals = false) { using (var context = SearchService.CreateContext("")) { return(Evaluate(context, reevaluateLiterals).ToList()); } }
private void BuildContext() { if (providerIds != null && providerIds.Length > 0) { m_Context = SearchService.CreateContext(providerIds, searchText ?? string.Empty, searchFlags); } else { m_Context = SearchService.CreateContext(searchText ?? string.Empty, searchFlags | SearchFlags.OpenDefault); } m_WasDeserialized = false; }
internal static void OpenScenePicker() { var searchContext = SearchService.CreateContext(CreateOpenSceneProviders(), string.Empty); SearchService.ShowPicker(new SearchViewState(searchContext, OnSceneSelected) { flags = SearchViewFlags.DisableInspectorPreview | SearchViewFlags.DisableSavedSearchQuery | SearchViewFlags.GridView, title = L10n.Tr("Scenes"), excludeNoneItem = true }); }
private void SetupContext() { m_Results?.Dispose(); m_ResultView?.Dispose(); if (m_SearchContext != null) { m_SearchContext.Dispose(); m_SearchContext.asyncItemReceived -= OnAsyncItemsReceived; } var providerIds = m_EnabledProviderIds.Count != 0 ? m_EnabledProviderIds : SearchService.GetActiveProviders().Select(p => p.id); m_SearchContext = SearchService.CreateContext(providerIds, m_TextProperty.stringValue, SearchSettings.GetContextOptions()); m_SearchContext.asyncItemReceived += OnAsyncItemsReceived; m_Results = new SortedSearchList(m_SearchContext); m_ResultView = new SearchResultView(m_Results); RefreshResults(); }
public bool SelectObject(ISearchContext context, Action <Object, bool> selectHandler, Action <Object> trackingHandler) { var selectContext = (ObjectSelectorSearchContext)context; var viewFlags = SearchFlags.OpenPicker; if (Utils.IsRunningTests()) { viewFlags |= SearchFlags.Dockable; } SearchAnalytics.SendEvent(null, SearchAnalytics.GenericEventType.QuickSearchPickerOpens, "", "object", "ObjectSelectorEngine"); var viewstate = new SearchViewState( SearchService.CreateContext("", viewFlags), selectHandler, trackingHandler, selectContext.requiredTypeNames.First(), selectContext.requiredTypes.First()); qsWindow = SearchService.ShowPicker(viewstate) as QuickSearch; return(qsWindow != null); }
static IEnumerable <SearchItem> FetchScenes(SearchContext context, SearchProvider provider) { using (var findContext = SearchService.CreateContext("find", $"(*.unity) {context.searchQuery}")) using (var request = SearchService.Request(findContext)) { foreach (var r in request) { if (r == null) { yield return(null); } else { r.provider = provider; r.data = null; yield return(r); } } } }
static SearchContext CreateContextFromAttribute(SearchContextAttribute attribute) { var providers = attribute.providerIds.Select(id => SearchService.GetProvider(id)) .Concat(attribute.instantiableProviders.Select(type => SearchService.GetProvider(type))).Where(p => p != null); if (!providers.Any()) { providers = SearchService.GetObjectProviders(); } var searchText = attribute.query; var searchQuery = GetSearchQueryFromFromAttribute(attribute); if (searchQuery != null) { searchText = searchQuery.text; providers = QuickSearch.GetMergedProviders(providers, searchQuery.providerIds); } var context = SearchService.CreateContext(providers, searchText); return(context); }
public static bool TryParse(StringView text, out QueryMarker marker) { marker = none; if (!IsQueryMarker(text)) { return(false); } var innerText = text.Substring(k_StartToken.Length, text.Length - k_StartToken.Length - k_EndToken.Length); var indexOfColon = innerText.IndexOf(':'); if (indexOfColon < 0) { return(false); } var controlType = innerText.Substring(0, indexOfColon).Trim().ToString(); var args = new List <StringView>(); var level = 0; var currentArgStart = indexOfColon + 1; for (var i = currentArgStart; i < innerText.Length; ++i) { if (ParserUtils.IsOpener(innerText[i])) { ++level; } if (ParserUtils.IsCloser(innerText[i])) { --level; } if (innerText[i] != ',' || level != 0) { continue; } if (i + 1 == innerText.Length) { return(false); } args.Add(innerText.Substring(currentArgStart, i - currentArgStart).Trim()); currentArgStart = i + 1; } if (currentArgStart == innerText.Length) { return(false); // No arguments } // Extract the final argument, since there is no comma after the last argument args.Add(innerText.Substring(currentArgStart, innerText.Length - currentArgStart).Trim()); var queryMarkerArguments = new List <QueryMarkerArgument>(); using (var context = SearchService.CreateContext("")) { foreach (var arg in args) { var parserArgs = new SearchExpressionParserArgs(arg, context, SearchExpressionParserFlags.ImplicitLiterals); SearchExpression expression = null; try { expression = SearchExpression.Parse(parserArgs); } catch (SearchExpressionParseException) { } if (expression == null || !expression.types.HasAny(SearchExpressionType.Literal)) { queryMarkerArguments.Add(new QueryMarkerArgument { rawText = arg, expression = expression, value = expression == null ? arg.ToString() : null }); continue; } var results = expression.Execute(context); var resolvedValue = results.FirstOrDefault(item => item != null); var resolvedValueObject = resolvedValue?.value; queryMarkerArguments.Add(new QueryMarkerArgument { rawText = arg, expression = expression, value = resolvedValueObject }); } } marker = new QueryMarker { type = controlType, text = text, args = queryMarkerArguments.ToArray() }; return(true); }
internal override SearchContext CreateQueryContext(ISearchQuery query) { return(SearchService.CreateContext(context?.GetProviders(), query.searchText, context?.options ?? SearchFlags.Default)); }
internal static SearchExpression Parse(string text, SearchExpressionParserFlags options = SearchExpressionParserFlags.Default) { var searchContext = SearchService.CreateContext(text); return(Parse(searchContext, options)); }
public static ISearchView ShowWindow(string searchQuery, IEnumerable <SearchProvider> providers) { var context = SearchService.CreateContext(providers, searchQuery); return(SearchService.ShowWindow(context, topic: "Expression", saveFilters: false)); }