Example #1
0
        private void ModuleUI(Module module)
        {
            string text = "      " + module.available_module.name;

            if (module.update_available)
            {
                text = "                  " + text;
            }
            module.ui_expanded = Foldout(text, module.ui_expanded);
            Rect rect = GUILayoutUtility.GetLastRect();

            rect.x      += 20;
            rect.y      += 1;
            rect.width   = 20;
            rect.height -= 4;

            bool is_installed = module.installed_module != null;

            EditorGUI.BeginDisabledGroup(!module.available_requirement_fullfilled);
            EditorGUI.BeginChangeCheck();
            bool install = GUI.Toggle(rect, is_installed, "");

            if (EditorGUI.EndChangeCheck())
            {
                ModuleHandler.InstallRemoveModule(module, install);
            }
            if (module.update_available)
            {
                rect.x    += 20;
                rect.width = 55;
                GUIStyle style = new GUIStyle(EditorStyles.miniButton);
                style.fixedHeight = 17;
                if (GUI.Button(rect, "Update", style))
                {
                    ModuleHandler.UpdateModule(module);
                }
            }
            //add update notification
            if (module.ui_expanded)
            {
                EditorGUI.indentLevel += 1;
                ModuleUIDetails(module);
                EditorGUI.indentLevel -= 1;
            }

            EditorGUI.EndDisabledGroup();
        }
Example #2
0
        private void GUIModulesInstalation()
        {
            if (ModuleHandler.GetModules() == null)
            {
                return;
            }
            if (ModuleHandler.GetModules().Count > 0)
            {
                GUILayout.Label("Extra Modules", EditorStyles.boldLabel);
            }
            bool disabled = false;

            foreach (ModuleHeader module in ModuleHandler.GetModules())
            {
                if (module.is_being_installed_or_removed)
                {
                    disabled = true;
                }
            }
            EditorGUI.BeginDisabledGroup(disabled);
            foreach (ModuleHeader module in ModuleHandler.GetModules())
            {
                EditorGUILayout.BeginHorizontal();
                EditorGUI.BeginDisabledGroup(!module.available_requirement_fullfilled);
                EditorGUI.BeginChangeCheck();
                bool is_installed     = Helper.ClassExists(module.available_module.classname);
                bool update_available = is_installed;
                if (module.installed_module != null)
                {
                    update_available = Helper.compareVersions(module.installed_module.version, module.available_module.version) == 1;
                }
                string displayName = module.available_module.name;
                if (module.installed_module != null)
                {
                    displayName += " v" + module.installed_module.version;
                }

                bool install = GUILayout.Toggle(is_installed, new GUIContent(displayName, module.available_module.description), GUILayout.ExpandWidth(false));
                if (EditorGUI.EndChangeCheck())
                {
                    ModuleHandler.InstallRemoveModule(module, install);
                }
                if (update_available)
                {
                    if (GUILayout.Button("update to v" + module.available_module.version, GUILayout.ExpandWidth(false)))
                    {
                        ModuleHandler.UpdateModule(module);
                    }
                }
                EditorGUI.EndDisabledGroup();
                if (module.available_module.requirement != null && (update_available || !is_installed))
                {
                    GUIStyle requirementStyle = new GUIStyle(EditorStyles.label);
                    requirementStyle.normal.textColor = greenStyle.normal.textColor;
                    if (!module.available_requirement_fullfilled)
                    {
                        requirementStyle.normal.textColor = redInfostyle.normal.textColor;
                    }
                    GUILayout.Label("Requirements: " + module.available_module.requirement.ToString(), requirementStyle);
                }
                EditorGUILayout.EndHorizontal();
            }
            EditorGUI.EndDisabledGroup();
        }