Ejemplo n.º 1
0
        public static Subtitles LoadSRTfile(string filename)
        {

            if (!File.Exists(filename))
            {
                return null;
            }

            Subtitles sub = new Subtitles();

            using (StreamReader reader = File.OpenText(filename))
            {
                SubtitleItem elm = GetSubItemFromFile(reader);
                while (elm != null)
                {
                    sub.Items.Add(elm);
                    elm = GetSubItemFromFile(reader);
                }
                reader.Close();
            }
            sub.Name = "[ext] " + filename;
            return sub;
        }
 private void CmdDispatcher_SubtitlesGrid(Subtitles sub,string cmd)
 {
     switch (cmd)
     {
         case "Edit":
             Save();
             Player.Pause();
             NavigationService.NavigateForward(Form.SubtitleEditor,new SubtitleEditor_parameters() { subtitles = sub });
             break;
         default:
             throw new NotImplementedException();
     }
 }
        private void PopulateDesignMode()
        {
            Subtitles = new Subtitles();
            Subtitles.IsThereDictionary = true;

            Subtitles.Items.Add(new SubtitleItem
            {
                Number = 1,
                TimeStart = 10234,
                TimeEnd = 11032,
                Text = "Hello world!",
                Text2 = "Привет мир!",
                WordsCollection = new SynchronizedObservableCollection<SubtitleItem.Word>()
            });

            Subtitles.Items.Add(new SubtitleItem {
                Number =2,
                TimeStart = 12234,
                TimeEnd = 13032,
                Text ="Good news everyone!",
                Text2 ="У нас хорошие новости!",
                WordsCollection = new SynchronizedObservableCollection<SubtitleItem.Word>()
            });

            Subtitles.Items[0].WordsCollection.Add(new SubtitleItem.Word
            {
                number = 1,
                word = "Hello",
                word_of_dictionary = new WordOfDictionary {translation_as_string="Привет" } });

            Subtitles.Items[0].WordsCollection.Add(new SubtitleItem.Word
            {
                number = 2,
                word = "world",
                word_of_dictionary = new WordOfDictionary { translation_as_string = "Мир" }
            });

            Subtitles.Items[0].WordsCollection.Add(new SubtitleItem.Word
            {
                number = 1,
                word ="Hello"
            });                
            Subtitles.Items[0].WordsCollection.Add(new SubtitleItem.Word
            {
                number = 2,
                word ="world"
            });                
            Subtitles.Items[0].WordsCollection.Add(new SubtitleItem.Word
            {
                number = 3,
                word ="world"
            });

            Subtitles.Dictionary = new Dictionary();
            Subtitles.Dictionary.Words = new SynchronizedObservableCollection<WordOfDictionary>();
            Subtitles.Dictionary.Words.Add(new WordOfDictionary {word="Hello",translation_as_string="Привет"});
            Subtitles.Dictionary.Words.Add(new WordOfDictionary {word="Morning",translation_as_string="Утро",dont_auto_add_to_personal_dictionary_for_learning=true});
            Subtitles.Dictionary.Words.Add(new WordOfDictionary {word="Twelve",translation_as_string="Двенадцать",status = WordOfDictionary.WordStatuses.GetByStatus(WordOfDictionary.WordStatuses.enStatus.ManualEditing)});
        }
Ejemplo n.º 4
0
        private static void AnalizeTrackEntry(EbmlReader ebmlReader, MatroskaElementDescriptorProvider medp, ResultOfParsingMKV resPars, StringBuilder sb, string GroupName = "", string add = "")
        {
            ulong TrackNumber = 0;
            ulong TrackUID = 0;
            ulong TrackType = 0;
            ulong FlagDefault = 0;
            ulong FlagLacing = 0;
            string CodecID = "";
            string Name = "";
            ulong  DefaultDuration = 0;
            string Language = "";
            
            ebmlReader.EnterContainer();
            while (ebmlReader.ReadNext())
            {
                var descriptor = medp.GetElementDescriptor(ebmlReader.ElementId);
                if (descriptor == null)
                {
                    sb.Append(add + "undefined \r\n");
                    continue;
                }
                string dName = descriptor.Name;
                sb.Append(add + dName);

                switch (descriptor.Type)
                {
                    case ElementType.MasterElement:
                        sb.Append("\r\n");
                        //ReadContainer(ebmlReader, medp, dicSub, CurrentClusterTimeCode, sb, descriptor.Name, add + "    ");
                        break;
                    case ElementType.AsciiString:
                        string strVal = ebmlReader.ReadAscii();
                        if(dName == "CodecID") CodecID = strVal; 
                        if (dName == "Language") Language = strVal; 
                        sb.Append(" = " + strVal);
                        break;
                    case ElementType.Binary:
                        break;
                    case ElementType.Date:
                        sb.Append(" = " + ebmlReader.ReadDate());
                        break;
                    case ElementType.Float:
                        double flVal = ebmlReader.ReadFloat();
                        sb.Append(" = " + flVal);
                        break;
                    case ElementType.None:
                        sb.Append(" (none)");
                        break;
                    case ElementType.SignedInteger:
                        sb.Append(" = " + ebmlReader.ReadInt());
                        break;
                    case ElementType.UnsignedInteger:
                        ulong ulVal = ebmlReader.ReadUInt();
                        if(dName == "TrackNumber") TrackNumber = ulVal;
                        if(dName == "TrackType") TrackType = ulVal;
                        if(dName == "FlagDefault") FlagDefault = ulVal;
                        if(dName == "FlagLacing ") FlagLacing = ulVal;
                        if(dName == "DefaultDuration") DefaultDuration = ulVal;
                        if (dName == "TrackUID") TrackUID = ulVal;
                        sb.Append(" = " + ulVal);
                        break;
                    case ElementType.Utf8String:
                        string utfStr = ebmlReader.ReadUtf();
                        if (dName == "Name") Name = utfStr;
                        sb.Append(" = " + utfStr);
                        break;
                }
                sb.Append("\r\n");
            }
            ebmlReader.LeaveContainer();
            
            // If it's subtitles track
            if (TrackType == 17) { 
                Subtitles sub = new Subtitles();
                sub.Items = new SynchronizedObservableCollection<SubtitleItem>();
                sub.Language = Language.Length == 0 ? "eng" : Language;
                sub.Type = Name;
                sub.Format = CodecID;
                sub.TrackUID = TrackUID;

                resPars.dicSub.Add(Convert.ToInt16(TrackNumber),sub);
            }

            // If it's subtitles track
            if (TrackType == 2)
            {
                AudioTrack aud = new AudioTrack();
                aud.Language = Language.Length == 0 ? "eng" : Language;
                aud.CodecID = CodecID;
                aud.Number = resPars.AudioTracks.Count + 1;

                resPars.AudioTracks.Add(aud);
            }

        }