예제 #1
0
        void OnGUI()
        {
            var config = Config.Load();

            // Start scroll view
            scrollPos = EditorGUILayout.BeginScrollView(scrollPos);

            // Repository path is invalid error message
            if (State.InvalidRepository)
            {
                EditorGUILayout.HelpBox(
                    "Cannot find repository; invalid Yggdrasil config!",
                    MessageType.Error);

                if (GUILayout.Button("Edit Config"))
                {
                    ConfigWindow.Open();
                }
            }
            // Check if user info is set
            else if (string.IsNullOrEmpty(config.Name) ||
                     string.IsNullOrEmpty(config.Email))
            {
                EditorGUILayout.HelpBox(
                    "Please set your name and email!",
                    MessageType.Error);

                if (GUILayout.Button("Edit Config"))
                {
                    ConfigWindow.Open();
                }
            }
            // No changes info message
            else if (State.Files.Count == 0)
            {
                DrawServerChanges();

                EditorGUILayout.HelpBox(
                    "No changes detected.",
                    MessageType.Info);
            }
            // Show changes
            else
            {
                DrawServerChanges();
                DrawFileChanges();

                EditorGUILayout.Space();

                // Change Summary
                EditorGUILayout.PrefixLabel("Change Summary");
                summary = EditorGUILayout.TextField(summary);

                // Change Message
                var oldWrap = EditorStyles.textField.wordWrap;
                EditorStyles.textField.wordWrap = true;
                var size = EditorGUIUtility.singleLineHeight;
                EditorGUILayout.PrefixLabel("Change Message");
                message = GUILayout.TextArea(
                    message, GUILayout.MinHeight(size * 3));
                EditorStyles.textField.wordWrap = oldWrap;

                // Push button
                GUI.enabled = IsAnyToggled() && HasCommitMessage();
                if (GUILayout.Button("Push"))
                {
                    CommitAndPushToggled();
                }
                GUI.enabled = true;

                // No changes message
                if (!IsAnyToggled())
                {
                    EditorGUILayout.HelpBox(
                        "Cannot push; no changes selected",
                        MessageType.Error);
                }
                // No summary message
                else if (!HasCommitMessage())
                {
                    EditorGUILayout.HelpBox(
                        "Cannot push; missing change summary",
                        MessageType.Error);
                }
                // Long summary message
                else if (summary.Length > 50)
                {
                    EditorGUILayout.HelpBox(
                        "Summary is too long",
                        MessageType.Warning);
                }
            }

            // End scroll view
            EditorGUILayout.EndScrollView();
        }
예제 #2
0
        void OnGUI()
        {
            var config   = Config.Load();
            var oldStyle = GUI.skin.label.fontStyle;

            // Commit Settings
            {
                GUI.skin.label.fontStyle = FontStyle.Bold;
                GUILayout.Label("Commit Settings");
                GUI.skin.label.fontStyle = oldStyle;

                // name
                EditorGUILayout.BeginHorizontal();
                EditorGUILayout.PrefixLabel("Name");
                config.Name = EditorGUILayout.TextField(config.Name);
                EditorGUILayout.EndHorizontal();

                // email
                EditorGUILayout.BeginHorizontal();
                EditorGUILayout.PrefixLabel("Email");
                config.Email = EditorGUILayout.TextField(config.Email);
                EditorGUILayout.EndHorizontal();
            }

            EditorGUILayout.Space();

            // Authentication Settings
            {
                GUI.skin.label.fontStyle = FontStyle.Bold;
                GUILayout.Label("Authentication Settings");
                GUI.skin.label.fontStyle = oldStyle;

                // id_rsa path
                EditorGUILayout.BeginHorizontal();
                EditorGUILayout.PrefixLabel("id_rsa");
                config.IdRsa = EditorGUILayout.TextField(config.IdRsa);
                EditorGUILayout.EndHorizontal();

                // id_rsa.pub path
                EditorGUILayout.BeginHorizontal();
                EditorGUILayout.PrefixLabel("id_rsa.pub");
                config.IdRsaPub = EditorGUILayout.TextField(config.IdRsaPub);
                EditorGUILayout.EndHorizontal();
            }

            EditorGUILayout.Space();

            // Repository Settings
            {
                GUI.skin.label.fontStyle = FontStyle.Bold;
                GUILayout.Label("Repository Settings");
                GUI.skin.label.fontStyle = oldStyle;

                // Repository Path
                EditorGUILayout.BeginHorizontal();
                EditorGUILayout.PrefixLabel("Repository Path");
                config.Path = EditorGUILayout.TextField(config.Path);
                EditorGUILayout.EndHorizontal();
            }

            // Check if the repository path is valid
            try
            {
                new Repository(config.FullPath);

                EditorGUILayout.HelpBox(
                    "Connected to repository at " + config.FullPath,
                    MessageType.Info);

                if (!connected)
                {
                    State.UpdateCache();
                }
                connected = true;
            }
            catch (RepositoryNotFoundException)
            {
                EditorGUILayout.HelpBox(
                    "There is no repository at " + config.FullPath,
                    MessageType.Error);

                if (connected)
                {
                    State.UpdateCache();
                }
                connected = false;
            }

            Config.Save();
        }