Ejemplo n.º 1
0
        private void OnBackgroundProcessorWorkCompleted(object s, RunWorkerCompletedEventArgs args)
        {
            if (m_passes.Count == 0)
            {
                foreach (var newRefTextRow in m_dataGridRefTexts.Rows.OfType <DataGridViewRow>().Where(r => s_createActions.Contains((string)r.Cells[colAction.Index].Value) && !r.Cells[colHeSaidText.Index].ReadOnly && !r.Cells[colIsoCode.Index].ReadOnly))
                {
                    // Generate a new metadata file with the above info
                    var languageName = (string)newRefTextRow.Cells[colName.Index].Value;
                    var folder       = Data.GetLanguageInfo(languageName).OutputFolder;
                    var projectPath  = Path.Combine(folder, languageName + Constants.kProjectFileExtension);
                    if (File.Exists(projectPath))
                    {
                        HandleMessageRaised($"File {projectPath} already exists! Skipping. Please verify contents.", true);
                    }
                    else
                    {
                        var metadata = XmlSerializationHelper.DeserializeFromString <GlyssenDblTextMetadata>(Resources.refTextMetadata);
                        metadata.Language = new GlyssenDblMetadataLanguage
                        {
                            Name       = languageName,
                            HeSaidText = newRefTextRow.Cells[colHeSaidText.Index].Value as string,
                            Iso        = newRefTextRow.Cells[colIsoCode.Index].Value as string
                        };
                        metadata.AvailableBooks = new List <Book>();
                        ProjectUtilities.ForEachBookFileInProject(folder,
                                                                  (bookId, fileName) => metadata.AvailableBooks.Add(new Book {
                            Code = bookId, IncludeInScript = true
                        }));
                        metadata.LastModified = DateTime.Now;

                        Exception error;
                        XmlSerializationHelper.SerializeToFile(projectPath, metadata, out error);
                        if (error != null)
                        {
                            HandleMessageRaised(error.Message, true);
                        }
                    }
                }
                m_btnOk.Enabled = m_btnSkipAll.Enabled = true;
            }
            else
            {
                BackgroundProcessor.RunWorkerAsync();
            }
        }