void doOpenFile() { try { if (string.IsNullOrWhiteSpace(MainWindowGuiData.OpenedFilePath)) { clearSrtPanel(); return; } MainWindowGuiData.IsBusy = true; var parser = new ParseSrt(); subtitleItemsDataInternal = parser.ToObservableCollectionFromFile(MainWindowGuiData.OpenedFilePath); MainWindowGuiData.HeaderText = MainWindowGuiData.OpenedFilePath; setFlowDir(parser.IsRtl); } catch (Exception ex) { ExceptionLogger.LogExceptionToFile(ex); LogWindow.AddMessage(LogType.Error, ex.Message); } finally { DispatcherHelper.DispatchAction(enableButtons); MainWindowGuiData.IsBusy = false; } }
public void TestToObservableCollectionFromContent5() { const string contentWithEmptyDialogs = @"1 00:01:57,228 --> 00:02:03,131 .:.:.:.بيست و دو گلوله.:.:.:. 2 00:02:54,963 --> 00:03:00,970 3 00:04:42,295 --> 00:04:48,346 بابا ميذاري منم برم ببينم ؟ آره برو ولي زياد دور نشو باشه"; var result = new ParseSrt().ToObservableCollectionFromContent(contentWithEmptyDialogs); Assert.That(result.Count == 3); Assert.That(result[0].Time == "00:01:57,228 --> 00:02:03,131"); Assert.That(result[2].Time == "00:04:42,295 --> 00:04:48,346"); Assert.That(result[0].Dialog.Contains("بيست")); Assert.That(result[2].Dialog.Contains("زياد")); }
// Private Methods (43) private void addSubtitleToFile(SubtitleItem subtitleItem, string mediaPath) { if (string.IsNullOrWhiteSpace(subtitleItem.Dialog)) { return; } var subtitleFilePath = string.Empty; if (string.IsNullOrWhiteSpace(MainWindowGuiData.OpenedFilePath)) { if (!string.IsNullOrWhiteSpace(mediaPath)) { subtitleFilePath = createEmptySubtitleFile(mediaPath); } else { LogWindow.AddMessage(LogType.Error, "Please open an empty subtitle file first."); return; } } subtitleItemsDataInternal = ParseSrt.AddSubtitleItemToList(subtitleItemsDataInternal, subtitleItem); setFlowDir(subtitleItem.Dialog.ContainsFarsi()); saveToFile(subtitleFilePath); _lastStartTs = subtitleItem.StartTs; doScrollToIndex(subtitleItemsDataInternal.Count - 1); if (!string.IsNullOrEmpty(subtitleFilePath)) { MainWindowGuiData.OpenedFilePath = subtitleFilePath; } App.Messenger.NotifyColleagues("doClearSubtitle"); }
private void saveToFile(string path = "") { var savePath = string.IsNullOrEmpty(path) ? MainWindowGuiData.OpenedFilePath : path; var newContent = ParseSrt.SubitemsToString(subtitleItemsDataInternal); File.WriteAllText(savePath, newContent.ApplyCorrectYeKe(), Encoding.UTF8); LogWindow.AddMessage(LogType.Announcement, string.Format("Saved to:{0}", savePath)); setFlowDir(newContent.ContainsFarsi()); }
private void setMaxWordsPerLine() { var originalValue = SubtitleItemData.Dialog.Trim(); var newValue = ParseSrt.SetMaxWordsPerLine(SubtitleItemData.Dialog); if (originalValue != newValue) { SubtitleItemData.Dialog = newValue; SubtitleItemData.CaretIndex = newValue.Length; } }
public void TestToObservableCollectionFromContent3() { const string contentWithNumbers = @"790 01:01:49,914 --> 01:01:52,416 123 791 01:01:52,583 --> 01:01:56,211 456"; var result = new ParseSrt().ToObservableCollectionFromContent(contentWithNumbers); Assert.That(result.Count == 2); Assert.That(result[0].Time == "01:01:49,914 --> 01:01:52,416"); Assert.That(result[1].Time == "01:01:52,583 --> 01:01:56,211"); Assert.That(result[0].Dialog == "123"); Assert.That(result[1].Dialog == "456"); }
public void TestToObservableCollectionFromContent2() { const string contentWithoutNewLineAtEnd = @"790 01:01:49,914 --> 01:01:52,416 ABCD 791 01:01:52,583 --> 01:01:56,211 EFGH"; var result = new ParseSrt().ToObservableCollectionFromContent(contentWithoutNewLineAtEnd); Assert.That(result.Count == 2); Assert.That(result[0].Time == "01:01:49,914 --> 01:01:52,416"); Assert.That(result[1].Time == "01:01:52,583 --> 01:01:56,211"); Assert.That(result[0].Dialog == "ABCD"); Assert.That(result[1].Dialog == "EFGH"); }
public void TestToObservableCollectionFromContent4() { const string multiLineContent = @"790 01:01:49,914 --> 01:01:52,416 123 1234 791 01:01:52,583 --> 01:01:56,211 789 101112"; var result = new ParseSrt().ToObservableCollectionFromContent(multiLineContent); Assert.That(result.Count == 2); Assert.That(result[0].Time == "01:01:49,914 --> 01:01:52,416"); Assert.That(result[1].Time == "01:01:52,583 --> 01:01:56,211"); Assert.That(result[0].Dialog.Contains("1234")); Assert.That(result[1].Dialog.Contains("1011")); }
private void showDialog() { var subtitle = ParseSrt.GetCurrentSubtile(_subtitleItems, PreviewModelData.MediaPosition); if (subtitle == null) { PreviewModelData.Dialog = string.Empty; return; } if (_lastDialog == subtitle.Dialog) { return; } PreviewModelData.Dialog = subtitle.Dialog; _lastDialog = PreviewModelData.Dialog; PreviewModelData.DialogFlowDirection = subtitle.Dialog.ContainsFarsi() ? FlowDirection.RightToLeft : FlowDirection.LeftToRight; App.Messenger.NotifyColleagues("doScrollToIndex", subtitle.Number - 1); }