private void SplitOnWords() { ProgressBar_Model pb = new ProgressBar_Model(); pb.Text = Tx.T("SubtitleEditor.Messages.Processing.SplitOnWords"); pb.Minimum = 0; pb.Maximum = Subtitles.Items.Count; pb.Value = pb.Minimum; ViewModelLocator.AddLongTaskProgressBar(pb); int cnt = 0; Subtitles.IsThereDictionary = true; //if (Subtitles.Dictionary == null) Subtitles.Dictionary = new Dictionary(); // create a new words int loccnt = 0; foreach (SubtitleItem item in Subtitles.Items.OrderBy(x=>x.TimeStart)) { if (item.WordsCollection == null) item.WordsCollection = new SynchronizedObservableCollection<SubtitleItem.Word>(); PhraseOfCollectMode phrase = new PhraseOfCollectMode(item); byte idx = 1; foreach (var wrd in phrase.Words) { // removes doubles //if (item.WordsCollection.Any(x => x.word == wrd.word)) continue; item.WordsCollection.Add(new SubtitleItem.Word { word = wrd.word, number = idx, }); idx++; loccnt++; if (loccnt == 50) { EFDbContext.SaveChgs(); loccnt = 0; } } pb.Value = ++cnt; if (pb.IsCanceled) break; } EFDbContext.SaveChgs(); ViewModelLocator.RemoveLongTaskProgressBar(pb); }
void AddButtons() { PhraseOfCollectMode CurrentPhrase = new PhraseOfCollectMode(LearningItem.CurrentSub); // find analogue List<PhraseOfCollectMode> analogue = LearningItem.MainSubs.PhrasesList.FindAll(x => x.Words.Count == CurrentPhrase.Words.Count); if (analogue.Count < 3){ analogue = LearningItem.MainSubs.PhrasesList.FindAll( x => ((x.Words.Count >= CurrentPhrase.Words.Count - 1) && (x.Words.Count <= CurrentPhrase.Words.Count + 1))); if (analogue.Count < 3) { analogue = LearningItem.MainSubs.PhrasesList; } } // a list of phrases Random rnd = new Random(); SortedList<int, PhraseOfCollectMode> PhrasesForShow = new SortedList<int, PhraseOfCollectMode>(); PhrasesForShow.Add(rnd.Next(0, 32000), CurrentPhrase); for (int i = 0; i < 100; i++) { if (PhrasesForShow.Count == LearningItem.NumberOfPrasesForUndestandingTest) break; PhraseOfCollectMode rndphrase = analogue[rnd.Next(0, analogue.Count)]; if (IsEmpty(rndphrase.SubtitleItem.Text2)) continue; var tlist = PhrasesForShow.Where(x => PhraseOfCollectMode.IsPhraseEqualent(x.Value, rndphrase)); if (tlist.Count() > 0) continue; PhrasesForShow.Add(rnd.Next(0, 32000), rndphrase); } if(PhrasesForShow.Count < LearningItem.NumberOfPrasesForUndestandingTest) { DialogService.Message(Tx.T("UnderstandingTest.Messages.NotEnoughPhrases"),Tx.T("Common.Titles.Error")); return; } // Add to panel ButtonsCollection.Clear(); foreach (var elm in PhrasesForShow) { ButtonsCollection.Add(new ButtonModel() {Text = elm.Value.SubtitleItem.Text2,IsItTrue = elm.Value == CurrentPhrase}); } }
public void SetCurrentWord(WordOfDictionary item) { if (CurrentWord != null) CurrentWord.PropertyChanged -= CurrentWord_PropertyChanged; CurrentWord = item; if (!IsInDesignMode) { CommandDispatcher("SpeechItem"); } CurrentWord.PropertyChanged += CurrentWord_PropertyChanged; // default setting btnOk.Visibility = Visibility.Collapsed; TranslationsPanel_Visibility = Visibility.Collapsed; ImagesList_Visibility = Visibility.Collapsed; EditModeVisibility = Visibility.Collapsed; bool Testing = false; switch (mode) { case Mode.FoundNewWord: Header_LabelModel.Text = Tx.T("WordsTranslation.Caption.NewWordsFound"); Testing = LearningItem.TestingUnderstandingNewWords; btnTrainingNext.Visibility = Visibility.Collapsed; ImagePanelVisibility = Testing ? Visibility.Collapsed : Visibility.Visible; WordsButtonPanelVisibility = Testing ? Visibility.Visible : Visibility.Collapsed; TranslatingVisibility = Testing ? Visibility.Hidden : Visibility.Visible; BottomButtonsPanelVisibility = Testing ? Visibility.Collapsed : Visibility.Visible; break; case Mode.Training: Header_LabelModel.Text = Tx.T("WordsTranslation.Caption.Training"); Testing = true; btnTrainingNext.Visibility = Visibility.Hidden; ImagePanelVisibility = Visibility.Hidden; WordsButtonPanelVisibility = Visibility.Visible; TranslatingVisibility = Visibility.Hidden; BottomButtonsPanelVisibility = Visibility.Collapsed; WordsCollection_ListModel.Visibility = Visibility.Visible; btnPreviousButton.Visibility = Visibility.Collapsed; btnNextButton.Visibility = Visibility.Collapsed; break; case Mode.WordTranslation: Header_LabelModel.Text = Tx.T("WordsTranslation.Caption.Translation"); Testing = false; btnTrainingNext.Visibility = Visibility.Visible; btnPreviousButton.Visibility = Visibility.Hidden; btnNextButton.Visibility = Visibility.Hidden; WordsCollection_ListModel.Visibility = Visibility.Visible; break; case Mode.Edit: btnPreviousButton.Visibility = Visibility.Collapsed; btnNextButton.Visibility = Visibility.Collapsed; WordsCollection_ListModel.Visibility = Visibility.Collapsed; btnOk.Visibility = Visibility.Visible; BottomButtonsPanelVisibility = Visibility.Collapsed; WordsButtonPanelVisibility = Visibility.Collapsed; btnTrainingNext.Visibility = Visibility.Collapsed; TranslatingVisibility = Visibility.Collapsed; TranslationsPanel_Visibility = Visibility.Visible; ImagesList_Visibility = Visibility.Visible; EditModeVisibility = Visibility.Visible; break; default: throw new NotImplementedException(); } /* btnSkip.Visibility = Visibility.Visible; if(Testing) { btnPreviousButton.Visibility = Visibility.Hidden; btnNextButton.Visibility = Visibility.Hidden; WordsCollection_ListModel.Visibility = Visibility.Visible; } else { WordsCollection_ListModel.Visibility = Visibility.Collapsed; btnNextButton.Visibility = idx < WordsCollection.Count - 1 ? Visibility.Visible : Visibility.Hidden; btnPreviousButton.Visibility = idx > 0 ? Visibility.Visible : Visibility.Hidden; } */ if (IsInDesignMode) return; if (Testing) { PhraseOfCollectMode phrase = new PhraseOfCollectMode(); PhraseOfCollectMode.Word trueword = new PhraseOfCollectMode.Word() { word = CurrentWord.translation_as_string }; phrase.Words.Add(trueword); if(CurrentWord.translation_as_string.Length > 0) { ObservableCollection<FrequencyDictionary.Item> coll = CurrentWord.Dictionary.SecondaryLanguage.FrequencyDictionary.GetRndWords(4); foreach(var elm in coll) { phrase.Words.Add(new PhraseOfCollectMode.Word() { word = elm.Lemma}); } } else throw new NotImplementedException("err"); WordsForSelection_Buttons.Clear(); phrase.StartRandomSelection(); for (int i = 0; i < phrase.Words.Count; i++) { PhraseOfCollectMode.Word word = phrase.GetNextRandom(); WordsForSelection_Buttons.Add(new ButtonModel() { Text=word.word, WordOfButton = word,IsItTrue = word == trueword}); } } }
private void AddWordsToPanel(SubtitleItem SubItem) { player.Pause(); CollectPhrases_Buttons.Clear(); if (SubItem == null) return; if (SubItem.IsCollect) { CollectedPhraseText = SubItem.Text; return; } CurrentPhrase = new PhraseOfCollectMode(SubItem); CurrentPhrase.StartRandomSelection(); for (int i = 0; i < CurrentPhrase.Words.Count; i++) { PhraseOfCollectMode.Word word = CurrentPhrase.GetNextRandom(); CollectPhrases_Buttons.Add(new ButtonModel() { WordOfButton = word,Visibility = Visibility.Visible}); } player.Play(); }
private void Controller(PlayerEvent evnt) { SubtitleItem SubItem = evnt.SubItem; Logger.Trace("Event {0}",evnt); if (SubItem == null) { Logger.Trace("Skip because sub is null {1}:{2} {0}", SubItem.Text, SubItem.TimeStart, SubItem.TimeEnd); } switch (evnt.KindOfEvent) { case PlyaerEventEnum.NewSubItem: Logger.Trace("Set a new phrase {1}:{2} {0}", SubItem.Text, SubItem.TimeStart, SubItem.TimeEnd); LearningItem.CurrentSub = SubItem; if (LearningItem.CollectPhrases && !SubItem.IsCollect) { AddWordsToPanel(SubItem); } if (!player.IsPlaying) player.Play(); break; case PlyaerEventEnum.EndOfSubtitle: break; case PlyaerEventEnum.CollectingWordTestPassed: LearningItem.CurrentSub.IsCollect = true; StatList.Add(new StatisticsMessage() { Cmd = StatisticsCmd.PhraseCollected, phrase = CurrentPhrase }); if (LearningItem.UnderstandingTest) { //NavigationService.NavigateForward(ViewModelLocator.UnderstandingTest,new UnderstandingTest_parameters() { LearningItem = LearningItem }); VideoFrameVisibility = Visibility.Hidden; NavigationService.OpenDialog(Form.UnderstandingTest, new UnderstandingTest_parameters() { LearningItem = LearningItem}); //VideoFrameVisibility = Visibility.Visible; } break; case PlyaerEventEnum.UnderstandingTestPassed: VideoFrameVisibility = Visibility.Visible; LearningItem.CurrentSub.IsTestedOnUnderstand = true; StatList.Add(new StatisticsMessage() { Cmd = StatisticsCmd.PassUnderstandingTest, phrase = CurrentPhrase }); break; case PlyaerEventEnum.UnderstandingTestFailed: VideoFrameVisibility = Visibility.Visible; // repeat Collect phrases if Understanding test failed if (LearningItem.CollectPhrases) { LearningItem.CurrentSub.IsCollect = false; AddWordsToPanel(SubItem); } StatList.Clear(); CmdDispatcher("Replay"); return; case PlyaerEventEnum.ClearCurrentSub: LearningItem.CurrentSub = null; CollectPhrases_Buttons.Clear(); CollectedPhraseText = ""; CurrentPhrase = null; return; case PlyaerEventEnum.FoundNewWordsFormClosed: player.Play(); VideoFrameVisibility = Visibility.Visible; break; } bool IsAllTestPassed = true; if (LearningItem.CollectPhrases && !SubItem.IsCollect) IsAllTestPassed = false; if (LearningItem.UnderstandingTest && !SubItem.IsTestedOnUnderstand) IsAllTestPassed = false; if (IsAllTestPassed) { foreach (var elm in StatList) { LearningItem.UpdateStatistics(elm); } StatList.Clear(); player.Play(); /* Controller(new PlayerEvent(PlyaerEventEnum.ClearCurrentSub, SubItem)); Logger.Trace("Controller:CurrentSub = 0 Position {0}",player.Position); player.Play(); */ /* SubtitleItem newsub = LearningItem.MainSubs.GetNextSub(LearningItem.CurrentSub); SetNewPhrase(newsub); */ } switch (evnt.KindOfEvent) { case PlyaerEventEnum.EndOfSubtitle: if (!IsAllTestPassed) { player.Pause(); } else { Controller(new PlayerEvent(PlyaerEventEnum.ClearCurrentSub, SubItem)); Logger.Trace("Controller:CurrentSub = 0 Position {0}", player.Position); player.Play(); } break; case PlyaerEventEnum.NewSubItem: // if (LearningItem.ShowNewWords) { ObservableCollection<WordOfDictionary> CollectionOfNewWords = AppSetting.PersonalDictionary.GetListOfNewWords(SubItem); if (CollectionOfNewWords.Count > 0) { player.Pause(); VideoFrameVisibility = Visibility.Hidden; NavigationService.OpenDialog(Form.WordsTranslation,new WordsTranslation_parameters(){WordsCollection = CollectionOfNewWords,SubtitleItem=SubItem,LearningItem=LearningItem},"EmptyDialog"); //NavigationService.NavigateForward(ViewModelLocator.FoundNewWords,new FoundNewWords_parameters(){NewWordsCollection = CollectionOfNewWords,SubtitleItem=SubItem,LearningItem=LearningItem}); } } break; } }
private void TranslateWord_Cmd(PhraseOfCollectMode.Word word) { WordsTranslation_parameters param = new WordsTranslation_parameters(); param.Mode = WordsTranslation_ViewModel.Mode.WordTranslation; param.WordsCollection = new ObservableCollection<WordOfDictionary>(); param.WordsCollection.Add(new WordOfDictionary() {word = word.word}); param.Dictionary = AppSetting.PersonalDictionary; NavigationService.NavigateForward(Form.WordsTranslation,param); }
public static bool IsPhraseEqualent(PhraseOfCollectMode a, PhraseOfCollectMode b) { if (a.Words.Count != b.Words.Count) { return false; } bool eq = true; for (int i = 0; i < a.Words.Count; i++) { if (a.Words[i] != b.Words[i]) { eq = false; break; } } return eq; }