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(); }
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(); }