Пример #1
0
        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);
            }
        }