示例#1
0
        public SpeakersManager(Speaker originalSpeaker, WPFTranscription transcription, SpeakerCollection documentSpeakers, SpeakerCollection localSpeakers = null)
        {
            DataContext       = this;//not good :)
            _originalSpeaker  = originalSpeaker;
            _localSpeakers    = localSpeakers;
            _documentSpeakers = documentSpeakers;
            _transcription    = transcription;

            InitializeComponent();
            SpeakerProvider = new SpeakerManagerViewModel(new SpeakerCollection(documentSpeakers.Concat(transcription.EnumerateParagraphs().Select(p => p.Speaker)).Where(s => s != Speaker.DefaultSpeaker).Distinct()), localSpeakers, transcription.Api, this);

            var ss = SpeakerProvider.GetContainerForSpeaker(originalSpeaker);

            if (ss != null)
            {
                ss.Marked = true;
            }
            SpeakersBox.SelectedValue = ss;
            SpeakersBox.ScrollIntoView(SpeakersBox.SelectedItem);

            if (_transcription.Api != null)
            {
                SpeakerProvider.ShowLocal  = false;
                SpeakerProvider.ShowOnline = true;
            }
            //SpeakersBox.Items.SortDescriptions.Add( new SortDescription("",ListSortDirection.Ascending));
        }
示例#2
0
        private void MenuItem_MergeSpeakers(object sender, RoutedEventArgs e)
        {
            var             selectedSpeaker = ((SpeakerContainer)SpeakersBox.SelectedValue).Speaker;
            SpeakersManager sm2             = new SpeakersManager(selectedSpeaker, _transcription, _documentSpeakers, _localSpeakers)
            {
                MessageLabel = Properties.Strings.SpeakersManagerSpeakerMergeLabel,
                Message      = selectedSpeaker.FullName,
                Editable     = false,
                SelectMany   = true
            };

            if (sm2.ShowDialog() == true)
            {
                var speakers = sm2.SpeakersBox.SelectedItems.Cast <SpeakerContainer>().Select(x => x.Speaker).ToList();
                speakers.Remove(selectedSpeaker);

                //merge
                selectedSpeaker.Merges.AddRange(speakers.Select(s => new DBMerge(s.DBID, s.DataBaseType)));
                selectedSpeaker.Merges.AddRange(speakers.SelectMany(s => s.Merges));

                if (speakers.Count == 0)
                {
                    return;
                }

                if (MessageBox.Show(string.Format(Properties.Strings.SpeakersManagerSpeakerMergeDialogQuestionFormat, string.Join("\", \"", speakers.Select(s => s.FullName)), selectedSpeaker.FullName), Properties.Strings.SpeakersManagerSpeakerMergeDialogCaption, MessageBoxButton.YesNo, MessageBoxImage.Question) == MessageBoxResult.Yes)
                {
                    using (SpeakerProvider.DeferRefresh())
                    {
                        foreach (var s in speakers)
                        {
                            if (_documentSpeakers != null)
                            {
                                _documentSpeakers.RemoveSpeaker(s);
                            }
                            if (_localSpeakers != null)
                            {
                                _localSpeakers.RemoveSpeaker(s);
                            }


                            SpeakerProvider.DeleteSpeaker(s);
                        }
                    }

                    _transcription.BeginUpdate();
                    foreach (TranscriptionParagraph tp in _transcription.EnumerateParagraphs())
                    {
                        if (speakers.Contains(tp.Speaker))
                        {
                            tp.Speaker = selectedSpeaker;
                        }
                    }
                    _transcription.EndUpdate();

                    SpeakerProvider.Refresh();
                    SpeakersBox.UnselectAll();
                }
            }
        }
示例#3
0
        private void MenuItem_NewSpeaker(object sender, RoutedEventArgs e)
        {
            Speaker sp;

            if (_speakerProvider.IsOnline)
            {
                sp = new ApiSynchronizedSpeaker("-----", "-----", Speaker.Sexes.X)
                {
                    IsSaved      = false,
                    DataBaseType = DBType.Api,
                }
            }
            ;
            else
            {
                sp = new Speaker("-----", "-----", Speaker.Sexes.X, null)
                {
                    DataBaseType = DBType.User
                }
            };;

            NewSpeaker = sp;

            SpeakerProvider.AddTempSpeaker(sp);

            var ss = SpeakerProvider.GetContainerForSpeaker(sp);

            SpeakersBox.SelectedValue = ss;
            ss.New     = true;
            ss.Changed = true;
            SpeakersBox.ScrollIntoView(SpeakersBox.SelectedItem);
        }
示例#4
0
        private void SpeakersBox_MouseDown(object sender, MouseButtonEventArgs e)
        {
            var sp = (SpeakerContainer)SpeakersBox.GetObjectAtPoint <ListBoxItem>(e.GetPosition(SpeakersBox));

            if (SpeakersBox.SelectedItem != sp)
            {
                SpeakersBox.SelectedItem = sp;
            }
        }
示例#5
0
        private void MenuItem_DeleteSpeaker(object sender, RoutedEventArgs e)
        {
            var selectedSpeaker = ((SpeakerContainer)SpeakersBox.SelectedValue).Speaker;

            if (MessageBox.Show(string.Format(Properties.Strings.SpeakersManagerDeleteSpeakerDialogFormat, selectedSpeaker), Properties.Strings.SpeakersManagerDeleteSpeakerDialogQuestion, MessageBoxButton.YesNo, MessageBoxImage.Question) == MessageBoxResult.Yes)
            {
                using (SpeakerProvider.DeferRefresh())
                {
                    SpeakerProvider.DeleteSpeaker(selectedSpeaker);
                    _transcription.BeginUpdate();
                    foreach (TranscriptionParagraph tp in _transcription.EnumerateParagraphs())
                    {
                        if (tp.Speaker == selectedSpeaker)
                        {
                            tp.Speaker = Speaker.DefaultSpeaker;
                        }
                    }
                    _transcription.EndUpdate();
                }
                SpeakersBox.UnselectAll();
            }
        }