private void AddButton_OnClick(object sender, RoutedEventArgs e) { if (string.IsNullOrWhiteSpace(NewCategoryName)) { return; } // Ensure that no char in the string is an invalid filename char if (NewCategoryName.Any(chr => Path.GetInvalidFileNameChars().Contains(chr))) { return; } if (!_categories.Contains(NewCategoryName)) { _categories.Add(NewCategoryName); } }
void DrawNewCategoryAndSearch(float width, TargetDatabase targetDatabase) { QUI.BeginHorizontal(width); { #region New Category if (SearchPatternAnimBool.faded < 0.2f) { if (QUI.GhostButton("New Category", QColors.Color.Green, 100 * (1 - SearchPatternAnimBool.faded), 20, NewCategoryAnimBool.value) || DetectKeyCombo_Alt_N()) { NewCategoryAnimBool.target = !NewCategoryAnimBool.target; if (NewCategoryAnimBool.target) { NewCategoryName = ""; SearchPatternAnimBool.target = false; ExpandOrCollapseAllDatabaseCategories(targetDatabase, false); } } } if (NewCategoryAnimBool.target) { SearchPatternAnimBool.target = false; QUI.SetGUIBackgroundColor(QColors.GreenLight.Color); QUI.SetNextControlName("NewCategoryName" + targetDatabase.ToString()); NewCategoryName = EditorGUILayout.TextField(NewCategoryName, GUILayout.Width((width - 149) * NewCategoryAnimBool.faded)); QUI.ResetColors(); if (!NewCategoryAnimBool.value && Event.current.type == EventType.Layout) //if NewCategoryAnimBool.target is true and NewCategoryAnimBool.value is false -> in transition -> select the text in the control { QUI.FocusControl("NewCategoryName" + targetDatabase.ToString()); QUI.FocusTextInControl("NewCategoryName" + targetDatabase.ToString()); } if (QUI.ButtonOk() || (DetectKey_Return() && QUI.GetNameOfFocusedControl().Equals("NewCategoryName" + targetDatabase.ToString()))) { if (NewCategoryName.IsNullOrEmpty()) { EditorUtility.DisplayDialog("Info", "Cannot create an unnamed category. Try again.", "Ok"); } else { switch (targetDatabase) { case TargetDatabase.UIElements: if (DUIData.Instance.DatabaseUIElements.ContainsCategoryName(NewCategoryName)) { EditorUtility.DisplayDialog("Info", "A category named '" + NewCategoryName + "' already exists in the database. Try again.", "Ok"); } else { DUIData.Instance.DatabaseUIElements.AddCategory(NewCategoryName, true); NewCategoryAnimBool.target = false; } break; case TargetDatabase.UIButtons: if (DUIData.Instance.DatabaseUIButtons.ContainsCategoryName(NewCategoryName)) { EditorUtility.DisplayDialog("Info", "A category named '" + NewCategoryName + "' already exists in the database. Try again.", "Ok"); } else { DUIData.Instance.DatabaseUIButtons.AddCategory(NewCategoryName, true); NewCategoryAnimBool.target = false; } break; } } } QUI.Space(1); if (QUI.ButtonCancel() || QUI.DetectKeyDown(Event.current, KeyCode.Escape)) { NewCategoryName = string.Empty; NewCategoryAnimBool.target = false; } } #endregion QUI.FlexibleSpace(); #region Search if (SearchPatternAnimBool.value) { NewCategoryAnimBool.target = false; QUI.SetGUIBackgroundColor(QColors.OrangeLight.Color); QUI.SetNextControlName("SearchPattern" + targetDatabase.ToString()); SearchPattern = EditorGUILayout.TextField(SearchPattern, GUILayout.Width((width - 104) * SearchPatternAnimBool.faded)); QUI.ResetColors(); if (SearchPatternAnimBool.target && Event.current.type == EventType.Layout) //if SearchPatternAnimBool.target is true and SearchPatternAnimBool.value is false -> in transition -> select the text in the control { QUI.FocusControl("SearchPattern" + targetDatabase.ToString()); QUI.FocusTextInControl("SearchPattern" + targetDatabase.ToString()); } } if (NewCategoryAnimBool.faded < 0.2f) { if (QUI.GhostButton(SearchPatternAnimBool.value ? "Clear Search" : "Search", QColors.Color.Orange, 100 * (1 - NewCategoryAnimBool.faded), 20, SearchPatternAnimBool.value) || DetectKeyCombo_Alt_S() || //Toggle Search (DetectKey_Escape() && SearchPatternAnimBool.target)) //Clear Search { SearchPatternAnimBool.target = !SearchPatternAnimBool.target; if (SearchPatternAnimBool.target) { SearchPattern = string.Empty; NewCategoryAnimBool.target = false; ExpandOrCollapseAllDatabaseCategories(targetDatabase, true); } } } #endregion } QUI.EndHorizontal(); }