private GroupView CreateGroupView(ArtGroup artGroup, string iconName)
        {
            var groupView = new GroupView(artGroup, iconName);

            GroupViews[(int)artGroup.artGroupTag] = groupView;
            return(groupView);
        }
        /// <summary>
        /// Settings for single group
        /// </summary>
        private void RenderGroup(GroupView groupView)
        {
            var group = groupView.artGroup;

            GUILayout.BeginHorizontal();
            // -- 0 ---------------------------------------------------
            GUILayout.Box(groupView.icon, ButtonStyle, IconWidthOption, IconHeightOption);
            // -- 1 ---------------------------------------------------
            var isVisible = group.IsVisible;

            if (GUILayout.Button(isVisible ? VisibleIcon : InvisibleIcon, ButtonStyle, IconWidthOption, IconHeightOption))
            {
                group.IsVisible = !isVisible;
            }
            // -- 2 ---------------------------------------------------
            GUILayout.Box("", ButtonStyle, IconWidthOption, IconHeightOption);
            // -- 3 ---------------------------------------------------
            GUILayout.Label(group.artGroupTag.ToString(), EditorStyles.boldLabel);
            // -- 4 ---------------------------------------------------
            GUILayout.Label(groupView.Quantity.ToString(), EditorStyles.boldLabel, QuantityWidthOption);
            GUILayout.EndHorizontal();

            var categories = groupView.categories;
            var count      = categories.Length;

            for (var i = 0; i < count; i++)
            {
                var category = categories[i];
                if (category.isOptional && category.quantity == 0)
                {
                    continue;
                }
                RenderCategory(category);
            }

            GUILayout.Box("", new GUILayoutOption[] { GUILayout.ExpandWidth(true), GUILayout.Height(1) });
        }