コード例 #1
0
        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;
            }
        }
コード例 #2
0
        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("زياد"));
        }
コード例 #3
0
        // 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");
        }
コード例 #4
0
        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());
        }
コード例 #5
0
        private void setMaxWordsPerLine()
        {
            var originalValue = SubtitleItemData.Dialog.Trim();
            var newValue      = ParseSrt.SetMaxWordsPerLine(SubtitleItemData.Dialog);

            if (originalValue != newValue)
            {
                SubtitleItemData.Dialog     = newValue;
                SubtitleItemData.CaretIndex = newValue.Length;
            }
        }
コード例 #6
0
        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");
        }
コード例 #7
0
        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");
        }
コード例 #8
0
        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"));
        }
コード例 #9
0
        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);
        }