internal void Initialize(Ebu.EbuGeneralSubtitleInformation header, byte justificationCode, string fileName, Subtitle subtitle) { _header = header; _subtitle = subtitle; FillFromHeader(header); if (!string.IsNullOrEmpty(fileName)) { try { FillHeaderFromFile(fileName); } catch (Exception ex) { System.Diagnostics.Debug.WriteLine("EbuOptions unable to read existing file: " + fileName + " - " + ex.Message); } string title = Path.GetFileNameWithoutExtension(fileName); if (title.Length > 32) title = title.Substring(0, 32).Trim(); textBoxOriginalProgramTitle.Text = title; } comboBoxJustificationCode.SelectedIndex = justificationCode; Text = Configuration.Settings.Language.EbuSaveOptions.Title; buttonOK.Text = Configuration.Settings.Language.General.Ok; buttonCancel.Text = Configuration.Settings.Language.General.Cancel; }
public void Initialize(Ebu.EbuGeneralSubtitleInformation header, byte justificationCode, string fileName, Subtitle subtitle) { _header = header; _justificationCode = justificationCode; _fileName = fileName; _subtitle = subtitle; }
private void toolStripMenuItemEbuProperties_Click(object sender, EventArgs e) { using (var properties = new EbuSaveOptions()) { if (_subtitle != null && _subtitle.Header != null && (_subtitle.Header.Contains("STL2") || _subtitle.Header.Contains("STL3"))) { var header = Ebu.ReadHeader(Encoding.UTF8.GetBytes(_subtitle.Header)); properties.Initialize(header, 0, null, _subtitle); } else { var header = new Ebu.EbuGeneralSubtitleInformation(); if (!string.IsNullOrEmpty(_fileName) && new Ebu().IsMine(null, _fileName)) properties.Initialize(header, 0, _fileName, _subtitle); else properties.Initialize(header, 0, null, _subtitle); } properties.ShowDialog(this); } }
private void ComboBoxSubtitleFormatsSelectedIndexChanged(object sender, EventArgs e) { if (comboBoxSubtitleFormats.Text == AdvancedSubStationAlpha.NameOfFormat || comboBoxSubtitleFormats.Text == SubStationAlpha.NameOfFormat) { buttonStyles.Text = Configuration.Settings.Language.BatchConvert.Style; buttonStyles.Visible = true; comboBoxEncoding.Enabled = true; } else if (comboBoxSubtitleFormats.Text == Ebu.NameOfFormat) { buttonStyles.Text = Configuration.Settings.Language.BatchConvert.Settings; buttonStyles.Visible = true; if (_ebuGeneralInformation == null) _ebuGeneralInformation = new Ebu.EbuGeneralSubtitleInformation(); comboBoxEncoding.Enabled = true; } else if (comboBoxSubtitleFormats.Text == BluRaySubtitle) { buttonStyles.Text = Configuration.Settings.Language.BatchConvert.Settings; buttonStyles.Visible = true; comboBoxEncoding.Enabled = false; } else { buttonStyles.Visible = false; comboBoxEncoding.Enabled = true; } _assStyle = null; _ssaStyle = null; }
private DialogResult SaveSubtitle(SubtitleFormat format) { if (string.IsNullOrEmpty(_fileName) || _converted) return FileSaveAs(false); try { var sub = GetSaveSubtitle(_subtitle); if (format != null && !format.IsTextBased) { var ebu = format as Ebu; if (ebu != null) { var header = new Ebu.EbuGeneralSubtitleInformation(); if (_subtitle != null && _subtitle.Header != null && (_subtitle.Header.Contains("STL2") || _subtitle.Header.Contains("STL3"))) { header = Ebu.ReadHeader(Encoding.UTF8.GetBytes(_subtitle.Header)); } if (ebu.Save(_fileName, sub, !_saveAsCalled, header)) { _changeSubtitleToString = _subtitle.GetFastHashCode(); Configuration.Settings.RecentFiles.Add(_fileName, FirstVisibleIndex, FirstSelectedIndex, _videoFileName, _subtitleAlternateFileName, Configuration.Settings.General.CurrentVideoOffsetInMs); Configuration.Settings.Save(); } } return DialogResult.OK; } string allText = sub.ToText(format); // Seungki begin if (_splitDualSami && _subtitleAlternate != null) { var s = new Subtitle(_subtitle); foreach (var p in _subtitleAlternate.Paragraphs) s.Paragraphs.Add(p); allText = s.ToText(format); } // Seungki end var currentEncoding = GetCurrentEncoding(); bool isUnicode = currentEncoding == Encoding.Unicode || currentEncoding == Encoding.UTF32 || currentEncoding == Encoding.GetEncoding(12001) || currentEncoding == Encoding.UTF7 || currentEncoding == Encoding.UTF8; if (!isUnicode && (allText.Contains(new[] { '♪', '♫', '♥', '—', '―', '…' }))) // ANSI & music/unicode symbols { if (MessageBox.Show(string.Format(_language.UnicodeMusicSymbolsAnsiWarning), Title, MessageBoxButtons.YesNo) == DialogResult.No) return DialogResult.No; } if (!isUnicode) { allText = NormalizeUnicode(allText); } bool containsNegativeTime = false; foreach (var p in sub.Paragraphs) { if (p.StartTime.TotalMilliseconds < 0 || p.EndTime.TotalMilliseconds < 0) { containsNegativeTime = true; break; } } if (containsNegativeTime) { if (MessageBox.Show(_language.NegativeTimeWarning, Title, MessageBoxButtons.YesNo) == DialogResult.No) return DialogResult.No; } if (File.Exists(_fileName)) { var fileInfo = new FileInfo(_fileName); var fileOnDisk = fileInfo.LastWriteTime; if (_fileDateTime != fileOnDisk && _fileDateTime != new DateTime()) { if (MessageBox.Show(string.Format(_language.OverwriteModifiedFile, _fileName, fileOnDisk.ToShortDateString(), fileOnDisk.ToString("HH:mm:ss"), Environment.NewLine, _fileDateTime.ToShortDateString(), _fileDateTime.ToString("HH:mm:ss")), Title + " - " + _language.FileOnDiskModified, MessageBoxButtons.YesNo) == DialogResult.No) return DialogResult.No; } if (fileInfo.IsReadOnly) { MessageBox.Show(string.Format(_language.FileXIsReadOnly, _fileName)); return DialogResult.No; } } if ((format.GetType() == typeof(WebVTT) || format.GetType() == typeof(WebVTTFileWithLineNumber))) { SetEncoding(Encoding.UTF8); currentEncoding = Encoding.UTF8; } if (ModifierKeys == (Keys.Control | Keys.Shift)) allText = allText.Replace("\r\n", "\n"); if (format.GetType() == typeof(ItunesTimedText) || format.GetType() == typeof(ScenaristClosedCaptions) || format.GetType() == typeof(ScenaristClosedCaptionsDropFrame)) { var outputEnc = new UTF8Encoding(false); // create encoding with no BOM using (var file = new StreamWriter(_fileName, false, outputEnc)) // open file with encoding { file.Write(allText); } } else if (currentEncoding == Encoding.UTF8 && (format.GetType() == typeof(TmpegEncAW5) || format.GetType() == typeof(TmpegEncXml))) { var outputEnc = new UTF8Encoding(false); // create encoding with no BOM using (var file = new StreamWriter(_fileName, false, outputEnc)) // open file with encoding { file.Write(allText); } } else { if (string.IsNullOrWhiteSpace(allText)) { MessageBox.Show(string.Format(_language.UnableToSaveSubtitleX, _fileName), String.Empty, MessageBoxButtons.OK, MessageBoxIcon.Stop); return DialogResult.Cancel; } using (var fs = new FileStream(_fileName, FileMode.Create, FileAccess.Write, FileShare.Read)) using (var sw = new StreamWriter(fs, currentEncoding)) { sw.Write(allText); } } Configuration.Settings.RecentFiles.Add(_fileName, FirstVisibleIndex, FirstSelectedIndex, _videoFileName, _subtitleAlternateFileName, Configuration.Settings.General.CurrentVideoOffsetInMs); Configuration.Settings.Save(); _fileDateTime = File.GetLastWriteTime(_fileName); ShowStatus(string.Format(_language.SavedSubtitleX, _fileName)); _changeSubtitleToString = _subtitle.GetFastHashCode(); return DialogResult.OK; } catch (Exception exception) { MessageBox.Show(exception.Message); return DialogResult.Cancel; } }