Files
2026-03-31 08:33:41 +02:00

1459 lines
64 KiB
VB.net

Imports System.ComponentModel
Imports System.Globalization
Imports System.Text.RegularExpressions
Imports System.Threading.Tasks
Imports StaxRip.UI
Public Class MuxerForm
Inherits SizeSavingDialogBase
#Region " Designer "
Friend WithEvents TipProvider As StaxRip.UI.TipProvider
Friend WithEvents bnCommandLinePreview As ButtonEx
Friend WithEvents clcGeneral As CommandLineControl
Friend WithEvents clcVideo As CommandLineControl
Friend WithEvents bnCancel As StaxRip.UI.ButtonEx
Friend WithEvents bnOK As StaxRip.UI.ButtonEx
Friend WithEvents tcMain As TabControlEx
Friend WithEvents tpCommandLine As System.Windows.Forms.TabPage
Friend WithEvents Label1 As LabelEx
Friend WithEvents Label2 As LabelEx
Friend WithEvents tpOptions As System.Windows.Forms.TabPage
Friend WithEvents TableLayoutPanel1 As System.Windows.Forms.TableLayoutPanel
Friend WithEvents SimpleUI As StaxRip.SimpleUI
Friend WithEvents tpSubtitles As TabPage
Friend WithEvents tpAudio As TabPage
Friend WithEvents bnAudioPlay As ButtonEx
Friend WithEvents bnAudioDown As ButtonEx
Friend WithEvents bnAudioUp As ButtonEx
Friend WithEvents bnAudioRemove As ButtonEx
Friend WithEvents bnAudioAdd As ButtonEx
Friend WithEvents dgvAudio As DataGridViewEx
Friend WithEvents bnAudioEdit As ButtonEx
Friend WithEvents tlpAudio As TableLayoutPanel
Friend WithEvents flpAudio As FlowLayoutPanel
Friend WithEvents tlpMain As TableLayoutPanel
Friend WithEvents pnTab As PanelEx
Friend WithEvents tpAttachments As TabPage
Friend WithEvents tlpAttachments As TableLayoutPanel
Friend WithEvents flpAttachments As FlowLayoutPanel
Friend WithEvents bnAttachmentAdd As ButtonEx
Friend WithEvents lbAttachments As ListBoxEx
Friend WithEvents bnAttachmentRemove As ButtonEx
Friend WithEvents tpTags As TabPage
Friend WithEvents dgvTags As DataGridViewEx
Friend WithEvents tlpSubtitles As TableLayoutPanel
Friend WithEvents flpSubtitleButtons As FlowLayoutPanel
Friend WithEvents bnSubtitleAdd As ButtonEx
Friend WithEvents bnSubtitleRemove As ButtonEx
Friend WithEvents bnSubtitleUp As ButtonEx
Friend WithEvents bnSubtitleDown As ButtonEx
Friend WithEvents bnSubtitleSetNames As ButtonEx
Friend WithEvents bnSubtitlePlay As ButtonEx
Friend WithEvents bnSubtitleBDSup2SubPP As ButtonEx
Friend WithEvents bnSubtitleEdit As ButtonEx
Friend WithEvents dgvSubtitles As DataGridViewEx
Private components As System.ComponentModel.IContainer
<System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
Me.components = New System.ComponentModel.Container()
Me.TipProvider = New StaxRip.UI.TipProvider(Me.components)
Me.clcGeneral = New CommandLineControl()
Me.clcVideo = New CommandLineControl()
Me.bnCommandLinePreview = New ButtonEx()
Me.bnCancel = New ButtonEx()
Me.bnOK = New ButtonEx()
Me.tcMain = New TabControlEx()
Me.tpSubtitles = New System.Windows.Forms.TabPage()
Me.tlpSubtitles = New System.Windows.Forms.TableLayoutPanel()
Me.dgvSubtitles = New DataGridViewEx()
Me.flpSubtitleButtons = New System.Windows.Forms.FlowLayoutPanel()
Me.bnSubtitleAdd = New ButtonEx()
Me.bnSubtitleRemove = New ButtonEx()
Me.bnSubtitleUp = New ButtonEx()
Me.bnSubtitleDown = New ButtonEx()
Me.bnSubtitleSetNames = New StaxRip.UI.ButtonEx()
Me.bnSubtitlePlay = New StaxRip.UI.ButtonEx()
Me.bnSubtitleBDSup2SubPP = New StaxRip.UI.ButtonEx()
Me.bnSubtitleEdit = New StaxRip.UI.ButtonEx()
Me.tpAudio = New System.Windows.Forms.TabPage()
Me.tlpAudio = New System.Windows.Forms.TableLayoutPanel()
Me.flpAudio = New System.Windows.Forms.FlowLayoutPanel()
Me.bnAudioAdd = New StaxRip.UI.ButtonEx()
Me.bnAudioRemove = New StaxRip.UI.ButtonEx()
Me.bnAudioUp = New StaxRip.UI.ButtonEx()
Me.bnAudioDown = New StaxRip.UI.ButtonEx()
Me.bnAudioPlay = New StaxRip.UI.ButtonEx()
Me.bnAudioEdit = New StaxRip.UI.ButtonEx()
Me.dgvAudio = New StaxRip.UI.DataGridViewEx()
Me.tpAttachments = New System.Windows.Forms.TabPage()
Me.tlpAttachments = New System.Windows.Forms.TableLayoutPanel()
Me.flpAttachments = New System.Windows.Forms.FlowLayoutPanel()
Me.bnAttachmentAdd = New StaxRip.UI.ButtonEx()
Me.bnAttachmentRemove = New StaxRip.UI.ButtonEx()
Me.lbAttachments = New StaxRip.UI.ListBoxEx()
Me.tpTags = New System.Windows.Forms.TabPage()
Me.dgvTags = New StaxRip.UI.DataGridViewEx()
Me.tpOptions = New System.Windows.Forms.TabPage()
Me.SimpleUI = New StaxRip.SimpleUI()
Me.tpCommandLine = New System.Windows.Forms.TabPage()
Me.TableLayoutPanel1 = New System.Windows.Forms.TableLayoutPanel()
Me.Label1 = New LabelEx()
Me.Label2 = New LabelEx()
Me.tlpMain = New System.Windows.Forms.TableLayoutPanel()
Me.pnTab = New PanelEx()
Me.tcMain.SuspendLayout()
Me.tpSubtitles.SuspendLayout()
Me.tlpSubtitles.SuspendLayout()
CType(Me.dgvSubtitles, System.ComponentModel.ISupportInitialize).BeginInit()
Me.flpSubtitleButtons.SuspendLayout()
Me.tpAudio.SuspendLayout()
Me.tlpAudio.SuspendLayout()
Me.flpAudio.SuspendLayout()
CType(Me.dgvAudio, System.ComponentModel.ISupportInitialize).BeginInit()
Me.tpAttachments.SuspendLayout()
Me.tlpAttachments.SuspendLayout()
Me.flpAttachments.SuspendLayout()
Me.tpTags.SuspendLayout()
CType(Me.dgvTags, System.ComponentModel.ISupportInitialize).BeginInit()
Me.tpOptions.SuspendLayout()
Me.tpCommandLine.SuspendLayout()
Me.TableLayoutPanel1.SuspendLayout()
Me.tlpMain.SuspendLayout()
Me.pnTab.SuspendLayout()
Me.SuspendLayout()
'
'clcGeneral
'
Me.clcGeneral.Anchor = CType((((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Bottom) _
Or System.Windows.Forms.AnchorStyles.Left) _
Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
Me.clcGeneral.Font = FontManager.GetDefaultFont()
Me.clcGeneral.Location = New System.Drawing.Point(0, 48)
Me.clcGeneral.Margin = New System.Windows.Forms.Padding(0)
Me.clcGeneral.Name = "clcGeneral"
Me.clcGeneral.Size = New System.Drawing.Size(1598, 804)
Me.clcGeneral.TabIndex = 0
'
'clcVideo
'
Me.clcVideo.Anchor = CType((((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Bottom) _
Or System.Windows.Forms.AnchorStyles.Left) _
Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
Me.clcVideo.Font = FontManager.GetDefaultFont()
Me.clcVideo.Location = New System.Drawing.Point(0, 48)
Me.clcVideo.Margin = New System.Windows.Forms.Padding(0)
Me.clcVideo.Name = "clcVideo"
Me.clcVideo.Size = New System.Drawing.Size(1598, 804)
Me.clcVideo.TabIndex = 1
'
'bnCommandLinePreview
'
Me.bnCommandLinePreview.Anchor = System.Windows.Forms.AnchorStyles.Right
Me.bnCommandLinePreview.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink
Me.bnCommandLinePreview.Location = New System.Drawing.Point(816, 993)
Me.bnCommandLinePreview.Margin = New System.Windows.Forms.Padding(8)
Me.bnCommandLinePreview.Name = "bnCommandLinePreview"
Me.bnCommandLinePreview.Size = New System.Drawing.Size(320, 70)
Me.bnCommandLinePreview.TabIndex = 4
Me.bnCommandLinePreview.Text = "Command Line..."
'
'bnCancel
'
Me.bnCancel.Anchor = System.Windows.Forms.AnchorStyles.None
Me.bnCancel.DialogResult = System.Windows.Forms.DialogResult.Cancel
Me.bnCancel.Location = New System.Drawing.Point(1418, 993)
Me.bnCancel.Margin = New System.Windows.Forms.Padding(8)
Me.bnCancel.Size = New System.Drawing.Size(250, 70)
Me.bnCancel.Text = "Cancel"
'
'bnOK
'
Me.bnOK.Anchor = System.Windows.Forms.AnchorStyles.None
Me.bnOK.DialogResult = System.Windows.Forms.DialogResult.OK
Me.bnOK.Location = New System.Drawing.Point(1152, 993)
Me.bnOK.Margin = New System.Windows.Forms.Padding(8)
Me.bnOK.Size = New System.Drawing.Size(250, 70)
Me.bnOK.Text = "OK"
'
'tcMain
'
Me.tcMain.Controls.Add(Me.tpAudio)
Me.tcMain.Controls.Add(Me.tpSubtitles)
Me.tcMain.Controls.Add(Me.tpAttachments)
Me.tcMain.Controls.Add(Me.tpTags)
Me.tcMain.Controls.Add(Me.tpOptions)
Me.tcMain.Controls.Add(Me.tpCommandLine)
Me.tcMain.Dock = System.Windows.Forms.DockStyle.Fill
Me.tcMain.Location = New System.Drawing.Point(0, 0)
Me.tcMain.Margin = New System.Windows.Forms.Padding(0)
Me.tcMain.Name = "tcMain"
Me.tcMain.SelectedIndex = 1
Me.tcMain.Size = New System.Drawing.Size(1652, 961)
Me.tcMain.TabIndex = 5
'
'tpSubtitles
'
Me.tpSubtitles.Controls.Add(Me.tlpSubtitles)
Me.tpSubtitles.Location = New System.Drawing.Point(12, 69)
Me.tpSubtitles.Margin = New System.Windows.Forms.Padding(5)
Me.tpSubtitles.Name = "tpSubtitles"
Me.tpSubtitles.Padding = New System.Windows.Forms.Padding(5)
Me.tpSubtitles.Size = New System.Drawing.Size(1628, 880)
Me.tpSubtitles.TabIndex = 4
Me.tpSubtitles.Text = " Subtitles "
'
'tlpSubtitles
'
Me.tlpSubtitles.ColumnCount = 2
Me.tlpSubtitles.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 64.27605!))
Me.tlpSubtitles.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle())
Me.tlpSubtitles.Controls.Add(Me.dgvSubtitles, 0, 0)
Me.tlpSubtitles.Controls.Add(Me.flpSubtitleButtons, 1, 0)
Me.tlpSubtitles.Dock = System.Windows.Forms.DockStyle.Fill
Me.tlpSubtitles.Location = New System.Drawing.Point(5, 5)
Me.tlpSubtitles.Name = "tlpSubtitles"
Me.tlpSubtitles.RowCount = 1
Me.tlpSubtitles.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50.0!))
Me.tlpSubtitles.Size = New System.Drawing.Size(1618, 870)
Me.tlpSubtitles.TabIndex = 0
'
'dgvSubtitles
'
Me.dgvSubtitles.AllowDrop = True
Me.dgvSubtitles.Anchor = CType((((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Bottom) _
Or System.Windows.Forms.AnchorStyles.Left) _
Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
Me.dgvSubtitles.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize
Me.dgvSubtitles.Location = New System.Drawing.Point(0, 0)
Me.dgvSubtitles.Margin = New System.Windows.Forms.Padding(0)
Me.dgvSubtitles.Name = "dgvSubtitles"
Me.dgvSubtitles.RowHeadersWidth = 123
Me.dgvSubtitles.RowTemplate.Height = 28
Me.dgvSubtitles.Size = New System.Drawing.Size(1328, 870)
Me.dgvSubtitles.TabIndex = 22
'
'flpSubtitleButtons
'
Me.flpSubtitleButtons.AutoSize = True
Me.flpSubtitleButtons.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink
Me.flpSubtitleButtons.Controls.Add(Me.bnSubtitleAdd)
Me.flpSubtitleButtons.Controls.Add(Me.bnSubtitleRemove)
Me.flpSubtitleButtons.Controls.Add(Me.bnSubtitleUp)
Me.flpSubtitleButtons.Controls.Add(Me.bnSubtitleDown)
Me.flpSubtitleButtons.Controls.Add(Me.bnSubtitleSetNames)
Me.flpSubtitleButtons.Controls.Add(Me.bnSubtitlePlay)
Me.flpSubtitleButtons.Controls.Add(Me.bnSubtitleBDSup2SubPP)
Me.flpSubtitleButtons.Controls.Add(Me.bnSubtitleEdit)
Me.flpSubtitleButtons.FlowDirection = System.Windows.Forms.FlowDirection.TopDown
Me.flpSubtitleButtons.Location = New System.Drawing.Point(1328, 0)
Me.flpSubtitleButtons.Margin = New System.Windows.Forms.Padding(0)
Me.flpSubtitleButtons.Name = "flpSubtitleButtons"
Me.flpSubtitleButtons.Size = New System.Drawing.Size(290, 688)
Me.flpSubtitleButtons.TabIndex = 21
'
'bnSubtitleAdd
'
Me.bnSubtitleAdd.Anchor = CType((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
Me.bnSubtitleAdd.Location = New System.Drawing.Point(10, 0)
Me.bnSubtitleAdd.Margin = New System.Windows.Forms.Padding(10, 0, 0, 6)
Me.bnSubtitleAdd.Name = "bnSubtitleAdd"
Me.bnSubtitleAdd.Size = New System.Drawing.Size(280, 80)
Me.bnSubtitleAdd.TabIndex = 12
Me.bnSubtitleAdd.Text = "Add..."
'
'bnSubtitleRemove
'
Me.bnSubtitleRemove.Anchor = CType((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
Me.bnSubtitleRemove.Location = New System.Drawing.Point(10, 86)
Me.bnSubtitleRemove.Margin = New System.Windows.Forms.Padding(10, 0, 0, 6)
Me.bnSubtitleRemove.Name = "bnSubtitleRemove"
Me.bnSubtitleRemove.Size = New System.Drawing.Size(280, 80)
Me.bnSubtitleRemove.TabIndex = 13
Me.bnSubtitleRemove.Text = " Remove"
'
'bnSubtitleUp
'
Me.bnSubtitleUp.Anchor = CType((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
Me.bnSubtitleUp.Location = New System.Drawing.Point(10, 172)
Me.bnSubtitleUp.Margin = New System.Windows.Forms.Padding(10, 0, 0, 6)
Me.bnSubtitleUp.Name = "bnSubtitleUp"
Me.bnSubtitleUp.Size = New System.Drawing.Size(280, 80)
Me.bnSubtitleUp.TabIndex = 11
Me.bnSubtitleUp.Text = "Up"
'
'bnSubtitleDown
'
Me.bnSubtitleDown.Anchor = CType((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
Me.bnSubtitleDown.Location = New System.Drawing.Point(10, 258)
Me.bnSubtitleDown.Margin = New System.Windows.Forms.Padding(10, 0, 0, 6)
Me.bnSubtitleDown.Name = "bnSubtitleDown"
Me.bnSubtitleDown.Size = New System.Drawing.Size(280, 80)
Me.bnSubtitleDown.TabIndex = 10
Me.bnSubtitleDown.Text = "Down"
'
'bnSubtitleSetNames
'
Me.bnSubtitleSetNames.Anchor = CType((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
Me.bnSubtitleSetNames.Location = New System.Drawing.Point(10, 344)
Me.bnSubtitleSetNames.Margin = New System.Windows.Forms.Padding(10, 0, 0, 6)
Me.bnSubtitleSetNames.Size = New System.Drawing.Size(280, 80)
Me.bnSubtitleSetNames.Text = "Set Names..."
'
'bnSubtitlePlay
'
Me.bnSubtitlePlay.Anchor = CType((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
Me.bnSubtitlePlay.Location = New System.Drawing.Point(10, 430)
Me.bnSubtitlePlay.Margin = New System.Windows.Forms.Padding(10, 0, 0, 6)
Me.bnSubtitlePlay.Size = New System.Drawing.Size(280, 80)
Me.bnSubtitlePlay.Text = "Play"
'
'bnSubtitleBDSup2SubPP
'
Me.bnSubtitleBDSup2SubPP.Anchor = CType((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
Me.bnSubtitleBDSup2SubPP.Location = New System.Drawing.Point(10, 516)
Me.bnSubtitleBDSup2SubPP.Margin = New System.Windows.Forms.Padding(10, 0, 0, 6)
Me.bnSubtitleBDSup2SubPP.Size = New System.Drawing.Size(280, 80)
Me.bnSubtitleBDSup2SubPP.Text = "BDSup2Sub++"
'
'bnSubtitleEdit
'
Me.bnSubtitleEdit.Anchor = CType((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
Me.bnSubtitleEdit.Location = New System.Drawing.Point(10, 602)
Me.bnSubtitleEdit.Margin = New System.Windows.Forms.Padding(10, 0, 0, 6)
Me.bnSubtitleEdit.Size = New System.Drawing.Size(280, 80)
Me.bnSubtitleEdit.Text = "Subtitle Edit"
'
'tpAudio
'
Me.tpAudio.Controls.Add(Me.tlpAudio)
Me.tpAudio.Location = New System.Drawing.Point(12, 69)
Me.tpAudio.Margin = New System.Windows.Forms.Padding(5)
Me.tpAudio.Name = "tpAudio"
Me.tpAudio.Padding = New System.Windows.Forms.Padding(5)
Me.tpAudio.Size = New System.Drawing.Size(1628, 880)
Me.tpAudio.TabIndex = 3
Me.tpAudio.Text = " Audio "
'
'tlpAudio
'
Me.tlpAudio.ColumnCount = 2
Me.tlpAudio.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50.0!))
Me.tlpAudio.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle())
Me.tlpAudio.Controls.Add(Me.flpAudio, 1, 0)
Me.tlpAudio.Controls.Add(Me.dgvAudio, 0, 0)
Me.tlpAudio.Dock = System.Windows.Forms.DockStyle.Fill
Me.tlpAudio.Location = New System.Drawing.Point(5, 5)
Me.tlpAudio.Margin = New System.Windows.Forms.Padding(0)
Me.tlpAudio.Name = "tlpAudio"
Me.tlpAudio.RowCount = 1
Me.tlpAudio.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50.0!))
Me.tlpAudio.Size = New System.Drawing.Size(1618, 870)
Me.tlpAudio.TabIndex = 7
'
'flpAudio
'
Me.flpAudio.AutoSize = True
Me.flpAudio.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink
Me.flpAudio.Controls.Add(Me.bnAudioAdd)
Me.flpAudio.Controls.Add(Me.bnAudioRemove)
Me.flpAudio.Controls.Add(Me.bnAudioUp)
Me.flpAudio.Controls.Add(Me.bnAudioDown)
Me.flpAudio.Controls.Add(Me.bnAudioPlay)
Me.flpAudio.Controls.Add(Me.bnAudioEdit)
Me.flpAudio.FlowDirection = System.Windows.Forms.FlowDirection.TopDown
Me.flpAudio.Location = New System.Drawing.Point(1327, 0)
Me.flpAudio.Margin = New System.Windows.Forms.Padding(0)
Me.flpAudio.Name = "flpAudio"
Me.flpAudio.Size = New System.Drawing.Size(291, 516)
Me.flpAudio.TabIndex = 6
'
'bnAudioAdd
'
Me.bnAudioAdd.Anchor = CType((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
Me.bnAudioAdd.Location = New System.Drawing.Point(11, 0)
Me.bnAudioAdd.Margin = New System.Windows.Forms.Padding(11, 0, 0, 6)
Me.bnAudioAdd.Size = New System.Drawing.Size(280, 80)
Me.bnAudioAdd.Text = "Add..."
'
'bnAudioRemove
'
Me.bnAudioRemove.Anchor = CType((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
Me.bnAudioRemove.Location = New System.Drawing.Point(11, 86)
Me.bnAudioRemove.Margin = New System.Windows.Forms.Padding(10, 0, 0, 6)
Me.bnAudioRemove.Size = New System.Drawing.Size(280, 80)
Me.bnAudioRemove.Text = " Remove"
'
'bnAudioUp
'
Me.bnAudioUp.Anchor = CType((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
Me.bnAudioUp.Location = New System.Drawing.Point(11, 172)
Me.bnAudioUp.Margin = New System.Windows.Forms.Padding(10, 0, 0, 6)
Me.bnAudioUp.Size = New System.Drawing.Size(280, 80)
Me.bnAudioUp.Text = "Up"
'
'bnAudioDown
'
Me.bnAudioDown.Anchor = CType((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
Me.bnAudioDown.Location = New System.Drawing.Point(11, 258)
Me.bnAudioDown.Margin = New System.Windows.Forms.Padding(10, 0, 0, 6)
Me.bnAudioDown.Size = New System.Drawing.Size(280, 80)
Me.bnAudioDown.Text = "Down"
'
'bnAudioPlay
'
Me.bnAudioPlay.Anchor = CType((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
Me.bnAudioPlay.Location = New System.Drawing.Point(11, 344)
Me.bnAudioPlay.Margin = New System.Windows.Forms.Padding(10, 0, 0, 6)
Me.bnAudioPlay.Size = New System.Drawing.Size(280, 80)
Me.bnAudioPlay.Text = "Play"
'
'bnAudioEdit
'
Me.bnAudioEdit.Anchor = CType((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
Me.bnAudioEdit.Location = New System.Drawing.Point(11, 430)
Me.bnAudioEdit.Margin = New System.Windows.Forms.Padding(10, 0, 0, 6)
Me.bnAudioEdit.Size = New System.Drawing.Size(280, 80)
Me.bnAudioEdit.Text = "Edit..."
'
'dgvAudio
'
Me.dgvAudio.AllowDrop = True
Me.dgvAudio.Anchor = CType((((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Bottom) _
Or System.Windows.Forms.AnchorStyles.Left) _
Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
Me.dgvAudio.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize
Me.dgvAudio.Location = New System.Drawing.Point(0, 0)
Me.dgvAudio.Margin = New System.Windows.Forms.Padding(0)
Me.dgvAudio.Name = "dgvAudio"
Me.dgvAudio.RowHeadersWidth = 123
Me.dgvAudio.RowTemplate.Height = 28
Me.dgvAudio.Size = New System.Drawing.Size(1327, 870)
Me.dgvAudio.TabIndex = 0
'
'tpAttachments
'
Me.tpAttachments.Controls.Add(Me.tlpAttachments)
Me.tpAttachments.Location = New System.Drawing.Point(12, 69)
Me.tpAttachments.Name = "tpAttachments"
Me.tpAttachments.Padding = New System.Windows.Forms.Padding(3)
Me.tpAttachments.Size = New System.Drawing.Size(1628, 880)
Me.tpAttachments.TabIndex = 5
Me.tpAttachments.Text = " Attachments "
'
'tlpAttachments
'
Me.tlpAttachments.ColumnCount = 2
Me.tlpAttachments.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50.0!))
Me.tlpAttachments.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle())
Me.tlpAttachments.Controls.Add(Me.flpAttachments, 1, 0)
Me.tlpAttachments.Controls.Add(Me.lbAttachments, 0, 0)
Me.tlpAttachments.Dock = System.Windows.Forms.DockStyle.Fill
Me.tlpAttachments.Location = New System.Drawing.Point(3, 3)
Me.tlpAttachments.Name = "tlpAttachments"
Me.tlpAttachments.RowCount = 1
Me.tlpAttachments.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50.0!))
Me.tlpAttachments.Size = New System.Drawing.Size(1622, 874)
Me.tlpAttachments.TabIndex = 0
'
'flpAttachments
'
Me.flpAttachments.AutoSize = True
Me.flpAttachments.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink
Me.flpAttachments.Controls.Add(Me.bnAttachmentAdd)
Me.flpAttachments.Controls.Add(Me.bnAttachmentRemove)
Me.flpAttachments.Location = New System.Drawing.Point(1328, 3)
Me.flpAttachments.Name = "flpAttachments"
Me.flpAttachments.Size = New System.Drawing.Size(291, 172)
Me.flpAttachments.TabIndex = 0
'
'bnAttachmentAdd
'
Me.bnAttachmentAdd.Anchor = CType((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
Me.bnAttachmentAdd.Location = New System.Drawing.Point(11, 0)
Me.bnAttachmentAdd.Margin = New System.Windows.Forms.Padding(11, 0, 0, 6)
Me.bnAttachmentAdd.Size = New System.Drawing.Size(280, 80)
Me.bnAttachmentAdd.Text = "Add..."
'
'bnAttachmentRemove
'
Me.bnAttachmentRemove.Anchor = CType((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
Me.bnAttachmentRemove.Location = New System.Drawing.Point(11, 86)
Me.bnAttachmentRemove.Margin = New System.Windows.Forms.Padding(11, 0, 0, 6)
Me.bnAttachmentRemove.Size = New System.Drawing.Size(280, 80)
Me.bnAttachmentRemove.Text = "Remove"
'
'lbAttachments
'
Me.lbAttachments.AllowDrop = True
Me.lbAttachments.Dock = System.Windows.Forms.DockStyle.Fill
Me.lbAttachments.DrawMode = System.Windows.Forms.DrawMode.OwnerDrawFixed
Me.lbAttachments.FormattingEnabled = True
Me.lbAttachments.ItemHeight = 67
Me.lbAttachments.Location = New System.Drawing.Point(3, 3)
Me.lbAttachments.Name = "lbAttachments"
Me.lbAttachments.Size = New System.Drawing.Size(1319, 868)
Me.lbAttachments.TabIndex = 1
'
'tpTags
'
Me.tpTags.Controls.Add(Me.dgvTags)
Me.tpTags.Location = New System.Drawing.Point(12, 69)
Me.tpTags.Name = "tpTags"
Me.tpTags.Padding = New System.Windows.Forms.Padding(3)
Me.tpTags.Size = New System.Drawing.Size(1628, 880)
Me.tpTags.TabIndex = 6
Me.tpTags.Text = " Tags"
'
'dgvTags
'
Me.dgvTags.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize
Me.dgvTags.Dock = System.Windows.Forms.DockStyle.Fill
Me.dgvTags.Location = New System.Drawing.Point(3, 3)
Me.dgvTags.Name = "dgvTags"
Me.dgvTags.RowHeadersWidth = 123
Me.dgvTags.RowTemplate.Height = 46
Me.dgvTags.Size = New System.Drawing.Size(1622, 874)
Me.dgvTags.TabIndex = 0
'
'tpOptions
'
Me.tpOptions.Controls.Add(Me.SimpleUI)
Me.tpOptions.Location = New System.Drawing.Point(12, 69)
Me.tpOptions.Margin = New System.Windows.Forms.Padding(5)
Me.tpOptions.Name = "tpOptions"
Me.tpOptions.Padding = New System.Windows.Forms.Padding(5)
Me.tpOptions.Size = New System.Drawing.Size(1628, 880)
Me.tpOptions.TabIndex = 2
Me.tpOptions.Text = " Options "
'
'SimpleUI
'
Me.SimpleUI.Dock = System.Windows.Forms.DockStyle.Fill
Me.SimpleUI.FormSizeScaleFactor = New System.Drawing.SizeF(0!, 0!)
Me.SimpleUI.Location = New System.Drawing.Point(5, 5)
Me.SimpleUI.Margin = New System.Windows.Forms.Padding(5)
Me.SimpleUI.Name = "SimpleUI"
Me.SimpleUI.Size = New System.Drawing.Size(1618, 870)
Me.SimpleUI.TabIndex = 0
Me.SimpleUI.Text = "SimpleUI1"
'
'tpCommandLine
'
Me.tpCommandLine.Controls.Add(Me.TableLayoutPanel1)
Me.tpCommandLine.Location = New System.Drawing.Point(12, 69)
Me.tpCommandLine.Margin = New System.Windows.Forms.Padding(5)
Me.tpCommandLine.Name = "tpCommandLine"
Me.tpCommandLine.Padding = New System.Windows.Forms.Padding(15, 14, 15, 14)
Me.tpCommandLine.Size = New System.Drawing.Size(1628, 880)
Me.tpCommandLine.TabIndex = 1
Me.tpCommandLine.Text = " Command Line "
'
'TableLayoutPanel1
'
Me.TableLayoutPanel1.ColumnCount = 1
Me.TableLayoutPanel1.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100.0!))
Me.TableLayoutPanel1.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 36.0!))
Me.TableLayoutPanel1.Controls.Add(Me.Label1, 0, 0)
Me.TableLayoutPanel1.Controls.Add(Me.clcGeneral, 0, 1)
Me.TableLayoutPanel1.Controls.Add(Me.Label2, 0, 2)
Me.TableLayoutPanel1.Controls.Add(Me.clcVideo, 0, 3)
Me.TableLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Fill
Me.TableLayoutPanel1.Location = New System.Drawing.Point(15, 14)
Me.TableLayoutPanel1.Margin = New System.Windows.Forms.Padding(5)
Me.TableLayoutPanel1.Name = "TableLayoutPanel1"
Me.TableLayoutPanel1.RowCount = 4
Me.TableLayoutPanel1.RowStyles.Add(New System.Windows.Forms.RowStyle())
Me.TableLayoutPanel1.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 20.0!))
Me.TableLayoutPanel1.RowStyles.Add(New System.Windows.Forms.RowStyle())
Me.TableLayoutPanel1.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 20.0!))
Me.TableLayoutPanel1.Size = New System.Drawing.Size(1598, 852)
Me.TableLayoutPanel1.TabIndex = 2
'
'Label1
'
Me.Label1.AutoSize = True
Me.Label1.Location = New System.Drawing.Point(5, 0)
Me.Label1.Margin = New System.Windows.Forms.Padding(5, 0, 5, 0)
Me.Label1.Name = "Label1"
Me.Label1.Size = New System.Drawing.Size(460, 48)
Me.Label1.Text = "Additional custom general switches:"
'
'Label2
'
Me.Label2.AutoSize = True
Me.Label2.Location = New System.Drawing.Point(5, 0)
Me.Label2.Margin = New System.Windows.Forms.Padding(5, 0, 5, 0)
Me.Label2.Name = "Label2"
Me.Label2.Size = New System.Drawing.Size(460, 48)
Me.Label2.Text = "Additional custom video switches:"
'
'tlpMain
'
Me.tlpMain.ColumnCount = 3
Me.tlpMain.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50.0!))
Me.tlpMain.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle())
Me.tlpMain.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle())
Me.tlpMain.Controls.Add(Me.bnCancel, 2, 1)
Me.tlpMain.Controls.Add(Me.bnOK, 1, 1)
Me.tlpMain.Controls.Add(Me.bnCommandLinePreview, 0, 1)
Me.tlpMain.Controls.Add(Me.pnTab, 0, 0)
Me.tlpMain.Dock = System.Windows.Forms.DockStyle.Fill
Me.tlpMain.Location = New System.Drawing.Point(0, 0)
Me.tlpMain.Name = "tlpMain"
Me.tlpMain.Padding = New System.Windows.Forms.Padding(8)
Me.tlpMain.RowCount = 2
Me.tlpMain.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50.0!))
Me.tlpMain.RowStyles.Add(New System.Windows.Forms.RowStyle())
Me.tlpMain.Size = New System.Drawing.Size(1684, 1079)
Me.tlpMain.TabIndex = 8
'
'pnTab
'
Me.tlpMain.SetColumnSpan(Me.pnTab, 3)
Me.pnTab.Controls.Add(Me.tcMain)
Me.pnTab.Dock = System.Windows.Forms.DockStyle.Fill
Me.pnTab.Location = New System.Drawing.Point(16, 16)
Me.pnTab.Margin = New System.Windows.Forms.Padding(8)
Me.pnTab.Name = "pnTab"
Me.pnTab.Size = New System.Drawing.Size(1652, 961)
Me.pnTab.TabIndex = 8
'
'MuxerForm
'
Me.AcceptButton = Me.bnOK
Me.AutoScaleDimensions = New System.Drawing.SizeF(288.0!, 288.0!)
Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi
Me.CancelButton = Me.bnCancel
Me.ClientSize = New System.Drawing.Size(1684, 1079)
Me.Controls.Add(Me.tlpMain)
Me.FormBorderStyle = System.Windows.Forms.FormBorderStyle.Sizable
Me.KeyPreview = True
Me.Margin = New System.Windows.Forms.Padding(11, 10, 11, 10)
Me.Name = "MuxerForm"
Me.Text = "Container"
Me.tcMain.ResumeLayout(False)
Me.tpSubtitles.ResumeLayout(False)
Me.tlpSubtitles.ResumeLayout(False)
Me.tlpSubtitles.PerformLayout()
CType(Me.dgvSubtitles, System.ComponentModel.ISupportInitialize).EndInit()
Me.flpSubtitleButtons.ResumeLayout(False)
Me.tpAudio.ResumeLayout(False)
Me.tlpAudio.ResumeLayout(False)
Me.tlpAudio.PerformLayout()
Me.flpAudio.ResumeLayout(False)
CType(Me.dgvAudio, System.ComponentModel.ISupportInitialize).EndInit()
Me.tpAttachments.ResumeLayout(False)
Me.tlpAttachments.ResumeLayout(False)
Me.tlpAttachments.PerformLayout()
Me.flpAttachments.ResumeLayout(False)
Me.tpTags.ResumeLayout(False)
CType(Me.dgvTags, System.ComponentModel.ISupportInitialize).EndInit()
Me.tpOptions.ResumeLayout(False)
Me.tpCommandLine.ResumeLayout(False)
Me.TableLayoutPanel1.ResumeLayout(False)
Me.TableLayoutPanel1.PerformLayout()
Me.tlpMain.ResumeLayout(False)
Me.pnTab.ResumeLayout(False)
Me.ResumeLayout(False)
End Sub
#End Region
Private ReadOnly Muxer As Muxer
Private ReadOnly AudioBindingSource As New BindingSource
Private ReadOnly SubtitleBindingSource As New BindingSource
Private ReadOnly SubtitleItems As New BindingList(Of SubtitleItem)
Sub New(muxer As Muxer)
MyBase.New()
InitializeComponent()
SetMinimumSize(30, 21)
RestoreClientSize(45, 22)
Text = $"Container - {muxer.Name} - {g.DefaultCommands.GetApplicationDetails()}"
Me.Muxer = muxer
AddSubtitles(muxer.Subtitles)
clcGeneral.tb.Text = muxer.AdditionalGeneralSwitches
clcVideo.tb.Text = muxer.AdditionalVideoSwitches
clcVideo.Visible = TypeOf muxer Is MP4Muxer
Label2.Visible = TypeOf muxer Is MP4Muxer
tcMain.SelectedIndex = s.Storage.GetInt("last selected muxer tab")
lbAttachments.Items.AddRange(muxer.Attachments.Select(Function(val) New AttachmentContainer With {.Filepath = val}).ToArray)
lbAttachments.RemoveButton = bnAttachmentRemove
AudioBindingSource.DataSource = ObjectHelp.GetCopy(p.AudioFiles)
dgvAudio.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.AllCells
dgvAudio.MultiSelect = False
dgvAudio.SelectionMode = DataGridViewSelectionMode.FullRowSelect
dgvAudio.AllowUserToResizeRows = False
dgvAudio.RowHeadersVisible = False
dgvAudio.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells
dgvAudio.AutoGenerateColumns = False
dgvAudio.DataSource = AudioBindingSource
dgvTags.DataSource = muxer.Tags
dgvTags.AllowUserToAddRows = True
dgvTags.AllowUserToDeleteRows = True
dgvTags.Columns(0).Width = FontHeight * 10
dgvTags.Columns(1).Width = FontHeight * 20
dgvTags.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.AllCells
bnAudioAdd.Symbol = Symbol.Add
bnAudioRemove.Symbol = Symbol.Remove
bnAudioPlay.Symbol = Symbol.Play
bnAudioUp.Symbol = Symbol.Up
bnAudioDown.Symbol = Symbol.Down
bnAudioEdit.Symbol = Symbol.Repair
bnSubtitleAdd.Symbol = Symbol.Add
bnSubtitleRemove.Symbol = Symbol.Remove
bnSubtitlePlay.Symbol = Symbol.Play
bnSubtitleUp.Symbol = Symbol.Up
bnSubtitleDown.Symbol = Symbol.Down
bnAttachmentAdd.Symbol = Symbol.Add
bnAttachmentRemove.Symbol = Symbol.Remove
For Each bn In {bnAudioAdd, bnAudioRemove, bnAudioPlay, bnAudioUp, bnAudioDown, bnAudioEdit,
bnSubtitleAdd, bnSubtitleRemove, bnSubtitlePlay, bnSubtitleUp, bnSubtitleDown,
bnAttachmentAdd, bnAttachmentRemove}
bn.TextImageRelation = TextImageRelation.Overlay
bn.ImageAlign = ContentAlignment.MiddleLeft
Dim pad = bn.Padding
pad.Left = FontHeight \ 10
pad.Right = pad.Left
bn.Padding = pad
Next
Dim profileName = dgvAudio.AddTextBoxColumn()
profileName.DataPropertyName = "Name"
profileName.HeaderText = "Profile"
profileName.ReadOnly = True
Dim pathColumn = dgvAudio.AddTextBoxColumn()
pathColumn.DataPropertyName = "DisplayName"
pathColumn.HeaderText = "Track"
pathColumn.ReadOnly = True
If dgvAudio.RowCount > 0 Then
dgvAudio.Rows(0).Selected = True
End If
dgvSubtitles.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells
dgvSubtitles.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.AllCells
dgvSubtitles.AutoGenerateColumns = False
dgvSubtitles.ShowCellToolTips = False
dgvSubtitles.AllowUserToResizeRows = False
dgvSubtitles.AllowUserToResizeColumns = False
dgvSubtitles.RowHeadersVisible = False
dgvSubtitles.SelectionMode = DataGridViewSelectionMode.FullRowSelect
dgvSubtitles.MultiSelect = False
dgvSubtitles.ClipboardCopyMode = DataGridViewClipboardCopyMode.Disable
Dim enabledColumn As New DataGridViewCheckBoxColumn
enabledColumn.HeaderText = "Enabled"
enabledColumn.DataPropertyName = "Enabled"
dgvSubtitles.Columns.Add(enabledColumn)
Dim languageColumn As New DataGridViewComboBoxColumn
languageColumn.HeaderText = "Language"
languageColumn.Items.AddRange(Language.Languages.OrderByDescending(Function(x) x.IsCommon).ThenBy(Function(x)x.EnglishName).Distinct().ToArray())
languageColumn.DataPropertyName = "Language"
dgvSubtitles.Columns.Add(languageColumn)
Dim nameColumn As New DataGridViewTextBoxColumn
nameColumn.HeaderText = "Name"
nameColumn.DataPropertyName = "Title"
dgvSubtitles.Columns.Add(nameColumn)
Dim defaultColumn As New DataGridViewCheckBoxColumn
defaultColumn.HeaderText = "Default"
defaultColumn.DataPropertyName = "Default"
dgvSubtitles.Columns.Add(defaultColumn)
Dim forcedColumn As New DataGridViewCheckBoxColumn
forcedColumn.HeaderText = "Forced"
forcedColumn.DataPropertyName = "Forced"
dgvSubtitles.Columns.Add(forcedColumn)
If TypeOf muxer Is MkvMuxer Then
Dim commentaryColumn As New DataGridViewCheckBoxColumn
commentaryColumn.HeaderText = "Commentary"
commentaryColumn.DataPropertyName = "Commentary"
dgvSubtitles.Columns.Add(commentaryColumn)
Dim hearingimpairedColumn As New DataGridViewCheckBoxColumn
hearingimpairedColumn.HeaderText = "Hearingimpaired"
hearingimpairedColumn.DataPropertyName = "Hearingimpaired"
dgvSubtitles.Columns.Add(hearingimpairedColumn)
End If
Dim idColumn As New DataGridViewTextBoxColumn
idColumn.ReadOnly = True
idColumn.HeaderText = "ID"
idColumn.DataPropertyName = "ID"
dgvSubtitles.Columns.Add(idColumn)
Dim typeNameColumn As New DataGridViewTextBoxColumn
typeNameColumn.ReadOnly = True
typeNameColumn.HeaderText = "Type"
typeNameColumn.DataPropertyName = "TypeName"
dgvSubtitles.Columns.Add(typeNameColumn)
Dim sizeColumn As New DataGridViewTextBoxColumn
sizeColumn.ReadOnly = True
sizeColumn.HeaderText = "Size"
sizeColumn.DataPropertyName = "Size"
dgvSubtitles.Columns.Add(sizeColumn)
Dim filenameColumn As New DataGridViewTextBoxColumn
filenameColumn.ReadOnly = True
filenameColumn.HeaderText = "Filename"
filenameColumn.DataPropertyName = "Filename"
dgvSubtitles.Columns.Add(filenameColumn)
SubtitleBindingSource.AllowNew = False
SubtitleBindingSource.DataSource = SubtitleItems
dgvSubtitles.DataSource = SubtitleBindingSource
TipProvider.SetTip("Additional command line switches that may contain macros.", tpCommandLine)
ApplyTheme()
AddHandler ThemeManager.CurrentThemeChanged, AddressOf OnThemeChanged
End Sub
Protected Overrides Sub Dispose(disposing As Boolean)
RemoveHandler ThemeManager.CurrentThemeChanged, AddressOf OnThemeChanged
components?.Dispose()
MyBase.Dispose(disposing)
End Sub
Sub OnThemeChanged(theme As Theme)
ApplyTheme(theme)
End Sub
Sub ApplyTheme()
ApplyTheme(ThemeManager.CurrentTheme)
End Sub
Sub ApplyTheme(controls As IEnumerable(Of Control))
ApplyTheme(controls, ThemeManager.CurrentTheme)
End Sub
Sub ApplyTheme(theme As Theme)
ApplyTheme(GetAllControls(), theme)
End Sub
Sub ApplyTheme(controls As IEnumerable(Of Control), theme As Theme)
If DesignHelp.IsDesignMode Then
Exit Sub
End If
BackColor = theme.General.BackColor
For Each control In controls.OfType(Of FlowLayoutPanel)
control.BackColor = theme.General.Controls.FlowLayoutPanel.BackColor
control.ForeColor = theme.General.Controls.FlowLayoutPanel.ForeColor
Next
For Each control In controls.OfType(Of TableLayoutPanel)
control.BackColor = theme.General.Controls.TableLayoutPanel.BackColor
control.ForeColor = theme.General.Controls.TableLayoutPanel.ForeColor
Next
For Each control In controls.OfType(Of TabControl)
control.BackColor = theme.General.Controls.TabControl.BackColor
control.ForeColor = theme.General.Controls.TabControl.ForeColor
Next
For Each control In controls.OfType(Of TabPage)
control.BackColor = theme.General.Controls.TabPage.BackColor
control.ForeColor = theme.General.Controls.TabPage.ForeColor
Next
End Sub
Public Class AttachmentContainer
Property Filepath As String
Public Overrides Function ToString() As String
Return If(Filepath.Contains("_attachment_"), Filepath.Right("_attachment_"), Path.GetFileName(Filepath))
End Function
End Class
Public Class SubtitleItem
Property Enabled As Boolean
Property Language As Language
Property Title As String = ""
Property [Default] As Boolean
Property Forced As Boolean
Property Commentary As Boolean
Property Hearingimpaired As Boolean
Property ID As Integer
Property TypeName As String
Property Size As String
Property Filename As String
Property Subtitle As Subtitle
End Class
Protected Overrides Sub OnShown(e As EventArgs)
MyBase.OnShown(e)
Dim UI = SimpleUI
UI.Store = Muxer
UI.BackColor = Color.Transparent
Dim page = UI.CreateFlowPage("main page")
page.SuspendLayout()
Dim tb = UI.AddTextButton()
tb.Text = "Cover"
tb.Expanded = True
tb.Property = NameOf(Muxer.CoverFile)
tb.BrowseFile("jpg, png, bmp|*.jpg;*.png;*.bmp")
Dim mb = UI.AddTextMenu()
mb.Text = "Chapters"
mb.Expanded = True
mb.Help = "Chapter file to be muxed."
mb.Property = NameOf(Muxer.ChapterFile)
mb.AddMenu("Browse File...", Function() g.BrowseFile("txt, xml|*.txt;*.xml"))
mb.AddMenu("Edit with chapterEditor...", Sub() g.ShellExecute(Package.chapterEditor.Path, Muxer.ChapterFile.Escape))
If TypeOf Muxer Is MkvMuxer Then
clcGeneral.Presets = If(s.CommandLinePresets.ContainsKey(CommandLinePresetType.MuxerMkvGeneral), s.CommandLinePresets(CommandLinePresetType.MuxerMkvGeneral), "")
mb = UI.AddTextMenu()
mb.Text = "Tags"
mb.Expanded = True
mb.Help = "Tag file to be muxed."
mb.Property = NameOf(Muxer.TagFile)
mb.AddMenu("Browse File...", Function() g.BrowseFile("xml|*.xml"))
mb.AddMenu("Edit File...", Sub() g.ShellExecute(g.GetAppPathForExtension("xml", "txt"), Muxer.TagFile.Escape))
tb = UI.AddTextButton()
tb.Text = "Timestamps"
tb.Help = "txt or mkv file"
tb.Expanded = True
tb.Property = NameOf(Muxer.TimestampsFile)
tb.BrowseFile("txt, mkv|*.txt;*.mkv")
tb = UI.AddTextButton()
tb.Text = "Title"
tb.Expanded = True
tb.Property = NameOf(MkvMuxer.Title)
tb.Button.Text = "%"
tb.Button.ClickAction = Sub() MacrosForm.ShowDialogForm()
Dim t = UI.AddText()
t.Text = "Video Track Name"
t.Help = "Optional name of the video stream that may contain macros."
t.Expanded = True
t.Property = NameOf(Muxer.VideoTrackName)
Dim tm = UI.AddTextMenu()
tm.Text = "Display Aspect Ratio"
tm.Help = "Display Aspect Ratio to be applied by mkvmerge. By default and best practice the aspect ratio should be signalled to the encoder and not to the muxer, use this setting at your own risk."
tm.Property = NameOf(MkvMuxer.DAR)
tm.AddMenu(s.DarMenu)
Dim ml = UI.AddMenu(Of Language)()
ml.Text = "Video Track Language"
ml.Help = "Optional language of the video stream."
ml.Property = NameOf(MkvMuxer.VideoTrackLanguage)
g.PopulateLanguagesAsync(ml.Button)
Dim compression = UI.AddMenu(Of CompressionMode)()
compression.Text = "Subtitle Compression"
compression.Property = NameOf(MkvMuxer.Compression)
ElseIf TypeOf Muxer Is MP4Muxer Then
tpAttachments.Enabled = False
clcGeneral.Presets = If(s.CommandLinePresets.ContainsKey(CommandLinePresetType.MuxerMP4General), s.CommandLinePresets(CommandLinePresetType.MuxerMP4General), "")
clcVideo.Presets = If(s.CommandLinePresets.ContainsKey(CommandLinePresetType.MuxerMP4Video), s.CommandLinePresets(CommandLinePresetType.MuxerMP4Video), "")
Dim txt = UI.AddText()
txt.Text = "Video Track Name"
txt.Help = "Optional name of the video stream that may contain macros."
txt.Expanded = True
txt.Property = NameOf(Muxer.VideoTrackName)
Dim textMenu = UI.AddTextMenu()
textMenu.Text = "Pixel Aspect Ratio:"
textMenu.Help = "Display Aspect Ratio to be applied by MP4Box. By default and best practice the aspect ratio should be signalled to the encoder and not to the muxer, use this setting at your own risk."
textMenu.Property = NameOf(MP4Muxer.PAR)
textMenu.AddMenu(s.ParMenu)
End If
page.ResumeLayout()
ApplyTheme()
UpdateControls()
End Sub
Protected Overrides Sub OnFormClosed(e As FormClosedEventArgs)
MyBase.OnFormClosed(e)
If TypeOf Muxer Is MkvMuxer Then
s.CommandLinePresets(CommandLinePresetType.MuxerMkvGeneral) = clcGeneral.Presets
ElseIf TypeOf Muxer Is MP4Muxer Then
s.CommandLinePresets(CommandLinePresetType.MuxerMP4General) = clcGeneral.Presets
s.CommandLinePresets(CommandLinePresetType.MuxerMP4Video) = clcVideo.Presets
End If
s.Storage.SetInt("last selected muxer tab", tcMain.SelectedIndex)
SetValues()
If DialogResult = DialogResult.OK Then
p.AudioFiles = DirectCast(AudioBindingSource.DataSource, List(Of AudioProfile))
Muxer.Attachments.Clear()
Muxer.Attachments.AddRange(lbAttachments.Items.OfType(Of AttachmentContainer).Select(Function(val) val.Filepath))
End If
End Sub
Sub SetValues()
Muxer.Subtitles.Clear()
For Each subtitle In SubtitleItems
subtitle.Subtitle.Language = subtitle.Language
subtitle.Subtitle.Enabled = subtitle.Enabled
subtitle.Subtitle.Title = subtitle.Title
subtitle.Subtitle.Default = subtitle.Default
subtitle.Subtitle.Forced = subtitle.Forced
subtitle.Subtitle.Commentary = subtitle.Commentary
subtitle.Subtitle.Hearingimpaired = subtitle.Hearingimpaired
If subtitle.Subtitle.Title Is Nothing Then
subtitle.Subtitle.Title = ""
End If
Muxer.Subtitles.Add(subtitle.Subtitle)
Next
SimpleUI.Save()
Muxer.AdditionalGeneralSwitches = clcGeneral.tb.Text
Muxer.AdditionalVideoSwitches = clcVideo.tb.Text
End Sub
Sub AddAttachment(paths As String())
Dim attachmentItems = lbAttachments.Items.OfType(Of AttachmentContainer).Select(Function(val) val.Filepath).ToList
attachmentItems.AddRange(paths)
attachmentItems.Sort()
lbAttachments.Items.Clear()
lbAttachments.Items.AddRange(attachmentItems.Select(Function(val) New AttachmentContainer With {.Filepath = val}).ToArray)
UpdateControls()
End Sub
Sub UpdateControls()
bnAudioRemove.Enabled = dgvAudio.SelectedRows.Count > 0
bnAudioPlay.Enabled = dgvAudio.SelectedRows.Count > 0
bnAudioEdit.Enabled = dgvAudio.SelectedRows.Count > 0
bnAudioUp.Enabled = dgvAudio.CanMoveUp
bnAudioDown.Enabled = dgvAudio.CanMoveDown
Dim selectedSubtitles = dgvSubtitles.SelectedRows.Count > 0
Dim subtitlePath = If(selectedSubtitles AndAlso dgvSubtitles.CurrentRow.Index < SubtitleItems.Count, SubtitleItems(dgvSubtitles.CurrentRow.Index).Subtitle.Path, "")
bnSubtitleBDSup2SubPP.Enabled = selectedSubtitles AndAlso {"idx", "sup"}.Contains(subtitlePath.Ext)
bnSubtitleEdit.Enabled = selectedSubtitles
bnSubtitlePlay.Enabled = p.SourceFile <> "" AndAlso selectedSubtitles
bnSubtitleUp.Enabled = dgvSubtitles.CanMoveUp
bnSubtitleDown.Enabled = dgvSubtitles.CanMoveDown
bnSubtitleSetNames.Enabled = selectedSubtitles
bnSubtitleRemove.Enabled = selectedSubtitles
lbAttachments.UpdateControls()
End Sub
Sub AddAudio(path As String)
Dim profileSelection As New SelectionBox(Of AudioProfile) With {
.Title = "Audio Profile",
.Text = "Please select an audio profile."
}
For Each audioProfile In s.AudioProfiles
profileSelection.AddItem(audioProfile)
Next
profileSelection.SelectedText = "Copy/Mux"
If profileSelection.Show <> DialogResult.OK Then
Exit Sub
End If
Dim ap = ObjectHelp.GetCopy(profileSelection.SelectedValue)
ap.File = path
If Not p.Script.GetFilter("Source").Script.Contains("DirectShowSource") Then
ap.Delay += g.ExtractDelay(ap.File)
End If
Dim trackname = g.ExtractTrackNameFromFilename(path)
ap.StreamName = If(trackname, ap.StreamName)
If FileTypes.VideoAudio.Contains(ap.File.Ext) Then
ap.Streams = MediaInfo.GetAudioStreams(ap.File)
End If
ap.SetStreamOrLanguage()
If ap.Stream IsNot Nothing Then
Dim streamSelection As New SelectionBox(Of AudioStream) With {
.Title = "Stream Selection",
.Text = "Please select an audio stream."
}
For Each stream In ap.Streams
streamSelection.AddItem(stream)
Next
If streamSelection.Show <> DialogResult.OK Then
Exit Sub
End If
ap.Stream = streamSelection.SelectedValue
End If
g.MainForm.UpdateSizeOrBitrate()
AudioBindingSource.Add(ap)
AudioBindingSource.Position = AudioBindingSource.Count - 1
UpdateControls()
End Sub
Sub AddSubtitles(subtitles As List(Of Subtitle))
For Each i In subtitles
If SubtitleItems.Where(Function(item) item.Default).Count > 0 Then
i.Default = False
End If
If File.Exists(i.Path) Then
Dim sizeText = ""
If i.Size > 0 Then
sizeText = If(i.Size > PrefixedSize(2).Factor,
$"{i.Size / PrefixedSize(2).Factor:f1} {PrefixedSize(2).Unit}",
$"{i.Size / PrefixedSize(1).Factor:f1} {PrefixedSize(1).Unit}")
End If
Dim _option As String = ""
If i.Default Then _option &= ", default"
If i.Forced Then _option &= ", forced"
If i.Commentary Then _option &= ", comment"
If i.Hearingimpaired Then _option &= ", hearingimpaired"
_option = _option.TrimStart(","c).Trim()
Dim match = Regex.Match(i.Path, " ID(\d+)")
Dim id = If(match.Success, CInt(match.Groups(1).Value), i.StreamOrder + 1)
Dim item As New SubtitleItem With {
.Enabled = i.Enabled,
.Language = i.Language,
.Title = i.Title,
.Default = i.Default,
.Forced = i.Forced,
.Commentary = i.Commentary,
.Hearingimpaired = i.Hearingimpaired,
.ID = id,
.TypeName = i.TypeName,
.Size = sizeText,
.Filename = i.Path.FileName,
.Subtitle = i
}
SubtitleItems.Add(item)
End If
Next
End Sub
Sub bnSubtitlePlay_Click(sender As Object, e As EventArgs) Handles bnSubtitlePlay.Click
Dim st = SubtitleItems(dgvSubtitles.CurrentRow.Index).Subtitle
Dim filepath = st.Path
If st.Path.Ext = "idx" Then
filepath = Path.Combine(p.TempDir, p.TargetFile.Base + "_play.idx")
Regex.Replace(st.Path.ReadAllText, "langidx: \d+", "langidx: " +
st.IndexIDX.ToString).WriteFileSystemEncoding(filepath)
FileHelp.Copy(st.Path.DirAndBase + ".sub", filepath.DirAndBase + ".sub")
End If
If FileTypes.SubtitleExludingContainers.Contains(filepath.Ext) Then
Dim count = MediaInfo.GetSubtitleCount(p.FirstOriginalSourceFile)
g.ShellExecute(Package.mpvnet.Path, "--sub-files=" + filepath.Escape + " " +
p.FirstOriginalSourceFile.Escape + $" --sid={count + 1}")
ElseIf p.FirstOriginalSourceFile = filepath Then
g.ShellExecute(Package.mpvnet.Path, "--sid=" & (st.Index + 1) & " " + filepath.Escape)
End If
End Sub
Sub bnCommandLinePreview_Click(sender As Object, e As EventArgs) Handles bnCommandLinePreview.Click
SetValues()
g.ShowCommandLinePreview("Command Line", Muxer.GetCommandLine, False)
End Sub
Sub bnAudioAdd_Click(sender As Object, e As EventArgs) Handles bnAudioAdd.Click
Using dialog As New OpenFileDialog
dialog.Multiselect = True
dialog.SetFilter(FileTypes.Audio.Union(FileTypes.VideoAudio))
dialog.SetInitDir(p.TempDir)
If dialog.ShowDialog = DialogResult.OK Then
For Each path In dialog.FileNames
AddAudio(path)
Next
End If
End Using
End Sub
Sub bnAudioRemove_Click(sender As Object, e As EventArgs) Handles bnAudioRemove.Click
dgvAudio.RemoveSelection
UpdateControls()
End Sub
Sub bnAudioUp_Click(sender As Object, e As EventArgs) Handles bnAudioUp.Click
dgvAudio.MoveSelectionUp
UpdateControls()
End Sub
Sub bnAudioDown_Click(sender As Object, e As EventArgs) Handles bnAudioDown.Click
dgvAudio.MoveSelectionDown
UpdateControls()
End Sub
Sub bnAudioPlay_Click(sender As Object, e As EventArgs) Handles bnAudioPlay.Click
g.Play(DirectCast(AudioBindingSource(dgvAudio.SelectedRows(0).Index), AudioProfile).File)
End Sub
Sub bnAudioEdit_Click(sender As Object, e As EventArgs) Handles bnAudioEdit.Click
Dim ap = DirectCast(AudioBindingSource(dgvAudio.SelectedRows(0).Index), AudioProfile)
ap.EditProject()
g.MainForm.UpdateAudioMenus()
g.MainForm.UpdateSizeOrBitrate()
AudioBindingSource.ResetBindings(False)
End Sub
Sub bnAttachmentAdd_Click(sender As Object, e As EventArgs) Handles bnAttachmentAdd.Click
Using dialog As New OpenFileDialog
dialog.Multiselect = True
dialog.SetFilter({"ttf", "txt", "jpg", "png", "otf", "jpeg", "xml", "nfo"})
dialog.SetInitDir(p.TempDir)
If dialog.ShowDialog = DialogResult.OK Then
AddAttachment(dialog.FileNames)
End If
End Using
End Sub
Sub lbAttachments_DragDrop(sender As Object, e As DragEventArgs) Handles lbAttachments.DragDrop
Dim files = TryCast(e.Data.GetData(DataFormats.FileDrop), String())
If Not files.NothingOrEmpty Then
AddAttachment(files)
End If
End Sub
Sub lbAttachments_DragEnter(sender As Object, e As DragEventArgs) Handles lbAttachments.DragEnter
Dim files = TryCast(e.Data.GetData(DataFormats.FileDrop), String())
If Not files.NothingOrEmpty Then
e.Effect = DragDropEffects.Copy
End If
End Sub
Sub dgvAudio_MouseUp(sender As Object, e As MouseEventArgs) Handles dgvAudio.MouseUp
UpdateControls()
End Sub
Sub dgvAudio_SelectionChanged(sender As Object, e As EventArgs) Handles dgvAudio.SelectionChanged
UpdateControls()
End Sub
Sub dgvAudio_DragEnter(sender As Object, e As DragEventArgs) Handles dgvAudio.DragEnter
Dim files = TryCast(e.Data.GetData(DataFormats.FileDrop), String())
If Not files.NothingOrEmpty Then
If FileTypes.VideoAudio.ContainsAny(files.Select(Function(item) item.Ext)) Then
e.Effect = DragDropEffects.Copy
End If
End If
End Sub
Sub dgvAudio_DragDrop(sender As Object, e As DragEventArgs) Handles dgvAudio.DragDrop
Dim files = TryCast(e.Data.GetData(DataFormats.FileDrop), String())
If Not files.NothingOrEmpty Then
For Each filePath In files
If FileTypes.VideoAudio.Contains(filePath.Ext) Then
AddAudio(filePath)
End If
Next
End If
End Sub
Sub MuxerForm_HelpRequested(sender As Object, ea As HelpEventArgs) Handles Me.HelpRequested
Dim form As New HelpForm()
form.Doc.WriteStart(Text)
form.Doc.WriteParagraph(
"A muxer merges different video, audio and subtitle files " +
"into a single container file which is the actual output file.")
form.Doc.WriteTips(TipProvider.GetTips, SimpleUI.ActivePage.TipProvider.GetTips)
form.Doc.WriteTable("Macros", Macro.GetTips(True, False, True, True, False))
form.Show()
End Sub
Sub dgvSubtitles_MouseUp(sender As Object, e As MouseEventArgs) Handles dgvSubtitles.MouseUp
UpdateControls()
End Sub
Sub dgvSubtitles_DragEnter(sender As Object, ea As DragEventArgs) Handles dgvSubtitles.DragEnter
Dim files = TryCast(ea.Data.GetData(DataFormats.FileDrop), String())
If Not files.NothingOrEmpty Then
If FileTypes.SubtitleIncludingContainers.ContainsAny(files.Select(Function(item) item.Ext)) Then
ea.Effect = DragDropEffects.Copy
End If
End If
End Sub
Sub dgvSubtitles_DragDrop(sender As Object, ea As DragEventArgs) Handles dgvSubtitles.DragDrop
Dim files = TryCast(ea.Data.GetData(DataFormats.FileDrop), String())
If Not files.NothingOrEmpty Then
For Each filePath In files
If FileTypes.SubtitleIncludingContainers.Contains(filePath.Ext) Then
AddSubtitles(Subtitle.Create(filePath))
End If
Next
End If
End Sub
Sub dgvSubtitles_CellParsing(sender As Object, e As DataGridViewCellParsingEventArgs) Handles dgvSubtitles.CellParsing
If TypeOf dgvSubtitles.CurrentCell.OwningColumn Is DataGridViewComboBoxColumn Then
Dim editingControl = DirectCast(dgvSubtitles.EditingControl, DataGridViewComboBoxEditingControl)
e.Value = editingControl.SelectedItem
e.ParsingApplied = True
End If
End Sub
Sub dgvSubtitles_CellEndEdit(sender As Object, e As DataGridViewCellEventArgs) Handles dgvSubtitles.CellEndEdit
UpdateControls()
End Sub
Sub bnSubtitleAdd_Click(sender As Object, e As EventArgs) Handles bnSubtitleAdd.Click
Using dialog As New OpenFileDialog
dialog.Multiselect = True
dialog.SetFilter(FileTypes.SubtitleIncludingContainers)
dialog.SetInitDir(s.LastSourceDir)
If dialog.ShowDialog = DialogResult.OK Then
For Each fn In dialog.FileNames
AddSubtitles(Subtitle.Create(fn))
Next
UpdateControls()
End If
End Using
End Sub
Sub bnSubtitleRemove_Click(sender As Object, e As EventArgs) Handles bnSubtitleRemove.Click
dgvSubtitles.RemoveSelection
UpdateControls()
End Sub
Sub bnSubtitleUp_Click(sender As Object, e As EventArgs) Handles bnSubtitleUp.Click
dgvSubtitles.MoveSelectionUp
UpdateControls()
End Sub
Sub bnSubtitleDown_Click(sender As Object, e As EventArgs) Handles bnSubtitleDown.Click
dgvSubtitles.MoveSelectionDown
UpdateControls()
End Sub
Sub bnSubtitleSetNames_Click(sender As Object, e As EventArgs) Handles bnSubtitleSetNames.Click
Using td As New TaskDialog(Of Integer)
td.Title = "Set names for all streams."
td.AddCommand("Set language in English", 1)
If CultureInfo.CurrentCulture.NeutralCulture.TwoLetterISOLanguageName <> "en" Then
td.AddCommand("Set language in " + CultureInfo.CurrentCulture.NeutralCulture.DisplayName, 2)
End If
Select Case td.Show
Case 1
For Each i In SubtitleItems
i.Title = i.Language.CultureInfo.EnglishName
If i.Forced Then i.Title += " (forced)"
If i.Commentary Then i.Title += " (commentary)"
If i.Hearingimpaired Then i.Title += " (hearingimpaired)"
Next
SubtitleBindingSource.ResetBindings(False)
Case 2
For Each i In SubtitleItems
i.Title = i.Language.CultureInfo.NeutralCulture.DisplayName
If i.Forced Then i.Title += " (forced)"
If i.Commentary Then i.Title += " (commentary)"
If i.Hearingimpaired Then i.Title += " (hearingimpaired)"
Next
SubtitleBindingSource.ResetBindings(False)
End Select
End Using
End Sub
Sub bnSubtitleBDSup2SubPP_Click(sender As Object, e As EventArgs) Handles bnSubtitleBDSup2SubPP.Click
Try
Dim st = SubtitleItems(dgvSubtitles.CurrentRow.Index).Subtitle
Dim fp = st.Path
If fp.Ext = "idx" Then
fp = Path.Combine(p.TempDir, p.TargetFile.Base + "_temp.idx")
Regex.Replace(st.Path.ReadAllText, "langidx: \d+", "langidx: " + st.IndexIDX.ToString).WriteFileSystemEncoding(fp)
FileHelp.Copy(st.Path.DirAndBase + ".sub", fp.DirAndBase + ".sub")
End If
g.ShellExecute(Package.BDSup2SubPP.Path, """" + fp + """")
Catch ex As Exception
g.ShowException(ex)
End Try
End Sub
Sub bnSubtitleEdit_Click(sender As Object, e As EventArgs) Handles bnSubtitleEdit.Click
Try
Dim st = SubtitleItems(dgvSubtitles.CurrentRow.Index).Subtitle
Dim fp = st.Path
If fp.ExtFull = ".idx" Then
fp = Path.Combine(p.TempDir, p.TargetFile.Base + "_temp.idx")
Regex.Replace(st.Path.ReadAllText, "langidx: \d+", "langidx: " + st.IndexIDX.ToString).WriteFileSystemEncoding(fp)
FileHelp.Copy(st.Path.DirAndBase + ".sub", fp.DirAndBase + ".sub")
End If
g.ShellExecute(Package.SubtitleEdit.Path, fp.Escape)
Catch ex As Exception
g.ShowException(ex)
End Try
End Sub
Sub dgvSubtitles_DataBindingComplete(sender As Object, e As DataGridViewBindingCompleteEventArgs) Handles dgvSubtitles.DataBindingComplete
UpdateControls()
End Sub
Sub dgvSubtitles_KeyUp(sender As Object, e As KeyEventArgs) Handles dgvSubtitles.KeyUp
UpdateControls()
End Sub
Sub dgvSubtitles_SelectionChanged(sender As Object, e As EventArgs) Handles dgvSubtitles.SelectionChanged
UpdateControls()
End Sub
End Class