123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226 |
- using UnityEngine;
- using UnityEditor;
- using FairyGUI;
- namespace FairyGUIEditor
- {
- /// <summary>
- ///
- /// </summary>
- [CustomEditor(typeof(UIConfig))]
- public class UIConfigEditor : Editor
- {
- string[] propertyToExclude;
- bool itemsFoldout;
- bool packagesFoldOut;
- int errorState;
- private const float kButtonWidth = 18f;
- void OnEnable()
- {
- propertyToExclude = new string[] { "m_Script", "Items", "PreloadPackages" };
- itemsFoldout = EditorPrefs.GetBool("itemsFoldOut");
- packagesFoldOut = EditorPrefs.GetBool("packagesFoldOut");
- errorState = 0;
- }
- public override void OnInspectorGUI()
- {
- serializedObject.Update();
- DrawPropertiesExcluding(serializedObject, propertyToExclude);
-
- UIConfig config = (UIConfig)target;
- EditorGUILayout.BeginHorizontal();
- EditorGUI.BeginChangeCheck();
- itemsFoldout = EditorGUILayout.Foldout(itemsFoldout, "Config Items");
- if (EditorGUI.EndChangeCheck())
- EditorPrefs.SetBool("itemsFoldOut", itemsFoldout);
- EditorGUILayout.EndHorizontal();
- bool modified = false;
- if (itemsFoldout)
- {
- Undo.RecordObject(config, "Items");
- int len = config.Items.Count;
- EditorGUILayout.BeginHorizontal();
- EditorGUILayout.PrefixLabel("Add");
- UIConfig.ConfigKey selectedKey = (UIConfig.ConfigKey)EditorGUILayout.EnumPopup((System.Enum)UIConfig.ConfigKey.PleaseSelect);
- if (selectedKey != UIConfig.ConfigKey.PleaseSelect)
- {
- int index = (int)selectedKey;
- if (index > len - 1)
- {
- for (int i = len; i < index; i++)
- config.Items.Add(new UIConfig.ConfigValue());
- UIConfig.ConfigValue value = new UIConfig.ConfigValue();
- value.valid = true;
- UIConfig.SetDefaultValue(selectedKey, value);
- config.Items.Add(value);
- }
- else
- {
- UIConfig.ConfigValue value = config.Items[index];
- if (value == null)
- {
- value = new UIConfig.ConfigValue();
- value.valid = true;
- UIConfig.SetDefaultValue(selectedKey, value);
- config.Items[index] = value;
- }
- else if (!value.valid)
- {
- value.valid = true;
- UIConfig.SetDefaultValue(selectedKey, value);
- }
- }
- }
- EditorGUILayout.EndHorizontal();
- for (int i = 0; i < len; i++)
- {
- UIConfig.ConfigValue value = config.Items[i];
- if (value == null || !value.valid)
- continue;
- EditorGUILayout.BeginHorizontal();
- EditorGUILayout.PrefixLabel(((UIConfig.ConfigKey)i).ToString());
- switch ((UIConfig.ConfigKey)i)
- {
- case UIConfig.ConfigKey.ClickDragSensitivity:
- case UIConfig.ConfigKey.DefaultComboBoxVisibleItemCount:
- case UIConfig.ConfigKey.DefaultScrollStep:
- case UIConfig.ConfigKey.TouchDragSensitivity:
- case UIConfig.ConfigKey.TouchScrollSensitivity:
- case UIConfig.ConfigKey.InputCaretSize:
- value.i = EditorGUILayout.IntField(value.i);
- break;
- case UIConfig.ConfigKey.ButtonSound:
- case UIConfig.ConfigKey.GlobalModalWaiting:
- case UIConfig.ConfigKey.HorizontalScrollBar:
- case UIConfig.ConfigKey.LoaderErrorSign:
- case UIConfig.ConfigKey.PopupMenu:
- case UIConfig.ConfigKey.PopupMenu_seperator:
- case UIConfig.ConfigKey.TooltipsWin:
- case UIConfig.ConfigKey.VerticalScrollBar:
- case UIConfig.ConfigKey.WindowModalWaiting:
- case UIConfig.ConfigKey.DefaultFont:
- value.s = EditorGUILayout.TextField(value.s);
- break;
- case UIConfig.ConfigKey.DefaultScrollBounceEffect:
- case UIConfig.ConfigKey.DefaultScrollTouchEffect:
- case UIConfig.ConfigKey.RenderingTextBrighterOnDesktop:
- case UIConfig.ConfigKey.AllowSoftnessOnTopOrLeftSide:
- case UIConfig.ConfigKey.DepthSupportForPaintingMode:
- value.b = EditorGUILayout.Toggle(value.b);
- break;
- case UIConfig.ConfigKey.ButtonSoundVolumeScale:
- value.f = EditorGUILayout.Slider(value.f, 0, 1);
- break;
- case UIConfig.ConfigKey.ModalLayerColor:
- case UIConfig.ConfigKey.InputHighlightColor:
- value.c = EditorGUILayout.ColorField(value.c);
- break;
- case UIConfig.ConfigKey.Branch:
- EditorGUI.BeginChangeCheck();
- value.s = EditorGUILayout.TextField(value.s);
- if (EditorGUI.EndChangeCheck())
- modified = true;
- break;
- }
- if (GUILayout.Button(new GUIContent("X", "Delete Item"), EditorStyles.miniButtonRight, GUILayout.Width(30)))
- {
- config.Items[i].Reset();
- UIConfig.SetDefaultValue((UIConfig.ConfigKey)i, config.Items[i]);
- modified = true;
- }
- EditorGUILayout.EndHorizontal();
- }
- }
- EditorGUILayout.BeginHorizontal();
- EditorGUI.BeginChangeCheck();
- packagesFoldOut = EditorGUILayout.Foldout(packagesFoldOut, "Preload Packages");
- if (EditorGUI.EndChangeCheck())
- EditorPrefs.SetBool("packagesFoldOut", packagesFoldOut);
- EditorGUILayout.EndHorizontal();
- if (packagesFoldOut)
- {
- Undo.RecordObject(config, "PreloadPackages");
- EditorToolSet.LoadPackages();
- if (EditorToolSet.packagesPopupContents != null)
- {
- EditorGUILayout.BeginHorizontal();
- EditorGUILayout.PrefixLabel("Add");
- int selected = EditorGUILayout.Popup(EditorToolSet.packagesPopupContents.Length - 1, EditorToolSet.packagesPopupContents);
- EditorGUILayout.EndHorizontal();
- if (selected != EditorToolSet.packagesPopupContents.Length - 1)
- {
- UIPackage pkg = UIPackage.GetPackages()[selected];
- string tmp = pkg.assetPath.ToLower();
- int pos = tmp.LastIndexOf("resources/");
- if (pos != -1)
- {
- string packagePath = pkg.assetPath.Substring(pos + 10);
- if (config.PreloadPackages.IndexOf(packagePath) == -1)
- config.PreloadPackages.Add(packagePath);
- errorState = 0;
- }
- else
- {
- errorState = 10;
- }
- }
- }
- if (errorState > 0)
- {
- errorState--;
- EditorGUILayout.HelpBox("Package is not in resources folder.", MessageType.Warning);
- }
- int cnt = config.PreloadPackages.Count;
- int pi = 0;
- while (pi < cnt)
- {
- EditorGUILayout.BeginHorizontal();
- EditorGUILayout.PrefixLabel("" + pi + ".");
- config.PreloadPackages[pi] = EditorGUILayout.TextField(config.PreloadPackages[pi]);
- if (GUILayout.Button(new GUIContent("X", "Delete Item"), EditorStyles.miniButtonRight, GUILayout.Width(30)))
- {
- config.PreloadPackages.RemoveAt(pi);
- cnt--;
- }
- else
- pi++;
- EditorGUILayout.EndHorizontal();
- }
- }
- else
- errorState = 0;
- if (serializedObject.ApplyModifiedProperties() || modified)
- (target as UIConfig).ApplyModifiedProperties();
- }
- }
- }
|