| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136 | 
							- using System.IO;
 
- using UnityEditor;
 
- using UnityEngine;
 
- #if dUI_TextMeshPro
 
- using TMPro;
 
- #endif
 
- using XCharts.Runtime;
 
- namespace XCharts.Editor
 
- {
 
-     [CustomPropertyDrawer(typeof(ThemeStyle), true)]
 
-     public class ThemeStyleDrawer : BasePropertyDrawer
 
-     {
 
-         public override string ClassName { get { return "Theme"; } }
 
-         public override void OnGUI(Rect pos, SerializedProperty prop, GUIContent label)
 
-         {
 
-             base.OnGUI(pos, prop, label);
 
-             var defaultWidth = pos.width;
 
-             var defaultX = pos.x;
 
-             var chart = prop.serializedObject.targetObject as BaseChart;
 
-             if (MakeComponentFoldout(prop, "m_Show", false, new HeaderMenuInfo("Reset|Reset to theme default color", () =>
 
-                 {
 
-                     chart.theme.sharedTheme.ResetTheme();
 
-                     chart.RefreshAllComponent();
 
-                 }), new HeaderMenuInfo("Export|Export theme to asset for a new theme", () =>
 
-                 {
 
-                     ExportThemeWindow.target = chart;
 
-                     EditorWindow.GetWindow(typeof(ExportThemeWindow));
 
-                 }), new HeaderMenuInfo("Sync color to custom|Sync shared theme color to custom color", () =>
 
-                 {
 
-                     chart.theme.SyncSharedThemeColorToCustom();
 
-                 })))
 
-             {
 
-                 ++EditorGUI.indentLevel;
 
-                 var chartNameList = XCThemeMgr.GetAllThemeNames();
 
-                 var lastIndex = chartNameList.IndexOf(chart.theme.themeName);
 
-                 var y = pos.y + EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
 
-                 var selectedIndex = EditorGUI.Popup(new Rect(pos.x, y, pos.width, EditorGUIUtility.singleLineHeight),
 
-                     "Shared Theme", lastIndex, chartNameList.ToArray());
 
-                 AddSingleLineHeight();
 
-                 if (lastIndex != selectedIndex)
 
-                 {
 
-                     XCThemeMgr.SwitchTheme(chart, chartNameList[selectedIndex]);
 
-                 }
 
-                 PropertyField(prop, "m_SharedTheme");
 
-                 PropertyField(prop, "m_TransparentBackground");
 
-                 PropertyField(prop, "m_EnableCustomTheme");
 
-                 using(new EditorGUI.DisabledScope(!prop.FindPropertyRelative("m_EnableCustomTheme").boolValue))
 
-                     {
 
-                         PropertyField(prop, "m_CustomBackgroundColor");
 
-                         PropertyField(prop, "m_CustomColorPalette");
 
-                     }
 
-                     --EditorGUI.indentLevel;
 
-             }
 
-         }
 
-         private void AddPropertyField(Rect pos, SerializedProperty prop, ref float y)
 
-         {
 
-             float height = EditorGUI.GetPropertyHeight(prop, new GUIContent(prop.displayName), true);
 
-             EditorGUI.PropertyField(new Rect(pos.x, y, pos.width, height), prop, true);
 
-             y += height + EditorGUIUtility.standardVerticalSpacing;
 
-             m_Heights[m_KeyName] += height + EditorGUIUtility.standardVerticalSpacing;
 
-         }
 
-     }
 
-     public class ExportThemeWindow : UnityEditor.EditorWindow
 
-     {
 
-         public static BaseChart target;
 
-         private static ExportThemeWindow window;
 
-         private string m_ChartName;
 
-         static void Init()
 
-         {
 
-             window = (ExportThemeWindow) EditorWindow.GetWindow(typeof(ExportThemeWindow), false, "Export Theme", true);
 
-             window.minSize = new Vector2(600, 50);
 
-             window.maxSize = new Vector2(600, 50);
 
-             window.Show();
 
-         }
 
-         void OnInspectorUpdate()
 
-         {
 
-             Repaint();
 
-         }
 
-         private void OnGUI()
 
-         {
 
-             if (target == null)
 
-             {
 
-                 Close();
 
-                 return;
 
-             }
 
-             GUILayout.Space(10);
 
-             GUILayout.Label("Input a new name for theme:");
 
-             m_ChartName = GUILayout.TextField(m_ChartName);
 
-             GUILayout.Space(10);
 
-             GUILayout.Label("Export path:");
 
-             if (string.IsNullOrEmpty(m_ChartName))
 
-             {
 
-                 GUILayout.Label("Need input a new name.");
 
-             }
 
-             else
 
-             {
 
-                 GUILayout.Label(XCThemeMgr.GetThemeAssetPath(m_ChartName));
 
-             }
 
-             GUILayout.Space(20);
 
-             if (GUILayout.Button("Export"))
 
-             {
 
-                 if (string.IsNullOrEmpty(m_ChartName))
 
-                 {
 
-                     ShowNotification(new GUIContent("ERROR:Need input a new name!"));
 
-                 }
 
-                 else if (XCThemeMgr.ContainsTheme(m_ChartName))
 
-                 {
 
-                     ShowNotification(new GUIContent("ERROR:The name you entered is already in use!"));
 
-                 }
 
-                 else if (IsAssetsExist(XCThemeMgr.GetThemeAssetPath(m_ChartName)))
 
-                 {
 
-                     ShowNotification(new GUIContent("ERROR:The asset is exist! \npath=" +
 
-                         XCThemeMgr.GetThemeAssetPath(m_ChartName)));
 
-                 }
 
-                 else
 
-                 {
 
-                     XCThemeMgr.ExportTheme(target.theme.sharedTheme, m_ChartName);
 
-                     ShowNotification(new GUIContent("SUCCESS:The theme is exported. \npath=" +
 
-                         XCThemeMgr.GetThemeAssetPath(m_ChartName)));
 
-                 }
 
-             }
 
-         }
 
-         private bool IsAssetsExist(string path)
 
-         {
 
-             return File.Exists(Application.dataPath + "/../" + path);
 
-         }
 
-     }
 
- }
 
 
  |