private ThemeVariantData DrawViewThemesViewVariantsSprite(ThemeData themeData)
        {
            ThemeVariantData deleteVariant = null;
            float            rowHeight     = GetThemePropertyRowHeight(m_selectedThemeTab) - DGUI.Properties.Space(5);

            GUILayout.BeginHorizontal();
            {
                foreach (ThemeVariantData variant in themeData.Variants.Where(variant => variant != null))
                {
                    GUILayout.BeginVertical(GUILayout.Width(m_themeVariantColumnWidth),
                                            GUILayout.Height(rowHeight));
                    {
                        deleteVariant = DrawThemeVariantButton(themeData, variant);
                        if (deleteVariant != null)
                        {
                            GUILayout.EndVertical();
                            break;
                        }

                        for (int propertyIndex = 0; propertyIndex < themeData.SpriteLabels.Count; propertyIndex++)
                        {
                            GUILayout.BeginHorizontal(GUILayout.Width(m_themeVariantColumnWidth));
                            {
                                GUILayout.FlexibleSpace();
                                EditorGUI.BeginChangeCheck();
                                var sprite = (Sprite)EditorGUILayout.ObjectField(GUIContent.none, variant.Sprites[propertyIndex].Sprite, typeof(Sprite), false,
                                                                                 GUILayout.Width(rowHeight),
                                                                                 GUILayout.Height(rowHeight));
                                if (EditorGUI.EndChangeCheck())
                                {
                                    themeData.UndoRecord(UILabels.UpdateValue);
                                    variant.Sprites[propertyIndex] = new SpriteId(variant.Sprites[propertyIndex].Id, sprite);
                                    themeData.SetDirty(false);
                                    UpdateAllThemeTargets(themeData);
                                }

                                GUILayout.FlexibleSpace();
                            }
                            GUILayout.EndHorizontal();

                            GUILayout.FlexibleSpace();
                            GUILayout.Space(DGUI.Properties.Space());
                            DrawHorizontalDivider();
                            GUILayout.Space(DGUI.Properties.Space());
                        }
                    }
                    GUILayout.EndVertical();
                }

                DrawThemeAddVariantButton(themeData);

                GUILayout.FlexibleSpace();
            }
            GUILayout.EndHorizontal();

            return(deleteVariant);
        }
        private ThemeVariantData DrawThemeVariantButton(ThemeData themeData, ThemeVariantData variant)
        {
            ThemeVariantData deleteVariant = null;

            if (EditMode.faded > 0.01f)
            {
                string variantName = variant.VariantName;
                GUILayout.BeginHorizontal(GUILayout.Width(m_themeVariantColumnWidth));
                {
                    GUILayout.Space(DGUI.Properties.Space(1 - EditMode.faded));

                    if (DGUI.Button.IconButton.Minus())
                    {
                        deleteVariant = variant;
                    }

                    GUILayout.Space(DGUI.Properties.Space(2 * (1 - EditMode.faded)));

                    EditorGUI.BeginChangeCheck();
                    variantName = EditorGUILayout.TextField(variantName);
                }
                GUILayout.EndHorizontal();
                if (EditorGUI.EndChangeCheck())
                {
                    themeData.UndoRecord(UILabels.UpdateValue);
                    variant.VariantName = variantName;
                    themeData.SetDirty(false);
                }
            }
            else
            {
                bool activeVariant = themeData.ActiveVariant.Id.Equals(variant.Id);
                if (DGUI.Button.Draw(variant.VariantName,
                                     activeVariant ? CurrentViewColorName : DGUI.Colors.DisabledBackgroundColorName,
                                     activeVariant ? CurrentViewColorName : DGUI.Colors.DisabledTextColorName,
                                     activeVariant,
                                     m_themeVariantButtonHeight,
                                     m_themeVariantColumnWidth))
                {
                    themeData.ActivateVariant(variant);
                    themeData.SetDirty(false);
                    UpdateAllThemeTargets(themeData);
                }
            }


            if (EditMode.faded > 0.01f)
            {
                GUILayout.Space(DGUI.Properties.Space(2));
            }
            GUILayout.Space(DGUI.Properties.Space(4));
            DrawHorizontalDivider();
            GUILayout.Space(DGUI.Properties.Space());

            return(deleteVariant);
        }
        private ThemeVariantData DrawViewThemesViewVariantsFontAsset(ThemeData themeData)
        {
            ThemeVariantData deleteVariant = null;

            GUILayout.BeginHorizontal();
            {
                foreach (ThemeVariantData variant in themeData.Variants.Where(variant => variant != null))
                {
                    GUILayout.BeginVertical(GUILayout.Width(m_themeVariantColumnWidth));
                    {
                        deleteVariant = DrawThemeVariantButton(themeData, variant);
                        if (deleteVariant != null)
                        {
                            GUILayout.EndVertical();
                            break;
                        }

                        for (int propertyIndex = 0; propertyIndex < themeData.FontAssetLabels.Count; propertyIndex++)
                        {
                            GUILayout.BeginHorizontal(GUILayout.Width(m_themeVariantColumnWidth));
                            {
#if dUI_TextMeshPro
                                GUILayout.FlexibleSpace();
                                EditorGUI.BeginChangeCheck();
                                var fontAsset = (TMP_FontAsset)EditorGUILayout.ObjectField(GUIContent.none, variant.FontAssets[propertyIndex].FontAsset, typeof(TMP_FontAsset), false, GUILayout.Width(m_themeVariantColumnWidth));
                                if (EditorGUI.EndChangeCheck())
                                {
                                    themeData.UndoRecord(UILabels.UpdateValue);
                                    variant.FontAssets[propertyIndex] = new FontAssetId(variant.FontAssets[propertyIndex].Id, fontAsset);
                                    themeData.SetDirty(false);
                                    UpdateAllThemeTargets(themeData);
                                }

                                GUILayout.FlexibleSpace();
#endif
                            }
                            GUILayout.EndHorizontal();

                            GUILayout.Space(DGUI.Properties.Space());
                            DrawHorizontalDivider();
                            GUILayout.Space(DGUI.Properties.Space());
                        }
                    }
                    GUILayout.EndVertical();
                }

                DrawThemeAddVariantButton(themeData);

                GUILayout.FlexibleSpace();
            }
            GUILayout.EndHorizontal();

            return(deleteVariant);
        }
        private ThemeVariantData DrawViewThemesViewVariantsColor(ThemeData themeData)
        {
            ThemeVariantData deleteVariant = null;

            GUILayout.BeginHorizontal();
            {
                foreach (ThemeVariantData variant in themeData.Variants.Where(variant => variant != null))
                {
                    GUILayout.BeginVertical(GUILayout.Width(m_themeVariantColumnWidth));
                    {
                        deleteVariant = DrawThemeVariantButton(themeData, variant);
                        if (deleteVariant != null)
                        {
                            GUILayout.EndVertical();
                            break;
                        }

                        for (int propertyIndex = 0; propertyIndex < themeData.ColorLabels.Count; propertyIndex++)
                        {
                            GUILayout.BeginHorizontal(GUILayout.Width(m_themeVariantColumnWidth));
                            {
                                GUILayout.FlexibleSpace();
                                EditorGUI.BeginChangeCheck();
                                Color color = EditorGUILayout.ColorField(GUIContent.none, variant.Colors[propertyIndex].Color, GUILayout.Width(DGUI.Properties.DefaultFieldWidth));
                                if (EditorGUI.EndChangeCheck())
                                {
                                    themeData.UndoRecord(UILabels.UpdateValue);
                                    variant.Colors[propertyIndex] = new ColorId(variant.Colors[propertyIndex].Id, color);
                                    themeData.SetDirty(false);
                                    UpdateAllThemeTargets(themeData);
                                }

                                GUILayout.FlexibleSpace();
                            }
                            GUILayout.EndHorizontal();

                            GUILayout.Space(DGUI.Properties.Space());
                            DrawHorizontalDivider();
                            GUILayout.Space(DGUI.Properties.Space());
                        }
                    }
                    GUILayout.EndVertical();
                }

                DrawThemeAddVariantButton(themeData);

                GUILayout.FlexibleSpace();
            }
            GUILayout.EndHorizontal();

            return(deleteVariant);
        }
Example #5
0
        private void DrawActionDescription()
        {
            DynamicHeight += DGUI.Properties.Space(4);
            float x              = DrawRect.x + 16;
            float lineHeight     = DGUI.Properties.SingleLineHeight;
            float iconLineHeight = lineHeight * 2;
            float iconSize       = iconLineHeight * 0.6f;
            var   iconRect       = new Rect(x, DynamicHeight + (iconLineHeight - iconSize) / 2, iconSize, iconSize);
            float textX          = iconRect.xMax + DGUI.Properties.Space(4);
            float textWidth      = DrawRect.width - iconSize - DGUI.Properties.Space(4) - 32;
            var   themeNameRect  = new Rect(textX, DynamicHeight, textWidth, lineHeight);

            DynamicHeight += themeNameRect.height;
            var variantNameRect = new Rect(textX, DynamicHeight, textWidth, lineHeight);

            DynamicHeight += variantNameRect.height;
            DynamicHeight += DGUI.Properties.Space(4);

            if (ZoomedBeyondSocketDrawThreshold)
            {
                return;
            }

            m_targetThemeName   = "---";
            m_targetVariantName = "---";

            ThemeData theme = ThemesSettings.Database.GetThemeData(TargetNode.ThemeId);

            if (theme != null)
            {
                m_targetThemeName = theme.ThemeName;
                ThemeVariantData variant = theme.GetVariant(TargetNode.VariantId);
                if (variant != null)
                {
                    m_targetVariantName = variant.VariantName;
                }
            }

            Color iconAndTextColor = (DGUI.Utility.IsProSkin ? Color.white.Darker() : Color.black.Lighter()).WithAlpha(0.6f);

            DGUI.Icon.Draw(iconRect, m_actionIcon, iconAndTextColor);
            GUI.Label(themeNameRect, m_targetThemeName, DGUI.Colors.ColorTextOfGUIStyle(DGUI.Label.Style(Editor.Size.S, TextAlign.Left), iconAndTextColor));
            GUI.Label(variantNameRect, m_targetVariantName, DGUI.Colors.ColorTextOfGUIStyle(DGUI.Label.Style(Editor.Size.M, TextAlign.Left), iconAndTextColor));
        }
        private void DrawViewThemesVariants(ThemeData themeData)
        {
            ThemeVariantData deleteVariant = null;

            GUILayout.BeginArea(ThemesVariantsAreaRect);
            m_themesVariantsScrollPosition = GUILayout.BeginScrollView(m_themesVariantsScrollPosition);
            {
                switch (m_selectedThemeTab)
                {
                case COLOR_TAB_INDEX:
                    deleteVariant = DrawViewThemesViewVariantsColor(themeData);
                    break;

                case SPRITE_TAB_INDEX:
                    deleteVariant = DrawViewThemesViewVariantsSprite(themeData);
                    break;

                case TEXTURE_TAB_INDEX:
                    deleteVariant = DrawViewThemesViewVariantsTexture(themeData);
                    break;

                case FONT_TAB_INDEX:
                    deleteVariant = DrawViewThemesViewVariantsFont(themeData);
                    break;

#if dUI_TextMeshPro
                case FONT_ASSET_TAB_INDEX:
                    deleteVariant = DrawViewThemesViewVariantsFontAsset(themeData);
                    break;
#endif
                }

                GUILayout.Space(DGUI.Properties.SingleLineHeight * 2);
            }
            GUILayout.EndScrollView();
            GUILayout.EndArea();

            if (deleteVariant != null)
            {
                themeData.RemoveVariant(deleteVariant, true, true, true);
            }
        }