From ea13f674bc12f0b559e0902a50e54920b7d254df Mon Sep 17 00:00:00 2001 From: monitor1394 Date: Mon, 22 Mar 2021 03:26:16 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0`Theme`=E7=9A=84`Unbind`?= =?UTF-8?q?=E6=8C=89=E9=92=AE=E7=94=A8=E4=BA=8E=E8=A7=A3=E7=BB=91=E5=A4=8D?= =?UTF-8?q?=E5=88=B6=E5=9B=BE=E8=A1=A8=E6=97=B6=E7=9A=84=E4=B8=BB=E9=A2=98?= =?UTF-8?q?=20#118?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG-EN.md | 1 + CHANGELOG.md | 1 + Editor/PropertyDrawers/ThemeDrawer.cs | 10 ++++++++-- Runtime/API/BaseChart_API.cs | 9 ++++++++- Runtime/Component/Theme/ChartTheme.cs | 11 +++++++++++ 5 files changed, 29 insertions(+), 3 deletions(-) diff --git a/CHANGELOG-EN.md b/CHANGELOG-EN.md index ff2b32cc..f257937a 100644 --- a/CHANGELOG-EN.md +++ b/CHANGELOG-EN.md @@ -32,6 +32,7 @@ ## Latest +* (2021.03.22) Added `Theme` `Unbind` button to unbind theme when copying chart #118 * (2021.03.18) Fixed an issue where the check box after `Foldout` in `Inspector` could not be checked * (2021.03.18) Fixed an issue with `BarChart` displaying an exception in the `0` value * (2021.03.14) Fixed `Tooltip` indicator was not indicating the correct location in some cases diff --git a/CHANGELOG.md b/CHANGELOG.md index 1055b00c..095c5502 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -32,6 +32,7 @@ ## Latest +* (2021.03.22) 增加`Theme`的`Unbind`按钮用于解绑复制图表时的主题 #118 * (2021.03.18) 修复`Inspector`下`Foldout`后的勾选框无法选中的问题 * (2021.03.18) 修复`BarChart`在`0`数值时显示异常的问题 * (2021.03.14) 修复`Tooltip`的指示器在某些情况下指示位置不准的问题 diff --git a/Editor/PropertyDrawers/ThemeDrawer.cs b/Editor/PropertyDrawers/ThemeDrawer.cs index 0c749c1e..ef6b3e46 100644 --- a/Editor/PropertyDrawers/ThemeDrawer.cs +++ b/Editor/PropertyDrawers/ThemeDrawer.cs @@ -29,12 +29,12 @@ namespace XCharts base.OnGUI(pos, prop, label); var defaultWidth = pos.width; var defaultX = pos.x; - var btnWidth = 45; + var btnWidth = 50; ChartEditorHelper.MakeFoldout(ref m_DrawRect, ref m_ThemeModuleToggle, "Theme"); m_Heights[m_KeyName] += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing; if (m_ThemeModuleToggle) { - m_DrawRect.x = defaultX + defaultWidth - 2 * btnWidth - 2; + m_DrawRect.x = defaultX + defaultWidth - 3 * btnWidth - 2; m_DrawRect.width = btnWidth; var chart = prop.serializedObject.targetObject as BaseChart; var lastFont = chart.theme.font; @@ -46,6 +46,12 @@ namespace XCharts chart.theme.ResetTheme(); chart.RefreshAllComponent(); } + m_DrawRect.x = defaultX + defaultWidth - 2 * btnWidth - 2; + m_DrawRect.width = btnWidth; + if (GUI.Button(m_DrawRect, new GUIContent("Unbind", "Unbind the Theme from another chart"))) + { + chart.UnbindTheme(); + } m_DrawRect.x = defaultX + defaultWidth - btnWidth; m_DrawRect.width = btnWidth; if (GUI.Button(m_DrawRect, new GUIContent("Export", "Export theme to asset for a new theme"))) diff --git a/Runtime/API/BaseChart_API.cs b/Runtime/API/BaseChart_API.cs index 924cb98d..c7179e7e 100644 --- a/Runtime/API/BaseChart_API.cs +++ b/Runtime/API/BaseChart_API.cs @@ -319,7 +319,7 @@ namespace XCharts } public virtual SerieData AddData(int serieIndex, float open, float close, float lowest, float heighest, string dataName = null) { - var serieData = m_Series.AddData(serieIndex, open, close, lowest,heighest, dataName); + var serieData = m_Series.AddData(serieIndex, open, close, lowest, heighest, dataName); if (serieData != null) { var serie = m_Series.GetSerie(serieIndex); @@ -708,5 +708,12 @@ namespace XCharts { return SeriesHelper.ContainsSerie(m_Series, serieType); } + + public void UnbindTheme() + { + var theme = m_Theme.CloneTheme(); + m_Theme = theme; + RefreshChart(); + } } } diff --git a/Runtime/Component/Theme/ChartTheme.cs b/Runtime/Component/Theme/ChartTheme.cs index 9da6e38c..93524c5c 100644 --- a/Runtime/Component/Theme/ChartTheme.cs +++ b/Runtime/Component/Theme/ChartTheme.cs @@ -304,6 +304,17 @@ namespace XCharts } } + /// + /// 克隆主题。 + /// + /// + public ChartTheme CloneTheme() + { + var theme = ScriptableObject.CreateInstance(); + InitChartComponentTheme(theme); + theme.CopyTheme(this); + return theme; + } ///