private void OnGUI() { using (GUILayoutHelper.VerticalIdented(14)) { GUILayout.Label("Unity Version Control (UVC), Version : " + VCUtility.GetCurrentVersion(), EditorStyles.boldLabel); EditorGUILayout.TextArea(infoText); var linkStyle = new GUIStyle(EditorStyles.label) { normal = { textColor = new Color(0.4f, 0.4f, 1.0f) } }; if (GUILayout.Button(maintainAtURL, linkStyle)) { System.Diagnostics.Process.Start(maintainAtURL); } } }
private void OnGUI() { using (GUILayoutHelper.Vertical()) { username = EditorGUILayout.TextField("Username", username); Color passwordColor = Color.grey; if (hasVerified && !success) { passwordColor = Color.red; } if (hasVerified && success) { passwordColor = Color.green; } using (GUILayoutHelper.BackgroundColor(passwordColor)) { password = EditorGUILayout.TextField("Password", password); } allowCacheCredentials = GUILayout.Toggle(allowCacheCredentials, new GUIContent("Allow Credentials to be cached")); using (GUILayoutHelper.Horizontal()) { if (GUILayout.Button("Cancel")) { Close(); } if (!success) { if (GUILayout.Button("Verify")) { hasVerified = true; success = VCCommands.Instance.SetUserCredentials(username, password, allowCacheCredentials); } } else { if (GUILayout.Button("Close")) { Close(); } } } } }
public static CustomDialog CreateExceptionDialog(string title, string message, VCException e) { bool stackTraceToggle = false; bool innerStackTraceToggle = false; bool detailsToggle = false; bool isCritical = e is VCCriticalException; Vector2 scrollPos = Vector2.zero; CustomDialog dialog = CustomDialog.Create(title); dialog .CenterOnScreen() .SetBodyGUI(() => { if (e != null) { scrollPos = GUILayout.BeginScrollView(scrollPos); if (!string.IsNullOrEmpty(message)) { EditorGUILayout.HelpBox(message, isCritical ? MessageType.Error : MessageType.Warning); } if (!string.IsNullOrEmpty(e.ErrorDetails)) { detailsToggle = GUILayout.Toggle(detailsToggle, "Details", EditorStyles.foldout); if (detailsToggle) { using (GUILayoutHelper.VerticalIdented(14)) { GUILayout.BeginVertical(GUI.skin.box); GUILayout.TextField(e.ErrorDetails); GUILayout.EndVertical(); } } } if (!string.IsNullOrEmpty(e.StackTrace)) { stackTraceToggle = GUILayout.Toggle(stackTraceToggle, "Stacktrace", EditorStyles.foldout); if (stackTraceToggle) { using (GUILayoutHelper.VerticalIdented(14)) { GUILayout.BeginVertical(GUI.skin.box); GUILayout.TextField(e.StackTrace); GUILayout.EndVertical(); } } } if (e.InnerException != null) { if (!string.IsNullOrEmpty(e.InnerException.StackTrace)) { innerStackTraceToggle = GUILayout.Toggle(innerStackTraceToggle, "Inner Stacktrace", EditorStyles.foldout); if (innerStackTraceToggle) { using (GUILayoutHelper.VerticalIdented(14)) { GUILayout.BeginVertical(GUI.skin.box); GUILayout.TextField(e.InnerException.StackTrace); GUILayout.EndVertical(); } } } } GUILayout.FlexibleSpace(); GUILayout.EndScrollView(); } }) .AddButton("OK", () => dialog.Close(), GUILayout.Width(60f)) .AddButton("Copy To Clipboard", () => { StringBuilder sb = new StringBuilder(); sb.AppendFormat("Title: {0}\r\n\r\n", title); if (!string.IsNullOrEmpty(message)) { sb.AppendFormat("Message: {0}\r\n", message); } if (!string.IsNullOrEmpty(e.ErrorDetails)) { sb.AppendFormat("\r\nDetails:\r\n{0}\r\n", e.ErrorDetails); } if (!string.IsNullOrEmpty(e.StackTrace)) { sb.AppendFormat("\r\nStacktrace:\r\n{0}\r\n", e.StackTrace); } if (e.InnerException != null && !string.IsNullOrEmpty(e.StackTrace)) { sb.AppendFormat("\r\nInner Stacktrace:\r\n{0}\r\n", e.InnerException.StackTrace); } EditorGUIUtility.systemCopyBuffer = sb.ToString(); }); return(dialog); }
public void DrawGUI() { scrollViewVector = EditorGUILayout.BeginScrollView(scrollViewVector, false, false); using (GUILayoutHelper.Horizontal()) { GUILayout.Label("GUI Settings", EditorStyles.boldLabel); GUILayout.FlexibleSpace(); GUILayout.Label(new GUIContent("Inspector Lock", "Version Control allowed to lock Inspector GUI for items not " + Terminology.getlock), EditorStyles.boldLabel); GUILayout.Space(92); } using (GUILayoutHelper.VerticalIdented(14)) { using (GUILayoutHelper.Horizontal()) { VCSettings.SceneviewGUI = GUILayout.Toggle(VCSettings.SceneviewGUI, new GUIContent("Scene GUI", "Show Version Control GUI in Scene view\nDefault: On")); using (GUILayoutHelper.Enabled(VCSettings.SceneviewGUI, true)) { VCSettings.LockScenes = GUILayout.Toggle(VCSettings.SceneviewGUI && VCSettings.LockScenes, new GUIContent("GUI Lock", "Version Control allowed to lock Inspector GUI for scenes which are not " + Terminology.getlock + "\nDefault: On"), GUILayout.ExpandWidth(true), GUILayout.Width(300)); } } using (GUILayoutHelper.Horizontal()) { VCSettings.PrefabGUI = GUILayout.Toggle(VCSettings.PrefabGUI, new GUIContent("Prefab GUI", "Show Version Control GUI for prefabs in hierarchy view\nDefault: On")); using (GUILayoutHelper.Enabled(VCSettings.PrefabGUI, true)) { VCSettings.LockPrefabs = GUILayout.Toggle(VCSettings.LockPrefabs && VCSettings.PrefabGUI, new GUIContent("GUI Lock", "Version Control allowed to lock Inspector GUI for prefabs which are not " + Terminology.getlock + "\nDefault: Off"), GUILayout.ExpandWidth(true), GUILayout.Width(300)); } } using (GUILayoutHelper.Horizontal()) { VCSettings.MaterialGUI = GUILayout.Toggle(VCSettings.MaterialGUI, new GUIContent("Material GUI", "Show Version Control GUI for material interaction on the Renderer inspector\nDefault: On")); using (GUILayoutHelper.Enabled(VCSettings.MaterialGUI, true)) { VCSettings.LockMaterials = GUILayout.Toggle(VCSettings.MaterialGUI && VCSettings.LockMaterials, new GUIContent("GUI Lock", "Version Control allowed to lock Inspector GUI for materials which are not " + Terminology.getlock + "\nDefault: On"), GUILayout.ExpandWidth(true), GUILayout.Width(300)); } } } using (GUILayoutHelper.VerticalIdented(14)) { using (GUILayoutHelper.Horizontal()) { filterSettingsOpen = GUILayout.Toggle(filterSettingsOpen, new GUIContent("Path Filters", "The Inspector GUI locks will only be active on assetpaths that contains the filter below"), EditorStyles.foldout); } if (filterSettingsOpen) { using (GUILayoutHelper.VerticalIdented(14)) { using (GUILayoutHelper.Horizontal()) { GUILayout.Label(new GUIContent("Scenes", "The Inspector GUI locks will only be active on assetpaths that contains the following filter.\neg. assets/scenes/")); VCSettings.LockScenesFilter = EditorGUILayout.TextField(VCSettings.LockScenesFilter, GUILayout.ExpandWidth(true), GUILayout.Width(300)); } using (GUILayoutHelper.Horizontal()) { GUILayout.Label(new GUIContent("Prefabs", "The Inspector GUI locks will only be active on assetpaths that contains the following filter.\neg. assets/prefabs/")); VCSettings.LockPrefabsFilter = EditorGUILayout.TextField(VCSettings.LockPrefabsFilter, GUILayout.ExpandWidth(true), GUILayout.Width(300)); } using (GUILayoutHelper.Horizontal()) { GUILayout.Label(new GUIContent("Materials", "The Inspector GUI locks will only be active on assetpaths that contains the following filter.\neg. assets/materials/")); VCSettings.LockMaterialsFilter = EditorGUILayout.TextField(VCSettings.LockMaterialsFilter, GUILayout.ExpandWidth(true), GUILayout.Width(300)); } } } } using (GUILayoutHelper.Horizontal()) { GUILayout.Label("Reflection Level", EditorStyles.boldLabel); GUILayout.FlexibleSpace(); GUILayout.Label(new GUIContent("Reflection Level", "Select Remote to retrieve extra information from the server in an exchange for speed."), EditorStyles.boldLabel); GUILayout.Space(85); } using (GUILayoutHelper.VerticalIdented(14)) { using (GUILayoutHelper.Horizontal()) { VCSettings.HierarchyIcons = GUILayout.Toggle(VCSettings.HierarchyIcons, new GUIContent("Hierachy Icons", "Show Version Control controls in hierachy view\nDefault: On")); VCSettings.HierarchyReflectionMode = (VCSettings.EReflectionLevel)EditorGUILayout.EnumPopup(VCSettings.HierarchyReflectionMode, GUILayout.ExpandWidth(true), GUILayout.Width(300)); } using (GUILayoutHelper.Horizontal()) { VCSettings.ProjectIcons = GUILayout.Toggle(VCSettings.ProjectIcons, new GUIContent("Project Icons", "Show Version Control controls in project view\nDefault: On")); VCSettings.ProjectReflectionMode = (VCSettings.EReflectionLevel)EditorGUILayout.EnumPopup(VCSettings.ProjectReflectionMode, GUILayout.ExpandWidth(true), GUILayout.Width(300)); } } GUILayout.Label("Commit Window", EditorStyles.boldLabel); using (GUILayoutHelper.VerticalIdented(14)) { VCSettings.AutoCloseAfterSuccess = GUILayout.Toggle(VCSettings.AutoCloseAfterSuccess, new GUIContent("Auto Close", "Auto close commit window on successful commit\nDefault: Off")); VCSettings.IncludeDepedenciesAsDefault = GUILayout.Toggle(VCSettings.IncludeDepedenciesAsDefault, new GUIContent("Select Dependencies", "Should dependencies automatically be selected when opening the commit window\nDefault: On")); VCSettings.SelectiveCommit = GUILayout.Toggle(VCSettings.SelectiveCommit, new GUIContent("Selective Commit", "Add an additional selection column which is used to more explicitly select which files to commit\nDefault: Off")); VCSettings.NonRecursiveAdd = GUILayout.Toggle(VCSettings.NonRecursiveAdd, new GUIContent("Non-Recursive Add", "Add an additional selection column which is used to more explicitly select which files to commit\nDefault: Off")); VCSettings.RequireLockBeforeCommit = GUILayout.Toggle(VCSettings.RequireLockBeforeCommit, new GUIContent("Require " + Terminology.getlock + " on commit", "It will be enforced that all non-mergable files are " + Terminology.getlock + " before commit\nDefault: Off")); } GUILayout.Label("Debug", EditorStyles.boldLabel); using (GUILayoutHelper.VerticalIdented(14)) { using (GUILayoutHelper.Horizontal()) { VCSettings.BugReport = GUILayout.Toggle(VCSettings.BugReport, new GUIContent("Bug Reports", "Send a bug report to Fogbugz when an error occurs\nDefault: On")); VCSettings.BugReportMode = (VCSettings.EBugReportMode)EditorGUILayout.EnumPopup(VCSettings.BugReportMode, GUILayout.ExpandWidth(true), GUILayout.Width(300)); } VCSettings.Analytics = GUILayout.Toggle(VCSettings.Analytics, new GUIContent("Analytics", "Allow UVC to send anonymous analytics data with the purpose of improving the quality of UVC\nDefault: On")); VCSettings.Logging = GUILayout.Toggle(VCSettings.Logging, new GUIContent("Logging", "Output logs from Version Control to Unity console\nDefault: Off")); } GUILayout.Label("Advanced", EditorStyles.boldLabel); using (GUILayoutHelper.VerticalIdented(14)) { using (GUILayoutHelper.Horizontal()) { GUILayout.Label(new GUIContent("How to Move and Rename", "How should file move and renames in project be handled\nDefault: Simple")); VCSettings.HandleFileMove = (VCSettings.EHandleFileMove)EditorGUILayout.EnumPopup(VCSettings.HandleFileMove, GUILayout.ExpandWidth(true), GUILayout.Width(300)); } using (GUILayoutHelper.Horizontal()) { GUILayout.Label(new GUIContent(string.Format("Who Controls Asset Saves", Terminology.getlock), string.Format("Select {0} to only let Unity save files that are either {1} or {2} \nDefault: {3}", VCSettings.ESaveAssetsStrategy.VersionControl.ToString(), Terminology.allowLocalEdit, Terminology.getlock, VCSettings.ESaveAssetsStrategy.Unity.ToString()))); VCSettings.SaveStrategy = (VCSettings.ESaveAssetsStrategy)EditorGUILayout.EnumPopup(VCSettings.SaveStrategy, GUILayout.ExpandWidth(true), GUILayout.Width(300)); } if (clientPath == null) { clientPath = VCSettings.ClientPath; } var textColor = ValidCommandLineClient(clientPath) ? new Color(0.0f, 0.6f, 0.0f) : new Color(0.6f, 0.0f, 0.0f); var textStyle = new GUIStyle(EditorStyles.textField) { normal = { textColor = textColor } }; using (GUILayoutHelper.Horizontal()) { GUILayout.Label(new GUIContent("Environment Path", "Specify the path to a command line client. eg MacPorts SVN : /opt/local/bin/\nDefault: <Empty>")); clientPath = EditorGUILayout.TextField(clientPath, textStyle, GUILayout.ExpandWidth(true), GUILayout.Width(300)).Trim(new[] { ' ' }).Replace('\\', '/'); } if (ValidCommandLineClient(clientPath)) { VCSettings.ClientPath = clientPath; } using (GUILayoutHelper.Horizontal()) { GUILayout.Label(new GUIContent("Version Control System", "The selected Version Control will be used if a valid local copy can be found")); VCSettings.VersionControlBackend = (VCSettings.EVersionControlBackend)EditorGUILayout.EnumPopup(VCSettings.VersionControlBackend, GUILayout.ExpandWidth(true), GUILayout.Width(300)); } } GUILayout.Label("Other", EditorStyles.boldLabel); using (GUILayoutHelper.VerticalIdented(14)) { using (GUILayoutHelper.Horizontal()) { var textColor = bValidHiddenPathsString(VCSettings.strHiddenFilePaths) ? new Color(0.0f, 0.6f, 0.0f) : new Color(0.6f, 0.0f, 0.0f); var textStyle = new GUIStyle(EditorStyles.textField) { normal = { textColor = textColor } }; GUILayout.Label(new GUIContent("Hidden paths", "Specify the paths to a hide items from the overview. Seperate paths with a semicolon.")); VCSettings.strHiddenFilePaths = EditorGUILayout.TextField(VCSettings.strHiddenFilePaths, textStyle, GUILayout.ExpandWidth(true), GUILayout.Width(300)).Trim(new[] { ' ' }).Replace('\\', '/'); } using (GUILayoutHelper.Horizontal()) { var textColor = bValidAutocompleteString(VCSettings.strCommitAutoComplete) ? new Color(0.0f, 0.6f, 0.0f) : new Color(0.6f, 0.0f, 0.0f); var textStyle = new GUIStyle(EditorStyles.textField) { normal = { textColor = textColor } }; GUILayout.Label(new GUIContent("Commit autocompletes", "Specify autocomplete suggestions for commit message. Format text->suggestion. Seperate suggestions with a semicolon.")); VCSettings.strCommitAutoComplete = EditorGUILayout.TextField(VCSettings.strCommitAutoComplete, textStyle, GUILayout.ExpandWidth(true), GUILayout.Width(300)).Trim(new[] { ' ' }).Replace('\\', '/'); } } EditorGUILayout.EndScrollView(); }
static void SceneViewUpdate(SceneView sceneView) { if (!shouldDraw) { return; } string assetPath = SceneManagerUtilities.GetCurrentScenePath(); VCUtility.RequestStatus(assetPath, VCSettings.HierarchyReflectionMode); var vcSceneStatus = VCCommands.Instance.GetAssetStatus(assetPath); buttonStyle = new GUIStyle(EditorStyles.miniButton) { margin = new RectOffset(0, 0, 0, 0), fixedWidth = 80 }; backgroundGuiStyle = VCGUIControls.GetVCBox(vcSceneStatus); backgroundGuiStyle.padding = new RectOffset(4, 8, 1, 1); backgroundGuiStyle.margin = new RectOffset(1, 1, 1, 1); backgroundGuiStyle.border = new RectOffset(1, 1, 1, 1); backgroundGuiStyle.alignment = TextAnchor.MiddleCenter; var rect = new Rect(5, 5, 200, 100); Handles.BeginGUI(); GUILayout.BeginArea(new Rect(0, 0, rect.width, rect.height)); GUILayout.TextField(AssetStatusUtils.GetLockStatusMessage(vcSceneStatus), backgroundGuiStyle); int numberOfButtons = 0; const int maxButtons = 4; var validActions = VCGUIControls.GetValidActions(assetPath); using (GUILayoutHelper.Vertical()) { using (new PushState <bool>(GUI.enabled, VCCommands.Instance.Ready, v => GUI.enabled = v)) { if (validActions.showAdd) { numberOfButtons++; if (GUILayout.Button(Terminology.add, buttonStyle)) { SceneManagerUtilities.SaveActiveScene(); OnNextUpdate.Do(() => VCCommands.Instance.CommitDialog(new[] { SceneManagerUtilities.GetCurrentScenePath() })); } } if (validActions.showOpen) { numberOfButtons++; if (GUILayout.Button(Terminology.getlock, buttonStyle)) { VCCommands.Instance.GetLockTask(new[] { SceneManagerUtilities.GetCurrentScenePath() }); } } if (validActions.showCommit) { numberOfButtons++; if (GUILayout.Button(Terminology.commit, buttonStyle)) { OnNextUpdate.Do(() => VCCommands.Instance.CommitDialog(new[] { SceneManagerUtilities.GetCurrentScenePath() })); } } if (validActions.showRevert) { numberOfButtons++; if (GUILayout.Button(new GUIContent(Terminology.revert, "Shift-click to " + Terminology.revert + " without confirmation"), buttonStyle)) { var sceneAssetPath = new[] { SceneManagerUtilities.GetCurrentScenePath() }; if (Event.current.shift || VCUtility.VCDialog(Terminology.revert, sceneAssetPath)) { SceneManagerUtilities.SaveActiveScene(); VCCommands.Instance.Revert(sceneAssetPath); OnNextUpdate.Do(AssetDatabase.Refresh); } } } if (validActions.showOpenLocal) { numberOfButtons++; if (GUILayout.Button(Terminology.allowLocalEdit, buttonStyle)) { VCCommands.Instance.AllowLocalEdit(new[] { SceneManagerUtilities.GetCurrentScenePath() }); } } if (validActions.showUnlock) { numberOfButtons++; if (GUILayout.Button(Terminology.unlock, buttonStyle)) { OnNextUpdate.Do(() => VCCommands.Instance.ReleaseLock(new[] { SceneManagerUtilities.GetCurrentScenePath() })); } } if (validActions.showForceOpen) { numberOfButtons++; if (GUILayout.Button("Force Open", buttonStyle)) { OnNextUpdate.Do(() => VCUtility.GetLock(SceneManagerUtilities.GetCurrentScenePath(), OperationMode.Force)); } } // bug: Workaround for a bug in Unity to avoid Tools getting stuck when number of GUI elements change while right mouse is down. using (GUILayoutHelper.Enabled(false)) { for (int i = numberOfButtons; i <= maxButtons; ++i) { GUI.Button(new Rect(0, 0, 0, 0), "", EditorStyles.label); } } } } GUILayout.EndArea(); Handles.EndGUI(); }
static bool drawButtons(string _strAssetPath) { var validActions = VCGUIControls.GetValidActions(_strAssetPath); int numberOfButtons = 0; const int maxButtons = 5; bool bNeedsRepaint = false; using (new PushState <bool>(GUI.enabled, VCCommands.Instance.Ready, v => GUI.enabled = v)) { numberOfButtons++; if (GUILayout.Button("Refresh", buttonStyle)) { Refresh(_strAssetPath); } if (validActions.showAdd) { numberOfButtons++; if (GUILayout.Button(Terminology.add, buttonStyle)) { bNeedsRepaint = true; SceneManagerUtilities.SaveActiveScene(); OnNextUpdate.Do(() => VCCommands.Instance.CommitDialog(new[] { _strAssetPath })); } } if (validActions.showOpen) { numberOfButtons++; if (GUILayout.Button(Terminology.getlock, buttonStyle)) { bNeedsRepaint = true; Refresh(_strAssetPath); if (!validActions.showOpen) { EditorUtility.DisplayDialog("Cannot open Scene!", "This scene has been opened by another user since the last refresh.", "Ok"); } else { VCCommands.Instance.GetLockTask(new[] { _strAssetPath }); } } } if (validActions.showCommit) { numberOfButtons++; if (GUILayout.Button(Terminology.commit, buttonStyle)) { bNeedsRepaint = true; OnNextUpdate.Do(() => VCCommands.Instance.CommitDialog(new[] { _strAssetPath })); } } if (validActions.showRevert) { numberOfButtons++; if (GUILayout.Button(new GUIContent(Terminology.revert, "Shift-click to " + Terminology.revert + " without confirmation"), buttonStyle)) { bNeedsRepaint = true; var assetPath = new[] { _strAssetPath }; if (Event.current.shift || VCUtility.VCDialog(Terminology.revert, assetPath)) { VCCommands.Instance.Revert(assetPath); OnNextUpdate.Do(AssetDatabase.Refresh); } } } if (validActions.showOpenLocal) { numberOfButtons++; if (GUILayout.Button(Terminology.allowLocalEdit, buttonStyle)) { bNeedsRepaint = true; VCCommands.Instance.AllowLocalEdit(new[] { _strAssetPath }); } } if (validActions.showUnlock) { numberOfButtons++; if (GUILayout.Button(Terminology.unlock, buttonStyle)) { bNeedsRepaint = true; OnNextUpdate.Do(() => VCCommands.Instance.ReleaseLock(new[] { _strAssetPath })); } } if (validActions.showForceOpen) { numberOfButtons++; if (GUILayout.Button("Force Open", buttonStyle)) { bNeedsRepaint = true; OnNextUpdate.Do(() => VCUtility.GetLock(_strAssetPath, OperationMode.Force)); } } // bug: Workaround for a bug in Unity to avoid Tools getting stuck when number of GUI elements change while right mouse is down. using (GUILayoutHelper.Enabled(false)) { for (int i = numberOfButtons; i <= maxButtons; ++i) { GUI.Button(new Rect(0, 0, 0, 0), "", EditorStyles.label); } } } return(bNeedsRepaint); }
private void DrawButtons() { EditorGUILayout.BeginHorizontal(); using (GUILayoutHelper.BackgroundColor(CommitMessage.Length < 10 ? new Color(1, 0, 0) : new Color(0, 1, 0))) { statusScroll = EditorGUILayout.BeginScrollView(statusScroll, false, false); string strCommitMessageOld = CommitMessage; GUI.SetNextControlName("Message"); CommitMessage = EditorGUILayout.TextArea(CommitMessage, GUILayout.MinWidth(100), GUILayout.ExpandWidth(true), GUILayout.ExpandHeight(true)); if (CommitMessage.Length > strCommitMessageOld.Length) { if (!string.IsNullOrEmpty(VCSettings.strCommitAutoComplete)) { string[] arSuggestions = VCSettings.strCommitAutoComplete.Split(';'); for (int i = 0; i < arSuggestions.Length; i++) { string strSuggestion = arSuggestions[i].Trim(new[] { ' ' }); string[] strSuggestionParts = strSuggestion.Split(new string[] { "->" }, System.StringSplitOptions.RemoveEmptyEntries); if (CommitMessage.EndsWith(strSuggestionParts[0])) { TextEditor editor = (TextEditor)GUIUtility.GetStateObject(typeof(TextEditor), GUIUtility.keyboardControl); CommitAutoCompleteSuggestion suggestion = new CommitAutoCompleteSuggestion(strSuggestionParts[0].Length, strSuggestionParts[1], this); editor.DetectFocusChange(); editor.OnLostFocus(); PopupWindow.Show(new Rect((editor.graphicalSelectCursorPos), suggestion.GetWindowSize()), suggestion); } } } } EditorGUILayout.EndScrollView(); } if (firstTime) { EditorGUI.FocusTextInControl("CommitMessage"); firstTime = false; } using (new PushState <bool>(GUI.enabled, VCCommands.Instance.Ready, v => GUI.enabled = v)) { if (GUILayout.Button(Terminology.commit, GUILayout.Width(100))) { var selection = //VCSettings.SelectiveCommit ? vcMultiColumnAssetList.GetMasterSelection() : vcMultiColumnAssetList.GetSelection(); vcMultiColumnAssetList.GetCommitSelection(VCSettings.SelectiveCommit); if (selection.Count() != 0) { var selectedAssets = selection.Select(status => status.assetPath).Select(cstr => cstr.Compose()).ToList(); VCCommands.Instance.ProgressInformation += s => { commitProgress = commitProgress + s; if (commitProgress.Length > maxProgressSize) { commitProgress = commitProgress.Substring(commitProgress.Length - maxProgressSize); } statusScroll.y = Mathf.Infinity; Repaint(); }; //foreach (string str in selectedAssets) // Debug.Log("Committing: " + str); var commitTask = VCCommands.Instance.CommitTask(selectedAssets, CommitMessage, VCSettings.NonRecursiveAdd); commitTask.ContinueWithOnNextUpdate(result => { if (result) { commitedFiles = selectedAssets; CommitMessage = ""; Repaint(); if (VCSettings.AutoCloseAfterSuccess) { Close(); } } commitCompleted = true; }); commitInProgress = true; } else { ShowNotification(new GUIContent("No files selected")); } } if (GUILayout.Button("Cancel", GUILayout.Width(100))) { Close(); } } EditorGUILayout.EndHorizontal(); if (vcMultiColumnAssetList.GetSelection().Any()) { RemoveNotification(); } GUI.SetNextControlName("unfocus"); }
private void DrawButtons() { EditorGUILayout.BeginHorizontal(); GUI.SetNextControlName("CommitMessage"); using (GUILayoutHelper.BackgroundColor(CommitMessage.Length < 10 ? new Color(1, 0, 0) : new Color(0, 1, 0))) { statusScroll = EditorGUILayout.BeginScrollView(statusScroll, false, false); CommitMessage = EditorGUILayout.TextArea(CommitMessage, GUILayout.MinWidth(100), GUILayout.ExpandWidth(true), GUILayout.ExpandHeight(true)); EditorGUILayout.EndScrollView(); } if (firstTime) { GUI.FocusControl("CommitMessage"); firstTime = false; } using (new PushState <bool>(GUI.enabled, VCCommands.Instance.Ready, v => GUI.enabled = v)) { if (GUILayout.Button(Terminology.commit, GUILayout.Width(100))) { var selection = VCSettings.SelectiveCommit ? vcMultiColumnAssetList.GetMasterSelection() : vcMultiColumnAssetList.GetSelection(); if (selection.Count() != 0) { var selectedAssets = selection.Select(status => status.assetPath).Select(cstr => cstr.Compose()).ToList(); VCCommands.Instance.ProgressInformation += s => { commitProgress = commitProgress + s; if (commitProgress.Length > maxProgressSize) { commitProgress = commitProgress.Substring(commitProgress.Length - maxProgressSize); } statusScroll.y = Mathf.Infinity; Repaint(); }; var commitTask = VCCommands.Instance.CommitTask(selectedAssets, CommitMessage); commitTask.ContinueWithOnNextUpdate(result => { if (result) { commitedFiles = selectedAssets; CommitMessage = ""; Repaint(); if (VCSettings.AutoCloseAfterSuccess) { Close(); } } commitCompleted = true; }); commitInProgress = true; } else { ShowNotification(new GUIContent("No files selected")); } } if (GUILayout.Button("Cancel", GUILayout.Width(100))) { Close(); } } EditorGUILayout.EndHorizontal(); if (vcMultiColumnAssetList.GetSelection().Any()) { RemoveNotification(); } }