void DeleteCompletedTasks(ref ToDoMiniData data) { Undo.RecordObject(data, "Delete completed tasks"); data.DeleteCompletedTasks(); EditorUtility.SetDirty(data); AssetDatabase.SaveAssets(); }
void ImportData(TextAsset import, ref ToDoMiniData existingData) { TodoMiniDataExport parsedData = (TodoMiniDataExport)JsonUtility.FromJson(import.text, typeof(TodoMiniDataExport)); Undo.RecordObject(existingData, "ToDo Mini import"); existingData.items.AddRange(parsedData.tasks); UpdateToDoWindow(); }
public override void OnInspectorGUI() { ToDoMiniData data = (ToDoMiniData)target; GUILayout.Space(5); GUILayout.Label("Settings", EditorStyles.boldLabel); GUILayout.Space(2); EditorGUI.BeginChangeCheck(); EditorGUILayout.PropertyField(serializedObject.FindProperty("displayDensity")); EditorGUILayout.PropertyField(serializedObject.FindProperty("keepCompletedTasks")); serializedObject.ApplyModifiedProperties(); if (EditorGUI.EndChangeCheck()) { if (!data.keepCompletedTasks) { DeleteCompletedTasks(ref data); } UpdateToDoWindow(); } // Clear completed tasks. if (GUILayout.Button("☑ Delete completed tasks")) { DeleteCompletedTasks(ref data); UpdateToDoWindow(); } // Clear all tasks. GUILayout.Space(2); if (GUILayout.Button("✖ Delete all tasks")) { Undo.RecordObject(data, "Delete all tasks"); data.items.Clear(); EditorUtility.SetDirty(data); UpdateToDoWindow(); } // Import/export. GUILayout.Space(10); GUILayout.Label("Import/export", EditorStyles.boldLabel); GUILayout.BeginHorizontal(); // Import tasks. DrawDropArea("Import (drop a file here)", (TextAsset droppedTextAsset) => ImportData(droppedTextAsset, ref data)); GUILayout.Space(5); // Export tasks. GUIStyle buttonStyle = new GUIStyle(GUI.skin.button); buttonStyle.margin = new RectOffset(); if (GUILayout.Button("Export", buttonStyle, GUILayout.Height(30))) { ExportData(ref data); } GUILayout.EndHorizontal(); }
void ExportData(ref ToDoMiniData data) { string dataInJson = JsonUtility.ToJson(new TodoMiniDataExport(data)); string fileName = GetSafeFileName(SavingDirectory, exportFileName); File.WriteAllText(SavingDirectory + fileName, dataInJson); AssetDatabase.Refresh(); EditorGUIUtility.PingObject(AssetDatabase.LoadAssetAtPath(assetsSubdirectory + fileName, typeof(UnityEngine.Object))); }
public TodoMiniDataExport(ToDoMiniData data) { tasks = data.items; }