Esempio n. 1
0
            private void Window(int id)
            {
                Configuration config = SAVE.configuration;

                DISPLAY lastDisplay = display;

                BackupManager manager = SAVE.manager;

                try
                {
                    GUILayout.BeginVertical();
                    GUILayout.BeginHorizontal();
                    GUI.enabled = manager.RestoreCompleted() && manager.BackupsCompleted() && manager.NumberOfBackupSets() > 0;
                    if (GUILayout.Button("Backup All", GUI.skin.button))
                    {
                        display = DISPLAY.BACKUP;
                        // don't start another backup if there is still a backup running
                        if (SAVE.manager.BackupsCompleted())
                        {
                            backupCount     = manager.BackupAll();
                            backupCloseTime = DateTime.Now.AddSeconds(BACKUP_DISPLAY_REMAINS_OPEN_TIME);
                        }
                        else
                        {
                            Log.Warning("won't start another backup until all backups finished");
                        }
                    }
                    GUI.enabled = true;
                    // Restore
                    GUI.enabled = manager.NumberOfBackupSets() > 0;
                    if (DrawDisplayToggle("Restore", DISPLAY.RESTORE) && !SAVE.manager.RestoreCompleted())
                    {
                        display = DISPLAY.RESTORING;
                    }
                    GUI.enabled = true;
                    // Configure
                    DrawDisplayToggle("Configure", DISPLAY.CONFIGURE);
                    // Status
                    DrawDisplayToggle("Status", DISPLAY.STATUS);
                    // Hide
                    DrawDisplayToggle("Clone", DISPLAY.CLONE);
                    // Hide
                    DrawDisplayToggle("Hide", DISPLAY.HIDDEN);
                    GUILayout.EndHorizontal();
                    //
                    switch (display)
                    {
                    case DISPLAY.BACKUP:
                        DisplayBackup();
                        break;

                    case DISPLAY.RESTORING:
                        DisplayRestoring();
                        break;

                    case DISPLAY.RESTORE:
                        DisplayRestore();
                        break;

                    case DISPLAY.CONFIGURE:
                        DisplayConfigure();
                        break;

                    case DISPLAY.STATUS:
                        DisplayStatus();
                        break;

                    case DISPLAY.CLONE:
                        DisplayClone();
                        break;

                    case DISPLAY.CLONING:
                        DisplayCloning();
                        break;

                    case DISPLAY.HIDDEN:
                        // are we ingame? then make the window disappear (this shouldn't be neccessary, but just to be sure...)
                        if (HighLogic.LoadedScene == GameScenes.MAINMENU)
                        {
                            SetVisible(true);
                        }
                        else
                        {
                            SetVisible(false);
                        }
                        break;
                    }
                    GUILayout.EndVertical();

                    if (display == DISPLAY.BACKUP && backupCloseTime < DateTime.Now && manager.Queuedbackups() == 0)
                    {
                        display = DISPLAY.HIDDEN;
                    }
                }
                catch (Exception e)
                {
                    Log.Error("exception: " + e.Message);
                }

                // resize GUI if display changes
                if (lastDisplay != display)
                {
                    this.bounds.height = 0;
                }
                if (S.A.V.E.src.util.io.ConfigNodeIO.fixedWindowFloating)
                {
                    GUI.DragWindow();
                }
            }