Inheritance: EditorWindow
示例#1
0
        // Perform the actual window open
        static public void Open(ChangeSet change, AssetList assets, bool submit)
        {
            InspectorWindow.ApplyChanges();
            WindowChange win = EditorWindow.GetWindow <WindowChange>(true, "Version Control Changeset");

            win.allowSubmit = submit;
            win.DoOpen(change, assets);
        }
        static void OnVCTaskCompletedEvent(Task task, CompletionAction completionAction)
        {
            // inspector should re-calculate which VCS buttons it needs to show
            InspectorWindow.ClearVersionControlBarState();

            var wins = Resources.FindObjectsOfTypeAll(typeof(WindowPending)) as WindowPending[];

            foreach (WindowPending win in wins)
            {
                switch (completionAction)
                {
                case CompletionAction.UpdatePendingWindow:     // fallthrough
                case CompletionAction.OnCheckoutCompleted:
                    win.UpdateWindow();
                    break;

                case CompletionAction.OnChangeContentsPendingWindow:
                    win.OnChangeContents(task);
                    break;

                case CompletionAction.OnIncomingPendingWindow:
                    win.OnIncoming(task);
                    break;

                case CompletionAction.OnChangeSetsPendingWindow:
                    win.OnChangeSets(task);
                    break;

                case CompletionAction.OnGotLatestPendingWindow:
                    win.OnGotLatest(task);
                    break;
                }
            }

            switch (completionAction)
            {
            case CompletionAction.OnSubmittedChangeWindow:
                WindowChange.OnSubmitted(task);
                break;

            case CompletionAction.OnAddedChangeWindow:
                WindowChange.OnAdded(task);
                break;

            case CompletionAction.OnCheckoutCompleted:
                if (EditorUserSettings.showFailedCheckout)
                {
                    WindowCheckoutFailure.OpenIfCheckoutFailed(task.assetList);
                }
                break;
            }

            task.Dispose();
        }
示例#3
0
        private static void OnVCTaskCompletedEvent(Task task, CompletionAction completionAction)
        {
            WindowPending[] array  = Resources.FindObjectsOfTypeAll(typeof(WindowPending)) as WindowPending[];
            WindowPending[] array2 = array;
            for (int i = 0; i < array2.Length; i++)
            {
                WindowPending windowPending = array2[i];
                switch (completionAction)
                {
                case CompletionAction.UpdatePendingWindow:
                case CompletionAction.OnCheckoutCompleted:
                    windowPending.UpdateWindow();
                    break;

                case CompletionAction.OnChangeContentsPendingWindow:
                    windowPending.OnChangeContents(task);
                    break;

                case CompletionAction.OnIncomingPendingWindow:
                    windowPending.OnIncoming(task);
                    break;

                case CompletionAction.OnChangeSetsPendingWindow:
                    windowPending.OnChangeSets(task);
                    break;

                case CompletionAction.OnGotLatestPendingWindow:
                    windowPending.OnGotLatest(task);
                    break;
                }
            }
            if (completionAction != CompletionAction.OnSubmittedChangeWindow)
            {
                if (completionAction != CompletionAction.OnAddedChangeWindow)
                {
                    if (completionAction == CompletionAction.OnCheckoutCompleted)
                    {
                        if (EditorUserSettings.showFailedCheckout)
                        {
                            WindowCheckoutFailure.OpenIfCheckoutFailed(task.assetList);
                        }
                    }
                }
                else
                {
                    WindowChange.OnAdded(task);
                }
            }
            else
            {
                WindowChange.OnSubmitted(task);
            }
            task.Dispose();
        }
示例#4
0
 private static void OnVCTaskCompletedEvent(Task task, CompletionAction completionAction)
 {
     WindowPending[] array  = Resources.FindObjectsOfTypeAll(typeof(WindowPending)) as WindowPending[];
     WindowPending[] array2 = array;
     for (int i = 0; i < array2.Length; i++)
     {
         WindowPending windowPending = array2[i];
         if (completionAction == CompletionAction.UpdatePendingWindow)
         {
             windowPending.UpdateWindow();
         }
         else
         {
             if (completionAction == CompletionAction.OnChangeContentsPendingWindow)
             {
                 windowPending.OnChangeContents(task);
             }
             else
             {
                 if (completionAction == CompletionAction.OnIncomingPendingWindow)
                 {
                     windowPending.OnIncoming(task);
                 }
                 else
                 {
                     if (completionAction == CompletionAction.OnChangeSetsPendingWindow)
                     {
                         windowPending.OnChangeSets(task);
                     }
                     else
                     {
                         if (completionAction == CompletionAction.OnGotLatestPendingWindow)
                         {
                             windowPending.OnGotLatest(task);
                         }
                     }
                 }
             }
         }
     }
     if (completionAction == CompletionAction.OnSubmittedChangeWindow)
     {
         WindowChange.OnSubmitted(task);
     }
     else
     {
         if (completionAction == CompletionAction.OnAddedChangeWindow)
         {
             WindowChange.OnAdded(task);
         }
     }
     task.Dispose();
 }
示例#5
0
 internal static void OnAdded(Task task)
 {
     WindowChange[] array = Resources.FindObjectsOfTypeAll(typeof(WindowChange)) as WindowChange[];
     if (array.Length != 0)
     {
         WindowChange windowChange = array[0];
         windowChange.taskSubmit         = null;
         windowChange.submitResultCode   = 256;
         windowChange.submitErrorMessage = null;
         windowChange.taskAdd            = null;
         windowChange.taskStatus         = Provider.Status(windowChange.assetList, false);
         windowChange.assetList          = null;
         WindowPending.UpdateAllWindows();
     }
 }
示例#6
0
 internal static void OnAdded(Task task)
 {
     WindowChange[] changeArray = UnityEngine.Resources.FindObjectsOfTypeAll(typeof(WindowChange)) as WindowChange[];
     if (changeArray.Length != 0)
     {
         WindowChange change = changeArray[0];
         change.taskSubmit         = null;
         change.submitResultCode   = 0x100;
         change.submitErrorMessage = null;
         change.taskAdd            = null;
         change.taskStatus         = Provider.Status(change.assetList, false);
         change.assetList          = null;
         WindowPending.UpdateAllWindows();
     }
 }
示例#7
0
        private static void OnVCTaskCompletedEvent(Task task, CompletionAction completionAction)
        {
            foreach (WindowPending windowPending in Resources.FindObjectsOfTypeAll(typeof(WindowPending)) as WindowPending[])
            {
                switch (completionAction)
                {
                case CompletionAction.UpdatePendingWindow:
                case CompletionAction.OnCheckoutCompleted:
                    windowPending.UpdateWindow();
                    break;

                case CompletionAction.OnChangeContentsPendingWindow:
                    windowPending.OnChangeContents(task);
                    break;

                case CompletionAction.OnIncomingPendingWindow:
                    windowPending.OnIncoming(task);
                    break;

                case CompletionAction.OnChangeSetsPendingWindow:
                    windowPending.OnChangeSets(task);
                    break;

                case CompletionAction.OnGotLatestPendingWindow:
                    windowPending.OnGotLatest(task);
                    break;
                }
            }
            switch (completionAction)
            {
            case CompletionAction.OnSubmittedChangeWindow:
                WindowChange.OnSubmitted(task);
                break;

            case CompletionAction.OnAddedChangeWindow:
                WindowChange.OnAdded(task);
                break;

            case CompletionAction.OnCheckoutCompleted:
                if (EditorUserSettings.showFailedCheckout)
                {
                    WindowCheckoutFailure.OpenIfCheckoutFailed(task.assetList);
                    break;
                }
                break;
            }
            task.Dispose();
        }
示例#8
0
        internal static void OnAdded(Task task)
        {
            WindowChange[] objectsOfTypeAll = Resources.FindObjectsOfTypeAll(typeof(WindowChange)) as WindowChange[];
            if (objectsOfTypeAll.Length == 0)
            {
                return;
            }
            WindowChange windowChange = objectsOfTypeAll[0];

            windowChange.taskSubmit         = (Task)null;
            windowChange.submitResultCode   = 256;
            windowChange.submitErrorMessage = (string)null;
            windowChange.taskAdd            = (Task)null;
            windowChange.taskStatus         = Provider.Status(windowChange.assetList, false);
            windowChange.assetList          = (AssetList)null;
            WindowPending.UpdateAllWindows();
        }
示例#9
0
        internal static void OnSubmitted(Task task)
        {
            WindowChange[] array = Resources.FindObjectsOfTypeAll(typeof(WindowChange)) as WindowChange[];
            if (array.Length == 0)
            {
                return;
            }
            WindowChange windowChange = array[0];

            windowChange.assetList          = task.assetList;
            windowChange.submitResultCode   = task.resultCode;
            windowChange.submitErrorMessage = null;
            if ((task.resultCode & 2) != 0)
            {
                string    empty    = string.Empty;
                Message[] messages = task.messages;
                for (int i = 0; i < messages.Length; i++)
                {
                    Message message = messages[i];
                    if (message.severity == Message.Severity.Error)
                    {
                        WindowChange expr_77 = windowChange;
                        expr_77.submitErrorMessage = expr_77.submitErrorMessage + empty + message.message;
                    }
                }
            }
            if ((task.resultCode & 3) != 0)
            {
                WindowPending.UpdateAllWindows();
                bool flag = windowChange.changeSet == null;
                if (flag)
                {
                    Task task2 = Provider.Status(string.Empty);
                    task2.Wait();
                    WindowPending.ExpandLatestChangeSet();
                }
            }
            if ((task.resultCode & 1) != 0)
            {
                windowChange.ResetAndClose();
            }
            else
            {
                windowChange.RefreshList();
            }
        }
示例#10
0
        internal static void OnSubmitted(Task task)
        {
            WindowChange[] objectsOfTypeAll = Resources.FindObjectsOfTypeAll(typeof(WindowChange)) as WindowChange[];
            if (objectsOfTypeAll.Length == 0)
            {
                return;
            }
            WindowChange windowChange1 = objectsOfTypeAll[0];

            windowChange1.assetList          = task.assetList;
            windowChange1.submitResultCode   = task.resultCode;
            windowChange1.submitErrorMessage = (string)null;
            if ((task.resultCode & 2) != 0)
            {
                string empty = string.Empty;
                foreach (Message message in task.messages)
                {
                    if (message.severity == Message.Severity.Error)
                    {
                        WindowChange windowChange2 = windowChange1;
                        string       str           = windowChange2.submitErrorMessage + empty + message.message;
                        windowChange2.submitErrorMessage = str;
                    }
                }
            }
            if ((task.resultCode & 3) != 0)
            {
                WindowPending.UpdateAllWindows();
                if (windowChange1.changeSet == null)
                {
                    Provider.Status(string.Empty).Wait();
                    WindowPending.ExpandLatestChangeSet();
                }
            }
            if ((task.resultCode & 1) != 0)
            {
                windowChange1.ResetAndClose();
            }
            else
            {
                windowChange1.RefreshList();
            }
        }
示例#11
0
 internal static void OnSubmitted(Task task)
 {
     WindowChange[] changeArray = UnityEngine.Resources.FindObjectsOfTypeAll(typeof(WindowChange)) as WindowChange[];
     if (changeArray.Length != 0)
     {
         WindowChange change = changeArray[0];
         change.assetList          = task.assetList;
         change.submitResultCode   = task.resultCode;
         change.submitErrorMessage = null;
         if ((task.resultCode & 2) != 0)
         {
             string str = "";
             foreach (Message message in task.messages)
             {
                 if (message.severity == Message.Severity.Error)
                 {
                     change.submitErrorMessage = change.submitErrorMessage + str + message.message;
                 }
             }
         }
         if ((task.resultCode & 3) != 0)
         {
             WindowPending.UpdateAllWindows();
             if (change.changeSet == null)
             {
                 Provider.Status("").Wait();
                 WindowPending.ExpandLatestChangeSet();
             }
         }
         if ((task.resultCode & 1) != 0)
         {
             change.ResetAndClose();
         }
         else
         {
             change.RefreshList();
         }
     }
 }
示例#12
0
 public static void Open(AssetList list, bool submit)
 {
     WindowChange.Open((ChangeSet)null, list, submit);
 }
示例#13
0
        void OnGUI()
        {
            cancelled = false;
            GUILayout.Label("Conflicting files to resolve", EditorStyles.boldLabel);
            GUILayout.FlexibleSpace();

            // I would use GUIUtility.GetLastRect() here after the box but that seems to have wierd side effects.
            Rect r1 = new Rect(6, 40, position.width - 12, position.height - 112);  // 82

            GUILayout.BeginArea(r1);
            GUILayout.Box("", GUILayout.ExpandWidth(true), GUILayout.ExpandHeight(true));
            GUILayout.EndArea();

            bool repaint = resolveList.OnGUI(new Rect(r1.x + 2, r1.y + 2, r1.width - 4, r1.height - 4), true);

            GUILayout.FlexibleSpace();

            GUILayout.BeginHorizontal();
            GUI.enabled = assetList.Count > 0;

            GUILayout.Label("Resolve selection by:");

            using (new EditorGUI.DisabledScope(resolveList.SelectedAssets.Count == 0))
            {
                bool          methodWasSelected = false;
                ResolveMethod resolveMethod     = ResolveMethod.UseMine;

                if (GUILayout.Button("using local version"))
                {
                    methodWasSelected = true;
                    resolveMethod     = ResolveMethod.UseMine;
                }

                if (GUILayout.Button("using incoming version"))
                {
                    methodWasSelected = true;
                    resolveMethod     = ResolveMethod.UseTheirs;
                }

                if (GUILayout.Button("merging"))
                {
                    methodWasSelected = true;
                    resolveMethod     = ResolveMethod.UseMerged;
                }

                //                        We don't want to prompt the user about saving the current scene when using the local or incoming versions
                if (methodWasSelected && ((resolveMethod != ResolveMethod.UseMerged) || WindowChange.PromptUserToSaveDirtyScenes(assetList)))
                {
                    if (resolveMethod == ResolveMethod.UseMerged)
                    {
                        Task t = Provider.Merge(resolveList.SelectedAssets);
                        t.Wait();

                        if (t.success)
                        {
                            t = Provider.Resolve(t.assetList, ResolveMethod.UseMerged);
                            t.Wait();
                            if (t.success)
                            {
                                // Check that there are not more conflicts for the specified
                                // asset. This is possible in e.g. perforce where you handle
                                // one version conflict at a time.
                                t = Provider.Status(assetList);
                                t.Wait();

                                DoOpen(t.assetList);

                                if (t.success && assetList.Count == 0)
                                {
                                    Close();
                                }

                                // The view will be updated with the new conflicts
                            }
                            else
                            {
                                EditorUtility.DisplayDialog("Error resolving", "Error during resolve of files. Inspect log for details", "Close");
                                AssetDatabase.Refresh();
                            }
                        }
                        else
                        {
                            EditorUtility.DisplayDialog("Error merging", "Error during merge of files. Inspect log for details", "Close");
                            AssetDatabase.Refresh();
                        }
                    }
                    else
                    {
                        SimpleMerge(resolveMethod);
                    }
                }
            }

            GUILayout.FlexibleSpace();

            GUILayout.EndHorizontal();
            GUILayout.Space(12);

            GUILayout.BeginHorizontal();
            GUILayout.FlexibleSpace();

            GUI.enabled = true;

            if (GUILayout.Button("Cancel"))
            {
                cancelled = true;
                Close();
            }

            GUILayout.EndHorizontal();
            GUILayout.Space(12);
            if (repaint)
            {
                Repaint();
            }
        }