Ejemplo n.º 1
0
    void OnEnable()
    {
        if (build == null || !IsDirty())
        {
            if (File.Exists(kXmlPath))
            {
                build = Build.FromXML(File.ReadAllText(kXmlPath));
            }
            else
            {
                build = new Build();

                Version v = new Version();
                v.build = 1;
                v.date  = DateTime.Now;
                build.versions.Add(v);
            }
        }
        expanded.Clear();
    }
Ejemplo n.º 2
0
    void OnGUI()
    {
        float buttonWidth = 100f;
        float padding     = 10f;

        GUILayout.BeginArea(new Rect(padding, padding, position.width - padding * 2f, position.height - padding * 2f));

        EditorGUILayout.BeginHorizontal();
        GUILayout.Label("Version");
        if (GUILayout.Button("+", EditorStyles.miniButton))
        {
            Version v = new Version();
            v.major = build.CurrentVersion.major;
            v.minor = build.CurrentVersion.minor;
            v.build = build.CurrentVersion.build + 1;
            v.date  = DateTime.Now;
            build.versions.Add(v);
            build.versions = build.versions.OrderByDescending(ver => ver.major)
                             .OrderByDescending(ver => ver.minor)
                             .OrderByDescending(ver => ver.build)
                             .OrderByDescending(ver => ver.date).ToList();
        }
        GUILayout.FlexibleSpace();
        EditorGUILayout.EndHorizontal();

        scrollPos = EditorGUILayout.BeginScrollView(scrollPos);
        foreach (Version v in build.versions)
        {
            if (!expanded.ContainsKey(v))
            {
                expanded[v] = v == build.CurrentVersion;
            }

            EditorGUILayout.BeginHorizontal();
            expanded[v] = EditorGUILayout.Foldout(expanded[v], v.ToString());
            if (expanded[v] && build.versions.Count > 0 && GUILayout.Button("Delete", EditorStyles.miniButton))
            {
                if (EditorUtility.DisplayDialog("Remove Version?", "Are you sure you want to delete this version?", "Yes", "No"))
                {
                    build.versions.Remove(v);
                    GUIUtility.ExitGUI();
                }
            }
            EditorGUILayout.EndHorizontal();

            if (expanded[v])
            {
                EditorGUI.indentLevel++;
                EditorGUILayout.BeginHorizontal();
                EditorGUILayout.LabelField("Version");
                v.major = EditorGUILayout.IntField(v.major);
                GUILayout.Label(".");
                v.minor = EditorGUILayout.IntField(v.minor);
                GUILayout.Label(".");
                v.build    = EditorGUILayout.IntField(v.build);
                v.revision = EditorGUILayout.TextField(v.revision);
                EditorGUILayout.EndHorizontal();

                EditorGUILayout.BeginHorizontal();
                EditorGUILayout.LabelField("Date / Time");
                int dateValue;
                dateValue = EditorGUILayout.IntField(v.date.Year);
                if (GUI.changed)
                {
                    v.date      = v.date.AddYears(dateValue - v.date.Year);
                    GUI.changed = false;
                }
                dateValue = EditorGUILayout.IntField(v.date.Month);
                if (GUI.changed)
                {
                    v.date      = v.date.AddMonths(dateValue - v.date.Month);
                    GUI.changed = false;
                }
                dateValue = EditorGUILayout.IntField(v.date.Day);
                if (GUI.changed)
                {
                    v.date      = v.date.AddDays(dateValue - v.date.Day);
                    GUI.changed = false;
                }
                dateValue = EditorGUILayout.IntField(v.date.Hour);
                if (GUI.changed)
                {
                    v.date      = v.date.AddHours(dateValue - v.date.Hour);
                    GUI.changed = false;
                }
                dateValue = EditorGUILayout.IntField(v.date.Minute);
                if (GUI.changed)
                {
                    v.date      = v.date.AddMinutes(dateValue - v.date.Minute);
                    GUI.changed = false;
                }
                if (GUILayout.Button("Now", EditorStyles.miniButton))
                {
                    v.date = DateTime.Now;
                }
                EditorGUILayout.EndHorizontal();

                EditorGUILayout.BeginHorizontal();
                EditorGUILayout.LabelField("Notes");
                if (GUILayout.Button("+", EditorStyles.miniButton))
                {
                    v.notes.Add(new Note());
                }
                GUILayout.FlexibleSpace();
                EditorGUILayout.EndHorizontal();

                EditorGUI.indentLevel++;
                foreach (Note n in v.notes)
                {
                    EditorGUILayout.BeginHorizontal();
                    GUI.changed = false;
                    n.category  = (Note.Category)EditorGUILayout.EnumPopup(n.category, GUILayout.Width(100f));
                    if (GUI.changed)
                    {
                        v.notes = v.notes.OrderBy(note => note.category).ToList();
                        EditorGUIUtility.keyboardControl = -1;
                        GUI.changed = false;
                        GUIUtility.ExitGUI();
                    }
                    n.description = EditorGUILayout.TextArea(n.description, GUILayout.MaxWidth(400f));
                    if (GUILayout.Button("-", EditorStyles.miniButton, GUILayout.Width(20f)))
                    {
                        v.notes.Remove(n);
                        GUIUtility.ExitGUI();
                    }
                    EditorGUILayout.EndHorizontal();
                }
                EditorGUI.indentLevel--;

                EditorGUI.indentLevel--;
            }
        }
        EditorGUILayout.EndScrollView();

        GUILayout.FlexibleSpace();
        EditorGUILayout.BeginHorizontal();
        if (GUILayout.Button("Export ReleaseNotes.txt", GUILayout.Width(buttonWidth * 2f)))
        {
            ExportReleaseNotes();
        }
        GUILayout.FlexibleSpace();
        if (GUILayout.Button("Save", GUILayout.Width(buttonWidth)))
        {
            Save();
        }
        if (GUILayout.Button("Build", GUILayout.Width(buttonWidth)))
        {
            DoBuild();
            GUIUtility.ExitGUI();
        }
        EditorGUILayout.EndHorizontal();
        GUILayout.EndArea();
    }