示例#1
0
    void OnGUI()
    {
        if (m_info == null)
        {
            m_info = new Info();
        }

        bool   foundPath    = false;
        string previousPath = m_info.m_directoryRelative;
        UnityPathSelectionInfo selected;

        UnityPathSelectionInfo.Get(out foundPath, out selected);
        m_info.m_directoryRelative = selected.GetRelativePath(true);
        m_info.m_directoryAbsolute = selected.GetAbsolutePath(true);
        bool changeFound = m_info.m_directoryRelative != previousPath;

        bool resquestRefresh = GUILayout.Button("Refresh");

        if (resquestRefresh || changeFound)
        {
            m_gitInProject.Refresh();
            m_info.m_gitLinksPath = QuickGit.GetAllFolders(m_info.m_directoryAbsolute, true);
            QuickGit.GetGitsInDirectory(m_info.m_directoryAbsolute, out m_info.m_gitLinks);
            m_info.m_projectGitInParent = "";
            GitLinkOnDisk gd;
            QuickGit.GetGitInParents(selected.GetAbsolutePath(true), QuickGit.PathReadDirection.LeafToRoot, out gd);
            if (gd != null)
            {
                m_info.m_projectGitInParent = gd.GetDirectoryPath();
            }
        }


        EditorGUILayout.TextField("Relative >", m_info.m_directoryRelative);
        EditorGUILayout.TextField("Abosluete > ", m_info.m_directoryAbsolute);

        // if (foundPath)
        {
            if (!string.IsNullOrEmpty(m_info.m_projectGitInParent))
            {
                EditorGUILayout.TextField("Parent Git", m_info.m_projectGitInParent.Length <= 0?"Project is not in a git.": m_info.m_projectGitInParent);
            }

            m_info.m_displayAllFolder = EditorGUILayout.Toggle("All Directory", m_info.m_displayAllFolder);
            if (m_info.m_displayAllFolder)
            {
                for (int i = 0; i < m_info.m_gitLinksPath.Length; i++)
                {
                    m_info.m_gitLinksPath[i] = EditorGUILayout.TextField("Directory", m_info.m_gitLinksPath[i]);
                }
            }

            m_info.m_displayAllGitInFolder = EditorGUILayout.Toggle("All Repository", m_info.m_displayAllGitInFolder);
            if (m_info.m_displayAllGitInFolder)
            {
                for (int i = 0; i < m_info.m_gitLinks.Count; i++)
                {
                    GitEditorDrawer.DisplayGitInfoWithCommand(m_info.m_gitLinks[i], ref m_info.m_displayprojectsInfo[i], ref m_info.m_displayInfoInGits[i]);
                    EditorGUILayout.Space();
                }
            }
        }

        GUILayout.BeginHorizontal();
        GitEditorDrawer.ButtonDeleteEmptyFiles(m_info.m_directoryAbsolute);
        GitEditorDrawer.ButtonRefreshGitKeeper(m_info.m_directoryAbsolute);
        GUILayout.EndHorizontal();
    }
    void OnGUI()
    {
        if (m_info == null)
        {
            m_info = new Info(50);
        }

        m_info.m_scollrPackagePosition = GUILayout.BeginScrollView(m_info.m_scollrPackagePosition);
        if (m_info == null)
        {
            m_info = new Info(50);
        }
        if (GUILayout.Button("Refresh"))
        {
            m_gitInProject.Refresh();
        }
        GUILayout.BeginHorizontal();
        GitEditorDrawer.ButtonDeleteEmptyFiles(UnityPaths.GetUnityAssetsPath());
        GitEditorDrawer.ButtonRefreshGitKeeper(UnityPaths.GetUnityAssetsPath());
        GUILayout.EndHorizontal();

        if (GUILayout.Button("Save Them All (Add>Commit)"))
        {
            m_gitInProject.AutoSaveLocal();
        }
        if (GUILayout.Button("Push Them All (A>C>Pull>Push)"))
        {
            m_gitInProject.AutoSaveAndPush();
        }
        m_info.m_inParent = EditorGUILayout.Toggle(" > Git(s) In Parent", m_info.m_inParent, EditorStyles.boldLabel);
        if (m_info.m_inParent)
        {
            List <GitLinkOnDisk> gits = m_gitInProject.GetParents();

            if (gits.Count <= 0)
            {
                GUILayout.Label("None found");
            }
            for (int i = 0; i < gits.Count; i++)
            {
                if (i >= m_info.m_tableCapacity)
                {
                    break;
                }
                GitEditorDrawer.DisplayGitInfoWithCommand(gits[i], ref m_info.m_displayprojectsInfoParent[i], ref m_info.m_displayInfoInGitsParent[i]);
                EditorGUILayout.Space();
            }
        }
        GUILayout.Space(space);
        m_info.m_inProject = EditorGUILayout.Toggle(" > Git(s) In Assets", m_info.m_inProject, EditorStyles.boldLabel);
        if (m_info.m_inProject)
        {
            List <GitLinkOnDisk> gits = m_gitInProject.GetGitInProject();
            if (gits.Count <= 0)
            {
                GUILayout.Label("None found");
            }
            for (int i = 0; i < gits.Count; i++)
            {
                if (i >= m_info.m_tableCapacity)
                {
                    break;
                }
                GitEditorDrawer.DisplayGitInfoWithCommand(gits[i], ref m_info.m_displayprojectsInfoInProject[i], ref m_info.m_displayInfoInGitsInProject[i]);
                EditorGUILayout.Space();
            }
        }

        GUILayout.Space(space);
        GUILayout.EndScrollView();
    }