PO/Library/PackageCache/com.unity.collab-proxy@1.9.0/Editor/PlasticSCM/UI/Images.cs

379 lines
11 KiB
C#

using System.IO;
using System.Reflection;
using UnityEditor;
using UnityEngine;
using Codice.LogWrapper;
using PlasticGui.Help;
using Unity.PlasticSCM.Editor.AssetUtils;
namespace Unity.PlasticSCM.Editor.UI
{
internal class Images
{
internal enum Name
{
None,
IconPlastic,
IconCloseButton,
IconPressedCloseButton,
IconAdded,
IconDeleted,
IconChanged,
IconMoved,
IconMergeLink,
Ignored,
IconMergeConflict,
IconMerged,
IconFsChanged,
IconMergeCategory,
XLink,
Ok,
NotOnDisk,
IconRepository,
IconPlasticView,
IconPlasticViewNotify,
Loading,
IconEmptyGravatar,
Step1,
Step2,
Step3,
StepOk,
ButtonSsoSignInUnity,
ButtonSsoSignInEmail,
ButtonSsoSignInGoogle,
}
internal static Texture2D GetHelpImage(HelpImage image)
{
// We use the dark version for both the light/dark skins since it matches the grey background better
string helpImageFileName = string.Format(
"d_{0}.png",
HelpImageName.FromHelpImage(image));
string imageRelativePath = GetImageFileRelativePath(helpImageFileName);
Texture2D result = TryLoadImage(imageRelativePath, imageRelativePath);
if (result != null)
return result;
mLog.WarnFormat("Image not found: {0}", helpImageFileName);
return GetEmptyImage();
}
internal static Texture2D GetImage(Name image)
{
string imageFileName = image.ToString().ToLower() + ".png";
string imageFileName2x = image.ToString().ToLower() + "@2x.png";
string darkImageFileName = string.Format("d_{0}", imageFileName);
string darkImageFileName2x = string.Format("d_{0}", imageFileName2x);
string imageFileRelativePath = GetImageFileRelativePath(imageFileName);
string imageFileRelativePath2x = GetImageFileRelativePath(imageFileName);
string darkImageFileRelativePath = GetImageFileRelativePath(darkImageFileName);
string darkImageFileRelativePath2x = GetImageFileRelativePath(darkImageFileName2x);
Texture2D result = null;
if (EditorGUIUtility.isProSkin)
result = TryLoadImage(darkImageFileRelativePath, darkImageFileRelativePath2x);
if (result != null)
return result;
result = TryLoadImage(imageFileRelativePath, imageFileRelativePath2x);
if (result != null)
return result;
mLog.WarnFormat("Image not found: {0}", imageFileName);
return GetEmptyImage();
}
internal static Texture GetFileIcon(string path)
{
string relativePath = GetRelativePath.ToApplication(path);
return GetFileIconFromRelativePath(relativePath);
}
internal static Texture GetFileIconFromCmPath(string path)
{
return GetFileIconFromRelativePath(
path.Substring(1).Replace("/",
Path.DirectorySeparatorChar.ToString()));
}
internal static Texture GetDropDownIcon()
{
if (mPopupIcon == null)
mPopupIcon = EditorGUIUtility.IconContent("icon dropdown").image;
return mPopupIcon;
}
internal static Texture GetDirectoryIcon()
{
if (mDirectoryIcon == null)
mDirectoryIcon = EditorGUIUtility.IconContent("Folder Icon").image;
return mDirectoryIcon;
}
internal static Texture GetPrivatedOverlayIcon()
{
if (mPrivatedOverlayIcon == null)
mPrivatedOverlayIcon = EditorGUIUtility.IconContent("P4_Local").image;
return mPrivatedOverlayIcon;
}
internal static Texture GetAddedOverlayIcon()
{
if (mAddedOverlayIcon == null)
mAddedOverlayIcon = EditorGUIUtility.IconContent("P4_AddedLocal").image;
return mAddedOverlayIcon;
}
internal static Texture GetDeletedOverlayIcon()
{
if (mDeletedOverlayIcon == null)
mDeletedOverlayIcon = EditorGUIUtility.IconContent("P4_DeletedLocal").image;
return mDeletedOverlayIcon;
}
internal static Texture GetCheckedOutOverlayIcon()
{
if (mCheckedOutOverlayIcon == null)
mCheckedOutOverlayIcon = EditorGUIUtility.IconContent("P4_CheckOutLocal").image;
return mCheckedOutOverlayIcon;
}
internal static Texture GetDeletedRemoteOverlayIcon()
{
if (mDeletedRemoteOverlayIcon == null)
mDeletedRemoteOverlayIcon = EditorGUIUtility.IconContent("P4_DeletedRemote").image;
return mDeletedRemoteOverlayIcon;
}
internal static Texture GetOutOfSyncOverlayIcon()
{
if (mOutOfSyncOverlayIcon == null)
mOutOfSyncOverlayIcon = EditorGUIUtility.IconContent("P4_OutOfSync").image;
return mOutOfSyncOverlayIcon;
}
internal static Texture GetConflictedOverlayIcon()
{
if (mConflictedOverlayIcon == null)
mConflictedOverlayIcon = EditorGUIUtility.IconContent("P4_Conflicted").image;
return mConflictedOverlayIcon;
}
internal static Texture GetLockedLocalOverlayIcon()
{
if (mLockedLocalOverlayIcon == null)
mLockedLocalOverlayIcon = EditorGUIUtility.IconContent("P4_LockedLocal").image;
return mLockedLocalOverlayIcon;
}
internal static Texture GetLockedRemoteOverlayIcon()
{
if (mLockedRemoteOverlayIcon == null)
mLockedRemoteOverlayIcon = EditorGUIUtility.IconContent("P4_LockedRemote").image;
return mLockedRemoteOverlayIcon;
}
internal static Texture GetWarnIcon()
{
if (mWarnIcon == null)
mWarnIcon = EditorGUIUtility.IconContent("console.warnicon.sml").image;
return mWarnIcon;
}
internal static Texture GetInfoIcon()
{
if (mInfoIcon == null)
mInfoIcon = EditorGUIUtility.IconContent("console.infoicon.sml").image;
return mInfoIcon;
}
internal static Texture GetErrorDialogIcon()
{
if (mErrorDialogIcon == null)
mErrorDialogIcon = EditorGUIUtility.IconContent("console.erroricon").image;
return mErrorDialogIcon;
}
internal static Texture GetWarnDialogIcon()
{
if (mWarnDialogIcon == null)
mWarnDialogIcon = EditorGUIUtility.IconContent("console.warnicon").image;
return mWarnDialogIcon;
}
internal static Texture GetInfoDialogIcon()
{
if (mInfoDialogIcon == null)
mInfoDialogIcon = EditorGUIUtility.IconContent("console.infoicon").image;
return mInfoDialogIcon;
}
internal static Texture GetRefreshIcon()
{
if (mRefreshIcon == null)
mRefreshIcon = EditorGUIUtility.FindTexture("Refresh");
return mRefreshIcon;
}
internal static Texture GetCloseIcon()
{
if (mCloseIcon == null)
mCloseIcon = EditorGUIUtility.FindTexture("winbtn_win_close");
return mCloseIcon;
}
internal static Texture GetClickedCloseIcon()
{
if (mClickedCloseIcon == null)
mClickedCloseIcon = EditorGUIUtility.FindTexture("winbtn_win_close_a");
return mClickedCloseIcon;
}
internal static Texture GetHoveredCloseIcon()
{
if (mHoveredCloseIcon == null)
mHoveredCloseIcon = EditorGUIUtility.FindTexture("winbtn_win_close_h");
return mHoveredCloseIcon;
}
internal static Texture GetFileIcon()
{
if (mFileIcon == null)
mFileIcon = EditorGUIUtility.FindTexture("DefaultAsset Icon");
if (mFileIcon == null)
mFileIcon = AssetPreview.GetMiniTypeThumbnail(typeof(DefaultAsset));
if (mFileIcon == null)
mFileIcon = GetEmptyImage();
return mFileIcon;
}
internal static Texture2D GetLinkUnderlineImage()
{
if (mLinkUnderlineImage == null)
{
mLinkUnderlineImage = new Texture2D(1, 1);
mLinkUnderlineImage.SetPixel(0, 0, UnityStyles.Colors.Link);
mLinkUnderlineImage.Apply();
}
return mLinkUnderlineImage;
}
static Texture2D GetEmptyImage()
{
if (mEmptyImage == null)
{
mEmptyImage = new Texture2D(1, 1);
mEmptyImage.SetPixel(0, 0, Color.clear);
mEmptyImage.Apply();
}
return mEmptyImage;
}
static Texture GetFileIconFromRelativePath(string relativePath)
{
Texture result = AssetDatabase.GetCachedIcon(relativePath);
if (result == null)
return GetFileIcon();
return result;
}
static string GetImageFileRelativePath(string imageFileName)
{
return Path.Combine(
AssetsPath.GetImagesFolderRelativePath(),
imageFileName);
}
static Texture2D TryLoadImage(string imageFileRelativePath, string image2xFilePath)
{
if (EditorGUIUtility.pixelsPerPoint > 1f && File.Exists(image2xFilePath))
return LoadTextureFromFile(image2xFilePath);
if (File.Exists(Path.GetFullPath(imageFileRelativePath)))
return LoadTextureFromFile(imageFileRelativePath);
return null;
}
static Texture2D LoadTextureFromFile(string path)
{
byte[] fileData = File.ReadAllBytes(path);
Texture2D result = new Texture2D(1, 1);
result.LoadImage(fileData); //auto-resizes the texture dimensions
return result;
}
static Texture mFileIcon;
static Texture mDirectoryIcon;
static Texture mPrivatedOverlayIcon;
static Texture mAddedOverlayIcon;
static Texture mDeletedOverlayIcon;
static Texture mCheckedOutOverlayIcon;
static Texture mDeletedRemoteOverlayIcon;
static Texture mOutOfSyncOverlayIcon;
static Texture mConflictedOverlayIcon;
static Texture mLockedLocalOverlayIcon;
static Texture mLockedRemoteOverlayIcon;
static Texture mWarnIcon;
static Texture mInfoIcon;
static Texture mErrorDialogIcon;
static Texture mWarnDialogIcon;
static Texture mInfoDialogIcon;
static Texture mRefreshIcon;
static Texture mCloseIcon;
static Texture mClickedCloseIcon;
static Texture mHoveredCloseIcon;
static Texture2D mLinkUnderlineImage;
static Texture2D mEmptyImage;
static Texture mPopupIcon;
static readonly ILog mLog = LogManager.GetLogger("Images");
}
}