Files
staxrip/Source/Forms/StreamDemuxForm.vb
T

193 lines
7.0 KiB
VB.net

Imports System.Globalization
Imports StaxRip.UI
Public Class StreamDemuxForm
Property AudioStreams As List(Of AudioStream)
Property Subtitles As List(Of Subtitle)
Sub New(sourceFile As String, attachments As List(Of Attachment))
InitializeComponent()
ScaleClientSize(42, 30)
Owner = g.MainForm
StartPosition = FormStartPosition.CenterParent
lvAudio.View = View.Details
lvAudio.Columns.Add("")
lvAudio.CheckBoxes = True
lvAudio.HeaderStyle = ColumnHeaderStyle.None
lvAudio.ShowItemToolTips = True
lvAudio.FullRowSelect = True
lvAudio.MultiSelect = False
lvAudio.HideFocusRectange()
lvAudio.AutoCheckMode = AutoCheckMode.SingleClick
lvAudio.OwnerDraw = False
lvSubtitles.View = View.SmallIcon
lvSubtitles.CheckBoxes = True
lvSubtitles.HeaderStyle = ColumnHeaderStyle.None
lvSubtitles.AutoCheckMode = AutoCheckMode.SingleClick
lvSubtitles.OwnerDraw = False
lvAttachments.View = View.SmallIcon
lvAttachments.CheckBoxes = True
lvAttachments.HeaderStyle = ColumnHeaderStyle.None
lvAttachments.AutoCheckMode = AutoCheckMode.SingleClick
lvAttachments.OwnerDraw = False
AddHandler Load, Sub() lvAudio.Columns(0).Width = lvAudio.ClientSize.Width
AudioStreams = MediaInfo.GetAudioStreams(sourceFile)
Subtitles = MediaInfo.GetSubtitles(sourceFile)
bnAudioEnglish.Enabled = AudioStreams.Where(Function(stream) stream.Language.TwoLetterCode = "en").Count > 0
bnAudioNative.Visible = CultureInfo.CurrentCulture.TwoLetterISOLanguageName <> "en"
bnAudioNative.Text = CultureInfo.CurrentCulture.NeutralCulture.EnglishName
bnAudioNative.Enabled = AudioStreams.Where(Function(stream) stream.Language.TwoLetterCode = CultureInfo.CurrentCulture.TwoLetterISOLanguageName).Count > 0
bnSubtitleEnglish.Enabled = Subtitles.Where(Function(stream) stream.Language.TwoLetterCode = "en").Count > 0
bnSubtitleNative.Visible = CultureInfo.CurrentCulture.TwoLetterISOLanguageName <> "en"
bnSubtitleNative.Text = CultureInfo.CurrentCulture.NeutralCulture.EnglishName
bnSubtitleNative.Enabled = Subtitles.Where(Function(stream) stream.Language.TwoLetterCode = CultureInfo.CurrentCulture.TwoLetterISOLanguageName).Count > 0
For Each audioStream In AudioStreams
Dim item = lvAudio.Items.Add(audioStream.Name)
item.Tag = audioStream
item.Checked = audioStream.Enabled
Next
For Each subtitle In Subtitles
Dim text = subtitle.Language.ToString + " (" + subtitle.TypeName + ")" + If(subtitle.Title <> "", " - " + subtitle.Title, "")
Dim item = lvSubtitles.Items.Add(text)
item.Tag = subtitle
item.Checked = subtitle.Enabled
Next
If Not attachments Is Nothing Then
For Each attachment In attachments
Dim item = lvAttachments.Items.Add(attachment.Name)
item.Tag = attachment
item.Checked = attachment.Enabled
Next
End If
cbDemuxChapters.Checked = p.DemuxChapters
cbDemuxVideo.Checked = p.DemuxVideo
ApplyTheme()
AddHandler ThemeManager.CurrentThemeChanged, AddressOf OnThemeChanged
End Sub
Sub OnThemeChanged(theme As Theme)
ApplyTheme(theme)
End Sub
Sub ApplyTheme()
ApplyTheme(ThemeManager.CurrentTheme)
End Sub
Sub ApplyTheme(theme As Theme)
If DesignHelp.IsDesignMode Then
Exit Sub
End If
BackColor = theme.General.BackColor
End Sub
Sub lvAudio_ItemChecked(sender As Object, e As ItemCheckedEventArgs) Handles lvAudio.ItemChecked
If Visible Then
DirectCast(e.Item.Tag, AudioStream).Enabled = e.Item.Checked
End If
End Sub
Sub lvSubtitles_ItemChecked(sender As Object, e As ItemCheckedEventArgs) Handles lvSubtitles.ItemChecked
If Visible Then
DirectCast(e.Item.Tag, Subtitle).Enabled = e.Item.Checked
End If
End Sub
Sub lvAttachments_ItemChecked(sender As Object, e As ItemCheckedEventArgs) Handles lvAttachments.ItemChecked
If Visible Then
DirectCast(e.Item.Tag, Attachment).Enabled = e.Item.Checked
End If
End Sub
Sub bnAudioAll_Click(sender As Object, e As EventArgs) Handles bnAudioAll.Click
For Each item As ListViewItem In lvAudio.Items
item.Checked = True
Next
End Sub
Sub bnAudioNone_Click(sender As Object, e As EventArgs) Handles bnAudioNone.Click
For Each item As ListViewItem In lvAudio.Items
item.Checked = False
Next
End Sub
Sub bnAudioEnglish_Click(sender As Object, e As EventArgs) Handles bnAudioEnglish.Click
For Each item As ListViewItem In lvAudio.Items
Dim stream = DirectCast(item.Tag, AudioStream)
If stream.Language.TwoLetterCode = "en" Then
item.Checked = True
End If
Next
End Sub
Sub bnAudioNative_Click(sender As Object, e As EventArgs) Handles bnAudioNative.Click
For Each item As ListViewItem In lvAudio.Items
Dim stream = DirectCast(item.Tag, AudioStream)
If stream.Language.TwoLetterCode = CultureInfo.CurrentCulture.TwoLetterISOLanguageName Then
item.Checked = True
End If
Next
End Sub
Sub bnSubtitleAll_Click(sender As Object, e As EventArgs) Handles bnSubtitleAll.Click
For Each item As ListViewItem In lvSubtitles.Items
item.Checked = True
Next
End Sub
Sub bnSubtitleNone_Click(sender As Object, e As EventArgs) Handles bnSubtitleNone.Click
For Each item As ListViewItem In lvSubtitles.Items
item.Checked = False
Next
End Sub
Sub bnSubtitleEnglish_Click(sender As Object, e As EventArgs) Handles bnSubtitleEnglish.Click
For Each item As ListViewItem In lvSubtitles.Items
Dim stream = DirectCast(item.Tag, Subtitle)
If stream.Language.TwoLetterCode = "en" Then
item.Checked = True
End If
Next
End Sub
Sub bnSubtitleNative_Click(sender As Object, e As EventArgs) Handles bnSubtitleNative.Click
For Each item As ListViewItem In lvSubtitles.Items
Dim stream = DirectCast(item.Tag, Subtitle)
If stream.Language.TwoLetterCode = CultureInfo.CurrentCulture.TwoLetterISOLanguageName Then
item.Checked = True
End If
Next
End Sub
Sub bnAllAttachments_Click(sender As Object, e As EventArgs) Handles bnAllAttachments.Click
For Each item As ListViewItem In lvAttachments.Items
item.Checked = True
Next
End Sub
Sub bnNoneAttachments_Click(sender As Object, e As EventArgs) Handles bnNoneAttachments.Click
For Each item As ListViewItem In lvAttachments.Items
item.Checked = False
Next
End Sub
End Class