private void OnListSelectionChanged(object sender, SelectionChangedEventArgs e)
 {
     if (e.AddedItems.Count > 0)
     {
         TranscriptEntry entry = (TranscriptEntry)e.AddedItems[0];
         VideoPlayer.Position = TimeSpan.FromSeconds(entry.StartSeconds);
     }
 }
        private void OnItemEditing(object sender, EventArgs e)
        {
            EditableTextBlock block = (EditableTextBlock)sender;
            TranscriptEntry   entry = block.DataContext as TranscriptEntry;

            if (entry != null)
            {
                TranscriptView.SelectedItem = entry;
            }
        }
        public void LoadSrt(string fileName, double width)
        {
            this.fileName = fileName;
            string[] lines   = System.IO.File.ReadAllLines(fileName);
            var      entries = new List <TranscriptEntry>();
            var      pos     = 0;
            var      count   = lines.Length;

            while (pos < count)
            {
                var index = int.Parse(lines[pos++]);
                if (pos >= count)
                {
                    break;
                }
                var range = lines[pos++].Trim();
                if (pos >= count)
                {
                    break;
                }
                // consume the entire prompt up to next blank line.
                var prompt = lines[pos++].Trim();
                while (pos < count && !string.IsNullOrEmpty(lines[pos].Trim()))
                {
                    prompt += '\n' + lines[pos++].Trim();
                }

                // skip blank lines.
                while (pos < count && string.IsNullOrEmpty(lines[pos].Trim()))
                {
                    pos++;
                }

                var e = new TranscriptEntry(index, range, prompt)
                {
                    Width = width
                };
                e.PropertyChanged += OnEntryChanged;
                entries.Add(e);
            }

            this._data = entries;

            this.Entries.Clear();
            foreach (var e in entries)
            {
                this.Entries.Add(e);
            }

            this.Dirty = false;
            selected   = null;
        }
 internal void Select(TranscriptEntry entry)
 {
     if (selected != entry)
     {
         if (selected != null)
         {
             selected.Selected = false;
         }
         selected = entry;
         if (entry != null)
         {
             entry.Selected = true;
         }
     }
 }