public void OnGUI() { if (chart == null) { return; } for (int i = 0; i < m_Editors.Count; i++) { var editor = m_Editors[i]; string title = editor.GetDisplayTitle(); int id = i; bool displayContent = ChartEditorHelper.DrawHeader( title, editor.baseProperty, editor.showProperty, () => { ResetComponentEditor(id); }, () => { RemoveComponentEditor(id); } ); if (displayContent) { editor.OnInternalInspectorGUI(); } } if (m_Editors.Count == 0) { EditorGUILayout.HelpBox("No componnet.", MessageType.Info); } }
private void DrawSerieDataDetail(SerializedProperty m_Datas, int index) { EditorGUI.indentLevel++; var serieData = m_Datas.GetArrayElementAtIndex(index); var m_Name = serieData.FindPropertyRelative("m_Name"); PropertyField(m_Name); if (serie.GetType().IsDefined(typeof(SerieDataExtraFieldAttribute), false)) { var attribute = serie.GetType().GetAttribute <SerieDataExtraFieldAttribute>(); foreach (var field in attribute.fields) { PropertyField(serieData.FindPropertyRelative(field)); } } serieDataMenus.Clear(); if (serie.GetType().IsDefined(typeof(SerieDataExtraComponentAttribute), false)) { var attribute = serie.GetType().GetAttribute <SerieDataExtraComponentAttribute>(); foreach (var type in attribute.types) { var size = serieData.FindPropertyRelative(SerieData.extraComponentMap[type]).arraySize; serieDataMenus.Add(new HeaderMenuInfo("Add " + type.Name, () => { serie.GetSerieData(index).GetOrAddComponent(type); EditorUtility.SetDirty(chart); }, size == 0)); } foreach (var type in attribute.types) { var size = serieData.FindPropertyRelative(SerieData.extraComponentMap[type]).arraySize; serieDataMenus.Add(new HeaderMenuInfo("Remove " + type.Name, () => { serie.GetSerieData(index).RemoveComponent(type); EditorUtility.SetDirty(chart); }, size > 0)); } } serieDataMenus.Add(new HeaderMenuInfo("Remove All", () => { serie.GetSerieData(index).RemoveAllComponent(); }, true)); m_DataComponentFoldout = ChartEditorHelper.DrawHeader("Component", m_DataComponentFoldout, false, null, null, serieDataMenus); if (m_DataComponentFoldout) { foreach (var kv in SerieData.extraComponentMap) { var prop = serieData.FindPropertyRelative(kv.Value); if (prop.arraySize > 0) { PropertyField(prop.GetArrayElementAtIndex(0)); } } } EditorGUI.indentLevel--; }
protected void PropertyFiledMore(System.Action action) { m_MoreFoldout = ChartEditorHelper.DrawHeader(MORE, m_MoreFoldout, false, null, null); if (m_MoreFoldout) { if (action != null) { action(); } } }
public void OnGUI() { if (chart == null) { return; } if (chart.debug.foldSeries) { m_SerieFoldout = ChartEditorHelper.DrawHeader("Series", m_SerieFoldout, false, null, null); if (m_SerieFoldout) { DrawSeries(); } } else { DrawSeries(); } }
protected virtual void OnStartInspectorGUI() { ShowVersion(); m_BaseFoldout = ChartEditorHelper.DrawHeader("Base", m_BaseFoldout, false, null, null); if (m_BaseFoldout) { EditorGUILayout.PropertyField(m_Script); EditorGUILayout.PropertyField(m_ChartName); EditorGUILayout.PropertyField(m_RaycastTarget); if (XChartsMgr.IsRepeatChartName(m_Chart, m_ChartName.stringValue)) { EditorGUILayout.BeginHorizontal(); EditorGUILayout.HelpBox("chart name is repeated: " + m_ChartName.stringValue, MessageType.Error); EditorGUILayout.EndHorizontal(); } } EditorGUILayout.PropertyField(m_Theme); EditorGUILayout.PropertyField(m_Settings); m_ComponentList.OnGUI(); m_SerieList.OnGUI(); }
void DrawSeries() { for (int i = 0; i < m_Editors.Count; i++) { var editor = m_Editors[i]; string title = editor.GetDisplayTitle(); bool displayContent = ChartEditorHelper.DrawHeader( title, editor.baseProperty, editor.showProperty, editor.menus); if (displayContent) { editor.OnInternalInspectorGUI(); } } if (m_Editors.Count <= 0) { EditorGUILayout.HelpBox("No serie.", MessageType.Info); } }
private void PropertyFieldData() { m_DataFoldout = ChartEditorHelper.DrawHeader("Data", m_DataFoldout, false, null, null, new HeaderMenuInfo("Import ECharts Data", () => { PraseExternalDataEditor.UpdateData(chart, serie, null); PraseExternalDataEditor.ShowWindow(); })); if (!m_DataFoldout) { return; } EditorGUI.indentLevel++; var m_Datas = FindProperty("m_Data"); var m_DataDimension = FindProperty("m_ShowDataDimension"); var m_ShowDataName = FindProperty("m_ShowDataName"); PropertyField(m_ShowDataName); PropertyField(m_DataDimension); var listSize = m_Datas.arraySize; listSize = EditorGUILayout.IntField("Size", listSize); if (listSize < 0) { listSize = 0; } if (m_DataDimension.intValue < 1) { m_DataDimension.intValue = 1; } int dimension = m_DataDimension.intValue; bool showName = m_ShowDataName.boolValue; if (listSize != m_Datas.arraySize) { while (listSize > m_Datas.arraySize) { m_Datas.arraySize++; } while (listSize < m_Datas.arraySize) { m_Datas.arraySize--; } } if (listSize > 30) // && !XCSettings.editorShowAllListData) { int num = listSize > 10 ? 10 : listSize; for (int i = 0; i < num; i++) { DrawSerieData(dimension, m_Datas, i, showName); } if (num >= 10) { ChartEditorHelper.DrawHeader("... ", false, false, null, null); DrawSerieData(dimension, m_Datas, listSize - 1, showName); } } else { for (int i = 0; i < m_Datas.arraySize; i++) { DrawSerieData(dimension, m_Datas, i, showName); } } EditorGUI.indentLevel--; }
private void DrawSerieData(int dimension, SerializedProperty m_Datas, int index, bool showName) { bool flag; if (!m_DataElementFoldout.TryGetValue(index, out flag)) { flag = false; m_DataElementFoldout[index] = false; } var fieldCount = dimension + (showName ? 1 : 0); m_DataElementFoldout[index] = ChartEditorHelper.DrawHeader("SerieData " + index, flag, false, null, delegate(Rect drawRect) { //drawRect.width -= 2f; var maxX = drawRect.xMax; var currentWidth = drawRect.width; var lastX = drawRect.x; var lastWid = drawRect.width; var lastFieldWid = EditorGUIUtility.fieldWidth; var lastLabelWid = EditorGUIUtility.labelWidth; var serieData = m_Datas.GetArrayElementAtIndex(index); var sereName = serieData.FindPropertyRelative("m_Name"); var data = serieData.FindPropertyRelative("m_Data"); #if UNITY_2019_3_OR_NEWER var gap = 2; var namegap = 3; #else var gap = 0; var namegap = 0; #endif if (fieldCount <= 1) { while (2 > data.arraySize) { var value = data.arraySize == 0 ? index : 0; data.arraySize++; data.GetArrayElementAtIndex(data.arraySize - 1).floatValue = value; } SerializedProperty element = data.GetArrayElementAtIndex(1); var startX = drawRect.x + EditorGUIUtility.labelWidth - EditorGUI.indentLevel * 15 + gap; drawRect.x = startX; drawRect.xMax = maxX; EditorGUI.PropertyField(drawRect, element, GUIContent.none); } else { var startX = drawRect.x + EditorGUIUtility.labelWidth - EditorGUI.indentLevel * 15 + gap; var dataWidTotal = (currentWidth - (startX + 20.5f + 1)); var dataWid = dataWidTotal / fieldCount; var xWid = dataWid - 2; for (int i = 0; i < dimension; i++) { var dataCount = i < 1 ? 2 : i + 1; while (dataCount > data.arraySize) { var value = data.arraySize == 0 ? index : 0; data.arraySize++; data.GetArrayElementAtIndex(data.arraySize - 1).floatValue = value; } drawRect.x = startX + i * xWid; drawRect.width = dataWid + 25; SerializedProperty element = data.GetArrayElementAtIndex(dimension <= 1 ? 1 : i); EditorGUI.PropertyField(drawRect, element, GUIContent.none); } if (showName) { drawRect.x = startX + (fieldCount - 1) * xWid; drawRect.width = dataWid + 40 + dimension * namegap - 2.5f; EditorGUI.PropertyField(drawRect, sereName, GUIContent.none); } EditorGUIUtility.fieldWidth = lastFieldWid; EditorGUIUtility.labelWidth = lastLabelWid; } }); if (m_DataElementFoldout[index]) { if (!(serie is ISimplifiedSerie)) { DrawSerieDataDetail(m_Datas, index); } } }