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(); } }