private static GUIContent GetFileStatusContent(VersionControlStatus assetStatus) { if (assetStatus.treeConflictStatus != VCTreeConflictStatus.Normal) { return(new GUIContent(assetStatus.treeConflictStatus.ToString(), IconUtils.squareIcon.GetTexture(AssetStatusUtils.GetStatusColor(assetStatus, true)))); } return(new GUIContent(AssetStatusUtils.GetStatusText(assetStatus), IconUtils.circleIcon.GetTexture(AssetStatusUtils.GetStatusColor(assetStatus, true)))); }
private static void DrawIcon(Rect rect, IconUtils.Icon iconType, string assetPath, Object instance = null, float xOffset = 0f) { if (VCSettings.VCEnabled) { var assetStatus = VCCommands.Instance.GetAssetStatus(assetPath); string statusText = AssetStatusUtils.GetStatusText(assetStatus); Texture2D texture = iconType.GetTexture(AssetStatusUtils.GetStatusColor(assetStatus, true)); Rect placement = GetRightAligned(rect, iconType.Size); placement.x += xOffset; var clickRect = placement; //clickRect.xMax += iconType.Size * 0.25f; //clickRect.xMin -= rect.width * 0.15f; if (texture) { GUI.DrawTexture(placement, texture); } if (GUI.Button(clickRect, new GUIContent("", statusText), GUIStyle.none)) { VCGUIControls.DiaplayVCContextMenu(assetPath, instance, 10.0f, -40.0f, true); } } }
static void SceneViewUpdate(SceneView sceneView) { using (sceneviewUpdateMarker.Auto()) { InitializeIfNeeded(); if (!shouldDraw) { return; } // This optimization is causing problems for following sceneview GUI, so removed for now. //if (Event.current.type == EventType.MouseMove || Event.current.type == EventType.MouseDrag) // return; var stateRect = new Rect(2f, 2f, buttonWidth, buttonHeight); var selectionRect = new Rect(2f + buttonWidth, 1f, 700f, buttonHeight); var buttonRect = new Rect(2f, 2f, buttonWidth, buttonHeight); Handles.BeginGUI(); GUI.TextField(stateRect, AssetStatusUtils.GetStatusText(vcSceneStatus), backgroundGuiStyle); GUI.Label(selectionRect, selectionPath.Substring(selectionPath.LastIndexOf('/') + 1), EditorStyles.miniLabel); int numberOfButtons = 0; const int maxButtons = 4; using (new PushState <bool>(GUI.enabled, VCCommands.Instance.Ready, v => GUI.enabled = v)) { if ((validActions & ValidActions.Add) != 0) { buttonRect.y += buttonHeight; numberOfButtons++; if (GUI.Button(buttonRect, addContent, buttonStyle)) { SceneManagerUtilities.SaveActiveScene(); OnNextUpdate.Do(() => VCCommands.Instance.CommitDialog(new[] { selectionPath })); } } if ((validActions & ValidActions.Open) != 0) { buttonRect.y += buttonHeight; numberOfButtons++; if (GUI.Button(buttonRect, getLockContent, buttonStyle)) { VCCommands.Instance.GetLockTask(new[] { selectionPath }); } } if ((validActions & ValidActions.Commit) != 0) { buttonRect.y += buttonHeight; numberOfButtons++; if (GUI.Button(buttonRect, commitContent, buttonStyle)) { OnNextUpdate.Do(() => VCCommands.Instance.CommitDialog(new[] { selectionPath })); } } if ((validActions & ValidActions.Revert) != 0) { buttonRect.y += buttonHeight; numberOfButtons++; if (GUI.Button(buttonRect, revertContent, buttonStyle)) { var sceneAssetPath = new[] { selectionPath }; if (Event.current.shift || VCUtility.VCDialog(Terminology.revert, sceneAssetPath)) { VCCommands.Instance.Revert(sceneAssetPath); } } } if ((validActions & ValidActions.OpenLocal) != 0) { buttonRect.y += buttonHeight; numberOfButtons++; if (GUI.Button(buttonRect, allowLocalEditContent, buttonStyle)) { VCCommands.Instance.AllowLocalEdit(new[] { selectionPath }); } } if ((validActions & ValidActions.Unlock) != 0) { buttonRect.y += buttonHeight; numberOfButtons++; if (GUI.Button(buttonRect, unlockContent, buttonStyle)) { OnNextUpdate.Do(() => VCCommands.Instance.ReleaseLock(new[] { selectionPath })); } } // 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); } } } Handles.EndGUI(); } }