private void OpenFile(string fileName)
        {
            XmlSerializer     serializer = new XmlSerializer(typeof(WhiskerTrackerXml));
            WhiskerTrackerXml whiskerTracker;

            using (StreamReader reader = new StreamReader(fileName))
            {
                whiskerTracker = (WhiskerTrackerXml)serializer.Deserialize(reader);
            }

            if (!File.Exists(whiskerTracker.ClipSettings.ClipFilePath))
            {
                MessageBoxResult result = MessageBox.Show("File not found, would you like to browse for it?", "File not found", MessageBoxButton.YesNo, MessageBoxImage.Question);

                if (result == MessageBoxResult.Yes)
                {
                    whiskerTracker.ClipSettings.ClipFilePath = FileBrowser.BroseForVideoFiles();

                    if (string.IsNullOrWhiteSpace(whiskerTracker.ClipSettings.ClipFilePath))
                    {
                        return;
                    }
                }
                else
                {
                    return;
                }
            }

            WorkingFile  = fileName;
            WhiskerVideo = ModelResolver.Resolve <IWhiskerVideo>();
            WhiskerVideo.SetVideo(whiskerTracker.ClipSettings.ClipFilePath);
            m_VideoWidth  = (int)WhiskerVideo.Width;
            m_VideoHeight = (int)WhiskerVideo.Height;
            FrameCount    = WhiskerVideo.FrameCount;

            GlobalSettings.GlobalSettings.ClipSettings = whiskerTracker.ClipSettings.GetClipSettings();
            GlobalSettings.GlobalSettings.ClipSettings.Commit();
            GlobalSettings.GlobalSettings.UnitSettings = whiskerTracker.UnitSettings.GetSettings();
            GlobalSettings.GlobalSettings.UnitSettings.Commit();
            GlobalSettings.GlobalSettings.FrameRateSettings = whiskerTracker.FrameRateSettings.GetSettings();
            GlobalSettings.GlobalSettings.FrameRateSettings.Commit();

            Image         = null;
            Started       = false;
            VideoSelected = true;
            ClearUndoActions();

            Dictionary <int, MouseFrameViewModel> frames = new Dictionary <int, MouseFrameViewModel>();

            foreach (MouseFrameXml mouseFrame in whiskerTracker.Frames)
            {
                frames.Add(mouseFrame.IndexNumber, new MouseFrameViewModel(mouseFrame.GetMouseFrame()));
            }

            StartPicking(frames);
        }
        private void NewSession()
        {
            string fileName = FileBrowser.BroseForVideoFiles();

            if (string.IsNullOrWhiteSpace(fileName))
            {
                return;
            }

            WhiskerVideo = ModelResolver.Resolve <IWhiskerVideo>();
            WhiskerVideo.SetVideo(fileName);
            m_VideoWidth  = (int)WhiskerVideo.Width;
            m_VideoHeight = (int)WhiskerVideo.Height;
            FrameCount    = WhiskerVideo.FrameCount;

            ClipSettingsView            clipSettingsView = new ClipSettingsView();
            ClipSettingsWindowViewModel viewModel        = new ClipSettingsWindowViewModel(WhiskerVideo);

            clipSettingsView.DataContext = viewModel;

            clipSettingsView.ShowDialog();

            if (viewModel.ExitResult != WindowExitResult.Ok)
            {
                return;
            }

            IClipSettings clipSettings = viewModel.Model;

            GlobalSettings.GlobalSettings.ClipSettings = clipSettings;
            GlobalSettings.GlobalSettings.ClipSettings.Commit();

            GlobalSettings.GlobalSettings.FrameRateSettings.CurrentFrameRate  = WhiskerVideo.FrameRate;
            GlobalSettings.GlobalSettings.FrameRateSettings.OriginalFrameRate = viewModel.OriginalFrameRate;

            Image         = null;
            Started       = false;
            VideoSelected = true;

            StartPicking();

            WorkingFile = string.Empty;
            ClearUndoActions();
        }