Пример #1
0
    void OnGUI()
    {
        if (Event.current.type == EventType.Layout)
        {
            _noGuiSkinFound                  = _usedSkin == null;
            _loadingValuesFromThread         = !string.IsNullOrEmpty(GetValueMessage);
            _buildInfoHasNoContentsToDisplay = !BuildReportTool.Util.BuildInfoHasContents(_buildInfo);
        }

        //GUI.Label(new Rect(5, 100, 800, 20), "BuildReportTool.Util.ShouldReload: " + BuildReportTool.Util.ShouldReload + " EditorApplication.isCompiling: " + EditorApplication.isCompiling);
        if (_noGuiSkinFound)
        {
            GUI.Label(new Rect(20, 20, 500, 100), BuildReportTool.Options.BUILD_REPORT_PACKAGE_MISSING_MSG);
            return;
        }

        GUI.skin = _usedSkin;

        DrawTopRowButtons();


        GUI.Label(new Rect(0, 0, position.width, 20), BuildReportTool.Info.ReadableVersion,
                  BuildReportTool.Window.Settings.VERSION_STYLE_NAME);


        // loading message
        if (LoadingValuesFromThread)
        {
            DrawCentralMessage(GetValueMessage);
            return;
        }

        bool requestRepaint = false;

        // content to show when there is no build report on display
        if (_buildInfoHasNoContentsToDisplay)
        {
            if (IsInOptionsCategory)
            {
                GUILayout.Space(40);
                _optionsScreen.DrawGUI(position, _buildInfo, _assetDependencies, out requestRepaint);
            }
            else if (IsInHelpCategory)
            {
                GUILayout.Space(40);
                _helpScreen.DrawGUI(position, _buildInfo, _assetDependencies, out requestRepaint);
            }
            else if (IsWaitingForBuildCompletionToGenerateBuildReport)
            {
                DrawCentralMessage(Labels.WAITING_FOR_BUILD_TO_COMPLETE_MSG);
            }
            else
            {
                DrawCentralMessage(Labels.NO_BUILD_INFO_FOUND_MSG);

                if (ReportGenerator.CheckIfUnityHasNoLogArgument())
                {
                    DrawWarningMessage(Labels.FOUND_NO_LOG_ARGUMENT_MSG);
                }
            }

            if (requestRepaint)
            {
                Repaint();
            }

            return;
        }


        GUILayout.Space(50);         // top padding (top row buttons are 40 pixels)


        var mouseHasMoved = Mathf.Abs(Event.current.mousePosition.x - _lastMousePos.x) > 0 ||
                            Mathf.Abs(Event.current.mousePosition.y - _lastMousePos.y) > 0;


        // category buttons

        int oldSelectedCategoryIdx = _selectedCategoryIdx;

        GUILayout.BeginHorizontal();
        if (GUILayout.Toggle(IsInOverviewCategory, "Overview", BuildReportTool.Window.Settings.TAB_LEFT_STYLE_NAME,
                             GUILayout.ExpandWidth(true)))
        {
            _selectedCategoryIdx = OVERVIEW_IDX;
        }

        if (GUILayout.Toggle(IsInBuildSettingsCategory, "Project Settings",
                             BuildReportTool.Window.Settings.TAB_MIDDLE_STYLE_NAME, GUILayout.ExpandWidth(true)))
        {
            _selectedCategoryIdx = BUILD_SETTINGS_IDX;
        }

        if (GUILayout.Toggle(IsInSizeStatsCategory, "Size Stats", BuildReportTool.Window.Settings.TAB_MIDDLE_STYLE_NAME,
                             GUILayout.ExpandWidth(true)))
        {
            _selectedCategoryIdx = SIZE_STATS_IDX;
        }

        if (GUILayout.Toggle(IsInUsedAssetsCategory, "Used Assets", BuildReportTool.Window.Settings.TAB_MIDDLE_STYLE_NAME,
                             GUILayout.ExpandWidth(true)))
        {
            _selectedCategoryIdx = USED_ASSETS_IDX;
        }

        if (GUILayout.Toggle(IsInUnusedAssetsCategory, "Unused Assets",
                             BuildReportTool.Window.Settings.TAB_RIGHT_STYLE_NAME, GUILayout.ExpandWidth(true)))
        {
            _selectedCategoryIdx = UNUSED_ASSETS_IDX;
        }

        /*GUILayout.Space(20);
         *
         * if (GUILayout.Toggle(IsInOptionsCategory, _toolbarLabelOptions, BuildReportTool.Window.Settings.TAB_LEFT_STYLE_NAME, GUILayout.ExpandWidth(true)))
         * {
         *      _selectedCategoryIdx = OPTIONS_IDX;
         * }
         * if (GUILayout.Toggle(IsInHelpCategory, _toolbarLabelHelp, BuildReportTool.Window.Settings.TAB_RIGHT_STYLE_NAME, GUILayout.ExpandWidth(true)))
         * {
         *      _selectedCategoryIdx = HELP_IDX;
         * }*/
        GUILayout.EndHorizontal();


        if (oldSelectedCategoryIdx != OPTIONS_IDX && _selectedCategoryIdx == OPTIONS_IDX)
        {
            // moving into the options screen
            _fileFilterGroupToUseOnOpeningOptionsWindow = BuildReportTool.Options.FilterToUseInt;
        }
        else if (oldSelectedCategoryIdx == OPTIONS_IDX && _selectedCategoryIdx != OPTIONS_IDX)
        {
            // moving away from the options screen
            _fileFilterGroupToUseOnClosingOptionsWindow = BuildReportTool.Options.FilterToUseInt;

            if (_fileFilterGroupToUseOnOpeningOptionsWindow != _fileFilterGroupToUseOnClosingOptionsWindow)
            {
                RecategorizeDisplayedBuildInfo();
            }
        }

        bool requestRepaintOnTabs = false;

        // main content
        GUILayout.BeginHorizontal();
        //GUILayout.Space(3); // left padding
        GUILayout.BeginVertical();

        if (IsInOverviewCategory)
        {
            _overviewScreen.DrawGUI(position, _buildInfo, _assetDependencies, out requestRepaintOnTabs);
        }
        else if (IsInBuildSettingsCategory)
        {
            _buildSettingsScreen.DrawGUI(position, _buildInfo, _assetDependencies, out requestRepaintOnTabs);
        }
        else if (IsInSizeStatsCategory)
        {
            _sizeStatsScreen.DrawGUI(position, _buildInfo, _assetDependencies, out requestRepaintOnTabs);
        }
        else if (IsInUsedAssetsCategory)
        {
            _usedAssetsScreen.DrawGUI(position, _buildInfo, _assetDependencies, out requestRepaintOnTabs);
        }
        else if (IsInUnusedAssetsCategory)
        {
            _unusedAssetsScreen.DrawGUI(position, _buildInfo, _assetDependencies, out requestRepaintOnTabs);
        }
        else if (IsInOptionsCategory)
        {
            _optionsScreen.DrawGUI(position, _buildInfo, _assetDependencies, out requestRepaintOnTabs);
        }
        else if (IsInHelpCategory)
        {
            _helpScreen.DrawGUI(position, _buildInfo, _assetDependencies, out requestRepaintOnTabs);
        }

        GUILayout.FlexibleSpace();
        GUILayout.EndVertical();
        //GUILayout.Space(5); // right padding
        GUILayout.EndHorizontal();

        //GUILayout.Space(10); // bottom padding

        if (requestRepaintOnTabs)
        {
            _buildInfo.FlagOkToRefresh();
        }

        _lastMousePos   = Event.current.mousePosition;
        _lastMouseMoved = mouseHasMoved;
    }