예제 #1
0
        /// ------------------------------------------------------------------------------------
        /// <summary>
        /// If user clicks OK and recordings were made or changed, the full path to the EAF
        /// file is returned. Otherwise null is returned.
        /// </summary>
        /// ------------------------------------------------------------------------------------
        public string RecordAnnotations(Form frm, AudioRecordingType annotationType)
        {
            try
            {
                Program.SuspendBackgroundProcesses();

                using (var viewModel = OralAnnotationRecorderDlgViewModel.Create(this, annotationType))
                    using (var dlg = OralAnnotationRecorderBaseDlg.Create(viewModel, annotationType))
                    {
                        if (dlg.ShowDialog(frm) != DialogResult.OK || !viewModel.WereChangesMade)
                        {
                            viewModel.DiscardChanges();
                            return(null);
                        }

                        Analytics.Track("Changes made using Oral Annotation Recorder");

                        var eafFileName = viewModel.Tiers.Save(PathToAnnotatedFile);
                        GenerateOralAnnotationFile(viewModel.Tiers, frm, GenerateOption.ClearAndRegenerateOnDemand);
                        return(eafFileName);
                    }
            }
            finally
            {
                Program.ResumeBackgroundProcesses(true);
            }
        }
        public void Setup()
        {
            _tempAudioFile = MediaFileInfoTests.GetLongerTestAudioFile();
            var tier = new TimeTier(_tempAudioFile);

            tier.AddSegment(0f, 5f);
            tier.AddSegment(5f, 10f);
            tier.AddSegment(15f, 20f);
            tier.AddSegment(25f, 30f);

            var annotationFile = new Mock <AnnotationComponentFile>();

            annotationFile.Setup(a => a.Tiers).Returns(new TierCollection {
                tier
            });

            _componentFile = new Mock <ComponentFile>();
            _componentFile.Setup(f => f.PathToAnnotatedFile).Returns(_tempAudioFile);
            _componentFile.Setup(f => f.GetAnnotationFile()).Returns(annotationFile.Object);

            _model = OralAnnotationRecorderDlgViewModel.Create(_componentFile.Object, AudioRecordingType.Careful);
        }
        /// ------------------------------------------------------------------------------------
        private void CreateModelAndAnnotationFileForType(AudioRecordingType modelType,
                                                         AudioRecordingType fileType, float start, float end)
        {
            if (Directory.Exists(_model.OralAnnotationsFolder))
            {
                Directory.Delete(_model.OralAnnotationsFolder, true);
            }

            _model.Dispose();
            _model = OralAnnotationRecorderDlgViewModel.Create(_componentFile.Object, modelType);

            Directory.CreateDirectory(_model.OralAnnotationsFolder);

            if (fileType == AudioRecordingType.Careful)
            {
                WriteWavFile(Path.Combine(_model.OralAnnotationsFolder,
                                          TimeTier.ComputeFileNameForCarefulSpeechSegment(start, end)));
            }
            else
            {
                WriteWavFile(Path.Combine(_model.OralAnnotationsFolder,
                                          TimeTier.ComputeFileNameForOralTranslationSegment(start, end)));
            }
        }