Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ public partial class PickMatroskaTrackViewModel : ObservableObject
[ObservableProperty] private ObservableCollection<MatroskaTrackInfoDisplay> _tracks;
[ObservableProperty] private MatroskaTrackInfoDisplay? _selectedTrack;
[ObservableProperty] private ObservableCollection<MatroskaSubtitleCueDisplay> _rows;
[ObservableProperty] private string _subtitleCountText;

public Window? Window { get; set; }
public DataGrid TracksGrid { get; set; }
Expand All @@ -49,6 +50,7 @@ public PickMatroskaTrackViewModel(IFileHelper fileHelper, IWindowService windowS
Tracks = new ObservableCollection<MatroskaTrackInfoDisplay>();
TracksGrid = new DataGrid();
WindowTitle = string.Empty;
SubtitleCountText = string.Empty;
Rows = new ObservableCollection<MatroskaSubtitleCueDisplay>();
_matroskaTracks = new List<MatroskaTrackInfo>();
_fileName = string.Empty;
Expand Down Expand Up @@ -219,31 +221,34 @@ private bool TrackChanged()
var selectedTrack = SelectedTrack;
if (selectedTrack == null || selectedTrack.MatroskaTrackInfo == null)
{
SubtitleCountText = string.Empty;
return false;
}

Rows.Clear();
var count = 0;
var trackInfo = selectedTrack.MatroskaTrackInfo!;
var subtitles = _matroskaFile?.GetSubtitle(trackInfo.TrackNumber, null);
if (trackInfo.CodecId == MatroskaTrackType.SubRip && subtitles != null)
{
AddTextContent(trackInfo, subtitles, new SubRip());
count = AddTextContent(trackInfo, subtitles, new SubRip());
}
else if (trackInfo.CodecId is MatroskaTrackType.SubStationAlpha or MatroskaTrackType.SubStationAlpha2 && subtitles != null)
{
AddTextContent(trackInfo, subtitles, new SubStationAlpha());
count = AddTextContent(trackInfo, subtitles, new SubStationAlpha());
}
else if (trackInfo.CodecId is MatroskaTrackType.AdvancedSubStationAlpha or MatroskaTrackType.AdvancedSubStationAlpha2 && subtitles != null)
{
AddTextContent(trackInfo, subtitles, new AdvancedSubStationAlpha());
count = AddTextContent(trackInfo, subtitles, new AdvancedSubStationAlpha());
}
else if (trackInfo.CodecId is MatroskaTrackType.WebVTT or MatroskaTrackType.WebVTT2 && subtitles != null)
{
AddTextContent(trackInfo, subtitles, new WebVTT());
count = AddTextContent(trackInfo, subtitles, new WebVTT());
}
else if (trackInfo.CodecId == MatroskaTrackType.BluRay && subtitles != null && _matroskaFile != null)
{
var pcsData = BluRaySupParser.ParseBluRaySupFromMatroska(trackInfo, _matroskaFile);
count = pcsData.Count;
for (var i = 0; i < 20 && i < pcsData.Count; i++)
{
var item = pcsData[i];
Expand All @@ -265,6 +270,7 @@ private bool TrackChanged()
Utilities.LoadMatroskaTextSubtitle(trackInfo, _matroskaFile, sub, subtitle);
Utilities.ParseMatroskaTextSt(trackInfo, sub, subtitle);

count = subtitle.Paragraphs.Count;
for (var i = 0; i < 20 && i < subtitle.Paragraphs.Count; i++)
{
var item = subtitle.Paragraphs[i];
Expand All @@ -279,10 +285,11 @@ private bool TrackChanged()
}
}

SubtitleCountText = string.Format(Se.Language.File.Import.NumberOfSubtitlesX, count);
return true;
}

private void AddTextContent(MatroskaTrackInfo trackInfo, List<MatroskaSubtitle> subtitles, SubtitleFormat format)
private int AddTextContent(MatroskaTrackInfo trackInfo, List<MatroskaSubtitle> subtitles, SubtitleFormat format)
{
var sub = new Subtitle();
Utilities.LoadMatroskaTextSubtitle(trackInfo, _matroskaFile, subtitles, sub);
Expand All @@ -299,6 +306,8 @@ private void AddTextContent(MatroskaTrackInfo trackInfo, List<MatroskaSubtitle>
};
Rows.Add(cue);
}

return sub.Paragraphs.Count;
}

internal void SelectAndScrollToRow(int index)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,12 +33,15 @@ public PickMatroskaTrackWindow(PickMatroskaTrackViewModel vm)
var buttonCancel = UiUtil.MakeButtonCancel(vm.CancelCommand);
var panelButtons = UiUtil.MakeButtonBar(buttonExport, buttonOk, buttonCancel);

var labelSubtitleCount = UiUtil.MakeLabel(new Binding(nameof(vm.SubtitleCountText)));

var grid = new Grid
{
RowDefinitions =
{
new RowDefinition { Height = new GridLength(1, GridUnitType.Star) },
new RowDefinition { Height = new GridLength(1, GridUnitType.Auto) },
new RowDefinition { Height = new GridLength(1, GridUnitType.Auto) },
},
ColumnDefinitions =
{
Expand All @@ -53,7 +56,8 @@ public PickMatroskaTrackWindow(PickMatroskaTrackViewModel vm)

grid.Add(tracksView, 0);
grid.Add(subtitleView, 0, 1);
grid.Add(panelButtons, 1, 0, 1, 2);
grid.Add(labelSubtitleCount, 1, 1);
grid.Add(panelButtons, 2, 0, 1, 2);

Content = grid;

Expand Down
5 changes: 5 additions & 0 deletions src/ui/Features/Shared/PickMp4Track/PickMp4TrackViewModel.cs
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
using CommunityToolkit.Mvvm.Input;
using Nikse.SubtitleEdit.Core.ContainerFormats.Mp4.Boxes;
using Nikse.SubtitleEdit.Logic;
using Nikse.SubtitleEdit.Logic.Config;
using SkiaSharp;
using System;
using System.Collections.Generic;
Expand All @@ -17,6 +18,7 @@ public partial class PickMp4TrackViewModel : ObservableObject
[ObservableProperty] private ObservableCollection<Mp4TrackInfoDisplay> _tracks;
[ObservableProperty] private Mp4TrackInfoDisplay? _selectedTrack;
[ObservableProperty] private ObservableCollection<Mp4SubtitleCueDisplay> _rows;
[ObservableProperty] private string _subtitleCountText;

public Window? Window { get; set; }
public DataGrid TracksGrid { get; set; }
Expand All @@ -31,6 +33,7 @@ public PickMp4TrackViewModel()
Tracks = new ObservableCollection<Mp4TrackInfoDisplay>();
TracksGrid = new DataGrid();
WindowTitle = string.Empty;
SubtitleCountText = string.Empty;
Rows = new ObservableCollection<Mp4SubtitleCueDisplay>();
_mp4Tracks = new List<Trak>();
}
Expand Down Expand Up @@ -103,12 +106,14 @@ private bool TrackChanged()
var selectedTrack = SelectedTrack;
if (selectedTrack == null || selectedTrack.Track == null)
{
SubtitleCountText = string.Empty;
return false;
}

Rows.Clear();
var trackinfo = selectedTrack.Track!;
var subtitles = trackinfo.Mdia.Minf.Stbl.GetParagraphs();
SubtitleCountText = string.Format(Se.Language.File.Import.NumberOfSubtitlesX, subtitles.Count);
var i = 0;
foreach (var item in subtitles)
{
Expand Down
6 changes: 5 additions & 1 deletion src/ui/Features/Shared/PickMp4Track/PickMp4TrackWindow.cs
Original file line number Diff line number Diff line change
Expand Up @@ -36,12 +36,15 @@ public PickMp4TrackWindow(PickMp4TrackViewModel vm)
var buttonCancel = UiUtil.MakeButtonCancel(vm.CancelCommand);
var panelButtons = UiUtil.MakeButtonBar(buttonExport, buttonOk, buttonCancel);

var labelSubtitleCount = UiUtil.MakeLabel(new Binding(nameof(vm.SubtitleCountText)));

var grid = new Grid
{
RowDefinitions =
{
new RowDefinition { Height = new GridLength(1, GridUnitType.Star) },
new RowDefinition { Height = new GridLength(1, GridUnitType.Auto) },
new RowDefinition { Height = new GridLength(1, GridUnitType.Auto) },
},
ColumnDefinitions =
{
Expand All @@ -56,7 +59,8 @@ public PickMp4TrackWindow(PickMp4TrackViewModel vm)

grid.Add(tracksView, 0, 0);
grid.Add(subtitleView, 0, 1);
grid.Add(panelButtons, 1, 0, 1, 2);
grid.Add(labelSubtitleCount, 1, 1);
grid.Add(panelButtons, 2, 0, 1, 2);


Content = grid;
Expand Down
8 changes: 7 additions & 1 deletion src/ui/Features/Shared/PickTsTrack/PickTsTrackViewModel.cs
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
using Nikse.SubtitleEdit.Core.ContainerFormats.TransportStream;
using Nikse.SubtitleEdit.Features.Ocr;
using Nikse.SubtitleEdit.Logic;
using Nikse.SubtitleEdit.Logic.Config;
using System;
using System.Collections.ObjectModel;
using System.Linq;
Expand All @@ -18,6 +19,7 @@ public partial class PickTsTrackViewModel : ObservableObject
[ObservableProperty] private ObservableCollection<TsTrackInfoDisplay> _tracks;
[ObservableProperty] private TsTrackInfoDisplay? _selectedTrack;
[ObservableProperty] private ObservableCollection<TsSubtitleCueDisplay> _rows;
[ObservableProperty] private string _subtitleCountText;

public Window? Window { get; set; }
public DataGrid TracksGrid { get; set; }
Expand All @@ -33,6 +35,7 @@ public PickTsTrackViewModel()
Tracks = new ObservableCollection<TsTrackInfoDisplay>();
TracksGrid = new DataGrid();
WindowTitle = string.Empty;
SubtitleCountText = string.Empty;
Rows = new ObservableCollection<TsSubtitleCueDisplay>();
TeletextSubtitle = new Subtitle();
}
Expand Down Expand Up @@ -130,16 +133,18 @@ private bool TrackChanged()
var selectedTrack = SelectedTrack;
if (selectedTrack == null || _tsParser == null)
{
SubtitleCountText = string.Empty;
return false;
}

Rows.Clear();

if (selectedTrack.IsTeletext)
{
var subtitle = new Subtitle(selectedTrack.Teletext);
var subtitle = new Subtitle(selectedTrack.Teletext);
subtitle.Renumber();
TeletextSubtitle = subtitle;
SubtitleCountText = string.Format(Se.Language.File.Import.NumberOfSubtitlesX, subtitle.Paragraphs.Count);
foreach (var p in subtitle.Paragraphs.Take(20))
{
var cue = new TsSubtitleCueDisplay()
Expand All @@ -157,6 +162,7 @@ private bool TrackChanged()
}

var subtitles = _tsParser.GetDvbSubtitles(selectedTrack.TrackNumber);
SubtitleCountText = string.Format(Se.Language.File.Import.NumberOfSubtitlesX, subtitles.Count);
for (var i = 0; i < 20 && i < subtitles.Count; i++)
{
var item = subtitles[i];
Expand Down
6 changes: 5 additions & 1 deletion src/ui/Features/Shared/PickTsTrack/PickTsTrackWindow.cs
Original file line number Diff line number Diff line change
Expand Up @@ -31,12 +31,15 @@ public PickTsTrackWindow(PickTsTrackViewModel vm)
var buttonCancel = UiUtil.MakeButtonCancel(vm.CancelCommand);
var panelButtons = UiUtil.MakeButtonBar(buttonExport, buttonOk, buttonCancel);

var labelSubtitleCount = UiUtil.MakeLabel(new Binding(nameof(vm.SubtitleCountText)));

var grid = new Grid
{
RowDefinitions =
{
new RowDefinition { Height = new GridLength(1, GridUnitType.Star) },
new RowDefinition { Height = new GridLength(1, GridUnitType.Auto) },
new RowDefinition { Height = new GridLength(1, GridUnitType.Auto) },
},
ColumnDefinitions =
{
Expand All @@ -51,7 +54,8 @@ public PickTsTrackWindow(PickTsTrackViewModel vm)

grid.Add(tracksView, 0, 0);
grid.Add(subtitleView, 0, 1);
grid.Add(panelButtons, 1, 0, 1, 2);
grid.Add(labelSubtitleCount, 1, 1);
grid.Add(panelButtons, 2, 0, 1, 2);


Content = grid;
Expand Down