using System;
using UnityEditor;
using UnityEngine;
namespace Unity.VisualScripting
{
public class BackupPage : Page
{
public BackupPage() : base()
{
title = "Backup";
shortTitle = "Backup";
icon = BoltCore.Resources.LoadIcon("BackupPage.png");
}
protected bool createdBackup { get; private set; }
protected virtual string incentive { get; } = "We strongly suggest that you create frequent backups of your project if you don't use version control.";
protected virtual void OnCloseButtonGUI()
{
if (GUILayout.Button(completeLabel, Styles.closeButton))
{
Complete();
}
}
protected override void OnContentGUI()
{
GUILayout.BeginVertical(Styles.background, GUILayout.ExpandHeight(true));
LudiqGUI.FlexibleSpace();
LudiqGUI.FlexibleSpace();
var paragraph = incentive;
paragraph += " Here, you can create a zip of your assets folder automatically and store it under 'Project\u00a0/\u00a0Backups'.)";
LudiqGUI.BeginHorizontal();
LudiqGUI.FlexibleSpace();
GUILayout.Label(paragraph, LudiqStyles.centeredLabel, GUILayout.MaxWidth(370));
LudiqGUI.FlexibleSpace();
LudiqGUI.EndHorizontal();
LudiqGUI.FlexibleSpace();
LudiqGUI.BeginHorizontal();
LudiqGUI.FlexibleSpace();
if (GUILayout.Button("Create Backup", Styles.createBackupButton))
{
try
{
BackupUtility.BackupAssetsFolder();
createdBackup = true;
}
catch (Exception ex)
{
EditorUtility.DisplayDialog("Backup Error", "Failed to create backup:\n\n" + ex.Message, "OK");
}
}
LudiqGUI.FlexibleSpace();
LudiqGUI.EndHorizontal();
LudiqGUI.Space(10);
if (createdBackup)
{
GUILayout.Label(new GUIContent(" Backup created", BoltCore.Icons.successState?[IconSize.Small]), Styles.backupCreatedLabel);
}
else
{
LudiqGUI.Space(Styles.backupCreatedLabel.fixedHeight + 2);
}
LudiqGUI.Space(10);
LudiqGUI.BeginHorizontal();
LudiqGUI.FlexibleSpace();
OnCloseButtonGUI();
LudiqGUI.FlexibleSpace();
LudiqGUI.EndHorizontal();
LudiqGUI.FlexibleSpace();
LudiqGUI.FlexibleSpace();
LudiqGUI.EndVertical();
}
public static class Styles
{
static Styles()
{
background = new GUIStyle(LudiqStyles.windowBackground);
background.padding = new RectOffset(20, 20, 10, 10);
createBackupButton = new GUIStyle("Button");
createBackupButton.padding = new RectOffset(20, 20, 10, 10);
backupCreatedLabel = new GUIStyle(LudiqStyles.centeredLabel);
backupCreatedLabel.fixedHeight = IconSize.Small;
backupCreatedLabel.margin = new RectOffset();
backupCreatedLabel.padding = new RectOffset();
closeButton = new GUIStyle("Button");
closeButton.padding = new RectOffset(12, 12, 7, 7);
}
public static readonly GUIStyle background;
public static readonly GUIStyle createBackupButton;
public static readonly GUIStyle backupCreatedLabel;
public static readonly GUIStyle closeButton;
}
}
}