private void menuItemLoadBackgroundSession_Click(object sender, EventArgs e) { // Sanity checks if (!session.IsLoaded) { MessageBox.Show("Session is not loaded"); return; } FolderBrowserDialog dialog = new FolderBrowserDialog(); dialog.SelectedPath = settings.SessionRootDirectory; dialog.Description = "Select background session directory"; dialog.ShowNewFolderButton = false; if (dialog.ShowDialog() == DialogResult.OK) { ClearBackground(); Session bkgSess = new Session(); string bkgSessionFile = dialog.SelectedPath + Path.DirectorySeparatorChar + "session.json"; if (!File.Exists(bkgSessionFile)) { Utils.Log.Add("ERROR: Can not load background session. Directory " + dialog.SelectedPath + " has no session.json file"); return; } // Deserialize session object bkgSess = JsonConvert.DeserializeObject<Session>(File.ReadAllText(bkgSessionFile)); if (!bkgSess.LoadGEFactor()) Utils.Log.Add("WARNING: Loading GEFactor failed for background session " + bkgSess.Name); // Load background spectrums if (!bkgSess.LoadSpectrums(dialog.SelectedPath)) { Utils.Log.Add("ERROR: Loading spectrums failed for background session " + bkgSess.Name); return; } // Make sure session and backgrouns has the same number of channels if (bkgSess.NumChannels != session.NumChannels) { bkgSess.Clear(); MessageBox.Show("Cannot load a background with different number of channels than the session"); return; } // Store background in session session.SetBackground(bkgSess); lblBackground.Text = "Background: " + bkgSess.Name; Utils.Log.Add("Background " + bkgSess.Name + " loaded for session " + session.Name); } }