I'm doing a simple srt editor for checking lines and time, already has the reader and save functionalities done. Any insides would be usufull
Main.vb
Code:
Imports System.IO
Public Class Main
Private Sub Main_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim TheFileName As String = ""
Try
If My.Application.CommandLineArgs.Count > 0 Then
TheFileName = My.Application.CommandLineArgs(0)
End If
Catch ex As Exception
IO.File.AppendAllText("C:\Log.txt", String.Format("{0}{1}", Environment.NewLine, ex.ToString()))
End Try
If TheFileName.Length > 0 Then
Dim ext As String = Path.GetExtension(TheFileName)
Brow1_inp.Text = TheFileName
If ext = ".srt" Then
Dim srtinfo As Array = reader(Brow1_inp.Text, P1_DG, 1) 'le entregamos la ruta del archivo y el panel donde dejar los datos'
P1_Ldia.Text = srtinfo(0) & " lineas de dialogo"
P1_Lcod.Text = srtinfo(1) & " lineas de codigo"
Else
MsgBox("El archivo no corresponde a un SubRip", MsgBoxStyle.Information, "Error")
End If
Else
P1_Leer.Enabled = False
End If
'Combo Boxes population'
Dim comboSource As New Dictionary(Of String, String)()
comboSource.Add("0", "")
comboSource.Add("1", "Todo")
comboSource.Add("2", "Lineas")
comboSource.Add("3", "Tiempo")
comboSource.Add("4", "Dialogo")
P1_CCom.DataSource = New BindingSource(comboSource, Nothing)
P1_CCom.DisplayMember = "Value"
P1_CCom.ValueMember = "Key"
P2_CCom.DataSource = New BindingSource(comboSource, Nothing)
P2_CCom.DisplayMember = "Value"
P2_CCom.ValueMember = "Key"
'habilitacion de botones'
P1_CLab.Visible = False
P1_CCom.Visible = False
P1_Revnum.Enabled = False
P1_Revtie.Enabled = False
P1_Clear.Enabled = False
P1_Save.Enabled = False
P2_CLab.Visible = False
P2_CCom.Visible = False
P2_Leer.Enabled = False
P2_Revnum.Enabled = False
P2_revtie.Enabled = False
P2_Clear.Enabled = False
P2_Save.Enabled = False
End Sub
Private Sub Brow1_but_Click_1(sender As System.Object, e As System.EventArgs) Handles Brow1_but.Click
Dim FolderBrowserDialog As New OpenFileDialog
With FolderBrowserDialog
.DefaultExt = "srt"
.Filter = "Subtitulo srt (*.srt)|*.srt"
If .ShowDialog = DialogResult.OK Then
Brow1_inp.Text = .FileName
P1_Leer.Enabled = True
Else
P1_Leer.Enabled = False
End If
End With
End Sub
Private Sub Brow2_but_Click_2(sender As System.Object, e As System.EventArgs) Handles Brow2_but.Click
Dim FolderBrowserDialog As New OpenFileDialog
With FolderBrowserDialog
.DefaultExt = "srt"
.Filter = "Subtitulo srt (*.srt)|*.srt"
If .ShowDialog = DialogResult.OK Then
Brow2_inp.Text = .FileName
P2_Leer.Enabled = True
Else
P2_Leer.Enabled = False
End If
End With
End Sub
Private Sub Sig_Click(sender As System.Object, e As System.EventArgs) Handles Sig.Click
Dim i = Me.Size.Width
If i < 1000 Then
Me.Size = New Size(1400, 650)
P2.Visible = True
Sig.Text = "<-"
P1_CLab.Visible = True
P1_CCom.Visible = True
Else
Me.Size = New Size(700, 650)
P2.Visible = False
Sig.Text = "->"
P1_CLab.Visible = False
P1_CCom.Visible = False
End If
End Sub
Private Sub P1_CCom_Change(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles P1_CCom.SelectionChangeCommitted
Dim key As String = DirectCast(P1_CCom.SelectedItem, KeyValuePair(Of String, String)).Key
Dim value As String = DirectCast(P1_CCom.SelectedItem, KeyValuePair(Of String, String)).Value
Dim sel As Integer
Dim num As Integer = P1_DG.Rows.Count
Dim i As Integer = 0
Dim filas As Integer
sel = CInt(key)
Select Case sel
Case 1
While i < num
filas = P2_DG.Rows.Count
If filas = i Then
P2_DG.Rows.Add()
End If
P2_DG.Rows(i).Cells(0).Value = P1_DG.Rows(i).Cells(0).Value
P2_DG.Rows(i).Cells(1).Value = P1_DG.Rows(i).Cells(1).Value
P2_DG.Rows(i).Cells(2).Value = P1_DG.Rows(i).Cells(2).Value
P2_DG.Rows(i).Cells(3).Value = P1_DG.Rows(i).Cells(3).Value
i = i + 1
End While
Case 2
While i < num
filas = P2_DG.Rows.Count
If filas = i Then
P2_DG.Rows.Add()
End If
P2_DG.Rows(i).Cells(0).Value = P1_DG.Rows(i).Cells(0).Value
i = i + 1
End While
Case 3
While i < num
filas = P2_DG.Rows.Count
If filas = i Then
P2_DG.Rows.Add()
End If
P2_DG.Rows(i).Cells(1).Value = P1_DG.Rows(i).Cells(1).Value
P2_DG.Rows(i).Cells(2).Value = P1_DG.Rows(i).Cells(2).Value
i = i + 1
End While
Case 4
While i < num
filas = P2_DG.Rows.Count
If filas = i Then
P2_DG.Rows.Add()
End If
P2_DG.Rows(i).Cells(3).Value = P1_DG.Rows(i).Cells(3).Value
i = i + 1
End While
End Select
P2_Revnum.Enabled = True
P2_revtie.Enabled = True
P2_Clear.Enabled = True
P2_Save.Enabled = True
P2_CLab.Visible = True
P2_CCom.Visible = True
End Sub
Private Sub P2_CCom_Change(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles P2_CCom.SelectionChangeCommitted
Dim key As String = DirectCast(P2_CCom.SelectedItem, KeyValuePair(Of String, String)).Key
Dim value As String = DirectCast(P2_CCom.SelectedItem, KeyValuePair(Of String, String)).Value
Dim sel As Integer
Dim num As Integer = P2_DG.Rows.Count
Dim i As Integer = 0
Dim filas As Integer
sel = CInt(key)
Select Case sel
Case 1
While i < num
filas = P1_DG.Rows.Count
If filas = i Then
P1_DG.Rows.Add()
End If
P1_DG.Rows(i).Cells(0).Value = P2_DG.Rows(i).Cells(0).Value
P1_DG.Rows(i).Cells(1).Value = P2_DG.Rows(i).Cells(1).Value
P1_DG.Rows(i).Cells(2).Value = P2_DG.Rows(i).Cells(2).Value
P1_DG.Rows(i).Cells(3).Value = P2_DG.Rows(i).Cells(3).Value
i = i + 1
End While
Case 2
While i < num
filas = P1_DG.Rows.Count
If filas = i Then
P1_DG.Rows.Add()
End If
P1_DG.Rows(i).Cells(0).Value = P2_DG.Rows(i).Cells(0).Value
i = i + 1
End While
Case 3
While i < num
filas = P1_DG.Rows.Count
If filas = i Then
P1_DG.Rows.Add()
End If
P1_DG.Rows(i).Cells(1).Value = P2_DG.Rows(i).Cells(1).Value
P1_DG.Rows(i).Cells(2).Value = P2_DG.Rows(i).Cells(2).Value
i = i + 1
End While
Case 4
While i < num
filas = P1_DG.Rows.Count
If filas = i Then
P1_DG.Rows.Add()
End If
P1_DG.Rows(i).Cells(3).Value = P2_DG.Rows(i).Cells(3).Value
i = i + 1
End While
End Select
P1_Revnum.Enabled = True
P1_Revtie.Enabled = True
P1_Clear.Enabled = True
P1_Save.Enabled = True
End Sub
Private Sub P1_Clear_Click(sender As System.Object, e As System.EventArgs) Handles P1_Clear.Click
P1_DG.Rows.Clear()
P1_Revnum.Enabled = False
P1_Revtie.Enabled = False
P1_Clear.Enabled = False
P1_Save.Enabled = False
End Sub
Private Sub P2_Clear_Click(sender As System.Object, e As System.EventArgs) Handles P2_Clear.Click
P2_DG.Rows.Clear()
P2_Revnum.Enabled = False
P2_revtie.Enabled = False
P2_Clear.Enabled = False
P2_Save.Enabled = False
End Sub
Private Sub P1_Leer_Click(sender As System.Object, e As System.EventArgs) Handles P1_Leer.Click
If File.Exists(Brow1_inp.Text) Then
Dim srtinfo As Array = reader(Brow1_inp.Text, P1_DG, 1) 'le entregamos la ruta del archivo y el panel donde dejar los datos'
P1_Ldia.Text = srtinfo(0) & " lineas de dialogo"
P1_Lcod.Text = srtinfo(1) & " lineas de codigo"
Else
MsgBox("Seleccionar un archivo", MsgBoxStyle.Information, "Error")
End If
End Sub
Private Sub P2_Leer_Click(sender As System.Object, e As System.EventArgs) Handles P2_Leer.Click
If File.Exists(Brow2_inp.Text) Then
Dim srtinfo As Array = reader(Brow2_inp.Text, P2_DG, 2) 'le entregamos la ruta del archivo y el panel donde dejar los datos'
P2_Ldia.Text = srtinfo(0) & " lineas de dialogo"
P2_Lcod.Text = srtinfo(1) & " lineas de codigo"
Else
MsgBox("Seleccionar un archivo", MsgBoxStyle.Information, "Error")
End If
End Sub
Private Sub P1_Revnum_Click(sender As System.Object, e As System.EventArgs) Handles P1_Revnum.Click
Rev_Numeros(P1_DG)
End Sub
Private Sub P2_Revnum_Click(sender As System.Object, e As System.EventArgs) Handles P2_Revnum.Click
Rev_Numeros(P2_DG)
End Sub
Private Sub P1_Save_Click(sender As System.Object, e As System.EventArgs) Handles P1_Save.Click
Guardar_srt(P1_DG, 1)
End Sub
Private Sub P2_Save_Click(sender As System.Object, e As System.EventArgs) Handles P2_Save.Click
Guardar_srt(P2_DG, 2)
End Sub
Private Sub P1_Revtie_Click(sender As System.Object, e As System.EventArgs) Handles P1_Revtie.Click
Rev_Tiempo(P1_DG)
End Sub
Private Sub P2_Revtie_Click(sender As System.Object, e As System.EventArgs) Handles P2_revtie.Click
Rev_Tiempo(P2_DG)
End Sub
Private Sub Guardar_srt(Datos As DataGridView, auxiliar As Integer)
Dim saveFileDialog1 As New SaveFileDialog()
saveFileDialog1.DefaultExt = "srt"
saveFileDialog1.Filter = "archivos srt (*.srt)|*.srt"
saveFileDialog1.Title = "Grabar subtitulo"
saveFileDialog1.ShowDialog()
If saveFileDialog1.FileName <> "" Then
Dim txtFilePathName = saveFileDialog1.FileName
Dim fsOut As New FileStream(saveFileDialog1.FileName, FileMode.Create)
Dim swFile As New StreamWriter(fsOut)
Dim j As Integer = Datos.Rows.Count
Dim i As Integer = 1
Dim text_var As String
While i < j
swFile.WriteLine(Datos.Rows(i - 1).Cells(0).Value)
swFile.WriteLine(Datos.Rows(i - 1).Cells(1).Value & " --> " & Datos.Rows(i - 1).Cells(2).Value)
text_var = Datos.Rows(i - 1).Cells(3).Value
Dim words As String() = text_var.Split(New String() {"<br>"}, StringSplitOptions.None)
Dim k = 0
Dim aux As Integer = words.Length
While k < aux
If (words(k) <> "<br>") Then
swFile.WriteLine(words(k))
End If
k = k + 1
End While
swFile.WriteLine("")
i = i + 1
End While
swFile.Close()
If auxiliar = 1 Then
Brow1_inp.Text = txtFilePathName
P1_Leer.Enabled = True
End If
If auxiliar = 2 Then
Brow2_inp.Text = txtFilePathName
P2_Leer.Enabled = True
End If
End If
End Sub
Private Sub Rev_Numeros(Datos As DataGridView)
Dim num As Integer = Datos.Rows.Count - 1
Dim valor As Integer
Dim i As Integer = 0
Dim j As Integer = 0
Dim Errores(num, 1) As Integer
Dim mensaje As String
While i < num
valor = Datos.Rows(i).Cells(0).Value
If valor <> i + 1 Then
Errores(i, 0) = i + 1
Errores(i, 1) = valor
j = j + 1
Else
Errores(i, 0) = 0
Errores(i, 1) = 0
End If
i = i + 1
End While
If j > 0 Then
i = 0
j = j - 1
Dim num_err(j, 1) As Integer
j = 0
While i < num
If Errores(i, 0) <> 0 Then
num_err(j, 0) = Errores(i, 0)
num_err(j, 1) = Errores(i, 1)
j = j + 1
End If
i = i + 1
End While
Errores = Nothing
mensaje = "Se encontraron " & num_err.Length / 2 & " errores en los numeros de linea " & vbCrLf & " ¿Desea Corregir?"
If MessageBox.Show(mensaje, "Revision de Lineas", MessageBoxButtons.YesNo) = Windows.Forms.DialogResult.Yes Then
i = 0
j = 1
While i < num
Datos.Rows(i).Cells(0).Value = j
i = i + 1
j = j + 1
End While
End If
Else
mensaje = "No se encontraron errores en los numeros de linea"
MsgBox(mensaje, MsgBoxStyle.Information, "Resultado")
End If
End Sub
Private Sub Rev_Tiempo(Datos As DataGridView)
Dim string_ini As String
Dim string_fin As String
Dim tiempo_ini As DateTime
Dim tiempo_fin As DateTime
Dim duration As TimeSpan
Dim num As Integer = Datos.Rows.Count - 1
Dim i As Integer = 0
Dim j As Integer = -1
While i < num
string_ini = Datos.Rows(i).Cells(1).Value
string_fin = Datos.Rows(i).Cells(2).Value
string_ini = string_ini.Replace(",", ".")
string_fin = string_fin.Replace(",", ".")
tiempo_ini = DateTime.Parse(string_ini)
tiempo_fin = DateTime.Parse(string_fin)
duration = tiempo_fin - tiempo_ini
If (duration.TotalMilliseconds < 200) Then
j = i
i = num
End If
i = i + 1
End While
If j >= 0 Then
Datos.Rows(j).Selected = True
Else
MsgBox("Sin errores de tiempo", MsgBoxStyle.Information, "Resultado")
End If
End Sub
Private Function reader(input_path As String, grid_box As DataGridView, auxiliar As Integer) 'Se le pide: donde esta el archivo y en donde colocar lo que se realiza'
Dim splitLine() As String 'Auxiliar lector'
Dim aux As Integer 'Auxiliar'
Dim progress As Integer 'porcentaje'
Dim t_inicio As String 'Tiempo Inicial'
Dim t_final As String 'Tiempo Final'
Dim words As String = "" 'Dialogo'
Dim i As Integer 'contador de lineas de dialogo'
Dim j As Integer 'contador de lineas de archivo'
Dim k As Integer 'contador de lineas de archivo por linea de dialogo'
Dim real_line As Boolean
Dim linenum As Boolean
Dim tmpLines() As String = File.ReadAllLines(input_path)
i = 0
j = 0
If tmpLines.Length > 0 Then
If auxiliar = 1 Then
P1_Revnum.Enabled = True
P1_Revtie.Enabled = True
P1_Clear.Enabled = True
P1_Save.Enabled = True
P1_PBar.Minimum = 0
P1_PBar.Maximum = tmpLines.Count - 1
End If
If auxiliar = 2 Then
P2_Revnum.Enabled = True
P2_revtie.Enabled = True
P2_Clear.Enabled = True
P2_Save.Enabled = True
P2_PBar.Minimum = 0
P2_PBar.Maximum = tmpLines.Count - 1
End If
Using objReader As New StreamReader(input_path)
k = 1
Do While objReader.Peek() <> -1
If auxiliar = 1 Then
P1_PBar.Value = j
progress = Math.Truncate((j / P1_PBar.Maximum) * 100)
P1_PP.Text = progress & "%"
P1_PP.Refresh()
End If
If auxiliar = 2 Then
P2_PBar.Value = j
progress = Math.Truncate((j / P2_PBar.Maximum) * 100)
P2_PP.Text = progress & "%"
P2_PP.Refresh()
End If
linenum = False 'auxiliar'
real_line = False 'auxiliar de linea en blanco'
Dim line As String = objReader.ReadLine()
'linea en blanco'
Try
If line.Length > 0 Then
real_line = True
End If
Catch ex As Exception
End Try
If (real_line) Then
'linea de dialogo'
Try
'caga cuando el subtitulo tiene solo numeros escritos en numero'
aux = CInt(line)
If (aux > 0) Then
i = i + 1
k = 1
linenum = True
grid_box.Rows.Add()
End If
Catch ex As Exception
End Try
If linenum Then
grid_box.Rows(i - 1).Cells(0).Value = aux
End If
If line.Contains(" --> ") Then
splitLine = line.Split(" --> ")
t_inicio = splitLine(0)
t_final = splitLine(2)
grid_box.Rows(i - 1).Cells(1).Value = t_inicio
grid_box.Rows(i - 1).Cells(2).Value = t_final
Else
If (Not linenum) Then
If (k = 1) Then
words = line
k = k + 1
Else
words = words & "<br>" & line
End If
grid_box.Rows(i - 1).Cells(3).Value = words
Else
words = ""
End If
End If
End If
j = j + 1
Loop
If auxiliar = 1 Then
P1_PP.Text = "Ok!"
End If
If auxiliar = 2 Then
P2_PP.Text = "Ok!"
End If
End Using
Else
MsgBox("El archivo esta vacio", MsgBoxStyle.Information, "Error")
End If
Return {i, j}
End Function
Private Sub Play_Click(sender As System.Object, e As System.EventArgs) Handles Play.Click
Player.Show()
End Sub
End Class
Player.vb
Code:
Imports System.IO
Public Class Player
Private Sub wmp_Enter(sender As System.Object, e As System.EventArgs) Handles wmp.Enter
Dim File_Path As String
Dim FolderBrowserDialog As New OpenFileDialog
With FolderBrowserDialog
.Filter = "Videos (*.avi)|*.avi|Videos (*.mkv)|*.mkv|Videos (*.mp4)|*.mp4|Videos (*.wmv)|*.wmv|Todos (*.*)|*.*"
.FilterIndex = 1
If .ShowDialog = DialogResult.OK Then
File_Path = .FileName
wmp.URL = .FileName
GroupBox1.Text = .Title
End If
End With
End Sub
End Class
No, Not really something specific like you ask. Just thoughts, an opinion about functions that are outdated or maybe can be done better doing something else. I thought thats what a forum is for, more than just an ask and response thing