void DrawNewUISoundAndSearch(float width) { QUI.BeginHorizontal(width); { #region New UISound if (SearchPatternAnimBool.faded < 0.2f) { if (QUI.GhostButton("New UISound", QColors.Color.Green, 100 * (1 - SearchPatternAnimBool.faded), 20, NewUISoundAnimBool.value) || DetectKeyCombo_Alt_N()) { NewUISoundAnimBool.target = !NewUISoundAnimBool.target; if (NewUISoundAnimBool.target) { NewUISoundName = ""; SearchPatternAnimBool.target = false; } } } if (NewUISoundAnimBool.target) { SearchPatternAnimBool.target = false; QUI.SetGUIBackgroundColor(QColors.GreenLight.Color); QUI.SetNextControlName("NewUISoundName"); NewUISoundName = EditorGUILayout.TextField(NewUISoundName, GUILayout.Width((width - 149) * NewUISoundAnimBool.faded)); QUI.ResetColors(); if (!NewUISoundAnimBool.value && Event.current.type == EventType.Layout) //if NewUISoundAnimBool.target is true and NewUISoundAnimBool.value is false -> in transition -> select the text in the control { QUI.FocusControl("NewUISoundName"); QUI.FocusTextInControl("NewUISoundName"); } if (QUI.ButtonOk() || (DetectKey_Return() && QUI.GetNameOfFocusedControl().Equals("NewUISoundName"))) { if (NewUISoundName.IsNullOrEmpty()) { EditorUtility.DisplayDialog("Info", "Cannot create an unnamed UISound. Try again.", "Ok"); } else { if (DUIData.Instance.DatabaseUISounds.Contains(NewUISoundName)) { EditorUtility.DisplayDialog("Info", "A UISound named '" + NewUISoundName + "' already exists in the database. Try again.", "Ok"); } else { DUIData.Instance.DatabaseUISounds.CreateUISound(NewUISoundName, selectedUISoundsDatabaseFilter, null); NewUISoundAnimBool.target = false; } } } QUI.Space(1); if (QUI.ButtonCancel() || QUI.DetectKeyDown(Event.current, KeyCode.Escape)) { NewUISoundName = string.Empty; NewUISoundAnimBool.target = false; } } #endregion QUI.FlexibleSpace(); #region Search if (SearchPatternAnimBool.value) { NewUISoundAnimBool.target = false; QUI.SetGUIBackgroundColor(QColors.OrangeLight.Color); QUI.SetNextControlName("SearchPattern"); 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"); QUI.FocusTextInControl("SearchPattern"); } } if (NewUISoundAnimBool.faded < 0.2f) { if (QUI.GhostButton(SearchPatternAnimBool.value ? "Clear Search" : "Search", QColors.Color.Orange, 100 * (1 - NewUISoundAnimBool.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; NewUISoundAnimBool.target = false; } } } #endregion } QUI.EndHorizontal(); }
void DrawSoundsDatabase(float width) { DrawNewUISoundAndSearch(width); QUI.Space(SPACE_8); DrawUISoundsFilterButtons(width); QUI.Space(SPACE_8); for (int i = 0; i < DUIData.Instance.DatabaseUISounds.sounds.Count; i++) { if (DUIData.Instance.DatabaseUISounds.sounds[i] == null) { continue; } if (WindowSettings.selectedUISoundsFilter == SoundType.UIButtons && DUIData.Instance.DatabaseUISounds.sounds[i].soundType == SoundType.UIElements) { continue; } if (WindowSettings.selectedUISoundsFilter == SoundType.UIElements && DUIData.Instance.DatabaseUISounds.sounds[i].soundType == SoundType.UIButtons) { continue; } QUI.BeginHorizontal(width, 20); { if (SearchPatternAnimBool.target)//a search pattern has been entered in the search box { try { if (!Regex.IsMatch(DUIData.Instance.DatabaseUISounds.sounds[i].soundName, SearchPattern, RegexOptions.IgnoreCase)) { QUI.EndHorizontal(); continue; //this does not match the search pattern --> we do not show this name it } } catch (Exception) { } } QUI.Space(-1); QUI.Box(QStyles.GetBackgroundStyle(Style.BackgroundType.Low, SearchPatternAnimBool.target ? QColors.Color.Orange : QColors.Color.Gray), width + 2, 20); QUI.Space(-2); QUI.Space(-width); SoundType soundType = DUIData.Instance.DatabaseUISounds.sounds[i].soundType; QUI.BeginChangeCheck(); soundType = (SoundType)EditorGUILayout.EnumPopup(soundType, GUILayout.Width(PAGE_UISOUNDS_SOUNDTYPE_BUTTON_WIDTH)); if (QUI.EndChangeCheck()) { Undo.RecordObject(DUIData.Instance, "UpdateSoundType"); DUIData.Instance.DatabaseUISounds.sounds[i].soundType = soundType; QUI.SetDirty(DUIData.Instance.DatabaseUISounds.sounds[i]); QUI.SetDirty(DUIData.Instance); AssetDatabase.SaveAssets(); } QLabel.text = DUIData.Instance.DatabaseUISounds.sounds[i].soundName; #if dUI_MasterAudio QLabel.text = "Controlled by MasterAudio"; #endif QUI.Label(QLabel.text, Style.Text.Normal, (width - PAGE_UISOUNDS_SOUNDTYPE_BUTTON_WIDTH - PAGE_UISOUNDS_HORIZONTAL_SPACE * 3 - PAGE_UISOUNDS_BUTTONS_WIDTH * (1 - SearchPatternAnimBool.faded) - 16) * PAGE_UISOUNDS_SOUNDNAME_FIELD_WIDTH_PERCENT); AudioClip audioClip = DUIData.Instance.DatabaseUISounds.sounds[i].audioClip; QUI.BeginChangeCheck(); audioClip = (AudioClip)EditorGUILayout.ObjectField("", audioClip, typeof(AudioClip), false, GUILayout.Width((width - PAGE_UISOUNDS_SOUNDTYPE_BUTTON_WIDTH - PAGE_UISOUNDS_HORIZONTAL_SPACE * 3 - PAGE_UISOUNDS_BUTTONS_WIDTH * (1 - SearchPatternAnimBool.faded) - 16) * PAGE_UISOUNDS_AUDIOCLIP_FIELD_WIDTH_PERCENT)); if (QUI.EndChangeCheck()) { Undo.RecordObject(DUIData.Instance, "UpdateAudioClipReferene"); DUIData.Instance.DatabaseUISounds.sounds[i].audioClip = audioClip; QUI.SetDirty(DUIData.Instance.DatabaseUISounds.sounds[i]); QUI.SetDirty(DUIData.Instance); AssetDatabase.SaveAssets(); } if (SearchPatternAnimBool.faded < 0.6f) { QUI.Space(PAGE_UISOUNDS_HORIZONTAL_SPACE); if (QUI.ButtonPlay()) { DUIUtils.PreviewSound(DUIData.Instance.DatabaseUISounds.sounds[i].soundName); } } if (SearchPatternAnimBool.faded < 0.4f) { QUI.Space(PAGE_UISOUNDS_HORIZONTAL_SPACE); if (QUI.ButtonStop()) { DUIUtils.StopSoundPreview(DUIData.Instance.DatabaseUISounds.sounds[i].soundName); } QUI.Space(PAGE_UISOUNDS_HORIZONTAL_SPACE); } if (SearchPatternAnimBool.faded < 0.2f) { if (QUI.ButtonCancel()) { if (EditorUtility.DisplayDialog("Delete the '" + DUIData.Instance.DatabaseUISounds.sounds[i].soundName + "' UISound?", "Are you sure you want to proceed?" + "\n\n" + "Operation cannot be undone!", "Yes", "Cancel")) { DUIData.Instance.DatabaseUISounds.DeleteUISound(DUIData.Instance.DatabaseUISounds.sounds[i].soundName); QUI.SetDirty(DUIData.Instance); AssetDatabase.SaveAssets(); QUI.EndHorizontal(); continue; } } } QUI.FlexibleSpace(); } QUI.EndHorizontal(); QUI.Space(SPACE_2); } }
public void DrawDatabase(TargetDatabase databaseType, DUIData.Database database, float width) { DrawNewCategoryAndSearch(width, databaseType); QUI.Space(SPACE_16); if (database.categories.Count == 0) { DrawInfoMessage(InfoMessageName.AddCategoryToStart.ToString(), width); return; } DrawExpandCollapseButtons(width, databaseType); QUI.Space(SPACE_8); foreach (string categoryName in database.categoryNames) { if (categoryName.Equals(DUI.CUSTOM_NAME)) { continue; } QUI.BeginHorizontal(width); { #region Button Bar if (QUI.GhostBar(categoryName, SearchPatternAnimBool.target ? QColors.Color.Orange : QColors.Color.Blue, database.GetCategory(categoryName).isExpanded, width - 15 * database.GetCategory(categoryName).isExpanded.faded *(1 - SearchPatternAnimBool.faded), BarHeight)) { database.GetCategory(categoryName).isExpanded.target = !database.GetCategory(categoryName).isExpanded.target; } if (database.GetCategory(categoryName).isExpanded.faded > 0.7f && SearchPatternAnimBool.faded < 0.3f) { QUI.Space(1); if (QUI.ButtonCancel()) { if (categoryName.Equals(DUI.UNCATEGORIZED_CATEGORY_NAME)) { QUI.DisplayDialog("Info", "You cannot and should not try to delete the '" + categoryName + "' category.", "Ok"); } else if (QUI.DisplayDialog("Delete category?", "Are you sure you want to delete the '" + categoryName + "'?", "Yes", "Cancel")) { Undo.RecordObject(DUIData.Instance, "DeleteCategory"); database.RemoveCategory(categoryName, true); QUI.EndHorizontal(); break; } } } #endregion } QUI.EndHorizontal(); if (QUI.BeginFadeGroup(database.GetCategory(categoryName).isExpanded.faded)) { DrawStringList(database.GetCategory(categoryName).itemNames, width, database.GetCategory(categoryName).isExpanded); QUI.Space(SPACE_8 * database.GetCategory(categoryName).isExpanded.faded); } QUI.EndFadeGroup(); QUI.Space(SPACE_2); } }
public void DrawDatabase(TargetDatabase databaseType, DUIData.Database database, float width) { DrawNewCategoryAndSearch(width, databaseType); QUI.Space(SPACE_16); if (database.categories.Count == 0) { DrawInfoMessage(InfoMessageName.AddCategoryToStart.ToString(), width); return; } DrawExpandCollapseButtons(width, databaseType); QUI.Space(SPACE_8); foreach (string categoryName in database.categoryNames) { if (categoryName.Equals(DUI.CUSTOM_NAME)) { continue; } QUI.BeginHorizontal(width); { #region Button Bar if (RenameCategoryAnimBool.target && RenameCategoryTargetCategoryName.Equals(categoryName)) { QLabel.text = "Rename category to"; QLabel.style = Style.Text.Normal; QUI.Label(QLabel); QUI.Space(SPACE_2); QUI.SetNextControlName("RenameCategoryName"); RenameCategoryName = QUI.TextField(RenameCategoryName, width - QLabel.x - 46); QUI.Space(1); if (QUI.ButtonOk() || (DetectKey_Return() && QUI.GetNameOfFocusedControl().Equals("RenameCategoryName"))) { RenameCategoryName = RenameCategoryName.Trim(); if (string.IsNullOrEmpty(RenameCategoryName)) { QUI.DisplayDialog("Action Required", "Please enter a new category name in order to cotinue.", "Ok"); } else if (database.categoryNames.Contains(RenameCategoryName)) { QUI.DisplayDialog("Action Required", "There is another category with the name '" + RenameCategoryName + "' already in the database." + "\n\n" + "Enter another category name.", "Ok"); } else { database.RenameCategory(categoryName, RenameCategoryName); RenameCategoryName = ""; RenameCategoryAnimBool.target = false; RenameCategoryTargetCategoryName = ""; break; } } QUI.Space(1); if (QUI.ButtonCancel() || QUI.DetectKeyDown(Event.current, KeyCode.Escape)) { RenameCategoryName = ""; RenameCategoryAnimBool.target = false; RenameCategoryTargetCategoryName = ""; } } else { if (QUI.GhostBar(categoryName, SearchPatternAnimBool.target ? QColors.Color.Orange : QColors.Color.Blue, database.GetCategory(categoryName).isExpanded, width - 70 * database.GetCategory(categoryName).isExpanded.faded *(1 - SearchPatternAnimBool.faded), BarHeight)) { database.GetCategory(categoryName).isExpanded.target = !database.GetCategory(categoryName).isExpanded.target; } if (database.GetCategory(categoryName).isExpanded.faded > 0.7f && SearchPatternAnimBool.faded < 0.3f) { QUI.Space(1); if (QUI.GhostButton("rename", QColors.Color.Gray, 52, BarHeight, database.GetCategory(categoryName).isExpanded.value)) { if (QUI.DisplayDialog("Information", "Note that after you rename this category, all the UI settings (and code references) that use the current category name, will not get automatically changed." + "\n\n" + "You are responsible to update your code and the UI settings.", "Continue", "Cancel")) { RenameCategoryAnimBool.target = true; RenameCategoryName = categoryName; RenameCategoryTargetCategoryName = categoryName; QUI.FocusControl("RenameCategoryName"); QUI.FocusTextInControl("RenameCategoryName"); } } QUI.Space(3); if (QUI.ButtonCancel()) { if (categoryName.Equals(DUI.UNCATEGORIZED_CATEGORY_NAME)) { QUI.DisplayDialog("Info", "You cannot and should not try to delete the '" + categoryName + "' category.", "Ok"); } else if (QUI.DisplayDialog("Delete category?", "Are you sure you want to delete the '" + categoryName + "'?", "Yes", "Cancel")) { Undo.RecordObject(DUIData.Instance, "DeleteCategory"); database.RemoveCategory(categoryName, true); QUI.EndHorizontal(); break; } } } } #endregion } QUI.EndHorizontal(); if (QUI.BeginFadeGroup(database.GetCategory(categoryName).isExpanded.faded)) { DrawStringList(database.GetCategory(categoryName).itemNames, width, database.GetCategory(categoryName).isExpanded); QUI.Space(SPACE_8 * database.GetCategory(categoryName).isExpanded.faded); } QUI.EndFadeGroup(); QUI.Space(SPACE_2); } }
void DrawPageAnimatorPresetsPunchData(DUIData.PunchDatabase database, string relativePath, float width) { if (database == null || database.categories == null || database.categories.Count == 0) { //ToDo - draw info message telling the dev that the database is empty return; } for (int categoryIndex = 0; categoryIndex < database.categories.Count; categoryIndex++) { if (QUI.GhostBar(database.categories[categoryIndex].categoryName, QColors.Color.Blue, database.categories[categoryIndex].isExpanded, width, ANIMATOR_PRESETS_CATEGORY_BAR_HEIGHT)) { database.categories[categoryIndex].isExpanded.target = !database.categories[categoryIndex].isExpanded.target; database.categories[categoryIndex].ExpandOrCollapseAllAnimData(false); } QUI.BeginHorizontal(width); { QUI.Space(SPACE_8 * database.categories[categoryIndex].isExpanded.faded); if (QUI.BeginFadeGroup(database.categories[categoryIndex].isExpanded.faded)) { QUI.BeginVertical(width - SPACE_8); { QUI.Space(SPACE_2); for (int presetIndex = 0; presetIndex < database.categories[categoryIndex].presets.Count; presetIndex++) { QUI.BeginHorizontal(width - SPACE_8); { if (DUIUtils.PresetGhostBar(database.categories[categoryIndex].presets[presetIndex].presetName, QColors.Color.Blue, database.categories[categoryIndex].presets[presetIndex].isExpanded, width - SPACE_8 - SPACE_2 - SPACE_16, ANIMATOR_PRESETS_PRESET_BAR_HEIGHT)) { database.categories[categoryIndex].presets[presetIndex].isExpanded.target = !database.categories[categoryIndex].presets[presetIndex].isExpanded.target; } QUI.Space(SPACE_2); if (QUI.ButtonCancel()) { if (QUI.DisplayDialog("Delete the '" + database.categories[categoryIndex].presets[presetIndex].presetName + "' preset?", "Are you sure you want to delete this preset?" + "\n\n" + "Operation cannot be undone!", "Yes", "No")) { database.categories[categoryIndex].DeletePunchData(database.categories[categoryIndex].presets[presetIndex].presetName, relativePath + database.categories[categoryIndex].categoryName + "/"); if (database.categories[categoryIndex].presets.Count == 0) //category is empty -> remove it { database.RemoveCategory(database.categories[categoryIndex].categoryName, relativePath, true); } QUI.ExitGUI(); } } } QUI.EndHorizontal(); QUI.BeginHorizontal(width - SPACE_8); { QUI.Space(SPACE_8 * database.categories[categoryIndex].presets[presetIndex].isExpanded.faded); if (QUI.BeginFadeGroup(database.categories[categoryIndex].presets[presetIndex].isExpanded.faded)) { QUI.BeginVertical(width - SPACE_16); { DUIUtils.DrawPunch(database.categories[categoryIndex].presets[presetIndex].data, database.categories[categoryIndex].presets[presetIndex], width - SPACE_16); QUI.Space(SPACE_8 * database.categories[categoryIndex].presets[presetIndex].isExpanded.faded); //space added if preset is opened } QUI.EndVertical(); } QUI.EndFadeGroup(); } QUI.EndHorizontal(); QUI.Space(SPACE_4); //space between presets } QUI.Space(SPACE_4 * database.categories[categoryIndex].isExpanded.faded); //space added if category is opened } QUI.EndVertical(); } QUI.EndFadeGroup(); } QUI.EndHorizontal(); QUI.Space(SPACE_4); //space between categories } }
void DrawDefineSymbolsSymbolsPreset(float width) { QUI.BeginVertical(width); { QUI.GhostTitle("SYMBOLS PRESET", QColors.Color.Green, width); QUI.Space(SPACE_4); QUI.BeginHorizontal(width); { QUI.Space(SPACE_8); if (QUI.GhostButton("<<< Copy to Build Target Group", QColors.Color.Green, width - SPACE_8, 24)) { List <string> tempList = presetSymbols; tempList = QUtils.CleanList(tempList); presetSymbols.Clear(); presetSymbols.AddRange(tempList); symbols.Clear(); symbols.AddRange(presetSymbols); QUtils.SetScriptingDefineSymbolsForGroup(selectedBuildTargetGroup, symbols); if (presetSymbols.Count == 0) { presetSymbols.Add(""); } } QUI.FlexibleSpace(); } QUI.EndHorizontal(); QUI.Space(SPACE_4); if (defineSymbolsNewPreset.value) //NEW PRESET { QUI.BeginHorizontal(width); { QUI.Space(SPACE_8); QUI.Label("Enter a new preset name...", Style.Text.Small, width - SPACE_8); } QUI.EndHorizontal(); QUI.Space(-SPACE_4); QUI.BeginHorizontal(width); { QUI.Space(SPACE_8); GUI.SetNextControlName("newPresetName"); newPresetName = QUI.TextField(newPresetName, EditorGUIUtility.isProSkin ? QColors.Green.Color : QColors.GreenLight.Color, (width - SPACE_8 - 16 - 2 - 16) * defineSymbolsNewPreset.faded); //if the user hits Enter while either the key or value fields were being edited bool keyboardReturnPressed = Event.current.isKey && Event.current.keyCode == KeyCode.Return && Event.current.type == EventType.KeyUp && (GUI.GetNameOfFocusedControl() == "newPresetName"); QUI.Space(-2); if (QUI.ButtonOk() || keyboardReturnPressed) { newPresetName = newPresetName.Trim(); if (newPresetName.Equals(DEFAULT_PRESET_NAME)) { QUI.DisplayDialog("Enter a new preset name", "You are trying to save a preset with the defaut preset name '" + DEFAULT_PRESET_NAME + "'. Please enter another preset name.", "Ok"); } else if (string.IsNullOrEmpty(newPresetName)) { QUI.DisplayDialog("Enter a new preset name", "You are trying to save a preset with no name. Please enter a name.", "Ok"); } else if (Q.GetResource <DefineSymbols.DefineSymbolsPreset>(EZT.RESOURCES_PATH_DEFINE_SYMBOLS_PRESETS, newPresetName) != null) { if (QUI.DisplayDialog("Overwrite preset?", "There is a preset with the same name '" + newPresetName + "' in the presets list. Are you sure you want to overwrite it?", "Overwrite", "Cancel")) { AssetDatabase.MoveAssetToTrash(EZT.RELATIVE_PATH_DEFINE_SYMBOLS_PRESETS + newPresetName + ".asset"); SavePreset(presetSymbols, newPresetName); selectedPresetName = newPresetName; RefreshPresetNames(); defineSymbolsNewPreset.target = false; newPresetName = ""; } } else { SavePreset(presetSymbols, newPresetName); selectedPresetName = newPresetName; RefreshPresetNames(); defineSymbolsNewPreset.target = false; newPresetName = ""; } } QUI.Space(2); //if the user hits Escape while either the key or value fields were being edited bool keyboardEscapePressed = Event.current.isKey && Event.current.keyCode == KeyCode.Escape && Event.current.type == EventType.KeyUp && (GUI.GetNameOfFocusedControl() == "newPresetName"); if (QUI.ButtonCancel() || keyboardEscapePressed) { defineSymbolsNewPreset.target = false; newPresetName = ""; } QUI.FlexibleSpace(); } QUI.EndHorizontal(); QUI.Space(5); } else //NORMAL VIEW { QUI.BeginHorizontal(width); { QUI.Space(SPACE_8); QUI.BeginChangeCheck(); QUI.SetGUIBackgroundColor(EditorGUIUtility.isProSkin ? QColors.Green.Color : QColors.GreenLight.Color); selectedPresetIndex = EditorGUILayout.Popup(selectedPresetIndex, presets, GUILayout.Width(width - SPACE_8)); QUI.ResetColors(); if (QUI.EndChangeCheck()) { Undo.RecordObject(this, "Select Preset"); selectedPresetName = presets[selectedPresetIndex]; } QUI.FlexibleSpace(); } QUI.EndHorizontal(); QUI.Space(SPACE_2); if (loadedPresetName.Equals(selectedPresetName) || selectedPresetName.Equals(DEFAULT_PRESET_NAME)) { QUI.BeginHorizontal(width); { QUI.Space(SPACE_8); if (selectedPresetName.Equals(DEFAULT_PRESET_NAME)) { if (QUI.GhostButton("Create a New Preset with current symbols", QColors.Color.Green, width - SPACE_8)) { defineSymbolsNewPreset.target = true; newPresetName = ""; } } else { if (QUI.GhostButton("NEW", QColors.Color.Green, ((width - SPACE_8) / 4) - SPACE_2)) { defineSymbolsNewPreset.target = true; newPresetName = ""; } QUI.Space(SPACE_2); if (QUI.GhostButton("RELOAD", QColors.Color.Green, ((width - SPACE_8) / 4) - SPACE_2)) { LoadPreset(selectedPresetName); } QUI.Space(SPACE_2); if (QUI.GhostButton("SAVE", QColors.Color.Green, ((width - SPACE_8) / 4) - SPACE_2)) { SavePreset(presetSymbols, selectedPresetName); } QUI.Space(SPACE_2); if (QUI.GhostButton("DELETE", QColors.Color.Red, ((width - SPACE_8) / 4) - SPACE_2)) { if (QUI.DisplayDialog("Delete preset?", "Are you sure you want to delete the '" + selectedPresetName + "' preset?", "Yes", "No")) { DeletePreset(selectedPresetName); } } } QUI.FlexibleSpace(); } QUI.EndHorizontal(); } else { QUI.BeginHorizontal(width); { QUI.Space(SPACE_8); if (QUI.GhostButton("Load Preset", QColors.Color.Green, width - SPACE_8)) { LoadPreset(selectedPresetName); } QUI.FlexibleSpace(); } QUI.EndHorizontal(); } } QUI.Space(-SPACE_8 - SPACE_4); DrawSelectedPresetsList(width); } QUI.EndVertical(); }