Exemple #1
0
        private static bool DrawPreviewRow(int previewStepIndex, PreviewRowModel info, PreviewRowStyle style)
        {
            bool isDeleteClicked = false;

            var horizontalRect = EditorGUILayout.BeginHorizontal(GUILayout.Height(18.0f));

            var oldColor = GUI.color;

            GUI.color = style.BackgroundColor;
            GUI.DrawTexture(horizontalRect, Texture2D.whiteTexture);
            GUI.color = oldColor;

            // Space gives us a bit of padding or else we're just too bunched up to the side
            GUILayout.Space(4.0f);

            if (GUILayout.Button("x", EditorStyles.miniButton, GUILayout.Width(16.0f)))
            {
                isDeleteClicked = true;
            }

            if (info.WarningIcon != null)
            {
                var content = new GUIContent(info.WarningIcon, info.WarningMessage);
                GUILayout.Box(content, style.IconStyle, GUILayout.Width(16.0f), GUILayout.Height(16.0f));
            }

            GUILayout.Box(info.Icon, style.IconStyle, GUILayout.Width(16.0f), GUILayout.Height(16.0f));

            if (style.FirstColumnWidth > 0)
            {
                var originalName = previewStepIndex >= 0 && previewStepIndex < info.RenameResultSequence.NumSteps ?
                                   info.RenameResultSequence.GetOriginalNameAtStep(previewStepIndex, style.DeletionColor) :
                                   info.RenameResultSequence.OriginalName;
                EditorGUILayout.LabelField(originalName, style.FirstColumnStyle, GUILayout.Width(style.FirstColumnWidth));
            }

            if (style.SecondColumnWidth > 0)
            {
                var newName = previewStepIndex >= 0 && previewStepIndex < info.RenameResultSequence.NumSteps ?
                              info.RenameResultSequence.GetNewNameAtStep(previewStepIndex, style.InsertionColor) :
                              info.RenameResultSequence.NewName;
                EditorGUILayout.LabelField(newName, style.SecondColumnStyle, GUILayout.Width(style.SecondColumnWidth));
            }

            if (style.ThirdColumnWidth > 0)
            {
                EditorGUILayout.LabelField(info.RenameResultSequence.NewName, style.ThirdColumnStyle, GUILayout.Width(style.ThirdColumnWidth));
            }

            GUILayout.FlexibleSpace();

            EditorGUILayout.EndHorizontal();

            return(isDeleteClicked);
        }
Exemple #2
0
            public static PreviewPanelContents CreatePreviewContentsForObjects(BulkRenamePreview preview)
            {
                var previewPanelContents = new PreviewPanelContents();

                previewPanelContents.PreviewRowInfos = new PreviewRowModel[preview.NumObjects];
                for (int i = 0; i < preview.NumObjects; ++i)
                {
                    var info            = new PreviewRowModel();
                    var previewForIndex = preview.GetPreviewAtIndex(i);
                    info.RenameResultSequence = previewForIndex.RenameResultSequence;
                    info.Icon = previewForIndex.ObjectToRename.GetEditorIcon();

                    if (previewForIndex.HasWarnings)
                    {
                        info.WarningIcon    = (Texture2D)EditorGUIUtility.Load("icons/console.warnicon.sml.png");
                        info.WarningMessage = previewForIndex.WarningMessage;
                    }
                    else
                    {
                        info.WarningIcon    = null;
                        info.WarningMessage = string.Empty;
                    }

                    previewPanelContents.PreviewRowInfos[i] = info;
                }

                float paddingScaleForBold = 1.11f;

                previewPanelContents.LongestOriginalNameWidth = 0.0f;
                previewPanelContents.LongestNewNameWidth      = 0.0f;
                foreach (var previewRowInfo in previewPanelContents.PreviewRowInfos)
                {
                    float originalNameWidth = GUI.skin.label.CalcSize(
                        new GUIContent(previewRowInfo.RenameResultSequence.OriginalName)).x *paddingScaleForBold;
                    if (originalNameWidth > previewPanelContents.LongestOriginalNameWidth)
                    {
                        previewPanelContents.LongestOriginalNameWidth = originalNameWidth;
                    }

                    float newNameWidth = GUI.skin.label.CalcSize(
                        new GUIContent(previewRowInfo.RenameResultSequence.NewName)).x *paddingScaleForBold;
                    if (newNameWidth > previewPanelContents.LongestNewNameWidth)
                    {
                        previewPanelContents.LongestNewNameWidth = newNameWidth;
                    }
                }

                previewPanelContents.LongestOriginalNameWidth = Mathf.Max(MinColumnWidth, previewPanelContents.LongestOriginalNameWidth);
                previewPanelContents.LongestNewNameWidth      = Mathf.Max(MinColumnWidth, previewPanelContents.LongestNewNameWidth);
                previewPanelContents.LongestFinalNameWidth    = previewPanelContents.LongestNewNameWidth;

                return(previewPanelContents);
            }
            public static PreviewPanelContents CreatePreviewContentsForObjects(
                RenameOperationSequence <RenameOperation> renameSequence,
                List <UnityEngine.Object> objects)
            {
                var preview = new PreviewPanelContents();

                preview.PreviewRowInfos = new PreviewRowModel[objects.Count];

                for (int i = 0; i < preview.PreviewRowInfos.Length; ++i)
                {
                    var info         = new PreviewRowModel();
                    var originalName = objects[i].name;
                    info.RenameResultSequence = renameSequence.GetRenamePreview(originalName, i);

                    info.Icon = GetIconForObject(objects[i]);

                    preview.PreviewRowInfos[i] = info;
                }

                float paddingScaleForBold = 1.11f;

                preview.LongestOriginalNameWidth = 0.0f;
                preview.LongestNewNameWidth      = 0.0f;
                foreach (var previewRowInfo in preview.PreviewRowInfos)
                {
                    float originalNameWidth = GUI.skin.label.CalcSize(new GUIContent(previewRowInfo.RenameResultSequence.OriginalName)).x *paddingScaleForBold;
                    if (originalNameWidth > preview.LongestOriginalNameWidth)
                    {
                        preview.LongestOriginalNameWidth = originalNameWidth;
                    }

                    float newNameWidth = GUI.skin.label.CalcSize(new GUIContent(previewRowInfo.RenameResultSequence.NewName)).x *paddingScaleForBold;
                    if (newNameWidth > preview.LongestNewNameWidth)
                    {
                        preview.LongestNewNameWidth = newNameWidth;
                    }
                }

                preview.LongestOriginalNameWidth = Mathf.Max(MinColumnWidth, preview.LongestOriginalNameWidth);
                preview.LongestNewNameWidth      = Mathf.Max(MinColumnWidth, preview.LongestNewNameWidth);
                preview.LongestFinalNameWidth    = preview.LongestNewNameWidth;

                return(preview);
            }
Exemple #4
0
        private static bool DrawPreviewRow(Rect rowRect, PreviewRowModel info, PreviewRowStyle style)
        {
            bool isDeleteClicked = false;

            var oldColor = GUI.color;

            GUI.color = style.BackgroundColor;
            GUI.DrawTexture(rowRect, Texture2D.whiteTexture);
            GUI.color = oldColor;

            // Space gives us a bit of padding or else we're just too bunched up to the side
            var deleteButtonRect = new Rect(rowRect);

            deleteButtonRect.x     += 4.0f;
            deleteButtonRect.width  = 16.0f;
            deleteButtonRect.height = 16.0f;
            deleteButtonRect.y     += Mathf.Max(0, (rowRect.height - deleteButtonRect.height) / 2.0f);
            if (GUI.Button(deleteButtonRect, "x", EditorStyles.miniButton))
            {
                isDeleteClicked = true;
            }

            var warningRect = new Rect(deleteButtonRect);

            warningRect.y      = rowRect.y;
            warningRect.x     += deleteButtonRect.width;
            warningRect.width  = 16.0f;
            warningRect.height = 16.0f;
            if (info.WarningIcon != null)
            {
                var content = new GUIContent(info.WarningIcon, info.WarningMessage);
                GUI.Box(warningRect, content, style.IconStyle);
            }

            var iconRect = new Rect(warningRect);

            iconRect.x     += warningRect.width;
            iconRect.width  = 16.0f;
            iconRect.height = 16.0f;
            GUI.Box(iconRect, info.Icon, style.IconStyle);

            var firstColumnRect = new Rect(iconRect);

            firstColumnRect.x     += iconRect.width;
            firstColumnRect.width  = style.FirstColumnWidth;
            firstColumnRect.height = rowRect.height;
            if (style.FirstColumnWidth > 0)
            {
                EditorGUI.LabelField(firstColumnRect, info.NameBeforeStep, style.FirstColumnStyle);
            }

            var secondColumnRect = new Rect(firstColumnRect);

            secondColumnRect.x     += firstColumnRect.width;
            secondColumnRect.width  = style.SecondColumnWidth;
            secondColumnRect.height = rowRect.height;
            if (style.SecondColumnWidth > 0)
            {
                EditorGUI.LabelField(secondColumnRect, info.NameAtStep, style.SecondColumnStyle);
            }

            var thirdColumnRect = new Rect(secondColumnRect);

            thirdColumnRect.x     += secondColumnRect.width;
            thirdColumnRect.width  = style.ThirdColumnWidth;
            thirdColumnRect.height = rowRect.height;
            if (style.ThirdColumnWidth > 0)
            {
                EditorGUI.LabelField(thirdColumnRect, info.FinalName, style.ThirdColumnStyle);
            }

            return(isDeleteClicked);
        }
Exemple #5
0
            public static PreviewPanelContents CreatePreviewContentsForObjects(
                BulkRenamePreview preview,
                int firstPreviewIndex,
                int numObjectsToShow,
                int stepIndex,
                Color deletionColor,
                Color insertionColor)
            {
                var previewPanelContents = new PreviewPanelContents();
                var numVisibleObjects    = Mathf.Min(numObjectsToShow, preview.NumObjects);

                previewPanelContents.PreviewRowInfos = new PreviewRowModel[numVisibleObjects];

                for (int j = 0; j < numVisibleObjects && j < preview.NumObjects - firstPreviewIndex; ++j)
                {
                    var info = new PreviewRowModel();
                    var indexOfVisibleObject = firstPreviewIndex + j;
                    var previewForIndex      = preview.GetPreviewAtIndex(indexOfVisibleObject);
                    var originalName         = stepIndex >= 0 && stepIndex < preview.NumSteps ?
                                               previewForIndex.RenameResultSequence.GetNameBeforeAtStep(stepIndex, deletionColor) :
                                               previewForIndex.RenameResultSequence.OriginalName;
                    info.NameBeforeStep = originalName;

                    var nameAtStep = stepIndex >= 0 && stepIndex < preview.NumSteps ?
                                     previewForIndex.RenameResultSequence.GetNewNameAtStep(stepIndex, insertionColor) :
                                     previewForIndex.RenameResultSequence.NewName;
                    info.NameAtStep = nameAtStep;

                    info.FinalName = previewForIndex.RenameResultSequence.NewName;

                    info.Icon = previewForIndex.ObjectToRename.GetEditorIcon();

                    if (previewForIndex.HasWarnings || preview.WillRenameCollideWithExistingAsset(previewForIndex))
                    {
                        info.WarningIcon = (Texture2D)EditorGUIUtility.Load("icons/console.warnicon.sml.png");
                        if (previewForIndex.HasWarnings)
                        {
                            info.WarningMessage = GetWarningMessageForRenamePreview(previewForIndex);
                        }
                        else
                        {
                            info.WarningMessage = "New name matches an existing file or another renamed object.";
                        }
                    }
                    else
                    {
                        info.WarningIcon    = null;
                        info.WarningMessage = string.Empty;
                    }

                    info.IndexInPreview = indexOfVisibleObject;
                    previewPanelContents.PreviewRowInfos[j] = info;
                }

                // Note that CalcSize is very slow, so it is a problem to do it to the entire list of objects...
                // For now we only measure the ones that are visible. It causes the columns to resize as you scroll,
                // but that's not the worst.
                float paddingScaleForBold = 1.11f;

                previewPanelContents.LongestOriginalNameWidth = 0.0f;
                previewPanelContents.LongestNewNameWidth      = 0.0f;
                foreach (var previewRowInfo in previewPanelContents.PreviewRowInfos)
                {
                    var labelStyle = GUI.skin.label;
                    labelStyle.richText = true;
                    float originalNameWidth = labelStyle.CalcSize(
                        new GUIContent(previewRowInfo.NameBeforeStep)).x *paddingScaleForBold;
                    if (originalNameWidth > previewPanelContents.LongestOriginalNameWidth)
                    {
                        previewPanelContents.LongestOriginalNameWidth = originalNameWidth;
                    }

                    float newNameWidth = labelStyle.CalcSize(
                        new GUIContent(previewRowInfo.NameAtStep)).x *paddingScaleForBold;
                    if (newNameWidth > previewPanelContents.LongestNewNameWidth)
                    {
                        previewPanelContents.LongestNewNameWidth = newNameWidth;
                    }
                }

                previewPanelContents.LongestOriginalNameWidth = Mathf.Max(MinColumnWidth, previewPanelContents.LongestOriginalNameWidth);
                previewPanelContents.LongestNewNameWidth      = Mathf.Max(MinColumnWidth, previewPanelContents.LongestNewNameWidth);
                previewPanelContents.LongestFinalNameWidth    = previewPanelContents.LongestNewNameWidth;

                previewPanelContents.TotalNumRows = preview.NumObjects;

                return(previewPanelContents);
            }