Created unity project
This commit is contained in:
@@ -0,0 +1,139 @@
|
||||
using System;
|
||||
using System.Globalization;
|
||||
using System.Linq;
|
||||
|
||||
using UnityEditor;
|
||||
using UnityEditor.IMGUI.Controls;
|
||||
|
||||
using Codice.LogWrapper;
|
||||
|
||||
namespace Unity.PlasticSCM.Editor.UI.Tree
|
||||
{
|
||||
internal static class TreeHeaderSettings
|
||||
{
|
||||
internal static void Load(
|
||||
MultiColumnHeaderState headerState,
|
||||
string treeSettingsName,
|
||||
int defaultSortColumnIdx,
|
||||
bool defaultSortedAscending = true)
|
||||
{
|
||||
int[] visibleColumns;
|
||||
float[] columnWidths;
|
||||
|
||||
GetColumnsSettings(treeSettingsName, headerState.columns.Length,
|
||||
out visibleColumns, out columnWidths);
|
||||
|
||||
if (visibleColumns.Length > 0)
|
||||
headerState.visibleColumns = visibleColumns;
|
||||
|
||||
if (headerState.columns.Length == columnWidths.Length)
|
||||
TreeHeaderColumns.SetWidths(headerState.columns, columnWidths);
|
||||
|
||||
if (defaultSortColumnIdx == UnityConstants.UNSORT_COLUMN_ID)
|
||||
return;
|
||||
|
||||
var sortColumnIdx = EditorPrefs.GetInt(
|
||||
GetSettingKey(treeSettingsName, SORT_COLUMN_INDEX_KEY),
|
||||
defaultSortColumnIdx);
|
||||
|
||||
if (sortColumnIdx < 0 || sortColumnIdx >= headerState.columns.Length)
|
||||
sortColumnIdx = defaultSortColumnIdx;
|
||||
|
||||
var sortColumnAscending = EditorPrefs.GetBool(
|
||||
GetSettingKey(treeSettingsName, SORT_ASCENDING_KEY),
|
||||
defaultSortedAscending);
|
||||
|
||||
headerState.sortedColumnIndex = sortColumnIdx;
|
||||
headerState.columns[sortColumnIdx].sortedAscending = sortColumnAscending;
|
||||
}
|
||||
|
||||
internal static void Save(
|
||||
MultiColumnHeaderState headerState,
|
||||
string treeSettingsName)
|
||||
{
|
||||
int[] visibleColumns = headerState.visibleColumns;
|
||||
float[] columnWidths = TreeHeaderColumns.GetWidths(headerState.columns);
|
||||
|
||||
EditorPrefs.SetString(
|
||||
GetSettingKey(treeSettingsName, VISIBLE_COLUMNS_KEY),
|
||||
string.Join(",", visibleColumns.Select(idx => idx.ToString()).ToArray()));
|
||||
|
||||
EditorPrefs.SetString(
|
||||
GetSettingKey(treeSettingsName, COLUMNS_WIDTHS_KEY),
|
||||
string.Join(",", columnWidths
|
||||
.Select(w => w.ToString(CultureInfo.InvariantCulture))
|
||||
.ToArray()));
|
||||
|
||||
int sortColumnIdx = headerState.sortedColumnIndex;
|
||||
|
||||
if (sortColumnIdx == UnityConstants.UNSORT_COLUMN_ID)
|
||||
return;
|
||||
|
||||
bool sortColumnAscending = headerState.
|
||||
columns[headerState.sortedColumnIndex].sortedAscending;
|
||||
|
||||
EditorPrefs.SetInt(
|
||||
GetSettingKey(treeSettingsName, SORT_COLUMN_INDEX_KEY),
|
||||
sortColumnIdx);
|
||||
EditorPrefs.SetBool(
|
||||
GetSettingKey(treeSettingsName, SORT_ASCENDING_KEY),
|
||||
sortColumnAscending);
|
||||
}
|
||||
|
||||
internal static void Clear(string treeSettingsName)
|
||||
{
|
||||
EditorPrefs.DeleteKey(
|
||||
GetSettingKey(treeSettingsName, VISIBLE_COLUMNS_KEY));
|
||||
EditorPrefs.DeleteKey(
|
||||
GetSettingKey(treeSettingsName, COLUMNS_WIDTHS_KEY));
|
||||
EditorPrefs.DeleteKey(
|
||||
GetSettingKey(treeSettingsName, SORT_COLUMN_INDEX_KEY));
|
||||
EditorPrefs.DeleteKey(
|
||||
GetSettingKey(treeSettingsName, SORT_ASCENDING_KEY));
|
||||
}
|
||||
|
||||
static void GetColumnsSettings(string treeSettingsName,
|
||||
int headerColumnsLenght,
|
||||
out int[] visibleColumns,
|
||||
out float[] columnWidths)
|
||||
{
|
||||
try
|
||||
{
|
||||
visibleColumns = EditorPrefs.GetString(
|
||||
GetSettingKey(treeSettingsName, VISIBLE_COLUMNS_KEY), string.Empty)
|
||||
.Split(",".ToCharArray(), StringSplitOptions.RemoveEmptyEntries)
|
||||
.Select(idx => int.Parse(idx))
|
||||
.Where(idx => idx >= 0 && idx < headerColumnsLenght)
|
||||
.ToArray();
|
||||
|
||||
columnWidths = EditorPrefs.GetString(
|
||||
GetSettingKey(treeSettingsName, COLUMNS_WIDTHS_KEY), string.Empty)
|
||||
.Split(",".ToCharArray(), StringSplitOptions.RemoveEmptyEntries)
|
||||
.Select(w => float.Parse(w, CultureInfo.InvariantCulture))
|
||||
.ToArray();
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
mLog.ErrorFormat("Unable to read TreeHeaderSettings: {0}",
|
||||
ex.Message);
|
||||
mLog.DebugFormat("Stack tracke:{0}{1}",
|
||||
Environment.NewLine, ex.StackTrace);
|
||||
|
||||
visibleColumns = new int[0];
|
||||
columnWidths = new float[0];
|
||||
}
|
||||
}
|
||||
|
||||
static string GetSettingKey(string treeSettingsName, string key)
|
||||
{
|
||||
return string.Format(treeSettingsName, PlayerSettings.productGUID, key);
|
||||
}
|
||||
|
||||
static string VISIBLE_COLUMNS_KEY = "VisibleColumns";
|
||||
static string COLUMNS_WIDTHS_KEY = "ColumnWidths";
|
||||
static string SORT_COLUMN_INDEX_KEY = "SortColumnIdx";
|
||||
static string SORT_ASCENDING_KEY = "SortAscending";
|
||||
|
||||
static readonly ILog mLog = PlasticApp.GetLogger("TreeHeaderSettings");
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user