IEnumerable <ISearchQuery> CreateQuery() { var queries = multiEntryHandler(); foreach (var query in queries) { var q = new SearchQuery(); var provider = SearchService.GetProvider(providerId); var searchText = query; if (provider != null && !query.StartsWith(provider.filterId)) { searchText = $"{provider.filterId} {query}"; } q.searchText = searchText; q.displayName = searchText; if (!string.IsNullOrEmpty(providerId)) { q.viewState.providerIds = new[] { providerId } } ; q.description = description; q.viewState.SetSearchViewFlags(viewFlags); yield return(q); } }
private void InitializeReport(string path) { m_ReportPath = path; m_Report = SearchReport.LoadFromFile(path); m_ReportName = Path.GetFileNameWithoutExtension(path); var searchExpressionProvider = SearchService.GetProvider("expression"); m_Items = m_Report.CreateSearchItems(searchExpressionProvider).ToList(); titleContent = new GUIContent($"{m_ReportName} ({m_Items.Count})", m_ReportPath); m_FocusSearchField = true; // ITableView m_TableConfig = new SearchTable(m_ReportName, m_Report.columns); for (int i = 0; i < m_TableConfig.columns.Length; ++i) { InitializeColumn(m_TableConfig.columns[i]); } m_QueryEngine = new QueryEngine <int>(k_QueryEngineOptions); foreach (var column in m_Report.columns) { var filterName = column.content.text.Replace(" ", ""); m_QueryEngine.AddFilter(filterName, i => AddFilter(i, column.selector)); if (filterName != filterName.ToLowerInvariant()) { m_QueryEngine.AddFilter(filterName.ToLowerInvariant(), i => AddFilter(i, column.selector)); } SearchValue.SetupEngine(m_QueryEngine); } m_QueryEngine.SetSearchDataCallback(i => m_Items[i].GetFields().Select(f => (f.value ?? "").ToString()), StringComparison.OrdinalIgnoreCase); UpdatePropertyTable(); }
private void PopulateValidEnabledProviderIds() { m_EnabledProviderIds = new List <string>(m_ProvidersProperty.arraySize); for (int i = 0; i < m_ProvidersProperty.arraySize; i++) { var id = m_ProvidersProperty.GetArrayElementAtIndex(i).stringValue; if (SearchService.GetProvider(id) != null && !m_EnabledProviderIds.Contains(id)) { m_EnabledProviderIds.Add(id); } } }
public override void BeginSession(ISearchContext context) { if (searchSessions.ContainsKey(context.guid)) { return; } var engineProvider = SearchService.GetProvider(providerId); var adbProvider = SearchService.GetProvider(AdbProvider.type); searchSessions.Add(context.guid, new SearchApiSession(adbProvider, engineProvider)); }
internal static IEnumerable <SearchProvider> GetObjectSelectorProviders(ObjectSelectorSearchContext context) { bool allowAssetObjects = (context.visibleObjects & VisibleObjects.Assets) == VisibleObjects.Assets; bool allowSceneObjects = (context.visibleObjects & VisibleObjects.Scene) == VisibleObjects.Scene; if (allowAssetObjects) { yield return(SearchService.GetProvider(AssetProvider.type)); } if (allowSceneObjects) { yield return(SearchService.GetProvider(BuiltInSceneObjectsProvider.type)); } }
/// <summary> /// Enable or disable a single provider. /// A disabled provider won't be ask to provider items to resolve the query. /// </summary> /// <param name="providerId">Id of the provider. See SearchProvider.<see cref="SearchProvider.name"/>.id.</param> /// <param name="isEnabled">If true, enable the provider to perform query.</param> public void SetFilter(string providerId, bool isEnabled) { var provider = m_Providers.FirstOrDefault(p => p.id == providerId); if (!isEnabled && provider != null) { SetProviders(m_Providers.Where(p => p != provider).ToList()); } else if (isEnabled && provider == null) { provider = SearchService.GetProvider(providerId); if (provider != null) { SetProviders(m_Providers.Concat(new[] { provider }).ToList()); } } }
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); }
SearchTable LoadDefaultTableConfig(bool reset, string id = null, SearchTable defaultConfig = null) { if (!reset) { var sessionSearchTableData = SessionState.GetString(GetDefaultGroupId(id), null); if (!string.IsNullOrEmpty(sessionSearchTableData)) { return(SearchTable.Import(sessionSearchTableData)); } } if (searchView is QuickSearch qs) { var providers = qs.context.GetProviders(); var provider = providers.Count == 1 ? providers.FirstOrDefault() : SearchService.GetProvider(qs.currentGroup); if (provider?.tableConfig != null) { return(provider.tableConfig(context)); } } return(defaultConfig ?? SearchTable.CreateDefault()); }
public void ObjectIconDropDown(Rect position, SerializedProperty iconProperty) { const float kDropDownArrowMargin = 2; const float kDropDownArrowWidth = 12; const float kDropDownArrowHeight = 12; if (s_IconTextureInactive == null) { s_IconTextureInactive = (Material)EditorGUIUtility.LoadRequired("Inspectors/InactiveGUI.mat"); } if (s_IconButtonStyle == null) { s_IconButtonStyle = new GUIStyle("IconButton") { fixedWidth = 0, fixedHeight = 0 } } ; void SelectIcon(UnityEngine.Object obj, bool isCanceled) { if (!isCanceled) { iconProperty.objectReferenceValue = obj; iconProperty.serializedObject.ApplyModifiedProperties(); SearchService.RefreshWindows(); } } if (EditorGUI.DropdownButton(position, GUIContent.none, FocusType.Passive, s_IconButtonStyle)) { SearchUtils.ShowIconPicker(SelectIcon); GUIUtility.ExitGUI(); } if (Event.current.type == EventType.Repaint) { var contentPosition = position; contentPosition.xMin += kDropDownArrowMargin; contentPosition.xMax -= kDropDownArrowMargin + kDropDownArrowWidth / 2; contentPosition.yMin += kDropDownArrowMargin; contentPosition.yMax -= kDropDownArrowMargin + kDropDownArrowWidth / 2; Rect arrowRect = new Rect( contentPosition.x + contentPosition.width - kDropDownArrowWidth / 2, contentPosition.y + contentPosition.height - kDropDownArrowHeight / 2, kDropDownArrowWidth, kDropDownArrowHeight); Texture2D icon = null; if (!iconProperty.hasMultipleDifferentValues) { icon = iconProperty.objectReferenceValue as Texture2D ?? AssetPreview.GetMiniThumbnail(targets[0]); } if (icon == null) { icon = Icons.favorite; } Vector2 iconSize = contentPosition.size; if (icon) { iconSize.x = Mathf.Min(icon.width, iconSize.x); iconSize.y = Mathf.Min(icon.height, iconSize.y); } Rect iconRect = new Rect( contentPosition.x + contentPosition.width / 2 - iconSize.x / 2, contentPosition.y + contentPosition.height / 2 - iconSize.y / 2, iconSize.x, iconSize.y); GUI.DrawTexture(iconRect, icon, ScaleMode.ScaleToFit); if (s_IconDropDown == null) { s_IconDropDown = EditorGUIUtility.IconContent("Icon Dropdown"); } GUIStyle.none.Draw(arrowRect, s_IconDropDown, false, false, false, false); } } void AddProvider(ReorderableList list) { var menu = new GenericMenu(); var disabledProviders = GetDisabledProviders().ToList(); for (var i = 0; i < disabledProviders.Count; ++i) { var provider = disabledProviders[i]; menu.AddItem(new GUIContent(provider.name), false, AddProvider, provider); if (!provider.isExplicitProvider && i + 1 < disabledProviders.Count && disabledProviders[i + 1].isExplicitProvider) { menu.AddSeparator(string.Empty); } } menu.ShowAsContext(); } void AddProvider(object providerObj) { if (providerObj is SearchProvider provider && !m_EnabledProviderIds.Contains(provider.id)) { m_EnabledProviderIds.Add(provider.id); UpdateEnabledProviders(); } } void RemoveProvider(ReorderableList list) { var index = list.index; if (index != -1 && index < m_EnabledProviderIds.Count) { var toRemove = SearchService.GetProvider(m_EnabledProviderIds[index]); if (toRemove == null) { return; } m_EnabledProviderIds.Remove(toRemove.id); UpdateEnabledProviders(); if (index >= list.count) { list.index = list.count - 1; } } } void UpdateEnabledProviders() { m_ProvidersProperty.arraySize = m_EnabledProviderIds.Count; for (var i = 0; i < m_EnabledProviderIds.Count; ++i) { m_ProvidersProperty.GetArrayElementAtIndex(i).stringValue = m_EnabledProviderIds[i]; } serializedObject.ApplyModifiedProperties(); SetupContext(); } void DrawProviderElement(Rect rect, int index, bool selected, bool focused) { if (index >= 0 && index < m_EnabledProviderIds.Count) { GUI.Label(rect, SearchService.GetProvider(m_EnabledProviderIds[index])?.name ?? "<unknown>"); } } void CheckContext() { if (m_SearchContext.searchText != m_TextProperty.stringValue) { SetupContext(); } } }