No Description
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

DrawActionHelpBox.cs 1.8KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. using System;
  2. using UnityEditor;
  3. using UnityEngine;
  4. namespace Unity.PlasticSCM.Editor.UI
  5. {
  6. internal static class DrawActionHelpBox
  7. {
  8. internal static void For(
  9. Texture image,
  10. string labelText,
  11. string buttonText,
  12. Action buttonAction)
  13. {
  14. EditorGUILayout.BeginHorizontal(
  15. EditorStyles.helpBox, GUILayout.MinHeight(40));
  16. DoNotificationLabel(image, labelText);
  17. GUILayout.Space(10);
  18. DoActionButton(buttonText, buttonAction);
  19. GUILayout.FlexibleSpace();
  20. EditorGUILayout.EndHorizontal();
  21. }
  22. static void DoNotificationLabel(
  23. Texture image, string labelText)
  24. {
  25. GUILayout.BeginVertical();
  26. GUILayout.FlexibleSpace();
  27. GUILayout.Label(
  28. new GUIContent(labelText, image),
  29. UnityStyles.HelpBoxLabel);
  30. GUILayout.FlexibleSpace();
  31. GUILayout.EndVertical();
  32. }
  33. static void DoActionButton(
  34. string buttonText, Action buttonAction)
  35. {
  36. GUILayout.BeginVertical();
  37. GUILayout.FlexibleSpace();
  38. GUIContent buttonContent = new GUIContent(buttonText);
  39. float width = GetButtonWidth(
  40. buttonContent, EditorStyles.miniButton);
  41. if (GUILayout.Button(
  42. buttonContent, EditorStyles.miniButton,
  43. GUILayout.MinWidth(Math.Max(50, width))))
  44. {
  45. buttonAction();
  46. }
  47. GUILayout.FlexibleSpace();
  48. GUILayout.EndVertical();
  49. }
  50. static float GetButtonWidth(
  51. GUIContent buttonContent, GUIStyle buttonStyle)
  52. {
  53. return buttonStyle.CalcSize(buttonContent).x + 10;
  54. }
  55. }
  56. }