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); }
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); }
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); }
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); }