public static void DrawUnityEvents(bool enabled, AnimBool showEvents, SerializedProperty unityEvent, string unityEventTitle, float width, float miniBarHeight) { if (QUI.GhostBar("Unity Events", enabled ? QColors.Color.Blue : QColors.Color.Gray, showEvents, width, miniBarHeight)) { showEvents.target = !showEvents.target; } QUI.BeginHorizontal(width); { QUI.Space(8 * showEvents.faded); if (QUI.BeginFadeGroup(showEvents.faded)) { QUI.SetGUIBackgroundColor(enabled ? AccentColorBlue : AccentColorGray); QUI.BeginVertical(width - 16); { QUI.Space(2 * showEvents.faded); QUI.PropertyField(unityEvent, new GUIContent() { text = unityEventTitle }, width - 8); QUI.Space(2 * showEvents.faded); } QUI.EndVertical(); QUI.ResetColors(); } QUI.EndFadeGroup(); } QUI.EndHorizontal(); }
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 DrawModuleVersion(string moduleName, Page targetModule, EzModuleVersion emv, AnimBool show, float width) { if (QUI.GhostBar(moduleName + (emv == null ? " has not been installed!" : (" version " + emv.versionNumber)), emv == null ? QColors.Color.Gray : QColors.Color.Green, show, width, 24)) { if (emv == null) { show.target = false; WindowSettings.currentPage = targetModule; } else { show.target = !show.target; if (selectedModuleToEdit == targetModule) { selectedModuleToEdit = Page.None; editModuleAnimBool.target = false; } } } if (emv == null) { return; } if (QUI.BeginFadeGroup(show.faded)) { QUI.BeginVertical(width); { QUI.Space(-9); QUI.BeginHorizontal(width); { EditorGUILayout.LabelField(emv.releaseNotes, QStyles.GetInfoMessageMessageStyle(Style.InfoMessage.Help)); } QUI.EndHorizontal(); #if EZ_SOURCE #pragma warning disable CS0162 // Unreachable code detected QUI.Space(13); QUI.Space(8 * (selectedModuleToEdit == targetModule ? editModuleAnimBool.faded : 0)); QUI.BeginHorizontal(width); { QUI.FlexibleSpace(); if (QUI.GhostButton("Edit Version", QColors.Color.Gray, 100, 16, selectedModuleToEdit == targetModule) || QUI.DetectKeyUp(Event.current, KeyCode.Escape)) { if (selectedModuleToEdit == targetModule) { selectedModuleToEdit = Page.None; editModuleAnimBool.target = false; } else { selectedModuleToEdit = targetModule; editModuleAnimBool.target = true; } } if (selectedModuleToEdit == targetModule && editModuleAnimBool.faded > 0.4f) { QUI.Space(SPACE_4 * editModuleAnimBool.faded); if (QUI.GhostButton("Save Changes", QColors.Color.Green, 100 * editModuleAnimBool.faded, 16)) { QUI.SetDirty(emv); AssetDatabase.SaveAssets(); selectedModuleToEdit = Page.None; editModuleAnimBool.value = false; } } } QUI.EndHorizontal(); if (selectedModuleToEdit == targetModule) { if (QUI.BeginFadeGroup(editModuleAnimBool.faded)) { QUI.BeginVertical(width); { QUI.BeginHorizontal(width); { EditorGUILayout.LabelField("version", QStyles.GetStyle(QStyles.GetStyleName(Style.Text.Small)), GUILayout.Width(80)); QUI.Space(SPACE_2); EditorGUILayout.LabelField("release notes", QStyles.GetStyle(QStyles.GetStyleName(Style.Text.Small))); } QUI.EndHorizontal(); QUI.Space(-SPACE_4); QUI.BeginHorizontal(width); { emv.versionNumber = EditorGUILayout.TextField(emv.versionNumber, GUILayout.Width(80)); QUI.Space(SPACE_2); emv.releaseNotes = EditorGUILayout.TextArea(emv.releaseNotes); } QUI.EndHorizontal(); QUI.Space(SPACE_16); } QUI.EndVertical(); } QUI.EndFadeGroup(); } #endif QUI.Space(9 + 16); } QUI.EndVertical(); } QUI.EndFadeGroup(); #pragma warning restore CS0162 // Unreachable code detected }
void DrawArrow(float width) { QUI.BeginHorizontal(width); { QUI.QToggle("Show Arrow", showArrow); QUI.FlexibleSpace(); } QUI.EndHorizontal(); showArrowAnimBool.target = showArrow.boolValue; if (QUI.BeginFadeGroup(showArrowAnimBool.faded)) { QUI.BeginVertical(width); { QUI.Space(SPACE_2 * showArrowAnimBool.faded); QUI.BeginHorizontal(width); { QUI.QObjectPropertyField("Arrow", arrow, width - 4 - 100, 20, true); QUI.Space(SPACE_4 * showArrowAnimBool.faded); QUI.QObjectPropertyField("Scale", arrowScale, 100, 20, false); QUI.FlexibleSpace(); } QUI.EndHorizontal(); QUI.BeginHorizontal(width); { QUI.QToggle("Override Arrow Color", overrideArrowColor); QUI.Space(SPACE_2); if (overrideArrowColor.boolValue) { tempFloat = (width - 152) / 2; //color fields width QUI.QObjectPropertyField("Closed", arrowColorWhenClosed, tempFloat, 20, false); QUI.Space(SPACE_2); QUI.QObjectPropertyField("Opened", arrowColorWhenOpened, tempFloat, 20, false); } QUI.FlexibleSpace(); } QUI.EndHorizontal(); QUI.Space(SPACE_2); QUI.BeginHorizontal(width); { if (QUI.GhostButton("Reset Arrow Holder Pos", QColors.Color.Gray, (width - 4) / 3, 18)) { Undo.RecordObject(Drawer.leftDrawerArrowHolder, "Update Arrow Holder"); switch (Drawer.drawerCloseDirection) { case Gestures.SimpleSwipe.Left: UIDrawer.ResetArrowHolder(Drawer.leftDrawerArrowHolder, Drawer.drawerCloseDirection); break; case Gestures.SimpleSwipe.Right: UIDrawer.ResetArrowHolder(Drawer.rightDrawerArrowHolder, Drawer.drawerCloseDirection); break; case Gestures.SimpleSwipe.Up: UIDrawer.ResetArrowHolder(Drawer.upDrawerArrowHolder, Drawer.drawerCloseDirection); break; case Gestures.SimpleSwipe.Down: UIDrawer.ResetArrowHolder(Drawer.downDrawerArrowHolder, Drawer.drawerCloseDirection); break; } } QUI.Space(SPACE_2); if (QUI.GhostButton("Reset Closed Arrow Pos", QColors.Color.Gray, (width - 4) / 3, 18)) { Undo.RecordObject(Drawer.leftDrawerArrowClosedPosition, "Update Closed Arrow"); switch (Drawer.drawerCloseDirection) { case Gestures.SimpleSwipe.Left: UIDrawer.ResetClosedArrow(Drawer.leftDrawerArrowClosedPosition, Drawer.drawerCloseDirection); break; case Gestures.SimpleSwipe.Right: UIDrawer.ResetClosedArrow(Drawer.rightDrawerArrowClosedPosition, Drawer.drawerCloseDirection); break; case Gestures.SimpleSwipe.Up: UIDrawer.ResetClosedArrow(Drawer.upDrawerArrowClosedPosition, Drawer.drawerCloseDirection); break; case Gestures.SimpleSwipe.Down: UIDrawer.ResetClosedArrow(Drawer.downDrawerArrowClosedPosition, Drawer.drawerCloseDirection); break; } } QUI.Space(SPACE_2); if (QUI.GhostButton("Reset Opened Arrow Pos", QColors.Color.Gray, (width - 4) / 3, 18)) { Undo.RecordObject(Drawer.leftDrawerArrowOpenedPosition, "Update Opened Arrow"); switch (Drawer.drawerCloseDirection) { case Gestures.SimpleSwipe.Left: UIDrawer.ResetOpenedArrow(Drawer.leftDrawerArrowOpenedPosition, Drawer.drawerCloseDirection); break; case Gestures.SimpleSwipe.Right: UIDrawer.ResetOpenedArrow(Drawer.rightDrawerArrowOpenedPosition, Drawer.drawerCloseDirection); break; case Gestures.SimpleSwipe.Up: UIDrawer.ResetOpenedArrow(Drawer.upDrawerArrowOpenedPosition, Drawer.drawerCloseDirection); break; case Gestures.SimpleSwipe.Down: UIDrawer.ResetOpenedArrow(Drawer.downDrawerArrowOpenedPosition, Drawer.drawerCloseDirection); break; } } } QUI.EndHorizontal(); QUI.Space(SPACE_2); QUI.BeginHorizontal(width); { if (QUI.GhostButton("Copy - Opened Arrow Position - to - Closed Arrow Position", QColors.Color.Gray, width, 18)) { Undo.RecordObject(Drawer.leftDrawerArrowOpenedPosition, "Update Opened Arrow"); switch (Drawer.drawerCloseDirection) { case Gestures.SimpleSwipe.Left: UIDrawer.MatchRectTransform(Drawer.leftDrawerArrowClosedPosition, Drawer.leftDrawerArrowOpenedPosition); break; case Gestures.SimpleSwipe.Right: UIDrawer.MatchRectTransform(Drawer.rightDrawerArrowClosedPosition, Drawer.rightDrawerArrowOpenedPosition); break; case Gestures.SimpleSwipe.Up: UIDrawer.MatchRectTransform(Drawer.upDrawerArrowClosedPosition, Drawer.upDrawerArrowOpenedPosition); break; case Gestures.SimpleSwipe.Down: UIDrawer.MatchRectTransform(Drawer.downDrawerArrowClosedPosition, Drawer.downDrawerArrowOpenedPosition); break; } } } QUI.EndHorizontal(); QUI.Space(SPACE_2); QUI.BeginHorizontal(width); { if (QUI.GhostButton("Copy - Closed Arrow Position - to - Opened Arrow Position", QColors.Color.Gray, width, 18)) { Undo.RecordObject(Drawer.leftDrawerArrowClosedPosition, "Update Closed Arrow"); switch (Drawer.drawerCloseDirection) { case Gestures.SimpleSwipe.Left: UIDrawer.MatchRectTransform(Drawer.leftDrawerArrowOpenedPosition, Drawer.leftDrawerArrowClosedPosition); break; case Gestures.SimpleSwipe.Right: UIDrawer.MatchRectTransform(Drawer.rightDrawerArrowOpenedPosition, Drawer.rightDrawerArrowClosedPosition); break; case Gestures.SimpleSwipe.Up: UIDrawer.MatchRectTransform(Drawer.upDrawerArrowOpenedPosition, Drawer.upDrawerArrowClosedPosition); break; case Gestures.SimpleSwipe.Down: UIDrawer.MatchRectTransform(Drawer.downDrawerArrowOpenedPosition, Drawer.downDrawerArrowClosedPosition); break; } } } QUI.EndHorizontal(); QUI.Space(SPACE_2); if (QUI.GhostBar("Show Arrow References", showArrowReferences.target ? QColors.Color.Blue : QColors.Color.Gray, showArrowReferences, width * showArrowAnimBool.faded, MiniBarHeight)) { showArrowReferences.target = !showArrowReferences.target; } QUI.BeginHorizontal(width); { QUI.Space(SPACE_8 * showArrowReferences.faded); if (QUI.BeginFadeGroup(showArrowReferences.faded)) { QUI.BeginVertical(width - SPACE_8); { QUI.Space(SPACE_4 * showArrowReferences.faded); QUI.QObjectPropertyField("Arrow Container", arrowContainer, width - SPACE_8, 20, true); QUI.Space(SPACE_2 * showArrowReferences.faded); DrawArrowHolder("Left", leftDrawerArrowHolder, leftDrawerArrowClosedPosition, leftDrawerArrowOpenedPosition, width); QUI.Space(SPACE_2 * showArrowReferences.faded); DrawArrowHolder("Right", rightDrawerArrowHolder, rightDrawerArrowClosedPosition, rightDrawerArrowOpenedPosition, width); QUI.Space(SPACE_2 * showArrowReferences.faded); DrawArrowHolder("Up", upDrawerArrowHolder, upDrawerArrowClosedPosition, upDrawerArrowOpenedPosition, width); QUI.Space(SPACE_2 * showArrowReferences.faded); DrawArrowHolder("Down", downDrawerArrowHolder, downDrawerArrowClosedPosition, downDrawerArrowOpenedPosition, width); QUI.Space(SPACE_2 * showArrowReferences.faded); } QUI.EndVertical(); } QUI.EndFadeGroup(); } QUI.EndHorizontal(); QUI.Space(SPACE_2 * showArrowAnimBool.faded); } QUI.EndVertical(); } QUI.EndFadeGroup(); }
void DrawEvents(float width) { if (QUI.GhostBar("Unity Events", IsAnyEventUsed ? QColors.Color.Blue : QColors.Color.Gray, showEvents, width, MiniBarHeight)) { showEvents.target = !showEvents.target; } QUI.BeginHorizontal(width); { QUI.Space(SPACE_8 * showEvents.faded); if (QUI.BeginFadeGroup(showEvents.faded)) { QUI.BeginVertical(width - SPACE_16); { QUI.Space(SPACE_2 * showEvents.faded); QUI.SetGUIBackgroundColor(IsUsingOnDrawerOpened ? QUI.AccentColorBlue : QUI.AccentColorGray); QUI.PropertyField(OnDrawerOpened, new GUIContent() { text = "OnDrawerOpened" }, width - 8); QUI.ResetColors(); QUI.Space(SPACE_2 * showEvents.faded); QUI.SetGUIBackgroundColor(IsUsingOnDrawerClosed ? QUI.AccentColorBlue : QUI.AccentColorGray); QUI.PropertyField(OnDrawerClosed, new GUIContent() { text = "OnDrawerClosed" }, width - 8); QUI.ResetColors(); QUI.Space(SPACE_4 * showEvents.faded); QUI.SetGUIBackgroundColor(IsUsingOnDrawerIsOpening ? QUI.AccentColorBlue : QUI.AccentColorGray); QUI.PropertyField(OnDrawerIsOpening, new GUIContent() { text = "OnDrawerIsOpening" }, width - 8); QUI.ResetColors(); QUI.Space(SPACE_2 * showEvents.faded); QUI.SetGUIBackgroundColor(IsUsingOnDrawerIsClosing ? QUI.AccentColorBlue : QUI.AccentColorGray); QUI.PropertyField(OnDrawerIsClosing, new GUIContent() { text = "OnDrawerIsClosing" }, width - 8); QUI.ResetColors(); QUI.Space(SPACE_4 * showEvents.faded); QUI.SetGUIBackgroundColor(IsUsingOnDrawerBeginDrag ? QUI.AccentColorBlue : QUI.AccentColorGray); QUI.PropertyField(OnDrawerBeginDrag, new GUIContent() { text = "OnDrawerBeginDrag" }, width - 8); QUI.ResetColors(); QUI.Space(SPACE_2 * showEvents.faded); QUI.SetGUIBackgroundColor(IsUsingOnDrawerEndDrag ? QUI.AccentColorBlue : QUI.AccentColorGray); QUI.PropertyField(OnDrawerEndDrag, new GUIContent() { text = "OnDrawerEndDrag" }, width - 8); QUI.ResetColors(); QUI.Space(SPACE_8 * showEvents.faded); } QUI.EndVertical(); QUI.ResetColors(); } QUI.EndFadeGroup(); } QUI.EndHorizontal(); }