Files
staxrip/Source/Forms/CommandLineDemuxForm.vb
T
2021-03-08 08:45:48 +01:00

441 lines
19 KiB
VB.net

Imports StaxRip.UI
Public Class CommandLineDemuxForm
Inherits DialogBase
#Region " Designer "
Protected Overloads Overrides Sub Dispose(disposing As Boolean)
If disposing Then
If Not (components Is Nothing) Then
components.Dispose()
End If
End If
MyBase.Dispose(disposing)
End Sub
Friend WithEvents CommandLink1 As StaxRip.UI.CommandLink
Friend WithEvents tbName As TextEdit
Friend WithEvents tbInput As TextEdit
Friend WithEvents tbInputFormats As TextEdit
Friend WithEvents tbVideoOut As TextEdit
Friend WithEvents tbCommand As TextEdit
Friend WithEvents tbArguments As TextEdit
Friend WithEvents tbSourceFilters As TextEdit
Friend WithEvents bnCancel As StaxRip.UI.ButtonEx
Friend WithEvents bnOK As StaxRip.UI.ButtonEx
Friend WithEvents tlpMain As System.Windows.Forms.TableLayoutPanel
Friend WithEvents Label2 As LabelEx
Friend WithEvents Label3 As LabelEx
Friend WithEvents Label1 As LabelEx
Friend WithEvents Label6 As LabelEx
Friend WithEvents Label7 As LabelEx
Friend WithEvents Label8 As LabelEx
Friend WithEvents Label9 As LabelEx
Friend WithEvents bnBrowse As ButtonEx
Friend WithEvents bnArguments As ButtonEx
Friend WithEvents cmsArguments As ContextMenuStripEx
Friend WithEvents MacrosToolStripMenuItem As ToolStripMenuItem
Friend WithEvents HelpToolStripMenuItem As ToolStripMenuItem
Friend WithEvents TipProvider As TipProvider
Private components As System.ComponentModel.IContainer
<System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
Me.components = New System.ComponentModel.Container()
Me.tbName = New TextEdit()
Me.tbInput = New TextEdit()
Me.tbInputFormats = New TextEdit()
Me.tbVideoOut = New TextEdit()
Me.tbCommand = New TextEdit()
Me.tbArguments = New TextEdit()
Me.tbSourceFilters = New TextEdit()
Me.bnCancel = New StaxRip.UI.ButtonEx()
Me.bnOK = New StaxRip.UI.ButtonEx()
Me.tlpMain = New System.Windows.Forms.TableLayoutPanel()
Me.bnArguments = New StaxRip.UI.ButtonEx()
Me.cmsArguments = New StaxRip.UI.ContextMenuStripEx(Me.components)
Me.MacrosToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem()
Me.HelpToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem()
Me.bnBrowse = New StaxRip.UI.ButtonEx()
Me.Label6 = New LabelEx()
Me.Label2 = New LabelEx()
Me.Label3 = New LabelEx()
Me.Label8 = New LabelEx()
Me.Label9 = New LabelEx()
Me.Label1 = New LabelEx()
Me.Label7 = New LabelEx()
Me.TipProvider = New StaxRip.UI.TipProvider(Me.components)
Me.tlpMain.SuspendLayout()
Me.cmsArguments.SuspendLayout()
Me.SuspendLayout()
'
'tbName
'
Me.tbName.Anchor = CType((System.Windows.Forms.AnchorStyles.Left Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
Me.tlpMain.SetColumnSpan(Me.tbName, 3)
Me.tbName.Location = New System.Drawing.Point(295, 14)
Me.tbName.Margin = New System.Windows.Forms.Padding(0)
Me.tbName.Name = "tbName"
Me.tbName.Size = New System.Drawing.Size(1339, 55)
Me.tbName.TabIndex = 1
'
'tbInput
'
Me.tbInput.Anchor = CType((System.Windows.Forms.AnchorStyles.Left Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
Me.tlpMain.SetColumnSpan(Me.tbInput, 3)
Me.tbInput.Location = New System.Drawing.Point(295, 97)
Me.tbInput.Margin = New System.Windows.Forms.Padding(0)
Me.tbInput.Name = "tbInput"
Me.tbInput.Size = New System.Drawing.Size(1339, 55)
Me.tbInput.TabIndex = 13
'
'tbInputFormats
'
Me.tbInputFormats.Anchor = CType((System.Windows.Forms.AnchorStyles.Left Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
Me.tlpMain.SetColumnSpan(Me.tbInputFormats, 3)
Me.tbInputFormats.Location = New System.Drawing.Point(295, 263)
Me.tbInputFormats.Margin = New System.Windows.Forms.Padding(0)
Me.tbInputFormats.Name = "tbInputFormats"
Me.tbInputFormats.Size = New System.Drawing.Size(1339, 55)
Me.tbInputFormats.TabIndex = 15
'
'tbVideoOut
'
Me.tbVideoOut.Anchor = CType((System.Windows.Forms.AnchorStyles.Left Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
Me.tlpMain.SetColumnSpan(Me.tbVideoOut, 3)
Me.tbVideoOut.Location = New System.Drawing.Point(295, 180)
Me.tbVideoOut.Margin = New System.Windows.Forms.Padding(0)
Me.tbVideoOut.Name = "tbVideoOut"
Me.tbVideoOut.Size = New System.Drawing.Size(1339, 55)
Me.tbVideoOut.TabIndex = 3
'
'tbCommand
'
Me.tbCommand.Anchor = CType((System.Windows.Forms.AnchorStyles.Left Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
Me.tlpMain.SetColumnSpan(Me.tbCommand, 2)
Me.tbCommand.Location = New System.Drawing.Point(295, 429)
Me.tbCommand.Margin = New System.Windows.Forms.Padding(0)
Me.tbCommand.Name = "tbCommand"
Me.tbCommand.Size = New System.Drawing.Size(1074, 55)
Me.tbCommand.TabIndex = 7
'
'tbArguments
'
Me.tbArguments.Anchor = CType((System.Windows.Forms.AnchorStyles.Left Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
Me.tlpMain.SetColumnSpan(Me.tbArguments, 2)
Me.tbArguments.Location = New System.Drawing.Point(295, 512)
Me.tbArguments.Margin = New System.Windows.Forms.Padding(0)
Me.tbArguments.Name = "tbArguments"
Me.tbArguments.Size = New System.Drawing.Size(1074, 55)
Me.tbArguments.TabIndex = 9
'
'tbSourceFilters
'
Me.tbSourceFilters.Anchor = CType((System.Windows.Forms.AnchorStyles.Left Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
Me.tlpMain.SetColumnSpan(Me.tbSourceFilters, 3)
Me.tbSourceFilters.Location = New System.Drawing.Point(295, 346)
Me.tbSourceFilters.Margin = New System.Windows.Forms.Padding(0)
Me.tbSourceFilters.Name = "tbSourceFilters"
Me.tbSourceFilters.Size = New System.Drawing.Size(1339, 55)
Me.tbSourceFilters.TabIndex = 19
'
'bnCancel
'
Me.bnCancel.DialogResult = System.Windows.Forms.DialogResult.Cancel
Me.bnCancel.Location = New System.Drawing.Point(1384, 596)
Me.bnCancel.Margin = New System.Windows.Forms.Padding(15, 15, 0, 0)
Me.bnCancel.Size = New System.Drawing.Size(250, 70)
Me.bnCancel.Text = "Cancel"
'
'bnOK
'
Me.bnOK.DialogResult = System.Windows.Forms.DialogResult.OK
Me.bnOK.Location = New System.Drawing.Point(1119, 596)
Me.bnOK.Margin = New System.Windows.Forms.Padding(0, 15, 0, 0)
Me.bnOK.Size = New System.Drawing.Size(250, 70)
Me.bnOK.Text = "OK"
'
'tlpMain
'
Me.tlpMain.ColumnCount = 4
Me.tlpMain.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle())
Me.tlpMain.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100.0!))
Me.tlpMain.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle())
Me.tlpMain.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle())
Me.tlpMain.Controls.Add(Me.bnArguments, 3, 6)
Me.tlpMain.Controls.Add(Me.bnBrowse, 3, 5)
Me.tlpMain.Controls.Add(Me.tbArguments, 1, 6)
Me.tlpMain.Controls.Add(Me.tbCommand, 1, 5)
Me.tlpMain.Controls.Add(Me.Label6, 0, 5)
Me.tlpMain.Controls.Add(Me.tbInput, 1, 1)
Me.tlpMain.Controls.Add(Me.bnOK, 2, 7)
Me.tlpMain.Controls.Add(Me.bnCancel, 3, 7)
Me.tlpMain.Controls.Add(Me.Label2, 0, 0)
Me.tlpMain.Controls.Add(Me.tbName, 1, 0)
Me.tlpMain.Controls.Add(Me.Label3, 0, 1)
Me.tlpMain.Controls.Add(Me.Label8, 0, 2)
Me.tlpMain.Controls.Add(Me.tbVideoOut, 1, 2)
Me.tlpMain.Controls.Add(Me.tbSourceFilters, 1, 4)
Me.tlpMain.Controls.Add(Me.Label9, 0, 4)
Me.tlpMain.Controls.Add(Me.tbInputFormats, 1, 3)
Me.tlpMain.Controls.Add(Me.Label1, 0, 3)
Me.tlpMain.Controls.Add(Me.Label7, 0, 6)
Me.tlpMain.Dock = System.Windows.Forms.DockStyle.Fill
Me.tlpMain.Location = New System.Drawing.Point(15, 15)
Me.tlpMain.Margin = New System.Windows.Forms.Padding(0)
Me.tlpMain.Name = "tlpMain"
Me.tlpMain.RowCount = 8
Me.tlpMain.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 14.28571!))
Me.tlpMain.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 14.28571!))
Me.tlpMain.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 14.28571!))
Me.tlpMain.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 14.28571!))
Me.tlpMain.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 14.28571!))
Me.tlpMain.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 14.28571!))
Me.tlpMain.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 14.28571!))
Me.tlpMain.RowStyles.Add(New System.Windows.Forms.RowStyle())
Me.tlpMain.Size = New System.Drawing.Size(1634, 667)
Me.tlpMain.TabIndex = 21
'
'bnArguments
'
Me.bnArguments.Anchor = System.Windows.Forms.AnchorStyles.None
Me.bnArguments.ContextMenuStrip = Me.cmsArguments
Me.bnArguments.Location = New System.Drawing.Point(1384, 504)
Me.bnArguments.Margin = New System.Windows.Forms.Padding(15, 0, 0, 0)
Me.bnArguments.ShowMenuSymbol = True
Me.bnArguments.Size = New System.Drawing.Size(250, 70)
Me.bnArguments.Text = "Menu"
'
'cmsArguments
'
Me.cmsArguments.ImageScalingSize = New System.Drawing.Size(24, 24)
Me.cmsArguments.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.MacrosToolStripMenuItem, Me.HelpToolStripMenuItem})
Me.cmsArguments.Name = "cmsArguments"
Me.cmsArguments.Size = New System.Drawing.Size(217, 108)
'
'MacrosToolStripMenuItem
'
Me.MacrosToolStripMenuItem.Name = "MacrosToolStripMenuItem"
Me.MacrosToolStripMenuItem.Size = New System.Drawing.Size(216, 52)
Me.MacrosToolStripMenuItem.Text = "Macros"
'
'HelpToolStripMenuItem
'
Me.HelpToolStripMenuItem.Name = "HelpToolStripMenuItem"
Me.HelpToolStripMenuItem.Size = New System.Drawing.Size(216, 52)
Me.HelpToolStripMenuItem.Text = "Help"
'
'bnBrowse
'
Me.bnBrowse.Anchor = System.Windows.Forms.AnchorStyles.None
Me.bnBrowse.Location = New System.Drawing.Point(1384, 421)
Me.bnBrowse.Margin = New System.Windows.Forms.Padding(15, 0, 0, 0)
Me.bnBrowse.Size = New System.Drawing.Size(250, 70)
Me.bnBrowse.Text = "Browse..."
'
'Label6
'
Me.Label6.Anchor = System.Windows.Forms.AnchorStyles.Left
Me.Label6.AutoSize = True
Me.Label6.Location = New System.Drawing.Point(3, 432)
Me.Label6.Name = "Label6"
Me.Label6.Size = New System.Drawing.Size(192, 48)
Me.Label6.TabIndex = 12
Me.Label6.Text = "Command:"
'
'Label2
'
Me.Label2.Anchor = System.Windows.Forms.AnchorStyles.Left
Me.Label2.AutoSize = True
Me.Label2.Location = New System.Drawing.Point(3, 17)
Me.Label2.Name = "Label2"
Me.Label2.Size = New System.Drawing.Size(277, 48)
Me.Label2.TabIndex = 24
Me.Label2.Text = "Demuxer Name:"
Me.TipProvider.SetTipText(Me.Label2, "If the demuxer name matches the name of a bundled app then help and description i" &
"s provided.")
'
'Label3
'
Me.Label3.Anchor = System.Windows.Forms.AnchorStyles.Left
Me.Label3.AutoSize = True
Me.Label3.Location = New System.Drawing.Point(3, 100)
Me.Label3.Name = "Label3"
Me.Label3.Size = New System.Drawing.Size(275, 48)
Me.Label3.TabIndex = 25
Me.Label3.Text = "Input File Types:"
Me.TipProvider.SetTipText(Me.Label3, "Input file types to be handled by the demuxer.")
'
'Label8
'
Me.Label8.Anchor = System.Windows.Forms.AnchorStyles.Left
Me.Label8.AutoSize = True
Me.Label8.Location = New System.Drawing.Point(3, 183)
Me.Label8.Name = "Label8"
Me.Label8.Size = New System.Drawing.Size(289, 48)
Me.Label8.TabIndex = 30
Me.Label8.Text = "Output File Type:"
Me.TipProvider.SetTipText(Me.Label8, "Single video file type the demuxer outputs.")
'
'Label9
'
Me.Label9.Anchor = System.Windows.Forms.AnchorStyles.Left
Me.Label9.AutoSize = True
Me.Label9.Location = New System.Drawing.Point(3, 349)
Me.Label9.Name = "Label9"
Me.Label9.Size = New System.Drawing.Size(242, 48)
Me.Label9.TabIndex = 31
Me.Label9.Text = "Source Filters:"
'
'Label1
'
Me.Label1.Anchor = System.Windows.Forms.AnchorStyles.Left
Me.Label1.AutoSize = True
Me.Label1.Location = New System.Drawing.Point(3, 266)
Me.Label1.Name = "Label1"
Me.Label1.Size = New System.Drawing.Size(249, 48)
Me.Label1.TabIndex = 26
Me.Label1.Text = "Input Formats:"
Me.TipProvider.SetTipText(Me.Label1, "Formats the demuxer handles (vc1 mpeg2 avc hevc)")
'
'Label7
'
Me.Label7.Anchor = System.Windows.Forms.AnchorStyles.Left
Me.Label7.AutoSize = True
Me.Label7.Location = New System.Drawing.Point(3, 515)
Me.Label7.Name = "Label7"
Me.Label7.Size = New System.Drawing.Size(202, 48)
Me.Label7.TabIndex = 29
Me.Label7.Text = "Arguments:"
'
'CommandLineDemuxForm
'
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(1664, 697)
Me.Controls.Add(Me.tlpMain)
Me.KeyPreview = True
Me.Margin = New System.Windows.Forms.Padding(11, 10, 11, 10)
Me.Name = "CommandLineDemuxForm"
Me.Padding = New System.Windows.Forms.Padding(15)
Me.Text = "Demux Configuration"
Me.tlpMain.ResumeLayout(False)
Me.tlpMain.PerformLayout()
Me.cmsArguments.ResumeLayout(False)
Me.ResumeLayout(False)
End Sub
#End Region
Private Target As CommandLineDemuxer
Private Temp As CommandLineDemuxer
Sub New(demuxer As CommandLineDemuxer)
MyBase.New()
InitializeComponent()
Target = demuxer
Temp = ObjectHelp.GetCopy(Of CommandLineDemuxer)(demuxer)
tbName.Text = Temp.Name
tbInput.Text = Temp.InputExtensions.ToArray.Join(" ")
tbInputFormats.Text = Temp.InputFormats.ToArray.Join(" ")
tbSourceFilters.Text = Temp.SourceFilters.ToArray.Join(" ")
tbVideoOut.Text = Temp.OutputExtensions.ToArray.Join(" ")
tbArguments.Text = Temp.Arguments
tbCommand.Text = Temp.Command
ActiveControl = bnOK
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
Function ConvertFormat(input As String) As String
If input.Contains("MPEG Video") Then
input = input.Replace("MPEG Video", "mpeg2")
End If
If input.Contains("VC-1") Then
input = input.Replace("VC-1", "vc1")
End If
Return input.ToLowerInvariant
End Function
Protected Overrides Sub OnFormClosed(e As FormClosedEventArgs)
If DialogResult = DialogResult.OK Then
Target.Name = tbName.Text
Target.InputExtensions = tbInput.Text.ToLowerInvariant.SplitNoEmptyAndWhiteSpace(",", ";", " ")
Target.InputFormats = ConvertFormat(tbInputFormats.Text).SplitNoEmptyAndWhiteSpace(",", ";", " ")
Target.OutputExtensions = tbVideoOut.Text.ToLowerInvariant.SplitNoEmptyAndWhiteSpace(",", ";", " ")
Target.SourceFilters = tbSourceFilters.Text.SplitNoEmptyAndWhiteSpace(",", ";", " ")
Target.Command = tbCommand.Text
Target.Arguments = tbArguments.Text
End If
MyBase.OnFormClosed(e)
End Sub
Sub tbCommand_DoubleClick(sender As Object, e As EventArgs) Handles tbCommand.DoubleClick
Using dialog As New OpenFileDialog
If dialog.ShowDialog() = DialogResult.OK Then
tbCommand.Text = dialog.FileName
End If
End Using
End Sub
Sub tbArguments_DoubleClick(sender As Object, e As EventArgs) Handles tbArguments.DoubleClick
MacrosForm.ShowDialogForm()
End Sub
Sub bnBrowse_Click(sender As Object, e As EventArgs) Handles bnBrowse.Click
tbCommand_DoubleClick(Nothing, Nothing)
End Sub
Sub MacrosToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles MacrosToolStripMenuItem.Click
MacrosForm.ShowDialogForm()
End Sub
Sub HelpToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles HelpToolStripMenuItem.Click
For Each pack In Package.Items.Values
If tbName.Text = pack.Name Then
pack.ShowHelp()
Exit Sub
End If
Next
MsgWarn("The demuxer name '" + tbName.Text + "' does not match with the name of one of StaxRip's apps. StaxRip includes the following apps:" + BR2 +
Package.Items.Values.Where(Function(package) Not TypeOf package Is PluginPackage).Select(Function(package) package.Name).ToArray.Sort.Join(", "))
End Sub
Sub DemuxForm_HelpRequested(sender As Object, hlpevent As HelpEventArgs) Handles Me.HelpRequested
Dim form As New HelpForm()
form.Doc.WriteStart(Text)
form.Doc.WriteTips(TipProvider.GetTips)
form.Show()
End Sub
End Class