public static void UpdateHolderThemes(ImageThemeHolder imageHolder)
    {
        if (_themeTypeList == null || _themeTypeList.Count == 0)
        {
            CheckSavedFile();
        }

        List <ImageThemeInfo> tempList = new List <ImageThemeInfo>(imageHolder.ThemeInfoList);

        //Removal of old themes
        foreach (var item in tempList)
        {
            if (!_themeTypeList.Contains(item.ThemeName))
            {
                imageHolder.ThemeInfoList.Remove(item);
            }
        }

        //Adding newly created themes
        foreach (var themeName in _themeTypeList)
        {
            if (imageHolder.ThemeInfoList.Find(t => t.ThemeName == themeName) != null)
            {
                continue;
            }

            ImageThemeInfo newThemeImageHolder = new ImageThemeInfo();
            newThemeImageHolder.ThemeName   = themeName;
            newThemeImageHolder.SpritePath  = "";
            newThemeImageHolder.SpriteColor = Color.white;

            imageHolder.ThemeInfoList.Add(newThemeImageHolder);
        }
    }
    public void SetImageAndColor(int themeType)
    {
        ImageThemeInfo appThemeInfo = ThemeInfoList[themeType];

        if (appThemeInfo == null || string.IsNullOrEmpty(appThemeInfo.SpritePath))
        {
            if (EnableDebug)
            {
                Debug.Log("Empty Sprite: NAME: " + name + " THEME: " + themeType);
            }

            return;
        }

        string resourcesRelatedPath = appThemeInfo.SpritePath.Split(new string[] { "Resources/" }, System.StringSplitOptions.None)[1];
        string ext = Path.GetExtension(resourcesRelatedPath);

        resourcesRelatedPath = resourcesRelatedPath.Replace(ext, "");

        Sprite sprite = Resources.Load <Sprite>(resourcesRelatedPath);

        if (EnableDebug)
        {
            Debug.Log("Full Path: " + appThemeInfo.SpritePath);
            Debug.Log("Resources Related Path: " + resourcesRelatedPath);
        }

        _image.sprite = sprite;
        _image.color  = appThemeInfo.SpriteColor;

        _image.SetNativeSize();
    }
    public static GUIContent GetButtonContent(ImageThemeInfo holder, Sprite defaultSprite)
    {
        GUIContent buttonContent = new GUIContent(defaultSprite.texture);

        if (!string.IsNullOrEmpty(holder.SpritePath))
        {
            Sprite targetSprite = AssetDatabase.LoadAssetAtPath <Sprite>(holder.SpritePath);

            if (targetSprite != null)
            {
                buttonContent = new GUIContent(targetSprite.texture);
            }
        }

        return(buttonContent);
    }
    public static string UpdateThemeHolderSpritePath(ImageThemeInfo holder)
    {
        string newAssetPath = holder.SpritePath;

        if (!string.IsNullOrEmpty(holder.SpritePath))
        {
            Sprite targetSprite = AssetDatabase.LoadAssetAtPath <Sprite>(holder.SpritePath);

            if (targetSprite == null)
            {
                string[] guids = AssetDatabase.FindAssets(holder.SpriteName + " t:Sprite");

                if (guids.Length > 0)
                {
                    string targetGuid = guids[0];

                    newAssetPath = AssetDatabase.GUIDToAssetPath(targetGuid);
                }
            }
        }

        return(newAssetPath);
    }