From b055b7bde66976b19f8e3869a4824d02f89ab976 Mon Sep 17 00:00:00 2001 From: psyk2642 <60137590+psyk2642@users.noreply.github.com> Date: Sat, 31 Oct 2020 20:58:38 +0800 Subject: [PATCH 001/257] Add files via upload Fixed "Find / Delete / Replace". --- iBMSC/MainWindow.vb | 388 ++++++++++---------------------------------- 1 file changed, 82 insertions(+), 306 deletions(-) diff --git a/iBMSC/MainWindow.vb b/iBMSC/MainWindow.vb index c123224d9..fcc640d81 100644 --- a/iBMSC/MainWindow.vb +++ b/iBMSC/MainWindow.vb @@ -87,7 +87,6 @@ Public Class MainWindow Dim DDFileName() As String = {} Dim SupportedFileExtension() As String = {".bms", ".bme", ".bml", ".pms", ".txt", ".sm", ".ibmsc"} Dim SupportedAudioExtension() As String = {".wav", ".mp3", ".ogg"} - Dim SupportedImageExtension() As String = {".bmp", ".png", ".jpg", ".jpeg", ".gif", ".mpg", ".mpeg", ".avi", ".m1v", ".m2v", ".m4v", ".mp4", ".webm", ".wmv"} 'Variables for theme 'Dim SaveTheme As Boolean = True @@ -158,7 +157,6 @@ Public Class MainWindow '----Header Options Dim hWAV(1295) As String - Dim hBMP(1295) As String Dim hBPM(1295) As Long 'x10000 Dim hSTOP(1295) As Long Dim hSCROLL(1295) As Long @@ -1053,7 +1051,6 @@ Public Class MainWindow File.Delete(xTempFileName) POWAVResizer.Cursor = xDownCursor - POBMPResizer.Cursor = xDownCursor POBeatResizer.Cursor = xDownCursor POExpansionResizer.Cursor = xDownCursor @@ -1076,13 +1073,10 @@ Public Class MainWindow sI = 0 LWAV.Items.Clear() - LBMP.Items.Clear() For xI1 = 1 To 1295 LWAV.Items.Add(C10to36(xI1) & ":") - LBMP.Items.Add(C10to36(xI1) & ":") Next LWAV.SelectedIndex = 0 - LBMP.SelectedIndex = 0 CHPlayer.SelectedIndex = 0 CalculateGreatestVPosition() @@ -1337,7 +1331,6 @@ EndSearch: ReDim Notes(0) ReDim mColumn(999) ReDim hWAV(1295) - ReDim hBMP(1295) ReDim hBPM(1295) 'x10000 ReDim hSTOP(1295) ReDim hSCROLL(1295) @@ -1356,14 +1349,11 @@ EndSearch: THBPM.Value = 120 LWAV.Items.Clear() - LBMP.Items.Clear() Dim xI1 As Integer For xI1 = 1 To 1295 LWAV.Items.Add(C10to36(xI1) & ": " & hWAV(xI1)) - LBMP.Items.Add(C10to36(xI1) & ": " & hBMP(xI1)) Next LWAV.SelectedIndex = 0 - LBMP.SelectedIndex = 0 SetFileName("Untitled.bms") SetIsSaved(True) @@ -1386,7 +1376,6 @@ EndSearch: ReDim Notes(0) ReDim mColumn(999) ReDim hWAV(1295) - ReDim hBMP(1295) ReDim hBPM(1295) 'x10000 ReDim hSTOP(1295) ReDim hSCROLL(1295) @@ -1892,39 +1881,6 @@ EndSearch: End Select End Sub - Private Sub LBMP_DoubleClick(ByVal sender As Object, ByVal e As System.EventArgs) Handles LBMP.DoubleClick - Dim xDBMP As New OpenFileDialog - xDBMP.DefaultExt = "bmp" - xDBMP.Filter = Strings.FileType._image & "|*.bmp;*.png;*.jpg;*.jpeg;.gif|" & - Strings.FileType._movie & "|*.mpg;*.m1v;*.m2v;*.avi;*.mp4;*.m4v;*.wmv;*.webm|" & - Strings.FileType.BMP & "|*.bmp|" & - Strings.FileType.PNG & "|*.png|" & - Strings.FileType.JPG & "|*.jpg;*.jpeg|" & - Strings.FileType.GIF & "|*.gif|" & - Strings.FileType.MP4 & "|*.mp4;*.m4v|" & - Strings.FileType.AVI & "|*.avi|" & - Strings.FileType.MPG & "|*.mpg;*.m1v;*.m2v|" & - Strings.FileType.WMV & "|*.wmv|" & - Strings.FileType.WEBM & "|*.webm|" & - Strings.FileType._all & "|*.*" - xDBMP.InitialDirectory = IIf(ExcludeFileName(FileName) = "", InitPath, ExcludeFileName(FileName)) - - If xDBMP.ShowDialog = Windows.Forms.DialogResult.Cancel Then Exit Sub - InitPath = ExcludeFileName(xDBMP.FileName) - hBMP(LBMP.SelectedIndex + 1) = GetFileName(xDBMP.FileName) - LBMP.Items.Item(LBMP.SelectedIndex) = C10to36(LBMP.SelectedIndex + 1) & ": " & GetFileName(xDBMP.FileName) - If IsSaved Then SetIsSaved(False) - End Sub - - Private Sub LBMP_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles LBMP.KeyDown - Select Case e.KeyCode - Case Keys.Delete - hBMP(LBMP.SelectedIndex + 1) = "" - LBMP.Items.Item(LBMP.SelectedIndex) = C10to36(LBMP.SelectedIndex + 1) & ": " - If IsSaved Then SetIsSaved(False) - End Select - End Sub - Private Sub TBErrorCheck_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBErrorCheck.Click, mnErrorCheck.Click ErrorCheck = sender.Checked TBErrorCheck.Checked = ErrorCheck @@ -2127,9 +2083,9 @@ EndSearch: With Notes(i) Dim row As Integer = -1 Select Case .ColumnIndex - Case niBPM : row = 0 - Case niSTOP : row = 1 - Case niSCROLL : row = 2 + Case niSCROLL : row = 0 + Case niBPM : row = 1 + Case niSTOP : row = 2 Case niA1, niA2, niA3, niA4, niA5, niA6, niA7, niA8 : row = 3 Case niD1, niD2, niD3, niD4, niD5, niD6, niD7, niD8 : row = 4 Case Is >= niB : row = 5 @@ -2332,30 +2288,90 @@ StartCount: If Not NTInput Then Private Sub POBMirror_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles POBMirror.Click Dim xI1 As Integer + Dim xI2 As Integer Dim xUndo As UndoRedo.LinkedURCmd = Nothing Dim xRedo As UndoRedo.LinkedURCmd = New UndoRedo.Void Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo 'xRedo &= sCmdKM(niA1, .VPosition, .Value, IIf(NTInput, .Length, .LongNote), .Hidden, RealColumnToEnabled(niA7) - RealColumnToEnabled(niA1), 0, True) & vbCrLf 'xUndo &= sCmdKM(niA7, .VPosition, .Value, IIf(NTInput, .Length, .LongNote), .Hidden, RealColumnToEnabled(niA1) - RealColumnToEnabled(niA7), 0, True) & vbCrLf - Dim xCol As Integer = 0 + Dim xniArray0 = New Integer() {niA1, niA2, niA3, niA4, niA5, niA6, niA7, niA8, niD1, niD2, niD3, niD4, niD5, niD6, niD7, niD8} + ' Dim xniArray1 = Integer() ' xniArray0 + + ' New function: Declare an array to see the range of selected notes. B columns ignored. + + Dim xRangeL As Integer = niB ' Big number + Dim xRangeR As Integer = 0 ' Smol number + + ' Range finder + For xI1 = 1 To UBound(Notes) + If Not Notes(xI1).Selected Then Continue For + If xRangeL > Notes(xI1).ColumnIndex Then xRangeL = Notes(xI1).ColumnIndex + If xRangeR < Notes(xI1).ColumnIndex Then xRangeR = Notes(xI1).ColumnIndex + Next + + ' Modify xniArray based on range + ' Out of range + If xRangeL > niD8 Or xRangeR < niA1 Then GoTo DoNothing + + ' Semi-in Range + ' Cut off left side + If xRangeL < niA1 Then + xRangeL = 0 + GoTo MirrorSkip1 + End If + + For xI1 = 0 To xniArray0.Length + If xniArray0(xI1) = xRangeL Then + xRangeL = xI1 + Exit For + End If + Next + +MirrorSkip1: + ' Cut off right side + If xRangeR > niD8 Then + xRangeR = xniArray0.Length + GoTo MirrorSkip2 + End If + + For xI1 = 0 To xniArray0.Length + If xniArray0(xI1) = xRangeR Then + xRangeR = xI1 + 1 + Exit For + End If + Next + +MirrorSkip2: + + Dim xniArray1(xRangeR - xRangeL - 1) + For xI1 = 0 To xRangeR - xRangeL - 1 + xniArray1(xI1) = xniArray0(xI1 + xRangeL) + Next + + Dim xniArrayR = xniArray1.Reverse() + Dim xniArrayLen = xniArray1.Length + + Dim xCol As Integer For xI1 = 1 To UBound(Notes) If Not Notes(xI1).Selected Then Continue For - Select Case Notes(xI1).ColumnIndex - Case niA1 : xCol = niA7 - Case niA2 : xCol = niA6 - Case niA3 : xCol = niA5 - Case niA4 : xCol = niA4 - Case niA5 : xCol = niA3 - Case niA6 : xCol = niA2 - Case niA7 : xCol = niA1 - Case Else : Continue For - End Select + xCol = Notes(xI1).ColumnIndex + ' MsgBox("Test" & "xCol: " & xCol & " xI1: " & xI1) + For xI2 = 0 To xniArrayLen - 1 + ' MsgBox("Test 2 xI2: " & xI2) + If xCol = xniArray1(xI2) Then + xCol = xniArrayR(xI2) + Exit For + End If + + Next Me.RedoMoveNote(Notes(xI1), xCol, Notes(xI1).VPosition, xUndo, xRedo) Notes(xI1).ColumnIndex = xCol - Next + Next + +DoNothing: AddUndo(xUndo, xBaseRedo.Next) UpdatePairing() @@ -2556,6 +2572,7 @@ StartCount: If Not NTInput Then RefreshPanelAll() End Sub + Private Sub AddToPOWAV(ByVal xPath() As String) Dim xIndices(LWAV.SelectedIndices.Count - 1) As Integer LWAV.SelectedIndices.CopyTo(xIndices, 0) @@ -2635,86 +2652,6 @@ StartCount: If Not NTInput Then Private Sub POWAV_Resize(ByVal sender As Object, ByVal e As System.EventArgs) Handles POWAV.Resize LWAV.Height = sender.Height - 25 End Sub - - Private Sub AddToPOBMP(ByVal xPath() As String) - Dim xIndices(LBMP.SelectedIndices.Count - 1) As Integer - LBMP.SelectedIndices.CopyTo(xIndices, 0) - If xIndices.Length = 0 Then Exit Sub - - If xIndices.Length < xPath.Length Then - Dim i As Integer = xIndices.Length - Dim currBmpIndex As Integer = xIndices(UBound(xIndices)) + 1 - ReDim Preserve xIndices(UBound(xPath)) - - Do While i < xIndices.Length And currBmpIndex <= 1294 - Do While currBmpIndex <= 1294 AndAlso hBMP(currBmpIndex + 1) <> "" - currBmpIndex += 1 - Loop - If currBmpIndex > 1294 Then Exit Do - - xIndices(i) = currBmpIndex - currBmpIndex += 1 - i += 1 - Loop - - If currBmpIndex > 1294 Then - ReDim Preserve xPath(i - 1) - ReDim Preserve xIndices(i - 1) - End If - End If - - 'Dim xI2 As Integer = 0 - For xI1 As Integer = 0 To UBound(xPath) - 'If xI2 > UBound(xIndices) Then Exit For - 'hBMP(xIndices(xI2) + 1) = GetFileName(xPath(xI1)) - 'LBMP.Items.Item(xIndices(xI2)) = C10to36(xIndices(xI2) + 1) & ": " & GetFileName(xPath(xI1)) - hBMP(xIndices(xI1) + 1) = GetFileName(xPath(xI1)) - LBMP.Items.Item(xIndices(xI1)) = C10to36(xIndices(xI1) + 1) & ": " & GetFileName(xPath(xI1)) - 'xI2 += 1 - Next - - LBMP.SelectedIndices.Clear() - For xI1 As Integer = 0 To IIf(UBound(xIndices) < UBound(xPath), UBound(xIndices), UBound(xPath)) - LBMP.SelectedIndices.Add(xIndices(xI1)) - Next - - If IsSaved Then SetIsSaved(False) - RefreshPanelAll() - End Sub - - Private Sub POBMP_DragDrop(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles POBMP.DragDrop - ReDim DDFileName(-1) - If Not e.Data.GetDataPresent(DataFormats.FileDrop) Then Return - - Dim xOrigPath() As String = CType(e.Data.GetData(DataFormats.FileDrop), String()) - Dim xPath() As String = FilterFileBySupported(xOrigPath, SupportedImageExtension) - Array.Sort(xPath) - If xPath.Length = 0 Then - RefreshPanelAll() - Exit Sub - End If - - AddToPOBMP(xPath) - End Sub - - Private Sub POBMP_DragEnter(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles POBMP.DragEnter - If e.Data.GetDataPresent(DataFormats.FileDrop) Then - e.Effect = DragDropEffects.Copy - DDFileName = FilterFileBySupported(CType(e.Data.GetData(DataFormats.FileDrop), String()), SupportedImageExtension) - Else - e.Effect = DragDropEffects.None - End If - RefreshPanelAll() - End Sub - - Private Sub POBMP_DragLeave(ByVal sender As Object, ByVal e As System.EventArgs) Handles POBMP.DragLeave - ReDim DDFileName(-1) - RefreshPanelAll() - End Sub - - Private Sub POBMP_Resize(ByVal sender As Object, ByVal e As System.EventArgs) Handles POBMP.Resize - LBMP.Height = sender.Height - 25 - End Sub Private Sub POBeat_Resize(ByVal sender As Object, ByVal e As System.EventArgs) Handles POBeat.Resize LBeat.Height = POBeat.Height - 25 End Sub @@ -3047,6 +2984,7 @@ StartCount: If Not NTInput Then AutoFocusMouseEnter = .cMEnterFocus.Checked FirstClickDisabled = .cMClickFocus.Checked ClickStopPreview = .cMStopPreview.Checked + ' KeyBindDP = .cMKeyBindDP.Checked End With If AutoSaveInterval Then AutoSaveTimer.Interval = AutoSaveInterval AutoSaveTimer.Enabled = AutoSaveInterval @@ -3256,7 +3194,8 @@ Jump2: IIf(IsColumnNumeric(xNote.ColumnIndex), xNote.Value >= fdriValL And xNote.Value <= fdriValU, xNote.Value >= fdriLblL And xNote.Value <= fdriLblU) AndAlso - Array.IndexOf(fdriCol, xNote.ColumnIndex) <> -1 + Array.IndexOf(fdriCol, xNote.ColumnIndex - 1) <> -1 + ' lol Fixed End Function Private Function fdrRangeS(ByVal xbLim1 As Boolean, ByVal xbLim2 As Boolean, ByVal xVal As Boolean) As Boolean @@ -3743,7 +3682,6 @@ Jump2: Private Sub CWAVMultiSelect_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CWAVMultiSelect.CheckedChanged WAVMultiSelect = CWAVMultiSelect.Checked LWAV.SelectionMode = IIf(WAVMultiSelect, SelectionMode.MultiExtended, SelectionMode.One) - LBMP.SelectionMode = IIf(WAVMultiSelect, SelectionMode.MultiExtended, SelectionMode.One) End Sub Private Sub CWAVChangeLabel_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CWAVChangeLabel.CheckedChanged @@ -3903,166 +3841,6 @@ Jump2: POStatusRefresh() End Sub - Private Sub BBMPUp_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BBMPUp.Click - If LBMP.SelectedIndex = -1 Then Return - - Dim xUndo As UndoRedo.LinkedURCmd = Nothing - Dim xRedo As UndoRedo.LinkedURCmd = New UndoRedo.Void - Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo - - Dim xIndices(LBMP.SelectedIndices.Count - 1) As Integer - LBMP.SelectedIndices.CopyTo(xIndices, 0) - - Dim xS As Integer - For xS = 0 To 1294 - If Array.IndexOf(xIndices, xS) = -1 Then Exit For - Next - - Dim xStr As String = "" - Dim xIndex As Integer = -1 - For xI1 As Integer = xS To 1294 - xIndex = Array.IndexOf(xIndices, xI1) - If xIndex <> -1 Then - xStr = hBMP(xI1 + 1) - hBMP(xI1 + 1) = hBMP(xI1) - hBMP(xI1) = xStr - - LBMP.Items.Item(xI1) = C10to36(xI1 + 1) & ": " & hBMP(xI1 + 1) - LBMP.Items.Item(xI1 - 1) = C10to36(xI1) & ": " & hBMP(xI1) - - If Not WAVChangeLabel Then GoTo 1100 - - Dim xL1 As String = C10to36(xI1) - Dim xL2 As String = C10to36(xI1 + 1) - For xI2 As Integer = 1 To UBound(Notes) - If IsColumnNumeric(Notes(xI2).ColumnIndex) Then Continue For - - If C10to36(Notes(xI2).Value \ 10000) = xL1 Then - Me.RedoRelabelNote(Notes(xI2), xI1 * 10000 + 10000, xUndo, xRedo) - Notes(xI2).Value = xI1 * 10000 + 10000 - - ElseIf C10to36(Notes(xI2).Value \ 10000) = xL2 Then - Me.RedoRelabelNote(Notes(xI2), xI1 * 10000, xUndo, xRedo) - Notes(xI2).Value = xI1 * 10000 - - End If - Next - -1100: xIndices(xIndex) += -1 - End If - Next - - LBMP.SelectedIndices.Clear() - For xI1 As Integer = 0 To UBound(xIndices) - LBMP.SelectedIndices.Add(xIndices(xI1)) - Next - - AddUndo(xUndo, xBaseRedo.Next) - RefreshPanelAll() - POStatusRefresh() - End Sub - - Private Sub BBMPDown_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BBMPDown.Click - If LBMP.SelectedIndex = -1 Then Return - - Dim xUndo As UndoRedo.LinkedURCmd = Nothing - Dim xRedo As UndoRedo.LinkedURCmd = New UndoRedo.Void - Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo - - Dim xIndices(LBMP.SelectedIndices.Count - 1) As Integer - LBMP.SelectedIndices.CopyTo(xIndices, 0) - - Dim xS As Integer - For xS = 1294 To 0 Step -1 - If Array.IndexOf(xIndices, xS) = -1 Then Exit For - Next - - Dim xStr As String = "" - Dim xIndex As Integer = -1 - For xI1 As Integer = xS To 0 Step -1 - xIndex = Array.IndexOf(xIndices, xI1) - If xIndex <> -1 Then - xStr = hBMP(xI1 + 1) - hBMP(xI1 + 1) = hBMP(xI1 + 2) - hBMP(xI1 + 2) = xStr - - LBMP.Items.Item(xI1) = C10to36(xI1 + 1) & ": " & hBMP(xI1 + 1) - LBMP.Items.Item(xI1 + 1) = C10to36(xI1 + 2) & ": " & hBMP(xI1 + 2) - - If Not WAVChangeLabel Then GoTo 1100 - - Dim xL1 As String = C10to36(xI1 + 2) - Dim xL2 As String = C10to36(xI1 + 1) - For xI2 As Integer = 1 To UBound(Notes) - If IsColumnNumeric(Notes(xI2).ColumnIndex) Then Continue For - - If C10to36(Notes(xI2).Value \ 10000) = xL1 Then - Me.RedoRelabelNote(Notes(xI2), xI1 * 10000 + 10000, xUndo, xRedo) - Notes(xI2).Value = xI1 * 10000 + 10000 - - ElseIf C10to36(Notes(xI2).Value \ 10000) = xL2 Then - Me.RedoRelabelNote(Notes(xI2), xI1 * 10000 + 20000, xUndo, xRedo) - Notes(xI2).Value = xI1 * 10000 + 20000 - - End If - Next - -1100: xIndices(xIndex) += 1 - End If - Next - - LBMP.SelectedIndices.Clear() - For xI1 As Integer = 0 To UBound(xIndices) - LBMP.SelectedIndices.Add(xIndices(xI1)) - Next - - AddUndo(xUndo, xBaseRedo.Next) - RefreshPanelAll() - POStatusRefresh() - End Sub - - Private Sub BBMPBrowse_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BBMPBrowse.Click - Dim xDBMP As New OpenFileDialog - xDBMP.DefaultExt = "bmp" - xDBMP.Filter = Strings.FileType._image & "|*.bmp;*.png;*.jpg;*.jpeg;.gif|" & - Strings.FileType._movie & "|*.mpg;*.m1v;*.m2v;*.avi;*.mp4;*.m4v;*.wmv;*.webm|" & - Strings.FileType.BMP & "|*.bmp|" & - Strings.FileType.PNG & "|*.png|" & - Strings.FileType.JPG & "|*.jpg;*.jpeg|" & - Strings.FileType.GIF & "|*.gif|" & - Strings.FileType.MP4 & "|*.mp4;*.m4v|" & - Strings.FileType.AVI & "|*.avi|" & - Strings.FileType.MPG & "|*.mpg;*.m1v;*.m2v|" & - Strings.FileType.WMV & "|*.wmv|" & - Strings.FileType.WEBM & "|*.webm|" & - Strings.FileType._all & "|*.*" - xDBMP.InitialDirectory = IIf(ExcludeFileName(FileName) = "", InitPath, ExcludeFileName(FileName)) - xDBMP.Multiselect = WAVMultiSelect - - If xDBMP.ShowDialog = Windows.Forms.DialogResult.Cancel Then Exit Sub - InitPath = ExcludeFileName(xDBMP.FileName) - - AddToPOBMP(xDBMP.FileNames) - End Sub - - Private Sub BBMPRemove_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BBMPRemove.Click - Dim xIndices(LBMP.SelectedIndices.Count - 1) As Integer - LBMP.SelectedIndices.CopyTo(xIndices, 0) - For xI1 As Integer = 0 To UBound(xIndices) - hBMP(xIndices(xI1) + 1) = "" - LBMP.Items.Item(xIndices(xI1)) = C10to36(xIndices(xI1) + 1) & ": " - Next - - LBMP.SelectedIndices.Clear() - For xI1 As Integer = 0 To UBound(xIndices) - LBMP.SelectedIndices.Add(xIndices(xI1)) - Next - - If IsSaved Then SetIsSaved(False) - RefreshPanelAll() - POStatusRefresh() - End Sub - Private Sub mnMain_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles mnMain.MouseDown ', TBMain.MouseDown ', pttl.MouseDown, pIsSaved.MouseDown If e.Button = Windows.Forms.MouseButtons.Left Then ReleaseCapture() @@ -4483,7 +4261,7 @@ case2: Dim xI0 As Integer Private Sub BHStageFile_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BHStageFile.Click, BHBanner.Click, BHBackBMP.Click Dim xDiag As New OpenFileDialog - xDiag.Filter = Strings.FileType._image & "|*.bmp;*.png;*.jpeg;*.jpg;*.gif|" & + xDiag.Filter = Strings.FileType._image & "|*.bmp;*.png;*.jpg;*.gif|" & Strings.FileType._all & "|*.*" xDiag.InitialDirectory = IIf(ExcludeFileName(FileName) = "", InitPath, ExcludeFileName(FileName)) xDiag.DefaultExt = "png" @@ -4505,7 +4283,6 @@ case2: Dim xI0 As Integer POGridSwitch.CheckedChanged, POWaveFormSwitch.CheckedChanged, POWAVSwitch.CheckedChanged, - POBMPSwitch.CheckedChanged, POBeatSwitch.CheckedChanged, POExpansionSwitch.CheckedChanged @@ -4518,7 +4295,6 @@ case2: Dim xI0 As Integer ElseIf Object.ReferenceEquals(sender, POGridSwitch) Then : Target = POGridInner ElseIf Object.ReferenceEquals(sender, POWaveFormSwitch) Then : Target = POWaveFormInner ElseIf Object.ReferenceEquals(sender, POWAVSwitch) Then : Target = POWAVInner - ElseIf Object.ReferenceEquals(sender, POBMPSwitch) Then : Target = POBMPInner ElseIf Object.ReferenceEquals(sender, POBeatSwitch) Then : Target = POBeatInner ElseIf Object.ReferenceEquals(sender, POExpansionSwitch) Then : Target = POExpansionInner End If @@ -4568,7 +4344,7 @@ case2: Dim xI0 As Integer End Sub - Private Sub VerticalResizer_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles POWAVResizer.MouseDown, POBMPResizer.MouseDown, POBeatResizer.MouseDown, POExpansionResizer.MouseDown + Private Sub VerticalResizer_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles POWAVResizer.MouseDown, POBeatResizer.MouseDown, POExpansionResizer.MouseDown tempResize = e.Y End Sub @@ -4576,7 +4352,7 @@ case2: Dim xI0 As Integer tempResize = e.X End Sub - Private Sub POResizer_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles POWAVResizer.MouseMove, POBMPResizer.MouseMove, POBeatResizer.MouseMove, POExpansionResizer.MouseMove + Private Sub POResizer_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles POWAVResizer.MouseMove, POBeatResizer.MouseMove, POExpansionResizer.MouseMove If e.Button <> Windows.Forms.MouseButtons.Left Then Exit Sub If e.Y = tempResize Then Exit Sub From f296c9bd3befdf74489eb3bd094cef3f9ebd2976 Mon Sep 17 00:00:00 2001 From: psyk2642 <60137590+psyk2642@users.noreply.github.com> Date: Sat, 31 Oct 2020 21:10:28 +0800 Subject: [PATCH 002/257] Update README.md 3 changes. --- README.md | 28 +++++++--------------------- 1 file changed, 7 insertions(+), 21 deletions(-) diff --git a/README.md b/README.md index 0d1d6ebd2..7b05fa584 100644 --- a/README.md +++ b/README.md @@ -3,28 +3,14 @@ µBMSC is a modified version of iBMSC to add features and clean up the iBMSC code, fix bugs and so on. See README.md.old for original iBMSC README file. -Changes +Changes in this fork ===== -* Out of the box OGG previews - * Seeks for WAV if OGG doesn't exist, and viceversa -* Bugfixes - * BMSE clipboard input fixed -* Additions - * Landmine support (Shift + Ctrl + Click) - * Several new encodings (EUC-KR, Shift-JIS) - * Go To Measure (Ctrl+G) - * Mouse Row/Column Highlight - * Ctrl+Scroll wheel changes zoom level - * Huge BPM support (10e12) - * UI improvements - * **Time select mode** Convert Area to Stop - * **Select Mode** Select notes with labels on screen, all notes with labels (Shift+Ctrl+Click, Shift+Ctrl+A) - * Non-locale dependant number output (No more commas instead of periods) - * **Write mode** Autowav Increase functionality - * **dtinth** Move and Deselect (Shift+Number) - * **NS-Kazuki** #SCROLL Support -* Development - * Codebase reorganized for developers +* Changed keybinding to allow note placement between D1 and D8. + * Numpad keys are now assigned to 2P lanes. + * QWERTYUI keys are also assigned to 2P lanes. + * 1 to 7 are now assigned to A1 to A7, and 8 is now assigned to A8. +* Fixed the search function such that notes on lane A8 and D8 are now searchable. +* Fixed the mirror function such that notes between A1 and D8 are reflected locally. Check appveyor for automated builds. From 60564d811e36de1a53b4d500d1ce514e84b6f176 Mon Sep 17 00:00:00 2001 From: psyk2642 <60137590+psyk2642@users.noreply.github.com> Date: Sat, 31 Oct 2020 21:59:37 +0800 Subject: [PATCH 003/257] Lane keybinding changes MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1234567 → A1-A7 8 → A8 Ctrl+12345678 → D1-D8 qwertyui → D1-D8 Numpad 12345678 → D1-D8 --- iBMSC/PanelEvents.vb | 74 +++++++++++++++++++++++++++++++++++++------- 1 file changed, 63 insertions(+), 11 deletions(-) diff --git a/iBMSC/PanelEvents.vb b/iBMSC/PanelEvents.vb index 9143af50b..da0ac821a 100644 --- a/iBMSC/PanelEvents.vb +++ b/iBMSC/PanelEvents.vb @@ -196,16 +196,68 @@ Partial Public Class MainWindow CGDisableVertical.Checked = Not CGDisableVertical.Checked Case Keys.NumPad0, Keys.D0 - MoveToBGM(xUndo, xRedo) - - Case Keys.Oem1, Keys.NumPad1, Keys.D1 : MoveToColumn(niA1, xUndo, xRedo) - Case Keys.Oem2, Keys.NumPad2, Keys.D2 : MoveToColumn(niA2, xUndo, xRedo) - Case Keys.Oem3, Keys.NumPad3, Keys.D3 : MoveToColumn(niA3, xUndo, xRedo) - Case Keys.Oem4, Keys.NumPad4, Keys.D4 : MoveToColumn(niA4, xUndo, xRedo) - Case Keys.Oem5, Keys.NumPad5, Keys.D5 : MoveToColumn(niA5, xUndo, xRedo) - Case Keys.Oem6, Keys.NumPad6, Keys.D6 : MoveToColumn(niA6, xUndo, xRedo) - Case Keys.Oem7, Keys.NumPad7, Keys.D7 : MoveToColumn(niA7, xUndo, xRedo) - Case Keys.Oem8, Keys.NumPad8, Keys.D8 : MoveToColumn(niA8, xUndo, xRedo) + MoveToBGM(xUndo, xRedo) + + ' Ctrl + Keys → 2P lanes + Case Keys.Oem8, Keys.D8 + If My.Computer.Keyboard.CtrlKeyDown Then + MoveToColumn(niD8, xUndo, xRedo) + Else + MoveToColumn(niA1, xUndo, xRedo) + End If + Case Keys.Oem1, Keys.D1 + If My.Computer.Keyboard.CtrlKeyDown Then + MoveToColumn(niD1, xUndo, xRedo) + Else + MoveToColumn(niA2, xUndo, xRedo) + End If + Case Keys.Oem2, Keys.D2 + If My.Computer.Keyboard.CtrlKeyDown Then + MoveToColumn(niD2, xUndo, xRedo) + Else + MoveToColumn(niA3, xUndo, xRedo) + End If + Case Keys.Oem3, Keys.D3 + If My.Computer.Keyboard.CtrlKeyDown Then + MoveToColumn(niD3, xUndo, xRedo) + Else + MoveToColumn(niA4, xUndo, xRedo) + End If + Case Keys.Oem4, Keys.D4 + If My.Computer.Keyboard.CtrlKeyDown Then + MoveToColumn(niD4, xUndo, xRedo) + Else + MoveToColumn(niA5, xUndo, xRedo) + End If + Case Keys.Oem5, Keys.D5 + If My.Computer.Keyboard.CtrlKeyDown Then + MoveToColumn(niD5, xUndo, xRedo) + Else + MoveToColumn(niA6, xUndo, xRedo) + End If + Case Keys.Oem6, Keys.D6 + If My.Computer.Keyboard.CtrlKeyDown Then + MoveToColumn(niD6, xUndo, xRedo) + Else + MoveToColumn(niA7, xUndo, xRedo) + End If + Case Keys.Oem7, Keys.D7 + If My.Computer.Keyboard.CtrlKeyDown Then + MoveToColumn(niD7, xUndo, xRedo) + Else + MoveToColumn(niA8, xUndo, xRedo) + End If + + Case Keys.Q, Keys.NumPad1 : MoveToColumn(niD1, xUndo, xRedo) + Case Keys.W, Keys.NumPad2 : MoveToColumn(niD2, xUndo, xRedo) + Case Keys.E, Keys.NumPad3 : MoveToColumn(niD3, xUndo, xRedo) + Case Keys.R, Keys.NumPad4 : MoveToColumn(niD4, xUndo, xRedo) + Case Keys.T, Keys.NumPad5 : MoveToColumn(niD5, xUndo, xRedo) + Case Keys.Y, Keys.NumPad6 : MoveToColumn(niD6, xUndo, xRedo) + Case Keys.U, Keys.NumPad7 : MoveToColumn(niD7, xUndo, xRedo) + Case Keys.I, Keys.NumPad8 : MoveToColumn(niD8, xUndo, xRedo) + + End Select @@ -499,7 +551,7 @@ Partial Public Class MainWindow 'Play wav If ClickStopPreview Then PreviewNote("", True) 'My.Computer.Audio.Stop() - If NoteIndex > 0 And PreviewOnClick AndAlso IsColumnSound(Notes(NoteIndex).ColumnIndex) Then + If NoteIndex > 0 And PreviewOnClick AndAlso Not IsColumnNumeric(Notes(NoteIndex).ColumnIndex) Then Dim xI2 As Integer = Notes(NoteIndex).Value \ 10000 If xI2 <= 0 Then xI2 = 1 If xI2 >= 1296 Then xI2 = 1295 From 95193c93e5bdc836c337455a34e3238ea4866ebf Mon Sep 17 00:00:00 2001 From: psyk2642 <60137590+psyk2642@users.noreply.github.com> Date: Sat, 31 Oct 2020 22:00:37 +0800 Subject: [PATCH 004/257] Update README.md --- README.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 7b05fa584..8d20cf5f9 100644 --- a/README.md +++ b/README.md @@ -6,9 +6,10 @@ See README.md.old for original iBMSC README file. Changes in this fork ===== * Changed keybinding to allow note placement between D1 and D8. - * Numpad keys are now assigned to 2P lanes. - * QWERTYUI keys are also assigned to 2P lanes. - * 1 to 7 are now assigned to A1 to A7, and 8 is now assigned to A8. + * Numpad keys are now assigned to 2P lanes. + * QWERTYUI keys are also assigned to 2P lanes. + * 1 to 7 are now assigned to A1 to A7, and 8 is now assigned to A8. + * Ctrl+1 to 7 are now assigned to D1-D8. * Fixed the search function such that notes on lane A8 and D8 are now searchable. * Fixed the mirror function such that notes between A1 and D8 are reflected locally. From dc31cba8b9cff340cc6cfffb0972f5acfe9347e9 Mon Sep 17 00:00:00 2001 From: psyk2642 <60137590+psyk2642@users.noreply.github.com> Date: Sun, 1 Nov 2020 11:56:51 +0800 Subject: [PATCH 005/257] Random and S-Random Added Random and S-Random under the "Conversions" menu. No new icons. --- iBMSC/MainWindow.designer.vb | 9161 +++++++++++++++++----------------- iBMSC/MainWindow.vb | 8999 +++++++++++++++++---------------- 2 files changed, 9139 insertions(+), 9021 deletions(-) diff --git a/iBMSC/MainWindow.designer.vb b/iBMSC/MainWindow.designer.vb index 14733a67f..559355dce 100644 --- a/iBMSC/MainWindow.designer.vb +++ b/iBMSC/MainWindow.designer.vb @@ -1,4642 +1,4519 @@ - _ -Partial Class MainWindow - Inherits System.Windows.Forms.Form - - 'Form 重写 Dispose,以清理组件列表。 - _ - Protected Overrides Sub Dispose(ByVal disposing As Boolean) - If disposing AndAlso components IsNot Nothing Then - components.Dispose() - End If - MyBase.Dispose(disposing) - End Sub - - 'Windows 窗体设计器所必需的 - Private components As System.ComponentModel.IContainer - - '注意: 以下过程是 Windows 窗体设计器所必需的 - '可以使用 Windows 窗体设计器修改它。 - '不要使用代码编辑器修改它。 - _ - Private Sub InitializeComponent() - Me.components = New System.ComponentModel.Container() - Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(MainWindow)) - Me.cmnLanguage = New System.Windows.Forms.ContextMenuStrip(Me.components) - Me.TBLangDef = New System.Windows.Forms.ToolStripMenuItem() - Me.TBLangRefresh = New System.Windows.Forms.ToolStripMenuItem() - Me.ToolStripSeparator9 = New System.Windows.Forms.ToolStripSeparator() - Me.TBLanguage = New System.Windows.Forms.ToolStripDropDownButton() - Me.mnLanguage = New System.Windows.Forms.ToolStripMenuItem() - Me.cmnTheme = New System.Windows.Forms.ContextMenuStrip(Me.components) - Me.TBThemeDef = New System.Windows.Forms.ToolStripMenuItem() - Me.TBThemeSave = New System.Windows.Forms.ToolStripMenuItem() - Me.TBThemeRefresh = New System.Windows.Forms.ToolStripMenuItem() - Me.TBThemeLoadComptability = New System.Windows.Forms.ToolStripMenuItem() - Me.ToolStripSeparator6 = New System.Windows.Forms.ToolStripSeparator() - Me.TBTheme = New System.Windows.Forms.ToolStripDropDownButton() - Me.mnTheme = New System.Windows.Forms.ToolStripMenuItem() - Me.POptionsScroll = New System.Windows.Forms.Panel() - Me.POptions = New System.Windows.Forms.Panel() - Me.POExpansion = New System.Windows.Forms.Panel() - Me.POExpansionInner = New System.Windows.Forms.Panel() - Me.TExpansion = New System.Windows.Forms.TextBox() - Me.POExpansionResizer = New System.Windows.Forms.Button() - Me.POExpansionSwitch = New System.Windows.Forms.CheckBox() - Me.POBeat = New System.Windows.Forms.Panel() - Me.POBeatInner = New System.Windows.Forms.TableLayoutPanel() - Me.POBeatExpander = New System.Windows.Forms.CheckBox() - Me.POBeatResizer = New System.Windows.Forms.Button() - Me.TableLayoutPanel7 = New System.Windows.Forms.TableLayoutPanel() - Me.nBeatD = New System.Windows.Forms.NumericUpDown() - Me.BBeatApplyV = New System.Windows.Forms.Button() - Me.nBeatN = New System.Windows.Forms.NumericUpDown() - Me.BBeatApply = New System.Windows.Forms.Button() - Me.Label7 = New System.Windows.Forms.Label() - Me.tBeatValue = New System.Windows.Forms.TextBox() - Me.LBeat = New System.Windows.Forms.ListBox() - Me.POBeatPart2 = New System.Windows.Forms.TableLayoutPanel() - Me.CBeatScale = New System.Windows.Forms.RadioButton() - Me.CBeatCut = New System.Windows.Forms.RadioButton() - Me.CBeatMeasure = New System.Windows.Forms.RadioButton() - Me.CBeatPreserve = New System.Windows.Forms.RadioButton() - Me.POBeatSwitch = New System.Windows.Forms.CheckBox() - Me.POBMP = New System.Windows.Forms.Panel() - Me.POBMPInner = New System.Windows.Forms.TableLayoutPanel() - Me.LBMP = New System.Windows.Forms.ListBox() - Me.FlowLayoutPanel4 = New System.Windows.Forms.FlowLayoutPanel() - Me.BBMPUp = New System.Windows.Forms.Button() - Me.BBMPDown = New System.Windows.Forms.Button() - Me.BBMPBrowse = New System.Windows.Forms.Button() - Me.BBMPRemove = New System.Windows.Forms.Button() - Me.POBMPResizer = New System.Windows.Forms.Button() - Me.POBMPSwitch = New System.Windows.Forms.CheckBox() - Me.POWAV = New System.Windows.Forms.Panel() - Me.POWAVInner = New System.Windows.Forms.TableLayoutPanel() - Me.POWAVExpander = New System.Windows.Forms.CheckBox() - Me.LWAV = New System.Windows.Forms.ListBox() - Me.FlowLayoutPanel3 = New System.Windows.Forms.FlowLayoutPanel() - Me.BWAVUp = New System.Windows.Forms.Button() - Me.BWAVDown = New System.Windows.Forms.Button() - Me.BWAVBrowse = New System.Windows.Forms.Button() - Me.BWAVRemove = New System.Windows.Forms.Button() - Me.POWAVResizer = New System.Windows.Forms.Button() - Me.POWAVPart2 = New System.Windows.Forms.TableLayoutPanel() - Me.CWAVMultiSelect = New System.Windows.Forms.CheckBox() - Me.CWAVChangeLabel = New System.Windows.Forms.CheckBox() - Me.POWAVSwitch = New System.Windows.Forms.CheckBox() - Me.POWaveForm = New System.Windows.Forms.Panel() - Me.POWaveFormInner = New System.Windows.Forms.Panel() - Me.POWaveFormPart2 = New System.Windows.Forms.TableLayoutPanel() - Me.TWSaturation = New System.Windows.Forms.NumericUpDown() - Me.PictureBox2 = New System.Windows.Forms.PictureBox() - Me.TWTransparency = New System.Windows.Forms.NumericUpDown() - Me.PictureBox3 = New System.Windows.Forms.PictureBox() - Me.TWPrecision = New System.Windows.Forms.NumericUpDown() - Me.PictureBox4 = New System.Windows.Forms.PictureBox() - Me.TWWidth = New System.Windows.Forms.NumericUpDown() - Me.PictureBox5 = New System.Windows.Forms.PictureBox() - Me.TWLeft = New System.Windows.Forms.NumericUpDown() - Me.PictureBox6 = New System.Windows.Forms.PictureBox() - Me.TWSaturation2 = New System.Windows.Forms.TrackBar() - Me.TWLeft2 = New System.Windows.Forms.TrackBar() - Me.TWTransparency2 = New System.Windows.Forms.TrackBar() - Me.TWWidth2 = New System.Windows.Forms.TrackBar() - Me.TWPrecision2 = New System.Windows.Forms.TrackBar() - Me.POWaveFormExpander = New System.Windows.Forms.CheckBox() - Me.POWaveFormPart1 = New System.Windows.Forms.TableLayoutPanel() - Me.TableLayoutPanel1 = New System.Windows.Forms.TableLayoutPanel() - Me.FlowLayoutPanel1 = New System.Windows.Forms.FlowLayoutPanel() - Me.BWLoad = New System.Windows.Forms.Button() - Me.BWClear = New System.Windows.Forms.Button() - Me.BWLock = New System.Windows.Forms.CheckBox() - Me.TWFileName = New System.Windows.Forms.TextBox() - Me.TableLayoutPanel6 = New System.Windows.Forms.TableLayoutPanel() - Me.PictureBox1 = New System.Windows.Forms.PictureBox() - Me.TWPosition2 = New System.Windows.Forms.TrackBar() - Me.TWPosition = New System.Windows.Forms.NumericUpDown() - Me.POWaveFormSwitch = New System.Windows.Forms.CheckBox() - Me.POGrid = New System.Windows.Forms.Panel() - Me.POGridInner = New System.Windows.Forms.Panel() - Me.POGridPart2 = New System.Windows.Forms.TableLayoutPanel() - Me.TableLayoutPanel5 = New System.Windows.Forms.TableLayoutPanel() - Me.FlowLayoutPanel2 = New System.Windows.Forms.FlowLayoutPanel() - Me.cVSLockL = New System.Windows.Forms.CheckBox() - Me.cVSLock = New System.Windows.Forms.CheckBox() - Me.cVSLockR = New System.Windows.Forms.CheckBox() - Me.Label5 = New System.Windows.Forms.Label() - Me.TableLayoutPanel4 = New System.Windows.Forms.TableLayoutPanel() - Me.Label1 = New System.Windows.Forms.Label() - Me.CGB = New System.Windows.Forms.NumericUpDown() - Me.POGridExpander = New System.Windows.Forms.CheckBox() - Me.POGridPart1 = New System.Windows.Forms.TableLayoutPanel() - Me.TableLayoutPanel3 = New System.Windows.Forms.TableLayoutPanel() - Me.PictureBox9 = New System.Windows.Forms.PictureBox() - Me.CGHeight2 = New System.Windows.Forms.TrackBar() - Me.CGHeight = New System.Windows.Forms.NumericUpDown() - Me.PictureBox10 = New System.Windows.Forms.PictureBox() - Me.CGWidth2 = New System.Windows.Forms.TrackBar() - Me.CGWidth = New System.Windows.Forms.NumericUpDown() - Me.CGDisableVertical = New System.Windows.Forms.CheckBox() - Me.CGSnap = New System.Windows.Forms.CheckBox() - Me.TableLayoutPanel2 = New System.Windows.Forms.TableLayoutPanel() - Me.PictureBox7 = New System.Windows.Forms.PictureBox() - Me.CGDivide = New System.Windows.Forms.NumericUpDown() - Me.CGSub = New System.Windows.Forms.NumericUpDown() - Me.BGSlash = New System.Windows.Forms.Button() - Me.POGridSwitch = New System.Windows.Forms.CheckBox() - Me.POHeader = New System.Windows.Forms.Panel() - Me.POHeaderInner = New System.Windows.Forms.Panel() - Me.POHeaderPart2 = New System.Windows.Forms.TableLayoutPanel() - Me.CHDifficulty = New System.Windows.Forms.ComboBox() - Me.Label13 = New System.Windows.Forms.Label() - Me.THExRank = New System.Windows.Forms.TextBox() - Me.Label25 = New System.Windows.Forms.Label() - Me.CHLnObj = New System.Windows.Forms.ComboBox() - Me.Label23 = New System.Windows.Forms.Label() - Me.Label21 = New System.Windows.Forms.Label() - Me.THComment = New System.Windows.Forms.TextBox() - Me.Label24 = New System.Windows.Forms.Label() - Me.Label15 = New System.Windows.Forms.Label() - Me.THTotal = New System.Windows.Forms.TextBox() - Me.Label20 = New System.Windows.Forms.Label() - Me.BHStageFile = New System.Windows.Forms.Button() - Me.BHBanner = New System.Windows.Forms.Button() - Me.Label19 = New System.Windows.Forms.Label() - Me.BHBackBMP = New System.Windows.Forms.Button() - Me.Label17 = New System.Windows.Forms.Label() - Me.Label16 = New System.Windows.Forms.Label() - Me.Label12 = New System.Windows.Forms.Label() - Me.THBackBMP = New System.Windows.Forms.TextBox() - Me.Label11 = New System.Windows.Forms.Label() - Me.THBanner = New System.Windows.Forms.TextBox() - Me.THStageFile = New System.Windows.Forms.TextBox() - Me.THSubTitle = New System.Windows.Forms.TextBox() - Me.THSubArtist = New System.Windows.Forms.TextBox() - Me.POHeaderExpander = New System.Windows.Forms.CheckBox() - Me.POHeaderPart1 = New System.Windows.Forms.TableLayoutPanel() - Me.Label3 = New System.Windows.Forms.Label() - Me.THPlayLevel = New System.Windows.Forms.TextBox() - Me.CHRank = New System.Windows.Forms.ComboBox() - Me.Label10 = New System.Windows.Forms.Label() - Me.CHPlayer = New System.Windows.Forms.ComboBox() - Me.Label4 = New System.Windows.Forms.Label() - Me.THGenre = New System.Windows.Forms.TextBox() - Me.THBPM = New System.Windows.Forms.NumericUpDown() - Me.Label2 = New System.Windows.Forms.Label() - Me.THArtist = New System.Windows.Forms.TextBox() - Me.THTitle = New System.Windows.Forms.TextBox() - Me.Label9 = New System.Windows.Forms.Label() - Me.Label8 = New System.Windows.Forms.Label() - Me.Label6 = New System.Windows.Forms.Label() - Me.POHeaderSwitch = New System.Windows.Forms.CheckBox() - Me.Timer1 = New System.Windows.Forms.Timer(Me.components) - Me.Menu1 = New System.Windows.Forms.ContextMenuStrip(Me.components) - Me.MInsert = New System.Windows.Forms.ToolStripMenuItem() - Me.MRemove = New System.Windows.Forms.ToolStripMenuItem() - Me.AutoSaveTimer = New System.Windows.Forms.Timer(Me.components) - Me.mnMain = New System.Windows.Forms.MenuStrip() - Me.mnFile = New System.Windows.Forms.ToolStripMenuItem() - Me.mnNew = New System.Windows.Forms.ToolStripMenuItem() - Me.mnOpen = New System.Windows.Forms.ToolStripMenuItem() - Me.mnImportSM = New System.Windows.Forms.ToolStripMenuItem() - Me.mnImportIBMSC = New System.Windows.Forms.ToolStripMenuItem() - Me.ToolStripSeparator14 = New System.Windows.Forms.ToolStripSeparator() - Me.mnSave = New System.Windows.Forms.ToolStripMenuItem() - Me.mnSaveAs = New System.Windows.Forms.ToolStripMenuItem() - Me.mnExport = New System.Windows.Forms.ToolStripMenuItem() - Me.ToolStripSeparator15 = New System.Windows.Forms.ToolStripSeparator() - Me.mnOpenR0 = New System.Windows.Forms.ToolStripMenuItem() - Me.mnOpenR1 = New System.Windows.Forms.ToolStripMenuItem() - Me.mnOpenR2 = New System.Windows.Forms.ToolStripMenuItem() - Me.mnOpenR3 = New System.Windows.Forms.ToolStripMenuItem() - Me.mnOpenR4 = New System.Windows.Forms.ToolStripMenuItem() - Me.ToolStripSeparator16 = New System.Windows.Forms.ToolStripSeparator() - Me.mnQuit = New System.Windows.Forms.ToolStripMenuItem() - Me.mnEdit = New System.Windows.Forms.ToolStripMenuItem() - Me.mnUndo = New System.Windows.Forms.ToolStripMenuItem() - Me.mnRedo = New System.Windows.Forms.ToolStripMenuItem() - Me.ToolStripSeparator17 = New System.Windows.Forms.ToolStripSeparator() - Me.mnCut = New System.Windows.Forms.ToolStripMenuItem() - Me.mnCopy = New System.Windows.Forms.ToolStripMenuItem() - Me.mnPaste = New System.Windows.Forms.ToolStripMenuItem() - Me.mnDelete = New System.Windows.Forms.ToolStripMenuItem() - Me.mnSelectAll = New System.Windows.Forms.ToolStripMenuItem() - Me.mnGotoMeasure = New System.Windows.Forms.ToolStripMenuItem() - Me.ToolStripSeparator18 = New System.Windows.Forms.ToolStripSeparator() - Me.mnFind = New System.Windows.Forms.ToolStripMenuItem() - Me.mnStatistics = New System.Windows.Forms.ToolStripMenuItem() - Me.ToolStripSeparator19 = New System.Windows.Forms.ToolStripSeparator() - Me.mnTimeSelect = New System.Windows.Forms.ToolStripMenuItem() - Me.mnSelect = New System.Windows.Forms.ToolStripMenuItem() - Me.mnWrite = New System.Windows.Forms.ToolStripMenuItem() - Me.ToolStripSeparator23 = New System.Windows.Forms.ToolStripSeparator() - Me.mnMyO2 = New System.Windows.Forms.ToolStripMenuItem() - Me.mnSys = New System.Windows.Forms.ToolStripMenuItem() - Me.mnSMenu = New System.Windows.Forms.ToolStripMenuItem() - Me.mnSTB = New System.Windows.Forms.ToolStripMenuItem() - Me.mnSOP = New System.Windows.Forms.ToolStripMenuItem() - Me.mnSStatus = New System.Windows.Forms.ToolStripMenuItem() - Me.mnSLSplitter = New System.Windows.Forms.ToolStripMenuItem() - Me.mnSRSplitter = New System.Windows.Forms.ToolStripMenuItem() - Me.ToolStripSeparator21 = New System.Windows.Forms.ToolStripSeparator() - Me.CGShow = New System.Windows.Forms.ToolStripMenuItem() - Me.CGShowS = New System.Windows.Forms.ToolStripMenuItem() - Me.CGShowBG = New System.Windows.Forms.ToolStripMenuItem() - Me.CGShowM = New System.Windows.Forms.ToolStripMenuItem() - Me.CGShowMB = New System.Windows.Forms.ToolStripMenuItem() - Me.CGShowV = New System.Windows.Forms.ToolStripMenuItem() - Me.CGShowC = New System.Windows.Forms.ToolStripMenuItem() - Me.ToolStripSeparator22 = New System.Windows.Forms.ToolStripSeparator() - Me.CGBPM = New System.Windows.Forms.ToolStripMenuItem() - Me.CGSTOP = New System.Windows.Forms.ToolStripMenuItem() - Me.CGSCROLL = New System.Windows.Forms.ToolStripMenuItem() - Me.CGBLP = New System.Windows.Forms.ToolStripMenuItem() - Me.mnOptions = New System.Windows.Forms.ToolStripMenuItem() - Me.mnNTInput = New System.Windows.Forms.ToolStripMenuItem() - Me.mnErrorCheck = New System.Windows.Forms.ToolStripMenuItem() - Me.mnPreviewOnClick = New System.Windows.Forms.ToolStripMenuItem() - Me.mnShowFileName = New System.Windows.Forms.ToolStripMenuItem() - Me.ToolStripSeparator20 = New System.Windows.Forms.ToolStripSeparator() - Me.mnGOptions = New System.Windows.Forms.ToolStripMenuItem() - Me.mnVOptions = New System.Windows.Forms.ToolStripMenuItem() - Me.mnPOptions = New System.Windows.Forms.ToolStripMenuItem() - Me.mnConversion = New System.Windows.Forms.ToolStripMenuItem() - Me.cmnConversion = New System.Windows.Forms.ContextMenuStrip(Me.components) - Me.POBLong = New System.Windows.Forms.ToolStripMenuItem() - Me.POBShort = New System.Windows.Forms.ToolStripMenuItem() - Me.POBLongShort = New System.Windows.Forms.ToolStripMenuItem() - Me.ToolStripSeparator10 = New System.Windows.Forms.ToolStripSeparator() - Me.POBHidden = New System.Windows.Forms.ToolStripMenuItem() - Me.POBVisible = New System.Windows.Forms.ToolStripMenuItem() - Me.POBHiddenVisible = New System.Windows.Forms.ToolStripMenuItem() - Me.ToolStripSeparator11 = New System.Windows.Forms.ToolStripSeparator() - Me.POBModify = New System.Windows.Forms.ToolStripMenuItem() - Me.POBMirror = New System.Windows.Forms.ToolStripMenuItem() - Me.mnPreview = New System.Windows.Forms.ToolStripMenuItem() - Me.mnPlayB = New System.Windows.Forms.ToolStripMenuItem() - Me.mnPlay = New System.Windows.Forms.ToolStripMenuItem() - Me.mnStop = New System.Windows.Forms.ToolStripMenuItem() - Me.POConvert = New System.Windows.Forms.ToolStripDropDownButton() - Me.TBMain = New System.Windows.Forms.ToolStrip() - Me.TBNew = New System.Windows.Forms.ToolStripButton() - Me.TBOpen = New System.Windows.Forms.ToolStripSplitButton() - Me.TBOpenR0 = New System.Windows.Forms.ToolStripMenuItem() - Me.TBOpenR1 = New System.Windows.Forms.ToolStripMenuItem() - Me.TBOpenR2 = New System.Windows.Forms.ToolStripMenuItem() - Me.TBOpenR3 = New System.Windows.Forms.ToolStripMenuItem() - Me.TBOpenR4 = New System.Windows.Forms.ToolStripMenuItem() - Me.ToolStripSeparator12 = New System.Windows.Forms.ToolStripSeparator() - Me.TBImportSM = New System.Windows.Forms.ToolStripMenuItem() - Me.TBImportIBMSC = New System.Windows.Forms.ToolStripMenuItem() - Me.TBSave = New System.Windows.Forms.ToolStripSplitButton() - Me.TBSaveAs = New System.Windows.Forms.ToolStripMenuItem() - Me.TBExport = New System.Windows.Forms.ToolStripMenuItem() - Me.ToolStripSeparator1 = New System.Windows.Forms.ToolStripSeparator() - Me.TBCut = New System.Windows.Forms.ToolStripButton() - Me.TBCopy = New System.Windows.Forms.ToolStripButton() - Me.TBPaste = New System.Windows.Forms.ToolStripButton() - Me.TBFind = New System.Windows.Forms.ToolStripButton() - Me.ToolStripSeparator24 = New System.Windows.Forms.ToolStripSeparator() - Me.TBStatistics = New System.Windows.Forms.ToolStripButton() - Me.TBMyO2 = New System.Windows.Forms.ToolStripButton() - Me.ToolStripSeparator4 = New System.Windows.Forms.ToolStripSeparator() - Me.TBErrorCheck = New System.Windows.Forms.ToolStripButton() - Me.TBPreviewOnClick = New System.Windows.Forms.ToolStripButton() - Me.TBShowFileName = New System.Windows.Forms.ToolStripButton() - Me.ToolStripSeparator8 = New System.Windows.Forms.ToolStripSeparator() - Me.TBNTInput = New System.Windows.Forms.ToolStripButton() - Me.TBWavIncrease = New System.Windows.Forms.ToolStripButton() - Me.ToolStripSeparator2 = New System.Windows.Forms.ToolStripSeparator() - Me.TBUndo = New System.Windows.Forms.ToolStripButton() - Me.TBRedo = New System.Windows.Forms.ToolStripButton() - Me.ToolStripSeparator5 = New System.Windows.Forms.ToolStripSeparator() - Me.TBTimeSelect = New System.Windows.Forms.ToolStripButton() - Me.TBSelect = New System.Windows.Forms.ToolStripButton() - Me.TBWrite = New System.Windows.Forms.ToolStripButton() - Me.ToolStripSeparator3 = New System.Windows.Forms.ToolStripSeparator() - Me.TBPlayB = New System.Windows.Forms.ToolStripButton() - Me.TBPlay = New System.Windows.Forms.ToolStripButton() - Me.TBStop = New System.Windows.Forms.ToolStripButton() - Me.TBPOptions = New System.Windows.Forms.ToolStripButton() - Me.ToolStripSeparator7 = New System.Windows.Forms.ToolStripSeparator() - Me.TBVOptions = New System.Windows.Forms.ToolStripButton() - Me.TBGOptions = New System.Windows.Forms.ToolStripButton() - Me.POBStorm = New System.Windows.Forms.ToolStripButton() - Me.pStatus = New System.Windows.Forms.Panel() - Me.FStatus2 = New System.Windows.Forms.StatusStrip() - Me.FSSS = New System.Windows.Forms.ToolStripButton() - Me.FSSL = New System.Windows.Forms.ToolStripButton() - Me.FSSH = New System.Windows.Forms.ToolStripButton() - Me.BVCReverse = New System.Windows.Forms.ToolStripButton() - Me.LblMultiply = New System.Windows.Forms.ToolStripStatusLabel() - Me.TVCM = New System.Windows.Forms.ToolStripTextBox() - Me.LblDivide = New System.Windows.Forms.ToolStripStatusLabel() - Me.TVCD = New System.Windows.Forms.ToolStripTextBox() - Me.BVCApply = New System.Windows.Forms.ToolStripButton() - Me.TVCBPM = New System.Windows.Forms.ToolStripTextBox() - Me.BVCCalculate = New System.Windows.Forms.ToolStripButton() - Me.BConvertStop = New System.Windows.Forms.ToolStripButton() - Me.FStatus = New System.Windows.Forms.StatusStrip() - Me.FSC = New System.Windows.Forms.ToolStripStatusLabel() - Me.FSW = New System.Windows.Forms.ToolStripStatusLabel() - Me.FSM = New System.Windows.Forms.ToolStripStatusLabel() - Me.FSP1 = New System.Windows.Forms.ToolStripStatusLabel() - Me.FSP3 = New System.Windows.Forms.ToolStripStatusLabel() - Me.FSP2 = New System.Windows.Forms.ToolStripStatusLabel() - Me.FSP4 = New System.Windows.Forms.ToolStripStatusLabel() - Me.TimeStatusLabel = New System.Windows.Forms.ToolStripStatusLabel() - Me.FST = New System.Windows.Forms.ToolStripStatusLabel() - Me.FSH = New System.Windows.Forms.ToolStripStatusLabel() - Me.FSE = New System.Windows.Forms.ToolStripStatusLabel() - Me.TimerMiddle = New System.Windows.Forms.Timer(Me.components) - Me.ToolStripContainer1 = New System.Windows.Forms.ToolStripContainer() - Me.PMain = New System.Windows.Forms.Panel() - Me.PMainIn = New System.Windows.Forms.Panel() - Me.MainPanelScroll = New System.Windows.Forms.VScrollBar() - Me.HS = New System.Windows.Forms.HScrollBar() - Me.SpR = New System.Windows.Forms.Button() - Me.SpL = New System.Windows.Forms.Button() - Me.PMainR = New System.Windows.Forms.Panel() - Me.PMainInR = New System.Windows.Forms.Panel() - Me.RightPanelScroll = New System.Windows.Forms.VScrollBar() - Me.HSR = New System.Windows.Forms.HScrollBar() - Me.PMainL = New System.Windows.Forms.Panel() - Me.PMainInL = New System.Windows.Forms.Panel() - Me.LeftPanelScroll = New System.Windows.Forms.VScrollBar() - Me.HSL = New System.Windows.Forms.HScrollBar() - Me.POptionsResizer = New System.Windows.Forms.Button() - Me.ToolTipUniversal = New System.Windows.Forms.ToolTip(Me.components) - Me.cmnLanguage.SuspendLayout() - Me.cmnTheme.SuspendLayout() - Me.POptionsScroll.SuspendLayout() - Me.POptions.SuspendLayout() - Me.POExpansion.SuspendLayout() - Me.POExpansionInner.SuspendLayout() - Me.POBeat.SuspendLayout() - Me.POBeatInner.SuspendLayout() - Me.TableLayoutPanel7.SuspendLayout() - CType(Me.nBeatD, System.ComponentModel.ISupportInitialize).BeginInit() - CType(Me.nBeatN, System.ComponentModel.ISupportInitialize).BeginInit() - Me.POBeatPart2.SuspendLayout() - Me.POWAV.SuspendLayout() - Me.POWAVInner.SuspendLayout() - Me.FlowLayoutPanel3.SuspendLayout() - Me.POWAVPart2.SuspendLayout() - Me.POBMP.SuspendLayout() - Me.POBMPInner.SuspendLayout() - Me.FlowLayoutPanel4.SuspendLayout() - Me.POWaveForm.SuspendLayout() - Me.POWaveFormInner.SuspendLayout() - Me.POWaveFormPart2.SuspendLayout() - CType(Me.TWSaturation, System.ComponentModel.ISupportInitialize).BeginInit() - CType(Me.PictureBox2, System.ComponentModel.ISupportInitialize).BeginInit() - CType(Me.TWTransparency, System.ComponentModel.ISupportInitialize).BeginInit() - CType(Me.PictureBox3, System.ComponentModel.ISupportInitialize).BeginInit() - CType(Me.TWPrecision, System.ComponentModel.ISupportInitialize).BeginInit() - CType(Me.PictureBox4, System.ComponentModel.ISupportInitialize).BeginInit() - CType(Me.TWWidth, System.ComponentModel.ISupportInitialize).BeginInit() - CType(Me.PictureBox5, System.ComponentModel.ISupportInitialize).BeginInit() - CType(Me.TWLeft, System.ComponentModel.ISupportInitialize).BeginInit() - CType(Me.PictureBox6, System.ComponentModel.ISupportInitialize).BeginInit() - CType(Me.TWSaturation2, System.ComponentModel.ISupportInitialize).BeginInit() - CType(Me.TWLeft2, System.ComponentModel.ISupportInitialize).BeginInit() - CType(Me.TWTransparency2, System.ComponentModel.ISupportInitialize).BeginInit() - CType(Me.TWWidth2, System.ComponentModel.ISupportInitialize).BeginInit() - CType(Me.TWPrecision2, System.ComponentModel.ISupportInitialize).BeginInit() - Me.POWaveFormPart1.SuspendLayout() - Me.TableLayoutPanel1.SuspendLayout() - Me.FlowLayoutPanel1.SuspendLayout() - Me.TableLayoutPanel6.SuspendLayout() - CType(Me.PictureBox1, System.ComponentModel.ISupportInitialize).BeginInit() - CType(Me.TWPosition2, System.ComponentModel.ISupportInitialize).BeginInit() - CType(Me.TWPosition, System.ComponentModel.ISupportInitialize).BeginInit() - Me.POGrid.SuspendLayout() - Me.POGridInner.SuspendLayout() - Me.POGridPart2.SuspendLayout() - Me.TableLayoutPanel5.SuspendLayout() - Me.FlowLayoutPanel2.SuspendLayout() - Me.TableLayoutPanel4.SuspendLayout() - CType(Me.CGB, System.ComponentModel.ISupportInitialize).BeginInit() - Me.POGridPart1.SuspendLayout() - Me.TableLayoutPanel3.SuspendLayout() - CType(Me.PictureBox9, System.ComponentModel.ISupportInitialize).BeginInit() - CType(Me.CGHeight2, System.ComponentModel.ISupportInitialize).BeginInit() - CType(Me.CGHeight, System.ComponentModel.ISupportInitialize).BeginInit() - CType(Me.PictureBox10, System.ComponentModel.ISupportInitialize).BeginInit() - CType(Me.CGWidth2, System.ComponentModel.ISupportInitialize).BeginInit() - CType(Me.CGWidth, System.ComponentModel.ISupportInitialize).BeginInit() - Me.TableLayoutPanel2.SuspendLayout() - CType(Me.PictureBox7, System.ComponentModel.ISupportInitialize).BeginInit() - CType(Me.CGDivide, System.ComponentModel.ISupportInitialize).BeginInit() - CType(Me.CGSub, System.ComponentModel.ISupportInitialize).BeginInit() - Me.POHeader.SuspendLayout() - Me.POHeaderInner.SuspendLayout() - Me.POHeaderPart2.SuspendLayout() - Me.POHeaderPart1.SuspendLayout() - CType(Me.THBPM, System.ComponentModel.ISupportInitialize).BeginInit() - Me.Menu1.SuspendLayout() - Me.mnMain.SuspendLayout() - Me.cmnConversion.SuspendLayout() - Me.TBMain.SuspendLayout() - Me.pStatus.SuspendLayout() - Me.FStatus2.SuspendLayout() - Me.FStatus.SuspendLayout() - Me.ToolStripContainer1.ContentPanel.SuspendLayout() - Me.ToolStripContainer1.TopToolStripPanel.SuspendLayout() - Me.ToolStripContainer1.SuspendLayout() - Me.PMain.SuspendLayout() - Me.PMainR.SuspendLayout() - Me.PMainL.SuspendLayout() - Me.SuspendLayout() - ' - 'cmnLanguage - ' - Me.cmnLanguage.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.TBLangDef, Me.TBLangRefresh, Me.ToolStripSeparator9}) - Me.cmnLanguage.Name = "cmnLanguage" - Me.cmnLanguage.OwnerItem = Me.mnLanguage - Me.cmnLanguage.Size = New System.Drawing.Size(121, 54) - ' - 'TBLangDef - ' - Me.TBLangDef.Name = "TBLangDef" - Me.TBLangDef.Size = New System.Drawing.Size(120, 22) - Me.TBLangDef.Text = "(Default)" - ' - 'TBLangRefresh - ' - Me.TBLangRefresh.Image = Global.iBMSC.My.Resources.Resources.x16Refresh - Me.TBLangRefresh.Name = "TBLangRefresh" - Me.TBLangRefresh.Size = New System.Drawing.Size(120, 22) - Me.TBLangRefresh.Text = "Refresh" - ' - 'ToolStripSeparator9 - ' - Me.ToolStripSeparator9.Name = "ToolStripSeparator9" - Me.ToolStripSeparator9.Size = New System.Drawing.Size(117, 6) - ' - 'TBLanguage - ' - Me.TBLanguage.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image - Me.TBLanguage.DropDown = Me.cmnLanguage - Me.TBLanguage.Image = Global.iBMSC.My.Resources.Resources.x16Language - Me.TBLanguage.ImageTransparentColor = System.Drawing.Color.Magenta - Me.TBLanguage.Name = "TBLanguage" - Me.TBLanguage.Size = New System.Drawing.Size(29, 22) - Me.TBLanguage.Text = "Language" - ' - 'mnLanguage - ' - Me.mnLanguage.DropDown = Me.cmnLanguage - Me.mnLanguage.Image = Global.iBMSC.My.Resources.Resources.x16Language - Me.mnLanguage.Name = "mnLanguage" - Me.mnLanguage.Size = New System.Drawing.Size(229, 22) - Me.mnLanguage.Text = "&Language" - ' - 'cmnTheme - ' - Me.cmnTheme.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.TBThemeDef, Me.TBThemeSave, Me.TBThemeRefresh, Me.TBThemeLoadComptability, Me.ToolStripSeparator6}) - Me.cmnTheme.Name = "cmnLanguage" - Me.cmnTheme.OwnerItem = Me.mnTheme - Me.cmnTheme.Size = New System.Drawing.Size(246, 98) - ' - 'TBThemeDef - ' - Me.TBThemeDef.Name = "TBThemeDef" - Me.TBThemeDef.Size = New System.Drawing.Size(245, 22) - Me.TBThemeDef.Text = "(Default)" - ' - 'TBThemeSave - ' - Me.TBThemeSave.Image = Global.iBMSC.My.Resources.Resources.x16SaveAs - Me.TBThemeSave.Name = "TBThemeSave" - Me.TBThemeSave.Size = New System.Drawing.Size(245, 22) - Me.TBThemeSave.Text = "Save Theme" - ' - 'TBThemeRefresh - ' - Me.TBThemeRefresh.Image = Global.iBMSC.My.Resources.Resources.x16Refresh - Me.TBThemeRefresh.Name = "TBThemeRefresh" - Me.TBThemeRefresh.Size = New System.Drawing.Size(245, 22) - Me.TBThemeRefresh.Text = "Refresh" - ' - 'TBThemeLoadComptability - ' - Me.TBThemeLoadComptability.Name = "TBThemeLoadComptability" - Me.TBThemeLoadComptability.Size = New System.Drawing.Size(245, 22) - Me.TBThemeLoadComptability.Text = "Load Theme File from iBMSC 2.x" - ' - 'ToolStripSeparator6 - ' - Me.ToolStripSeparator6.Name = "ToolStripSeparator6" - Me.ToolStripSeparator6.Size = New System.Drawing.Size(242, 6) - ' - 'TBTheme - ' - Me.TBTheme.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image - Me.TBTheme.DropDown = Me.cmnTheme - Me.TBTheme.Image = Global.iBMSC.My.Resources.Resources.x16Theme - Me.TBTheme.ImageTransparentColor = System.Drawing.Color.Magenta - Me.TBTheme.Name = "TBTheme" - Me.TBTheme.Size = New System.Drawing.Size(29, 22) - Me.TBTheme.Text = "Theme" - ' - 'mnTheme - ' - Me.mnTheme.DropDown = Me.cmnTheme - Me.mnTheme.Image = Global.iBMSC.My.Resources.Resources.x16Theme - Me.mnTheme.Name = "mnTheme" - Me.mnTheme.Size = New System.Drawing.Size(229, 22) - Me.mnTheme.Text = "&Theme" - ' - 'POptionsScroll - ' - Me.POptionsScroll.AutoScroll = True - Me.POptionsScroll.Controls.Add(Me.POptions) - Me.POptionsScroll.Dock = System.Windows.Forms.DockStyle.Right - Me.POptionsScroll.Location = New System.Drawing.Point(882, 0) - Me.POptionsScroll.Name = "POptionsScroll" - Me.POptionsScroll.Size = New System.Drawing.Size(200, 730) - Me.POptionsScroll.TabIndex = 28 - ' - 'POptions - ' - Me.POptions.AutoSize = True - Me.POptions.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink - Me.POptions.Controls.Add(Me.POExpansion) - Me.POptions.Controls.Add(Me.POBeat) - Me.POptions.Controls.Add(Me.POBMP) - Me.POptions.Controls.Add(Me.POWAV) - Me.POptions.Controls.Add(Me.POWaveForm) - Me.POptions.Controls.Add(Me.POGrid) - Me.POptions.Controls.Add(Me.POHeader) - Me.POptions.Dock = System.Windows.Forms.DockStyle.Top - Me.POptions.Location = New System.Drawing.Point(0, 0) - Me.POptions.Name = "POptions" - Me.POptions.Size = New System.Drawing.Size(183, 1722) - Me.POptions.TabIndex = 29 - ' - 'POExpansion - ' - Me.POExpansion.AutoSize = True - Me.POExpansion.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink - Me.POExpansion.Controls.Add(Me.POExpansionInner) - Me.POExpansion.Controls.Add(Me.POExpansionSwitch) - Me.POExpansion.Dock = System.Windows.Forms.DockStyle.Top - Me.POExpansion.Location = New System.Drawing.Point(0, 1452) - Me.POExpansion.Name = "POExpansion" - Me.POExpansion.Size = New System.Drawing.Size(183, 270) - Me.POExpansion.TabIndex = 6 - ' - 'POExpansionInner - ' - Me.POExpansionInner.Controls.Add(Me.TExpansion) - Me.POExpansionInner.Controls.Add(Me.POExpansionResizer) - Me.POExpansionInner.Dock = System.Windows.Forms.DockStyle.Top - Me.POExpansionInner.Font = New System.Drawing.Font("Consolas", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) - Me.POExpansionInner.Location = New System.Drawing.Point(0, 20) - Me.POExpansionInner.Name = "POExpansionInner" - Me.POExpansionInner.Size = New System.Drawing.Size(183, 250) - Me.POExpansionInner.TabIndex = 7 - Me.POExpansionInner.Visible = False - ' - 'TExpansion - ' - Me.TExpansion.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle - Me.TExpansion.Dock = System.Windows.Forms.DockStyle.Fill - Me.TExpansion.HideSelection = False - Me.TExpansion.Location = New System.Drawing.Point(0, 0) - Me.TExpansion.Multiline = True - Me.TExpansion.Name = "TExpansion" - Me.TExpansion.ScrollBars = System.Windows.Forms.ScrollBars.Vertical - Me.TExpansion.Size = New System.Drawing.Size(183, 245) - Me.TExpansion.TabIndex = 0 - Me.TExpansion.WordWrap = False - ' - 'POExpansionResizer - ' - Me.POExpansionResizer.Dock = System.Windows.Forms.DockStyle.Bottom - Me.POExpansionResizer.FlatAppearance.BorderSize = 0 - Me.POExpansionResizer.FlatStyle = System.Windows.Forms.FlatStyle.Flat - Me.POExpansionResizer.Location = New System.Drawing.Point(0, 245) - Me.POExpansionResizer.Margin = New System.Windows.Forms.Padding(0) - Me.POExpansionResizer.Name = "POExpansionResizer" - Me.POExpansionResizer.Size = New System.Drawing.Size(183, 5) - Me.POExpansionResizer.TabIndex = 65 - Me.POExpansionResizer.TabStop = False - Me.POExpansionResizer.UseVisualStyleBackColor = True - ' - 'POExpansionSwitch - ' - Me.POExpansionSwitch.Appearance = System.Windows.Forms.Appearance.Button - Me.POExpansionSwitch.BackColor = System.Drawing.SystemColors.Control - Me.POExpansionSwitch.Cursor = System.Windows.Forms.Cursors.Hand - Me.POExpansionSwitch.Dock = System.Windows.Forms.DockStyle.Top - Me.POExpansionSwitch.Font = New System.Drawing.Font("Segoe UI", 9.0!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) - Me.POExpansionSwitch.Location = New System.Drawing.Point(0, 0) - Me.POExpansionSwitch.Name = "POExpansionSwitch" - Me.POExpansionSwitch.Size = New System.Drawing.Size(183, 20) - Me.POExpansionSwitch.TabIndex = 6 - Me.POExpansionSwitch.TabStop = False - Me.POExpansionSwitch.Text = "Expansion Code" - Me.POExpansionSwitch.TextAlign = System.Drawing.ContentAlignment.MiddleCenter - Me.POExpansionSwitch.UseCompatibleTextRendering = True - Me.POExpansionSwitch.UseVisualStyleBackColor = False - ' - 'POBeat - ' - Me.POBeat.AutoSize = True - Me.POBeat.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink - Me.POBeat.Controls.Add(Me.POBeatInner) - Me.POBeat.Controls.Add(Me.POBeatSwitch) - Me.POBeat.Dock = System.Windows.Forms.DockStyle.Top - Me.POBeat.Location = New System.Drawing.Point(0, 1182) - Me.POBeat.Name = "POBeat" - Me.POBeat.Size = New System.Drawing.Size(183, 270) - Me.POBeat.TabIndex = 5 - ' - 'POBeatInner - ' - Me.POBeatInner.ColumnCount = 1 - Me.POBeatInner.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100.0!)) - Me.POBeatInner.Controls.Add(Me.POBeatExpander, 0, 1) - Me.POBeatInner.Controls.Add(Me.POBeatResizer, 0, 4) - Me.POBeatInner.Controls.Add(Me.TableLayoutPanel7, 0, 0) - Me.POBeatInner.Controls.Add(Me.LBeat, 0, 3) - Me.POBeatInner.Controls.Add(Me.POBeatPart2, 0, 2) - Me.POBeatInner.Dock = System.Windows.Forms.DockStyle.Top - Me.POBeatInner.Location = New System.Drawing.Point(0, 20) - Me.POBeatInner.Name = "POBeatInner" - Me.POBeatInner.RowCount = 5 - Me.POBeatInner.RowStyles.Add(New System.Windows.Forms.RowStyle()) - Me.POBeatInner.RowStyles.Add(New System.Windows.Forms.RowStyle()) - Me.POBeatInner.RowStyles.Add(New System.Windows.Forms.RowStyle()) - Me.POBeatInner.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100.0!)) - Me.POBeatInner.RowStyles.Add(New System.Windows.Forms.RowStyle()) - Me.POBeatInner.Size = New System.Drawing.Size(183, 250) - Me.POBeatInner.TabIndex = 6 - Me.POBeatInner.Visible = False - ' - 'POBeatExpander - ' - Me.POBeatExpander.Appearance = System.Windows.Forms.Appearance.Button - Me.POBeatExpander.AutoSize = True - Me.POBeatExpander.Cursor = System.Windows.Forms.Cursors.Hand - Me.POBeatExpander.Dock = System.Windows.Forms.DockStyle.Top - Me.POBeatExpander.FlatAppearance.BorderSize = 0 - Me.POBeatExpander.FlatStyle = System.Windows.Forms.FlatStyle.Popup - Me.POBeatExpander.Location = New System.Drawing.Point(0, 54) - Me.POBeatExpander.Margin = New System.Windows.Forms.Padding(0) - Me.POBeatExpander.Name = "POBeatExpander" - Me.POBeatExpander.Size = New System.Drawing.Size(183, 25) - Me.POBeatExpander.TabIndex = 65 - Me.POBeatExpander.TabStop = False - Me.POBeatExpander.Text = "Expand..." - Me.POBeatExpander.TextAlign = System.Drawing.ContentAlignment.MiddleCenter - Me.POBeatExpander.UseVisualStyleBackColor = False - ' - 'POBeatResizer - ' - Me.POBeatInner.SetColumnSpan(Me.POBeatResizer, 2) - Me.POBeatResizer.Dock = System.Windows.Forms.DockStyle.Top - Me.POBeatResizer.FlatAppearance.BorderSize = 0 - Me.POBeatResizer.FlatStyle = System.Windows.Forms.FlatStyle.Flat - Me.POBeatResizer.Location = New System.Drawing.Point(0, 245) - Me.POBeatResizer.Margin = New System.Windows.Forms.Padding(0) - Me.POBeatResizer.Name = "POBeatResizer" - Me.POBeatResizer.Size = New System.Drawing.Size(183, 5) - Me.POBeatResizer.TabIndex = 64 - Me.POBeatResizer.TabStop = False - Me.POBeatResizer.UseVisualStyleBackColor = True - ' - 'TableLayoutPanel7 - ' - Me.TableLayoutPanel7.AutoSize = True - Me.TableLayoutPanel7.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink - Me.TableLayoutPanel7.ColumnCount = 4 - Me.TableLayoutPanel7.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 30.0!)) - Me.TableLayoutPanel7.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle()) - Me.TableLayoutPanel7.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 30.0!)) - Me.TableLayoutPanel7.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 40.0!)) - Me.TableLayoutPanel7.Controls.Add(Me.nBeatD, 2, 0) - Me.TableLayoutPanel7.Controls.Add(Me.BBeatApplyV, 3, 1) - Me.TableLayoutPanel7.Controls.Add(Me.nBeatN, 0, 0) - Me.TableLayoutPanel7.Controls.Add(Me.BBeatApply, 3, 0) - Me.TableLayoutPanel7.Controls.Add(Me.Label7, 1, 0) - Me.TableLayoutPanel7.Controls.Add(Me.tBeatValue, 0, 1) - Me.TableLayoutPanel7.Dock = System.Windows.Forms.DockStyle.Fill - Me.TableLayoutPanel7.Location = New System.Drawing.Point(0, 0) - Me.TableLayoutPanel7.Margin = New System.Windows.Forms.Padding(0) - Me.TableLayoutPanel7.Name = "TableLayoutPanel7" - Me.TableLayoutPanel7.RowCount = 2 - Me.TableLayoutPanel7.RowStyles.Add(New System.Windows.Forms.RowStyle()) - Me.TableLayoutPanel7.RowStyles.Add(New System.Windows.Forms.RowStyle()) - Me.TableLayoutPanel7.Size = New System.Drawing.Size(183, 54) - Me.TableLayoutPanel7.TabIndex = 63 - ' - 'nBeatD - ' - Me.nBeatD.Dock = System.Windows.Forms.DockStyle.Fill - Me.nBeatD.Location = New System.Drawing.Point(66, 3) - Me.nBeatD.Maximum = New Decimal(New Integer() {10000, 0, 0, 0}) - Me.nBeatD.Minimum = New Decimal(New Integer() {1, 0, 0, 0}) - Me.nBeatD.Name = "nBeatD" - Me.nBeatD.Size = New System.Drawing.Size(45, 23) - Me.nBeatD.TabIndex = 37 - Me.nBeatD.Value = New Decimal(New Integer() {4, 0, 0, 0}) - ' - 'BBeatApplyV - ' - Me.BBeatApplyV.AutoSize = True - Me.BBeatApplyV.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink - Me.BBeatApplyV.Dock = System.Windows.Forms.DockStyle.Fill - Me.BBeatApplyV.Location = New System.Drawing.Point(114, 29) - Me.BBeatApplyV.Margin = New System.Windows.Forms.Padding(0, 0, 3, 0) - Me.BBeatApplyV.Name = "BBeatApplyV" - Me.BBeatApplyV.Size = New System.Drawing.Size(66, 25) - Me.BBeatApplyV.TabIndex = 35 - Me.BBeatApplyV.Text = "Apply" - Me.BBeatApplyV.UseVisualStyleBackColor = True - ' - 'nBeatN - ' - Me.nBeatN.Dock = System.Windows.Forms.DockStyle.Fill - Me.nBeatN.Location = New System.Drawing.Point(3, 3) - Me.nBeatN.Maximum = New Decimal(New Integer() {99999, 0, 0, 0}) - Me.nBeatN.Minimum = New Decimal(New Integer() {1, 0, 0, 0}) - Me.nBeatN.Name = "nBeatN" - Me.nBeatN.Size = New System.Drawing.Size(45, 23) - Me.nBeatN.TabIndex = 27 - Me.nBeatN.Value = New Decimal(New Integer() {4, 0, 0, 0}) - ' - 'BBeatApply - ' - Me.BBeatApply.AutoSize = True - Me.BBeatApply.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink - Me.BBeatApply.Dock = System.Windows.Forms.DockStyle.Fill - Me.BBeatApply.Location = New System.Drawing.Point(114, 2) - Me.BBeatApply.Margin = New System.Windows.Forms.Padding(0, 2, 3, 2) - Me.BBeatApply.Name = "BBeatApply" - Me.BBeatApply.Size = New System.Drawing.Size(66, 25) - Me.BBeatApply.TabIndex = 30 - Me.BBeatApply.Text = "Apply" - Me.BBeatApply.UseVisualStyleBackColor = True - ' - 'Label7 - ' - Me.Label7.Anchor = System.Windows.Forms.AnchorStyles.None - Me.Label7.AutoSize = True - Me.Label7.Location = New System.Drawing.Point(51, 7) - Me.Label7.Margin = New System.Windows.Forms.Padding(0) - Me.Label7.Name = "Label7" - Me.Label7.Size = New System.Drawing.Size(12, 15) - Me.Label7.TabIndex = 31 - Me.Label7.Text = "/" - Me.Label7.TextAlign = System.Drawing.ContentAlignment.MiddleCenter - ' - 'tBeatValue - ' - Me.TableLayoutPanel7.SetColumnSpan(Me.tBeatValue, 3) - Me.tBeatValue.Dock = System.Windows.Forms.DockStyle.Fill - Me.tBeatValue.Location = New System.Drawing.Point(3, 30) - Me.tBeatValue.Margin = New System.Windows.Forms.Padding(3, 1, 3, 0) - Me.tBeatValue.Name = "tBeatValue" - Me.tBeatValue.Size = New System.Drawing.Size(108, 23) - Me.tBeatValue.TabIndex = 36 - Me.tBeatValue.Text = "1" - ' - 'LBeat - ' - Me.LBeat.Dock = System.Windows.Forms.DockStyle.Fill - Me.LBeat.Font = New System.Drawing.Font("Consolas", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) - Me.LBeat.IntegralHeight = False - Me.LBeat.ItemHeight = 14 - Me.LBeat.Items.AddRange(New Object() {"000: 15.984375 (1023/64)"}) - Me.LBeat.Location = New System.Drawing.Point(3, 155) - Me.LBeat.Margin = New System.Windows.Forms.Padding(3, 0, 3, 0) - Me.LBeat.Name = "LBeat" - Me.LBeat.SelectionMode = System.Windows.Forms.SelectionMode.MultiExtended - Me.LBeat.Size = New System.Drawing.Size(177, 90) - Me.LBeat.TabIndex = 26 - ' - 'POBeatPart2 - ' - Me.POBeatPart2.AutoSize = True - Me.POBeatPart2.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink - Me.POBeatPart2.ColumnCount = 1 - Me.POBeatPart2.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100.0!)) - Me.POBeatPart2.Controls.Add(Me.CBeatScale, 0, 3) - Me.POBeatPart2.Controls.Add(Me.CBeatCut, 0, 2) - Me.POBeatPart2.Controls.Add(Me.CBeatMeasure, 0, 1) - Me.POBeatPart2.Controls.Add(Me.CBeatPreserve, 0, 0) - Me.POBeatPart2.Dock = System.Windows.Forms.DockStyle.Fill - Me.POBeatPart2.Location = New System.Drawing.Point(0, 79) - Me.POBeatPart2.Margin = New System.Windows.Forms.Padding(0) - Me.POBeatPart2.Name = "POBeatPart2" - Me.POBeatPart2.RowCount = 4 - Me.POBeatPart2.RowStyles.Add(New System.Windows.Forms.RowStyle()) - Me.POBeatPart2.RowStyles.Add(New System.Windows.Forms.RowStyle()) - Me.POBeatPart2.RowStyles.Add(New System.Windows.Forms.RowStyle()) - Me.POBeatPart2.RowStyles.Add(New System.Windows.Forms.RowStyle()) - Me.POBeatPart2.Size = New System.Drawing.Size(183, 76) - Me.POBeatPart2.TabIndex = 66 - Me.POBeatPart2.Visible = False - ' - 'CBeatScale - ' - Me.CBeatScale.AutoSize = True - Me.CBeatScale.Location = New System.Drawing.Point(3, 57) - Me.CBeatScale.Margin = New System.Windows.Forms.Padding(3, 0, 3, 0) - Me.CBeatScale.Name = "CBeatScale" - Me.CBeatScale.Size = New System.Drawing.Size(151, 19) - Me.CBeatScale.TabIndex = 3 - Me.CBeatScale.Text = "Scale to measure length" - Me.CBeatScale.UseVisualStyleBackColor = True - ' - 'CBeatCut - ' - Me.CBeatCut.AutoEllipsis = True - Me.CBeatCut.Dock = System.Windows.Forms.DockStyle.Fill - Me.CBeatCut.Location = New System.Drawing.Point(3, 38) - Me.CBeatCut.Margin = New System.Windows.Forms.Padding(3, 0, 3, 0) - Me.CBeatCut.Name = "CBeatCut" - Me.CBeatCut.Size = New System.Drawing.Size(177, 19) - Me.CBeatCut.TabIndex = 2 - Me.CBeatCut.Text = "Keep measure position and cut overflow" - Me.CBeatCut.UseVisualStyleBackColor = True - ' - 'CBeatMeasure - ' - Me.CBeatMeasure.AutoSize = True - Me.CBeatMeasure.Location = New System.Drawing.Point(3, 19) - Me.CBeatMeasure.Margin = New System.Windows.Forms.Padding(3, 0, 3, 0) - Me.CBeatMeasure.Name = "CBeatMeasure" - Me.CBeatMeasure.Size = New System.Drawing.Size(145, 19) - Me.CBeatMeasure.TabIndex = 1 - Me.CBeatMeasure.Text = "Keep measure position" - Me.CBeatMeasure.UseVisualStyleBackColor = True - ' - 'CBeatPreserve - ' - Me.CBeatPreserve.AutoSize = True - Me.CBeatPreserve.Checked = True - Me.CBeatPreserve.Location = New System.Drawing.Point(3, 0) - Me.CBeatPreserve.Margin = New System.Windows.Forms.Padding(3, 0, 3, 0) - Me.CBeatPreserve.Name = "CBeatPreserve" - Me.CBeatPreserve.Size = New System.Drawing.Size(145, 19) - Me.CBeatPreserve.TabIndex = 0 - Me.CBeatPreserve.TabStop = True - Me.CBeatPreserve.Text = "Keep absolute position" - Me.CBeatPreserve.UseVisualStyleBackColor = True - ' - 'POBeatSwitch - ' - Me.POBeatSwitch.Appearance = System.Windows.Forms.Appearance.Button - Me.POBeatSwitch.BackColor = System.Drawing.SystemColors.Control - Me.POBeatSwitch.Cursor = System.Windows.Forms.Cursors.Hand - Me.POBeatSwitch.Dock = System.Windows.Forms.DockStyle.Top - Me.POBeatSwitch.Font = New System.Drawing.Font("Segoe UI", 9.0!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) - Me.POBeatSwitch.Location = New System.Drawing.Point(0, 0) - Me.POBeatSwitch.Name = "POBeatSwitch" - Me.POBeatSwitch.Size = New System.Drawing.Size(183, 20) - Me.POBeatSwitch.TabIndex = 5 - Me.POBeatSwitch.TabStop = False - Me.POBeatSwitch.Text = "Beat" - Me.POBeatSwitch.TextAlign = System.Drawing.ContentAlignment.MiddleCenter - Me.POBeatSwitch.UseCompatibleTextRendering = True - Me.POBeatSwitch.UseVisualStyleBackColor = False - ' - 'POBMP - ' - Me.POBMP.AllowDrop = True - Me.POBMP.AutoSize = True - Me.POBMP.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink - Me.POBMP.Controls.Add(Me.POBMPInner) - Me.POBMP.Controls.Add(Me.POBMPSwitch) - Me.POBMP.Dock = System.Windows.Forms.DockStyle.Top - Me.POBMP.Location = New System.Drawing.Point(0, 912) - Me.POBMP.Name = "POBMP" - Me.POBMP.Size = New System.Drawing.Size(183, 270) - Me.POBMP.TabIndex = 4 - ' - 'POBMPInner - ' - Me.POBMPInner.ColumnCount = 1 - Me.POBMPInner.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100.0!)) - Me.POBMPInner.Controls.Add(Me.LBMP, 0, 1) - Me.POBMPInner.Controls.Add(Me.FlowLayoutPanel4, 0, 0) - Me.POBMPInner.Controls.Add(Me.POBMPResizer, 0, 2) - Me.POBMPInner.Dock = System.Windows.Forms.DockStyle.Top - Me.POBMPInner.Location = New System.Drawing.Point(0, 20) - Me.POBMPInner.Name = "POBMPInner" - Me.POBMPInner.RowCount = 3 - Me.POBMPInner.RowStyles.Add(New System.Windows.Forms.RowStyle()) - Me.POBMPInner.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100.0!)) - Me.POBMPInner.RowStyles.Add(New System.Windows.Forms.RowStyle()) - Me.POBMPInner.Size = New System.Drawing.Size(183, 250) - Me.POBMPInner.TabIndex = 5 - Me.POBMPInner.Visible = False - ' - 'LBMP - ' - Me.LBMP.Dock = System.Windows.Forms.DockStyle.Fill - Me.LBMP.Font = New System.Drawing.Font("Consolas", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) - Me.LBMP.IntegralHeight = False - Me.LBMP.ItemHeight = 14 - Me.LBMP.Location = New System.Drawing.Point(3, 93) - Me.LBMP.Margin = New System.Windows.Forms.Padding(3, 0, 3, 0) - Me.LBMP.Name = "LBMP" - Me.LBMP.SelectionMode = System.Windows.Forms.SelectionMode.MultiExtended - Me.LBMP.Size = New System.Drawing.Size(177, 152) - Me.LBMP.TabIndex = 25 - ' - 'FlowLayoutPanel4 - ' - Me.FlowLayoutPanel4.AutoSize = True - Me.FlowLayoutPanel4.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink - Me.FlowLayoutPanel4.Controls.Add(Me.BBMPUp) - Me.FlowLayoutPanel4.Controls.Add(Me.BBMPDown) - Me.FlowLayoutPanel4.Controls.Add(Me.BBMPBrowse) - Me.FlowLayoutPanel4.Controls.Add(Me.BBMPRemove) - Me.FlowLayoutPanel4.Location = New System.Drawing.Point(3, 3) - Me.FlowLayoutPanel4.Name = "FlowLayoutPanel4" - Me.FlowLayoutPanel4.Size = New System.Drawing.Size(96, 24) - Me.FlowLayoutPanel4.TabIndex = 26 - Me.FlowLayoutPanel4.WrapContents = False - ' - 'BBMPUp - ' - Me.BBMPUp.Image = Global.iBMSC.My.Resources.Resources.x16Up - Me.BBMPUp.Location = New System.Drawing.Point(0, 0) - Me.BBMPUp.Margin = New System.Windows.Forms.Padding(0) - Me.BBMPUp.Name = "BBMPUp" - Me.BBMPUp.Size = New System.Drawing.Size(24, 24) - Me.BBMPUp.TabIndex = 26 - Me.ToolTipUniversal.SetToolTip(Me.BBMPUp, "Move Up") - Me.BBMPUp.UseVisualStyleBackColor = True - ' - 'BBMPDown - ' - Me.BBMPDown.Image = Global.iBMSC.My.Resources.Resources.x16Down - Me.BBMPDown.Location = New System.Drawing.Point(24, 0) - Me.BBMPDown.Margin = New System.Windows.Forms.Padding(0) - Me.BBMPDown.Name = "BBMPDown" - Me.BBMPDown.Size = New System.Drawing.Size(24, 24) - Me.BBMPDown.TabIndex = 27 - Me.ToolTipUniversal.SetToolTip(Me.BBMPDown, "Move Down") - Me.BBMPDown.UseVisualStyleBackColor = True - ' - 'BBMPBrowse - ' - Me.BBMPBrowse.Image = Global.iBMSC.My.Resources.Resources.x16PlayerBrowse - Me.BBMPBrowse.Location = New System.Drawing.Point(48, 0) - Me.BBMPBrowse.Margin = New System.Windows.Forms.Padding(0) - Me.BBMPBrowse.Name = "BBMPBrowse" - Me.BBMPBrowse.Size = New System.Drawing.Size(24, 24) - Me.BBMPBrowse.TabIndex = 30 - Me.ToolTipUniversal.SetToolTip(Me.BBMPBrowse, "Browse") - Me.BBMPBrowse.UseVisualStyleBackColor = True - ' - 'BBMPRemove - ' - Me.BBMPRemove.Image = Global.iBMSC.My.Resources.Resources.x16Remove - Me.BBMPRemove.Location = New System.Drawing.Point(72, 0) - Me.BBMPRemove.Margin = New System.Windows.Forms.Padding(0) - Me.BBMPRemove.Name = "BBMPRemove" - Me.BBMPRemove.Size = New System.Drawing.Size(24, 24) - Me.BBMPRemove.TabIndex = 31 - Me.ToolTipUniversal.SetToolTip(Me.BBMPRemove, "Remove") - Me.BBMPRemove.UseVisualStyleBackColor = True - ' - 'POBMPResizer - ' - Me.POBMPResizer.Dock = System.Windows.Forms.DockStyle.Top - Me.POBMPResizer.FlatAppearance.BorderSize = 0 - Me.POBMPResizer.FlatStyle = System.Windows.Forms.FlatStyle.Flat - Me.POBMPResizer.Location = New System.Drawing.Point(0, 245) - Me.POBMPResizer.Margin = New System.Windows.Forms.Padding(0) - Me.POBMPResizer.Name = "POBMPResizer" - Me.POBMPResizer.Size = New System.Drawing.Size(183, 5) - Me.POBMPResizer.TabIndex = 33 - Me.POBMPResizer.TabStop = False - Me.POBMPResizer.UseVisualStyleBackColor = True - ' - 'POBMPSwitch - ' - Me.POBMPSwitch.Appearance = System.Windows.Forms.Appearance.Button - Me.POBMPSwitch.BackColor = System.Drawing.SystemColors.Control - Me.POBMPSwitch.Checked = True - Me.POBMPSwitch.CheckState = System.Windows.Forms.CheckState.Checked - Me.POBMPSwitch.Cursor = System.Windows.Forms.Cursors.Hand - Me.POBMPSwitch.Dock = System.Windows.Forms.DockStyle.Top - Me.POBMPSwitch.Font = New System.Drawing.Font("Segoe UI", 9.0!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) - Me.POBMPSwitch.Location = New System.Drawing.Point(0, 0) - Me.POBMPSwitch.Name = "POBMPSwitch" - Me.POBMPSwitch.Size = New System.Drawing.Size(183, 20) - Me.POBMPSwitch.TabIndex = 4 - Me.POBMPSwitch.TabStop = False - Me.POBMPSwitch.Text = "#BMP (Images List)" - Me.POBMPSwitch.TextAlign = System.Drawing.ContentAlignment.MiddleCenter - Me.POBMPSwitch.UseCompatibleTextRendering = True - Me.POBMPSwitch.UseVisualStyleBackColor = False - - ' - 'POWAV - ' - Me.POWAV.AllowDrop = True - Me.POWAV.AutoSize = True - Me.POWAV.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink - Me.POWAV.Controls.Add(Me.POWAVInner) - Me.POWAV.Controls.Add(Me.POWAVSwitch) - Me.POWAV.Dock = System.Windows.Forms.DockStyle.Top - Me.POWAV.Location = New System.Drawing.Point(0, 912) - Me.POWAV.Name = "POWAV" - Me.POWAV.Size = New System.Drawing.Size(183, 270) - Me.POWAV.TabIndex = 4 - ' - 'POWAVInner - ' - Me.POWAVInner.ColumnCount = 1 - Me.POWAVInner.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100.0!)) - Me.POWAVInner.Controls.Add(Me.POWAVExpander, 0, 1) - Me.POWAVInner.Controls.Add(Me.LWAV, 0, 3) - Me.POWAVInner.Controls.Add(Me.FlowLayoutPanel3, 0, 0) - Me.POWAVInner.Controls.Add(Me.POWAVResizer, 0, 4) - Me.POWAVInner.Controls.Add(Me.POWAVPart2, 0, 2) - Me.POWAVInner.Dock = System.Windows.Forms.DockStyle.Top - Me.POWAVInner.Location = New System.Drawing.Point(0, 20) - Me.POWAVInner.Name = "POWAVInner" - Me.POWAVInner.RowCount = 5 - Me.POWAVInner.RowStyles.Add(New System.Windows.Forms.RowStyle()) - Me.POWAVInner.RowStyles.Add(New System.Windows.Forms.RowStyle()) - Me.POWAVInner.RowStyles.Add(New System.Windows.Forms.RowStyle()) - Me.POWAVInner.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100.0!)) - Me.POWAVInner.RowStyles.Add(New System.Windows.Forms.RowStyle()) - Me.POWAVInner.Size = New System.Drawing.Size(183, 250) - Me.POWAVInner.TabIndex = 5 - ' - 'POWAVExpander - ' - Me.POWAVExpander.Appearance = System.Windows.Forms.Appearance.Button - Me.POWAVExpander.AutoSize = True - Me.POWAVExpander.Cursor = System.Windows.Forms.Cursors.Hand - Me.POWAVExpander.Dock = System.Windows.Forms.DockStyle.Top - Me.POWAVExpander.FlatAppearance.BorderSize = 0 - Me.POWAVExpander.FlatStyle = System.Windows.Forms.FlatStyle.Popup - Me.POWAVExpander.Location = New System.Drawing.Point(0, 30) - Me.POWAVExpander.Margin = New System.Windows.Forms.Padding(0) - Me.POWAVExpander.Name = "POWAVExpander" - Me.POWAVExpander.Size = New System.Drawing.Size(183, 25) - Me.POWAVExpander.TabIndex = 34 - Me.POWAVExpander.TabStop = False - Me.POWAVExpander.Text = "Expand..." - Me.POWAVExpander.TextAlign = System.Drawing.ContentAlignment.MiddleCenter - Me.POWAVExpander.UseVisualStyleBackColor = False - ' - 'LWAV - ' - Me.LWAV.Dock = System.Windows.Forms.DockStyle.Fill - Me.LWAV.Font = New System.Drawing.Font("Consolas", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) - Me.LWAV.IntegralHeight = False - Me.LWAV.ItemHeight = 14 - Me.LWAV.Location = New System.Drawing.Point(3, 93) - Me.LWAV.Margin = New System.Windows.Forms.Padding(3, 0, 3, 0) - Me.LWAV.Name = "LWAV" - Me.LWAV.SelectionMode = System.Windows.Forms.SelectionMode.MultiExtended - Me.LWAV.Size = New System.Drawing.Size(177, 152) - Me.LWAV.TabIndex = 25 - ' - 'FlowLayoutPanel3 - ' - Me.FlowLayoutPanel3.AutoSize = True - Me.FlowLayoutPanel3.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink - Me.FlowLayoutPanel3.Controls.Add(Me.BWAVUp) - Me.FlowLayoutPanel3.Controls.Add(Me.BWAVDown) - Me.FlowLayoutPanel3.Controls.Add(Me.BWAVBrowse) - Me.FlowLayoutPanel3.Controls.Add(Me.BWAVRemove) - Me.FlowLayoutPanel3.Location = New System.Drawing.Point(3, 3) - Me.FlowLayoutPanel3.Name = "FlowLayoutPanel3" - Me.FlowLayoutPanel3.Size = New System.Drawing.Size(96, 24) - Me.FlowLayoutPanel3.TabIndex = 26 - Me.FlowLayoutPanel3.WrapContents = False - ' - 'BWAVUp - ' - Me.BWAVUp.Image = Global.iBMSC.My.Resources.Resources.x16Up - Me.BWAVUp.Location = New System.Drawing.Point(0, 0) - Me.BWAVUp.Margin = New System.Windows.Forms.Padding(0) - Me.BWAVUp.Name = "BWAVUp" - Me.BWAVUp.Size = New System.Drawing.Size(24, 24) - Me.BWAVUp.TabIndex = 26 - Me.ToolTipUniversal.SetToolTip(Me.BWAVUp, "Move Up") - Me.BWAVUp.UseVisualStyleBackColor = True - ' - 'BWAVDown - ' - Me.BWAVDown.Image = Global.iBMSC.My.Resources.Resources.x16Down - Me.BWAVDown.Location = New System.Drawing.Point(24, 0) - Me.BWAVDown.Margin = New System.Windows.Forms.Padding(0) - Me.BWAVDown.Name = "BWAVDown" - Me.BWAVDown.Size = New System.Drawing.Size(24, 24) - Me.BWAVDown.TabIndex = 27 - Me.ToolTipUniversal.SetToolTip(Me.BWAVDown, "Move Down") - Me.BWAVDown.UseVisualStyleBackColor = True - ' - 'BWAVBrowse - ' - Me.BWAVBrowse.Image = Global.iBMSC.My.Resources.Resources.x16PlayerBrowse - Me.BWAVBrowse.Location = New System.Drawing.Point(48, 0) - Me.BWAVBrowse.Margin = New System.Windows.Forms.Padding(0) - Me.BWAVBrowse.Name = "BWAVBrowse" - Me.BWAVBrowse.Size = New System.Drawing.Size(24, 24) - Me.BWAVBrowse.TabIndex = 30 - Me.ToolTipUniversal.SetToolTip(Me.BWAVBrowse, "Browse") - Me.BWAVBrowse.UseVisualStyleBackColor = True - ' - 'BWAVRemove - ' - Me.BWAVRemove.Image = Global.iBMSC.My.Resources.Resources.x16Remove - Me.BWAVRemove.Location = New System.Drawing.Point(72, 0) - Me.BWAVRemove.Margin = New System.Windows.Forms.Padding(0) - Me.BWAVRemove.Name = "BWAVRemove" - Me.BWAVRemove.Size = New System.Drawing.Size(24, 24) - Me.BWAVRemove.TabIndex = 31 - Me.ToolTipUniversal.SetToolTip(Me.BWAVRemove, "Remove") - Me.BWAVRemove.UseVisualStyleBackColor = True - ' - 'POWAVResizer - ' - Me.POWAVResizer.Dock = System.Windows.Forms.DockStyle.Top - Me.POWAVResizer.FlatAppearance.BorderSize = 0 - Me.POWAVResizer.FlatStyle = System.Windows.Forms.FlatStyle.Flat - Me.POWAVResizer.Location = New System.Drawing.Point(0, 245) - Me.POWAVResizer.Margin = New System.Windows.Forms.Padding(0) - Me.POWAVResizer.Name = "POWAVResizer" - Me.POWAVResizer.Size = New System.Drawing.Size(183, 5) - Me.POWAVResizer.TabIndex = 33 - Me.POWAVResizer.TabStop = False - Me.POWAVResizer.UseVisualStyleBackColor = True - ' - 'POWAVPart2 - ' - Me.POWAVPart2.AutoSize = True - Me.POWAVPart2.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink - Me.POWAVPart2.ColumnCount = 1 - Me.POWAVPart2.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100.0!)) - Me.POWAVPart2.Controls.Add(Me.CWAVMultiSelect, 0, 0) - Me.POWAVPart2.Controls.Add(Me.CWAVChangeLabel, 0, 1) - Me.POWAVPart2.Dock = System.Windows.Forms.DockStyle.Fill - Me.POWAVPart2.Location = New System.Drawing.Point(0, 55) - Me.POWAVPart2.Margin = New System.Windows.Forms.Padding(0) - Me.POWAVPart2.Name = "POWAVPart2" - Me.POWAVPart2.RowCount = 2 - Me.POWAVPart2.RowStyles.Add(New System.Windows.Forms.RowStyle()) - Me.POWAVPart2.RowStyles.Add(New System.Windows.Forms.RowStyle()) - Me.POWAVPart2.Size = New System.Drawing.Size(183, 38) - Me.POWAVPart2.TabIndex = 35 - Me.POWAVPart2.Visible = False - ' - 'CWAVMultiSelect - ' - Me.CWAVMultiSelect.AutoSize = True - Me.CWAVMultiSelect.Checked = True - Me.CWAVMultiSelect.CheckState = System.Windows.Forms.CheckState.Checked - Me.CWAVMultiSelect.Location = New System.Drawing.Point(3, 0) - Me.CWAVMultiSelect.Margin = New System.Windows.Forms.Padding(3, 0, 3, 0) - Me.CWAVMultiSelect.Name = "CWAVMultiSelect" - Me.CWAVMultiSelect.Size = New System.Drawing.Size(154, 19) - Me.CWAVMultiSelect.TabIndex = 0 - Me.CWAVMultiSelect.Text = "Allow Multiple Selection" - Me.CWAVMultiSelect.UseVisualStyleBackColor = True - ' - 'CWAVChangeLabel - ' - Me.CWAVChangeLabel.AutoSize = True - Me.CWAVChangeLabel.Checked = True - Me.CWAVChangeLabel.CheckState = System.Windows.Forms.CheckState.Checked - Me.CWAVChangeLabel.Location = New System.Drawing.Point(3, 19) - Me.CWAVChangeLabel.Margin = New System.Windows.Forms.Padding(3, 0, 3, 0) - Me.CWAVChangeLabel.Name = "CWAVChangeLabel" - Me.CWAVChangeLabel.Size = New System.Drawing.Size(155, 19) - Me.CWAVChangeLabel.TabIndex = 1 - Me.CWAVChangeLabel.Text = "Synchronize Note Labels" - Me.CWAVChangeLabel.UseVisualStyleBackColor = True - ' - 'POWAVSwitch - ' - Me.POWAVSwitch.Appearance = System.Windows.Forms.Appearance.Button - Me.POWAVSwitch.BackColor = System.Drawing.SystemColors.Control - Me.POWAVSwitch.Checked = True - Me.POWAVSwitch.CheckState = System.Windows.Forms.CheckState.Checked - Me.POWAVSwitch.Cursor = System.Windows.Forms.Cursors.Hand - Me.POWAVSwitch.Dock = System.Windows.Forms.DockStyle.Top - Me.POWAVSwitch.Font = New System.Drawing.Font("Segoe UI", 9.0!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) - Me.POWAVSwitch.Location = New System.Drawing.Point(0, 0) - Me.POWAVSwitch.Name = "POWAVSwitch" - Me.POWAVSwitch.Size = New System.Drawing.Size(183, 20) - Me.POWAVSwitch.TabIndex = 4 - Me.POWAVSwitch.TabStop = False - Me.POWAVSwitch.Text = "#WAV (Sounds List)" - Me.POWAVSwitch.TextAlign = System.Drawing.ContentAlignment.MiddleCenter - Me.POWAVSwitch.UseCompatibleTextRendering = True - Me.POWAVSwitch.UseVisualStyleBackColor = False - ' - 'POWaveForm - ' - Me.POWaveForm.AutoSize = True - Me.POWaveForm.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink - Me.POWaveForm.Controls.Add(Me.POWaveFormInner) - Me.POWaveForm.Controls.Add(Me.POWaveFormSwitch) - Me.POWaveForm.Dock = System.Windows.Forms.DockStyle.Top - Me.POWaveForm.Location = New System.Drawing.Point(0, 669) - Me.POWaveForm.Name = "POWaveForm" - Me.POWaveForm.Size = New System.Drawing.Size(183, 243) - Me.POWaveForm.TabIndex = 3 - ' - 'POWaveFormInner - ' - Me.POWaveFormInner.AutoSize = True - Me.POWaveFormInner.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink - Me.POWaveFormInner.Controls.Add(Me.POWaveFormPart2) - Me.POWaveFormInner.Controls.Add(Me.POWaveFormExpander) - Me.POWaveFormInner.Controls.Add(Me.POWaveFormPart1) - Me.POWaveFormInner.Dock = System.Windows.Forms.DockStyle.Top - Me.POWaveFormInner.Location = New System.Drawing.Point(0, 20) - Me.POWaveFormInner.Name = "POWaveFormInner" - Me.POWaveFormInner.Size = New System.Drawing.Size(183, 223) - Me.POWaveFormInner.TabIndex = 29 - Me.POWaveFormInner.Visible = False - ' - 'POWaveFormPart2 - ' - Me.POWaveFormPart2.AutoSize = True - Me.POWaveFormPart2.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink - Me.POWaveFormPart2.ColumnCount = 3 - Me.POWaveFormPart2.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle()) - Me.POWaveFormPart2.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 70.0!)) - Me.POWaveFormPart2.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 30.0!)) - Me.POWaveFormPart2.Controls.Add(Me.TWSaturation, 2, 4) - Me.POWaveFormPart2.Controls.Add(Me.PictureBox2, 0, 0) - Me.POWaveFormPart2.Controls.Add(Me.TWTransparency, 2, 3) - Me.POWaveFormPart2.Controls.Add(Me.PictureBox3, 0, 1) - Me.POWaveFormPart2.Controls.Add(Me.TWPrecision, 2, 2) - Me.POWaveFormPart2.Controls.Add(Me.PictureBox4, 0, 2) - Me.POWaveFormPart2.Controls.Add(Me.TWWidth, 2, 1) - Me.POWaveFormPart2.Controls.Add(Me.PictureBox5, 0, 3) - Me.POWaveFormPart2.Controls.Add(Me.TWLeft, 2, 0) - Me.POWaveFormPart2.Controls.Add(Me.PictureBox6, 0, 4) - Me.POWaveFormPart2.Controls.Add(Me.TWSaturation2, 1, 4) - Me.POWaveFormPart2.Controls.Add(Me.TWLeft2, 1, 0) - Me.POWaveFormPart2.Controls.Add(Me.TWTransparency2, 1, 3) - Me.POWaveFormPart2.Controls.Add(Me.TWWidth2, 1, 1) - Me.POWaveFormPart2.Controls.Add(Me.TWPrecision2, 1, 2) - Me.POWaveFormPart2.Dock = System.Windows.Forms.DockStyle.Top - Me.POWaveFormPart2.Location = New System.Drawing.Point(0, 83) - Me.POWaveFormPart2.Name = "POWaveFormPart2" - Me.POWaveFormPart2.RowCount = 5 - Me.POWaveFormPart2.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 28.0!)) - Me.POWaveFormPart2.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 28.0!)) - Me.POWaveFormPart2.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 28.0!)) - Me.POWaveFormPart2.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 28.0!)) - Me.POWaveFormPart2.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 28.0!)) - Me.POWaveFormPart2.Size = New System.Drawing.Size(183, 140) - Me.POWaveFormPart2.TabIndex = 5 - ' - 'TWSaturation - ' - Me.TWSaturation.Dock = System.Windows.Forms.DockStyle.Fill - Me.TWSaturation.Increment = New Decimal(New Integer() {50, 0, 0, 0}) - Me.TWSaturation.Location = New System.Drawing.Point(137, 112) - Me.TWSaturation.Margin = New System.Windows.Forms.Padding(0, 0, 3, 0) - Me.TWSaturation.Maximum = New Decimal(New Integer() {1000, 0, 0, 0}) - Me.TWSaturation.Name = "TWSaturation" - Me.TWSaturation.Size = New System.Drawing.Size(43, 23) - Me.TWSaturation.TabIndex = 68 - ' - 'PictureBox2 - ' - Me.PictureBox2.Image = Global.iBMSC.My.Resources.Resources.WAVLeft - Me.PictureBox2.Location = New System.Drawing.Point(3, 0) - Me.PictureBox2.Margin = New System.Windows.Forms.Padding(3, 0, 3, 0) - Me.PictureBox2.Name = "PictureBox2" - Me.PictureBox2.Size = New System.Drawing.Size(24, 24) - Me.PictureBox2.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize - Me.PictureBox2.TabIndex = 60 - Me.PictureBox2.TabStop = False - ' - 'TWTransparency - ' - Me.TWTransparency.Dock = System.Windows.Forms.DockStyle.Fill - Me.TWTransparency.Increment = New Decimal(New Integer() {10, 0, 0, 0}) - Me.TWTransparency.Location = New System.Drawing.Point(137, 84) - Me.TWTransparency.Margin = New System.Windows.Forms.Padding(0, 0, 3, 0) - Me.TWTransparency.Maximum = New Decimal(New Integer() {255, 0, 0, 0}) - Me.TWTransparency.Name = "TWTransparency" - Me.TWTransparency.Size = New System.Drawing.Size(43, 23) - Me.TWTransparency.TabIndex = 69 - Me.TWTransparency.Value = New Decimal(New Integer() {80, 0, 0, 0}) - ' - 'PictureBox3 - ' - Me.PictureBox3.Image = Global.iBMSC.My.Resources.Resources.WAVWidth - Me.PictureBox3.Location = New System.Drawing.Point(3, 28) - Me.PictureBox3.Margin = New System.Windows.Forms.Padding(3, 0, 3, 0) - Me.PictureBox3.Name = "PictureBox3" - Me.PictureBox3.Size = New System.Drawing.Size(24, 24) - Me.PictureBox3.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize - Me.PictureBox3.TabIndex = 61 - Me.PictureBox3.TabStop = False - ' - 'TWPrecision - ' - Me.TWPrecision.Dock = System.Windows.Forms.DockStyle.Fill - Me.TWPrecision.Location = New System.Drawing.Point(137, 56) - Me.TWPrecision.Margin = New System.Windows.Forms.Padding(0, 0, 3, 0) - Me.TWPrecision.Maximum = New Decimal(New Integer() {50, 0, 0, 0}) - Me.TWPrecision.Name = "TWPrecision" - Me.TWPrecision.Size = New System.Drawing.Size(43, 23) - Me.TWPrecision.TabIndex = 46 - Me.TWPrecision.Value = New Decimal(New Integer() {5, 0, 0, 0}) - ' - 'PictureBox4 - ' - Me.PictureBox4.Image = Global.iBMSC.My.Resources.Resources.WAVPrecision - Me.PictureBox4.Location = New System.Drawing.Point(3, 56) - Me.PictureBox4.Margin = New System.Windows.Forms.Padding(3, 0, 3, 0) - Me.PictureBox4.Name = "PictureBox4" - Me.PictureBox4.Size = New System.Drawing.Size(24, 24) - Me.PictureBox4.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize - Me.PictureBox4.TabIndex = 62 - Me.PictureBox4.TabStop = False - ' - 'TWWidth - ' - Me.TWWidth.Dock = System.Windows.Forms.DockStyle.Fill - Me.TWWidth.Increment = New Decimal(New Integer() {10, 0, 0, 0}) - Me.TWWidth.Location = New System.Drawing.Point(137, 28) - Me.TWWidth.Margin = New System.Windows.Forms.Padding(0, 0, 3, 0) - Me.TWWidth.Maximum = New Decimal(New Integer() {1000, 0, 0, 0}) - Me.TWWidth.Name = "TWWidth" - Me.TWWidth.Size = New System.Drawing.Size(43, 23) - Me.TWWidth.TabIndex = 45 - Me.TWWidth.Value = New Decimal(New Integer() {200, 0, 0, 0}) - ' - 'PictureBox5 - ' - Me.PictureBox5.Image = Global.iBMSC.My.Resources.Resources.WAVTransparency - Me.PictureBox5.Location = New System.Drawing.Point(3, 84) - Me.PictureBox5.Margin = New System.Windows.Forms.Padding(3, 0, 3, 0) - Me.PictureBox5.Name = "PictureBox5" - Me.PictureBox5.Size = New System.Drawing.Size(24, 24) - Me.PictureBox5.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize - Me.PictureBox5.TabIndex = 67 - Me.PictureBox5.TabStop = False - ' - 'TWLeft - ' - Me.TWLeft.Dock = System.Windows.Forms.DockStyle.Fill - Me.TWLeft.Increment = New Decimal(New Integer() {5, 0, 0, 0}) - Me.TWLeft.Location = New System.Drawing.Point(137, 0) - Me.TWLeft.Margin = New System.Windows.Forms.Padding(0, 0, 3, 0) - Me.TWLeft.Maximum = New Decimal(New Integer() {800, 0, 0, 0}) - Me.TWLeft.Name = "TWLeft" - Me.TWLeft.Size = New System.Drawing.Size(43, 23) - Me.TWLeft.TabIndex = 44 - Me.TWLeft.Value = New Decimal(New Integer() {50, 0, 0, 0}) - ' - 'PictureBox6 - ' - Me.PictureBox6.Image = Global.iBMSC.My.Resources.Resources.WAVSaturation - Me.PictureBox6.Location = New System.Drawing.Point(3, 112) - Me.PictureBox6.Margin = New System.Windows.Forms.Padding(3, 0, 3, 0) - Me.PictureBox6.Name = "PictureBox6" - Me.PictureBox6.Size = New System.Drawing.Size(24, 24) - Me.PictureBox6.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize - Me.PictureBox6.TabIndex = 66 - Me.PictureBox6.TabStop = False - ' - 'TWSaturation2 - ' - Me.TWSaturation2.Dock = System.Windows.Forms.DockStyle.Fill - Me.TWSaturation2.LargeChange = 200 - Me.TWSaturation2.Location = New System.Drawing.Point(30, 112) - Me.TWSaturation2.Margin = New System.Windows.Forms.Padding(0) - Me.TWSaturation2.Maximum = 1000 - Me.TWSaturation2.Name = "TWSaturation2" - Me.TWSaturation2.Size = New System.Drawing.Size(107, 28) - Me.TWSaturation2.SmallChange = 50 - Me.TWSaturation2.TabIndex = 70 - Me.TWSaturation2.TickFrequency = 200 - ' - 'TWLeft2 - ' - Me.TWLeft2.Dock = System.Windows.Forms.DockStyle.Fill - Me.TWLeft2.LargeChange = 50 - Me.TWLeft2.Location = New System.Drawing.Point(30, 0) - Me.TWLeft2.Margin = New System.Windows.Forms.Padding(0) - Me.TWLeft2.Maximum = 800 - Me.TWLeft2.Name = "TWLeft2" - Me.TWLeft2.Size = New System.Drawing.Size(107, 28) - Me.TWLeft2.SmallChange = 10 - Me.TWLeft2.TabIndex = 63 - Me.TWLeft2.TickFrequency = 100 - Me.TWLeft2.Value = 50 - ' - 'TWTransparency2 - ' - Me.TWTransparency2.Dock = System.Windows.Forms.DockStyle.Fill - Me.TWTransparency2.LargeChange = 64 - Me.TWTransparency2.Location = New System.Drawing.Point(30, 84) - Me.TWTransparency2.Margin = New System.Windows.Forms.Padding(0) - Me.TWTransparency2.Maximum = 255 - Me.TWTransparency2.Name = "TWTransparency2" - Me.TWTransparency2.Size = New System.Drawing.Size(107, 28) - Me.TWTransparency2.SmallChange = 8 - Me.TWTransparency2.TabIndex = 71 - Me.TWTransparency2.TickFrequency = 64 - Me.TWTransparency2.Value = 80 - ' - 'TWWidth2 - ' - Me.TWWidth2.Dock = System.Windows.Forms.DockStyle.Fill - Me.TWWidth2.LargeChange = 50 - Me.TWWidth2.Location = New System.Drawing.Point(30, 28) - Me.TWWidth2.Margin = New System.Windows.Forms.Padding(0) - Me.TWWidth2.Maximum = 1000 - Me.TWWidth2.Name = "TWWidth2" - Me.TWWidth2.Size = New System.Drawing.Size(107, 28) - Me.TWWidth2.SmallChange = 10 - Me.TWWidth2.TabIndex = 64 - Me.TWWidth2.TickFrequency = 100 - Me.TWWidth2.Value = 200 - ' - 'TWPrecision2 - ' - Me.TWPrecision2.Dock = System.Windows.Forms.DockStyle.Fill - Me.TWPrecision2.LargeChange = 4 - Me.TWPrecision2.Location = New System.Drawing.Point(30, 56) - Me.TWPrecision2.Margin = New System.Windows.Forms.Padding(0) - Me.TWPrecision2.Maximum = 50 - Me.TWPrecision2.Name = "TWPrecision2" - Me.TWPrecision2.Size = New System.Drawing.Size(107, 28) - Me.TWPrecision2.TabIndex = 65 - Me.TWPrecision2.TickFrequency = 5 - Me.TWPrecision2.Value = 5 - ' - 'POWaveFormExpander - ' - Me.POWaveFormExpander.Appearance = System.Windows.Forms.Appearance.Button - Me.POWaveFormExpander.AutoSize = True - Me.POWaveFormExpander.Cursor = System.Windows.Forms.Cursors.Hand - Me.POWaveFormExpander.Dock = System.Windows.Forms.DockStyle.Top - Me.POWaveFormExpander.FlatAppearance.BorderSize = 0 - Me.POWaveFormExpander.FlatStyle = System.Windows.Forms.FlatStyle.Popup - Me.POWaveFormExpander.Location = New System.Drawing.Point(0, 58) - Me.POWaveFormExpander.Margin = New System.Windows.Forms.Padding(0) - Me.POWaveFormExpander.Name = "POWaveFormExpander" - Me.POWaveFormExpander.Size = New System.Drawing.Size(183, 25) - Me.POWaveFormExpander.TabIndex = 29 - Me.POWaveFormExpander.TabStop = False - Me.POWaveFormExpander.Text = "Expand..." - Me.POWaveFormExpander.TextAlign = System.Drawing.ContentAlignment.MiddleCenter - Me.POWaveFormExpander.UseVisualStyleBackColor = False - ' - 'POWaveFormPart1 - ' - Me.POWaveFormPart1.AutoSize = True - Me.POWaveFormPart1.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink - Me.POWaveFormPart1.ColumnCount = 1 - Me.POWaveFormPart1.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100.0!)) - Me.POWaveFormPart1.Controls.Add(Me.TableLayoutPanel1, 0, 0) - Me.POWaveFormPart1.Controls.Add(Me.TableLayoutPanel6, 0, 1) - Me.POWaveFormPart1.Dock = System.Windows.Forms.DockStyle.Top - Me.POWaveFormPart1.Location = New System.Drawing.Point(0, 0) - Me.POWaveFormPart1.Name = "POWaveFormPart1" - Me.POWaveFormPart1.RowCount = 2 - Me.POWaveFormPart1.RowStyles.Add(New System.Windows.Forms.RowStyle()) - Me.POWaveFormPart1.RowStyles.Add(New System.Windows.Forms.RowStyle()) - Me.POWaveFormPart1.Size = New System.Drawing.Size(183, 58) - Me.POWaveFormPart1.TabIndex = 4 - ' - 'TableLayoutPanel1 - ' - Me.TableLayoutPanel1.AutoSize = True - Me.TableLayoutPanel1.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink - Me.TableLayoutPanel1.ColumnCount = 2 - Me.TableLayoutPanel1.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle()) - Me.TableLayoutPanel1.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100.0!)) - Me.TableLayoutPanel1.Controls.Add(Me.FlowLayoutPanel1, 0, 0) - Me.TableLayoutPanel1.Controls.Add(Me.TWFileName, 1, 0) - Me.TableLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Fill - Me.TableLayoutPanel1.Location = New System.Drawing.Point(0, 0) - Me.TableLayoutPanel1.Margin = New System.Windows.Forms.Padding(0) - Me.TableLayoutPanel1.Name = "TableLayoutPanel1" - Me.TableLayoutPanel1.RowCount = 1 - Me.TableLayoutPanel1.RowStyles.Add(New System.Windows.Forms.RowStyle()) - Me.TableLayoutPanel1.Size = New System.Drawing.Size(183, 30) - Me.TableLayoutPanel1.TabIndex = 0 - ' - 'FlowLayoutPanel1 - ' - Me.FlowLayoutPanel1.AutoSize = True - Me.FlowLayoutPanel1.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink - Me.FlowLayoutPanel1.Controls.Add(Me.BWLoad) - Me.FlowLayoutPanel1.Controls.Add(Me.BWClear) - Me.FlowLayoutPanel1.Controls.Add(Me.BWLock) - Me.FlowLayoutPanel1.Location = New System.Drawing.Point(3, 3) - Me.FlowLayoutPanel1.Name = "FlowLayoutPanel1" - Me.FlowLayoutPanel1.Size = New System.Drawing.Size(72, 24) - Me.FlowLayoutPanel1.TabIndex = 72 - Me.FlowLayoutPanel1.WrapContents = False - ' - 'BWLoad - ' - Me.BWLoad.Image = Global.iBMSC.My.Resources.Resources.x16Add - Me.BWLoad.Location = New System.Drawing.Point(0, 0) - Me.BWLoad.Margin = New System.Windows.Forms.Padding(0) - Me.BWLoad.Name = "BWLoad" - Me.BWLoad.Size = New System.Drawing.Size(24, 24) - Me.BWLoad.TabIndex = 40 - Me.ToolTipUniversal.SetToolTip(Me.BWLoad, "Load WaveForm") - Me.BWLoad.UseVisualStyleBackColor = True - ' - 'BWClear - ' - Me.BWClear.Image = Global.iBMSC.My.Resources.Resources.x16Remove - Me.BWClear.Location = New System.Drawing.Point(24, 0) - Me.BWClear.Margin = New System.Windows.Forms.Padding(0) - Me.BWClear.Name = "BWClear" - Me.BWClear.Size = New System.Drawing.Size(24, 24) - Me.BWClear.TabIndex = 41 - Me.ToolTipUniversal.SetToolTip(Me.BWClear, "Clear WaveForm") - Me.BWClear.UseVisualStyleBackColor = True - ' - 'BWLock - ' - Me.BWLock.Appearance = System.Windows.Forms.Appearance.Button - Me.BWLock.Checked = True - Me.BWLock.CheckState = System.Windows.Forms.CheckState.Checked - Me.BWLock.Image = Global.iBMSC.My.Resources.Resources.x16Lock - Me.BWLock.Location = New System.Drawing.Point(48, 0) - Me.BWLock.Margin = New System.Windows.Forms.Padding(0) - Me.BWLock.Name = "BWLock" - Me.BWLock.Size = New System.Drawing.Size(24, 24) - Me.BWLock.TabIndex = 0 - Me.ToolTipUniversal.SetToolTip(Me.BWLock, "Lock to BGM") - Me.BWLock.UseVisualStyleBackColor = True - ' - 'TWFileName - ' - Me.TWFileName.Dock = System.Windows.Forms.DockStyle.Fill - Me.TWFileName.Location = New System.Drawing.Point(81, 3) - Me.TWFileName.Name = "TWFileName" - Me.TWFileName.ReadOnly = True - Me.TWFileName.Size = New System.Drawing.Size(99, 23) - Me.TWFileName.TabIndex = 42 - Me.TWFileName.Text = "(None)" - ' - 'TableLayoutPanel6 - ' - Me.TableLayoutPanel6.AutoSize = True - Me.TableLayoutPanel6.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink - Me.TableLayoutPanel6.ColumnCount = 3 - Me.TableLayoutPanel6.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle()) - Me.TableLayoutPanel6.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 60.0!)) - Me.TableLayoutPanel6.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 40.0!)) - Me.TableLayoutPanel6.Controls.Add(Me.PictureBox1, 0, 0) - Me.TableLayoutPanel6.Controls.Add(Me.TWPosition2, 1, 0) - Me.TableLayoutPanel6.Controls.Add(Me.TWPosition, 2, 0) - Me.TableLayoutPanel6.Dock = System.Windows.Forms.DockStyle.Fill - Me.TableLayoutPanel6.Location = New System.Drawing.Point(0, 30) - Me.TableLayoutPanel6.Margin = New System.Windows.Forms.Padding(0) - Me.TableLayoutPanel6.Name = "TableLayoutPanel6" - Me.TableLayoutPanel6.RowCount = 1 - Me.TableLayoutPanel6.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 28.0!)) - Me.TableLayoutPanel6.Size = New System.Drawing.Size(183, 28) - Me.TableLayoutPanel6.TabIndex = 1 - ' - 'PictureBox1 - ' - Me.PictureBox1.Image = Global.iBMSC.My.Resources.Resources.WAVOffset - Me.PictureBox1.Location = New System.Drawing.Point(3, 0) - Me.PictureBox1.Margin = New System.Windows.Forms.Padding(3, 0, 3, 0) - Me.PictureBox1.Name = "PictureBox1" - Me.PictureBox1.Size = New System.Drawing.Size(24, 24) - Me.PictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize - Me.PictureBox1.TabIndex = 59 - Me.PictureBox1.TabStop = False - ' - 'TWPosition2 - ' - Me.TWPosition2.Dock = System.Windows.Forms.DockStyle.Fill - Me.TWPosition2.Enabled = False - Me.TWPosition2.LargeChange = 24 - Me.TWPosition2.Location = New System.Drawing.Point(30, 0) - Me.TWPosition2.Margin = New System.Windows.Forms.Padding(0) - Me.TWPosition2.Maximum = 960 - Me.TWPosition2.Name = "TWPosition2" - Me.TWPosition2.Size = New System.Drawing.Size(91, 28) - Me.TWPosition2.TabIndex = 58 - Me.TWPosition2.TickFrequency = 192 - ' - 'TWPosition - ' - Me.TWPosition.DecimalPlaces = 2 - Me.TWPosition.Dock = System.Windows.Forms.DockStyle.Fill - Me.TWPosition.Enabled = False - Me.TWPosition.Location = New System.Drawing.Point(121, 0) - Me.TWPosition.Margin = New System.Windows.Forms.Padding(0, 0, 3, 0) - Me.TWPosition.Maximum = New Decimal(New Integer() {192000, 0, 0, 0}) - Me.TWPosition.Name = "TWPosition" - Me.TWPosition.Size = New System.Drawing.Size(59, 23) - Me.TWPosition.TabIndex = 43 - ' - 'POWaveFormSwitch - ' - Me.POWaveFormSwitch.Appearance = System.Windows.Forms.Appearance.Button - Me.POWaveFormSwitch.BackColor = System.Drawing.SystemColors.Control - Me.POWaveFormSwitch.Cursor = System.Windows.Forms.Cursors.Hand - Me.POWaveFormSwitch.Dock = System.Windows.Forms.DockStyle.Top - Me.POWaveFormSwitch.Font = New System.Drawing.Font("Segoe UI", 9.0!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) - Me.POWaveFormSwitch.Location = New System.Drawing.Point(0, 0) - Me.POWaveFormSwitch.Name = "POWaveFormSwitch" - Me.POWaveFormSwitch.Size = New System.Drawing.Size(183, 20) - Me.POWaveFormSwitch.TabIndex = 3 - Me.POWaveFormSwitch.TabStop = False - Me.POWaveFormSwitch.Text = "WaveForm" - Me.POWaveFormSwitch.TextAlign = System.Drawing.ContentAlignment.MiddleCenter - Me.POWaveFormSwitch.UseCompatibleTextRendering = True - Me.POWaveFormSwitch.UseVisualStyleBackColor = False - ' - 'POGrid - ' - Me.POGrid.AutoSize = True - Me.POGrid.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink - Me.POGrid.Controls.Add(Me.POGridInner) - Me.POGrid.Controls.Add(Me.POGridSwitch) - Me.POGrid.Dock = System.Windows.Forms.DockStyle.Top - Me.POGrid.Location = New System.Drawing.Point(0, 439) - Me.POGrid.Name = "POGrid" - Me.POGrid.Size = New System.Drawing.Size(183, 230) - Me.POGrid.TabIndex = 2 - ' - 'POGridInner - ' - Me.POGridInner.AutoSize = True - Me.POGridInner.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink - Me.POGridInner.Controls.Add(Me.POGridPart2) - Me.POGridInner.Controls.Add(Me.POGridExpander) - Me.POGridInner.Controls.Add(Me.POGridPart1) - Me.POGridInner.Dock = System.Windows.Forms.DockStyle.Top - Me.POGridInner.Location = New System.Drawing.Point(0, 20) - Me.POGridInner.Name = "POGridInner" - Me.POGridInner.Size = New System.Drawing.Size(183, 210) - Me.POGridInner.TabIndex = 3 - ' - 'POGridPart2 - ' - Me.POGridPart2.AutoSize = True - Me.POGridPart2.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink - Me.POGridPart2.ColumnCount = 1 - Me.POGridPart2.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100.0!)) - Me.POGridPart2.Controls.Add(Me.TableLayoutPanel5, 0, 1) - Me.POGridPart2.Controls.Add(Me.TableLayoutPanel4, 0, 0) - Me.POGridPart2.Dock = System.Windows.Forms.DockStyle.Top - Me.POGridPart2.Location = New System.Drawing.Point(0, 152) - Me.POGridPart2.Name = "POGridPart2" - Me.POGridPart2.RowCount = 2 - Me.POGridPart2.RowStyles.Add(New System.Windows.Forms.RowStyle()) - Me.POGridPart2.RowStyles.Add(New System.Windows.Forms.RowStyle()) - Me.POGridPart2.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20.0!)) - Me.POGridPart2.Size = New System.Drawing.Size(183, 58) - Me.POGridPart2.TabIndex = 0 - ' - 'TableLayoutPanel5 - ' - Me.TableLayoutPanel5.AutoSize = True - Me.TableLayoutPanel5.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink - Me.TableLayoutPanel5.ColumnCount = 2 - Me.TableLayoutPanel5.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle()) - Me.TableLayoutPanel5.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100.0!)) - Me.TableLayoutPanel5.Controls.Add(Me.FlowLayoutPanel2, 1, 0) - Me.TableLayoutPanel5.Controls.Add(Me.Label5, 0, 0) - Me.TableLayoutPanel5.Dock = System.Windows.Forms.DockStyle.Fill - Me.TableLayoutPanel5.Location = New System.Drawing.Point(0, 29) - Me.TableLayoutPanel5.Margin = New System.Windows.Forms.Padding(0) - Me.TableLayoutPanel5.Name = "TableLayoutPanel5" - Me.TableLayoutPanel5.RowCount = 1 - Me.TableLayoutPanel5.RowStyles.Add(New System.Windows.Forms.RowStyle()) - Me.TableLayoutPanel5.Size = New System.Drawing.Size(183, 29) - Me.TableLayoutPanel5.TabIndex = 46 - ' - 'FlowLayoutPanel2 - ' - Me.FlowLayoutPanel2.AutoSize = True - Me.FlowLayoutPanel2.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink - Me.FlowLayoutPanel2.Controls.Add(Me.cVSLockL) - Me.FlowLayoutPanel2.Controls.Add(Me.cVSLock) - Me.FlowLayoutPanel2.Controls.Add(Me.cVSLockR) - Me.FlowLayoutPanel2.Location = New System.Drawing.Point(115, 3) - Me.FlowLayoutPanel2.Name = "FlowLayoutPanel2" - Me.FlowLayoutPanel2.Size = New System.Drawing.Size(65, 23) - Me.FlowLayoutPanel2.TabIndex = 72 - Me.FlowLayoutPanel2.WrapContents = False - ' - 'cVSLockL - ' - Me.cVSLockL.Appearance = System.Windows.Forms.Appearance.Button - Me.cVSLockL.FlatStyle = System.Windows.Forms.FlatStyle.Popup - Me.cVSLockL.Image = Global.iBMSC.My.Resources.Resources.x16Lock - Me.cVSLockL.Location = New System.Drawing.Point(0, 0) - Me.cVSLockL.Margin = New System.Windows.Forms.Padding(0) - Me.cVSLockL.Name = "cVSLockL" - Me.cVSLockL.Size = New System.Drawing.Size(23, 23) - Me.cVSLockL.TabIndex = 38 - Me.cVSLockL.Tag = "0" - Me.ToolTipUniversal.SetToolTip(Me.cVSLockL, "Lock Left Editing Panel") - ' - 'cVSLock - ' - Me.cVSLock.Appearance = System.Windows.Forms.Appearance.Button - Me.cVSLock.FlatStyle = System.Windows.Forms.FlatStyle.Popup - Me.cVSLock.Image = Global.iBMSC.My.Resources.Resources.x16Lock - Me.cVSLock.Location = New System.Drawing.Point(23, 0) - Me.cVSLock.Margin = New System.Windows.Forms.Padding(0) - Me.cVSLock.Name = "cVSLock" - Me.cVSLock.Size = New System.Drawing.Size(23, 23) - Me.cVSLock.TabIndex = 40 - Me.cVSLock.Tag = "1" - Me.ToolTipUniversal.SetToolTip(Me.cVSLock, "Lock Middle Editing Panel") - ' - 'cVSLockR - ' - Me.cVSLockR.Appearance = System.Windows.Forms.Appearance.Button - Me.cVSLockR.FlatStyle = System.Windows.Forms.FlatStyle.Popup - Me.cVSLockR.Image = Global.iBMSC.My.Resources.Resources.x16Lock - Me.cVSLockR.Location = New System.Drawing.Point(46, 0) - Me.cVSLockR.Margin = New System.Windows.Forms.Padding(0) - Me.cVSLockR.Name = "cVSLockR" - Me.cVSLockR.Size = New System.Drawing.Size(23, 23) - Me.cVSLockR.TabIndex = 41 - Me.cVSLockR.Tag = "2" - Me.ToolTipUniversal.SetToolTip(Me.cVSLockR, "Lock Right Editing Panel") - ' - 'Label5 - ' - Me.Label5.AutoSize = True - Me.Label5.Dock = System.Windows.Forms.DockStyle.Fill - Me.Label5.Location = New System.Drawing.Point(3, 0) - Me.Label5.Name = "Label5" - Me.Label5.Size = New System.Drawing.Size(106, 29) - Me.Label5.TabIndex = 39 - Me.Label5.Text = "Vertical Scroll Lock" - Me.Label5.TextAlign = System.Drawing.ContentAlignment.MiddleRight - ' - 'TableLayoutPanel4 - ' - Me.TableLayoutPanel4.AutoSize = True - Me.TableLayoutPanel4.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink - Me.TableLayoutPanel4.ColumnCount = 2 - Me.TableLayoutPanel4.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle()) - Me.TableLayoutPanel4.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100.0!)) - Me.TableLayoutPanel4.Controls.Add(Me.Label1, 0, 0) - Me.TableLayoutPanel4.Controls.Add(Me.CGB, 1, 0) - Me.TableLayoutPanel4.Dock = System.Windows.Forms.DockStyle.Fill - Me.TableLayoutPanel4.Location = New System.Drawing.Point(0, 0) - Me.TableLayoutPanel4.Margin = New System.Windows.Forms.Padding(0) - Me.TableLayoutPanel4.Name = "TableLayoutPanel4" - Me.TableLayoutPanel4.RowCount = 1 - Me.TableLayoutPanel4.RowStyles.Add(New System.Windows.Forms.RowStyle()) - Me.TableLayoutPanel4.Size = New System.Drawing.Size(183, 29) - Me.TableLayoutPanel4.TabIndex = 44 - ' - 'Label1 - ' - Me.Label1.AutoSize = True - Me.Label1.Dock = System.Windows.Forms.DockStyle.Fill - Me.Label1.Location = New System.Drawing.Point(3, 0) - Me.Label1.Name = "Label1" - Me.Label1.Size = New System.Drawing.Size(126, 29) - Me.Label1.TabIndex = 43 - Me.Label1.Text = "Number of B Columns" - Me.Label1.TextAlign = System.Drawing.ContentAlignment.MiddleRight - ' - 'CGB - ' - Me.CGB.Dock = System.Windows.Forms.DockStyle.Fill - Me.CGB.Location = New System.Drawing.Point(135, 3) - Me.CGB.Maximum = New Decimal(New Integer() {999, 0, 0, 0}) - Me.CGB.Minimum = New Decimal(New Integer() {1, 0, 0, 0}) - Me.CGB.Name = "CGB" - Me.CGB.Size = New System.Drawing.Size(45, 23) - Me.CGB.TabIndex = 35 - Me.CGB.Value = New Decimal(New Integer() {15, 0, 0, 0}) - ' - 'POGridExpander - ' - Me.POGridExpander.Appearance = System.Windows.Forms.Appearance.Button - Me.POGridExpander.AutoSize = True - Me.POGridExpander.Cursor = System.Windows.Forms.Cursors.Hand - Me.POGridExpander.Dock = System.Windows.Forms.DockStyle.Top - Me.POGridExpander.FlatAppearance.BorderSize = 0 - Me.POGridExpander.FlatStyle = System.Windows.Forms.FlatStyle.Popup - Me.POGridExpander.Location = New System.Drawing.Point(0, 127) - Me.POGridExpander.Margin = New System.Windows.Forms.Padding(0) - Me.POGridExpander.Name = "POGridExpander" - Me.POGridExpander.Size = New System.Drawing.Size(183, 25) - Me.POGridExpander.TabIndex = 27 - Me.POGridExpander.TabStop = False - Me.POGridExpander.Text = "Expand..." - Me.POGridExpander.TextAlign = System.Drawing.ContentAlignment.MiddleCenter - Me.POGridExpander.UseVisualStyleBackColor = False - ' - 'POGridPart1 - ' - Me.POGridPart1.AutoSize = True - Me.POGridPart1.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink - Me.POGridPart1.ColumnCount = 1 - Me.POGridPart1.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100.0!)) - Me.POGridPart1.Controls.Add(Me.TableLayoutPanel3, 0, 1) - Me.POGridPart1.Controls.Add(Me.CGDisableVertical, 0, 3) - Me.POGridPart1.Controls.Add(Me.CGSnap, 0, 2) - Me.POGridPart1.Controls.Add(Me.TableLayoutPanel2, 0, 0) - Me.POGridPart1.Dock = System.Windows.Forms.DockStyle.Top - Me.POGridPart1.Location = New System.Drawing.Point(0, 0) - Me.POGridPart1.Name = "POGridPart1" - Me.POGridPart1.RowCount = 4 - Me.POGridPart1.RowStyles.Add(New System.Windows.Forms.RowStyle()) - Me.POGridPart1.RowStyles.Add(New System.Windows.Forms.RowStyle()) - Me.POGridPart1.RowStyles.Add(New System.Windows.Forms.RowStyle()) - Me.POGridPart1.RowStyles.Add(New System.Windows.Forms.RowStyle()) - Me.POGridPart1.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20.0!)) - Me.POGridPart1.Size = New System.Drawing.Size(183, 127) - Me.POGridPart1.TabIndex = 11 - ' - 'TableLayoutPanel3 - ' - Me.TableLayoutPanel3.AutoSize = True - Me.TableLayoutPanel3.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink - Me.TableLayoutPanel3.ColumnCount = 3 - Me.TableLayoutPanel3.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle()) - Me.TableLayoutPanel3.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 70.0!)) - Me.TableLayoutPanel3.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 30.0!)) - Me.TableLayoutPanel3.Controls.Add(Me.PictureBox9, 0, 0) - Me.TableLayoutPanel3.Controls.Add(Me.CGHeight2, 1, 0) - Me.TableLayoutPanel3.Controls.Add(Me.CGHeight, 2, 0) - Me.TableLayoutPanel3.Controls.Add(Me.PictureBox10, 0, 1) - Me.TableLayoutPanel3.Controls.Add(Me.CGWidth2, 1, 1) - Me.TableLayoutPanel3.Controls.Add(Me.CGWidth, 2, 1) - Me.TableLayoutPanel3.Dock = System.Windows.Forms.DockStyle.Fill - Me.TableLayoutPanel3.Location = New System.Drawing.Point(0, 30) - Me.TableLayoutPanel3.Margin = New System.Windows.Forms.Padding(0) - Me.TableLayoutPanel3.Name = "TableLayoutPanel3" - Me.TableLayoutPanel3.RowCount = 2 - Me.TableLayoutPanel3.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 28.0!)) - Me.TableLayoutPanel3.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 28.0!)) - Me.TableLayoutPanel3.Size = New System.Drawing.Size(183, 56) - Me.TableLayoutPanel3.TabIndex = 12 - ' - 'PictureBox9 - ' - Me.PictureBox9.Image = Global.iBMSC.My.Resources.Resources.lgheight - Me.PictureBox9.Location = New System.Drawing.Point(3, 0) - Me.PictureBox9.Margin = New System.Windows.Forms.Padding(3, 0, 3, 0) - Me.PictureBox9.Name = "PictureBox9" - Me.PictureBox9.Size = New System.Drawing.Size(24, 24) - Me.PictureBox9.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize - Me.PictureBox9.TabIndex = 27 - Me.PictureBox9.TabStop = False - ' - 'CGHeight2 - ' - Me.CGHeight2.Dock = System.Windows.Forms.DockStyle.Fill - Me.CGHeight2.LargeChange = 4 - Me.CGHeight2.Location = New System.Drawing.Point(30, 0) - Me.CGHeight2.Margin = New System.Windows.Forms.Padding(0) - Me.CGHeight2.Maximum = 20 - Me.CGHeight2.Minimum = 1 - Me.CGHeight2.Name = "CGHeight2" - Me.CGHeight2.Size = New System.Drawing.Size(107, 28) - Me.CGHeight2.TabIndex = 29 - Me.CGHeight2.TickFrequency = 2 - Me.CGHeight2.Value = 4 - ' - 'CGHeight - ' - Me.CGHeight.DecimalPlaces = 2 - Me.CGHeight.Dock = System.Windows.Forms.DockStyle.Fill - Me.CGHeight.Increment = New Decimal(New Integer() {25, 0, 0, 131072}) - Me.CGHeight.Location = New System.Drawing.Point(137, 0) - Me.CGHeight.Margin = New System.Windows.Forms.Padding(0, 0, 3, 0) - Me.CGHeight.Maximum = New Decimal(New Integer() {99, 0, 0, 0}) - Me.CGHeight.Minimum = New Decimal(New Integer() {25, 0, 0, 131072}) - Me.CGHeight.Name = "CGHeight" - Me.CGHeight.Size = New System.Drawing.Size(43, 23) - Me.CGHeight.TabIndex = 23 - Me.CGHeight.Value = New Decimal(New Integer() {1, 0, 0, 0}) - ' - 'PictureBox10 - ' - Me.PictureBox10.Image = Global.iBMSC.My.Resources.Resources.lgwidth - Me.PictureBox10.Location = New System.Drawing.Point(3, 28) - Me.PictureBox10.Margin = New System.Windows.Forms.Padding(3, 0, 3, 0) - Me.PictureBox10.Name = "PictureBox10" - Me.PictureBox10.Size = New System.Drawing.Size(24, 24) - Me.PictureBox10.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize - Me.PictureBox10.TabIndex = 28 - Me.PictureBox10.TabStop = False - ' - 'CGWidth2 - ' - Me.CGWidth2.Dock = System.Windows.Forms.DockStyle.Fill - Me.CGWidth2.LargeChange = 4 - Me.CGWidth2.Location = New System.Drawing.Point(30, 28) - Me.CGWidth2.Margin = New System.Windows.Forms.Padding(0) - Me.CGWidth2.Maximum = 20 - Me.CGWidth2.Minimum = 1 - Me.CGWidth2.Name = "CGWidth2" - Me.CGWidth2.Size = New System.Drawing.Size(107, 28) - Me.CGWidth2.TabIndex = 30 - Me.CGWidth2.TickFrequency = 2 - Me.CGWidth2.Value = 4 - ' - 'CGWidth - ' - Me.CGWidth.DecimalPlaces = 2 - Me.CGWidth.Dock = System.Windows.Forms.DockStyle.Fill - Me.CGWidth.Increment = New Decimal(New Integer() {25, 0, 0, 131072}) - Me.CGWidth.Location = New System.Drawing.Point(137, 28) - Me.CGWidth.Margin = New System.Windows.Forms.Padding(0, 0, 3, 0) - Me.CGWidth.Maximum = New Decimal(New Integer() {99, 0, 0, 0}) - Me.CGWidth.Minimum = New Decimal(New Integer() {25, 0, 0, 131072}) - Me.CGWidth.Name = "CGWidth" - Me.CGWidth.Size = New System.Drawing.Size(43, 23) - Me.CGWidth.TabIndex = 24 - Me.CGWidth.Value = New Decimal(New Integer() {1, 0, 0, 0}) - ' - 'CGDisableVertical - ' - Me.CGDisableVertical.AutoSize = True - Me.CGDisableVertical.Location = New System.Drawing.Point(3, 108) - Me.CGDisableVertical.Margin = New System.Windows.Forms.Padding(3, 0, 3, 0) - Me.CGDisableVertical.Name = "CGDisableVertical" - Me.CGDisableVertical.Size = New System.Drawing.Size(162, 19) - Me.CGDisableVertical.TabIndex = 45 - Me.CGDisableVertical.Text = "Disable vertical moves (D)" - Me.CGDisableVertical.UseVisualStyleBackColor = True - ' - 'CGSnap - ' - Me.CGSnap.AutoSize = True - Me.CGSnap.Checked = True - Me.CGSnap.CheckState = System.Windows.Forms.CheckState.Checked - Me.CGSnap.Location = New System.Drawing.Point(3, 89) - Me.CGSnap.Margin = New System.Windows.Forms.Padding(3, 3, 3, 0) - Me.CGSnap.Name = "CGSnap" - Me.CGSnap.Size = New System.Drawing.Size(109, 19) - Me.CGSnap.TabIndex = 10 - Me.CGSnap.Text = "Snap to grid (G)" - Me.CGSnap.UseVisualStyleBackColor = True - ' - 'TableLayoutPanel2 - ' - Me.TableLayoutPanel2.AutoSize = True - Me.TableLayoutPanel2.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink - Me.TableLayoutPanel2.ColumnCount = 4 - Me.TableLayoutPanel2.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle()) - Me.TableLayoutPanel2.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50.0!)) - Me.TableLayoutPanel2.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50.0!)) - Me.TableLayoutPanel2.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle()) - Me.TableLayoutPanel2.Controls.Add(Me.PictureBox7, 0, 0) - Me.TableLayoutPanel2.Controls.Add(Me.CGDivide, 1, 0) - Me.TableLayoutPanel2.Controls.Add(Me.CGSub, 2, 0) - Me.TableLayoutPanel2.Controls.Add(Me.BGSlash, 3, 0) - Me.TableLayoutPanel2.Dock = System.Windows.Forms.DockStyle.Fill - Me.TableLayoutPanel2.Location = New System.Drawing.Point(0, 0) - Me.TableLayoutPanel2.Margin = New System.Windows.Forms.Padding(0) - Me.TableLayoutPanel2.Name = "TableLayoutPanel2" - Me.TableLayoutPanel2.RowCount = 1 - Me.TableLayoutPanel2.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100.0!)) - Me.TableLayoutPanel2.Size = New System.Drawing.Size(183, 30) - Me.TableLayoutPanel2.TabIndex = 11 - ' - 'PictureBox7 - ' - Me.PictureBox7.Anchor = System.Windows.Forms.AnchorStyles.None - Me.PictureBox7.Image = Global.iBMSC.My.Resources.Resources.lgpartition - Me.PictureBox7.Location = New System.Drawing.Point(3, 3) - Me.PictureBox7.Name = "PictureBox7" - Me.PictureBox7.Size = New System.Drawing.Size(24, 24) - Me.PictureBox7.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize - Me.PictureBox7.TabIndex = 25 - Me.PictureBox7.TabStop = False - ' - 'CGDivide - ' - Me.CGDivide.Dock = System.Windows.Forms.DockStyle.Fill - Me.CGDivide.Location = New System.Drawing.Point(33, 3) - Me.CGDivide.Maximum = New Decimal(New Integer() {1920, 0, 0, 0}) - Me.CGDivide.Minimum = New Decimal(New Integer() {1, 0, 0, 0}) - Me.CGDivide.Name = "CGDivide" - Me.CGDivide.Size = New System.Drawing.Size(58, 23) - Me.CGDivide.TabIndex = 36 - Me.CGDivide.Value = New Decimal(New Integer() {16, 0, 0, 0}) - ' - 'CGSub - ' - Me.CGSub.Dock = System.Windows.Forms.DockStyle.Fill - Me.CGSub.Location = New System.Drawing.Point(97, 3) - Me.CGSub.Maximum = New Decimal(New Integer() {1920, 0, 0, 0}) - Me.CGSub.Minimum = New Decimal(New Integer() {1, 0, 0, 0}) - Me.CGSub.Name = "CGSub" - Me.CGSub.Size = New System.Drawing.Size(58, 23) - Me.CGSub.TabIndex = 37 - Me.CGSub.Value = New Decimal(New Integer() {4, 0, 0, 0}) - ' - 'BGSlash - ' - Me.BGSlash.Anchor = System.Windows.Forms.AnchorStyles.None - Me.BGSlash.Image = Global.iBMSC.My.Resources.Resources.Shortcut - Me.BGSlash.Location = New System.Drawing.Point(158, 4) - Me.BGSlash.Margin = New System.Windows.Forms.Padding(0, 0, 3, 0) - Me.BGSlash.Name = "BGSlash" - Me.BGSlash.Size = New System.Drawing.Size(22, 22) - Me.BGSlash.TabIndex = 38 - Me.BGSlash.UseVisualStyleBackColor = True - ' - 'POGridSwitch - ' - Me.POGridSwitch.Appearance = System.Windows.Forms.Appearance.Button - Me.POGridSwitch.BackColor = System.Drawing.SystemColors.Control - Me.POGridSwitch.Checked = True - Me.POGridSwitch.CheckState = System.Windows.Forms.CheckState.Checked - Me.POGridSwitch.Cursor = System.Windows.Forms.Cursors.Hand - Me.POGridSwitch.Dock = System.Windows.Forms.DockStyle.Top - Me.POGridSwitch.Font = New System.Drawing.Font("Segoe UI", 9.0!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) - Me.POGridSwitch.Location = New System.Drawing.Point(0, 0) - Me.POGridSwitch.Name = "POGridSwitch" - Me.POGridSwitch.Size = New System.Drawing.Size(183, 20) - Me.POGridSwitch.TabIndex = 2 - Me.POGridSwitch.TabStop = False - Me.POGridSwitch.Text = "Grid" - Me.POGridSwitch.TextAlign = System.Drawing.ContentAlignment.MiddleCenter - Me.POGridSwitch.UseCompatibleTextRendering = True - Me.POGridSwitch.UseVisualStyleBackColor = False - ' - 'POHeader - ' - Me.POHeader.AutoSize = True - Me.POHeader.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink - Me.POHeader.Controls.Add(Me.POHeaderInner) - Me.POHeader.Controls.Add(Me.POHeaderSwitch) - Me.POHeader.Dock = System.Windows.Forms.DockStyle.Top - Me.POHeader.Location = New System.Drawing.Point(0, 0) - Me.POHeader.Name = "POHeader" - Me.POHeader.Size = New System.Drawing.Size(183, 439) - Me.POHeader.TabIndex = 1 - ' - 'POHeaderInner - ' - Me.POHeaderInner.AutoSize = True - Me.POHeaderInner.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink - Me.POHeaderInner.Controls.Add(Me.POHeaderPart2) - Me.POHeaderInner.Controls.Add(Me.POHeaderExpander) - Me.POHeaderInner.Controls.Add(Me.POHeaderPart1) - Me.POHeaderInner.Dock = System.Windows.Forms.DockStyle.Top - Me.POHeaderInner.Location = New System.Drawing.Point(0, 20) - Me.POHeaderInner.Name = "POHeaderInner" - Me.POHeaderInner.Size = New System.Drawing.Size(183, 419) - Me.POHeaderInner.TabIndex = 2 - ' - 'POHeaderPart2 - ' - Me.POHeaderPart2.AutoSize = True - Me.POHeaderPart2.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink - Me.POHeaderPart2.ColumnCount = 3 - Me.POHeaderPart2.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle()) - Me.POHeaderPart2.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100.0!)) - Me.POHeaderPart2.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle()) - Me.POHeaderPart2.Controls.Add(Me.CHDifficulty, 1, 5) - Me.POHeaderPart2.Controls.Add(Me.Label13, 2, 6) - Me.POHeaderPart2.Controls.Add(Me.THExRank, 1, 6) - Me.POHeaderPart2.Controls.Add(Me.Label25, 2, 7) - Me.POHeaderPart2.Controls.Add(Me.CHLnObj, 1, 9) - Me.POHeaderPart2.Controls.Add(Me.Label23, 0, 6) - Me.POHeaderPart2.Controls.Add(Me.Label21, 0, 5) - Me.POHeaderPart2.Controls.Add(Me.THComment, 1, 8) - Me.POHeaderPart2.Controls.Add(Me.Label24, 0, 9) - Me.POHeaderPart2.Controls.Add(Me.Label15, 0, 0) - Me.POHeaderPart2.Controls.Add(Me.THTotal, 1, 7) - Me.POHeaderPart2.Controls.Add(Me.Label20, 0, 7) - Me.POHeaderPart2.Controls.Add(Me.BHStageFile, 2, 2) - Me.POHeaderPart2.Controls.Add(Me.BHBanner, 2, 3) - Me.POHeaderPart2.Controls.Add(Me.Label19, 0, 8) - Me.POHeaderPart2.Controls.Add(Me.BHBackBMP, 2, 4) - Me.POHeaderPart2.Controls.Add(Me.Label17, 0, 1) - Me.POHeaderPart2.Controls.Add(Me.Label16, 0, 2) - Me.POHeaderPart2.Controls.Add(Me.Label12, 0, 3) - Me.POHeaderPart2.Controls.Add(Me.THBackBMP, 1, 4) - Me.POHeaderPart2.Controls.Add(Me.Label11, 0, 4) - Me.POHeaderPart2.Controls.Add(Me.THBanner, 1, 3) - Me.POHeaderPart2.Controls.Add(Me.THStageFile, 1, 2) - Me.POHeaderPart2.Controls.Add(Me.THSubTitle, 1, 0) - Me.POHeaderPart2.Controls.Add(Me.THSubArtist, 1, 1) - Me.POHeaderPart2.Dock = System.Windows.Forms.DockStyle.Top - Me.POHeaderPart2.Location = New System.Drawing.Point(0, 186) - Me.POHeaderPart2.Name = "POHeaderPart2" - Me.POHeaderPart2.RowCount = 10 - Me.POHeaderPart2.RowStyles.Add(New System.Windows.Forms.RowStyle()) - Me.POHeaderPart2.RowStyles.Add(New System.Windows.Forms.RowStyle()) - Me.POHeaderPart2.RowStyles.Add(New System.Windows.Forms.RowStyle()) - Me.POHeaderPart2.RowStyles.Add(New System.Windows.Forms.RowStyle()) - Me.POHeaderPart2.RowStyles.Add(New System.Windows.Forms.RowStyle()) - Me.POHeaderPart2.RowStyles.Add(New System.Windows.Forms.RowStyle()) - Me.POHeaderPart2.RowStyles.Add(New System.Windows.Forms.RowStyle()) - Me.POHeaderPart2.RowStyles.Add(New System.Windows.Forms.RowStyle()) - Me.POHeaderPart2.RowStyles.Add(New System.Windows.Forms.RowStyle()) - Me.POHeaderPart2.RowStyles.Add(New System.Windows.Forms.RowStyle()) - Me.POHeaderPart2.Size = New System.Drawing.Size(183, 233) - Me.POHeaderPart2.TabIndex = 27 - ' - 'CHDifficulty - ' - Me.POHeaderPart2.SetColumnSpan(Me.CHDifficulty, 2) - Me.CHDifficulty.Dock = System.Windows.Forms.DockStyle.Top - Me.CHDifficulty.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList - Me.CHDifficulty.FlatStyle = System.Windows.Forms.FlatStyle.System - Me.CHDifficulty.Items.AddRange(New Object() {"None", "1 - EZ / Beginner", "2 - NM / Normal", "3 - HD / Hyper", "4 - MX / Another", "5 - SC / Insane"}) - Me.CHDifficulty.Location = New System.Drawing.Point(67, 118) - Me.CHDifficulty.Margin = New System.Windows.Forms.Padding(0) - Me.CHDifficulty.Name = "CHDifficulty" - Me.CHDifficulty.Size = New System.Drawing.Size(116, 23) - Me.CHDifficulty.TabIndex = 63 - ' - 'Label13 - ' - Me.Label13.AutoSize = True - Me.Label13.Dock = System.Windows.Forms.DockStyle.Fill - Me.Label13.Location = New System.Drawing.Point(158, 141) - Me.Label13.Margin = New System.Windows.Forms.Padding(3, 0, 0, 0) - Me.Label13.Name = "Label13" - Me.Label13.Size = New System.Drawing.Size(25, 23) - Me.Label13.TabIndex = 63 - Me.Label13.Text = "(%)" - Me.Label13.TextAlign = System.Drawing.ContentAlignment.MiddleLeft - ' - 'THExRank - ' - Me.THExRank.Dock = System.Windows.Forms.DockStyle.Fill - Me.THExRank.Location = New System.Drawing.Point(67, 141) - Me.THExRank.Margin = New System.Windows.Forms.Padding(0) - Me.THExRank.Name = "THExRank" - Me.THExRank.Size = New System.Drawing.Size(88, 23) - Me.THExRank.TabIndex = 27 - ' - 'Label25 - ' - Me.Label25.AutoSize = True - Me.Label25.Dock = System.Windows.Forms.DockStyle.Fill - Me.Label25.Location = New System.Drawing.Point(158, 164) - Me.Label25.Margin = New System.Windows.Forms.Padding(3, 0, 0, 0) - Me.Label25.Name = "Label25" - Me.Label25.Size = New System.Drawing.Size(25, 23) - Me.Label25.TabIndex = 23 - Me.Label25.Text = "(%)" - Me.Label25.TextAlign = System.Drawing.ContentAlignment.MiddleLeft - ' - 'CHLnObj - ' - Me.POHeaderPart2.SetColumnSpan(Me.CHLnObj, 2) - Me.CHLnObj.Dock = System.Windows.Forms.DockStyle.Top - Me.CHLnObj.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList - Me.CHLnObj.FlatStyle = System.Windows.Forms.FlatStyle.System - Me.CHLnObj.Items.AddRange(New Object() {"None (#LnType 1)", "01", "02", "03", "04", "05", "06", "07", "08", "09", "0A", "0B", "0C", "0D", "0E", "0F", "0G", "0H", "0I", "0J", "0K", "0L", "0M", "0N", "0O", "0P", "0Q", "0R", "0S", "0T", "0U", "0V", "0W", "0X", "0Y", "0Z", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "1A", "1B", "1C", "1D", "1E", "1F", "1G", "1H", "1I", "1J", "1K", "1L", "1M", "1N", "1O", "1P", "1Q", "1R", "1S", "1T", "1U", "1V", "1W", "1X", "1Y", "1Z", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "2A", "2B", "2C", "2D", "2E", "2F", "2G", "2H", "2I", "2J", "2K", "2L", "2M", "2N", "2O", "2P", "2Q", "2R", "2S", "2T", "2U", "2V", "2W", "2X", "2Y", "2Z", "30", "31", "32", "33", "34", "35", "36", "37", "38", "39", "3A", "3B", "3C", "3D", "3E", "3F", "3G", "3H", "3I", "3J", "3K", "3L", "3M", "3N", "3O", "3P", "3Q", "3R", "3S", "3T", "3U", "3V", "3W", "3X", "3Y", "3Z", "40", "41", "42", "43", "44", "45", "46", "47", "48", "49", "4A", "4B", "4C", "4D", "4E", "4F", "4G", "4H", "4I", "4J", "4K", "4L", "4M", "4N", "4O", "4P", "4Q", "4R", "4S", "4T", "4U", "4V", "4W", "4X", "4Y", "4Z", "50", "51", "52", "53", "54", "55", "56", "57", "58", "59", "5A", "5B", "5C", "5D", "5E", "5F", "5G", "5H", "5I", "5J", "5K", "5L", "5M", "5N", "5O", "5P", "5Q", "5R", "5S", "5T", "5U", "5V", "5W", "5X", "5Y", "5Z", "60", "61", "62", "63", "64", "65", "66", "67", "68", "69", "6A", "6B", "6C", "6D", "6E", "6F", "6G", "6H", "6I", "6J", "6K", "6L", "6M", "6N", "6O", "6P", "6Q", "6R", "6S", "6T", "6U", "6V", "6W", "6X", "6Y", "6Z", "70", "71", "72", "73", "74", "75", "76", "77", "78", "79", "7A", "7B", "7C", "7D", "7E", "7F", "7G", "7H", "7I", "7J", "7K", "7L", "7M", "7N", "7O", "7P", "7Q", "7R", "7S", "7T", "7U", "7V", "7W", "7X", "7Y", "7Z", "80", "81", "82", "83", "84", "85", "86", "87", "88", "89", "8A", "8B", "8C", "8D", "8E", "8F", "8G", "8H", "8I", "8J", "8K", "8L", "8M", "8N", "8O", "8P", "8Q", "8R", "8S", "8T", "8U", "8V", "8W", "8X", "8Y", "8Z", "90", "91", "92", "93", "94", "95", "96", "97", "98", "99", "9A", "9B", "9C", "9D", "9E", "9F", "9G", "9H", "9I", "9J", "9K", "9L", "9M", "9N", "9O", "9P", "9Q", "9R", "9S", "9T", "9U", "9V", "9W", "9X", "9Y", "9Z", "A0", "A1", "A2", "A3", "A4", "A5", "A6", "A7", "A8", "A9", "AA", "AB", "AC", "AD", "AE", "AF", "AG", "AH", "AI", "AJ", "AK", "AL", "AM", "AN", "AO", "AP", "AQ", "AR", "AS", "AT", "AU", "AV", "AW", "AX", "AY", "AZ", "B0", "B1", "B2", "B3", "B4", "B5", "B6", "B7", "B8", "B9", "BA", "BB", "BC", "BD", "BE", "BF", "BG", "BH", "BI", "BJ", "BK", "BL", "BM", "BN", "BO", "BP", "BQ", "BR", "BS", "BT", "BU", "BV", "BW", "BX", "BY", "BZ", "C0", "C1", "C2", "C3", "C4", "C5", "C6", "C7", "C8", "C9", "CA", "CB", "CC", "CD", "CE", "CF", "CG", "CH", "CI", "CJ", "CK", "CL", "CM", "CN", "CO", "CP", "CQ", "CR", "CS", "CT", "CU", "CV", "CW", "CX", "CY", "CZ", "D0", "D1", "D2", "D3", "D4", "D5", "D6", "D7", "D8", "D9", "DA", "DB", "DC", "DD", "DE", "DF", "DG", "DH", "DI", "DJ", "DK", "DL", "DM", "DN", "DO", "DP", "DQ", "DR", "DS", "DT", "DU", "DV", "DW", "DX", "DY", "DZ", "E0", "E1", "E2", "E3", "E4", "E5", "E6", "E7", "E8", "E9", "EA", "EB", "EC", "ED", "EE", "EF", "EG", "EH", "EI", "EJ", "EK", "EL", "EM", "EN", "EO", "EP", "EQ", "ER", "ES", "ET", "EU", "EV", "EW", "EX", "EY", "EZ", "F0", "F1", "F2", "F3", "F4", "F5", "F6", "F7", "F8", "F9", "FA", "FB", "FC", "FD", "FE", "FF", "FG", "FH", "FI", "FJ", "FK", "FL", "FM", "FN", "FO", "FP", "FQ", "FR", "FS", "FT", "FU", "FV", "FW", "FX", "FY", "FZ", "G0", "G1", "G2", "G3", "G4", "G5", "G6", "G7", "G8", "G9", "GA", "GB", "GC", "GD", "GE", "GF", "GG", "GH", "GI", "GJ", "GK", "GL", "GM", "GN", "GO", "GP", "GQ", "GR", "GS", "GT", "GU", "GV", "GW", "GX", "GY", "GZ", "H0", "H1", "H2", "H3", "H4", "H5", "H6", "H7", "H8", "H9", "HA", "HB", "HC", "HD", "HE", "HF", "HG", "HH", "HI", "HJ", "HK", "HL", "HM", "HN", "HO", "HP", "HQ", "HR", "HS", "HT", "HU", "HV", "HW", "HX", "HY", "HZ", "I0", "I1", "I2", "I3", "I4", "I5", "I6", "I7", "I8", "I9", "IA", "IB", "IC", "ID", "IE", "IF", "IG", "IH", "II", "IJ", "IK", "IL", "IM", "IN", "IO", "IP", "IQ", "IR", "IS", "IT", "IU", "IV", "IW", "IX", "IY", "IZ", "J0", "J1", "J2", "J3", "J4", "J5", "J6", "J7", "J8", "J9", "JA", "JB", "JC", "JD", "JE", "JF", "JG", "JH", "JI", "JJ", "JK", "JL", "JM", "JN", "JO", "JP", "JQ", "JR", "JS", "JT", "JU", "JV", "JW", "JX", "JY", "JZ", "K0", "K1", "K2", "K3", "K4", "K5", "K6", "K7", "K8", "K9", "KA", "KB", "KC", "KD", "KE", "KF", "KG", "KH", "KI", "KJ", "KK", "KL", "KM", "KN", "KO", "KP", "KQ", "KR", "KS", "KT", "KU", "KV", "KW", "KX", "KY", "KZ", "L0", "L1", "L2", "L3", "L4", "L5", "L6", "L7", "L8", "L9", "LA", "LB", "LC", "LD", "LE", "LF", "LG", "LH", "LI", "LJ", "LK", "LL", "LM", "LN", "LO", "LP", "LQ", "LR", "LS", "LT", "LU", "LV", "LW", "LX", "LY", "LZ", "M0", "M1", "M2", "M3", "M4", "M5", "M6", "M7", "M8", "M9", "MA", "MB", "MC", "MD", "ME", "MF", "MG", "MH", "MI", "MJ", "MK", "ML", "MM", "MN", "MO", "MP", "MQ", "MR", "MS", "MT", "MU", "MV", "MW", "MX", "MY", "MZ", "N0", "N1", "N2", "N3", "N4", "N5", "N6", "N7", "N8", "N9", "NA", "NB", "NC", "ND", "NE", "NF", "NG", "NH", "NI", "NJ", "NK", "NL", "NM", "NN", "NO", "NP", "NQ", "NR", "NS", "NT", "NU", "NV", "NW", "NX", "NY", "NZ", "O0", "O1", "O2", "O3", "O4", "O5", "O6", "O7", "O8", "O9", "OA", "OB", "OC", "OD", "OE", "OF", "OG", "OH", "OI", "OJ", "OK", "OL", "OM", "ON", "OO", "OP", "OQ", "OR", "OS", "OT", "OU", "OV", "OW", "OX", "OY", "OZ", "P0", "P1", "P2", "P3", "P4", "P5", "P6", "P7", "P8", "P9", "PA", "PB", "PC", "PD", "PE", "PF", "PG", "PH", "PI", "PJ", "PK", "PL", "PM", "PN", "PO", "PP", "PQ", "PR", "PS", "PT", "PU", "PV", "PW", "PX", "PY", "PZ", "Q0", "Q1", "Q2", "Q3", "Q4", "Q5", "Q6", "Q7", "Q8", "Q9", "QA", "QB", "QC", "QD", "QE", "QF", "QG", "QH", "QI", "QJ", "QK", "QL", "QM", "QN", "QO", "QP", "QQ", "QR", "QS", "QT", "QU", "QV", "QW", "QX", "QY", "QZ", "R0", "R1", "R2", "R3", "R4", "R5", "R6", "R7", "R8", "R9", "RA", "RB", "RC", "RD", "RE", "RF", "RG", "RH", "RI", "RJ", "RK", "RL", "RM", "RN", "RO", "RP", "RQ", "RR", "RS", "RT", "RU", "RV", "RW", "RX", "RY", "RZ", "S0", "S1", "S2", "S3", "S4", "S5", "S6", "S7", "S8", "S9", "SA", "SB", "SC", "SD", "SE", "SF", "SG", "SH", "SI", "SJ", "SK", "SL", "SM", "SN", "SO", "SP", "SQ", "SR", "SS", "ST", "SU", "SV", "SW", "SX", "SY", "SZ", "T0", "T1", "T2", "T3", "T4", "T5", "T6", "T7", "T8", "T9", "TA", "TB", "TC", "TD", "TE", "TF", "TG", "TH", "TI", "TJ", "TK", "TL", "TM", "TN", "TO", "TP", "TQ", "TR", "TS", "TT", "TU", "TV", "TW", "TX", "TY", "TZ", "U0", "U1", "U2", "U3", "U4", "U5", "U6", "U7", "U8", "U9", "UA", "UB", "UC", "UD", "UE", "UF", "UG", "UH", "UI", "UJ", "UK", "UL", "UM", "UN", "UO", "UP", "UQ", "UR", "US", "UT", "UU", "UV", "UW", "UX", "UY", "UZ", "V0", "V1", "V2", "V3", "V4", "V5", "V6", "V7", "V8", "V9", "VA", "VB", "VC", "VD", "VE", "VF", "VG", "VH", "VI", "VJ", "VK", "VL", "VM", "VN", "VO", "VP", "VQ", "VR", "VS", "VT", "VU", "VV", "VW", "VX", "VY", "VZ", "W0", "W1", "W2", "W3", "W4", "W5", "W6", "W7", "W8", "W9", "WA", "WB", "WC", "WD", "WE", "WF", "WG", "WH", "WI", "WJ", "WK", "WL", "WM", "WN", "WO", "WP", "WQ", "WR", "WS", "WT", "WU", "WV", "WW", "WX", "WY", "WZ", "X0", "X1", "X2", "X3", "X4", "X5", "X6", "X7", "X8", "X9", "XA", "XB", "XC", "XD", "XE", "XF", "XG", "XH", "XI", "XJ", "XK", "XL", "XM", "XN", "XO", "XP", "XQ", "XR", "XS", "XT", "XU", "XV", "XW", "XX", "XY", "XZ", "Y0", "Y1", "Y2", "Y3", "Y4", "Y5", "Y6", "Y7", "Y8", "Y9", "YA", "YB", "YC", "YD", "YE", "YF", "YG", "YH", "YI", "YJ", "YK", "YL", "YM", "YN", "YO", "YP", "YQ", "YR", "YS", "YT", "YU", "YV", "YW", "YX", "YY", "YZ", "Z0", "Z1", "Z2", "Z3", "Z4", "Z5", "Z6", "Z7", "Z8", "Z9", "ZA", "ZB", "ZC", "ZD", "ZE", "ZF", "ZG", "ZH", "ZI", "ZJ", "ZK", "ZL", "ZM", "ZN", "ZO", "ZP", "ZQ", "ZR", "ZS", "ZT", "ZU", "ZV", "ZW", "ZX", "ZY", "ZZ"}) - Me.CHLnObj.Location = New System.Drawing.Point(67, 210) - Me.CHLnObj.Margin = New System.Windows.Forms.Padding(0) - Me.CHLnObj.Name = "CHLnObj" - Me.CHLnObj.Size = New System.Drawing.Size(116, 23) - Me.CHLnObj.TabIndex = 28 - ' - 'Label23 - ' - Me.Label23.Anchor = System.Windows.Forms.AnchorStyles.Right - Me.Label23.AutoSize = True - Me.Label23.Location = New System.Drawing.Point(20, 145) - Me.Label23.Name = "Label23" - Me.Label23.Size = New System.Drawing.Size(44, 15) - Me.Label23.TabIndex = 26 - Me.Label23.Text = "ExRank" - Me.Label23.TextAlign = System.Drawing.ContentAlignment.MiddleRight - ' - 'Label21 - ' - Me.Label21.Anchor = System.Windows.Forms.AnchorStyles.Right - Me.Label21.AutoSize = True - Me.Label21.Location = New System.Drawing.Point(9, 122) - Me.Label21.Name = "Label21" - Me.Label21.Size = New System.Drawing.Size(55, 15) - Me.Label21.TabIndex = 25 - Me.Label21.Text = "Difficulty" - Me.Label21.TextAlign = System.Drawing.ContentAlignment.MiddleRight - ' - 'THComment - ' - Me.POHeaderPart2.SetColumnSpan(Me.THComment, 2) - Me.THComment.Dock = System.Windows.Forms.DockStyle.Fill - Me.THComment.Location = New System.Drawing.Point(67, 187) - Me.THComment.Margin = New System.Windows.Forms.Padding(0) - Me.THComment.Name = "THComment" - Me.THComment.Size = New System.Drawing.Size(116, 23) - Me.THComment.TabIndex = 19 - ' - 'Label24 - ' - Me.Label24.Anchor = System.Windows.Forms.AnchorStyles.Right - Me.Label24.AutoSize = True - Me.Label24.Location = New System.Drawing.Point(25, 214) - Me.Label24.Name = "Label24" - Me.Label24.Size = New System.Drawing.Size(39, 15) - Me.Label24.TabIndex = 27 - Me.Label24.Text = "LnObj" - Me.Label24.TextAlign = System.Drawing.ContentAlignment.MiddleRight - ' - 'Label15 - ' - Me.Label15.Anchor = System.Windows.Forms.AnchorStyles.Right - Me.Label15.AutoSize = True - Me.Label15.Location = New System.Drawing.Point(14, 4) - Me.Label15.Name = "Label15" - Me.Label15.Size = New System.Drawing.Size(50, 15) - Me.Label15.TabIndex = 6 - Me.Label15.Text = "SubTitle" - Me.Label15.TextAlign = System.Drawing.ContentAlignment.MiddleRight - ' - 'THTotal - ' - Me.THTotal.Dock = System.Windows.Forms.DockStyle.Fill - Me.THTotal.Location = New System.Drawing.Point(67, 164) - Me.THTotal.Margin = New System.Windows.Forms.Padding(0) - Me.THTotal.Name = "THTotal" - Me.THTotal.Size = New System.Drawing.Size(88, 23) - Me.THTotal.TabIndex = 5 - ' - 'Label20 - ' - Me.Label20.Anchor = System.Windows.Forms.AnchorStyles.Right - Me.Label20.AutoSize = True - Me.Label20.Location = New System.Drawing.Point(30, 168) - Me.Label20.Name = "Label20" - Me.Label20.Size = New System.Drawing.Size(34, 15) - Me.Label20.TabIndex = 5 - Me.Label20.Text = "Total" - Me.Label20.TextAlign = System.Drawing.ContentAlignment.MiddleRight - ' - 'BHStageFile - ' - Me.BHStageFile.Dock = System.Windows.Forms.DockStyle.Fill - Me.BHStageFile.FlatStyle = System.Windows.Forms.FlatStyle.System - Me.BHStageFile.Location = New System.Drawing.Point(158, 46) - Me.BHStageFile.Margin = New System.Windows.Forms.Padding(3, 0, 0, 0) - Me.BHStageFile.Name = "BHStageFile" - Me.BHStageFile.Size = New System.Drawing.Size(25, 24) - Me.BHStageFile.TabIndex = 20 - Me.BHStageFile.Text = "..." - Me.BHStageFile.UseVisualStyleBackColor = True - ' - 'BHBanner - ' - Me.BHBanner.Dock = System.Windows.Forms.DockStyle.Fill - Me.BHBanner.FlatStyle = System.Windows.Forms.FlatStyle.System - Me.BHBanner.Location = New System.Drawing.Point(158, 70) - Me.BHBanner.Margin = New System.Windows.Forms.Padding(3, 0, 0, 0) - Me.BHBanner.Name = "BHBanner" - Me.BHBanner.Size = New System.Drawing.Size(25, 24) - Me.BHBanner.TabIndex = 21 - Me.BHBanner.Text = "..." - Me.BHBanner.UseVisualStyleBackColor = True - ' - 'Label19 - ' - Me.Label19.Anchor = System.Windows.Forms.AnchorStyles.Right - Me.Label19.AutoSize = True - Me.Label19.Location = New System.Drawing.Point(3, 191) - Me.Label19.Name = "Label19" - Me.Label19.Size = New System.Drawing.Size(61, 15) - Me.Label19.TabIndex = 13 - Me.Label19.Text = "Comment" - Me.Label19.TextAlign = System.Drawing.ContentAlignment.MiddleRight - ' - 'BHBackBMP - ' - Me.BHBackBMP.Dock = System.Windows.Forms.DockStyle.Fill - Me.BHBackBMP.FlatStyle = System.Windows.Forms.FlatStyle.System - Me.BHBackBMP.Location = New System.Drawing.Point(158, 94) - Me.BHBackBMP.Margin = New System.Windows.Forms.Padding(3, 0, 0, 0) - Me.BHBackBMP.Name = "BHBackBMP" - Me.BHBackBMP.Size = New System.Drawing.Size(25, 24) - Me.BHBackBMP.TabIndex = 22 - Me.BHBackBMP.Text = "..." - Me.BHBackBMP.UseVisualStyleBackColor = True - ' - 'Label17 - ' - Me.Label17.Anchor = System.Windows.Forms.AnchorStyles.Right - Me.Label17.AutoSize = True - Me.Label17.Location = New System.Drawing.Point(9, 27) - Me.Label17.Name = "Label17" - Me.Label17.Size = New System.Drawing.Size(55, 15) - Me.Label17.TabIndex = 7 - Me.Label17.Text = "SubArtist" - Me.Label17.TextAlign = System.Drawing.ContentAlignment.MiddleRight - ' - 'Label16 - ' - Me.Label16.Anchor = System.Windows.Forms.AnchorStyles.Right - Me.Label16.AutoSize = True - Me.Label16.Location = New System.Drawing.Point(7, 50) - Me.Label16.Name = "Label16" - Me.Label16.Size = New System.Drawing.Size(57, 15) - Me.Label16.TabIndex = 9 - Me.Label16.Text = "Stage File" - Me.Label16.TextAlign = System.Drawing.ContentAlignment.MiddleRight - ' - 'Label12 - ' - Me.Label12.Anchor = System.Windows.Forms.AnchorStyles.Right - Me.Label12.AutoSize = True - Me.Label12.Location = New System.Drawing.Point(20, 74) - Me.Label12.Name = "Label12" - Me.Label12.Size = New System.Drawing.Size(44, 15) - Me.Label12.TabIndex = 13 - Me.Label12.Text = "Banner" - Me.Label12.TextAlign = System.Drawing.ContentAlignment.MiddleRight - ' - 'THBackBMP - ' - Me.THBackBMP.Dock = System.Windows.Forms.DockStyle.Fill - Me.THBackBMP.Location = New System.Drawing.Point(67, 94) - Me.THBackBMP.Margin = New System.Windows.Forms.Padding(0) - Me.THBackBMP.Name = "THBackBMP" - Me.THBackBMP.Size = New System.Drawing.Size(88, 23) - Me.THBackBMP.TabIndex = 17 - ' - 'Label11 - ' - Me.Label11.Anchor = System.Windows.Forms.AnchorStyles.Right - Me.Label11.AutoSize = True - Me.Label11.Location = New System.Drawing.Point(4, 98) - Me.Label11.Name = "Label11" - Me.Label11.Size = New System.Drawing.Size(60, 15) - Me.Label11.TabIndex = 16 - Me.Label11.Text = "Back BMP" - Me.Label11.TextAlign = System.Drawing.ContentAlignment.MiddleRight - ' - 'THBanner - ' - Me.THBanner.Dock = System.Windows.Forms.DockStyle.Fill - Me.THBanner.Location = New System.Drawing.Point(67, 70) - Me.THBanner.Margin = New System.Windows.Forms.Padding(0) - Me.THBanner.Name = "THBanner" - Me.THBanner.Size = New System.Drawing.Size(88, 23) - Me.THBanner.TabIndex = 19 - ' - 'THStageFile - ' - Me.THStageFile.Dock = System.Windows.Forms.DockStyle.Fill - Me.THStageFile.Location = New System.Drawing.Point(67, 46) - Me.THStageFile.Margin = New System.Windows.Forms.Padding(0) - Me.THStageFile.Name = "THStageFile" - Me.THStageFile.Size = New System.Drawing.Size(88, 23) - Me.THStageFile.TabIndex = 18 - ' - 'THSubTitle - ' - Me.POHeaderPart2.SetColumnSpan(Me.THSubTitle, 2) - Me.THSubTitle.Dock = System.Windows.Forms.DockStyle.Fill - Me.THSubTitle.Location = New System.Drawing.Point(67, 0) - Me.THSubTitle.Margin = New System.Windows.Forms.Padding(0) - Me.THSubTitle.Name = "THSubTitle" - Me.THSubTitle.Size = New System.Drawing.Size(116, 23) - Me.THSubTitle.TabIndex = 6 - ' - 'THSubArtist - ' - Me.POHeaderPart2.SetColumnSpan(Me.THSubArtist, 2) - Me.THSubArtist.Dock = System.Windows.Forms.DockStyle.Fill - Me.THSubArtist.Location = New System.Drawing.Point(67, 23) - Me.THSubArtist.Margin = New System.Windows.Forms.Padding(0) - Me.THSubArtist.Name = "THSubArtist" - Me.THSubArtist.Size = New System.Drawing.Size(116, 23) - Me.THSubArtist.TabIndex = 7 - ' - 'POHeaderExpander - ' - Me.POHeaderExpander.Appearance = System.Windows.Forms.Appearance.Button - Me.POHeaderExpander.AutoSize = True - Me.POHeaderExpander.Cursor = System.Windows.Forms.Cursors.Hand - Me.POHeaderExpander.Dock = System.Windows.Forms.DockStyle.Top - Me.POHeaderExpander.FlatAppearance.BorderSize = 0 - Me.POHeaderExpander.FlatStyle = System.Windows.Forms.FlatStyle.Popup - Me.POHeaderExpander.Location = New System.Drawing.Point(0, 161) - Me.POHeaderExpander.Margin = New System.Windows.Forms.Padding(0) - Me.POHeaderExpander.Name = "POHeaderExpander" - Me.POHeaderExpander.Size = New System.Drawing.Size(183, 25) - Me.POHeaderExpander.TabIndex = 26 - Me.POHeaderExpander.TabStop = False - Me.POHeaderExpander.Text = "Expand..." - Me.POHeaderExpander.TextAlign = System.Drawing.ContentAlignment.MiddleCenter - Me.POHeaderExpander.UseVisualStyleBackColor = False - ' - 'POHeaderPart1 - ' - Me.POHeaderPart1.AutoSize = True - Me.POHeaderPart1.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink - Me.POHeaderPart1.ColumnCount = 2 - Me.POHeaderPart1.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle()) - Me.POHeaderPart1.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100.0!)) - Me.POHeaderPart1.Controls.Add(Me.Label3, 0, 0) - Me.POHeaderPart1.Controls.Add(Me.THPlayLevel, 1, 6) - Me.POHeaderPart1.Controls.Add(Me.CHRank, 1, 5) - Me.POHeaderPart1.Controls.Add(Me.Label10, 0, 5) - Me.POHeaderPart1.Controls.Add(Me.CHPlayer, 1, 4) - Me.POHeaderPart1.Controls.Add(Me.Label4, 0, 1) - Me.POHeaderPart1.Controls.Add(Me.THGenre, 1, 2) - Me.POHeaderPart1.Controls.Add(Me.THBPM, 1, 3) - Me.POHeaderPart1.Controls.Add(Me.Label2, 0, 2) - Me.POHeaderPart1.Controls.Add(Me.THArtist, 1, 1) - Me.POHeaderPart1.Controls.Add(Me.THTitle, 1, 0) - Me.POHeaderPart1.Controls.Add(Me.Label9, 0, 3) - Me.POHeaderPart1.Controls.Add(Me.Label8, 0, 4) - Me.POHeaderPart1.Controls.Add(Me.Label6, 0, 6) - Me.POHeaderPart1.Dock = System.Windows.Forms.DockStyle.Top - Me.POHeaderPart1.Location = New System.Drawing.Point(0, 0) - Me.POHeaderPart1.Name = "POHeaderPart1" - Me.POHeaderPart1.RowCount = 7 - Me.POHeaderPart1.RowStyles.Add(New System.Windows.Forms.RowStyle()) - Me.POHeaderPart1.RowStyles.Add(New System.Windows.Forms.RowStyle()) - Me.POHeaderPart1.RowStyles.Add(New System.Windows.Forms.RowStyle()) - Me.POHeaderPart1.RowStyles.Add(New System.Windows.Forms.RowStyle()) - Me.POHeaderPart1.RowStyles.Add(New System.Windows.Forms.RowStyle()) - Me.POHeaderPart1.RowStyles.Add(New System.Windows.Forms.RowStyle()) - Me.POHeaderPart1.RowStyles.Add(New System.Windows.Forms.RowStyle()) - Me.POHeaderPart1.Size = New System.Drawing.Size(183, 161) - Me.POHeaderPart1.TabIndex = 25 - ' - 'Label3 - ' - Me.Label3.Anchor = System.Windows.Forms.AnchorStyles.Right - Me.Label3.AutoSize = True - Me.Label3.Location = New System.Drawing.Point(32, 4) - Me.Label3.Name = "Label3" - Me.Label3.Size = New System.Drawing.Size(30, 15) - Me.Label3.TabIndex = 6 - Me.Label3.Text = "Title" - Me.Label3.TextAlign = System.Drawing.ContentAlignment.MiddleRight - ' - 'THPlayLevel - ' - Me.THPlayLevel.Dock = System.Windows.Forms.DockStyle.Fill - Me.THPlayLevel.Location = New System.Drawing.Point(65, 138) - Me.THPlayLevel.Margin = New System.Windows.Forms.Padding(0) - Me.THPlayLevel.Name = "THPlayLevel" - Me.THPlayLevel.Size = New System.Drawing.Size(118, 23) - Me.THPlayLevel.TabIndex = 8 - ' - 'CHRank - ' - Me.CHRank.Dock = System.Windows.Forms.DockStyle.Top - Me.CHRank.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList - Me.CHRank.FlatStyle = System.Windows.Forms.FlatStyle.System - Me.CHRank.Items.AddRange(New Object() {"0 - Very Hard", "1 - Hard", "2 - Normal", "3 - Easy", "4 - Very Easy"}) - Me.CHRank.Location = New System.Drawing.Point(65, 115) - Me.CHRank.Margin = New System.Windows.Forms.Padding(0) - Me.CHRank.Name = "CHRank" - Me.CHRank.Size = New System.Drawing.Size(118, 23) - Me.CHRank.TabIndex = 15 - ' - 'Label10 - ' - Me.Label10.Anchor = System.Windows.Forms.AnchorStyles.Right - Me.Label10.AutoSize = True - Me.Label10.Location = New System.Drawing.Point(29, 119) - Me.Label10.Name = "Label10" - Me.Label10.Size = New System.Drawing.Size(33, 15) - Me.Label10.TabIndex = 16 - Me.Label10.Text = "Rank" - Me.Label10.TextAlign = System.Drawing.ContentAlignment.MiddleRight - ' - 'CHPlayer - ' - Me.CHPlayer.Dock = System.Windows.Forms.DockStyle.Top - Me.CHPlayer.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList - Me.CHPlayer.FlatStyle = System.Windows.Forms.FlatStyle.System - Me.CHPlayer.Items.AddRange(New Object() {"1 - Single Play", "2 - Couple Play", "3 - Double Play"}) - Me.CHPlayer.Location = New System.Drawing.Point(65, 92) - Me.CHPlayer.Margin = New System.Windows.Forms.Padding(0) - Me.CHPlayer.Name = "CHPlayer" - Me.CHPlayer.Size = New System.Drawing.Size(118, 23) - Me.CHPlayer.TabIndex = 14 - ' - 'Label4 - ' - Me.Label4.Anchor = System.Windows.Forms.AnchorStyles.Right - Me.Label4.AutoSize = True - Me.Label4.Location = New System.Drawing.Point(27, 27) - Me.Label4.Name = "Label4" - Me.Label4.Size = New System.Drawing.Size(35, 15) - Me.Label4.TabIndex = 7 - Me.Label4.Text = "Artist" - Me.Label4.TextAlign = System.Drawing.ContentAlignment.MiddleRight - ' - 'THGenre - ' - Me.THGenre.Dock = System.Windows.Forms.DockStyle.Fill - Me.THGenre.Location = New System.Drawing.Point(65, 46) - Me.THGenre.Margin = New System.Windows.Forms.Padding(0) - Me.THGenre.Name = "THGenre" - Me.THGenre.Size = New System.Drawing.Size(118, 23) - Me.THGenre.TabIndex = 5 - ' - 'THBPM - ' - Me.THBPM.DecimalPlaces = 4 - Me.THBPM.Dock = System.Windows.Forms.DockStyle.Fill - Me.THBPM.Increment = New Decimal(New Integer() {10, 0, 0, 0}) - Me.THBPM.Location = New System.Drawing.Point(65, 69) - Me.THBPM.Margin = New System.Windows.Forms.Padding(0) - Me.THBPM.Maximum = New Decimal(New Integer() {655359999, 0, 0, 262144}) - Me.THBPM.Minimum = New Decimal(New Integer() {1, 0, 0, 262144}) - Me.THBPM.Name = "THBPM" - Me.THBPM.Size = New System.Drawing.Size(118, 23) - Me.THBPM.TabIndex = 10 - Me.THBPM.Value = New Decimal(New Integer() {120, 0, 0, 0}) - ' - 'Label2 - ' - Me.Label2.Anchor = System.Windows.Forms.AnchorStyles.Right - Me.Label2.AutoSize = True - Me.Label2.Location = New System.Drawing.Point(24, 50) - Me.Label2.Name = "Label2" - Me.Label2.Size = New System.Drawing.Size(38, 15) - Me.Label2.TabIndex = 5 - Me.Label2.Text = "Genre" - Me.Label2.TextAlign = System.Drawing.ContentAlignment.MiddleRight - ' - 'THArtist - ' - Me.THArtist.Dock = System.Windows.Forms.DockStyle.Fill - Me.THArtist.Location = New System.Drawing.Point(65, 23) - Me.THArtist.Margin = New System.Windows.Forms.Padding(0) - Me.THArtist.Name = "THArtist" - Me.THArtist.Size = New System.Drawing.Size(118, 23) - Me.THArtist.TabIndex = 7 - ' - 'THTitle - ' - Me.THTitle.Dock = System.Windows.Forms.DockStyle.Fill - Me.THTitle.Location = New System.Drawing.Point(65, 0) - Me.THTitle.Margin = New System.Windows.Forms.Padding(0) - Me.THTitle.Name = "THTitle" - Me.THTitle.Size = New System.Drawing.Size(118, 23) - Me.THTitle.TabIndex = 6 - ' - 'Label9 - ' - Me.Label9.Anchor = System.Windows.Forms.AnchorStyles.Right - Me.Label9.AutoSize = True - Me.Label9.Location = New System.Drawing.Point(30, 73) - Me.Label9.Name = "Label9" - Me.Label9.Size = New System.Drawing.Size(32, 15) - Me.Label9.TabIndex = 9 - Me.Label9.Text = "BPM" - Me.Label9.TextAlign = System.Drawing.ContentAlignment.MiddleRight - ' - 'Label8 - ' - Me.Label8.Anchor = System.Windows.Forms.AnchorStyles.Right - Me.Label8.AutoSize = True - Me.Label8.Location = New System.Drawing.Point(23, 96) - Me.Label8.Name = "Label8" - Me.Label8.Size = New System.Drawing.Size(39, 15) - Me.Label8.TabIndex = 13 - Me.Label8.Text = "Player" - Me.Label8.TextAlign = System.Drawing.ContentAlignment.MiddleRight - ' - 'Label6 - ' - Me.Label6.Anchor = System.Windows.Forms.AnchorStyles.Right - Me.Label6.AutoSize = True - Me.Label6.Location = New System.Drawing.Point(3, 142) - Me.Label6.Name = "Label6" - Me.Label6.Size = New System.Drawing.Size(59, 15) - Me.Label6.TabIndex = 8 - Me.Label6.Text = "Play Level" - Me.Label6.TextAlign = System.Drawing.ContentAlignment.MiddleRight - ' - 'POHeaderSwitch - ' - Me.POHeaderSwitch.Appearance = System.Windows.Forms.Appearance.Button - Me.POHeaderSwitch.BackColor = System.Drawing.SystemColors.Control - Me.POHeaderSwitch.Checked = True - Me.POHeaderSwitch.CheckState = System.Windows.Forms.CheckState.Checked - Me.POHeaderSwitch.Cursor = System.Windows.Forms.Cursors.Hand - Me.POHeaderSwitch.Dock = System.Windows.Forms.DockStyle.Top - Me.POHeaderSwitch.Font = New System.Drawing.Font("Segoe UI", 9.0!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) - Me.POHeaderSwitch.Location = New System.Drawing.Point(0, 0) - Me.POHeaderSwitch.Name = "POHeaderSwitch" - Me.POHeaderSwitch.Size = New System.Drawing.Size(183, 20) - Me.POHeaderSwitch.TabIndex = 1 - Me.POHeaderSwitch.TabStop = False - Me.POHeaderSwitch.Text = "Header" - Me.POHeaderSwitch.TextAlign = System.Drawing.ContentAlignment.MiddleCenter - Me.POHeaderSwitch.UseCompatibleTextRendering = True - Me.POHeaderSwitch.UseVisualStyleBackColor = False - ' - 'Timer1 - ' - Me.Timer1.Interval = 15 - ' - 'Menu1 - ' - Me.Menu1.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.MInsert, Me.MRemove}) - Me.Menu1.Name = "Menu1" - Me.Menu1.Size = New System.Drawing.Size(166, 48) - ' - 'MInsert - ' - Me.MInsert.Image = Global.iBMSC.My.Resources.Resources.x16Add - Me.MInsert.Name = "MInsert" - Me.MInsert.Size = New System.Drawing.Size(165, 22) - Me.MInsert.Text = "Insert Measure" - ' - 'MRemove - ' - Me.MRemove.Image = Global.iBMSC.My.Resources.Resources.x16Remove - Me.MRemove.Name = "MRemove" - Me.MRemove.Size = New System.Drawing.Size(165, 22) - Me.MRemove.Text = "Remove Measure" - ' - 'AutoSaveTimer - ' - Me.AutoSaveTimer.Enabled = True - Me.AutoSaveTimer.Interval = 300000 - ' - 'mnMain - ' - Me.mnMain.AccessibleRole = System.Windows.Forms.AccessibleRole.MenuBar - Me.mnMain.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch - Me.mnMain.Dock = System.Windows.Forms.DockStyle.None - Me.mnMain.GripMargin = New System.Windows.Forms.Padding(2) - Me.mnMain.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.mnFile, Me.mnEdit, Me.mnSys, Me.mnOptions, Me.mnConversion, Me.mnPreview}) - Me.mnMain.LayoutStyle = System.Windows.Forms.ToolStripLayoutStyle.Flow - Me.mnMain.Location = New System.Drawing.Point(0, 0) - Me.mnMain.Name = "mnMain" - Me.mnMain.Size = New System.Drawing.Size(876, 23) - Me.mnMain.TabIndex = 57 - ' - 'mnFile - ' - Me.mnFile.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.mnNew, Me.mnOpen, Me.mnImportSM, Me.mnImportIBMSC, Me.ToolStripSeparator14, Me.mnSave, Me.mnSaveAs, Me.mnExport, Me.ToolStripSeparator15, Me.mnOpenR0, Me.mnOpenR1, Me.mnOpenR2, Me.mnOpenR3, Me.mnOpenR4, Me.ToolStripSeparator16, Me.mnQuit}) - Me.mnFile.Name = "mnFile" - Me.mnFile.Size = New System.Drawing.Size(37, 19) - Me.mnFile.Text = "&File" - ' - 'mnNew - ' - Me.mnNew.Image = Global.iBMSC.My.Resources.Resources.x16New - Me.mnNew.Name = "mnNew" - Me.mnNew.ShortcutKeys = CType((System.Windows.Forms.Keys.Control Or System.Windows.Forms.Keys.N), System.Windows.Forms.Keys) - Me.mnNew.Size = New System.Drawing.Size(199, 22) - Me.mnNew.Text = "&New" - ' - 'mnOpen - ' - Me.mnOpen.Image = Global.iBMSC.My.Resources.Resources.x16Open - Me.mnOpen.Name = "mnOpen" - Me.mnOpen.ShortcutKeys = CType((System.Windows.Forms.Keys.Control Or System.Windows.Forms.Keys.O), System.Windows.Forms.Keys) - Me.mnOpen.Size = New System.Drawing.Size(199, 22) - Me.mnOpen.Text = "&Open" - ' - 'mnImportSM - ' - Me.mnImportSM.Image = Global.iBMSC.My.Resources.Resources.x16Import2 - Me.mnImportSM.Name = "mnImportSM" - Me.mnImportSM.Size = New System.Drawing.Size(199, 22) - Me.mnImportSM.Text = "Import from .S&M file" - ' - 'mnImportIBMSC - ' - Me.mnImportIBMSC.Image = Global.iBMSC.My.Resources.Resources.x16Import2 - Me.mnImportIBMSC.Name = "mnImportIBMSC" - Me.mnImportIBMSC.Size = New System.Drawing.Size(199, 22) - Me.mnImportIBMSC.Text = "Import from .&IBMSC file" - ' - 'ToolStripSeparator14 - ' - Me.ToolStripSeparator14.Name = "ToolStripSeparator14" - Me.ToolStripSeparator14.Size = New System.Drawing.Size(196, 6) - ' - 'mnSave - ' - Me.mnSave.Image = Global.iBMSC.My.Resources.Resources.x16Save - Me.mnSave.Name = "mnSave" - Me.mnSave.ShortcutKeys = CType((System.Windows.Forms.Keys.Control Or System.Windows.Forms.Keys.S), System.Windows.Forms.Keys) - Me.mnSave.Size = New System.Drawing.Size(199, 22) - Me.mnSave.Text = "&Save" - ' - 'mnSaveAs - ' - Me.mnSaveAs.Image = Global.iBMSC.My.Resources.Resources.x16SaveAs - Me.mnSaveAs.Name = "mnSaveAs" - Me.mnSaveAs.Size = New System.Drawing.Size(199, 22) - Me.mnSaveAs.Text = "Save &As..." - ' - 'mnExport - ' - Me.mnExport.Image = Global.iBMSC.My.Resources.Resources.x16Export - Me.mnExport.Name = "mnExport" - Me.mnExport.Size = New System.Drawing.Size(199, 22) - Me.mnExport.Text = "&Export .IBMSC file" - ' - 'ToolStripSeparator15 - ' - Me.ToolStripSeparator15.Name = "ToolStripSeparator15" - Me.ToolStripSeparator15.Size = New System.Drawing.Size(196, 6) - ' - 'mnOpenR0 - ' - Me.mnOpenR0.Enabled = False - Me.mnOpenR0.Name = "mnOpenR0" - Me.mnOpenR0.Size = New System.Drawing.Size(199, 22) - Me.mnOpenR0.Tag = "0" - Me.mnOpenR0.Text = "Recent #0" - ' - 'mnOpenR1 - ' - Me.mnOpenR1.Enabled = False - Me.mnOpenR1.Name = "mnOpenR1" - Me.mnOpenR1.Size = New System.Drawing.Size(199, 22) - Me.mnOpenR1.Tag = "1" - Me.mnOpenR1.Text = "Recent #1" - ' - 'mnOpenR2 - ' - Me.mnOpenR2.Enabled = False - Me.mnOpenR2.Name = "mnOpenR2" - Me.mnOpenR2.Size = New System.Drawing.Size(199, 22) - Me.mnOpenR2.Tag = "2" - Me.mnOpenR2.Text = "Recent #2" - ' - 'mnOpenR3 - ' - Me.mnOpenR3.Enabled = False - Me.mnOpenR3.Name = "mnOpenR3" - Me.mnOpenR3.Size = New System.Drawing.Size(199, 22) - Me.mnOpenR3.Tag = "3" - Me.mnOpenR3.Text = "Recent #3" - ' - 'mnOpenR4 - ' - Me.mnOpenR4.Enabled = False - Me.mnOpenR4.Name = "mnOpenR4" - Me.mnOpenR4.Size = New System.Drawing.Size(199, 22) - Me.mnOpenR4.Tag = "4" - Me.mnOpenR4.Text = "Recent #4" - ' - 'ToolStripSeparator16 - ' - Me.ToolStripSeparator16.Name = "ToolStripSeparator16" - Me.ToolStripSeparator16.Size = New System.Drawing.Size(196, 6) - ' - 'mnQuit - ' - Me.mnQuit.Name = "mnQuit" - Me.mnQuit.Size = New System.Drawing.Size(199, 22) - Me.mnQuit.Text = "&Quit" - ' - 'mnEdit - ' - Me.mnEdit.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.mnUndo, Me.mnRedo, Me.ToolStripSeparator17, Me.mnCut, Me.mnCopy, Me.mnPaste, Me.mnDelete, Me.mnSelectAll, Me.mnGotoMeasure, Me.ToolStripSeparator18, Me.mnFind, Me.mnStatistics, Me.ToolStripSeparator19, Me.mnTimeSelect, Me.mnSelect, Me.mnWrite, Me.ToolStripSeparator23, Me.mnMyO2}) - Me.mnEdit.Name = "mnEdit" - Me.mnEdit.Size = New System.Drawing.Size(39, 19) - Me.mnEdit.Text = "&Edit" - ' - 'mnUndo - ' - Me.mnUndo.Enabled = False - Me.mnUndo.Image = Global.iBMSC.My.Resources.Resources.x16Undo - Me.mnUndo.Name = "mnUndo" - Me.mnUndo.ShortcutKeyDisplayString = "Ctrl+Z" - Me.mnUndo.Size = New System.Drawing.Size(233, 22) - Me.mnUndo.Text = "&Undo" - ' - 'mnRedo - ' - Me.mnRedo.Enabled = False - Me.mnRedo.Image = Global.iBMSC.My.Resources.Resources.x16Redo - Me.mnRedo.Name = "mnRedo" - Me.mnRedo.ShortcutKeyDisplayString = "Ctrl+Y" - Me.mnRedo.Size = New System.Drawing.Size(233, 22) - Me.mnRedo.Text = "&Redo" - ' - 'ToolStripSeparator17 - ' - Me.ToolStripSeparator17.Name = "ToolStripSeparator17" - Me.ToolStripSeparator17.Size = New System.Drawing.Size(230, 6) - ' - 'mnCut - ' - Me.mnCut.Image = Global.iBMSC.My.Resources.Resources.x16Cut - Me.mnCut.Name = "mnCut" - Me.mnCut.ShortcutKeyDisplayString = "Ctrl+X" - Me.mnCut.Size = New System.Drawing.Size(233, 22) - Me.mnCut.Text = "Cu&t" - ' - 'mnCopy - ' - Me.mnCopy.Image = Global.iBMSC.My.Resources.Resources.x16Copy - Me.mnCopy.Name = "mnCopy" - Me.mnCopy.ShortcutKeyDisplayString = "Ctrl+C" - Me.mnCopy.Size = New System.Drawing.Size(233, 22) - Me.mnCopy.Text = "&Copy" - ' - 'mnPaste - ' - Me.mnPaste.Image = Global.iBMSC.My.Resources.Resources.x16Paste - Me.mnPaste.Name = "mnPaste" - Me.mnPaste.ShortcutKeyDisplayString = "Ctrl+V" - Me.mnPaste.Size = New System.Drawing.Size(233, 22) - Me.mnPaste.Text = "&Paste" - ' - 'mnDelete - ' - Me.mnDelete.Image = Global.iBMSC.My.Resources.Resources.x16Remove - Me.mnDelete.Name = "mnDelete" - Me.mnDelete.ShortcutKeyDisplayString = "Del" - Me.mnDelete.Size = New System.Drawing.Size(233, 22) - Me.mnDelete.Text = "De&lete" - ' - 'mnSelectAll - ' - Me.mnSelectAll.Name = "mnSelectAll" - Me.mnSelectAll.ShortcutKeyDisplayString = "Ctrl+A" - Me.mnSelectAll.Size = New System.Drawing.Size(233, 22) - Me.mnSelectAll.Text = "Select &All" - ' - 'mnGotoMeasure - ' - Me.mnGotoMeasure.Name = "mnGotoMeasure" - Me.mnGotoMeasure.ShortcutKeys = CType((System.Windows.Forms.Keys.Control Or System.Windows.Forms.Keys.G), System.Windows.Forms.Keys) - Me.mnGotoMeasure.Size = New System.Drawing.Size(233, 22) - Me.mnGotoMeasure.Text = "Go To Measure..." - ' - 'ToolStripSeparator18 - ' - Me.ToolStripSeparator18.Name = "ToolStripSeparator18" - Me.ToolStripSeparator18.Size = New System.Drawing.Size(230, 6) - ' - 'mnFind - ' - Me.mnFind.Image = Global.iBMSC.My.Resources.Resources.x16Find - Me.mnFind.Name = "mnFind" - Me.mnFind.ShortcutKeyDisplayString = "Ctrl+F" - Me.mnFind.Size = New System.Drawing.Size(233, 22) - Me.mnFind.Text = "&Find / Delete / Replace" - ' - 'mnStatistics - ' - Me.mnStatistics.Image = Global.iBMSC.My.Resources.Resources.x16Statistics - Me.mnStatistics.Name = "mnStatistics" - Me.mnStatistics.ShortcutKeyDisplayString = "Ctrl+T" - Me.mnStatistics.Size = New System.Drawing.Size(233, 22) - Me.mnStatistics.Text = "St&atistics" - ' - 'ToolStripSeparator19 - ' - Me.ToolStripSeparator19.Name = "ToolStripSeparator19" - Me.ToolStripSeparator19.Size = New System.Drawing.Size(230, 6) - ' - 'mnTimeSelect - ' - Me.mnTimeSelect.CheckOnClick = True - Me.mnTimeSelect.Image = Global.iBMSC.My.Resources.Resources.x16TimeSelection - Me.mnTimeSelect.Name = "mnTimeSelect" - Me.mnTimeSelect.ShortcutKeys = System.Windows.Forms.Keys.F1 - Me.mnTimeSelect.Size = New System.Drawing.Size(233, 22) - Me.mnTimeSelect.Text = "T&ime Selection Tool" - ' - 'mnSelect - ' - Me.mnSelect.Checked = True - Me.mnSelect.CheckOnClick = True - Me.mnSelect.CheckState = System.Windows.Forms.CheckState.Checked - Me.mnSelect.Image = Global.iBMSC.My.Resources.Resources.x16Select - Me.mnSelect.Name = "mnSelect" - Me.mnSelect.ShortcutKeys = System.Windows.Forms.Keys.F2 - Me.mnSelect.Size = New System.Drawing.Size(233, 22) - Me.mnSelect.Text = "&Select Tool" - ' - 'mnWrite - ' - Me.mnWrite.CheckOnClick = True - Me.mnWrite.Image = Global.iBMSC.My.Resources.Resources.x16Pen - Me.mnWrite.Name = "mnWrite" - Me.mnWrite.ShortcutKeys = System.Windows.Forms.Keys.F3 - Me.mnWrite.Size = New System.Drawing.Size(233, 22) - Me.mnWrite.Text = "&Write Tool" - ' - 'ToolStripSeparator23 - ' - Me.ToolStripSeparator23.Name = "ToolStripSeparator23" - Me.ToolStripSeparator23.Size = New System.Drawing.Size(230, 6) - ' - 'mnMyO2 - ' - Me.mnMyO2.Image = Global.iBMSC.My.Resources.Resources.x16MyO2 - Me.mnMyO2.Name = "mnMyO2" - Me.mnMyO2.Size = New System.Drawing.Size(233, 22) - Me.mnMyO2.Text = "MyO2 ToolBox (Chinese Only)" - ' - 'mnSys - ' - Me.mnSys.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.mnSMenu, Me.mnSTB, Me.mnSOP, Me.mnSStatus, Me.mnSLSplitter, Me.mnSRSplitter, Me.ToolStripSeparator21, Me.CGShow, Me.CGShowS, Me.CGShowBG, Me.CGShowM, Me.CGShowMB, Me.CGShowV, Me.CGShowC, Me.ToolStripSeparator22, Me.CGBPM, Me.CGSTOP, Me.CGSCROLL, Me.CGBLP}) - Me.mnSys.Name = "mnSys" - Me.mnSys.Size = New System.Drawing.Size(44, 19) - Me.mnSys.Text = "&View" - ' - 'mnSMenu - ' - Me.mnSMenu.Checked = True - Me.mnSMenu.CheckOnClick = True - Me.mnSMenu.CheckState = System.Windows.Forms.CheckState.Checked - Me.mnSMenu.Name = "mnSMenu" - Me.mnSMenu.Size = New System.Drawing.Size(172, 22) - Me.mnSMenu.Text = "&Main Menu" - Me.mnSMenu.Visible = False - ' - 'mnSTB - ' - Me.mnSTB.Checked = True - Me.mnSTB.CheckOnClick = True - Me.mnSTB.CheckState = System.Windows.Forms.CheckState.Checked - Me.mnSTB.Name = "mnSTB" - Me.mnSTB.Size = New System.Drawing.Size(172, 22) - Me.mnSTB.Text = "&ToolBar" - ' - 'mnSOP - ' - Me.mnSOP.Checked = True - Me.mnSOP.CheckOnClick = True - Me.mnSOP.CheckState = System.Windows.Forms.CheckState.Checked - Me.mnSOP.Name = "mnSOP" - Me.mnSOP.Size = New System.Drawing.Size(172, 22) - Me.mnSOP.Text = "&Options Panel" - ' - 'mnSStatus - ' - Me.mnSStatus.Checked = True - Me.mnSStatus.CheckOnClick = True - Me.mnSStatus.CheckState = System.Windows.Forms.CheckState.Checked - Me.mnSStatus.Name = "mnSStatus" - Me.mnSStatus.Size = New System.Drawing.Size(172, 22) - Me.mnSStatus.Text = "&Status Bar" - ' - 'mnSLSplitter - ' - Me.mnSLSplitter.CheckOnClick = True - Me.mnSLSplitter.Name = "mnSLSplitter" - Me.mnSLSplitter.Size = New System.Drawing.Size(172, 22) - Me.mnSLSplitter.Text = "&Left Splitter" - ' - 'mnSRSplitter - ' - Me.mnSRSplitter.CheckOnClick = True - Me.mnSRSplitter.Name = "mnSRSplitter" - Me.mnSRSplitter.Size = New System.Drawing.Size(172, 22) - Me.mnSRSplitter.Text = "&Right Splitter" - ' - 'ToolStripSeparator21 - ' - Me.ToolStripSeparator21.Name = "ToolStripSeparator21" - Me.ToolStripSeparator21.Size = New System.Drawing.Size(169, 6) - ' - 'CGShow - ' - Me.CGShow.Checked = True - Me.CGShow.CheckOnClick = True - Me.CGShow.CheckState = System.Windows.Forms.CheckState.Checked - Me.CGShow.Name = "CGShow" - Me.CGShow.Size = New System.Drawing.Size(172, 22) - Me.CGShow.Text = "Grid" - ' - 'CGShowS - ' - Me.CGShowS.Checked = True - Me.CGShowS.CheckOnClick = True - Me.CGShowS.CheckState = System.Windows.Forms.CheckState.Checked - Me.CGShowS.Name = "CGShowS" - Me.CGShowS.Size = New System.Drawing.Size(172, 22) - Me.CGShowS.Text = "Sub" - ' - 'CGShowBG - ' - Me.CGShowBG.Checked = True - Me.CGShowBG.CheckOnClick = True - Me.CGShowBG.CheckState = System.Windows.Forms.CheckState.Checked - Me.CGShowBG.Name = "CGShowBG" - Me.CGShowBG.Size = New System.Drawing.Size(172, 22) - Me.CGShowBG.Text = "BackGround" - ' - 'CGShowM - ' - Me.CGShowM.Checked = True - Me.CGShowM.CheckOnClick = True - Me.CGShowM.CheckState = System.Windows.Forms.CheckState.Checked - Me.CGShowM.Name = "CGShowM" - Me.CGShowM.Size = New System.Drawing.Size(172, 22) - Me.CGShowM.Text = "Measure Index" - ' - 'CGShowMB - ' - Me.CGShowMB.Checked = True - Me.CGShowMB.CheckOnClick = True - Me.CGShowMB.CheckState = System.Windows.Forms.CheckState.Checked - Me.CGShowMB.Name = "CGShowMB" - Me.CGShowMB.Size = New System.Drawing.Size(172, 22) - Me.CGShowMB.Text = "Measure Line" - ' - 'CGShowV - ' - Me.CGShowV.Checked = True - Me.CGShowV.CheckOnClick = True - Me.CGShowV.CheckState = System.Windows.Forms.CheckState.Checked - Me.CGShowV.Name = "CGShowV" - Me.CGShowV.Size = New System.Drawing.Size(172, 22) - Me.CGShowV.Text = "Vertical Line" - ' - 'CGShowC - ' - Me.CGShowC.Checked = True - Me.CGShowC.CheckOnClick = True - Me.CGShowC.CheckState = System.Windows.Forms.CheckState.Checked - Me.CGShowC.Name = "CGShowC" - Me.CGShowC.Size = New System.Drawing.Size(172, 22) - Me.CGShowC.Text = "Column Caption" - ' - 'ToolStripSeparator22 - ' - Me.ToolStripSeparator22.Name = "ToolStripSeparator22" - Me.ToolStripSeparator22.Size = New System.Drawing.Size(169, 6) - ' - 'CGBPM - ' - Me.CGBPM.Checked = True - Me.CGBPM.CheckOnClick = True - Me.CGBPM.CheckState = System.Windows.Forms.CheckState.Checked - Me.CGBPM.Name = "CGBPM" - Me.CGBPM.Size = New System.Drawing.Size(172, 22) - Me.CGBPM.Text = "BPM" - ' - 'CGSTOP - ' - Me.CGSTOP.Checked = True - Me.CGSTOP.CheckOnClick = True - Me.CGSTOP.CheckState = System.Windows.Forms.CheckState.Checked - Me.CGSTOP.Name = "CGSTOP" - Me.CGSTOP.Size = New System.Drawing.Size(172, 22) - Me.CGSTOP.Text = "STOP" - ' - 'CGSCROLL - ' - Me.CGSCROLL.Checked = True - Me.CGSCROLL.CheckOnClick = True - Me.CGSCROLL.CheckState = System.Windows.Forms.CheckState.Checked - Me.CGSCROLL.Name = "CGSCROLL" - Me.CGSCROLL.Size = New System.Drawing.Size(172, 22) - Me.CGSCROLL.Text = "SCROLL" - ' - 'CGBLP - ' - Me.CGBLP.Checked = True - Me.CGBLP.CheckOnClick = True - Me.CGBLP.Name = "CGBLP" - Me.CGBLP.Size = New System.Drawing.Size(172, 22) - Me.CGBLP.Text = "BGA / Layer / Poor" - ' - 'mnOptions - ' - Me.mnOptions.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.mnNTInput, Me.mnErrorCheck, Me.mnPreviewOnClick, Me.mnShowFileName, Me.ToolStripSeparator20, Me.mnGOptions, Me.mnVOptions, Me.mnPOptions, Me.mnLanguage, Me.mnTheme}) - Me.mnOptions.Name = "mnOptions" - Me.mnOptions.Size = New System.Drawing.Size(61, 19) - Me.mnOptions.Text = "&Options" - ' - 'mnNTInput - ' - Me.mnNTInput.Checked = True - Me.mnNTInput.CheckOnClick = True - Me.mnNTInput.CheckState = System.Windows.Forms.CheckState.Checked - Me.mnNTInput.Image = Global.iBMSC.My.Resources.Resources.x16NTInput - Me.mnNTInput.Name = "mnNTInput" - Me.mnNTInput.ShortcutKeys = System.Windows.Forms.Keys.F8 - Me.mnNTInput.Size = New System.Drawing.Size(229, 22) - Me.mnNTInput.Text = "L&N Input Style - NT/BMSE" - ' - 'mnErrorCheck - ' - Me.mnErrorCheck.Checked = True - Me.mnErrorCheck.CheckOnClick = True - Me.mnErrorCheck.CheckState = System.Windows.Forms.CheckState.Checked - Me.mnErrorCheck.Image = Global.iBMSC.My.Resources.Resources.x16CheckError - Me.mnErrorCheck.Name = "mnErrorCheck" - Me.mnErrorCheck.Size = New System.Drawing.Size(229, 22) - Me.mnErrorCheck.Text = "&Error Check" - ' - 'mnPreviewOnClick - ' - Me.mnPreviewOnClick.Checked = True - Me.mnPreviewOnClick.CheckOnClick = True - Me.mnPreviewOnClick.CheckState = System.Windows.Forms.CheckState.Checked - Me.mnPreviewOnClick.Image = Global.iBMSC.My.Resources.Resources.x16PreviewOnClick - Me.mnPreviewOnClick.Name = "mnPreviewOnClick" - Me.mnPreviewOnClick.Size = New System.Drawing.Size(229, 22) - Me.mnPreviewOnClick.Text = "Preview on &Click" - ' - 'mnShowFileName - ' - Me.mnShowFileName.CheckOnClick = True - Me.mnShowFileName.Image = Global.iBMSC.My.Resources.Resources.x16ShowFileNameN - Me.mnShowFileName.Name = "mnShowFileName" - Me.mnShowFileName.Size = New System.Drawing.Size(229, 22) - Me.mnShowFileName.Text = "Show &File Name on Notes" - ' - 'ToolStripSeparator20 - ' - Me.ToolStripSeparator20.Name = "ToolStripSeparator20" - Me.ToolStripSeparator20.Size = New System.Drawing.Size(226, 6) - ' - 'mnGOptions - ' - Me.mnGOptions.Image = Global.iBMSC.My.Resources.Resources.x16GeneralOptions - Me.mnGOptions.Name = "mnGOptions" - Me.mnGOptions.Size = New System.Drawing.Size(229, 22) - Me.mnGOptions.Text = "&General Options" - ' - 'mnVOptions - ' - Me.mnVOptions.Image = Global.iBMSC.My.Resources.Resources.x16VisualOptions - Me.mnVOptions.Name = "mnVOptions" - Me.mnVOptions.Size = New System.Drawing.Size(229, 22) - Me.mnVOptions.Text = "&Visual Options" - ' - 'mnPOptions - ' - Me.mnPOptions.Image = Global.iBMSC.My.Resources.Resources.x16PlayerOptions - Me.mnPOptions.Name = "mnPOptions" - Me.mnPOptions.Size = New System.Drawing.Size(229, 22) - Me.mnPOptions.Text = "&Player Options" - ' - 'mnConversion - ' - Me.mnConversion.DropDown = Me.cmnConversion - Me.mnConversion.Name = "mnConversion" - Me.mnConversion.Size = New System.Drawing.Size(84, 19) - Me.mnConversion.Text = "&Conversions" - ' - 'cmnConversion - ' - Me.cmnConversion.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.POBLong, Me.POBShort, Me.POBLongShort, Me.ToolStripSeparator10, Me.POBHidden, Me.POBVisible, Me.POBHiddenVisible, Me.ToolStripSeparator11, Me.POBModify, Me.POBMirror}) - Me.cmnConversion.Name = "cmnLanguage" - Me.cmnConversion.OwnerItem = Me.POConvert - Me.cmnConversion.Size = New System.Drawing.Size(222, 192) - ' - 'POBLong - ' - Me.POBLong.Enabled = False - Me.POBLong.Image = Global.iBMSC.My.Resources.Resources.ConvertNotesL - Me.POBLong.Name = "POBLong" - Me.POBLong.Size = New System.Drawing.Size(221, 22) - Me.POBLong.Text = "→ &Long Note" - ' - 'POBShort - ' - Me.POBShort.Image = Global.iBMSC.My.Resources.Resources.ConvertNotesN - Me.POBShort.Name = "POBShort" - Me.POBShort.Size = New System.Drawing.Size(221, 22) - Me.POBShort.Text = "→ &Short Note" - ' - 'POBLongShort - ' - Me.POBLongShort.Enabled = False - Me.POBLongShort.Image = Global.iBMSC.My.Resources.Resources.ConvertNotes - Me.POBLongShort.Name = "POBLongShort" - Me.POBLongShort.Size = New System.Drawing.Size(221, 22) - Me.POBLongShort.Text = "Long Note ↔ Short Note" - ' - 'ToolStripSeparator10 - ' - Me.ToolStripSeparator10.Name = "ToolStripSeparator10" - Me.ToolStripSeparator10.Size = New System.Drawing.Size(218, 6) - ' - 'POBHidden - ' - Me.POBHidden.Image = Global.iBMSC.My.Resources.Resources.ConvertNotesH - Me.POBHidden.Name = "POBHidden" - Me.POBHidden.Size = New System.Drawing.Size(221, 22) - Me.POBHidden.Text = "→ &Hidden Note" - ' - 'POBVisible - ' - Me.POBVisible.Image = Global.iBMSC.My.Resources.Resources.ConvertNotesV - Me.POBVisible.Name = "POBVisible" - Me.POBVisible.Size = New System.Drawing.Size(221, 22) - Me.POBVisible.Text = "→ &Visible Note" - ' - 'POBHiddenVisible - ' - Me.POBHiddenVisible.Image = Global.iBMSC.My.Resources.Resources.ConvertNotesHV - Me.POBHiddenVisible.Name = "POBHiddenVisible" - Me.POBHiddenVisible.Size = New System.Drawing.Size(221, 22) - Me.POBHiddenVisible.Text = "Hidden Note ↔ Visible Note" - ' - 'ToolStripSeparator11 - ' - Me.ToolStripSeparator11.Name = "ToolStripSeparator11" - Me.ToolStripSeparator11.Size = New System.Drawing.Size(218, 6) - ' - 'POBModify - ' - Me.POBModify.Image = Global.iBMSC.My.Resources.Resources.x16ModifyLabel - Me.POBModify.Name = "POBModify" - Me.POBModify.Size = New System.Drawing.Size(221, 22) - Me.POBModify.Text = "&Modify Labels" - ' - 'POBMirror - ' - Me.POBMirror.Image = Global.iBMSC.My.Resources.Resources.x16Mirror - Me.POBMirror.Name = "POBMirror" - Me.POBMirror.Size = New System.Drawing.Size(221, 22) - Me.POBMirror.Text = "Mi&rror" - ' - 'mnPreview - ' - Me.mnPreview.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.mnPlayB, Me.mnPlay, Me.mnStop}) - Me.mnPreview.Name = "mnPreview" - Me.mnPreview.Size = New System.Drawing.Size(60, 19) - Me.mnPreview.Text = "&Preview" - ' - 'mnPlayB - ' - Me.mnPlayB.Image = Global.iBMSC.My.Resources.Resources.x16PlayB - Me.mnPlayB.Name = "mnPlayB" - Me.mnPlayB.ShortcutKeys = System.Windows.Forms.Keys.F5 - Me.mnPlayB.Size = New System.Drawing.Size(201, 22) - Me.mnPlayB.Text = "Play from &beginning" - ' - 'mnPlay - ' - Me.mnPlay.Image = Global.iBMSC.My.Resources.Resources.x16Play - Me.mnPlay.Name = "mnPlay" - Me.mnPlay.ShortcutKeys = System.Windows.Forms.Keys.F6 - Me.mnPlay.Size = New System.Drawing.Size(201, 22) - Me.mnPlay.Text = "&Play from here" - ' - 'mnStop - ' - Me.mnStop.Image = Global.iBMSC.My.Resources.Resources.x16Stop - Me.mnStop.Name = "mnStop" - Me.mnStop.ShortcutKeys = System.Windows.Forms.Keys.F7 - Me.mnStop.Size = New System.Drawing.Size(201, 22) - Me.mnStop.Text = "&Stop" - ' - 'POConvert - ' - Me.POConvert.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image - Me.POConvert.DropDown = Me.cmnConversion - Me.POConvert.Image = Global.iBMSC.My.Resources.Resources.ConvertNotes - Me.POConvert.ImageTransparentColor = System.Drawing.Color.Magenta - Me.POConvert.Name = "POConvert" - Me.POConvert.Size = New System.Drawing.Size(29, 22) - Me.POConvert.Text = "Convert Notes" - ' - 'TBMain - ' - Me.TBMain.AccessibleRole = System.Windows.Forms.AccessibleRole.ToolBar - Me.TBMain.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch - Me.TBMain.Dock = System.Windows.Forms.DockStyle.None - Me.TBMain.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.TBNew, Me.TBOpen, Me.TBSave, Me.ToolStripSeparator1, Me.TBCut, Me.TBCopy, Me.TBPaste, Me.TBFind, Me.ToolStripSeparator24, Me.TBStatistics, Me.POConvert, Me.TBMyO2, Me.ToolStripSeparator4, Me.TBErrorCheck, Me.TBPreviewOnClick, Me.TBShowFileName, Me.ToolStripSeparator8, Me.TBNTInput, Me.TBWavIncrease, Me.ToolStripSeparator2, Me.TBUndo, Me.TBRedo, Me.ToolStripSeparator5, Me.TBTimeSelect, Me.TBSelect, Me.TBWrite, Me.ToolStripSeparator3, Me.TBPlayB, Me.TBPlay, Me.TBStop, Me.TBPOptions, Me.ToolStripSeparator7, Me.TBVOptions, Me.TBGOptions, Me.TBLanguage, Me.TBTheme, Me.POBStorm}) - Me.TBMain.Location = New System.Drawing.Point(3, 23) - Me.TBMain.Name = "TBMain" - Me.TBMain.Size = New System.Drawing.Size(805, 25) - Me.TBMain.TabIndex = 64 - Me.TBMain.Text = "Main Toolbar" - ' - 'TBNew - ' - Me.TBNew.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image - Me.TBNew.Image = Global.iBMSC.My.Resources.Resources.x16New - Me.TBNew.ImageTransparentColor = System.Drawing.Color.Transparent - Me.TBNew.Name = "TBNew" - Me.TBNew.Size = New System.Drawing.Size(23, 22) - Me.TBNew.Text = "New (Ctrl+N)" - ' - 'TBOpen - ' - Me.TBOpen.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image - Me.TBOpen.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.TBOpenR0, Me.TBOpenR1, Me.TBOpenR2, Me.TBOpenR3, Me.TBOpenR4, Me.ToolStripSeparator12, Me.TBImportSM, Me.TBImportIBMSC}) - Me.TBOpen.Image = Global.iBMSC.My.Resources.Resources.x16Open - Me.TBOpen.ImageTransparentColor = System.Drawing.Color.Magenta - Me.TBOpen.Name = "TBOpen" - Me.TBOpen.Size = New System.Drawing.Size(32, 22) - Me.TBOpen.Text = "Open (Ctrl+O)" - ' - 'TBOpenR0 - ' - Me.TBOpenR0.Enabled = False - Me.TBOpenR0.Name = "TBOpenR0" - Me.TBOpenR0.Size = New System.Drawing.Size(199, 22) - Me.TBOpenR0.Tag = "0" - Me.TBOpenR0.Text = "Recent #0" - ' - 'TBOpenR1 - ' - Me.TBOpenR1.Enabled = False - Me.TBOpenR1.Name = "TBOpenR1" - Me.TBOpenR1.Size = New System.Drawing.Size(199, 22) - Me.TBOpenR1.Tag = "1" - Me.TBOpenR1.Text = "Recent #1" - ' - 'TBOpenR2 - ' - Me.TBOpenR2.Enabled = False - Me.TBOpenR2.Name = "TBOpenR2" - Me.TBOpenR2.Size = New System.Drawing.Size(199, 22) - Me.TBOpenR2.Tag = "2" - Me.TBOpenR2.Text = "Recent #2" - ' - 'TBOpenR3 - ' - Me.TBOpenR3.Enabled = False - Me.TBOpenR3.Name = "TBOpenR3" - Me.TBOpenR3.Size = New System.Drawing.Size(199, 22) - Me.TBOpenR3.Tag = "3" - Me.TBOpenR3.Text = "Recent #3" - ' - 'TBOpenR4 - ' - Me.TBOpenR4.Enabled = False - Me.TBOpenR4.Name = "TBOpenR4" - Me.TBOpenR4.Size = New System.Drawing.Size(199, 22) - Me.TBOpenR4.Tag = "4" - Me.TBOpenR4.Text = "Recent #4" - ' - 'ToolStripSeparator12 - ' - Me.ToolStripSeparator12.Name = "ToolStripSeparator12" - Me.ToolStripSeparator12.Size = New System.Drawing.Size(196, 6) - ' - 'TBImportSM - ' - Me.TBImportSM.Image = Global.iBMSC.My.Resources.Resources.x16Import2 - Me.TBImportSM.Name = "TBImportSM" - Me.TBImportSM.Size = New System.Drawing.Size(199, 22) - Me.TBImportSM.Text = "Import from .SM file" - ' - 'TBImportIBMSC - ' - Me.TBImportIBMSC.Image = Global.iBMSC.My.Resources.Resources.x16Import2 - Me.TBImportIBMSC.Name = "TBImportIBMSC" - Me.TBImportIBMSC.Size = New System.Drawing.Size(199, 22) - Me.TBImportIBMSC.Text = "Import from .IBMSC file" - ' - 'TBSave - ' - Me.TBSave.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image - Me.TBSave.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.TBSaveAs, Me.TBExport}) - Me.TBSave.Image = Global.iBMSC.My.Resources.Resources.x16Save - Me.TBSave.ImageTransparentColor = System.Drawing.Color.Magenta - Me.TBSave.Name = "TBSave" - Me.TBSave.Size = New System.Drawing.Size(32, 22) - Me.TBSave.Text = "Save (Ctrl+S)" - ' - 'TBSaveAs - ' - Me.TBSaveAs.Image = Global.iBMSC.My.Resources.Resources.x16SaveAs - Me.TBSaveAs.Name = "TBSaveAs" - Me.TBSaveAs.Size = New System.Drawing.Size(167, 22) - Me.TBSaveAs.Text = "Save As..." - ' - 'TBExport - ' - Me.TBExport.Image = Global.iBMSC.My.Resources.Resources.x16Export - Me.TBExport.Name = "TBExport" - Me.TBExport.Size = New System.Drawing.Size(167, 22) - Me.TBExport.Text = "Export .IBMSC file" - ' - 'ToolStripSeparator1 - ' - Me.ToolStripSeparator1.Name = "ToolStripSeparator1" - Me.ToolStripSeparator1.Size = New System.Drawing.Size(6, 25) - ' - 'TBCut - ' - Me.TBCut.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image - Me.TBCut.Image = Global.iBMSC.My.Resources.Resources.x16Cut - Me.TBCut.ImageTransparentColor = System.Drawing.Color.Magenta - Me.TBCut.Name = "TBCut" - Me.TBCut.Size = New System.Drawing.Size(23, 22) - Me.TBCut.Text = "Cut (Ctrl+X)" - ' - 'TBCopy - ' - Me.TBCopy.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image - Me.TBCopy.Image = Global.iBMSC.My.Resources.Resources.x16Copy - Me.TBCopy.ImageTransparentColor = System.Drawing.Color.Magenta - Me.TBCopy.Name = "TBCopy" - Me.TBCopy.Size = New System.Drawing.Size(23, 22) - Me.TBCopy.Text = "Copy (Ctrl+C)" - ' - 'TBPaste - ' - Me.TBPaste.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image - Me.TBPaste.Image = Global.iBMSC.My.Resources.Resources.x16Paste - Me.TBPaste.ImageTransparentColor = System.Drawing.Color.Magenta - Me.TBPaste.Name = "TBPaste" - Me.TBPaste.Size = New System.Drawing.Size(23, 22) - Me.TBPaste.Text = "Paste (Ctrl+V)" - ' - 'TBFind - ' - Me.TBFind.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image - Me.TBFind.Image = Global.iBMSC.My.Resources.Resources.x16Find - Me.TBFind.ImageTransparentColor = System.Drawing.Color.Magenta - Me.TBFind.Name = "TBFind" - Me.TBFind.Size = New System.Drawing.Size(23, 22) - Me.TBFind.Text = "Find / Delete / Replace (Ctrl+F)" - ' - 'ToolStripSeparator24 - ' - Me.ToolStripSeparator24.Name = "ToolStripSeparator24" - Me.ToolStripSeparator24.Size = New System.Drawing.Size(6, 25) - ' - 'TBStatistics - ' - Me.TBStatistics.Font = New System.Drawing.Font("Segoe UI", 9.0!, System.Drawing.FontStyle.Bold) - Me.TBStatistics.Image = Global.iBMSC.My.Resources.Resources.x16Statistics - Me.TBStatistics.ImageTransparentColor = System.Drawing.Color.Magenta - Me.TBStatistics.Name = "TBStatistics" - Me.TBStatistics.Size = New System.Drawing.Size(34, 22) - Me.TBStatistics.Text = "0" - Me.TBStatistics.ToolTipText = "Statistics (Ctrl+T)" - ' - 'TBMyO2 - ' - Me.TBMyO2.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image - Me.TBMyO2.Image = Global.iBMSC.My.Resources.Resources.x16MyO2 - Me.TBMyO2.ImageTransparentColor = System.Drawing.Color.Magenta - Me.TBMyO2.Name = "TBMyO2" - Me.TBMyO2.Size = New System.Drawing.Size(23, 22) - Me.TBMyO2.Text = "MyO2 ToolBox (Chinese Only)" - ' - 'ToolStripSeparator4 - ' - Me.ToolStripSeparator4.Name = "ToolStripSeparator4" - Me.ToolStripSeparator4.Size = New System.Drawing.Size(6, 25) - ' - 'TBErrorCheck - ' - Me.TBErrorCheck.Checked = True - Me.TBErrorCheck.CheckOnClick = True - Me.TBErrorCheck.CheckState = System.Windows.Forms.CheckState.Checked - Me.TBErrorCheck.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image - Me.TBErrorCheck.Image = Global.iBMSC.My.Resources.Resources.x16CheckError - Me.TBErrorCheck.ImageTransparentColor = System.Drawing.Color.Magenta - Me.TBErrorCheck.Name = "TBErrorCheck" - Me.TBErrorCheck.Size = New System.Drawing.Size(23, 22) - Me.TBErrorCheck.Text = "Error Check" - ' - 'TBPreviewOnClick - ' - Me.TBPreviewOnClick.Checked = True - Me.TBPreviewOnClick.CheckOnClick = True - Me.TBPreviewOnClick.CheckState = System.Windows.Forms.CheckState.Checked - Me.TBPreviewOnClick.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image - Me.TBPreviewOnClick.Image = Global.iBMSC.My.Resources.Resources.x16PreviewOnClick - Me.TBPreviewOnClick.ImageTransparentColor = System.Drawing.Color.Magenta - Me.TBPreviewOnClick.Name = "TBPreviewOnClick" - Me.TBPreviewOnClick.Size = New System.Drawing.Size(23, 22) - Me.TBPreviewOnClick.Text = "Preview On Click" - ' - 'TBShowFileName - ' - Me.TBShowFileName.CheckOnClick = True - Me.TBShowFileName.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image - Me.TBShowFileName.Image = Global.iBMSC.My.Resources.Resources.x16ShowFileNameN - Me.TBShowFileName.ImageTransparentColor = System.Drawing.Color.Magenta - Me.TBShowFileName.Name = "TBShowFileName" - Me.TBShowFileName.Size = New System.Drawing.Size(23, 22) - Me.TBShowFileName.Text = "Show File Name on Notes" - ' - 'ToolStripSeparator8 - ' - Me.ToolStripSeparator8.Name = "ToolStripSeparator8" - Me.ToolStripSeparator8.Size = New System.Drawing.Size(6, 25) - ' - 'TBNTInput - ' - Me.TBNTInput.Checked = True - Me.TBNTInput.CheckOnClick = True - Me.TBNTInput.CheckState = System.Windows.Forms.CheckState.Checked - Me.TBNTInput.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image - Me.TBNTInput.Image = Global.iBMSC.My.Resources.Resources.x16NTInput - Me.TBNTInput.ImageTransparentColor = System.Drawing.Color.Magenta - Me.TBNTInput.Name = "TBNTInput" - Me.TBNTInput.Size = New System.Drawing.Size(23, 22) - Me.TBNTInput.Text = "LongNote Input Style - NoteTool/BMSE" - ' - 'TBWavIncrease - ' - Me.TBWavIncrease.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image - Me.TBWavIncrease.Image = CType(resources.GetObject("TBWavIncrease.Image"), System.Drawing.Image) - Me.TBWavIncrease.ImageTransparentColor = System.Drawing.Color.Magenta - Me.TBWavIncrease.Name = "TBWavIncrease" - Me.TBWavIncrease.Size = New System.Drawing.Size(23, 22) - Me.TBWavIncrease.Text = "Autoincrease WAV when writing" - ' - 'ToolStripSeparator2 - ' - Me.ToolStripSeparator2.Name = "ToolStripSeparator2" - Me.ToolStripSeparator2.Size = New System.Drawing.Size(6, 25) - ' - 'TBUndo - ' - Me.TBUndo.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image - Me.TBUndo.Enabled = False - Me.TBUndo.Image = Global.iBMSC.My.Resources.Resources.x16Undo - Me.TBUndo.ImageTransparentColor = System.Drawing.Color.Magenta - Me.TBUndo.Name = "TBUndo" - Me.TBUndo.Size = New System.Drawing.Size(23, 22) - Me.TBUndo.Text = "Undo (Ctrl+Z)" - ' - 'TBRedo - ' - Me.TBRedo.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image - Me.TBRedo.Enabled = False - Me.TBRedo.Image = Global.iBMSC.My.Resources.Resources.x16Redo - Me.TBRedo.ImageTransparentColor = System.Drawing.Color.Magenta - Me.TBRedo.Name = "TBRedo" - Me.TBRedo.Size = New System.Drawing.Size(23, 22) - Me.TBRedo.Text = "Redo (Ctrl+Y)" - ' - 'ToolStripSeparator5 - ' - Me.ToolStripSeparator5.Name = "ToolStripSeparator5" - Me.ToolStripSeparator5.Size = New System.Drawing.Size(6, 25) - ' - 'TBTimeSelect - ' - Me.TBTimeSelect.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image - Me.TBTimeSelect.Image = Global.iBMSC.My.Resources.Resources.x16TimeSelection - Me.TBTimeSelect.ImageTransparentColor = System.Drawing.Color.Magenta - Me.TBTimeSelect.Name = "TBTimeSelect" - Me.TBTimeSelect.Size = New System.Drawing.Size(23, 22) - Me.TBTimeSelect.Text = "Time Selection Tool (F1)" - ' - 'TBSelect - ' - Me.TBSelect.Checked = True - Me.TBSelect.CheckState = System.Windows.Forms.CheckState.Checked - Me.TBSelect.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image - Me.TBSelect.Image = Global.iBMSC.My.Resources.Resources.x16Select - Me.TBSelect.ImageTransparentColor = System.Drawing.Color.Magenta - Me.TBSelect.Name = "TBSelect" - Me.TBSelect.Size = New System.Drawing.Size(23, 22) - Me.TBSelect.Text = "Select Tool (F2)" - ' - 'TBWrite - ' - Me.TBWrite.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image - Me.TBWrite.Image = Global.iBMSC.My.Resources.Resources.x16Pen - Me.TBWrite.ImageTransparentColor = System.Drawing.Color.Magenta - Me.TBWrite.Name = "TBWrite" - Me.TBWrite.Size = New System.Drawing.Size(23, 22) - Me.TBWrite.Text = "Write Tool (F3)" - ' - 'ToolStripSeparator3 - ' - Me.ToolStripSeparator3.Name = "ToolStripSeparator3" - Me.ToolStripSeparator3.Size = New System.Drawing.Size(6, 25) - ' - 'TBPlayB - ' - Me.TBPlayB.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image - Me.TBPlayB.Image = Global.iBMSC.My.Resources.Resources.x16PlayB - Me.TBPlayB.ImageTransparentColor = System.Drawing.Color.Magenta - Me.TBPlayB.Name = "TBPlayB" - Me.TBPlayB.Size = New System.Drawing.Size(23, 22) - Me.TBPlayB.Text = "Play from beginning (F5)" - ' - 'TBPlay - ' - Me.TBPlay.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image - Me.TBPlay.Image = Global.iBMSC.My.Resources.Resources.x16Play - Me.TBPlay.ImageTransparentColor = System.Drawing.Color.Magenta - Me.TBPlay.Name = "TBPlay" - Me.TBPlay.Size = New System.Drawing.Size(23, 22) - Me.TBPlay.Text = "Play from here (F6)" - ' - 'TBStop - ' - Me.TBStop.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image - Me.TBStop.Image = Global.iBMSC.My.Resources.Resources.x16Stop - Me.TBStop.ImageTransparentColor = System.Drawing.Color.Magenta - Me.TBStop.Name = "TBStop" - Me.TBStop.Size = New System.Drawing.Size(23, 22) - Me.TBStop.Text = "Stop (F7)" - ' - 'TBPOptions - ' - Me.TBPOptions.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image - Me.TBPOptions.Image = Global.iBMSC.My.Resources.Resources.x16PlayerOptions - Me.TBPOptions.ImageTransparentColor = System.Drawing.Color.Magenta - Me.TBPOptions.Name = "TBPOptions" - Me.TBPOptions.Size = New System.Drawing.Size(23, 22) - Me.TBPOptions.Text = "Player Options" - ' - 'ToolStripSeparator7 - ' - Me.ToolStripSeparator7.Name = "ToolStripSeparator7" - Me.ToolStripSeparator7.Size = New System.Drawing.Size(6, 25) - ' - 'TBVOptions - ' - Me.TBVOptions.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image - Me.TBVOptions.Image = Global.iBMSC.My.Resources.Resources.x16VisualOptions - Me.TBVOptions.ImageTransparentColor = System.Drawing.Color.Magenta - Me.TBVOptions.Name = "TBVOptions" - Me.TBVOptions.Size = New System.Drawing.Size(23, 22) - Me.TBVOptions.Text = "Visual Options" - ' - 'TBGOptions - ' - Me.TBGOptions.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image - Me.TBGOptions.Image = Global.iBMSC.My.Resources.Resources.x16GeneralOptions - Me.TBGOptions.ImageTransparentColor = System.Drawing.Color.Magenta - Me.TBGOptions.Name = "TBGOptions" - Me.TBGOptions.Size = New System.Drawing.Size(23, 22) - Me.TBGOptions.Text = "General Options" - ' - 'POBStorm - ' - Me.POBStorm.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image - Me.POBStorm.Image = Global.iBMSC.My.Resources.Resources.x16Storm - Me.POBStorm.ImageTransparentColor = System.Drawing.Color.Magenta - Me.POBStorm.Name = "POBStorm" - Me.POBStorm.Size = New System.Drawing.Size(23, 22) - Me.POBStorm.Text = "Storm" - Me.POBStorm.Visible = False - ' - 'pStatus - ' - Me.pStatus.AutoSize = True - Me.pStatus.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink - Me.pStatus.Controls.Add(Me.FStatus2) - Me.pStatus.Controls.Add(Me.FStatus) - Me.pStatus.Dock = System.Windows.Forms.DockStyle.Bottom - Me.pStatus.Location = New System.Drawing.Point(0, 708) - Me.pStatus.Name = "pStatus" - Me.pStatus.Size = New System.Drawing.Size(876, 22) - Me.pStatus.TabIndex = 62 - ' - 'FStatus2 - ' - Me.FStatus2.AccessibleRole = System.Windows.Forms.AccessibleRole.StatusBar - Me.FStatus2.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.FSSS, Me.FSSL, Me.FSSH, Me.BVCReverse, Me.LblMultiply, Me.TVCM, Me.LblDivide, Me.TVCD, Me.BVCApply, Me.TVCBPM, Me.BVCCalculate, Me.BConvertStop}) - Me.FStatus2.Location = New System.Drawing.Point(0, 0) - Me.FStatus2.Name = "FStatus2" - Me.FStatus2.ShowItemToolTips = True - Me.FStatus2.Size = New System.Drawing.Size(876, 22) - Me.FStatus2.TabIndex = 0 - Me.FStatus2.Text = "Status" - Me.FStatus2.Visible = False - ' - 'FSSS - ' - Me.FSSS.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text - Me.FSSS.Font = New System.Drawing.Font("Segoe UI", 9.0!, System.Drawing.FontStyle.Bold) - Me.FSSS.ImageTransparentColor = System.Drawing.Color.Magenta - Me.FSSS.Name = "FSSS" - Me.FSSS.Size = New System.Drawing.Size(23, 20) - Me.FSSS.Text = "0" - Me.FSSS.ToolTipText = "Selection Start Position" - ' - 'FSSL - ' - Me.FSSL.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text - Me.FSSL.Font = New System.Drawing.Font("Segoe UI", 9.0!, System.Drawing.FontStyle.Bold) - Me.FSSL.ImageTransparentColor = System.Drawing.Color.Magenta - Me.FSSL.Name = "FSSL" - Me.FSSL.Size = New System.Drawing.Size(23, 20) - Me.FSSL.Text = "0" - Me.FSSL.ToolTipText = "Selection Length" - ' - 'FSSH - ' - Me.FSSH.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text - Me.FSSH.Font = New System.Drawing.Font("Segoe UI", 9.0!, System.Drawing.FontStyle.Bold) - Me.FSSH.ImageTransparentColor = System.Drawing.Color.Magenta - Me.FSSH.Name = "FSSH" - Me.FSSH.Size = New System.Drawing.Size(23, 20) - Me.FSSH.Text = "0" - Me.FSSH.ToolTipText = "Selection Split Position" - ' - 'BVCReverse - ' - Me.BVCReverse.BackColor = System.Drawing.Color.FromArgb(CType(CType(192, Byte), Integer), CType(CType(192, Byte), Integer), CType(CType(255, Byte), Integer)) - Me.BVCReverse.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text - Me.BVCReverse.ImageTransparentColor = System.Drawing.Color.Magenta - Me.BVCReverse.Name = "BVCReverse" - Me.BVCReverse.Size = New System.Drawing.Size(102, 20) - Me.BVCReverse.Text = "Reverse Selection" - ' - 'LblMultiply - ' - Me.LblMultiply.Name = "LblMultiply" - Me.LblMultiply.Size = New System.Drawing.Size(15, 17) - Me.LblMultiply.Text = "×" - ' - 'TVCM - ' - Me.TVCM.BackColor = System.Drawing.Color.FromArgb(CType(CType(255, Byte), Integer), CType(CType(192, Byte), Integer), CType(CType(192, Byte), Integer)) - Me.TVCM.BorderStyle = System.Windows.Forms.BorderStyle.None - Me.TVCM.Font = New System.Drawing.Font("Segoe UI", 9.0!, System.Drawing.FontStyle.Bold) - Me.TVCM.Name = "TVCM" - Me.TVCM.Size = New System.Drawing.Size(60, 22) - Me.TVCM.Text = "2" - Me.TVCM.TextBoxTextAlign = System.Windows.Forms.HorizontalAlignment.Center - ' - 'LblDivide - ' - Me.LblDivide.Name = "LblDivide" - Me.LblDivide.Size = New System.Drawing.Size(15, 17) - Me.LblDivide.Text = "÷" - ' - 'TVCD - ' - Me.TVCD.BackColor = System.Drawing.Color.FromArgb(CType(CType(255, Byte), Integer), CType(CType(192, Byte), Integer), CType(CType(192, Byte), Integer)) - Me.TVCD.BorderStyle = System.Windows.Forms.BorderStyle.None - Me.TVCD.Font = New System.Drawing.Font("Segoe UI", 9.0!, System.Drawing.FontStyle.Bold) - Me.TVCD.Name = "TVCD" - Me.TVCD.Size = New System.Drawing.Size(60, 22) - Me.TVCD.Text = "1" - Me.TVCD.TextBoxTextAlign = System.Windows.Forms.HorizontalAlignment.Center - ' - 'BVCApply - ' - Me.BVCApply.BackColor = System.Drawing.Color.FromArgb(CType(CType(192, Byte), Integer), CType(CType(192, Byte), Integer), CType(CType(255, Byte), Integer)) - Me.BVCApply.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text - Me.BVCApply.ImageTransparentColor = System.Drawing.Color.Magenta - Me.BVCApply.Name = "BVCApply" - Me.BVCApply.Size = New System.Drawing.Size(95, 20) - Me.BVCApply.Text = "Expand By Ratio" - Me.BVCApply.ToolTipText = "This will expand notes and selection by the ratio next to this button. Ignores ce" & - "nter bar." - ' - 'TVCBPM - ' - Me.TVCBPM.BackColor = System.Drawing.Color.FromArgb(CType(CType(255, Byte), Integer), CType(CType(192, Byte), Integer), CType(CType(192, Byte), Integer)) - Me.TVCBPM.BorderStyle = System.Windows.Forms.BorderStyle.None - Me.TVCBPM.Font = New System.Drawing.Font("Segoe UI", 9.0!, System.Drawing.FontStyle.Bold) - Me.TVCBPM.Name = "TVCBPM" - Me.TVCBPM.Size = New System.Drawing.Size(80, 22) - Me.TVCBPM.Text = "120" - Me.TVCBPM.TextBoxTextAlign = System.Windows.Forms.HorizontalAlignment.Center - ' - 'BVCCalculate - ' - Me.BVCCalculate.BackColor = System.Drawing.Color.FromArgb(CType(CType(192, Byte), Integer), CType(CType(192, Byte), Integer), CType(CType(255, Byte), Integer)) - Me.BVCCalculate.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text - Me.BVCCalculate.ImageTransparentColor = System.Drawing.Color.Magenta - Me.BVCCalculate.Name = "BVCCalculate" - Me.BVCCalculate.Size = New System.Drawing.Size(104, 20) - Me.BVCCalculate.Text = "Relocate By Value" - Me.BVCCalculate.ToolTipText = "This will move notes within the selection and preserve the selection, given the B" & - "PM value next to this button. Considers center bar." - ' - 'BConvertStop - ' - Me.BConvertStop.BackColor = System.Drawing.Color.FromArgb(CType(CType(192, Byte), Integer), CType(CType(192, Byte), Integer), CType(CType(255, Byte), Integer)) - Me.BConvertStop.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text - Me.BConvertStop.ImageTransparentColor = System.Drawing.Color.Magenta - Me.BConvertStop.Name = "BConvertStop" - Me.BConvertStop.Size = New System.Drawing.Size(117, 20) - Me.BConvertStop.Text = "Transform Into Stop" - Me.BConvertStop.ToolTipText = "This will move notes within the selection and preserve the selection, given the B" & - "PM value next to this button. Considers center bar." - ' - 'FStatus - ' - Me.FStatus.AccessibleRole = System.Windows.Forms.AccessibleRole.StatusBar - Me.FStatus.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.FSC, Me.FSW, Me.FSM, Me.FSP1, Me.FSP3, Me.FSP2, Me.FSP4, Me.TimeStatusLabel, Me.FST, Me.FSH, Me.FSE}) - Me.FStatus.Location = New System.Drawing.Point(0, 0) - Me.FStatus.Name = "FStatus" - Me.FStatus.ShowItemToolTips = True - Me.FStatus.Size = New System.Drawing.Size(876, 22) - Me.FStatus.SizingGrip = False - Me.FStatus.TabIndex = 62 - Me.FStatus.Text = "Status" - ' - 'FSC - ' - Me.FSC.AutoSize = False - Me.FSC.Name = "FSC" - Me.FSC.Size = New System.Drawing.Size(70, 17) - Me.FSC.Text = "BPM" - Me.FSC.ToolTipText = "Column Caption" - ' - 'FSW - ' - Me.FSW.AutoSize = False - Me.FSW.ForeColor = System.Drawing.Color.FromArgb(CType(CType(128, Byte), Integer), CType(CType(64, Byte), Integer), CType(CType(0, Byte), Integer)) - Me.FSW.Name = "FSW" - Me.FSW.Size = New System.Drawing.Size(40, 17) - Me.FSW.Text = "01" - Me.FSW.ToolTipText = "Note Index" - ' - 'FSM - ' - Me.FSM.AutoSize = False - Me.FSM.ForeColor = System.Drawing.Color.Teal - Me.FSM.Name = "FSM" - Me.FSM.Size = New System.Drawing.Size(40, 17) - Me.FSM.Text = "000" - Me.FSM.ToolTipText = "Measure Index" - ' - 'FSP1 - ' - Me.FSP1.AutoSize = False - Me.FSP1.Font = New System.Drawing.Font("Segoe UI", 9.0!, System.Drawing.FontStyle.Bold) - Me.FSP1.Name = "FSP1" - Me.FSP1.Size = New System.Drawing.Size(170, 17) - Me.FSP1.Text = "9.41176470588235 / 9999" - Me.FSP1.ToolTipText = "Grid Resolution" - ' - 'FSP3 - ' - Me.FSP3.AutoSize = False - Me.FSP3.Font = New System.Drawing.Font("Segoe UI", 9.0!, System.Drawing.FontStyle.Bold) - Me.FSP3.ForeColor = System.Drawing.Color.Maroon - Me.FSP3.Name = "FSP3" - Me.FSP3.Size = New System.Drawing.Size(85, 17) - Me.FSP3.Text = "9999 / 9999" - Me.FSP3.ToolTipText = "Reduced Resolution" - ' - 'FSP2 - ' - Me.FSP2.AutoSize = False - Me.FSP2.Font = New System.Drawing.Font("Segoe UI", 9.0!, System.Drawing.FontStyle.Bold) - Me.FSP2.ForeColor = System.Drawing.Color.Green - Me.FSP2.Name = "FSP2" - Me.FSP2.Size = New System.Drawing.Size(170, 17) - Me.FSP2.Text = "112.941176470588 / 9999" - Me.FSP2.ToolTipText = "Measure Resolution" - ' - 'FSP4 - ' - Me.FSP4.AutoSize = False - Me.FSP4.Name = "FSP4" - Me.FSP4.Size = New System.Drawing.Size(115, 17) - Me.FSP4.Text = "112.941176470588" - Me.FSP4.ToolTipText = "Absolute Position" - ' - 'TimeStatusLabel - ' - Me.TimeStatusLabel.Name = "TimeStatusLabel" - Me.TimeStatusLabel.Size = New System.Drawing.Size(55, 17) - Me.TimeStatusLabel.Text = "00:00:000" - ' - 'FST - ' - Me.FST.ForeColor = System.Drawing.Color.Olive - Me.FST.LinkColor = System.Drawing.Color.FromArgb(CType(CType(0, Byte), Integer), CType(CType(0, Byte), Integer), CType(CType(255, Byte), Integer)) - Me.FST.Name = "FST" - Me.FST.Size = New System.Drawing.Size(64, 17) - Me.FST.Text = "Length = 0" - ' - 'FSH - ' - Me.FSH.ForeColor = System.Drawing.Color.Blue - Me.FSH.Name = "FSH" - Me.FSH.Size = New System.Drawing.Size(46, 17) - Me.FSH.Text = "Hidden" - ' - 'FSE - ' - Me.FSE.ForeColor = System.Drawing.Color.Red - Me.FSE.Name = "FSE" - Me.FSE.Size = New System.Drawing.Size(32, 17) - Me.FSE.Text = "Error" - ' - 'TimerMiddle - ' - Me.TimerMiddle.Interval = 15 - ' - 'ToolStripContainer1 - ' - ' - 'ToolStripContainer1.ContentPanel - ' - Me.ToolStripContainer1.ContentPanel.Controls.Add(Me.PMain) - Me.ToolStripContainer1.ContentPanel.Controls.Add(Me.SpR) - Me.ToolStripContainer1.ContentPanel.Controls.Add(Me.SpL) - Me.ToolStripContainer1.ContentPanel.Controls.Add(Me.PMainR) - Me.ToolStripContainer1.ContentPanel.Controls.Add(Me.PMainL) - Me.ToolStripContainer1.ContentPanel.Size = New System.Drawing.Size(876, 660) - Me.ToolStripContainer1.Dock = System.Windows.Forms.DockStyle.Fill - Me.ToolStripContainer1.Location = New System.Drawing.Point(0, 0) - Me.ToolStripContainer1.Name = "ToolStripContainer1" - Me.ToolStripContainer1.Size = New System.Drawing.Size(876, 708) - Me.ToolStripContainer1.TabIndex = 65 - Me.ToolStripContainer1.Text = "ToolStripContainer1" - ' - 'ToolStripContainer1.TopToolStripPanel - ' - Me.ToolStripContainer1.TopToolStripPanel.Controls.Add(Me.mnMain) - Me.ToolStripContainer1.TopToolStripPanel.Controls.Add(Me.TBMain) - ' - 'PMain - ' - Me.PMain.BackColor = System.Drawing.Color.Black - Me.PMain.Controls.Add(Me.PMainIn) - Me.PMain.Controls.Add(Me.MainPanelScroll) - Me.PMain.Controls.Add(Me.HS) - Me.PMain.Dock = System.Windows.Forms.DockStyle.Fill - Me.PMain.Font = New System.Drawing.Font("Verdana", 9.0!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) - Me.PMain.ForeColor = System.Drawing.Color.White - Me.PMain.Location = New System.Drawing.Point(5, 0) - Me.PMain.Name = "PMain" - Me.PMain.Size = New System.Drawing.Size(866, 660) - Me.PMain.TabIndex = 58 - Me.PMain.Tag = "1" - ' - 'PMainIn - ' - Me.PMainIn.BackColor = System.Drawing.Color.Black - Me.PMainIn.Dock = System.Windows.Forms.DockStyle.Fill - Me.PMainIn.Font = New System.Drawing.Font("Verdana", 9.0!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) - Me.PMainIn.ForeColor = System.Drawing.Color.White - Me.PMainIn.Location = New System.Drawing.Point(0, 0) - Me.PMainIn.Name = "PMainIn" - Me.PMainIn.Size = New System.Drawing.Size(849, 643) - Me.PMainIn.TabIndex = 0 - Me.PMainIn.TabStop = True - Me.PMainIn.Tag = "1" - ' - 'MainPanelScroll - ' - Me.MainPanelScroll.AccessibleRole = System.Windows.Forms.AccessibleRole.ScrollBar - Me.MainPanelScroll.Dock = System.Windows.Forms.DockStyle.Right - Me.MainPanelScroll.LargeChange = 592 - Me.MainPanelScroll.Location = New System.Drawing.Point(849, 0) - Me.MainPanelScroll.Maximum = 591 - Me.MainPanelScroll.Minimum = -10000 - Me.MainPanelScroll.Name = "MainPanelScroll" - Me.MainPanelScroll.Size = New System.Drawing.Size(17, 643) - Me.MainPanelScroll.SmallChange = 12 - Me.MainPanelScroll.TabIndex = 2 - Me.MainPanelScroll.Tag = "1" - ' - 'HS - ' - Me.HS.AccessibleRole = System.Windows.Forms.AccessibleRole.ScrollBar - Me.HS.Dock = System.Windows.Forms.DockStyle.Bottom - Me.HS.LargeChange = 777 - Me.HS.Location = New System.Drawing.Point(0, 643) - Me.HS.Maximum = 1233 - Me.HS.Name = "HS" - Me.HS.Size = New System.Drawing.Size(866, 17) - Me.HS.TabIndex = 3 - Me.HS.Tag = "1" - ' - 'SpR - ' - Me.SpR.Dock = System.Windows.Forms.DockStyle.Right - Me.SpR.FlatAppearance.BorderSize = 0 - Me.SpR.FlatStyle = System.Windows.Forms.FlatStyle.Flat - Me.SpR.Location = New System.Drawing.Point(871, 0) - Me.SpR.Name = "SpR" - Me.SpR.Size = New System.Drawing.Size(5, 660) - Me.SpR.TabIndex = 59 - Me.SpR.TabStop = False - Me.SpR.UseVisualStyleBackColor = True - Me.SpR.Visible = False - ' - 'SpL - ' - Me.SpL.Dock = System.Windows.Forms.DockStyle.Left - Me.SpL.FlatAppearance.BorderSize = 0 - Me.SpL.FlatStyle = System.Windows.Forms.FlatStyle.Flat - Me.SpL.Location = New System.Drawing.Point(0, 0) - Me.SpL.Name = "SpL" - Me.SpL.Size = New System.Drawing.Size(5, 660) - Me.SpL.TabIndex = 60 - Me.SpL.TabStop = False - Me.SpL.UseVisualStyleBackColor = True - Me.SpL.Visible = False - ' - 'PMainR - ' - Me.PMainR.BackColor = System.Drawing.Color.Black - Me.PMainR.Controls.Add(Me.PMainInR) - Me.PMainR.Controls.Add(Me.RightPanelScroll) - Me.PMainR.Controls.Add(Me.HSR) - Me.PMainR.Dock = System.Windows.Forms.DockStyle.Right - Me.PMainR.Font = New System.Drawing.Font("Verdana", 9.0!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) - Me.PMainR.ForeColor = System.Drawing.Color.White - Me.PMainR.Location = New System.Drawing.Point(876, 0) - Me.PMainR.Name = "PMainR" - Me.PMainR.Size = New System.Drawing.Size(0, 660) - Me.PMainR.TabIndex = 56 - Me.PMainR.Tag = "2" - ' - 'PMainInR - ' - Me.PMainInR.BackColor = System.Drawing.Color.Black - Me.PMainInR.Dock = System.Windows.Forms.DockStyle.Fill - Me.PMainInR.Font = New System.Drawing.Font("Verdana", 9.0!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) - Me.PMainInR.ForeColor = System.Drawing.Color.White - Me.PMainInR.Location = New System.Drawing.Point(0, 0) - Me.PMainInR.Name = "PMainInR" - Me.PMainInR.Size = New System.Drawing.Size(0, 643) - Me.PMainInR.TabIndex = 0 - Me.PMainInR.TabStop = True - Me.PMainInR.Tag = "2" - ' - 'RightPanelScroll - ' - Me.RightPanelScroll.Dock = System.Windows.Forms.DockStyle.Right - Me.RightPanelScroll.LargeChange = 592 - Me.RightPanelScroll.Location = New System.Drawing.Point(-17, 0) - Me.RightPanelScroll.Maximum = 591 - Me.RightPanelScroll.Minimum = -10000 - Me.RightPanelScroll.Name = "RightPanelScroll" - Me.RightPanelScroll.Size = New System.Drawing.Size(17, 643) - Me.RightPanelScroll.SmallChange = 12 - Me.RightPanelScroll.TabIndex = 2 - Me.RightPanelScroll.Tag = "2" - ' - 'HSR - ' - Me.HSR.Dock = System.Windows.Forms.DockStyle.Bottom - Me.HSR.LargeChange = 777 - Me.HSR.Location = New System.Drawing.Point(0, 643) - Me.HSR.Maximum = 1233 - Me.HSR.Name = "HSR" - Me.HSR.Size = New System.Drawing.Size(0, 17) - Me.HSR.TabIndex = 3 - Me.HSR.Tag = "2" - ' - 'PMainL - ' - Me.PMainL.BackColor = System.Drawing.Color.Black - Me.PMainL.Controls.Add(Me.PMainInL) - Me.PMainL.Controls.Add(Me.LeftPanelScroll) - Me.PMainL.Controls.Add(Me.HSL) - Me.PMainL.Dock = System.Windows.Forms.DockStyle.Left - Me.PMainL.Font = New System.Drawing.Font("Verdana", 9.0!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) - Me.PMainL.ForeColor = System.Drawing.Color.White - Me.PMainL.Location = New System.Drawing.Point(0, 0) - Me.PMainL.Name = "PMainL" - Me.PMainL.Size = New System.Drawing.Size(0, 660) - Me.PMainL.TabIndex = 54 - Me.PMainL.Tag = "0" - ' - 'PMainInL - ' - Me.PMainInL.BackColor = System.Drawing.Color.Black - Me.PMainInL.Dock = System.Windows.Forms.DockStyle.Fill - Me.PMainInL.Font = New System.Drawing.Font("Verdana", 9.0!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) - Me.PMainInL.ForeColor = System.Drawing.Color.White - Me.PMainInL.Location = New System.Drawing.Point(0, 0) - Me.PMainInL.Name = "PMainInL" - Me.PMainInL.Size = New System.Drawing.Size(0, 643) - Me.PMainInL.TabIndex = 0 - Me.PMainInL.TabStop = True - Me.PMainInL.Tag = "0" - ' - 'LeftPanelScroll - ' - Me.LeftPanelScroll.Dock = System.Windows.Forms.DockStyle.Right - Me.LeftPanelScroll.LargeChange = 592 - Me.LeftPanelScroll.Location = New System.Drawing.Point(-17, 0) - Me.LeftPanelScroll.Maximum = 591 - Me.LeftPanelScroll.Minimum = -10000 - Me.LeftPanelScroll.Name = "LeftPanelScroll" - Me.LeftPanelScroll.Size = New System.Drawing.Size(17, 643) - Me.LeftPanelScroll.SmallChange = 12 - Me.LeftPanelScroll.TabIndex = 2 - Me.LeftPanelScroll.Tag = "0" - ' - 'HSL - ' - Me.HSL.Dock = System.Windows.Forms.DockStyle.Bottom - Me.HSL.LargeChange = 777 - Me.HSL.Location = New System.Drawing.Point(0, 643) - Me.HSL.Maximum = 1233 - Me.HSL.Name = "HSL" - Me.HSL.Size = New System.Drawing.Size(0, 17) - Me.HSL.TabIndex = 3 - Me.HSL.Tag = "0" - ' - 'POptionsResizer - ' - Me.POptionsResizer.AutoSize = True - Me.POptionsResizer.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink - Me.POptionsResizer.Dock = System.Windows.Forms.DockStyle.Right - Me.POptionsResizer.FlatAppearance.BorderSize = 0 - Me.POptionsResizer.FlatStyle = System.Windows.Forms.FlatStyle.Flat - Me.POptionsResizer.Location = New System.Drawing.Point(876, 0) - Me.POptionsResizer.Name = "POptionsResizer" - Me.POptionsResizer.Size = New System.Drawing.Size(6, 730) - Me.POptionsResizer.TabIndex = 67 - Me.POptionsResizer.TabStop = False - Me.POptionsResizer.UseVisualStyleBackColor = True - ' - 'MainWindow - ' - Me.AllowDrop = True - Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None - Me.ClientSize = New System.Drawing.Size(1082, 730) - Me.Controls.Add(Me.ToolStripContainer1) - Me.Controls.Add(Me.pStatus) - Me.Controls.Add(Me.POptionsResizer) - Me.Controls.Add(Me.POptionsScroll) - Me.DoubleBuffered = True - Me.Font = New System.Drawing.Font("Segoe UI", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) - Me.Icon = CType(resources.GetObject("$this.Icon"), System.Drawing.Icon) - Me.KeyPreview = True - Me.MainMenuStrip = Me.mnMain - Me.Name = "MainWindow" - Me.cmnLanguage.ResumeLayout(False) - Me.cmnTheme.ResumeLayout(False) - Me.POptionsScroll.ResumeLayout(False) - Me.POptionsScroll.PerformLayout() - Me.POptions.ResumeLayout(False) - Me.POptions.PerformLayout() - Me.POExpansion.ResumeLayout(False) - Me.POExpansionInner.ResumeLayout(False) - Me.POExpansionInner.PerformLayout() - Me.POBeat.ResumeLayout(False) - Me.POBeatInner.ResumeLayout(False) - Me.POBeatInner.PerformLayout() - Me.TableLayoutPanel7.ResumeLayout(False) - Me.TableLayoutPanel7.PerformLayout() - CType(Me.nBeatD, System.ComponentModel.ISupportInitialize).EndInit() - CType(Me.nBeatN, System.ComponentModel.ISupportInitialize).EndInit() - Me.POBeatPart2.ResumeLayout(False) - Me.POBeatPart2.PerformLayout() - Me.POWAV.ResumeLayout(False) - Me.POWAVInner.ResumeLayout(False) - Me.POWAVInner.PerformLayout() - Me.FlowLayoutPanel3.ResumeLayout(False) - Me.POBMP.ResumeLayout(False) - Me.POBMPInner.ResumeLayout(False) - Me.POBMPInner.PerformLayout() - Me.FlowLayoutPanel4.ResumeLayout(False) - Me.POWAVPart2.ResumeLayout(False) - Me.POWAVPart2.PerformLayout() - Me.POWaveForm.ResumeLayout(False) - Me.POWaveForm.PerformLayout() - Me.POWaveFormInner.ResumeLayout(False) - Me.POWaveFormInner.PerformLayout() - Me.POWaveFormPart2.ResumeLayout(False) - Me.POWaveFormPart2.PerformLayout() - CType(Me.TWSaturation, System.ComponentModel.ISupportInitialize).EndInit() - CType(Me.PictureBox2, System.ComponentModel.ISupportInitialize).EndInit() - CType(Me.TWTransparency, System.ComponentModel.ISupportInitialize).EndInit() - CType(Me.PictureBox3, System.ComponentModel.ISupportInitialize).EndInit() - CType(Me.TWPrecision, System.ComponentModel.ISupportInitialize).EndInit() - CType(Me.PictureBox4, System.ComponentModel.ISupportInitialize).EndInit() - CType(Me.TWWidth, System.ComponentModel.ISupportInitialize).EndInit() - CType(Me.PictureBox5, System.ComponentModel.ISupportInitialize).EndInit() - CType(Me.TWLeft, System.ComponentModel.ISupportInitialize).EndInit() - CType(Me.PictureBox6, System.ComponentModel.ISupportInitialize).EndInit() - CType(Me.TWSaturation2, System.ComponentModel.ISupportInitialize).EndInit() - CType(Me.TWLeft2, System.ComponentModel.ISupportInitialize).EndInit() - CType(Me.TWTransparency2, System.ComponentModel.ISupportInitialize).EndInit() - CType(Me.TWWidth2, System.ComponentModel.ISupportInitialize).EndInit() - CType(Me.TWPrecision2, System.ComponentModel.ISupportInitialize).EndInit() - Me.POWaveFormPart1.ResumeLayout(False) - Me.POWaveFormPart1.PerformLayout() - Me.TableLayoutPanel1.ResumeLayout(False) - Me.TableLayoutPanel1.PerformLayout() - Me.FlowLayoutPanel1.ResumeLayout(False) - Me.TableLayoutPanel6.ResumeLayout(False) - Me.TableLayoutPanel6.PerformLayout() - CType(Me.PictureBox1, System.ComponentModel.ISupportInitialize).EndInit() - CType(Me.TWPosition2, System.ComponentModel.ISupportInitialize).EndInit() - CType(Me.TWPosition, System.ComponentModel.ISupportInitialize).EndInit() - Me.POGrid.ResumeLayout(False) - Me.POGrid.PerformLayout() - Me.POGridInner.ResumeLayout(False) - Me.POGridInner.PerformLayout() - Me.POGridPart2.ResumeLayout(False) - Me.POGridPart2.PerformLayout() - Me.TableLayoutPanel5.ResumeLayout(False) - Me.TableLayoutPanel5.PerformLayout() - Me.FlowLayoutPanel2.ResumeLayout(False) - Me.TableLayoutPanel4.ResumeLayout(False) - Me.TableLayoutPanel4.PerformLayout() - CType(Me.CGB, System.ComponentModel.ISupportInitialize).EndInit() - Me.POGridPart1.ResumeLayout(False) - Me.POGridPart1.PerformLayout() - Me.TableLayoutPanel3.ResumeLayout(False) - Me.TableLayoutPanel3.PerformLayout() - CType(Me.PictureBox9, System.ComponentModel.ISupportInitialize).EndInit() - CType(Me.CGHeight2, System.ComponentModel.ISupportInitialize).EndInit() - CType(Me.CGHeight, System.ComponentModel.ISupportInitialize).EndInit() - CType(Me.PictureBox10, System.ComponentModel.ISupportInitialize).EndInit() - CType(Me.CGWidth2, System.ComponentModel.ISupportInitialize).EndInit() - CType(Me.CGWidth, System.ComponentModel.ISupportInitialize).EndInit() - Me.TableLayoutPanel2.ResumeLayout(False) - Me.TableLayoutPanel2.PerformLayout() - CType(Me.PictureBox7, System.ComponentModel.ISupportInitialize).EndInit() - CType(Me.CGDivide, System.ComponentModel.ISupportInitialize).EndInit() - CType(Me.CGSub, System.ComponentModel.ISupportInitialize).EndInit() - Me.POHeader.ResumeLayout(False) - Me.POHeader.PerformLayout() - Me.POHeaderInner.ResumeLayout(False) - Me.POHeaderInner.PerformLayout() - Me.POHeaderPart2.ResumeLayout(False) - Me.POHeaderPart2.PerformLayout() - Me.POHeaderPart1.ResumeLayout(False) - Me.POHeaderPart1.PerformLayout() - CType(Me.THBPM, System.ComponentModel.ISupportInitialize).EndInit() - Me.Menu1.ResumeLayout(False) - Me.mnMain.ResumeLayout(False) - Me.mnMain.PerformLayout() - Me.cmnConversion.ResumeLayout(False) - Me.TBMain.ResumeLayout(False) - Me.TBMain.PerformLayout() - Me.pStatus.ResumeLayout(False) - Me.pStatus.PerformLayout() - Me.FStatus2.ResumeLayout(False) - Me.FStatus2.PerformLayout() - Me.FStatus.ResumeLayout(False) - Me.FStatus.PerformLayout() - Me.ToolStripContainer1.ContentPanel.ResumeLayout(False) - Me.ToolStripContainer1.TopToolStripPanel.ResumeLayout(False) - Me.ToolStripContainer1.TopToolStripPanel.PerformLayout() - Me.ToolStripContainer1.ResumeLayout(False) - Me.ToolStripContainer1.PerformLayout() - Me.PMain.ResumeLayout(False) - Me.PMainR.ResumeLayout(False) - Me.PMainL.ResumeLayout(False) - Me.ResumeLayout(False) - Me.PerformLayout() - - End Sub - Friend WithEvents POptionsScroll As System.Windows.Forms.Panel - Friend WithEvents LWAV As System.Windows.Forms.ListBox - Friend WithEvents LBMP As System.Windows.Forms.ListBox - Friend WithEvents Timer1 As System.Windows.Forms.Timer - Friend WithEvents MInsert As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents MRemove As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents Menu1 As System.Windows.Forms.ContextMenuStrip - Friend WithEvents AutoSaveTimer As System.Windows.Forms.Timer - Friend WithEvents mnMain As System.Windows.Forms.MenuStrip - Friend WithEvents mnFile As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents mnNew As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents mnOpen As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents mnImportSM As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents mnImportIBMSC As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents ToolStripSeparator14 As System.Windows.Forms.ToolStripSeparator - Friend WithEvents mnSave As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents mnSaveAs As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents mnExport As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents ToolStripSeparator15 As System.Windows.Forms.ToolStripSeparator - Friend WithEvents mnOpenR0 As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents mnOpenR1 As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents mnOpenR2 As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents mnOpenR3 As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents mnOpenR4 As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents ToolStripSeparator16 As System.Windows.Forms.ToolStripSeparator - Friend WithEvents mnQuit As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents mnEdit As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents mnUndo As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents mnRedo As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents ToolStripSeparator17 As System.Windows.Forms.ToolStripSeparator - Friend WithEvents mnCut As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents mnCopy As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents mnPaste As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents ToolStripSeparator18 As System.Windows.Forms.ToolStripSeparator - Friend WithEvents mnFind As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents mnStatistics As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents mnDelete As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents mnSelectAll As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents mnMyO2 As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents ToolStripSeparator19 As System.Windows.Forms.ToolStripSeparator - Friend WithEvents mnOptions As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents mnPreview As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents mnPlayB As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents mnPlay As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents mnStop As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents mnTimeSelect As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents mnSelect As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents mnWrite As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents ToolStripSeparator23 As System.Windows.Forms.ToolStripSeparator - Friend WithEvents mnConversion As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents mnErrorCheck As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents mnPreviewOnClick As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents mnShowFileName As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents ToolStripSeparator20 As System.Windows.Forms.ToolStripSeparator - Friend WithEvents mnGOptions As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents mnVOptions As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents mnLanguage As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents mnTheme As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents cmnLanguage As System.Windows.Forms.ContextMenuStrip - Friend WithEvents TBLangDef As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents ToolStripSeparator9 As System.Windows.Forms.ToolStripSeparator - Friend WithEvents cmnTheme As System.Windows.Forms.ContextMenuStrip - Friend WithEvents TBThemeDef As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents TBThemeSave As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents TBThemeRefresh As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents ToolStripSeparator6 As System.Windows.Forms.ToolStripSeparator - Friend WithEvents cmnConversion As System.Windows.Forms.ContextMenuStrip - Friend WithEvents POBLong As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents POBShort As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents POBLongShort As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents ToolStripSeparator10 As System.Windows.Forms.ToolStripSeparator - Friend WithEvents POBHidden As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents POBVisible As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents POBHiddenVisible As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents ToolStripSeparator11 As System.Windows.Forms.ToolStripSeparator - Friend WithEvents POBMirror As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents POBModify As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents mnSys As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents mnSMenu As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents mnSTB As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents mnSOP As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents mnSStatus As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents mnSLSplitter As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents mnSRSplitter As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents mnNTInput As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents TBLangRefresh As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents CGSub As System.Windows.Forms.NumericUpDown - Friend WithEvents CGDivide As System.Windows.Forms.NumericUpDown - Friend WithEvents PictureBox7 As System.Windows.Forms.PictureBox - Friend WithEvents CGSnap As System.Windows.Forms.CheckBox - Friend WithEvents BWLock As System.Windows.Forms.CheckBox - Friend WithEvents TWSaturation As System.Windows.Forms.NumericUpDown - Friend WithEvents TWTransparency As System.Windows.Forms.NumericUpDown - Friend WithEvents TWPrecision As System.Windows.Forms.NumericUpDown - Friend WithEvents TWWidth As System.Windows.Forms.NumericUpDown - Friend WithEvents TWLeft As System.Windows.Forms.NumericUpDown - Friend WithEvents TWPosition As System.Windows.Forms.NumericUpDown - Friend WithEvents PictureBox5 As System.Windows.Forms.PictureBox - Friend WithEvents PictureBox6 As System.Windows.Forms.PictureBox - Friend WithEvents PictureBox4 As System.Windows.Forms.PictureBox - Friend WithEvents PictureBox3 As System.Windows.Forms.PictureBox - Friend WithEvents PictureBox2 As System.Windows.Forms.PictureBox - Friend WithEvents PictureBox1 As System.Windows.Forms.PictureBox - Friend WithEvents TWSaturation2 As System.Windows.Forms.TrackBar - Friend WithEvents TWTransparency2 As System.Windows.Forms.TrackBar - Friend WithEvents TWPrecision2 As System.Windows.Forms.TrackBar - Friend WithEvents TWWidth2 As System.Windows.Forms.TrackBar - Friend WithEvents TWLeft2 As System.Windows.Forms.TrackBar - Friend WithEvents TWPosition2 As System.Windows.Forms.TrackBar - Friend WithEvents TWFileName As System.Windows.Forms.TextBox - Friend WithEvents BWClear As System.Windows.Forms.Button - Friend WithEvents BWLoad As System.Windows.Forms.Button - Friend WithEvents TBMain As System.Windows.Forms.ToolStrip - Friend WithEvents TBNew As System.Windows.Forms.ToolStripButton - Friend WithEvents TBOpen As System.Windows.Forms.ToolStripSplitButton - Friend WithEvents TBOpenR0 As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents TBOpenR1 As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents TBOpenR2 As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents TBOpenR3 As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents TBOpenR4 As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents ToolStripSeparator12 As System.Windows.Forms.ToolStripSeparator - Friend WithEvents TBImportSM As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents TBImportIBMSC As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents TBSave As System.Windows.Forms.ToolStripSplitButton - Friend WithEvents TBSaveAs As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents TBExport As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents ToolStripSeparator1 As System.Windows.Forms.ToolStripSeparator - Friend WithEvents TBCut As System.Windows.Forms.ToolStripButton - Friend WithEvents TBCopy As System.Windows.Forms.ToolStripButton - Friend WithEvents TBPaste As System.Windows.Forms.ToolStripButton - Friend WithEvents TBFind As System.Windows.Forms.ToolStripButton - Friend WithEvents TBStatistics As System.Windows.Forms.ToolStripButton - Friend WithEvents pStatus As System.Windows.Forms.Panel - Friend WithEvents FStatus As System.Windows.Forms.StatusStrip - Friend WithEvents FSC As System.Windows.Forms.ToolStripStatusLabel - Friend WithEvents FSP1 As System.Windows.Forms.ToolStripStatusLabel - Friend WithEvents FSP2 As System.Windows.Forms.ToolStripStatusLabel - Friend WithEvents FSP3 As System.Windows.Forms.ToolStripStatusLabel - Friend WithEvents FSP4 As System.Windows.Forms.ToolStripStatusLabel - Friend WithEvents FST As System.Windows.Forms.ToolStripStatusLabel - Friend WithEvents FSH As System.Windows.Forms.ToolStripStatusLabel - Friend WithEvents FSE As System.Windows.Forms.ToolStripStatusLabel - Friend WithEvents FStatus2 As System.Windows.Forms.StatusStrip - Friend WithEvents BVCReverse As System.Windows.Forms.ToolStripButton - Friend WithEvents LblMultiply As System.Windows.Forms.ToolStripStatusLabel - Friend WithEvents TVCBPM As System.Windows.Forms.ToolStripTextBox - Friend WithEvents TVCM As System.Windows.Forms.ToolStripTextBox - Friend WithEvents LblDivide As System.Windows.Forms.ToolStripStatusLabel - Friend WithEvents TVCD As System.Windows.Forms.ToolStripTextBox - Friend WithEvents BVCApply As System.Windows.Forms.ToolStripButton - Friend WithEvents BVCCalculate As System.Windows.Forms.ToolStripButton - Friend WithEvents FSW As System.Windows.Forms.ToolStripStatusLabel - Friend WithEvents FSSS As System.Windows.Forms.ToolStripButton - Friend WithEvents FSSL As System.Windows.Forms.ToolStripButton - Friend WithEvents FSSH As System.Windows.Forms.ToolStripButton - Friend WithEvents TExpansion As System.Windows.Forms.TextBox - Friend WithEvents TimerMiddle As System.Windows.Forms.Timer - Friend WithEvents ToolStripSeparator21 As System.Windows.Forms.ToolStripSeparator - Friend WithEvents CGShow As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents CGShowS As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents CGShowBG As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents CGShowM As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents CGShowMB As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents CGShowV As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents CGShowC As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents ToolStripSeparator22 As System.Windows.Forms.ToolStripSeparator - Friend WithEvents CGBLP As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents CGSTOP As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents CGSCROLL As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents nBeatN As System.Windows.Forms.NumericUpDown - Friend WithEvents LBeat As System.Windows.Forms.ListBox - Friend WithEvents Label7 As System.Windows.Forms.Label - Friend WithEvents BBeatApply As System.Windows.Forms.Button - Friend WithEvents mnPOptions As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents ToolStripContainer1 As System.Windows.Forms.ToolStripContainer - Friend WithEvents PMain As System.Windows.Forms.Panel - Friend WithEvents PMainIn As System.Windows.Forms.Panel - Friend WithEvents MainPanelScroll As System.Windows.Forms.VScrollBar - Friend WithEvents HS As System.Windows.Forms.HScrollBar - Friend WithEvents PMainR As System.Windows.Forms.Panel - Friend WithEvents PMainInR As System.Windows.Forms.Panel - Friend WithEvents RightPanelScroll As System.Windows.Forms.VScrollBar - Friend WithEvents HSR As System.Windows.Forms.HScrollBar - Friend WithEvents PMainL As System.Windows.Forms.Panel - Friend WithEvents PMainInL As System.Windows.Forms.Panel - Friend WithEvents LeftPanelScroll As System.Windows.Forms.VScrollBar - Friend WithEvents HSL As System.Windows.Forms.HScrollBar - Friend WithEvents POConvert As System.Windows.Forms.ToolStripDropDownButton - Friend WithEvents TBLanguage As System.Windows.Forms.ToolStripDropDownButton - Friend WithEvents TBTheme As System.Windows.Forms.ToolStripDropDownButton - Friend WithEvents TBMyO2 As System.Windows.Forms.ToolStripButton - Friend WithEvents ToolStripSeparator4 As System.Windows.Forms.ToolStripSeparator - Friend WithEvents TBErrorCheck As System.Windows.Forms.ToolStripButton - Friend WithEvents TBPreviewOnClick As System.Windows.Forms.ToolStripButton - Friend WithEvents TBShowFileName As System.Windows.Forms.ToolStripButton - Friend WithEvents ToolStripSeparator2 As System.Windows.Forms.ToolStripSeparator - Friend WithEvents TBUndo As System.Windows.Forms.ToolStripButton - Friend WithEvents TBRedo As System.Windows.Forms.ToolStripButton - Friend WithEvents ToolStripSeparator5 As System.Windows.Forms.ToolStripSeparator - Friend WithEvents TBNTInput As System.Windows.Forms.ToolStripButton - Friend WithEvents TBTimeSelect As System.Windows.Forms.ToolStripButton - Friend WithEvents TBSelect As System.Windows.Forms.ToolStripButton - Friend WithEvents TBWrite As System.Windows.Forms.ToolStripButton - Friend WithEvents ToolStripSeparator3 As System.Windows.Forms.ToolStripSeparator - Friend WithEvents TBPlayB As System.Windows.Forms.ToolStripButton - Friend WithEvents TBPlay As System.Windows.Forms.ToolStripButton - Friend WithEvents TBStop As System.Windows.Forms.ToolStripButton - Friend WithEvents TBPOptions As System.Windows.Forms.ToolStripButton - Friend WithEvents ToolStripSeparator7 As System.Windows.Forms.ToolStripSeparator - Friend WithEvents TBVOptions As System.Windows.Forms.ToolStripButton - Friend WithEvents TBGOptions As System.Windows.Forms.ToolStripButton - Friend WithEvents POBStorm As System.Windows.Forms.ToolStripButton - Friend WithEvents POptions As System.Windows.Forms.Panel - Friend WithEvents POHeader As System.Windows.Forms.Panel - Friend WithEvents POHeaderSwitch As System.Windows.Forms.CheckBox - Friend WithEvents POGrid As System.Windows.Forms.Panel - Friend WithEvents POGridSwitch As System.Windows.Forms.CheckBox - Friend WithEvents POHeaderInner As System.Windows.Forms.Panel - Friend WithEvents POHeaderPart2 As System.Windows.Forms.TableLayoutPanel - Friend WithEvents THExRank As System.Windows.Forms.TextBox - Friend WithEvents Label25 As System.Windows.Forms.Label - Friend WithEvents CHLnObj As System.Windows.Forms.ComboBox - Friend WithEvents Label23 As System.Windows.Forms.Label - Friend WithEvents Label21 As System.Windows.Forms.Label - Friend WithEvents THComment As System.Windows.Forms.TextBox - Friend WithEvents Label24 As System.Windows.Forms.Label - Friend WithEvents Label15 As System.Windows.Forms.Label - Friend WithEvents THTotal As System.Windows.Forms.TextBox - Friend WithEvents Label20 As System.Windows.Forms.Label - Friend WithEvents BHStageFile As System.Windows.Forms.Button - Friend WithEvents BHBanner As System.Windows.Forms.Button - Friend WithEvents Label19 As System.Windows.Forms.Label - Friend WithEvents BHBackBMP As System.Windows.Forms.Button - Friend WithEvents Label17 As System.Windows.Forms.Label - Friend WithEvents Label16 As System.Windows.Forms.Label - Friend WithEvents Label12 As System.Windows.Forms.Label - Friend WithEvents THBackBMP As System.Windows.Forms.TextBox - Friend WithEvents Label11 As System.Windows.Forms.Label - Friend WithEvents THBanner As System.Windows.Forms.TextBox - Friend WithEvents THStageFile As System.Windows.Forms.TextBox - Friend WithEvents THSubTitle As System.Windows.Forms.TextBox - Friend WithEvents THSubArtist As System.Windows.Forms.TextBox - Friend WithEvents POHeaderExpander As System.Windows.Forms.CheckBox - Friend WithEvents POHeaderPart1 As System.Windows.Forms.TableLayoutPanel - Friend WithEvents Label3 As System.Windows.Forms.Label - Friend WithEvents THPlayLevel As System.Windows.Forms.TextBox - Friend WithEvents CHRank As System.Windows.Forms.ComboBox - Friend WithEvents Label10 As System.Windows.Forms.Label - Friend WithEvents CHPlayer As System.Windows.Forms.ComboBox - Friend WithEvents CHDifficulty As System.Windows.Forms.ComboBox - Friend WithEvents Label4 As System.Windows.Forms.Label - Friend WithEvents THGenre As System.Windows.Forms.TextBox - Friend WithEvents THBPM As System.Windows.Forms.NumericUpDown - Friend WithEvents Label2 As System.Windows.Forms.Label - Friend WithEvents THArtist As System.Windows.Forms.TextBox - Friend WithEvents THTitle As System.Windows.Forms.TextBox - Friend WithEvents Label9 As System.Windows.Forms.Label - Friend WithEvents Label8 As System.Windows.Forms.Label - Friend WithEvents Label6 As System.Windows.Forms.Label - Friend WithEvents POGridPart1 As System.Windows.Forms.TableLayoutPanel - Friend WithEvents TableLayoutPanel2 As System.Windows.Forms.TableLayoutPanel - Friend WithEvents POGridInner As System.Windows.Forms.Panel - Friend WithEvents POGridPart2 As System.Windows.Forms.TableLayoutPanel - Friend WithEvents TableLayoutPanel5 As System.Windows.Forms.TableLayoutPanel - Friend WithEvents cVSLockR As System.Windows.Forms.CheckBox - Friend WithEvents Label5 As System.Windows.Forms.Label - Friend WithEvents cVSLock As System.Windows.Forms.CheckBox - Friend WithEvents cVSLockL As System.Windows.Forms.CheckBox - Friend WithEvents CGDisableVertical As System.Windows.Forms.CheckBox - Friend WithEvents TableLayoutPanel4 As System.Windows.Forms.TableLayoutPanel - Friend WithEvents Label1 As System.Windows.Forms.Label - Friend WithEvents CGB As System.Windows.Forms.NumericUpDown - Friend WithEvents POGridExpander As System.Windows.Forms.CheckBox - Friend WithEvents TableLayoutPanel3 As System.Windows.Forms.TableLayoutPanel - Friend WithEvents PictureBox9 As System.Windows.Forms.PictureBox - Friend WithEvents CGHeight2 As System.Windows.Forms.TrackBar - Friend WithEvents CGHeight As System.Windows.Forms.NumericUpDown - Friend WithEvents PictureBox10 As System.Windows.Forms.PictureBox - Friend WithEvents CGWidth2 As System.Windows.Forms.TrackBar - Friend WithEvents CGWidth As System.Windows.Forms.NumericUpDown - Friend WithEvents POWaveForm As System.Windows.Forms.Panel - Friend WithEvents POWaveFormSwitch As System.Windows.Forms.CheckBox - Friend WithEvents POWaveFormInner As System.Windows.Forms.Panel - Friend WithEvents POWaveFormPart2 As System.Windows.Forms.TableLayoutPanel - Friend WithEvents POWaveFormExpander As System.Windows.Forms.CheckBox - Friend WithEvents POWaveFormPart1 As System.Windows.Forms.TableLayoutPanel - Friend WithEvents TableLayoutPanel1 As System.Windows.Forms.TableLayoutPanel - Friend WithEvents TableLayoutPanel6 As System.Windows.Forms.TableLayoutPanel - Friend WithEvents FlowLayoutPanel1 As System.Windows.Forms.FlowLayoutPanel - Friend WithEvents FlowLayoutPanel2 As System.Windows.Forms.FlowLayoutPanel - Friend WithEvents POWAV As System.Windows.Forms.Panel - Friend WithEvents POWAVInner As System.Windows.Forms.TableLayoutPanel - Friend WithEvents POWAVSwitch As System.Windows.Forms.CheckBox - Friend WithEvents POBMP As System.Windows.Forms.Panel - Friend WithEvents POBMPInner As System.Windows.Forms.TableLayoutPanel - Friend WithEvents POBMPSwitch As System.Windows.Forms.CheckBox - Friend WithEvents POBeat As System.Windows.Forms.Panel - Friend WithEvents POBeatInner As System.Windows.Forms.TableLayoutPanel - Friend WithEvents POBeatSwitch As System.Windows.Forms.CheckBox - Friend WithEvents FlowLayoutPanel3 As System.Windows.Forms.FlowLayoutPanel - Friend WithEvents FlowLayoutPanel4 As System.Windows.Forms.FlowLayoutPanel - Friend WithEvents BWAVUp As System.Windows.Forms.Button - Friend WithEvents BWAVDown As System.Windows.Forms.Button - Friend WithEvents BWAVBrowse As System.Windows.Forms.Button - Friend WithEvents BWAVRemove As System.Windows.Forms.Button - Friend WithEvents BBMPUp As System.Windows.Forms.Button - Friend WithEvents BBMPDown As System.Windows.Forms.Button - Friend WithEvents BBMPBrowse As System.Windows.Forms.Button - Friend WithEvents BBMPRemove As System.Windows.Forms.Button - Friend WithEvents POExpansion As System.Windows.Forms.Panel - Friend WithEvents POExpansionInner As System.Windows.Forms.Panel - Friend WithEvents POExpansionSwitch As System.Windows.Forms.CheckBox - Friend WithEvents POWAVResizer As System.Windows.Forms.Button - Friend WithEvents POBMPResizer As System.Windows.Forms.Button - Friend WithEvents TableLayoutPanel7 As System.Windows.Forms.TableLayoutPanel - Friend WithEvents POExpansionResizer As System.Windows.Forms.Button - Friend WithEvents POBeatResizer As System.Windows.Forms.Button - Friend WithEvents POptionsResizer As System.Windows.Forms.Button - Friend WithEvents SpR As System.Windows.Forms.Button - Friend WithEvents SpL As System.Windows.Forms.Button - Friend WithEvents TBThemeLoadComptability As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents POWAVExpander As System.Windows.Forms.CheckBox - Friend WithEvents POWAVPart2 As System.Windows.Forms.TableLayoutPanel - Friend WithEvents CWAVMultiSelect As System.Windows.Forms.CheckBox - Friend WithEvents CWAVChangeLabel As System.Windows.Forms.CheckBox - Friend WithEvents nBeatD As System.Windows.Forms.NumericUpDown - Friend WithEvents BBeatApplyV As System.Windows.Forms.Button - Friend WithEvents tBeatValue As System.Windows.Forms.TextBox - Friend WithEvents POBeatExpander As System.Windows.Forms.CheckBox - Friend WithEvents POBeatPart2 As System.Windows.Forms.TableLayoutPanel - Friend WithEvents CBeatScale As System.Windows.Forms.RadioButton - Friend WithEvents CBeatCut As System.Windows.Forms.RadioButton - Friend WithEvents CBeatMeasure As System.Windows.Forms.RadioButton - Friend WithEvents CBeatPreserve As System.Windows.Forms.RadioButton - Friend WithEvents Label13 As System.Windows.Forms.Label - Friend WithEvents ToolTipUniversal As System.Windows.Forms.ToolTip - Friend WithEvents CGBPM As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents BGSlash As System.Windows.Forms.Button - Friend WithEvents FSM As System.Windows.Forms.ToolStripStatusLabel - Friend WithEvents mnGotoMeasure As ToolStripMenuItem - Friend WithEvents ToolStripSeparator24 As ToolStripSeparator - Friend WithEvents ToolStripSeparator8 As ToolStripSeparator - Friend WithEvents TBWavIncrease As ToolStripButton - Friend WithEvents TimeStatusLabel As ToolStripStatusLabel - Friend WithEvents BConvertStop As ToolStripButton -End Class + +Partial Class MainWindow + Inherits System.Windows.Forms.Form + + 'Form 重写 Dispose,以清理组件列表。 + + Protected Overrides Sub Dispose(ByVal disposing As Boolean) + If disposing AndAlso components IsNot Nothing Then + components.Dispose() + End If + MyBase.Dispose(disposing) + End Sub + + 'Windows 窗体设计器所必需的 + Private components As System.ComponentModel.IContainer + + '注意: 以下过程是 Windows 窗体设计器所必需的 + '可以使用 Windows 窗体设计器修改它。 + '不要使用代码编辑器修改它。 + + Private Sub InitializeComponent() + Me.components = New System.ComponentModel.Container() + Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(MainWindow)) + Me.cmnLanguage = New System.Windows.Forms.ContextMenuStrip(Me.components) + Me.TBLangDef = New System.Windows.Forms.ToolStripMenuItem() + Me.TBLangRefresh = New System.Windows.Forms.ToolStripMenuItem() + Me.ToolStripSeparator9 = New System.Windows.Forms.ToolStripSeparator() + Me.TBLanguage = New System.Windows.Forms.ToolStripDropDownButton() + Me.mnLanguage = New System.Windows.Forms.ToolStripMenuItem() + Me.cmnTheme = New System.Windows.Forms.ContextMenuStrip(Me.components) + Me.TBThemeDef = New System.Windows.Forms.ToolStripMenuItem() + Me.TBThemeSave = New System.Windows.Forms.ToolStripMenuItem() + Me.TBThemeRefresh = New System.Windows.Forms.ToolStripMenuItem() + Me.TBThemeLoadComptability = New System.Windows.Forms.ToolStripMenuItem() + Me.ToolStripSeparator6 = New System.Windows.Forms.ToolStripSeparator() + Me.TBTheme = New System.Windows.Forms.ToolStripDropDownButton() + Me.mnTheme = New System.Windows.Forms.ToolStripMenuItem() + Me.POptionsScroll = New System.Windows.Forms.Panel() + Me.POptions = New System.Windows.Forms.Panel() + Me.POExpansion = New System.Windows.Forms.Panel() + Me.POExpansionInner = New System.Windows.Forms.Panel() + Me.TExpansion = New System.Windows.Forms.TextBox() + Me.POExpansionResizer = New System.Windows.Forms.Button() + Me.POExpansionSwitch = New System.Windows.Forms.CheckBox() + Me.POBeat = New System.Windows.Forms.Panel() + Me.POBeatInner = New System.Windows.Forms.TableLayoutPanel() + Me.POBeatExpander = New System.Windows.Forms.CheckBox() + Me.POBeatResizer = New System.Windows.Forms.Button() + Me.TableLayoutPanel7 = New System.Windows.Forms.TableLayoutPanel() + Me.nBeatD = New System.Windows.Forms.NumericUpDown() + Me.BBeatApplyV = New System.Windows.Forms.Button() + Me.nBeatN = New System.Windows.Forms.NumericUpDown() + Me.BBeatApply = New System.Windows.Forms.Button() + Me.Label7 = New System.Windows.Forms.Label() + Me.tBeatValue = New System.Windows.Forms.TextBox() + Me.LBeat = New System.Windows.Forms.ListBox() + Me.POBeatPart2 = New System.Windows.Forms.TableLayoutPanel() + Me.CBeatScale = New System.Windows.Forms.RadioButton() + Me.CBeatCut = New System.Windows.Forms.RadioButton() + Me.CBeatMeasure = New System.Windows.Forms.RadioButton() + Me.CBeatPreserve = New System.Windows.Forms.RadioButton() + Me.POBeatSwitch = New System.Windows.Forms.CheckBox() + Me.POWAV = New System.Windows.Forms.Panel() + Me.POWAVInner = New System.Windows.Forms.TableLayoutPanel() + Me.POWAVExpander = New System.Windows.Forms.CheckBox() + Me.LWAV = New System.Windows.Forms.ListBox() + Me.FlowLayoutPanel3 = New System.Windows.Forms.FlowLayoutPanel() + Me.BWAVUp = New System.Windows.Forms.Button() + Me.BWAVDown = New System.Windows.Forms.Button() + Me.BWAVBrowse = New System.Windows.Forms.Button() + Me.BWAVRemove = New System.Windows.Forms.Button() + Me.POWAVResizer = New System.Windows.Forms.Button() + Me.POWAVPart2 = New System.Windows.Forms.TableLayoutPanel() + Me.CWAVMultiSelect = New System.Windows.Forms.CheckBox() + Me.CWAVChangeLabel = New System.Windows.Forms.CheckBox() + Me.POWAVSwitch = New System.Windows.Forms.CheckBox() + Me.POWaveForm = New System.Windows.Forms.Panel() + Me.POWaveFormInner = New System.Windows.Forms.Panel() + Me.POWaveFormPart2 = New System.Windows.Forms.TableLayoutPanel() + Me.TWSaturation = New System.Windows.Forms.NumericUpDown() + Me.PictureBox2 = New System.Windows.Forms.PictureBox() + Me.TWTransparency = New System.Windows.Forms.NumericUpDown() + Me.PictureBox3 = New System.Windows.Forms.PictureBox() + Me.TWPrecision = New System.Windows.Forms.NumericUpDown() + Me.PictureBox4 = New System.Windows.Forms.PictureBox() + Me.TWWidth = New System.Windows.Forms.NumericUpDown() + Me.PictureBox5 = New System.Windows.Forms.PictureBox() + Me.TWLeft = New System.Windows.Forms.NumericUpDown() + Me.PictureBox6 = New System.Windows.Forms.PictureBox() + Me.TWSaturation2 = New System.Windows.Forms.TrackBar() + Me.TWLeft2 = New System.Windows.Forms.TrackBar() + Me.TWTransparency2 = New System.Windows.Forms.TrackBar() + Me.TWWidth2 = New System.Windows.Forms.TrackBar() + Me.TWPrecision2 = New System.Windows.Forms.TrackBar() + Me.POWaveFormExpander = New System.Windows.Forms.CheckBox() + Me.POWaveFormPart1 = New System.Windows.Forms.TableLayoutPanel() + Me.TableLayoutPanel1 = New System.Windows.Forms.TableLayoutPanel() + Me.FlowLayoutPanel1 = New System.Windows.Forms.FlowLayoutPanel() + Me.BWLoad = New System.Windows.Forms.Button() + Me.BWClear = New System.Windows.Forms.Button() + Me.BWLock = New System.Windows.Forms.CheckBox() + Me.TWFileName = New System.Windows.Forms.TextBox() + Me.TableLayoutPanel6 = New System.Windows.Forms.TableLayoutPanel() + Me.PictureBox1 = New System.Windows.Forms.PictureBox() + Me.TWPosition2 = New System.Windows.Forms.TrackBar() + Me.TWPosition = New System.Windows.Forms.NumericUpDown() + Me.POWaveFormSwitch = New System.Windows.Forms.CheckBox() + Me.POGrid = New System.Windows.Forms.Panel() + Me.POGridInner = New System.Windows.Forms.Panel() + Me.POGridPart2 = New System.Windows.Forms.TableLayoutPanel() + Me.TableLayoutPanel5 = New System.Windows.Forms.TableLayoutPanel() + Me.FlowLayoutPanel2 = New System.Windows.Forms.FlowLayoutPanel() + Me.cVSLockL = New System.Windows.Forms.CheckBox() + Me.cVSLock = New System.Windows.Forms.CheckBox() + Me.cVSLockR = New System.Windows.Forms.CheckBox() + Me.Label5 = New System.Windows.Forms.Label() + Me.TableLayoutPanel4 = New System.Windows.Forms.TableLayoutPanel() + Me.Label1 = New System.Windows.Forms.Label() + Me.CGB = New System.Windows.Forms.NumericUpDown() + Me.POGridExpander = New System.Windows.Forms.CheckBox() + Me.POGridPart1 = New System.Windows.Forms.TableLayoutPanel() + Me.TableLayoutPanel3 = New System.Windows.Forms.TableLayoutPanel() + Me.PictureBox9 = New System.Windows.Forms.PictureBox() + Me.CGHeight2 = New System.Windows.Forms.TrackBar() + Me.CGHeight = New System.Windows.Forms.NumericUpDown() + Me.PictureBox10 = New System.Windows.Forms.PictureBox() + Me.CGWidth2 = New System.Windows.Forms.TrackBar() + Me.CGWidth = New System.Windows.Forms.NumericUpDown() + Me.CGDisableVertical = New System.Windows.Forms.CheckBox() + Me.CGSnap = New System.Windows.Forms.CheckBox() + Me.TableLayoutPanel2 = New System.Windows.Forms.TableLayoutPanel() + Me.PictureBox7 = New System.Windows.Forms.PictureBox() + Me.CGDivide = New System.Windows.Forms.NumericUpDown() + Me.CGSub = New System.Windows.Forms.NumericUpDown() + Me.BGSlash = New System.Windows.Forms.Button() + Me.POGridSwitch = New System.Windows.Forms.CheckBox() + Me.POHeader = New System.Windows.Forms.Panel() + Me.POHeaderInner = New System.Windows.Forms.Panel() + Me.POHeaderPart2 = New System.Windows.Forms.TableLayoutPanel() + Me.CHDifficulty = New System.Windows.Forms.ComboBox() + Me.Label13 = New System.Windows.Forms.Label() + Me.THExRank = New System.Windows.Forms.TextBox() + Me.Label25 = New System.Windows.Forms.Label() + Me.CHLnObj = New System.Windows.Forms.ComboBox() + Me.Label23 = New System.Windows.Forms.Label() + Me.Label21 = New System.Windows.Forms.Label() + Me.THComment = New System.Windows.Forms.TextBox() + Me.Label24 = New System.Windows.Forms.Label() + Me.Label15 = New System.Windows.Forms.Label() + Me.THTotal = New System.Windows.Forms.TextBox() + Me.Label20 = New System.Windows.Forms.Label() + Me.BHStageFile = New System.Windows.Forms.Button() + Me.BHBanner = New System.Windows.Forms.Button() + Me.Label19 = New System.Windows.Forms.Label() + Me.BHBackBMP = New System.Windows.Forms.Button() + Me.Label17 = New System.Windows.Forms.Label() + Me.Label16 = New System.Windows.Forms.Label() + Me.Label12 = New System.Windows.Forms.Label() + Me.THBackBMP = New System.Windows.Forms.TextBox() + Me.Label11 = New System.Windows.Forms.Label() + Me.THBanner = New System.Windows.Forms.TextBox() + Me.THStageFile = New System.Windows.Forms.TextBox() + Me.THSubTitle = New System.Windows.Forms.TextBox() + Me.THSubArtist = New System.Windows.Forms.TextBox() + Me.POHeaderExpander = New System.Windows.Forms.CheckBox() + Me.POHeaderPart1 = New System.Windows.Forms.TableLayoutPanel() + Me.Label3 = New System.Windows.Forms.Label() + Me.THPlayLevel = New System.Windows.Forms.TextBox() + Me.CHRank = New System.Windows.Forms.ComboBox() + Me.Label10 = New System.Windows.Forms.Label() + Me.CHPlayer = New System.Windows.Forms.ComboBox() + Me.Label4 = New System.Windows.Forms.Label() + Me.THGenre = New System.Windows.Forms.TextBox() + Me.THBPM = New System.Windows.Forms.NumericUpDown() + Me.Label2 = New System.Windows.Forms.Label() + Me.THArtist = New System.Windows.Forms.TextBox() + Me.THTitle = New System.Windows.Forms.TextBox() + Me.Label9 = New System.Windows.Forms.Label() + Me.Label8 = New System.Windows.Forms.Label() + Me.Label6 = New System.Windows.Forms.Label() + Me.POHeaderSwitch = New System.Windows.Forms.CheckBox() + Me.Timer1 = New System.Windows.Forms.Timer(Me.components) + Me.Menu1 = New System.Windows.Forms.ContextMenuStrip(Me.components) + Me.MInsert = New System.Windows.Forms.ToolStripMenuItem() + Me.MRemove = New System.Windows.Forms.ToolStripMenuItem() + Me.AutoSaveTimer = New System.Windows.Forms.Timer(Me.components) + Me.mnMain = New System.Windows.Forms.MenuStrip() + Me.mnFile = New System.Windows.Forms.ToolStripMenuItem() + Me.mnNew = New System.Windows.Forms.ToolStripMenuItem() + Me.mnOpen = New System.Windows.Forms.ToolStripMenuItem() + Me.mnImportSM = New System.Windows.Forms.ToolStripMenuItem() + Me.mnImportIBMSC = New System.Windows.Forms.ToolStripMenuItem() + Me.ToolStripSeparator14 = New System.Windows.Forms.ToolStripSeparator() + Me.mnSave = New System.Windows.Forms.ToolStripMenuItem() + Me.mnSaveAs = New System.Windows.Forms.ToolStripMenuItem() + Me.mnExport = New System.Windows.Forms.ToolStripMenuItem() + Me.ToolStripSeparator15 = New System.Windows.Forms.ToolStripSeparator() + Me.mnOpenR0 = New System.Windows.Forms.ToolStripMenuItem() + Me.mnOpenR1 = New System.Windows.Forms.ToolStripMenuItem() + Me.mnOpenR2 = New System.Windows.Forms.ToolStripMenuItem() + Me.mnOpenR3 = New System.Windows.Forms.ToolStripMenuItem() + Me.mnOpenR4 = New System.Windows.Forms.ToolStripMenuItem() + Me.ToolStripSeparator16 = New System.Windows.Forms.ToolStripSeparator() + Me.mnQuit = New System.Windows.Forms.ToolStripMenuItem() + Me.mnEdit = New System.Windows.Forms.ToolStripMenuItem() + Me.mnUndo = New System.Windows.Forms.ToolStripMenuItem() + Me.mnRedo = New System.Windows.Forms.ToolStripMenuItem() + Me.ToolStripSeparator17 = New System.Windows.Forms.ToolStripSeparator() + Me.mnCut = New System.Windows.Forms.ToolStripMenuItem() + Me.mnCopy = New System.Windows.Forms.ToolStripMenuItem() + Me.mnPaste = New System.Windows.Forms.ToolStripMenuItem() + Me.mnDelete = New System.Windows.Forms.ToolStripMenuItem() + Me.mnSelectAll = New System.Windows.Forms.ToolStripMenuItem() + Me.mnGotoMeasure = New System.Windows.Forms.ToolStripMenuItem() + Me.ToolStripSeparator18 = New System.Windows.Forms.ToolStripSeparator() + Me.mnFind = New System.Windows.Forms.ToolStripMenuItem() + Me.mnStatistics = New System.Windows.Forms.ToolStripMenuItem() + Me.ToolStripSeparator19 = New System.Windows.Forms.ToolStripSeparator() + Me.mnTimeSelect = New System.Windows.Forms.ToolStripMenuItem() + Me.mnSelect = New System.Windows.Forms.ToolStripMenuItem() + Me.mnWrite = New System.Windows.Forms.ToolStripMenuItem() + Me.ToolStripSeparator23 = New System.Windows.Forms.ToolStripSeparator() + Me.mnMyO2 = New System.Windows.Forms.ToolStripMenuItem() + Me.mnSys = New System.Windows.Forms.ToolStripMenuItem() + Me.mnSMenu = New System.Windows.Forms.ToolStripMenuItem() + Me.mnSTB = New System.Windows.Forms.ToolStripMenuItem() + Me.mnSOP = New System.Windows.Forms.ToolStripMenuItem() + Me.mnSStatus = New System.Windows.Forms.ToolStripMenuItem() + Me.mnSLSplitter = New System.Windows.Forms.ToolStripMenuItem() + Me.mnSRSplitter = New System.Windows.Forms.ToolStripMenuItem() + Me.ToolStripSeparator21 = New System.Windows.Forms.ToolStripSeparator() + Me.CGShow = New System.Windows.Forms.ToolStripMenuItem() + Me.CGShowS = New System.Windows.Forms.ToolStripMenuItem() + Me.CGShowBG = New System.Windows.Forms.ToolStripMenuItem() + Me.CGShowM = New System.Windows.Forms.ToolStripMenuItem() + Me.CGShowMB = New System.Windows.Forms.ToolStripMenuItem() + Me.CGShowV = New System.Windows.Forms.ToolStripMenuItem() + Me.CGShowC = New System.Windows.Forms.ToolStripMenuItem() + Me.ToolStripSeparator22 = New System.Windows.Forms.ToolStripSeparator() + Me.CGBPM = New System.Windows.Forms.ToolStripMenuItem() + Me.CGSTOP = New System.Windows.Forms.ToolStripMenuItem() + Me.CGSCROLL = New System.Windows.Forms.ToolStripMenuItem() + Me.CGBLP = New System.Windows.Forms.ToolStripMenuItem() + Me.mnOptions = New System.Windows.Forms.ToolStripMenuItem() + Me.mnNTInput = New System.Windows.Forms.ToolStripMenuItem() + Me.mnErrorCheck = New System.Windows.Forms.ToolStripMenuItem() + Me.mnPreviewOnClick = New System.Windows.Forms.ToolStripMenuItem() + Me.mnShowFileName = New System.Windows.Forms.ToolStripMenuItem() + Me.ToolStripSeparator20 = New System.Windows.Forms.ToolStripSeparator() + Me.mnGOptions = New System.Windows.Forms.ToolStripMenuItem() + Me.mnVOptions = New System.Windows.Forms.ToolStripMenuItem() + Me.mnPOptions = New System.Windows.Forms.ToolStripMenuItem() + Me.mnConversion = New System.Windows.Forms.ToolStripMenuItem() + Me.cmnConversion = New System.Windows.Forms.ContextMenuStrip(Me.components) + Me.POBLong = New System.Windows.Forms.ToolStripMenuItem() + Me.POBShort = New System.Windows.Forms.ToolStripMenuItem() + Me.POBLongShort = New System.Windows.Forms.ToolStripMenuItem() + Me.ToolStripSeparator10 = New System.Windows.Forms.ToolStripSeparator() + Me.POBHidden = New System.Windows.Forms.ToolStripMenuItem() + Me.POBVisible = New System.Windows.Forms.ToolStripMenuItem() + Me.POBHiddenVisible = New System.Windows.Forms.ToolStripMenuItem() + Me.ToolStripSeparator11 = New System.Windows.Forms.ToolStripSeparator() + Me.POBModify = New System.Windows.Forms.ToolStripMenuItem() + Me.POBMirror = New System.Windows.Forms.ToolStripMenuItem() + Me.POBFlip = New System.Windows.Forms.ToolStripMenuItem() + Me.POBRandom = New System.Windows.Forms.ToolStripMenuItem() + Me.POBSRandom = New System.Windows.Forms.ToolStripMenuItem() + Me.mnPreview = New System.Windows.Forms.ToolStripMenuItem() + Me.mnPlayB = New System.Windows.Forms.ToolStripMenuItem() + Me.mnPlay = New System.Windows.Forms.ToolStripMenuItem() + Me.mnStop = New System.Windows.Forms.ToolStripMenuItem() + Me.POConvert = New System.Windows.Forms.ToolStripDropDownButton() + Me.TBMain = New System.Windows.Forms.ToolStrip() + Me.TBNew = New System.Windows.Forms.ToolStripButton() + Me.TBOpen = New System.Windows.Forms.ToolStripSplitButton() + Me.TBOpenR0 = New System.Windows.Forms.ToolStripMenuItem() + Me.TBOpenR1 = New System.Windows.Forms.ToolStripMenuItem() + Me.TBOpenR2 = New System.Windows.Forms.ToolStripMenuItem() + Me.TBOpenR3 = New System.Windows.Forms.ToolStripMenuItem() + Me.TBOpenR4 = New System.Windows.Forms.ToolStripMenuItem() + Me.ToolStripSeparator12 = New System.Windows.Forms.ToolStripSeparator() + Me.TBImportSM = New System.Windows.Forms.ToolStripMenuItem() + Me.TBImportIBMSC = New System.Windows.Forms.ToolStripMenuItem() + Me.TBSave = New System.Windows.Forms.ToolStripSplitButton() + Me.TBSaveAs = New System.Windows.Forms.ToolStripMenuItem() + Me.TBExport = New System.Windows.Forms.ToolStripMenuItem() + Me.ToolStripSeparator1 = New System.Windows.Forms.ToolStripSeparator() + Me.TBCut = New System.Windows.Forms.ToolStripButton() + Me.TBCopy = New System.Windows.Forms.ToolStripButton() + Me.TBPaste = New System.Windows.Forms.ToolStripButton() + Me.TBFind = New System.Windows.Forms.ToolStripButton() + Me.ToolStripSeparator24 = New System.Windows.Forms.ToolStripSeparator() + Me.TBStatistics = New System.Windows.Forms.ToolStripButton() + Me.TBMyO2 = New System.Windows.Forms.ToolStripButton() + Me.ToolStripSeparator4 = New System.Windows.Forms.ToolStripSeparator() + Me.TBErrorCheck = New System.Windows.Forms.ToolStripButton() + Me.TBPreviewOnClick = New System.Windows.Forms.ToolStripButton() + Me.TBShowFileName = New System.Windows.Forms.ToolStripButton() + Me.ToolStripSeparator8 = New System.Windows.Forms.ToolStripSeparator() + Me.TBNTInput = New System.Windows.Forms.ToolStripButton() + Me.TBWavIncrease = New System.Windows.Forms.ToolStripButton() + Me.ToolStripSeparator2 = New System.Windows.Forms.ToolStripSeparator() + Me.TBUndo = New System.Windows.Forms.ToolStripButton() + Me.TBRedo = New System.Windows.Forms.ToolStripButton() + Me.ToolStripSeparator5 = New System.Windows.Forms.ToolStripSeparator() + Me.TBTimeSelect = New System.Windows.Forms.ToolStripButton() + Me.TBSelect = New System.Windows.Forms.ToolStripButton() + Me.TBWrite = New System.Windows.Forms.ToolStripButton() + Me.ToolStripSeparator3 = New System.Windows.Forms.ToolStripSeparator() + Me.TBPlayB = New System.Windows.Forms.ToolStripButton() + Me.TBPlay = New System.Windows.Forms.ToolStripButton() + Me.TBStop = New System.Windows.Forms.ToolStripButton() + Me.TBPOptions = New System.Windows.Forms.ToolStripButton() + Me.ToolStripSeparator7 = New System.Windows.Forms.ToolStripSeparator() + Me.TBVOptions = New System.Windows.Forms.ToolStripButton() + Me.TBGOptions = New System.Windows.Forms.ToolStripButton() + Me.POBStorm = New System.Windows.Forms.ToolStripButton() + Me.pStatus = New System.Windows.Forms.Panel() + Me.FStatus2 = New System.Windows.Forms.StatusStrip() + Me.FSSS = New System.Windows.Forms.ToolStripButton() + Me.FSSL = New System.Windows.Forms.ToolStripButton() + Me.FSSH = New System.Windows.Forms.ToolStripButton() + Me.BVCReverse = New System.Windows.Forms.ToolStripButton() + Me.LblMultiply = New System.Windows.Forms.ToolStripStatusLabel() + Me.TVCM = New System.Windows.Forms.ToolStripTextBox() + Me.LblDivide = New System.Windows.Forms.ToolStripStatusLabel() + Me.TVCD = New System.Windows.Forms.ToolStripTextBox() + Me.BVCApply = New System.Windows.Forms.ToolStripButton() + Me.TVCBPM = New System.Windows.Forms.ToolStripTextBox() + Me.BVCCalculate = New System.Windows.Forms.ToolStripButton() + Me.BConvertStop = New System.Windows.Forms.ToolStripButton() + Me.FStatus = New System.Windows.Forms.StatusStrip() + Me.FSC = New System.Windows.Forms.ToolStripStatusLabel() + Me.FSW = New System.Windows.Forms.ToolStripStatusLabel() + Me.FSM = New System.Windows.Forms.ToolStripStatusLabel() + Me.FSP1 = New System.Windows.Forms.ToolStripStatusLabel() + Me.FSP3 = New System.Windows.Forms.ToolStripStatusLabel() + Me.FSP2 = New System.Windows.Forms.ToolStripStatusLabel() + Me.FSP4 = New System.Windows.Forms.ToolStripStatusLabel() + Me.TimeStatusLabel = New System.Windows.Forms.ToolStripStatusLabel() + Me.FST = New System.Windows.Forms.ToolStripStatusLabel() + Me.FSH = New System.Windows.Forms.ToolStripStatusLabel() + Me.FSE = New System.Windows.Forms.ToolStripStatusLabel() + Me.TimerMiddle = New System.Windows.Forms.Timer(Me.components) + Me.ToolStripContainer1 = New System.Windows.Forms.ToolStripContainer() + Me.PMain = New System.Windows.Forms.Panel() + Me.PMainIn = New System.Windows.Forms.Panel() + Me.MainPanelScroll = New System.Windows.Forms.VScrollBar() + Me.HS = New System.Windows.Forms.HScrollBar() + Me.SpR = New System.Windows.Forms.Button() + Me.SpL = New System.Windows.Forms.Button() + Me.PMainR = New System.Windows.Forms.Panel() + Me.PMainInR = New System.Windows.Forms.Panel() + Me.RightPanelScroll = New System.Windows.Forms.VScrollBar() + Me.HSR = New System.Windows.Forms.HScrollBar() + Me.PMainL = New System.Windows.Forms.Panel() + Me.PMainInL = New System.Windows.Forms.Panel() + Me.LeftPanelScroll = New System.Windows.Forms.VScrollBar() + Me.HSL = New System.Windows.Forms.HScrollBar() + Me.POptionsResizer = New System.Windows.Forms.Button() + Me.ToolTipUniversal = New System.Windows.Forms.ToolTip(Me.components) + Me.cmnLanguage.SuspendLayout() + Me.cmnTheme.SuspendLayout() + Me.POptionsScroll.SuspendLayout() + Me.POptions.SuspendLayout() + Me.POExpansion.SuspendLayout() + Me.POExpansionInner.SuspendLayout() + Me.POBeat.SuspendLayout() + Me.POBeatInner.SuspendLayout() + Me.TableLayoutPanel7.SuspendLayout() + CType(Me.nBeatD, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.nBeatN, System.ComponentModel.ISupportInitialize).BeginInit() + Me.POBeatPart2.SuspendLayout() + Me.POWAV.SuspendLayout() + Me.POWAVInner.SuspendLayout() + Me.FlowLayoutPanel3.SuspendLayout() + Me.POWAVPart2.SuspendLayout() + Me.POWaveForm.SuspendLayout() + Me.POWaveFormInner.SuspendLayout() + Me.POWaveFormPart2.SuspendLayout() + CType(Me.TWSaturation, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.PictureBox2, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.TWTransparency, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.PictureBox3, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.TWPrecision, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.PictureBox4, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.TWWidth, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.PictureBox5, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.TWLeft, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.PictureBox6, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.TWSaturation2, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.TWLeft2, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.TWTransparency2, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.TWWidth2, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.TWPrecision2, System.ComponentModel.ISupportInitialize).BeginInit() + Me.POWaveFormPart1.SuspendLayout() + Me.TableLayoutPanel1.SuspendLayout() + Me.FlowLayoutPanel1.SuspendLayout() + Me.TableLayoutPanel6.SuspendLayout() + CType(Me.PictureBox1, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.TWPosition2, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.TWPosition, System.ComponentModel.ISupportInitialize).BeginInit() + Me.POGrid.SuspendLayout() + Me.POGridInner.SuspendLayout() + Me.POGridPart2.SuspendLayout() + Me.TableLayoutPanel5.SuspendLayout() + Me.FlowLayoutPanel2.SuspendLayout() + Me.TableLayoutPanel4.SuspendLayout() + CType(Me.CGB, System.ComponentModel.ISupportInitialize).BeginInit() + Me.POGridPart1.SuspendLayout() + Me.TableLayoutPanel3.SuspendLayout() + CType(Me.PictureBox9, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.CGHeight2, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.CGHeight, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.PictureBox10, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.CGWidth2, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.CGWidth, System.ComponentModel.ISupportInitialize).BeginInit() + Me.TableLayoutPanel2.SuspendLayout() + CType(Me.PictureBox7, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.CGDivide, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.CGSub, System.ComponentModel.ISupportInitialize).BeginInit() + Me.POHeader.SuspendLayout() + Me.POHeaderInner.SuspendLayout() + Me.POHeaderPart2.SuspendLayout() + Me.POHeaderPart1.SuspendLayout() + CType(Me.THBPM, System.ComponentModel.ISupportInitialize).BeginInit() + Me.Menu1.SuspendLayout() + Me.mnMain.SuspendLayout() + Me.cmnConversion.SuspendLayout() + Me.TBMain.SuspendLayout() + Me.pStatus.SuspendLayout() + Me.FStatus2.SuspendLayout() + Me.FStatus.SuspendLayout() + Me.ToolStripContainer1.ContentPanel.SuspendLayout() + Me.ToolStripContainer1.TopToolStripPanel.SuspendLayout() + Me.ToolStripContainer1.SuspendLayout() + Me.PMain.SuspendLayout() + Me.PMainR.SuspendLayout() + Me.PMainL.SuspendLayout() + Me.SuspendLayout() + ' + 'cmnLanguage + ' + Me.cmnLanguage.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.TBLangDef, Me.TBLangRefresh, Me.ToolStripSeparator9}) + Me.cmnLanguage.Name = "cmnLanguage" + Me.cmnLanguage.OwnerItem = Me.mnLanguage + Me.cmnLanguage.Size = New System.Drawing.Size(121, 54) + ' + 'TBLangDef + ' + Me.TBLangDef.Name = "TBLangDef" + Me.TBLangDef.Size = New System.Drawing.Size(120, 22) + Me.TBLangDef.Text = "(Default)" + ' + 'TBLangRefresh + ' + Me.TBLangRefresh.Image = Global.iBMSC.My.Resources.Resources.x16Refresh + Me.TBLangRefresh.Name = "TBLangRefresh" + Me.TBLangRefresh.Size = New System.Drawing.Size(120, 22) + Me.TBLangRefresh.Text = "Refresh" + ' + 'ToolStripSeparator9 + ' + Me.ToolStripSeparator9.Name = "ToolStripSeparator9" + Me.ToolStripSeparator9.Size = New System.Drawing.Size(117, 6) + ' + 'TBLanguage + ' + Me.TBLanguage.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image + Me.TBLanguage.DropDown = Me.cmnLanguage + Me.TBLanguage.Image = Global.iBMSC.My.Resources.Resources.x16Language + Me.TBLanguage.ImageTransparentColor = System.Drawing.Color.Magenta + Me.TBLanguage.Name = "TBLanguage" + Me.TBLanguage.Size = New System.Drawing.Size(29, 22) + Me.TBLanguage.Text = "Language" + ' + 'mnLanguage + ' + Me.mnLanguage.DropDown = Me.cmnLanguage + Me.mnLanguage.Image = Global.iBMSC.My.Resources.Resources.x16Language + Me.mnLanguage.Name = "mnLanguage" + Me.mnLanguage.Size = New System.Drawing.Size(228, 22) + Me.mnLanguage.Text = "&Language" + ' + 'cmnTheme + ' + Me.cmnTheme.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.TBThemeDef, Me.TBThemeSave, Me.TBThemeRefresh, Me.TBThemeLoadComptability, Me.ToolStripSeparator6}) + Me.cmnTheme.Name = "cmnLanguage" + Me.cmnTheme.OwnerItem = Me.mnTheme + Me.cmnTheme.Size = New System.Drawing.Size(246, 98) + ' + 'TBThemeDef + ' + Me.TBThemeDef.Name = "TBThemeDef" + Me.TBThemeDef.Size = New System.Drawing.Size(245, 22) + Me.TBThemeDef.Text = "(Default)" + ' + 'TBThemeSave + ' + Me.TBThemeSave.Image = Global.iBMSC.My.Resources.Resources.x16SaveAs + Me.TBThemeSave.Name = "TBThemeSave" + Me.TBThemeSave.Size = New System.Drawing.Size(245, 22) + Me.TBThemeSave.Text = "Save Theme" + ' + 'TBThemeRefresh + ' + Me.TBThemeRefresh.Image = Global.iBMSC.My.Resources.Resources.x16Refresh + Me.TBThemeRefresh.Name = "TBThemeRefresh" + Me.TBThemeRefresh.Size = New System.Drawing.Size(245, 22) + Me.TBThemeRefresh.Text = "Refresh" + ' + 'TBThemeLoadComptability + ' + Me.TBThemeLoadComptability.Name = "TBThemeLoadComptability" + Me.TBThemeLoadComptability.Size = New System.Drawing.Size(245, 22) + Me.TBThemeLoadComptability.Text = "Load Theme File from iBMSC 2.x" + ' + 'ToolStripSeparator6 + ' + Me.ToolStripSeparator6.Name = "ToolStripSeparator6" + Me.ToolStripSeparator6.Size = New System.Drawing.Size(242, 6) + ' + 'TBTheme + ' + Me.TBTheme.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image + Me.TBTheme.DropDown = Me.cmnTheme + Me.TBTheme.Image = Global.iBMSC.My.Resources.Resources.x16Theme + Me.TBTheme.ImageTransparentColor = System.Drawing.Color.Magenta + Me.TBTheme.Name = "TBTheme" + Me.TBTheme.Size = New System.Drawing.Size(29, 22) + Me.TBTheme.Text = "Theme" + ' + 'mnTheme + ' + Me.mnTheme.DropDown = Me.cmnTheme + Me.mnTheme.Image = Global.iBMSC.My.Resources.Resources.x16Theme + Me.mnTheme.Name = "mnTheme" + Me.mnTheme.Size = New System.Drawing.Size(228, 22) + Me.mnTheme.Text = "&Theme" + ' + 'POptionsScroll + ' + Me.POptionsScroll.AutoScroll = True + Me.POptionsScroll.Controls.Add(Me.POptions) + Me.POptionsScroll.Dock = System.Windows.Forms.DockStyle.Right + Me.POptionsScroll.Location = New System.Drawing.Point(958, 0) + Me.POptionsScroll.Name = "POptionsScroll" + Me.POptionsScroll.Size = New System.Drawing.Size(200, 781) + Me.POptionsScroll.TabIndex = 28 + ' + 'POptions + ' + Me.POptions.AutoSize = True + Me.POptions.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink + Me.POptions.Controls.Add(Me.POExpansion) + Me.POptions.Controls.Add(Me.POBeat) + Me.POptions.Controls.Add(Me.POWAV) + Me.POptions.Controls.Add(Me.POWaveForm) + Me.POptions.Controls.Add(Me.POGrid) + Me.POptions.Controls.Add(Me.POHeader) + Me.POptions.Dock = System.Windows.Forms.DockStyle.Top + Me.POptions.Location = New System.Drawing.Point(0, 0) + Me.POptions.Name = "POptions" + Me.POptions.Size = New System.Drawing.Size(183, 1722) + Me.POptions.TabIndex = 29 + ' + 'POExpansion + ' + Me.POExpansion.AutoSize = True + Me.POExpansion.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink + Me.POExpansion.Controls.Add(Me.POExpansionInner) + Me.POExpansion.Controls.Add(Me.POExpansionSwitch) + Me.POExpansion.Dock = System.Windows.Forms.DockStyle.Top + Me.POExpansion.Location = New System.Drawing.Point(0, 1452) + Me.POExpansion.Name = "POExpansion" + Me.POExpansion.Size = New System.Drawing.Size(183, 270) + Me.POExpansion.TabIndex = 6 + ' + 'POExpansionInner + ' + Me.POExpansionInner.Controls.Add(Me.TExpansion) + Me.POExpansionInner.Controls.Add(Me.POExpansionResizer) + Me.POExpansionInner.Dock = System.Windows.Forms.DockStyle.Top + Me.POExpansionInner.Font = New System.Drawing.Font("Consolas", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.POExpansionInner.Location = New System.Drawing.Point(0, 20) + Me.POExpansionInner.Name = "POExpansionInner" + Me.POExpansionInner.Size = New System.Drawing.Size(183, 250) + Me.POExpansionInner.TabIndex = 7 + Me.POExpansionInner.Visible = False + ' + 'TExpansion + ' + Me.TExpansion.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle + Me.TExpansion.Dock = System.Windows.Forms.DockStyle.Fill + Me.TExpansion.HideSelection = False + Me.TExpansion.Location = New System.Drawing.Point(0, 0) + Me.TExpansion.Multiline = True + Me.TExpansion.Name = "TExpansion" + Me.TExpansion.ScrollBars = System.Windows.Forms.ScrollBars.Vertical + Me.TExpansion.Size = New System.Drawing.Size(183, 245) + Me.TExpansion.TabIndex = 1002 + Me.TExpansion.WordWrap = False + ' + 'POExpansionResizer + ' + Me.POExpansionResizer.Dock = System.Windows.Forms.DockStyle.Bottom + Me.POExpansionResizer.FlatAppearance.BorderSize = 0 + Me.POExpansionResizer.FlatStyle = System.Windows.Forms.FlatStyle.Flat + Me.POExpansionResizer.Location = New System.Drawing.Point(0, 245) + Me.POExpansionResizer.Margin = New System.Windows.Forms.Padding(0) + Me.POExpansionResizer.Name = "POExpansionResizer" + Me.POExpansionResizer.Size = New System.Drawing.Size(183, 5) + Me.POExpansionResizer.TabIndex = 65 + Me.POExpansionResizer.TabStop = False + Me.POExpansionResizer.UseVisualStyleBackColor = True + ' + 'POExpansionSwitch + ' + Me.POExpansionSwitch.Appearance = System.Windows.Forms.Appearance.Button + Me.POExpansionSwitch.BackColor = System.Drawing.SystemColors.Control + Me.POExpansionSwitch.Cursor = System.Windows.Forms.Cursors.Hand + Me.POExpansionSwitch.Dock = System.Windows.Forms.DockStyle.Top + Me.POExpansionSwitch.Font = New System.Drawing.Font("Segoe UI", 9.0!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.POExpansionSwitch.Location = New System.Drawing.Point(0, 0) + Me.POExpansionSwitch.Name = "POExpansionSwitch" + Me.POExpansionSwitch.Size = New System.Drawing.Size(183, 20) + Me.POExpansionSwitch.TabIndex = 1001 + Me.POExpansionSwitch.TabStop = False + Me.POExpansionSwitch.Text = "Expansion Code" + Me.POExpansionSwitch.TextAlign = System.Drawing.ContentAlignment.MiddleCenter + Me.POExpansionSwitch.UseCompatibleTextRendering = True + Me.POExpansionSwitch.UseVisualStyleBackColor = False + ' + 'POBeat + ' + Me.POBeat.AutoSize = True + Me.POBeat.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink + Me.POBeat.Controls.Add(Me.POBeatInner) + Me.POBeat.Controls.Add(Me.POBeatSwitch) + Me.POBeat.Dock = System.Windows.Forms.DockStyle.Top + Me.POBeat.Location = New System.Drawing.Point(0, 1182) + Me.POBeat.Name = "POBeat" + Me.POBeat.Size = New System.Drawing.Size(183, 270) + Me.POBeat.TabIndex = 5 + ' + 'POBeatInner + ' + Me.POBeatInner.ColumnCount = 1 + Me.POBeatInner.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100.0!)) + Me.POBeatInner.Controls.Add(Me.POBeatExpander, 0, 1) + Me.POBeatInner.Controls.Add(Me.POBeatResizer, 0, 4) + Me.POBeatInner.Controls.Add(Me.TableLayoutPanel7, 0, 0) + Me.POBeatInner.Controls.Add(Me.LBeat, 0, 3) + Me.POBeatInner.Controls.Add(Me.POBeatPart2, 0, 2) + Me.POBeatInner.Dock = System.Windows.Forms.DockStyle.Top + Me.POBeatInner.Location = New System.Drawing.Point(0, 20) + Me.POBeatInner.Name = "POBeatInner" + Me.POBeatInner.RowCount = 5 + Me.POBeatInner.RowStyles.Add(New System.Windows.Forms.RowStyle()) + Me.POBeatInner.RowStyles.Add(New System.Windows.Forms.RowStyle()) + Me.POBeatInner.RowStyles.Add(New System.Windows.Forms.RowStyle()) + Me.POBeatInner.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100.0!)) + Me.POBeatInner.RowStyles.Add(New System.Windows.Forms.RowStyle()) + Me.POBeatInner.Size = New System.Drawing.Size(183, 250) + Me.POBeatInner.TabIndex = 6 + Me.POBeatInner.Visible = False + ' + 'POBeatExpander + ' + Me.POBeatExpander.Appearance = System.Windows.Forms.Appearance.Button + Me.POBeatExpander.AutoSize = True + Me.POBeatExpander.Cursor = System.Windows.Forms.Cursors.Hand + Me.POBeatExpander.Dock = System.Windows.Forms.DockStyle.Top + Me.POBeatExpander.FlatAppearance.BorderSize = 0 + Me.POBeatExpander.FlatStyle = System.Windows.Forms.FlatStyle.Popup + Me.POBeatExpander.Location = New System.Drawing.Point(0, 54) + Me.POBeatExpander.Margin = New System.Windows.Forms.Padding(0) + Me.POBeatExpander.Name = "POBeatExpander" + Me.POBeatExpander.Size = New System.Drawing.Size(183, 25) + Me.POBeatExpander.TabIndex = 901 + Me.POBeatExpander.TabStop = False + Me.POBeatExpander.Text = "Expand..." + Me.POBeatExpander.TextAlign = System.Drawing.ContentAlignment.MiddleCenter + Me.POBeatExpander.UseVisualStyleBackColor = False + ' + 'POBeatResizer + ' + Me.POBeatInner.SetColumnSpan(Me.POBeatResizer, 2) + Me.POBeatResizer.Dock = System.Windows.Forms.DockStyle.Top + Me.POBeatResizer.FlatAppearance.BorderSize = 0 + Me.POBeatResizer.FlatStyle = System.Windows.Forms.FlatStyle.Flat + Me.POBeatResizer.Location = New System.Drawing.Point(0, 245) + Me.POBeatResizer.Margin = New System.Windows.Forms.Padding(0) + Me.POBeatResizer.Name = "POBeatResizer" + Me.POBeatResizer.Size = New System.Drawing.Size(183, 5) + Me.POBeatResizer.TabIndex = 64 + Me.POBeatResizer.TabStop = False + Me.POBeatResizer.UseVisualStyleBackColor = True + ' + 'TableLayoutPanel7 + ' + Me.TableLayoutPanel7.AutoSize = True + Me.TableLayoutPanel7.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink + Me.TableLayoutPanel7.ColumnCount = 4 + Me.TableLayoutPanel7.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 30.0!)) + Me.TableLayoutPanel7.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle()) + Me.TableLayoutPanel7.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 30.0!)) + Me.TableLayoutPanel7.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 40.0!)) + Me.TableLayoutPanel7.Controls.Add(Me.nBeatD, 2, 0) + Me.TableLayoutPanel7.Controls.Add(Me.BBeatApplyV, 3, 1) + Me.TableLayoutPanel7.Controls.Add(Me.nBeatN, 0, 0) + Me.TableLayoutPanel7.Controls.Add(Me.BBeatApply, 3, 0) + Me.TableLayoutPanel7.Controls.Add(Me.Label7, 1, 0) + Me.TableLayoutPanel7.Controls.Add(Me.tBeatValue, 0, 1) + Me.TableLayoutPanel7.Dock = System.Windows.Forms.DockStyle.Fill + Me.TableLayoutPanel7.Location = New System.Drawing.Point(0, 0) + Me.TableLayoutPanel7.Margin = New System.Windows.Forms.Padding(0) + Me.TableLayoutPanel7.Name = "TableLayoutPanel7" + Me.TableLayoutPanel7.RowCount = 2 + Me.TableLayoutPanel7.RowStyles.Add(New System.Windows.Forms.RowStyle()) + Me.TableLayoutPanel7.RowStyles.Add(New System.Windows.Forms.RowStyle()) + Me.TableLayoutPanel7.Size = New System.Drawing.Size(183, 54) + Me.TableLayoutPanel7.TabIndex = 63 + ' + 'nBeatD + ' + Me.nBeatD.Dock = System.Windows.Forms.DockStyle.Fill + Me.nBeatD.Location = New System.Drawing.Point(66, 3) + Me.nBeatD.Maximum = New Decimal(New Integer() {10000, 0, 0, 0}) + Me.nBeatD.Minimum = New Decimal(New Integer() {1, 0, 0, 0}) + Me.nBeatD.Name = "nBeatD" + Me.nBeatD.Size = New System.Drawing.Size(45, 23) + Me.nBeatD.TabIndex = 803 + Me.nBeatD.Value = New Decimal(New Integer() {4, 0, 0, 0}) + ' + 'BBeatApplyV + ' + Me.BBeatApplyV.AutoSize = True + Me.BBeatApplyV.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink + Me.BBeatApplyV.Dock = System.Windows.Forms.DockStyle.Fill + Me.BBeatApplyV.Location = New System.Drawing.Point(114, 29) + Me.BBeatApplyV.Margin = New System.Windows.Forms.Padding(0, 0, 3, 0) + Me.BBeatApplyV.Name = "BBeatApplyV" + Me.BBeatApplyV.Size = New System.Drawing.Size(66, 25) + Me.BBeatApplyV.TabIndex = 806 + Me.BBeatApplyV.Text = "Apply" + Me.BBeatApplyV.UseVisualStyleBackColor = True + ' + 'nBeatN + ' + Me.nBeatN.Dock = System.Windows.Forms.DockStyle.Fill + Me.nBeatN.Location = New System.Drawing.Point(3, 3) + Me.nBeatN.Maximum = New Decimal(New Integer() {99999, 0, 0, 0}) + Me.nBeatN.Minimum = New Decimal(New Integer() {1, 0, 0, 0}) + Me.nBeatN.Name = "nBeatN" + Me.nBeatN.Size = New System.Drawing.Size(45, 23) + Me.nBeatN.TabIndex = 802 + Me.nBeatN.Value = New Decimal(New Integer() {4, 0, 0, 0}) + ' + 'BBeatApply + ' + Me.BBeatApply.AutoSize = True + Me.BBeatApply.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink + Me.BBeatApply.Dock = System.Windows.Forms.DockStyle.Fill + Me.BBeatApply.Location = New System.Drawing.Point(114, 2) + Me.BBeatApply.Margin = New System.Windows.Forms.Padding(0, 2, 3, 2) + Me.BBeatApply.Name = "BBeatApply" + Me.BBeatApply.Size = New System.Drawing.Size(66, 25) + Me.BBeatApply.TabIndex = 804 + Me.BBeatApply.Text = "Apply" + Me.BBeatApply.UseVisualStyleBackColor = True + ' + 'Label7 + ' + Me.Label7.Anchor = System.Windows.Forms.AnchorStyles.None + Me.Label7.AutoSize = True + Me.Label7.Location = New System.Drawing.Point(51, 7) + Me.Label7.Margin = New System.Windows.Forms.Padding(0) + Me.Label7.Name = "Label7" + Me.Label7.Size = New System.Drawing.Size(12, 15) + Me.Label7.TabIndex = 31 + Me.Label7.Text = "/" + Me.Label7.TextAlign = System.Drawing.ContentAlignment.MiddleCenter + ' + 'tBeatValue + ' + Me.TableLayoutPanel7.SetColumnSpan(Me.tBeatValue, 3) + Me.tBeatValue.Dock = System.Windows.Forms.DockStyle.Fill + Me.tBeatValue.Location = New System.Drawing.Point(3, 30) + Me.tBeatValue.Margin = New System.Windows.Forms.Padding(3, 1, 3, 0) + Me.tBeatValue.Name = "tBeatValue" + Me.tBeatValue.Size = New System.Drawing.Size(108, 23) + Me.tBeatValue.TabIndex = 805 + Me.tBeatValue.Text = "1" + ' + 'LBeat + ' + Me.LBeat.Dock = System.Windows.Forms.DockStyle.Fill + Me.LBeat.Font = New System.Drawing.Font("Consolas", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.LBeat.IntegralHeight = False + Me.LBeat.ItemHeight = 14 + Me.LBeat.Items.AddRange(New Object() {"000: 15.984375 (1023/64)"}) + Me.LBeat.Location = New System.Drawing.Point(3, 155) + Me.LBeat.Margin = New System.Windows.Forms.Padding(3, 0, 3, 0) + Me.LBeat.Name = "LBeat" + Me.LBeat.SelectionMode = System.Windows.Forms.SelectionMode.MultiExtended + Me.LBeat.Size = New System.Drawing.Size(177, 90) + Me.LBeat.TabIndex = 906 + ' + 'POBeatPart2 + ' + Me.POBeatPart2.AutoSize = True + Me.POBeatPart2.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink + Me.POBeatPart2.ColumnCount = 1 + Me.POBeatPart2.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100.0!)) + Me.POBeatPart2.Controls.Add(Me.CBeatScale, 0, 3) + Me.POBeatPart2.Controls.Add(Me.CBeatCut, 0, 2) + Me.POBeatPart2.Controls.Add(Me.CBeatMeasure, 0, 1) + Me.POBeatPart2.Controls.Add(Me.CBeatPreserve, 0, 0) + Me.POBeatPart2.Dock = System.Windows.Forms.DockStyle.Fill + Me.POBeatPart2.Location = New System.Drawing.Point(0, 79) + Me.POBeatPart2.Margin = New System.Windows.Forms.Padding(0) + Me.POBeatPart2.Name = "POBeatPart2" + Me.POBeatPart2.RowCount = 4 + Me.POBeatPart2.RowStyles.Add(New System.Windows.Forms.RowStyle()) + Me.POBeatPart2.RowStyles.Add(New System.Windows.Forms.RowStyle()) + Me.POBeatPart2.RowStyles.Add(New System.Windows.Forms.RowStyle()) + Me.POBeatPart2.RowStyles.Add(New System.Windows.Forms.RowStyle()) + Me.POBeatPart2.Size = New System.Drawing.Size(183, 76) + Me.POBeatPart2.TabIndex = 66 + Me.POBeatPart2.Visible = False + ' + 'CBeatScale + ' + Me.CBeatScale.AutoSize = True + Me.CBeatScale.Location = New System.Drawing.Point(3, 57) + Me.CBeatScale.Margin = New System.Windows.Forms.Padding(3, 0, 3, 0) + Me.CBeatScale.Name = "CBeatScale" + Me.CBeatScale.Size = New System.Drawing.Size(151, 19) + Me.CBeatScale.TabIndex = 905 + Me.CBeatScale.Text = "Scale to measure length" + Me.CBeatScale.UseVisualStyleBackColor = True + ' + 'CBeatCut + ' + Me.CBeatCut.AutoEllipsis = True + Me.CBeatCut.Dock = System.Windows.Forms.DockStyle.Fill + Me.CBeatCut.Location = New System.Drawing.Point(3, 38) + Me.CBeatCut.Margin = New System.Windows.Forms.Padding(3, 0, 3, 0) + Me.CBeatCut.Name = "CBeatCut" + Me.CBeatCut.Size = New System.Drawing.Size(177, 19) + Me.CBeatCut.TabIndex = 904 + Me.CBeatCut.Text = "Keep measure position and cut overflow" + Me.CBeatCut.UseVisualStyleBackColor = True + ' + 'CBeatMeasure + ' + Me.CBeatMeasure.AutoSize = True + Me.CBeatMeasure.Location = New System.Drawing.Point(3, 19) + Me.CBeatMeasure.Margin = New System.Windows.Forms.Padding(3, 0, 3, 0) + Me.CBeatMeasure.Name = "CBeatMeasure" + Me.CBeatMeasure.Size = New System.Drawing.Size(145, 19) + Me.CBeatMeasure.TabIndex = 903 + Me.CBeatMeasure.Text = "Keep measure position" + Me.CBeatMeasure.UseVisualStyleBackColor = True + ' + 'CBeatPreserve + ' + Me.CBeatPreserve.AutoSize = True + Me.CBeatPreserve.Checked = True + Me.CBeatPreserve.Location = New System.Drawing.Point(3, 0) + Me.CBeatPreserve.Margin = New System.Windows.Forms.Padding(3, 0, 3, 0) + Me.CBeatPreserve.Name = "CBeatPreserve" + Me.CBeatPreserve.Size = New System.Drawing.Size(145, 19) + Me.CBeatPreserve.TabIndex = 902 + Me.CBeatPreserve.TabStop = True + Me.CBeatPreserve.Text = "Keep absolute position" + Me.CBeatPreserve.UseVisualStyleBackColor = True + ' + 'POBeatSwitch + ' + Me.POBeatSwitch.Appearance = System.Windows.Forms.Appearance.Button + Me.POBeatSwitch.BackColor = System.Drawing.SystemColors.Control + Me.POBeatSwitch.Cursor = System.Windows.Forms.Cursors.Hand + Me.POBeatSwitch.Dock = System.Windows.Forms.DockStyle.Top + Me.POBeatSwitch.Font = New System.Drawing.Font("Segoe UI", 9.0!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.POBeatSwitch.Location = New System.Drawing.Point(0, 0) + Me.POBeatSwitch.Name = "POBeatSwitch" + Me.POBeatSwitch.Size = New System.Drawing.Size(183, 20) + Me.POBeatSwitch.TabIndex = 801 + Me.POBeatSwitch.TabStop = False + Me.POBeatSwitch.Text = "Beat" + Me.POBeatSwitch.TextAlign = System.Drawing.ContentAlignment.MiddleCenter + Me.POBeatSwitch.UseCompatibleTextRendering = True + Me.POBeatSwitch.UseVisualStyleBackColor = False + ' + 'POWAV + ' + Me.POWAV.AllowDrop = True + Me.POWAV.AutoSize = True + Me.POWAV.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink + Me.POWAV.Controls.Add(Me.POWAVInner) + Me.POWAV.Controls.Add(Me.POWAVSwitch) + Me.POWAV.Dock = System.Windows.Forms.DockStyle.Top + Me.POWAV.Location = New System.Drawing.Point(0, 912) + Me.POWAV.Name = "POWAV" + Me.POWAV.Size = New System.Drawing.Size(183, 270) + Me.POWAV.TabIndex = 4 + ' + 'POWAVInner + ' + Me.POWAVInner.ColumnCount = 1 + Me.POWAVInner.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100.0!)) + Me.POWAVInner.Controls.Add(Me.POWAVExpander, 0, 1) + Me.POWAVInner.Controls.Add(Me.LWAV, 0, 3) + Me.POWAVInner.Controls.Add(Me.FlowLayoutPanel3, 0, 0) + Me.POWAVInner.Controls.Add(Me.POWAVResizer, 0, 4) + Me.POWAVInner.Controls.Add(Me.POWAVPart2, 0, 2) + Me.POWAVInner.Dock = System.Windows.Forms.DockStyle.Top + Me.POWAVInner.Location = New System.Drawing.Point(0, 20) + Me.POWAVInner.Name = "POWAVInner" + Me.POWAVInner.RowCount = 5 + Me.POWAVInner.RowStyles.Add(New System.Windows.Forms.RowStyle()) + Me.POWAVInner.RowStyles.Add(New System.Windows.Forms.RowStyle()) + Me.POWAVInner.RowStyles.Add(New System.Windows.Forms.RowStyle()) + Me.POWAVInner.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100.0!)) + Me.POWAVInner.RowStyles.Add(New System.Windows.Forms.RowStyle()) + Me.POWAVInner.Size = New System.Drawing.Size(183, 250) + Me.POWAVInner.TabIndex = 5 + ' + 'POWAVExpander + ' + Me.POWAVExpander.Appearance = System.Windows.Forms.Appearance.Button + Me.POWAVExpander.AutoSize = True + Me.POWAVExpander.Cursor = System.Windows.Forms.Cursors.Hand + Me.POWAVExpander.Dock = System.Windows.Forms.DockStyle.Top + Me.POWAVExpander.FlatAppearance.BorderSize = 0 + Me.POWAVExpander.FlatStyle = System.Windows.Forms.FlatStyle.Popup + Me.POWAVExpander.Location = New System.Drawing.Point(0, 30) + Me.POWAVExpander.Margin = New System.Windows.Forms.Padding(0) + Me.POWAVExpander.Name = "POWAVExpander" + Me.POWAVExpander.Size = New System.Drawing.Size(183, 25) + Me.POWAVExpander.TabIndex = 701 + Me.POWAVExpander.TabStop = False + Me.POWAVExpander.Text = "Expand..." + Me.POWAVExpander.TextAlign = System.Drawing.ContentAlignment.MiddleCenter + Me.POWAVExpander.UseVisualStyleBackColor = False + ' + 'LWAV + ' + Me.LWAV.Dock = System.Windows.Forms.DockStyle.Fill + Me.LWAV.Font = New System.Drawing.Font("Consolas", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.LWAV.IntegralHeight = False + Me.LWAV.ItemHeight = 14 + Me.LWAV.Location = New System.Drawing.Point(3, 93) + Me.LWAV.Margin = New System.Windows.Forms.Padding(3, 0, 3, 0) + Me.LWAV.Name = "LWAV" + Me.LWAV.SelectionMode = System.Windows.Forms.SelectionMode.MultiExtended + Me.LWAV.Size = New System.Drawing.Size(177, 152) + Me.LWAV.TabIndex = 704 + ' + 'FlowLayoutPanel3 + ' + Me.FlowLayoutPanel3.AutoSize = True + Me.FlowLayoutPanel3.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink + Me.FlowLayoutPanel3.Controls.Add(Me.BWAVUp) + Me.FlowLayoutPanel3.Controls.Add(Me.BWAVDown) + Me.FlowLayoutPanel3.Controls.Add(Me.BWAVBrowse) + Me.FlowLayoutPanel3.Controls.Add(Me.BWAVRemove) + Me.FlowLayoutPanel3.Location = New System.Drawing.Point(3, 3) + Me.FlowLayoutPanel3.Name = "FlowLayoutPanel3" + Me.FlowLayoutPanel3.Size = New System.Drawing.Size(96, 24) + Me.FlowLayoutPanel3.TabIndex = 26 + Me.FlowLayoutPanel3.WrapContents = False + ' + 'BWAVUp + ' + Me.BWAVUp.Image = Global.iBMSC.My.Resources.Resources.x16Up + Me.BWAVUp.Location = New System.Drawing.Point(0, 0) + Me.BWAVUp.Margin = New System.Windows.Forms.Padding(0) + Me.BWAVUp.Name = "BWAVUp" + Me.BWAVUp.Size = New System.Drawing.Size(24, 24) + Me.BWAVUp.TabIndex = 602 + Me.ToolTipUniversal.SetToolTip(Me.BWAVUp, "Move Up") + Me.BWAVUp.UseVisualStyleBackColor = True + ' + 'BWAVDown + ' + Me.BWAVDown.Image = Global.iBMSC.My.Resources.Resources.x16Down + Me.BWAVDown.Location = New System.Drawing.Point(24, 0) + Me.BWAVDown.Margin = New System.Windows.Forms.Padding(0) + Me.BWAVDown.Name = "BWAVDown" + Me.BWAVDown.Size = New System.Drawing.Size(24, 24) + Me.BWAVDown.TabIndex = 603 + Me.ToolTipUniversal.SetToolTip(Me.BWAVDown, "Move Down") + Me.BWAVDown.UseVisualStyleBackColor = True + ' + 'BWAVBrowse + ' + Me.BWAVBrowse.Image = Global.iBMSC.My.Resources.Resources.x16PlayerBrowse + Me.BWAVBrowse.Location = New System.Drawing.Point(48, 0) + Me.BWAVBrowse.Margin = New System.Windows.Forms.Padding(0) + Me.BWAVBrowse.Name = "BWAVBrowse" + Me.BWAVBrowse.Size = New System.Drawing.Size(24, 24) + Me.BWAVBrowse.TabIndex = 604 + Me.ToolTipUniversal.SetToolTip(Me.BWAVBrowse, "Browse") + Me.BWAVBrowse.UseVisualStyleBackColor = True + ' + 'BWAVRemove + ' + Me.BWAVRemove.Image = Global.iBMSC.My.Resources.Resources.x16Remove + Me.BWAVRemove.Location = New System.Drawing.Point(72, 0) + Me.BWAVRemove.Margin = New System.Windows.Forms.Padding(0) + Me.BWAVRemove.Name = "BWAVRemove" + Me.BWAVRemove.Size = New System.Drawing.Size(24, 24) + Me.BWAVRemove.TabIndex = 605 + Me.ToolTipUniversal.SetToolTip(Me.BWAVRemove, "Remove") + Me.BWAVRemove.UseVisualStyleBackColor = True + ' + 'POWAVResizer + ' + Me.POWAVResizer.Dock = System.Windows.Forms.DockStyle.Top + Me.POWAVResizer.FlatAppearance.BorderSize = 0 + Me.POWAVResizer.FlatStyle = System.Windows.Forms.FlatStyle.Flat + Me.POWAVResizer.Location = New System.Drawing.Point(0, 245) + Me.POWAVResizer.Margin = New System.Windows.Forms.Padding(0) + Me.POWAVResizer.Name = "POWAVResizer" + Me.POWAVResizer.Size = New System.Drawing.Size(183, 5) + Me.POWAVResizer.TabIndex = 33 + Me.POWAVResizer.TabStop = False + Me.POWAVResizer.UseVisualStyleBackColor = True + ' + 'POWAVPart2 + ' + Me.POWAVPart2.AutoSize = True + Me.POWAVPart2.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink + Me.POWAVPart2.ColumnCount = 1 + Me.POWAVPart2.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100.0!)) + Me.POWAVPart2.Controls.Add(Me.CWAVMultiSelect, 0, 0) + Me.POWAVPart2.Controls.Add(Me.CWAVChangeLabel, 0, 1) + Me.POWAVPart2.Dock = System.Windows.Forms.DockStyle.Fill + Me.POWAVPart2.Location = New System.Drawing.Point(0, 55) + Me.POWAVPart2.Margin = New System.Windows.Forms.Padding(0) + Me.POWAVPart2.Name = "POWAVPart2" + Me.POWAVPart2.RowCount = 2 + Me.POWAVPart2.RowStyles.Add(New System.Windows.Forms.RowStyle()) + Me.POWAVPart2.RowStyles.Add(New System.Windows.Forms.RowStyle()) + Me.POWAVPart2.Size = New System.Drawing.Size(183, 38) + Me.POWAVPart2.TabIndex = 35 + Me.POWAVPart2.Visible = False + ' + 'CWAVMultiSelect + ' + Me.CWAVMultiSelect.AutoSize = True + Me.CWAVMultiSelect.Checked = True + Me.CWAVMultiSelect.CheckState = System.Windows.Forms.CheckState.Checked + Me.CWAVMultiSelect.Location = New System.Drawing.Point(3, 0) + Me.CWAVMultiSelect.Margin = New System.Windows.Forms.Padding(3, 0, 3, 0) + Me.CWAVMultiSelect.Name = "CWAVMultiSelect" + Me.CWAVMultiSelect.Size = New System.Drawing.Size(154, 19) + Me.CWAVMultiSelect.TabIndex = 702 + Me.CWAVMultiSelect.Text = "Allow Multiple Selection" + Me.CWAVMultiSelect.UseVisualStyleBackColor = True + ' + 'CWAVChangeLabel + ' + Me.CWAVChangeLabel.AutoSize = True + Me.CWAVChangeLabel.Checked = True + Me.CWAVChangeLabel.CheckState = System.Windows.Forms.CheckState.Checked + Me.CWAVChangeLabel.Location = New System.Drawing.Point(3, 19) + Me.CWAVChangeLabel.Margin = New System.Windows.Forms.Padding(3, 0, 3, 0) + Me.CWAVChangeLabel.Name = "CWAVChangeLabel" + Me.CWAVChangeLabel.Size = New System.Drawing.Size(155, 19) + Me.CWAVChangeLabel.TabIndex = 703 + Me.CWAVChangeLabel.Text = "Synchronize Note Labels" + Me.CWAVChangeLabel.UseVisualStyleBackColor = True + ' + 'POWAVSwitch + ' + Me.POWAVSwitch.Appearance = System.Windows.Forms.Appearance.Button + Me.POWAVSwitch.BackColor = System.Drawing.SystemColors.Control + Me.POWAVSwitch.Checked = True + Me.POWAVSwitch.CheckState = System.Windows.Forms.CheckState.Checked + Me.POWAVSwitch.Cursor = System.Windows.Forms.Cursors.Hand + Me.POWAVSwitch.Dock = System.Windows.Forms.DockStyle.Top + Me.POWAVSwitch.Font = New System.Drawing.Font("Segoe UI", 9.0!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.POWAVSwitch.Location = New System.Drawing.Point(0, 0) + Me.POWAVSwitch.Name = "POWAVSwitch" + Me.POWAVSwitch.Size = New System.Drawing.Size(183, 20) + Me.POWAVSwitch.TabIndex = 601 + Me.POWAVSwitch.TabStop = False + Me.POWAVSwitch.Text = "#WAV (Sounds List)" + Me.POWAVSwitch.TextAlign = System.Drawing.ContentAlignment.MiddleCenter + Me.POWAVSwitch.UseCompatibleTextRendering = True + Me.POWAVSwitch.UseVisualStyleBackColor = False + ' + 'POWaveForm + ' + Me.POWaveForm.AutoSize = True + Me.POWaveForm.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink + Me.POWaveForm.Controls.Add(Me.POWaveFormInner) + Me.POWaveForm.Controls.Add(Me.POWaveFormSwitch) + Me.POWaveForm.Dock = System.Windows.Forms.DockStyle.Top + Me.POWaveForm.Location = New System.Drawing.Point(0, 669) + Me.POWaveForm.Name = "POWaveForm" + Me.POWaveForm.Size = New System.Drawing.Size(183, 243) + Me.POWaveForm.TabIndex = 3 + ' + 'POWaveFormInner + ' + Me.POWaveFormInner.AutoSize = True + Me.POWaveFormInner.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink + Me.POWaveFormInner.Controls.Add(Me.POWaveFormPart2) + Me.POWaveFormInner.Controls.Add(Me.POWaveFormExpander) + Me.POWaveFormInner.Controls.Add(Me.POWaveFormPart1) + Me.POWaveFormInner.Dock = System.Windows.Forms.DockStyle.Top + Me.POWaveFormInner.Location = New System.Drawing.Point(0, 20) + Me.POWaveFormInner.Name = "POWaveFormInner" + Me.POWaveFormInner.Size = New System.Drawing.Size(183, 223) + Me.POWaveFormInner.TabIndex = 29 + Me.POWaveFormInner.Visible = False + ' + 'POWaveFormPart2 + ' + Me.POWaveFormPart2.AutoSize = True + Me.POWaveFormPart2.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink + Me.POWaveFormPart2.ColumnCount = 3 + Me.POWaveFormPart2.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle()) + Me.POWaveFormPart2.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 70.0!)) + Me.POWaveFormPart2.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 30.0!)) + Me.POWaveFormPart2.Controls.Add(Me.TWSaturation, 2, 4) + Me.POWaveFormPart2.Controls.Add(Me.PictureBox2, 0, 0) + Me.POWaveFormPart2.Controls.Add(Me.TWTransparency, 2, 3) + Me.POWaveFormPart2.Controls.Add(Me.PictureBox3, 0, 1) + Me.POWaveFormPart2.Controls.Add(Me.TWPrecision, 2, 2) + Me.POWaveFormPart2.Controls.Add(Me.PictureBox4, 0, 2) + Me.POWaveFormPart2.Controls.Add(Me.TWWidth, 2, 1) + Me.POWaveFormPart2.Controls.Add(Me.PictureBox5, 0, 3) + Me.POWaveFormPart2.Controls.Add(Me.TWLeft, 2, 0) + Me.POWaveFormPart2.Controls.Add(Me.PictureBox6, 0, 4) + Me.POWaveFormPart2.Controls.Add(Me.TWSaturation2, 1, 4) + Me.POWaveFormPart2.Controls.Add(Me.TWLeft2, 1, 0) + Me.POWaveFormPart2.Controls.Add(Me.TWTransparency2, 1, 3) + Me.POWaveFormPart2.Controls.Add(Me.TWWidth2, 1, 1) + Me.POWaveFormPart2.Controls.Add(Me.TWPrecision2, 1, 2) + Me.POWaveFormPart2.Dock = System.Windows.Forms.DockStyle.Top + Me.POWaveFormPart2.Location = New System.Drawing.Point(0, 83) + Me.POWaveFormPart2.Name = "POWaveFormPart2" + Me.POWaveFormPart2.RowCount = 5 + Me.POWaveFormPart2.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 28.0!)) + Me.POWaveFormPart2.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 28.0!)) + Me.POWaveFormPart2.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 28.0!)) + Me.POWaveFormPart2.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 28.0!)) + Me.POWaveFormPart2.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 28.0!)) + Me.POWaveFormPart2.Size = New System.Drawing.Size(183, 140) + Me.POWaveFormPart2.TabIndex = 5 + ' + 'TWSaturation + ' + Me.TWSaturation.Dock = System.Windows.Forms.DockStyle.Fill + Me.TWSaturation.Increment = New Decimal(New Integer() {50, 0, 0, 0}) + Me.TWSaturation.Location = New System.Drawing.Point(137, 112) + Me.TWSaturation.Margin = New System.Windows.Forms.Padding(0, 0, 3, 0) + Me.TWSaturation.Maximum = New Decimal(New Integer() {1000, 0, 0, 0}) + Me.TWSaturation.Name = "TWSaturation" + Me.TWSaturation.Size = New System.Drawing.Size(43, 23) + Me.TWSaturation.TabIndex = 511 + ' + 'PictureBox2 + ' + Me.PictureBox2.Image = Global.iBMSC.My.Resources.Resources.WAVLeft + Me.PictureBox2.Location = New System.Drawing.Point(3, 0) + Me.PictureBox2.Margin = New System.Windows.Forms.Padding(3, 0, 3, 0) + Me.PictureBox2.Name = "PictureBox2" + Me.PictureBox2.Size = New System.Drawing.Size(24, 24) + Me.PictureBox2.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize + Me.PictureBox2.TabIndex = 60 + Me.PictureBox2.TabStop = False + ' + 'TWTransparency + ' + Me.TWTransparency.Dock = System.Windows.Forms.DockStyle.Fill + Me.TWTransparency.Increment = New Decimal(New Integer() {10, 0, 0, 0}) + Me.TWTransparency.Location = New System.Drawing.Point(137, 84) + Me.TWTransparency.Margin = New System.Windows.Forms.Padding(0, 0, 3, 0) + Me.TWTransparency.Maximum = New Decimal(New Integer() {255, 0, 0, 0}) + Me.TWTransparency.Name = "TWTransparency" + Me.TWTransparency.Size = New System.Drawing.Size(43, 23) + Me.TWTransparency.TabIndex = 509 + Me.TWTransparency.Value = New Decimal(New Integer() {80, 0, 0, 0}) + ' + 'PictureBox3 + ' + Me.PictureBox3.Image = Global.iBMSC.My.Resources.Resources.WAVWidth + Me.PictureBox3.Location = New System.Drawing.Point(3, 28) + Me.PictureBox3.Margin = New System.Windows.Forms.Padding(3, 0, 3, 0) + Me.PictureBox3.Name = "PictureBox3" + Me.PictureBox3.Size = New System.Drawing.Size(24, 24) + Me.PictureBox3.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize + Me.PictureBox3.TabIndex = 61 + Me.PictureBox3.TabStop = False + ' + 'TWPrecision + ' + Me.TWPrecision.Dock = System.Windows.Forms.DockStyle.Fill + Me.TWPrecision.Location = New System.Drawing.Point(137, 56) + Me.TWPrecision.Margin = New System.Windows.Forms.Padding(0, 0, 3, 0) + Me.TWPrecision.Maximum = New Decimal(New Integer() {50, 0, 0, 0}) + Me.TWPrecision.Name = "TWPrecision" + Me.TWPrecision.Size = New System.Drawing.Size(43, 23) + Me.TWPrecision.TabIndex = 507 + Me.TWPrecision.Value = New Decimal(New Integer() {5, 0, 0, 0}) + ' + 'PictureBox4 + ' + Me.PictureBox4.Image = Global.iBMSC.My.Resources.Resources.WAVPrecision + Me.PictureBox4.Location = New System.Drawing.Point(3, 56) + Me.PictureBox4.Margin = New System.Windows.Forms.Padding(3, 0, 3, 0) + Me.PictureBox4.Name = "PictureBox4" + Me.PictureBox4.Size = New System.Drawing.Size(24, 24) + Me.PictureBox4.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize + Me.PictureBox4.TabIndex = 62 + Me.PictureBox4.TabStop = False + ' + 'TWWidth + ' + Me.TWWidth.Dock = System.Windows.Forms.DockStyle.Fill + Me.TWWidth.Increment = New Decimal(New Integer() {10, 0, 0, 0}) + Me.TWWidth.Location = New System.Drawing.Point(137, 28) + Me.TWWidth.Margin = New System.Windows.Forms.Padding(0, 0, 3, 0) + Me.TWWidth.Maximum = New Decimal(New Integer() {1000, 0, 0, 0}) + Me.TWWidth.Name = "TWWidth" + Me.TWWidth.Size = New System.Drawing.Size(43, 23) + Me.TWWidth.TabIndex = 505 + Me.TWWidth.Value = New Decimal(New Integer() {200, 0, 0, 0}) + ' + 'PictureBox5 + ' + Me.PictureBox5.Image = Global.iBMSC.My.Resources.Resources.WAVTransparency + Me.PictureBox5.Location = New System.Drawing.Point(3, 84) + Me.PictureBox5.Margin = New System.Windows.Forms.Padding(3, 0, 3, 0) + Me.PictureBox5.Name = "PictureBox5" + Me.PictureBox5.Size = New System.Drawing.Size(24, 24) + Me.PictureBox5.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize + Me.PictureBox5.TabIndex = 67 + Me.PictureBox5.TabStop = False + ' + 'TWLeft + ' + Me.TWLeft.Dock = System.Windows.Forms.DockStyle.Fill + Me.TWLeft.Increment = New Decimal(New Integer() {5, 0, 0, 0}) + Me.TWLeft.Location = New System.Drawing.Point(137, 0) + Me.TWLeft.Margin = New System.Windows.Forms.Padding(0, 0, 3, 0) + Me.TWLeft.Maximum = New Decimal(New Integer() {800, 0, 0, 0}) + Me.TWLeft.Name = "TWLeft" + Me.TWLeft.Size = New System.Drawing.Size(43, 23) + Me.TWLeft.TabIndex = 503 + Me.TWLeft.Value = New Decimal(New Integer() {50, 0, 0, 0}) + ' + 'PictureBox6 + ' + Me.PictureBox6.Image = Global.iBMSC.My.Resources.Resources.WAVSaturation + Me.PictureBox6.Location = New System.Drawing.Point(3, 112) + Me.PictureBox6.Margin = New System.Windows.Forms.Padding(3, 0, 3, 0) + Me.PictureBox6.Name = "PictureBox6" + Me.PictureBox6.Size = New System.Drawing.Size(24, 24) + Me.PictureBox6.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize + Me.PictureBox6.TabIndex = 66 + Me.PictureBox6.TabStop = False + ' + 'TWSaturation2 + ' + Me.TWSaturation2.Dock = System.Windows.Forms.DockStyle.Fill + Me.TWSaturation2.LargeChange = 200 + Me.TWSaturation2.Location = New System.Drawing.Point(30, 112) + Me.TWSaturation2.Margin = New System.Windows.Forms.Padding(0) + Me.TWSaturation2.Maximum = 1000 + Me.TWSaturation2.Name = "TWSaturation2" + Me.TWSaturation2.Size = New System.Drawing.Size(107, 28) + Me.TWSaturation2.SmallChange = 50 + Me.TWSaturation2.TabIndex = 510 + Me.TWSaturation2.TickFrequency = 200 + ' + 'TWLeft2 + ' + Me.TWLeft2.Dock = System.Windows.Forms.DockStyle.Fill + Me.TWLeft2.LargeChange = 50 + Me.TWLeft2.Location = New System.Drawing.Point(30, 0) + Me.TWLeft2.Margin = New System.Windows.Forms.Padding(0) + Me.TWLeft2.Maximum = 800 + Me.TWLeft2.Name = "TWLeft2" + Me.TWLeft2.Size = New System.Drawing.Size(107, 28) + Me.TWLeft2.SmallChange = 10 + Me.TWLeft2.TabIndex = 502 + Me.TWLeft2.TickFrequency = 100 + Me.TWLeft2.Value = 50 + ' + 'TWTransparency2 + ' + Me.TWTransparency2.Dock = System.Windows.Forms.DockStyle.Fill + Me.TWTransparency2.LargeChange = 64 + Me.TWTransparency2.Location = New System.Drawing.Point(30, 84) + Me.TWTransparency2.Margin = New System.Windows.Forms.Padding(0) + Me.TWTransparency2.Maximum = 255 + Me.TWTransparency2.Name = "TWTransparency2" + Me.TWTransparency2.Size = New System.Drawing.Size(107, 28) + Me.TWTransparency2.SmallChange = 8 + Me.TWTransparency2.TabIndex = 508 + Me.TWTransparency2.TickFrequency = 64 + Me.TWTransparency2.Value = 80 + ' + 'TWWidth2 + ' + Me.TWWidth2.Dock = System.Windows.Forms.DockStyle.Fill + Me.TWWidth2.LargeChange = 50 + Me.TWWidth2.Location = New System.Drawing.Point(30, 28) + Me.TWWidth2.Margin = New System.Windows.Forms.Padding(0) + Me.TWWidth2.Maximum = 1000 + Me.TWWidth2.Name = "TWWidth2" + Me.TWWidth2.Size = New System.Drawing.Size(107, 28) + Me.TWWidth2.SmallChange = 10 + Me.TWWidth2.TabIndex = 504 + Me.TWWidth2.TickFrequency = 100 + Me.TWWidth2.Value = 200 + ' + 'TWPrecision2 + ' + Me.TWPrecision2.Dock = System.Windows.Forms.DockStyle.Fill + Me.TWPrecision2.LargeChange = 4 + Me.TWPrecision2.Location = New System.Drawing.Point(30, 56) + Me.TWPrecision2.Margin = New System.Windows.Forms.Padding(0) + Me.TWPrecision2.Maximum = 50 + Me.TWPrecision2.Name = "TWPrecision2" + Me.TWPrecision2.Size = New System.Drawing.Size(107, 28) + Me.TWPrecision2.TabIndex = 506 + Me.TWPrecision2.TickFrequency = 5 + Me.TWPrecision2.Value = 5 + ' + 'POWaveFormExpander + ' + Me.POWaveFormExpander.Appearance = System.Windows.Forms.Appearance.Button + Me.POWaveFormExpander.AutoSize = True + Me.POWaveFormExpander.Cursor = System.Windows.Forms.Cursors.Hand + Me.POWaveFormExpander.Dock = System.Windows.Forms.DockStyle.Top + Me.POWaveFormExpander.FlatAppearance.BorderSize = 0 + Me.POWaveFormExpander.FlatStyle = System.Windows.Forms.FlatStyle.Popup + Me.POWaveFormExpander.Location = New System.Drawing.Point(0, 58) + Me.POWaveFormExpander.Margin = New System.Windows.Forms.Padding(0) + Me.POWaveFormExpander.Name = "POWaveFormExpander" + Me.POWaveFormExpander.Size = New System.Drawing.Size(183, 25) + Me.POWaveFormExpander.TabIndex = 501 + Me.POWaveFormExpander.TabStop = False + Me.POWaveFormExpander.Text = "Expand..." + Me.POWaveFormExpander.TextAlign = System.Drawing.ContentAlignment.MiddleCenter + Me.POWaveFormExpander.UseVisualStyleBackColor = False + ' + 'POWaveFormPart1 + ' + Me.POWaveFormPart1.AutoSize = True + Me.POWaveFormPart1.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink + Me.POWaveFormPart1.ColumnCount = 1 + Me.POWaveFormPart1.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100.0!)) + Me.POWaveFormPart1.Controls.Add(Me.TableLayoutPanel1, 0, 0) + Me.POWaveFormPart1.Controls.Add(Me.TableLayoutPanel6, 0, 1) + Me.POWaveFormPart1.Dock = System.Windows.Forms.DockStyle.Top + Me.POWaveFormPart1.Location = New System.Drawing.Point(0, 0) + Me.POWaveFormPart1.Name = "POWaveFormPart1" + Me.POWaveFormPart1.RowCount = 2 + Me.POWaveFormPart1.RowStyles.Add(New System.Windows.Forms.RowStyle()) + Me.POWaveFormPart1.RowStyles.Add(New System.Windows.Forms.RowStyle()) + Me.POWaveFormPart1.Size = New System.Drawing.Size(183, 58) + Me.POWaveFormPart1.TabIndex = 4 + ' + 'TableLayoutPanel1 + ' + Me.TableLayoutPanel1.AutoSize = True + Me.TableLayoutPanel1.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink + Me.TableLayoutPanel1.ColumnCount = 2 + Me.TableLayoutPanel1.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle()) + Me.TableLayoutPanel1.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100.0!)) + Me.TableLayoutPanel1.Controls.Add(Me.FlowLayoutPanel1, 0, 0) + Me.TableLayoutPanel1.Controls.Add(Me.TWFileName, 1, 0) + Me.TableLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Fill + Me.TableLayoutPanel1.Location = New System.Drawing.Point(0, 0) + Me.TableLayoutPanel1.Margin = New System.Windows.Forms.Padding(0) + Me.TableLayoutPanel1.Name = "TableLayoutPanel1" + Me.TableLayoutPanel1.RowCount = 1 + Me.TableLayoutPanel1.RowStyles.Add(New System.Windows.Forms.RowStyle()) + Me.TableLayoutPanel1.Size = New System.Drawing.Size(183, 30) + Me.TableLayoutPanel1.TabIndex = 0 + ' + 'FlowLayoutPanel1 + ' + Me.FlowLayoutPanel1.AutoSize = True + Me.FlowLayoutPanel1.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink + Me.FlowLayoutPanel1.Controls.Add(Me.BWLoad) + Me.FlowLayoutPanel1.Controls.Add(Me.BWClear) + Me.FlowLayoutPanel1.Controls.Add(Me.BWLock) + Me.FlowLayoutPanel1.Location = New System.Drawing.Point(3, 3) + Me.FlowLayoutPanel1.Name = "FlowLayoutPanel1" + Me.FlowLayoutPanel1.Size = New System.Drawing.Size(72, 24) + Me.FlowLayoutPanel1.TabIndex = 72 + Me.FlowLayoutPanel1.WrapContents = False + ' + 'BWLoad + ' + Me.BWLoad.Image = Global.iBMSC.My.Resources.Resources.x16Add + Me.BWLoad.Location = New System.Drawing.Point(0, 0) + Me.BWLoad.Margin = New System.Windows.Forms.Padding(0) + Me.BWLoad.Name = "BWLoad" + Me.BWLoad.Size = New System.Drawing.Size(24, 24) + Me.BWLoad.TabIndex = 402 + Me.ToolTipUniversal.SetToolTip(Me.BWLoad, "Load WaveForm") + Me.BWLoad.UseVisualStyleBackColor = True + ' + 'BWClear + ' + Me.BWClear.Image = Global.iBMSC.My.Resources.Resources.x16Remove + Me.BWClear.Location = New System.Drawing.Point(24, 0) + Me.BWClear.Margin = New System.Windows.Forms.Padding(0) + Me.BWClear.Name = "BWClear" + Me.BWClear.Size = New System.Drawing.Size(24, 24) + Me.BWClear.TabIndex = 403 + Me.ToolTipUniversal.SetToolTip(Me.BWClear, "Clear WaveForm") + Me.BWClear.UseVisualStyleBackColor = True + ' + 'BWLock + ' + Me.BWLock.Appearance = System.Windows.Forms.Appearance.Button + Me.BWLock.Checked = True + Me.BWLock.CheckState = System.Windows.Forms.CheckState.Checked + Me.BWLock.Image = Global.iBMSC.My.Resources.Resources.x16Lock + Me.BWLock.Location = New System.Drawing.Point(48, 0) + Me.BWLock.Margin = New System.Windows.Forms.Padding(0) + Me.BWLock.Name = "BWLock" + Me.BWLock.Size = New System.Drawing.Size(24, 24) + Me.BWLock.TabIndex = 404 + Me.ToolTipUniversal.SetToolTip(Me.BWLock, "Lock to BGM") + Me.BWLock.UseVisualStyleBackColor = True + ' + 'TWFileName + ' + Me.TWFileName.Dock = System.Windows.Forms.DockStyle.Fill + Me.TWFileName.Location = New System.Drawing.Point(81, 3) + Me.TWFileName.Name = "TWFileName" + Me.TWFileName.ReadOnly = True + Me.TWFileName.Size = New System.Drawing.Size(99, 23) + Me.TWFileName.TabIndex = 405 + Me.TWFileName.Text = "(None)" + ' + 'TableLayoutPanel6 + ' + Me.TableLayoutPanel6.AutoSize = True + Me.TableLayoutPanel6.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink + Me.TableLayoutPanel6.ColumnCount = 3 + Me.TableLayoutPanel6.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle()) + Me.TableLayoutPanel6.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 60.0!)) + Me.TableLayoutPanel6.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 40.0!)) + Me.TableLayoutPanel6.Controls.Add(Me.PictureBox1, 0, 0) + Me.TableLayoutPanel6.Controls.Add(Me.TWPosition2, 1, 0) + Me.TableLayoutPanel6.Controls.Add(Me.TWPosition, 2, 0) + Me.TableLayoutPanel6.Dock = System.Windows.Forms.DockStyle.Fill + Me.TableLayoutPanel6.Location = New System.Drawing.Point(0, 30) + Me.TableLayoutPanel6.Margin = New System.Windows.Forms.Padding(0) + Me.TableLayoutPanel6.Name = "TableLayoutPanel6" + Me.TableLayoutPanel6.RowCount = 1 + Me.TableLayoutPanel6.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 28.0!)) + Me.TableLayoutPanel6.Size = New System.Drawing.Size(183, 28) + Me.TableLayoutPanel6.TabIndex = 1 + ' + 'PictureBox1 + ' + Me.PictureBox1.Image = Global.iBMSC.My.Resources.Resources.WAVOffset + Me.PictureBox1.Location = New System.Drawing.Point(3, 0) + Me.PictureBox1.Margin = New System.Windows.Forms.Padding(3, 0, 3, 0) + Me.PictureBox1.Name = "PictureBox1" + Me.PictureBox1.Size = New System.Drawing.Size(24, 24) + Me.PictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize + Me.PictureBox1.TabIndex = 59 + Me.PictureBox1.TabStop = False + ' + 'TWPosition2 + ' + Me.TWPosition2.Dock = System.Windows.Forms.DockStyle.Fill + Me.TWPosition2.Enabled = False + Me.TWPosition2.LargeChange = 24 + Me.TWPosition2.Location = New System.Drawing.Point(30, 0) + Me.TWPosition2.Margin = New System.Windows.Forms.Padding(0) + Me.TWPosition2.Maximum = 960 + Me.TWPosition2.Name = "TWPosition2" + Me.TWPosition2.Size = New System.Drawing.Size(91, 28) + Me.TWPosition2.TabIndex = 406 + Me.TWPosition2.TickFrequency = 192 + ' + 'TWPosition + ' + Me.TWPosition.DecimalPlaces = 2 + Me.TWPosition.Dock = System.Windows.Forms.DockStyle.Fill + Me.TWPosition.Enabled = False + Me.TWPosition.Location = New System.Drawing.Point(121, 0) + Me.TWPosition.Margin = New System.Windows.Forms.Padding(0, 0, 3, 0) + Me.TWPosition.Maximum = New Decimal(New Integer() {192000, 0, 0, 0}) + Me.TWPosition.Name = "TWPosition" + Me.TWPosition.Size = New System.Drawing.Size(59, 23) + Me.TWPosition.TabIndex = 407 + ' + 'POWaveFormSwitch + ' + Me.POWaveFormSwitch.Appearance = System.Windows.Forms.Appearance.Button + Me.POWaveFormSwitch.BackColor = System.Drawing.SystemColors.Control + Me.POWaveFormSwitch.Cursor = System.Windows.Forms.Cursors.Hand + Me.POWaveFormSwitch.Dock = System.Windows.Forms.DockStyle.Top + Me.POWaveFormSwitch.Font = New System.Drawing.Font("Segoe UI", 9.0!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.POWaveFormSwitch.Location = New System.Drawing.Point(0, 0) + Me.POWaveFormSwitch.Name = "POWaveFormSwitch" + Me.POWaveFormSwitch.Size = New System.Drawing.Size(183, 20) + Me.POWaveFormSwitch.TabIndex = 401 + Me.POWaveFormSwitch.TabStop = False + Me.POWaveFormSwitch.Text = "WaveForm" + Me.POWaveFormSwitch.TextAlign = System.Drawing.ContentAlignment.MiddleCenter + Me.POWaveFormSwitch.UseCompatibleTextRendering = True + Me.POWaveFormSwitch.UseVisualStyleBackColor = False + ' + 'POGrid + ' + Me.POGrid.AutoSize = True + Me.POGrid.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink + Me.POGrid.Controls.Add(Me.POGridInner) + Me.POGrid.Controls.Add(Me.POGridSwitch) + Me.POGrid.Dock = System.Windows.Forms.DockStyle.Top + Me.POGrid.Location = New System.Drawing.Point(0, 439) + Me.POGrid.Name = "POGrid" + Me.POGrid.Size = New System.Drawing.Size(183, 230) + Me.POGrid.TabIndex = 2 + ' + 'POGridInner + ' + Me.POGridInner.AutoSize = True + Me.POGridInner.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink + Me.POGridInner.Controls.Add(Me.POGridPart2) + Me.POGridInner.Controls.Add(Me.POGridExpander) + Me.POGridInner.Controls.Add(Me.POGridPart1) + Me.POGridInner.Dock = System.Windows.Forms.DockStyle.Top + Me.POGridInner.Location = New System.Drawing.Point(0, 20) + Me.POGridInner.Name = "POGridInner" + Me.POGridInner.Size = New System.Drawing.Size(183, 210) + Me.POGridInner.TabIndex = 3 + ' + 'POGridPart2 + ' + Me.POGridPart2.AutoSize = True + Me.POGridPart2.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink + Me.POGridPart2.ColumnCount = 1 + Me.POGridPart2.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100.0!)) + Me.POGridPart2.Controls.Add(Me.TableLayoutPanel5, 0, 1) + Me.POGridPart2.Controls.Add(Me.TableLayoutPanel4, 0, 0) + Me.POGridPart2.Dock = System.Windows.Forms.DockStyle.Top + Me.POGridPart2.Location = New System.Drawing.Point(0, 152) + Me.POGridPart2.Name = "POGridPart2" + Me.POGridPart2.RowCount = 2 + Me.POGridPart2.RowStyles.Add(New System.Windows.Forms.RowStyle()) + Me.POGridPart2.RowStyles.Add(New System.Windows.Forms.RowStyle()) + Me.POGridPart2.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20.0!)) + Me.POGridPart2.Size = New System.Drawing.Size(183, 58) + Me.POGridPart2.TabIndex = 0 + ' + 'TableLayoutPanel5 + ' + Me.TableLayoutPanel5.AutoSize = True + Me.TableLayoutPanel5.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink + Me.TableLayoutPanel5.ColumnCount = 2 + Me.TableLayoutPanel5.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle()) + Me.TableLayoutPanel5.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100.0!)) + Me.TableLayoutPanel5.Controls.Add(Me.FlowLayoutPanel2, 1, 0) + Me.TableLayoutPanel5.Controls.Add(Me.Label5, 0, 0) + Me.TableLayoutPanel5.Dock = System.Windows.Forms.DockStyle.Fill + Me.TableLayoutPanel5.Location = New System.Drawing.Point(0, 29) + Me.TableLayoutPanel5.Margin = New System.Windows.Forms.Padding(0) + Me.TableLayoutPanel5.Name = "TableLayoutPanel5" + Me.TableLayoutPanel5.RowCount = 1 + Me.TableLayoutPanel5.RowStyles.Add(New System.Windows.Forms.RowStyle()) + Me.TableLayoutPanel5.Size = New System.Drawing.Size(183, 29) + Me.TableLayoutPanel5.TabIndex = 46 + ' + 'FlowLayoutPanel2 + ' + Me.FlowLayoutPanel2.AutoSize = True + Me.FlowLayoutPanel2.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink + Me.FlowLayoutPanel2.Controls.Add(Me.cVSLockL) + Me.FlowLayoutPanel2.Controls.Add(Me.cVSLock) + Me.FlowLayoutPanel2.Controls.Add(Me.cVSLockR) + Me.FlowLayoutPanel2.Location = New System.Drawing.Point(114, 3) + Me.FlowLayoutPanel2.Name = "FlowLayoutPanel2" + Me.FlowLayoutPanel2.Size = New System.Drawing.Size(66, 23) + Me.FlowLayoutPanel2.TabIndex = 72 + Me.FlowLayoutPanel2.WrapContents = False + ' + 'cVSLockL + ' + Me.cVSLockL.Appearance = System.Windows.Forms.Appearance.Button + Me.cVSLockL.FlatStyle = System.Windows.Forms.FlatStyle.Popup + Me.cVSLockL.Image = Global.iBMSC.My.Resources.Resources.x16Lock + Me.cVSLockL.Location = New System.Drawing.Point(0, 0) + Me.cVSLockL.Margin = New System.Windows.Forms.Padding(0) + Me.cVSLockL.Name = "cVSLockL" + Me.cVSLockL.Size = New System.Drawing.Size(23, 23) + Me.cVSLockL.TabIndex = 303 + Me.cVSLockL.Tag = "0" + Me.ToolTipUniversal.SetToolTip(Me.cVSLockL, "Lock Left Editing Panel") + ' + 'cVSLock + ' + Me.cVSLock.Appearance = System.Windows.Forms.Appearance.Button + Me.cVSLock.FlatStyle = System.Windows.Forms.FlatStyle.Popup + Me.cVSLock.Image = Global.iBMSC.My.Resources.Resources.x16Lock + Me.cVSLock.Location = New System.Drawing.Point(23, 0) + Me.cVSLock.Margin = New System.Windows.Forms.Padding(0) + Me.cVSLock.Name = "cVSLock" + Me.cVSLock.Size = New System.Drawing.Size(23, 23) + Me.cVSLock.TabIndex = 304 + Me.cVSLock.Tag = "1" + Me.ToolTipUniversal.SetToolTip(Me.cVSLock, "Lock Middle Editing Panel") + ' + 'cVSLockR + ' + Me.cVSLockR.Appearance = System.Windows.Forms.Appearance.Button + Me.cVSLockR.FlatStyle = System.Windows.Forms.FlatStyle.Popup + Me.cVSLockR.Image = Global.iBMSC.My.Resources.Resources.x16Lock + Me.cVSLockR.Location = New System.Drawing.Point(46, 0) + Me.cVSLockR.Margin = New System.Windows.Forms.Padding(0) + Me.cVSLockR.Name = "cVSLockR" + Me.cVSLockR.Size = New System.Drawing.Size(23, 23) + Me.cVSLockR.TabIndex = 305 + Me.cVSLockR.Tag = "2" + Me.ToolTipUniversal.SetToolTip(Me.cVSLockR, "Lock Right Editing Panel") + ' + 'Label5 + ' + Me.Label5.AutoSize = True + Me.Label5.Dock = System.Windows.Forms.DockStyle.Fill + Me.Label5.Location = New System.Drawing.Point(3, 0) + Me.Label5.Name = "Label5" + Me.Label5.Size = New System.Drawing.Size(105, 29) + Me.Label5.TabIndex = 303 + Me.Label5.Text = "Vertical Scroll Lock" + Me.Label5.TextAlign = System.Drawing.ContentAlignment.MiddleRight + ' + 'TableLayoutPanel4 + ' + Me.TableLayoutPanel4.AutoSize = True + Me.TableLayoutPanel4.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink + Me.TableLayoutPanel4.ColumnCount = 2 + Me.TableLayoutPanel4.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle()) + Me.TableLayoutPanel4.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100.0!)) + Me.TableLayoutPanel4.Controls.Add(Me.Label1, 0, 0) + Me.TableLayoutPanel4.Controls.Add(Me.CGB, 1, 0) + Me.TableLayoutPanel4.Dock = System.Windows.Forms.DockStyle.Fill + Me.TableLayoutPanel4.Location = New System.Drawing.Point(0, 0) + Me.TableLayoutPanel4.Margin = New System.Windows.Forms.Padding(0) + Me.TableLayoutPanel4.Name = "TableLayoutPanel4" + Me.TableLayoutPanel4.RowCount = 1 + Me.TableLayoutPanel4.RowStyles.Add(New System.Windows.Forms.RowStyle()) + Me.TableLayoutPanel4.Size = New System.Drawing.Size(183, 29) + Me.TableLayoutPanel4.TabIndex = 44 + ' + 'Label1 + ' + Me.Label1.AutoSize = True + Me.Label1.Dock = System.Windows.Forms.DockStyle.Fill + Me.Label1.Location = New System.Drawing.Point(3, 0) + Me.Label1.Name = "Label1" + Me.Label1.Size = New System.Drawing.Size(126, 29) + Me.Label1.TabIndex = 302 + Me.Label1.Text = "Number of B Columns" + Me.Label1.TextAlign = System.Drawing.ContentAlignment.MiddleRight + ' + 'CGB + ' + Me.CGB.Dock = System.Windows.Forms.DockStyle.Fill + Me.CGB.Location = New System.Drawing.Point(135, 3) + Me.CGB.Maximum = New Decimal(New Integer() {999, 0, 0, 0}) + Me.CGB.Minimum = New Decimal(New Integer() {1, 0, 0, 0}) + Me.CGB.Name = "CGB" + Me.CGB.Size = New System.Drawing.Size(45, 23) + Me.CGB.TabIndex = 302 + Me.CGB.Value = New Decimal(New Integer() {15, 0, 0, 0}) + ' + 'POGridExpander + ' + Me.POGridExpander.Appearance = System.Windows.Forms.Appearance.Button + Me.POGridExpander.AutoSize = True + Me.POGridExpander.Cursor = System.Windows.Forms.Cursors.Hand + Me.POGridExpander.Dock = System.Windows.Forms.DockStyle.Top + Me.POGridExpander.FlatAppearance.BorderSize = 0 + Me.POGridExpander.FlatStyle = System.Windows.Forms.FlatStyle.Popup + Me.POGridExpander.Location = New System.Drawing.Point(0, 127) + Me.POGridExpander.Margin = New System.Windows.Forms.Padding(0) + Me.POGridExpander.Name = "POGridExpander" + Me.POGridExpander.Size = New System.Drawing.Size(183, 25) + Me.POGridExpander.TabIndex = 301 + Me.POGridExpander.TabStop = False + Me.POGridExpander.Text = "Expand..." + Me.POGridExpander.TextAlign = System.Drawing.ContentAlignment.MiddleCenter + Me.POGridExpander.UseVisualStyleBackColor = False + ' + 'POGridPart1 + ' + Me.POGridPart1.AutoSize = True + Me.POGridPart1.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink + Me.POGridPart1.ColumnCount = 1 + Me.POGridPart1.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100.0!)) + Me.POGridPart1.Controls.Add(Me.TableLayoutPanel3, 0, 1) + Me.POGridPart1.Controls.Add(Me.CGDisableVertical, 0, 3) + Me.POGridPart1.Controls.Add(Me.CGSnap, 0, 2) + Me.POGridPart1.Controls.Add(Me.TableLayoutPanel2, 0, 0) + Me.POGridPart1.Dock = System.Windows.Forms.DockStyle.Top + Me.POGridPart1.Location = New System.Drawing.Point(0, 0) + Me.POGridPart1.Name = "POGridPart1" + Me.POGridPart1.RowCount = 4 + Me.POGridPart1.RowStyles.Add(New System.Windows.Forms.RowStyle()) + Me.POGridPart1.RowStyles.Add(New System.Windows.Forms.RowStyle()) + Me.POGridPart1.RowStyles.Add(New System.Windows.Forms.RowStyle()) + Me.POGridPart1.RowStyles.Add(New System.Windows.Forms.RowStyle()) + Me.POGridPart1.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20.0!)) + Me.POGridPart1.Size = New System.Drawing.Size(183, 127) + Me.POGridPart1.TabIndex = 11 + ' + 'TableLayoutPanel3 + ' + Me.TableLayoutPanel3.AutoSize = True + Me.TableLayoutPanel3.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink + Me.TableLayoutPanel3.ColumnCount = 3 + Me.TableLayoutPanel3.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle()) + Me.TableLayoutPanel3.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 70.0!)) + Me.TableLayoutPanel3.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 30.0!)) + Me.TableLayoutPanel3.Controls.Add(Me.PictureBox9, 0, 0) + Me.TableLayoutPanel3.Controls.Add(Me.CGHeight2, 1, 0) + Me.TableLayoutPanel3.Controls.Add(Me.CGHeight, 2, 0) + Me.TableLayoutPanel3.Controls.Add(Me.PictureBox10, 0, 1) + Me.TableLayoutPanel3.Controls.Add(Me.CGWidth2, 1, 1) + Me.TableLayoutPanel3.Controls.Add(Me.CGWidth, 2, 1) + Me.TableLayoutPanel3.Dock = System.Windows.Forms.DockStyle.Fill + Me.TableLayoutPanel3.Location = New System.Drawing.Point(0, 30) + Me.TableLayoutPanel3.Margin = New System.Windows.Forms.Padding(0) + Me.TableLayoutPanel3.Name = "TableLayoutPanel3" + Me.TableLayoutPanel3.RowCount = 2 + Me.TableLayoutPanel3.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 28.0!)) + Me.TableLayoutPanel3.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 28.0!)) + Me.TableLayoutPanel3.Size = New System.Drawing.Size(183, 56) + Me.TableLayoutPanel3.TabIndex = 12 + ' + 'PictureBox9 + ' + Me.PictureBox9.Image = Global.iBMSC.My.Resources.Resources.lgheight + Me.PictureBox9.Location = New System.Drawing.Point(3, 0) + Me.PictureBox9.Margin = New System.Windows.Forms.Padding(3, 0, 3, 0) + Me.PictureBox9.Name = "PictureBox9" + Me.PictureBox9.Size = New System.Drawing.Size(24, 24) + Me.PictureBox9.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize + Me.PictureBox9.TabIndex = 27 + Me.PictureBox9.TabStop = False + ' + 'CGHeight2 + ' + Me.CGHeight2.Dock = System.Windows.Forms.DockStyle.Fill + Me.CGHeight2.LargeChange = 4 + Me.CGHeight2.Location = New System.Drawing.Point(30, 0) + Me.CGHeight2.Margin = New System.Windows.Forms.Padding(0) + Me.CGHeight2.Maximum = 20 + Me.CGHeight2.Minimum = 1 + Me.CGHeight2.Name = "CGHeight2" + Me.CGHeight2.Size = New System.Drawing.Size(107, 28) + Me.CGHeight2.TabIndex = 205 + Me.CGHeight2.TickFrequency = 2 + Me.CGHeight2.Value = 4 + ' + 'CGHeight + ' + Me.CGHeight.DecimalPlaces = 2 + Me.CGHeight.Dock = System.Windows.Forms.DockStyle.Fill + Me.CGHeight.Increment = New Decimal(New Integer() {25, 0, 0, 131072}) + Me.CGHeight.Location = New System.Drawing.Point(137, 0) + Me.CGHeight.Margin = New System.Windows.Forms.Padding(0, 0, 3, 0) + Me.CGHeight.Maximum = New Decimal(New Integer() {99, 0, 0, 0}) + Me.CGHeight.Minimum = New Decimal(New Integer() {25, 0, 0, 131072}) + Me.CGHeight.Name = "CGHeight" + Me.CGHeight.Size = New System.Drawing.Size(43, 23) + Me.CGHeight.TabIndex = 206 + Me.CGHeight.Value = New Decimal(New Integer() {1, 0, 0, 0}) + ' + 'PictureBox10 + ' + Me.PictureBox10.Image = Global.iBMSC.My.Resources.Resources.lgwidth + Me.PictureBox10.Location = New System.Drawing.Point(3, 28) + Me.PictureBox10.Margin = New System.Windows.Forms.Padding(3, 0, 3, 0) + Me.PictureBox10.Name = "PictureBox10" + Me.PictureBox10.Size = New System.Drawing.Size(24, 24) + Me.PictureBox10.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize + Me.PictureBox10.TabIndex = 28 + Me.PictureBox10.TabStop = False + ' + 'CGWidth2 + ' + Me.CGWidth2.Dock = System.Windows.Forms.DockStyle.Fill + Me.CGWidth2.LargeChange = 4 + Me.CGWidth2.Location = New System.Drawing.Point(30, 28) + Me.CGWidth2.Margin = New System.Windows.Forms.Padding(0) + Me.CGWidth2.Maximum = 20 + Me.CGWidth2.Minimum = 1 + Me.CGWidth2.Name = "CGWidth2" + Me.CGWidth2.Size = New System.Drawing.Size(107, 28) + Me.CGWidth2.TabIndex = 207 + Me.CGWidth2.TickFrequency = 2 + Me.CGWidth2.Value = 4 + ' + 'CGWidth + ' + Me.CGWidth.DecimalPlaces = 2 + Me.CGWidth.Dock = System.Windows.Forms.DockStyle.Fill + Me.CGWidth.Increment = New Decimal(New Integer() {25, 0, 0, 131072}) + Me.CGWidth.Location = New System.Drawing.Point(137, 28) + Me.CGWidth.Margin = New System.Windows.Forms.Padding(0, 0, 3, 0) + Me.CGWidth.Maximum = New Decimal(New Integer() {99, 0, 0, 0}) + Me.CGWidth.Minimum = New Decimal(New Integer() {25, 0, 0, 131072}) + Me.CGWidth.Name = "CGWidth" + Me.CGWidth.Size = New System.Drawing.Size(43, 23) + Me.CGWidth.TabIndex = 208 + Me.CGWidth.Value = New Decimal(New Integer() {1, 0, 0, 0}) + ' + 'CGDisableVertical + ' + Me.CGDisableVertical.AutoSize = True + Me.CGDisableVertical.Location = New System.Drawing.Point(3, 108) + Me.CGDisableVertical.Margin = New System.Windows.Forms.Padding(3, 0, 3, 0) + Me.CGDisableVertical.Name = "CGDisableVertical" + Me.CGDisableVertical.Size = New System.Drawing.Size(162, 19) + Me.CGDisableVertical.TabIndex = 210 + Me.CGDisableVertical.Text = "Disable vertical moves (D)" + Me.CGDisableVertical.UseVisualStyleBackColor = True + ' + 'CGSnap + ' + Me.CGSnap.AutoSize = True + Me.CGSnap.Checked = True + Me.CGSnap.CheckState = System.Windows.Forms.CheckState.Checked + Me.CGSnap.Location = New System.Drawing.Point(3, 89) + Me.CGSnap.Margin = New System.Windows.Forms.Padding(3, 3, 3, 0) + Me.CGSnap.Name = "CGSnap" + Me.CGSnap.Size = New System.Drawing.Size(109, 19) + Me.CGSnap.TabIndex = 209 + Me.CGSnap.Text = "Snap to grid (G)" + Me.CGSnap.UseVisualStyleBackColor = True + ' + 'TableLayoutPanel2 + ' + Me.TableLayoutPanel2.AutoSize = True + Me.TableLayoutPanel2.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink + Me.TableLayoutPanel2.ColumnCount = 4 + Me.TableLayoutPanel2.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle()) + Me.TableLayoutPanel2.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50.0!)) + Me.TableLayoutPanel2.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50.0!)) + Me.TableLayoutPanel2.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle()) + Me.TableLayoutPanel2.Controls.Add(Me.PictureBox7, 0, 0) + Me.TableLayoutPanel2.Controls.Add(Me.CGDivide, 1, 0) + Me.TableLayoutPanel2.Controls.Add(Me.CGSub, 2, 0) + Me.TableLayoutPanel2.Controls.Add(Me.BGSlash, 3, 0) + Me.TableLayoutPanel2.Dock = System.Windows.Forms.DockStyle.Fill + Me.TableLayoutPanel2.Location = New System.Drawing.Point(0, 0) + Me.TableLayoutPanel2.Margin = New System.Windows.Forms.Padding(0) + Me.TableLayoutPanel2.Name = "TableLayoutPanel2" + Me.TableLayoutPanel2.RowCount = 1 + Me.TableLayoutPanel2.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100.0!)) + Me.TableLayoutPanel2.Size = New System.Drawing.Size(183, 30) + Me.TableLayoutPanel2.TabIndex = 11 + ' + 'PictureBox7 + ' + Me.PictureBox7.Anchor = System.Windows.Forms.AnchorStyles.None + Me.PictureBox7.Image = Global.iBMSC.My.Resources.Resources.lgpartition + Me.PictureBox7.Location = New System.Drawing.Point(3, 3) + Me.PictureBox7.Name = "PictureBox7" + Me.PictureBox7.Size = New System.Drawing.Size(24, 24) + Me.PictureBox7.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize + Me.PictureBox7.TabIndex = 25 + Me.PictureBox7.TabStop = False + ' + 'CGDivide + ' + Me.CGDivide.Dock = System.Windows.Forms.DockStyle.Fill + Me.CGDivide.Location = New System.Drawing.Point(33, 3) + Me.CGDivide.Maximum = New Decimal(New Integer() {1920, 0, 0, 0}) + Me.CGDivide.Minimum = New Decimal(New Integer() {1, 0, 0, 0}) + Me.CGDivide.Name = "CGDivide" + Me.CGDivide.Size = New System.Drawing.Size(58, 23) + Me.CGDivide.TabIndex = 202 + Me.CGDivide.Value = New Decimal(New Integer() {16, 0, 0, 0}) + ' + 'CGSub + ' + Me.CGSub.Dock = System.Windows.Forms.DockStyle.Fill + Me.CGSub.Location = New System.Drawing.Point(97, 3) + Me.CGSub.Maximum = New Decimal(New Integer() {1920, 0, 0, 0}) + Me.CGSub.Minimum = New Decimal(New Integer() {1, 0, 0, 0}) + Me.CGSub.Name = "CGSub" + Me.CGSub.Size = New System.Drawing.Size(58, 23) + Me.CGSub.TabIndex = 203 + Me.CGSub.Value = New Decimal(New Integer() {4, 0, 0, 0}) + ' + 'BGSlash + ' + Me.BGSlash.Anchor = System.Windows.Forms.AnchorStyles.None + Me.BGSlash.Image = Global.iBMSC.My.Resources.Resources.Shortcut + Me.BGSlash.Location = New System.Drawing.Point(158, 4) + Me.BGSlash.Margin = New System.Windows.Forms.Padding(0, 0, 3, 0) + Me.BGSlash.Name = "BGSlash" + Me.BGSlash.Size = New System.Drawing.Size(22, 22) + Me.BGSlash.TabIndex = 204 + Me.BGSlash.UseVisualStyleBackColor = True + ' + 'POGridSwitch + ' + Me.POGridSwitch.Appearance = System.Windows.Forms.Appearance.Button + Me.POGridSwitch.BackColor = System.Drawing.SystemColors.Control + Me.POGridSwitch.Checked = True + Me.POGridSwitch.CheckState = System.Windows.Forms.CheckState.Checked + Me.POGridSwitch.Cursor = System.Windows.Forms.Cursors.Hand + Me.POGridSwitch.Dock = System.Windows.Forms.DockStyle.Top + Me.POGridSwitch.Font = New System.Drawing.Font("Segoe UI", 9.0!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.POGridSwitch.Location = New System.Drawing.Point(0, 0) + Me.POGridSwitch.Name = "POGridSwitch" + Me.POGridSwitch.Size = New System.Drawing.Size(183, 20) + Me.POGridSwitch.TabIndex = 201 + Me.POGridSwitch.TabStop = False + Me.POGridSwitch.Text = "Grid" + Me.POGridSwitch.TextAlign = System.Drawing.ContentAlignment.MiddleCenter + Me.POGridSwitch.UseCompatibleTextRendering = True + Me.POGridSwitch.UseVisualStyleBackColor = False + ' + 'POHeader + ' + Me.POHeader.AutoSize = True + Me.POHeader.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink + Me.POHeader.Controls.Add(Me.POHeaderInner) + Me.POHeader.Controls.Add(Me.POHeaderSwitch) + Me.POHeader.Dock = System.Windows.Forms.DockStyle.Top + Me.POHeader.Location = New System.Drawing.Point(0, 0) + Me.POHeader.Name = "POHeader" + Me.POHeader.Size = New System.Drawing.Size(183, 439) + Me.POHeader.TabIndex = 1 + ' + 'POHeaderInner + ' + Me.POHeaderInner.AutoSize = True + Me.POHeaderInner.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink + Me.POHeaderInner.Controls.Add(Me.POHeaderPart2) + Me.POHeaderInner.Controls.Add(Me.POHeaderExpander) + Me.POHeaderInner.Controls.Add(Me.POHeaderPart1) + Me.POHeaderInner.Dock = System.Windows.Forms.DockStyle.Top + Me.POHeaderInner.Location = New System.Drawing.Point(0, 20) + Me.POHeaderInner.Name = "POHeaderInner" + Me.POHeaderInner.Size = New System.Drawing.Size(183, 419) + Me.POHeaderInner.TabIndex = 2 + ' + 'POHeaderPart2 + ' + Me.POHeaderPart2.AutoSize = True + Me.POHeaderPart2.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink + Me.POHeaderPart2.ColumnCount = 3 + Me.POHeaderPart2.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle()) + Me.POHeaderPart2.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100.0!)) + Me.POHeaderPart2.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle()) + Me.POHeaderPart2.Controls.Add(Me.CHDifficulty, 1, 5) + Me.POHeaderPart2.Controls.Add(Me.Label13, 2, 6) + Me.POHeaderPart2.Controls.Add(Me.THExRank, 1, 6) + Me.POHeaderPart2.Controls.Add(Me.Label25, 2, 7) + Me.POHeaderPart2.Controls.Add(Me.CHLnObj, 1, 9) + Me.POHeaderPart2.Controls.Add(Me.Label23, 0, 6) + Me.POHeaderPart2.Controls.Add(Me.Label21, 0, 5) + Me.POHeaderPart2.Controls.Add(Me.THComment, 1, 8) + Me.POHeaderPart2.Controls.Add(Me.Label24, 0, 9) + Me.POHeaderPart2.Controls.Add(Me.Label15, 0, 0) + Me.POHeaderPart2.Controls.Add(Me.THTotal, 1, 7) + Me.POHeaderPart2.Controls.Add(Me.Label20, 0, 7) + Me.POHeaderPart2.Controls.Add(Me.BHStageFile, 2, 2) + Me.POHeaderPart2.Controls.Add(Me.BHBanner, 2, 3) + Me.POHeaderPart2.Controls.Add(Me.Label19, 0, 8) + Me.POHeaderPart2.Controls.Add(Me.BHBackBMP, 2, 4) + Me.POHeaderPart2.Controls.Add(Me.Label17, 0, 1) + Me.POHeaderPart2.Controls.Add(Me.Label16, 0, 2) + Me.POHeaderPart2.Controls.Add(Me.Label12, 0, 3) + Me.POHeaderPart2.Controls.Add(Me.THBackBMP, 1, 4) + Me.POHeaderPart2.Controls.Add(Me.Label11, 0, 4) + Me.POHeaderPart2.Controls.Add(Me.THBanner, 1, 3) + Me.POHeaderPart2.Controls.Add(Me.THStageFile, 1, 2) + Me.POHeaderPart2.Controls.Add(Me.THSubTitle, 1, 0) + Me.POHeaderPart2.Controls.Add(Me.THSubArtist, 1, 1) + Me.POHeaderPart2.Dock = System.Windows.Forms.DockStyle.Top + Me.POHeaderPart2.Location = New System.Drawing.Point(0, 186) + Me.POHeaderPart2.Name = "POHeaderPart2" + Me.POHeaderPart2.RowCount = 10 + Me.POHeaderPart2.RowStyles.Add(New System.Windows.Forms.RowStyle()) + Me.POHeaderPart2.RowStyles.Add(New System.Windows.Forms.RowStyle()) + Me.POHeaderPart2.RowStyles.Add(New System.Windows.Forms.RowStyle()) + Me.POHeaderPart2.RowStyles.Add(New System.Windows.Forms.RowStyle()) + Me.POHeaderPart2.RowStyles.Add(New System.Windows.Forms.RowStyle()) + Me.POHeaderPart2.RowStyles.Add(New System.Windows.Forms.RowStyle()) + Me.POHeaderPart2.RowStyles.Add(New System.Windows.Forms.RowStyle()) + Me.POHeaderPart2.RowStyles.Add(New System.Windows.Forms.RowStyle()) + Me.POHeaderPart2.RowStyles.Add(New System.Windows.Forms.RowStyle()) + Me.POHeaderPart2.RowStyles.Add(New System.Windows.Forms.RowStyle()) + Me.POHeaderPart2.Size = New System.Drawing.Size(183, 233) + Me.POHeaderPart2.TabIndex = 27 + ' + 'CHDifficulty + ' + Me.POHeaderPart2.SetColumnSpan(Me.CHDifficulty, 2) + Me.CHDifficulty.Dock = System.Windows.Forms.DockStyle.Top + Me.CHDifficulty.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList + Me.CHDifficulty.FlatStyle = System.Windows.Forms.FlatStyle.System + Me.CHDifficulty.Items.AddRange(New Object() {"None", "1 - EZ / Beginner", "2 - NM / Normal", "3 - HD / Hyper", "4 - MX / Another", "5 - SC / Insane"}) + Me.CHDifficulty.Location = New System.Drawing.Point(67, 118) + Me.CHDifficulty.Margin = New System.Windows.Forms.Padding(0) + Me.CHDifficulty.Name = "CHDifficulty" + Me.CHDifficulty.Size = New System.Drawing.Size(116, 23) + Me.CHDifficulty.TabIndex = 110 + ' + 'Label13 + ' + Me.Label13.AutoSize = True + Me.Label13.Dock = System.Windows.Forms.DockStyle.Fill + Me.Label13.Location = New System.Drawing.Point(158, 141) + Me.Label13.Margin = New System.Windows.Forms.Padding(3, 0, 0, 0) + Me.Label13.Name = "Label13" + Me.Label13.Size = New System.Drawing.Size(25, 23) + Me.Label13.TabIndex = 63 + Me.Label13.Text = "(%)" + Me.Label13.TextAlign = System.Drawing.ContentAlignment.MiddleLeft + ' + 'THExRank + ' + Me.THExRank.Dock = System.Windows.Forms.DockStyle.Fill + Me.THExRank.Location = New System.Drawing.Point(67, 141) + Me.THExRank.Margin = New System.Windows.Forms.Padding(0) + Me.THExRank.Name = "THExRank" + Me.THExRank.Size = New System.Drawing.Size(88, 23) + Me.THExRank.TabIndex = 111 + ' + 'Label25 + ' + Me.Label25.AutoSize = True + Me.Label25.Dock = System.Windows.Forms.DockStyle.Fill + Me.Label25.Location = New System.Drawing.Point(158, 164) + Me.Label25.Margin = New System.Windows.Forms.Padding(3, 0, 0, 0) + Me.Label25.Name = "Label25" + Me.Label25.Size = New System.Drawing.Size(25, 23) + Me.Label25.TabIndex = 23 + Me.Label25.Text = "(%)" + Me.Label25.TextAlign = System.Drawing.ContentAlignment.MiddleLeft + ' + 'CHLnObj + ' + Me.POHeaderPart2.SetColumnSpan(Me.CHLnObj, 2) + Me.CHLnObj.Dock = System.Windows.Forms.DockStyle.Top + Me.CHLnObj.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList + Me.CHLnObj.FlatStyle = System.Windows.Forms.FlatStyle.System + Me.CHLnObj.Items.AddRange(New Object() {"None (#LnType 1)", "01", "02", "03", "04", "05", "06", "07", "08", "09", "0A", "0B", "0C", "0D", "0E", "0F", "0G", "0H", "0I", "0J", "0K", "0L", "0M", "0N", "0O", "0P", "0Q", "0R", "0S", "0T", "0U", "0V", "0W", "0X", "0Y", "0Z", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "1A", "1B", "1C", "1D", "1E", "1F", "1G", "1H", "1I", "1J", "1K", "1L", "1M", "1N", "1O", "1P", "1Q", "1R", "1S", "1T", "1U", "1V", "1W", "1X", "1Y", "1Z", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "2A", "2B", "2C", "2D", "2E", "2F", "2G", "2H", "2I", "2J", "2K", "2L", "2M", "2N", "2O", "2P", "2Q", "2R", "2S", "2T", "2U", "2V", "2W", "2X", "2Y", "2Z", "30", "31", "32", "33", "34", "35", "36", "37", "38", "39", "3A", "3B", "3C", "3D", "3E", "3F", "3G", "3H", "3I", "3J", "3K", "3L", "3M", "3N", "3O", "3P", "3Q", "3R", "3S", "3T", "3U", "3V", "3W", "3X", "3Y", "3Z", "40", "41", "42", "43", "44", "45", "46", "47", "48", "49", "4A", "4B", "4C", "4D", "4E", "4F", "4G", "4H", "4I", "4J", "4K", "4L", "4M", "4N", "4O", "4P", "4Q", "4R", "4S", "4T", "4U", "4V", "4W", "4X", "4Y", "4Z", "50", "51", "52", "53", "54", "55", "56", "57", "58", "59", "5A", "5B", "5C", "5D", "5E", "5F", "5G", "5H", "5I", "5J", "5K", "5L", "5M", "5N", "5O", "5P", "5Q", "5R", "5S", "5T", "5U", "5V", "5W", "5X", "5Y", "5Z", "60", "61", "62", "63", "64", "65", "66", "67", "68", "69", "6A", "6B", "6C", "6D", "6E", "6F", "6G", "6H", "6I", "6J", "6K", "6L", "6M", "6N", "6O", "6P", "6Q", "6R", "6S", "6T", "6U", "6V", "6W", "6X", "6Y", "6Z", "70", "71", "72", "73", "74", "75", "76", "77", "78", "79", "7A", "7B", "7C", "7D", "7E", "7F", "7G", "7H", "7I", "7J", "7K", "7L", "7M", "7N", "7O", "7P", "7Q", "7R", "7S", "7T", "7U", "7V", "7W", "7X", "7Y", "7Z", "80", "81", "82", "83", "84", "85", "86", "87", "88", "89", "8A", "8B", "8C", "8D", "8E", "8F", "8G", "8H", "8I", "8J", "8K", "8L", "8M", "8N", "8O", "8P", "8Q", "8R", "8S", "8T", "8U", "8V", "8W", "8X", "8Y", "8Z", "90", "91", "92", "93", "94", "95", "96", "97", "98", "99", "9A", "9B", "9C", "9D", "9E", "9F", "9G", "9H", "9I", "9J", "9K", "9L", "9M", "9N", "9O", "9P", "9Q", "9R", "9S", "9T", "9U", "9V", "9W", "9X", "9Y", "9Z", "A0", "A1", "A2", "A3", "A4", "A5", "A6", "A7", "A8", "A9", "AA", "AB", "AC", "AD", "AE", "AF", "AG", "AH", "AI", "AJ", "AK", "AL", "AM", "AN", "AO", "AP", "AQ", "AR", "AS", "AT", "AU", "AV", "AW", "AX", "AY", "AZ", "B0", "B1", "B2", "B3", "B4", "B5", "B6", "B7", "B8", "B9", "BA", "BB", "BC", "BD", "BE", "BF", "BG", "BH", "BI", "BJ", "BK", "BL", "BM", "BN", "BO", "BP", "BQ", "BR", "BS", "BT", "BU", "BV", "BW", "BX", "BY", "BZ", "C0", "C1", "C2", "C3", "C4", "C5", "C6", "C7", "C8", "C9", "CA", "CB", "CC", "CD", "CE", "CF", "CG", "CH", "CI", "CJ", "CK", "CL", "CM", "CN", "CO", "CP", "CQ", "CR", "CS", "CT", "CU", "CV", "CW", "CX", "CY", "CZ", "D0", "D1", "D2", "D3", "D4", "D5", "D6", "D7", "D8", "D9", "DA", "DB", "DC", "DD", "DE", "DF", "DG", "DH", "DI", "DJ", "DK", "DL", "DM", "DN", "DO", "DP", "DQ", "DR", "DS", "DT", "DU", "DV", "DW", "DX", "DY", "DZ", "E0", "E1", "E2", "E3", "E4", "E5", "E6", "E7", "E8", "E9", "EA", "EB", "EC", "ED", "EE", "EF", "EG", "EH", "EI", "EJ", "EK", "EL", "EM", "EN", "EO", "EP", "EQ", "ER", "ES", "ET", "EU", "EV", "EW", "EX", "EY", "EZ", "F0", "F1", "F2", "F3", "F4", "F5", "F6", "F7", "F8", "F9", "FA", "FB", "FC", "FD", "FE", "FF", "FG", "FH", "FI", "FJ", "FK", "FL", "FM", "FN", "FO", "FP", "FQ", "FR", "FS", "FT", "FU", "FV", "FW", "FX", "FY", "FZ", "G0", "G1", "G2", "G3", "G4", "G5", "G6", "G7", "G8", "G9", "GA", "GB", "GC", "GD", "GE", "GF", "GG", "GH", "GI", "GJ", "GK", "GL", "GM", "GN", "GO", "GP", "GQ", "GR", "GS", "GT", "GU", "GV", "GW", "GX", "GY", "GZ", "H0", "H1", "H2", "H3", "H4", "H5", "H6", "H7", "H8", "H9", "HA", "HB", "HC", "HD", "HE", "HF", "HG", "HH", "HI", "HJ", "HK", "HL", "HM", "HN", "HO", "HP", "HQ", "HR", "HS", "HT", "HU", "HV", "HW", "HX", "HY", "HZ", "I0", "I1", "I2", "I3", "I4", "I5", "I6", "I7", "I8", "I9", "IA", "IB", "IC", "ID", "IE", "IF", "IG", "IH", "II", "IJ", "IK", "IL", "IM", "IN", "IO", "IP", "IQ", "IR", "IS", "IT", "IU", "IV", "IW", "IX", "IY", "IZ", "J0", "J1", "J2", "J3", "J4", "J5", "J6", "J7", "J8", "J9", "JA", "JB", "JC", "JD", "JE", "JF", "JG", "JH", "JI", "JJ", "JK", "JL", "JM", "JN", "JO", "JP", "JQ", "JR", "JS", "JT", "JU", "JV", "JW", "JX", "JY", "JZ", "K0", "K1", "K2", "K3", "K4", "K5", "K6", "K7", "K8", "K9", "KA", "KB", "KC", "KD", "KE", "KF", "KG", "KH", "KI", "KJ", "KK", "KL", "KM", "KN", "KO", "KP", "KQ", "KR", "KS", "KT", "KU", "KV", "KW", "KX", "KY", "KZ", "L0", "L1", "L2", "L3", "L4", "L5", "L6", "L7", "L8", "L9", "LA", "LB", "LC", "LD", "LE", "LF", "LG", "LH", "LI", "LJ", "LK", "LL", "LM", "LN", "LO", "LP", "LQ", "LR", "LS", "LT", "LU", "LV", "LW", "LX", "LY", "LZ", "M0", "M1", "M2", "M3", "M4", "M5", "M6", "M7", "M8", "M9", "MA", "MB", "MC", "MD", "ME", "MF", "MG", "MH", "MI", "MJ", "MK", "ML", "MM", "MN", "MO", "MP", "MQ", "MR", "MS", "MT", "MU", "MV", "MW", "MX", "MY", "MZ", "N0", "N1", "N2", "N3", "N4", "N5", "N6", "N7", "N8", "N9", "NA", "NB", "NC", "ND", "NE", "NF", "NG", "NH", "NI", "NJ", "NK", "NL", "NM", "NN", "NO", "NP", "NQ", "NR", "NS", "NT", "NU", "NV", "NW", "NX", "NY", "NZ", "O0", "O1", "O2", "O3", "O4", "O5", "O6", "O7", "O8", "O9", "OA", "OB", "OC", "OD", "OE", "OF", "OG", "OH", "OI", "OJ", "OK", "OL", "OM", "ON", "OO", "OP", "OQ", "OR", "OS", "OT", "OU", "OV", "OW", "OX", "OY", "OZ", "P0", "P1", "P2", "P3", "P4", "P5", "P6", "P7", "P8", "P9", "PA", "PB", "PC", "PD", "PE", "PF", "PG", "PH", "PI", "PJ", "PK", "PL", "PM", "PN", "PO", "PP", "PQ", "PR", "PS", "PT", "PU", "PV", "PW", "PX", "PY", "PZ", "Q0", "Q1", "Q2", "Q3", "Q4", "Q5", "Q6", "Q7", "Q8", "Q9", "QA", "QB", "QC", "QD", "QE", "QF", "QG", "QH", "QI", "QJ", "QK", "QL", "QM", "QN", "QO", "QP", "QQ", "QR", "QS", "QT", "QU", "QV", "QW", "QX", "QY", "QZ", "R0", "R1", "R2", "R3", "R4", "R5", "R6", "R7", "R8", "R9", "RA", "RB", "RC", "RD", "RE", "RF", "RG", "RH", "RI", "RJ", "RK", "RL", "RM", "RN", "RO", "RP", "RQ", "RR", "RS", "RT", "RU", "RV", "RW", "RX", "RY", "RZ", "S0", "S1", "S2", "S3", "S4", "S5", "S6", "S7", "S8", "S9", "SA", "SB", "SC", "SD", "SE", "SF", "SG", "SH", "SI", "SJ", "SK", "SL", "SM", "SN", "SO", "SP", "SQ", "SR", "SS", "ST", "SU", "SV", "SW", "SX", "SY", "SZ", "T0", "T1", "T2", "T3", "T4", "T5", "T6", "T7", "T8", "T9", "TA", "TB", "TC", "TD", "TE", "TF", "TG", "TH", "TI", "TJ", "TK", "TL", "TM", "TN", "TO", "TP", "TQ", "TR", "TS", "TT", "TU", "TV", "TW", "TX", "TY", "TZ", "U0", "U1", "U2", "U3", "U4", "U5", "U6", "U7", "U8", "U9", "UA", "UB", "UC", "UD", "UE", "UF", "UG", "UH", "UI", "UJ", "UK", "UL", "UM", "UN", "UO", "UP", "UQ", "UR", "US", "UT", "UU", "UV", "UW", "UX", "UY", "UZ", "V0", "V1", "V2", "V3", "V4", "V5", "V6", "V7", "V8", "V9", "VA", "VB", "VC", "VD", "VE", "VF", "VG", "VH", "VI", "VJ", "VK", "VL", "VM", "VN", "VO", "VP", "VQ", "VR", "VS", "VT", "VU", "VV", "VW", "VX", "VY", "VZ", "W0", "W1", "W2", "W3", "W4", "W5", "W6", "W7", "W8", "W9", "WA", "WB", "WC", "WD", "WE", "WF", "WG", "WH", "WI", "WJ", "WK", "WL", "WM", "WN", "WO", "WP", "WQ", "WR", "WS", "WT", "WU", "WV", "WW", "WX", "WY", "WZ", "X0", "X1", "X2", "X3", "X4", "X5", "X6", "X7", "X8", "X9", "XA", "XB", "XC", "XD", "XE", "XF", "XG", "XH", "XI", "XJ", "XK", "XL", "XM", "XN", "XO", "XP", "XQ", "XR", "XS", "XT", "XU", "XV", "XW", "XX", "XY", "XZ", "Y0", "Y1", "Y2", "Y3", "Y4", "Y5", "Y6", "Y7", "Y8", "Y9", "YA", "YB", "YC", "YD", "YE", "YF", "YG", "YH", "YI", "YJ", "YK", "YL", "YM", "YN", "YO", "YP", "YQ", "YR", "YS", "YT", "YU", "YV", "YW", "YX", "YY", "YZ", "Z0", "Z1", "Z2", "Z3", "Z4", "Z5", "Z6", "Z7", "Z8", "Z9", "ZA", "ZB", "ZC", "ZD", "ZE", "ZF", "ZG", "ZH", "ZI", "ZJ", "ZK", "ZL", "ZM", "ZN", "ZO", "ZP", "ZQ", "ZR", "ZS", "ZT", "ZU", "ZV", "ZW", "ZX", "ZY", "ZZ"}) + Me.CHLnObj.Location = New System.Drawing.Point(67, 210) + Me.CHLnObj.Margin = New System.Windows.Forms.Padding(0) + Me.CHLnObj.Name = "CHLnObj" + Me.CHLnObj.Size = New System.Drawing.Size(116, 23) + Me.CHLnObj.TabIndex = 114 + ' + 'Label23 + ' + Me.Label23.Anchor = System.Windows.Forms.AnchorStyles.Right + Me.Label23.AutoSize = True + Me.Label23.Location = New System.Drawing.Point(19, 145) + Me.Label23.Name = "Label23" + Me.Label23.Size = New System.Drawing.Size(45, 15) + Me.Label23.TabIndex = 26 + Me.Label23.Text = "ExRank" + Me.Label23.TextAlign = System.Drawing.ContentAlignment.MiddleRight + ' + 'Label21 + ' + Me.Label21.Anchor = System.Windows.Forms.AnchorStyles.Right + Me.Label21.AutoSize = True + Me.Label21.Location = New System.Drawing.Point(9, 122) + Me.Label21.Name = "Label21" + Me.Label21.Size = New System.Drawing.Size(55, 15) + Me.Label21.TabIndex = 25 + Me.Label21.Text = "Difficulty" + Me.Label21.TextAlign = System.Drawing.ContentAlignment.MiddleRight + ' + 'THComment + ' + Me.POHeaderPart2.SetColumnSpan(Me.THComment, 2) + Me.THComment.Dock = System.Windows.Forms.DockStyle.Fill + Me.THComment.Location = New System.Drawing.Point(67, 187) + Me.THComment.Margin = New System.Windows.Forms.Padding(0) + Me.THComment.Name = "THComment" + Me.THComment.Size = New System.Drawing.Size(116, 23) + Me.THComment.TabIndex = 113 + ' + 'Label24 + ' + Me.Label24.Anchor = System.Windows.Forms.AnchorStyles.Right + Me.Label24.AutoSize = True + Me.Label24.Location = New System.Drawing.Point(25, 214) + Me.Label24.Name = "Label24" + Me.Label24.Size = New System.Drawing.Size(39, 15) + Me.Label24.TabIndex = 27 + Me.Label24.Text = "LnObj" + Me.Label24.TextAlign = System.Drawing.ContentAlignment.MiddleRight + ' + 'Label15 + ' + Me.Label15.Anchor = System.Windows.Forms.AnchorStyles.Right + Me.Label15.AutoSize = True + Me.Label15.Location = New System.Drawing.Point(15, 4) + Me.Label15.Name = "Label15" + Me.Label15.Size = New System.Drawing.Size(49, 15) + Me.Label15.TabIndex = 6 + Me.Label15.Text = "SubTitle" + Me.Label15.TextAlign = System.Drawing.ContentAlignment.MiddleRight + ' + 'THTotal + ' + Me.THTotal.Dock = System.Windows.Forms.DockStyle.Fill + Me.THTotal.Location = New System.Drawing.Point(67, 164) + Me.THTotal.Margin = New System.Windows.Forms.Padding(0) + Me.THTotal.Name = "THTotal" + Me.THTotal.Size = New System.Drawing.Size(88, 23) + Me.THTotal.TabIndex = 112 + ' + 'Label20 + ' + Me.Label20.Anchor = System.Windows.Forms.AnchorStyles.Right + Me.Label20.AutoSize = True + Me.Label20.Location = New System.Drawing.Point(32, 168) + Me.Label20.Name = "Label20" + Me.Label20.Size = New System.Drawing.Size(32, 15) + Me.Label20.TabIndex = 5 + Me.Label20.Text = "Total" + Me.Label20.TextAlign = System.Drawing.ContentAlignment.MiddleRight + ' + 'BHStageFile + ' + Me.BHStageFile.Dock = System.Windows.Forms.DockStyle.Fill + Me.BHStageFile.FlatStyle = System.Windows.Forms.FlatStyle.System + Me.BHStageFile.Location = New System.Drawing.Point(158, 46) + Me.BHStageFile.Margin = New System.Windows.Forms.Padding(3, 0, 0, 0) + Me.BHStageFile.Name = "BHStageFile" + Me.BHStageFile.Size = New System.Drawing.Size(25, 24) + Me.BHStageFile.TabIndex = 105 + Me.BHStageFile.Text = "..." + Me.BHStageFile.UseVisualStyleBackColor = True + ' + 'BHBanner + ' + Me.BHBanner.Dock = System.Windows.Forms.DockStyle.Fill + Me.BHBanner.FlatStyle = System.Windows.Forms.FlatStyle.System + Me.BHBanner.Location = New System.Drawing.Point(158, 70) + Me.BHBanner.Margin = New System.Windows.Forms.Padding(3, 0, 0, 0) + Me.BHBanner.Name = "BHBanner" + Me.BHBanner.Size = New System.Drawing.Size(25, 24) + Me.BHBanner.TabIndex = 107 + Me.BHBanner.Text = "..." + Me.BHBanner.UseVisualStyleBackColor = True + ' + 'Label19 + ' + Me.Label19.Anchor = System.Windows.Forms.AnchorStyles.Right + Me.Label19.AutoSize = True + Me.Label19.Location = New System.Drawing.Point(3, 191) + Me.Label19.Name = "Label19" + Me.Label19.Size = New System.Drawing.Size(61, 15) + Me.Label19.TabIndex = 13 + Me.Label19.Text = "Comment" + Me.Label19.TextAlign = System.Drawing.ContentAlignment.MiddleRight + ' + 'BHBackBMP + ' + Me.BHBackBMP.Dock = System.Windows.Forms.DockStyle.Fill + Me.BHBackBMP.FlatStyle = System.Windows.Forms.FlatStyle.System + Me.BHBackBMP.Location = New System.Drawing.Point(158, 94) + Me.BHBackBMP.Margin = New System.Windows.Forms.Padding(3, 0, 0, 0) + Me.BHBackBMP.Name = "BHBackBMP" + Me.BHBackBMP.Size = New System.Drawing.Size(25, 24) + Me.BHBackBMP.TabIndex = 109 + Me.BHBackBMP.Text = "..." + Me.BHBackBMP.UseVisualStyleBackColor = True + ' + 'Label17 + ' + Me.Label17.Anchor = System.Windows.Forms.AnchorStyles.Right + Me.Label17.AutoSize = True + Me.Label17.Location = New System.Drawing.Point(9, 27) + Me.Label17.Name = "Label17" + Me.Label17.Size = New System.Drawing.Size(55, 15) + Me.Label17.TabIndex = 7 + Me.Label17.Text = "SubArtist" + Me.Label17.TextAlign = System.Drawing.ContentAlignment.MiddleRight + ' + 'Label16 + ' + Me.Label16.Anchor = System.Windows.Forms.AnchorStyles.Right + Me.Label16.AutoSize = True + Me.Label16.Location = New System.Drawing.Point(7, 50) + Me.Label16.Name = "Label16" + Me.Label16.Size = New System.Drawing.Size(57, 15) + Me.Label16.TabIndex = 9 + Me.Label16.Text = "Stage File" + Me.Label16.TextAlign = System.Drawing.ContentAlignment.MiddleRight + ' + 'Label12 + ' + Me.Label12.Anchor = System.Windows.Forms.AnchorStyles.Right + Me.Label12.AutoSize = True + Me.Label12.Location = New System.Drawing.Point(20, 74) + Me.Label12.Name = "Label12" + Me.Label12.Size = New System.Drawing.Size(44, 15) + Me.Label12.TabIndex = 13 + Me.Label12.Text = "Banner" + Me.Label12.TextAlign = System.Drawing.ContentAlignment.MiddleRight + ' + 'THBackBMP + ' + Me.THBackBMP.Dock = System.Windows.Forms.DockStyle.Fill + Me.THBackBMP.Location = New System.Drawing.Point(67, 94) + Me.THBackBMP.Margin = New System.Windows.Forms.Padding(0) + Me.THBackBMP.Name = "THBackBMP" + Me.THBackBMP.Size = New System.Drawing.Size(88, 23) + Me.THBackBMP.TabIndex = 108 + ' + 'Label11 + ' + Me.Label11.Anchor = System.Windows.Forms.AnchorStyles.Right + Me.Label11.AutoSize = True + Me.Label11.Location = New System.Drawing.Point(4, 98) + Me.Label11.Name = "Label11" + Me.Label11.Size = New System.Drawing.Size(60, 15) + Me.Label11.TabIndex = 16 + Me.Label11.Text = "Back BMP" + Me.Label11.TextAlign = System.Drawing.ContentAlignment.MiddleRight + ' + 'THBanner + ' + Me.THBanner.Dock = System.Windows.Forms.DockStyle.Fill + Me.THBanner.Location = New System.Drawing.Point(67, 70) + Me.THBanner.Margin = New System.Windows.Forms.Padding(0) + Me.THBanner.Name = "THBanner" + Me.THBanner.Size = New System.Drawing.Size(88, 23) + Me.THBanner.TabIndex = 106 + ' + 'THStageFile + ' + Me.THStageFile.Dock = System.Windows.Forms.DockStyle.Fill + Me.THStageFile.Location = New System.Drawing.Point(67, 46) + Me.THStageFile.Margin = New System.Windows.Forms.Padding(0) + Me.THStageFile.Name = "THStageFile" + Me.THStageFile.Size = New System.Drawing.Size(88, 23) + Me.THStageFile.TabIndex = 104 + ' + 'THSubTitle + ' + Me.POHeaderPart2.SetColumnSpan(Me.THSubTitle, 2) + Me.THSubTitle.Dock = System.Windows.Forms.DockStyle.Fill + Me.THSubTitle.Location = New System.Drawing.Point(67, 0) + Me.THSubTitle.Margin = New System.Windows.Forms.Padding(0) + Me.THSubTitle.Name = "THSubTitle" + Me.THSubTitle.Size = New System.Drawing.Size(116, 23) + Me.THSubTitle.TabIndex = 102 + ' + 'THSubArtist + ' + Me.POHeaderPart2.SetColumnSpan(Me.THSubArtist, 2) + Me.THSubArtist.Dock = System.Windows.Forms.DockStyle.Fill + Me.THSubArtist.Location = New System.Drawing.Point(67, 23) + Me.THSubArtist.Margin = New System.Windows.Forms.Padding(0) + Me.THSubArtist.Name = "THSubArtist" + Me.THSubArtist.Size = New System.Drawing.Size(116, 23) + Me.THSubArtist.TabIndex = 103 + ' + 'POHeaderExpander + ' + Me.POHeaderExpander.Appearance = System.Windows.Forms.Appearance.Button + Me.POHeaderExpander.AutoSize = True + Me.POHeaderExpander.Cursor = System.Windows.Forms.Cursors.Hand + Me.POHeaderExpander.Dock = System.Windows.Forms.DockStyle.Top + Me.POHeaderExpander.FlatAppearance.BorderSize = 0 + Me.POHeaderExpander.FlatStyle = System.Windows.Forms.FlatStyle.Popup + Me.POHeaderExpander.Location = New System.Drawing.Point(0, 161) + Me.POHeaderExpander.Margin = New System.Windows.Forms.Padding(0) + Me.POHeaderExpander.Name = "POHeaderExpander" + Me.POHeaderExpander.Size = New System.Drawing.Size(183, 25) + Me.POHeaderExpander.TabIndex = 101 + Me.POHeaderExpander.TabStop = False + Me.POHeaderExpander.Text = "Expand..." + Me.POHeaderExpander.TextAlign = System.Drawing.ContentAlignment.MiddleCenter + Me.POHeaderExpander.UseVisualStyleBackColor = False + ' + 'POHeaderPart1 + ' + Me.POHeaderPart1.AutoSize = True + Me.POHeaderPart1.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink + Me.POHeaderPart1.ColumnCount = 2 + Me.POHeaderPart1.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle()) + Me.POHeaderPart1.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100.0!)) + Me.POHeaderPart1.Controls.Add(Me.Label3, 0, 0) + Me.POHeaderPart1.Controls.Add(Me.THPlayLevel, 1, 6) + Me.POHeaderPart1.Controls.Add(Me.CHRank, 1, 5) + Me.POHeaderPart1.Controls.Add(Me.Label10, 0, 5) + Me.POHeaderPart1.Controls.Add(Me.CHPlayer, 1, 4) + Me.POHeaderPart1.Controls.Add(Me.Label4, 0, 1) + Me.POHeaderPart1.Controls.Add(Me.THGenre, 1, 2) + Me.POHeaderPart1.Controls.Add(Me.THBPM, 1, 3) + Me.POHeaderPart1.Controls.Add(Me.Label2, 0, 2) + Me.POHeaderPart1.Controls.Add(Me.THArtist, 1, 1) + Me.POHeaderPart1.Controls.Add(Me.THTitle, 1, 0) + Me.POHeaderPart1.Controls.Add(Me.Label9, 0, 3) + Me.POHeaderPart1.Controls.Add(Me.Label8, 0, 4) + Me.POHeaderPart1.Controls.Add(Me.Label6, 0, 6) + Me.POHeaderPart1.Dock = System.Windows.Forms.DockStyle.Top + Me.POHeaderPart1.Location = New System.Drawing.Point(0, 0) + Me.POHeaderPart1.Name = "POHeaderPart1" + Me.POHeaderPart1.RowCount = 7 + Me.POHeaderPart1.RowStyles.Add(New System.Windows.Forms.RowStyle()) + Me.POHeaderPart1.RowStyles.Add(New System.Windows.Forms.RowStyle()) + Me.POHeaderPart1.RowStyles.Add(New System.Windows.Forms.RowStyle()) + Me.POHeaderPart1.RowStyles.Add(New System.Windows.Forms.RowStyle()) + Me.POHeaderPart1.RowStyles.Add(New System.Windows.Forms.RowStyle()) + Me.POHeaderPart1.RowStyles.Add(New System.Windows.Forms.RowStyle()) + Me.POHeaderPart1.RowStyles.Add(New System.Windows.Forms.RowStyle()) + Me.POHeaderPart1.Size = New System.Drawing.Size(183, 161) + Me.POHeaderPart1.TabIndex = 25 + ' + 'Label3 + ' + Me.Label3.Anchor = System.Windows.Forms.AnchorStyles.Right + Me.Label3.AutoSize = True + Me.Label3.Location = New System.Drawing.Point(33, 4) + Me.Label3.Name = "Label3" + Me.Label3.Size = New System.Drawing.Size(29, 15) + Me.Label3.TabIndex = 2 + Me.Label3.Text = "Title" + Me.Label3.TextAlign = System.Drawing.ContentAlignment.MiddleRight + ' + 'THPlayLevel + ' + Me.THPlayLevel.Dock = System.Windows.Forms.DockStyle.Fill + Me.THPlayLevel.Location = New System.Drawing.Point(65, 138) + Me.THPlayLevel.Margin = New System.Windows.Forms.Padding(0) + Me.THPlayLevel.Name = "THPlayLevel" + Me.THPlayLevel.Size = New System.Drawing.Size(118, 23) + Me.THPlayLevel.TabIndex = 8 + ' + 'CHRank + ' + Me.CHRank.Dock = System.Windows.Forms.DockStyle.Top + Me.CHRank.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList + Me.CHRank.FlatStyle = System.Windows.Forms.FlatStyle.System + Me.CHRank.Items.AddRange(New Object() {"0 - Very Hard", "1 - Hard", "2 - Normal", "3 - Easy", "4 - Very Easy"}) + Me.CHRank.Location = New System.Drawing.Point(65, 115) + Me.CHRank.Margin = New System.Windows.Forms.Padding(0) + Me.CHRank.Name = "CHRank" + Me.CHRank.Size = New System.Drawing.Size(118, 23) + Me.CHRank.TabIndex = 7 + ' + 'Label10 + ' + Me.Label10.Anchor = System.Windows.Forms.AnchorStyles.Right + Me.Label10.AutoSize = True + Me.Label10.Location = New System.Drawing.Point(19, 119) + Me.Label10.Name = "Label10" + Me.Label10.Size = New System.Drawing.Size(43, 15) + Me.Label10.TabIndex = 16 + Me.Label10.Text = "Rankgi" + Me.Label10.TextAlign = System.Drawing.ContentAlignment.MiddleRight + ' + 'CHPlayer + ' + Me.CHPlayer.Dock = System.Windows.Forms.DockStyle.Top + Me.CHPlayer.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList + Me.CHPlayer.FlatStyle = System.Windows.Forms.FlatStyle.System + Me.CHPlayer.Items.AddRange(New Object() {"1 - Single Play", "2 - Couple Play", "3 - Double Play"}) + Me.CHPlayer.Location = New System.Drawing.Point(65, 92) + Me.CHPlayer.Margin = New System.Windows.Forms.Padding(0) + Me.CHPlayer.Name = "CHPlayer" + Me.CHPlayer.Size = New System.Drawing.Size(118, 23) + Me.CHPlayer.TabIndex = 6 + ' + 'Label4 + ' + Me.Label4.Anchor = System.Windows.Forms.AnchorStyles.Right + Me.Label4.AutoSize = True + Me.Label4.Location = New System.Drawing.Point(27, 27) + Me.Label4.Name = "Label4" + Me.Label4.Size = New System.Drawing.Size(35, 15) + Me.Label4.TabIndex = 3 + Me.Label4.Text = "Artist" + Me.Label4.TextAlign = System.Drawing.ContentAlignment.MiddleRight + ' + 'THGenre + ' + Me.THGenre.Dock = System.Windows.Forms.DockStyle.Fill + Me.THGenre.Location = New System.Drawing.Point(65, 46) + Me.THGenre.Margin = New System.Windows.Forms.Padding(0) + Me.THGenre.Name = "THGenre" + Me.THGenre.Size = New System.Drawing.Size(118, 23) + Me.THGenre.TabIndex = 4 + ' + 'THBPM + ' + Me.THBPM.DecimalPlaces = 4 + Me.THBPM.Dock = System.Windows.Forms.DockStyle.Fill + Me.THBPM.Increment = New Decimal(New Integer() {10, 0, 0, 0}) + Me.THBPM.Location = New System.Drawing.Point(65, 69) + Me.THBPM.Margin = New System.Windows.Forms.Padding(0) + Me.THBPM.Maximum = New Decimal(New Integer() {655359999, 0, 0, 262144}) + Me.THBPM.Minimum = New Decimal(New Integer() {1, 0, 0, 262144}) + Me.THBPM.Name = "THBPM" + Me.THBPM.Size = New System.Drawing.Size(118, 23) + Me.THBPM.TabIndex = 5 + Me.THBPM.Value = New Decimal(New Integer() {120, 0, 0, 0}) + ' + 'Label2 + ' + Me.Label2.Anchor = System.Windows.Forms.AnchorStyles.Right + Me.Label2.AutoSize = True + Me.Label2.Location = New System.Drawing.Point(24, 50) + Me.Label2.Name = "Label2" + Me.Label2.Size = New System.Drawing.Size(38, 15) + Me.Label2.TabIndex = 4 + Me.Label2.Text = "Genre" + Me.Label2.TextAlign = System.Drawing.ContentAlignment.MiddleRight + ' + 'THArtist + ' + Me.THArtist.Dock = System.Windows.Forms.DockStyle.Fill + Me.THArtist.Location = New System.Drawing.Point(65, 23) + Me.THArtist.Margin = New System.Windows.Forms.Padding(0) + Me.THArtist.Name = "THArtist" + Me.THArtist.Size = New System.Drawing.Size(118, 23) + Me.THArtist.TabIndex = 3 + ' + 'THTitle + ' + Me.THTitle.Dock = System.Windows.Forms.DockStyle.Fill + Me.THTitle.Location = New System.Drawing.Point(65, 0) + Me.THTitle.Margin = New System.Windows.Forms.Padding(0) + Me.THTitle.Name = "THTitle" + Me.THTitle.Size = New System.Drawing.Size(118, 23) + Me.THTitle.TabIndex = 2 + ' + 'Label9 + ' + Me.Label9.Anchor = System.Windows.Forms.AnchorStyles.Right + Me.Label9.AutoSize = True + Me.Label9.Location = New System.Drawing.Point(30, 73) + Me.Label9.Name = "Label9" + Me.Label9.Size = New System.Drawing.Size(32, 15) + Me.Label9.TabIndex = 5 + Me.Label9.Text = "BPM" + Me.Label9.TextAlign = System.Drawing.ContentAlignment.MiddleRight + ' + 'Label8 + ' + Me.Label8.Anchor = System.Windows.Forms.AnchorStyles.Right + Me.Label8.AutoSize = True + Me.Label8.Location = New System.Drawing.Point(23, 96) + Me.Label8.Name = "Label8" + Me.Label8.Size = New System.Drawing.Size(39, 15) + Me.Label8.TabIndex = 13 + Me.Label8.Text = "Player" + Me.Label8.TextAlign = System.Drawing.ContentAlignment.MiddleRight + ' + 'Label6 + ' + Me.Label6.Anchor = System.Windows.Forms.AnchorStyles.Right + Me.Label6.AutoSize = True + Me.Label6.Location = New System.Drawing.Point(3, 142) + Me.Label6.Name = "Label6" + Me.Label6.Size = New System.Drawing.Size(59, 15) + Me.Label6.TabIndex = 8 + Me.Label6.Text = "Play Level" + Me.Label6.TextAlign = System.Drawing.ContentAlignment.MiddleRight + ' + 'POHeaderSwitch + ' + Me.POHeaderSwitch.Appearance = System.Windows.Forms.Appearance.Button + Me.POHeaderSwitch.BackColor = System.Drawing.SystemColors.Control + Me.POHeaderSwitch.Checked = True + Me.POHeaderSwitch.CheckState = System.Windows.Forms.CheckState.Checked + Me.POHeaderSwitch.Cursor = System.Windows.Forms.Cursors.Hand + Me.POHeaderSwitch.Dock = System.Windows.Forms.DockStyle.Top + Me.POHeaderSwitch.Font = New System.Drawing.Font("Segoe UI", 9.0!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.POHeaderSwitch.Location = New System.Drawing.Point(0, 0) + Me.POHeaderSwitch.Name = "POHeaderSwitch" + Me.POHeaderSwitch.Size = New System.Drawing.Size(183, 20) + Me.POHeaderSwitch.TabIndex = 1 + Me.POHeaderSwitch.TabStop = False + Me.POHeaderSwitch.Text = "Header" + Me.POHeaderSwitch.TextAlign = System.Drawing.ContentAlignment.MiddleCenter + Me.POHeaderSwitch.UseCompatibleTextRendering = True + Me.POHeaderSwitch.UseVisualStyleBackColor = False + ' + 'Timer1 + ' + Me.Timer1.Interval = 15 + ' + 'Menu1 + ' + Me.Menu1.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.MInsert, Me.MRemove}) + Me.Menu1.Name = "Menu1" + Me.Menu1.Size = New System.Drawing.Size(166, 48) + ' + 'MInsert + ' + Me.MInsert.Image = Global.iBMSC.My.Resources.Resources.x16Add + Me.MInsert.Name = "MInsert" + Me.MInsert.Size = New System.Drawing.Size(165, 22) + Me.MInsert.Text = "Insert Measure" + ' + 'MRemove + ' + Me.MRemove.Image = Global.iBMSC.My.Resources.Resources.x16Remove + Me.MRemove.Name = "MRemove" + Me.MRemove.Size = New System.Drawing.Size(165, 22) + Me.MRemove.Text = "Remove Measure" + ' + 'AutoSaveTimer + ' + Me.AutoSaveTimer.Enabled = True + Me.AutoSaveTimer.Interval = 300000 + ' + 'mnMain + ' + Me.mnMain.AccessibleRole = System.Windows.Forms.AccessibleRole.MenuBar + Me.mnMain.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch + Me.mnMain.Dock = System.Windows.Forms.DockStyle.None + Me.mnMain.GripMargin = New System.Windows.Forms.Padding(2) + Me.mnMain.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.mnFile, Me.mnEdit, Me.mnSys, Me.mnOptions, Me.mnConversion, Me.mnPreview}) + Me.mnMain.LayoutStyle = System.Windows.Forms.ToolStripLayoutStyle.Flow + Me.mnMain.Location = New System.Drawing.Point(0, 0) + Me.mnMain.Name = "mnMain" + Me.mnMain.Size = New System.Drawing.Size(952, 23) + Me.mnMain.TabIndex = 57 + ' + 'mnFile + ' + Me.mnFile.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.mnNew, Me.mnOpen, Me.mnImportSM, Me.mnImportIBMSC, Me.ToolStripSeparator14, Me.mnSave, Me.mnSaveAs, Me.mnExport, Me.ToolStripSeparator15, Me.mnOpenR0, Me.mnOpenR1, Me.mnOpenR2, Me.mnOpenR3, Me.mnOpenR4, Me.ToolStripSeparator16, Me.mnQuit}) + Me.mnFile.Name = "mnFile" + Me.mnFile.Size = New System.Drawing.Size(37, 19) + Me.mnFile.Text = "&File" + ' + 'mnNew + ' + Me.mnNew.Image = Global.iBMSC.My.Resources.Resources.x16New + Me.mnNew.Name = "mnNew" + Me.mnNew.ShortcutKeys = CType((System.Windows.Forms.Keys.Control Or System.Windows.Forms.Keys.N), System.Windows.Forms.Keys) + Me.mnNew.Size = New System.Drawing.Size(240, 22) + Me.mnNew.Text = "&New" + ' + 'mnOpen + ' + Me.mnOpen.Image = Global.iBMSC.My.Resources.Resources.x16Open + Me.mnOpen.Name = "mnOpen" + Me.mnOpen.ShortcutKeys = CType((System.Windows.Forms.Keys.Control Or System.Windows.Forms.Keys.O), System.Windows.Forms.Keys) + Me.mnOpen.Size = New System.Drawing.Size(240, 22) + Me.mnOpen.Text = "&Open" + ' + 'mnImportSM + ' + Me.mnImportSM.Image = Global.iBMSC.My.Resources.Resources.x16Import2 + Me.mnImportSM.Name = "mnImportSM" + Me.mnImportSM.Size = New System.Drawing.Size(240, 22) + Me.mnImportSM.Text = "Import from .S&M file" + ' + 'mnImportIBMSC + ' + Me.mnImportIBMSC.Image = Global.iBMSC.My.Resources.Resources.x16Import2 + Me.mnImportIBMSC.Name = "mnImportIBMSC" + Me.mnImportIBMSC.Size = New System.Drawing.Size(240, 22) + Me.mnImportIBMSC.Text = "Import from .&IBMSC file" + ' + 'ToolStripSeparator14 + ' + Me.ToolStripSeparator14.Name = "ToolStripSeparator14" + Me.ToolStripSeparator14.Size = New System.Drawing.Size(237, 6) + ' + 'mnSave + ' + Me.mnSave.Image = Global.iBMSC.My.Resources.Resources.x16Save + Me.mnSave.Name = "mnSave" + Me.mnSave.ShortcutKeys = CType((System.Windows.Forms.Keys.Control Or System.Windows.Forms.Keys.S), System.Windows.Forms.Keys) + Me.mnSave.Size = New System.Drawing.Size(240, 22) + Me.mnSave.Text = "&Save" + ' + 'mnSaveAs + ' + Me.mnSaveAs.Image = Global.iBMSC.My.Resources.Resources.x16SaveAs + Me.mnSaveAs.Name = "mnSaveAs" + Me.mnSaveAs.ShortcutKeys = CType(((System.Windows.Forms.Keys.Control Or System.Windows.Forms.Keys.Alt) _ + Or System.Windows.Forms.Keys.S), System.Windows.Forms.Keys) + Me.mnSaveAs.Size = New System.Drawing.Size(240, 22) + Me.mnSaveAs.Text = "Save &As..." + ' + 'mnExport + ' + Me.mnExport.Image = Global.iBMSC.My.Resources.Resources.x16Export + Me.mnExport.Name = "mnExport" + Me.mnExport.ShortcutKeys = CType(((System.Windows.Forms.Keys.Control Or System.Windows.Forms.Keys.Shift) _ + Or System.Windows.Forms.Keys.E), System.Windows.Forms.Keys) + Me.mnExport.Size = New System.Drawing.Size(240, 22) + Me.mnExport.Text = "&Export .IBMSC file" + ' + 'ToolStripSeparator15 + ' + Me.ToolStripSeparator15.Name = "ToolStripSeparator15" + Me.ToolStripSeparator15.Size = New System.Drawing.Size(237, 6) + ' + 'mnOpenR0 + ' + Me.mnOpenR0.Enabled = False + Me.mnOpenR0.Name = "mnOpenR0" + Me.mnOpenR0.ShortcutKeys = CType((System.Windows.Forms.Keys.Alt Or System.Windows.Forms.Keys.D1), System.Windows.Forms.Keys) + Me.mnOpenR0.Size = New System.Drawing.Size(240, 22) + Me.mnOpenR0.Tag = "0" + Me.mnOpenR0.Text = "Recent #0" + ' + 'mnOpenR1 + ' + Me.mnOpenR1.Enabled = False + Me.mnOpenR1.Name = "mnOpenR1" + Me.mnOpenR1.ShortcutKeys = CType((System.Windows.Forms.Keys.Alt Or System.Windows.Forms.Keys.D2), System.Windows.Forms.Keys) + Me.mnOpenR1.Size = New System.Drawing.Size(240, 22) + Me.mnOpenR1.Tag = "1" + Me.mnOpenR1.Text = "Recent #1" + ' + 'mnOpenR2 + ' + Me.mnOpenR2.Enabled = False + Me.mnOpenR2.Name = "mnOpenR2" + Me.mnOpenR2.ShortcutKeys = CType((System.Windows.Forms.Keys.Alt Or System.Windows.Forms.Keys.D3), System.Windows.Forms.Keys) + Me.mnOpenR2.Size = New System.Drawing.Size(240, 22) + Me.mnOpenR2.Tag = "2" + Me.mnOpenR2.Text = "Recent #2" + ' + 'mnOpenR3 + ' + Me.mnOpenR3.Enabled = False + Me.mnOpenR3.Name = "mnOpenR3" + Me.mnOpenR3.ShortcutKeys = CType((System.Windows.Forms.Keys.Alt Or System.Windows.Forms.Keys.D4), System.Windows.Forms.Keys) + Me.mnOpenR3.Size = New System.Drawing.Size(240, 22) + Me.mnOpenR3.Tag = "3" + Me.mnOpenR3.Text = "Recent #3" + ' + 'mnOpenR4 + ' + Me.mnOpenR4.Enabled = False + Me.mnOpenR4.Name = "mnOpenR4" + Me.mnOpenR4.ShortcutKeys = CType((System.Windows.Forms.Keys.Alt Or System.Windows.Forms.Keys.D5), System.Windows.Forms.Keys) + Me.mnOpenR4.Size = New System.Drawing.Size(240, 22) + Me.mnOpenR4.Tag = "4" + Me.mnOpenR4.Text = "Recent #4" + ' + 'ToolStripSeparator16 + ' + Me.ToolStripSeparator16.Name = "ToolStripSeparator16" + Me.ToolStripSeparator16.Size = New System.Drawing.Size(237, 6) + ' + 'mnQuit + ' + Me.mnQuit.Name = "mnQuit" + Me.mnQuit.Size = New System.Drawing.Size(240, 22) + Me.mnQuit.Text = "&Quit" + ' + 'mnEdit + ' + Me.mnEdit.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.mnUndo, Me.mnRedo, Me.ToolStripSeparator17, Me.mnCut, Me.mnCopy, Me.mnPaste, Me.mnDelete, Me.mnSelectAll, Me.mnGotoMeasure, Me.ToolStripSeparator18, Me.mnFind, Me.mnStatistics, Me.ToolStripSeparator19, Me.mnTimeSelect, Me.mnSelect, Me.mnWrite, Me.ToolStripSeparator23, Me.mnMyO2}) + Me.mnEdit.Name = "mnEdit" + Me.mnEdit.Size = New System.Drawing.Size(39, 19) + Me.mnEdit.Text = "&Edit" + ' + 'mnUndo + ' + Me.mnUndo.Enabled = False + Me.mnUndo.Image = Global.iBMSC.My.Resources.Resources.x16Undo + Me.mnUndo.Name = "mnUndo" + Me.mnUndo.ShortcutKeyDisplayString = "Ctrl+Z" + Me.mnUndo.Size = New System.Drawing.Size(233, 22) + Me.mnUndo.Text = "&Undo" + ' + 'mnRedo + ' + Me.mnRedo.Enabled = False + Me.mnRedo.Image = Global.iBMSC.My.Resources.Resources.x16Redo + Me.mnRedo.Name = "mnRedo" + Me.mnRedo.ShortcutKeyDisplayString = "Ctrl+Y" + Me.mnRedo.Size = New System.Drawing.Size(233, 22) + Me.mnRedo.Text = "&Redo" + ' + 'ToolStripSeparator17 + ' + Me.ToolStripSeparator17.Name = "ToolStripSeparator17" + Me.ToolStripSeparator17.Size = New System.Drawing.Size(230, 6) + ' + 'mnCut + ' + Me.mnCut.Image = Global.iBMSC.My.Resources.Resources.x16Cut + Me.mnCut.Name = "mnCut" + Me.mnCut.ShortcutKeyDisplayString = "Ctrl+X" + Me.mnCut.Size = New System.Drawing.Size(233, 22) + Me.mnCut.Text = "Cu&t" + ' + 'mnCopy + ' + Me.mnCopy.Image = Global.iBMSC.My.Resources.Resources.x16Copy + Me.mnCopy.Name = "mnCopy" + Me.mnCopy.ShortcutKeyDisplayString = "Ctrl+C" + Me.mnCopy.Size = New System.Drawing.Size(233, 22) + Me.mnCopy.Text = "&Copy" + ' + 'mnPaste + ' + Me.mnPaste.Image = Global.iBMSC.My.Resources.Resources.x16Paste + Me.mnPaste.Name = "mnPaste" + Me.mnPaste.ShortcutKeyDisplayString = "Ctrl+V" + Me.mnPaste.Size = New System.Drawing.Size(233, 22) + Me.mnPaste.Text = "&Paste" + ' + 'mnDelete + ' + Me.mnDelete.Image = Global.iBMSC.My.Resources.Resources.x16Remove + Me.mnDelete.Name = "mnDelete" + Me.mnDelete.ShortcutKeyDisplayString = "Del" + Me.mnDelete.Size = New System.Drawing.Size(233, 22) + Me.mnDelete.Text = "De&lete" + ' + 'mnSelectAll + ' + Me.mnSelectAll.Name = "mnSelectAll" + Me.mnSelectAll.ShortcutKeyDisplayString = "Ctrl+A" + Me.mnSelectAll.Size = New System.Drawing.Size(233, 22) + Me.mnSelectAll.Text = "Select &All" + ' + 'mnGotoMeasure + ' + Me.mnGotoMeasure.Name = "mnGotoMeasure" + Me.mnGotoMeasure.ShortcutKeys = CType((System.Windows.Forms.Keys.Control Or System.Windows.Forms.Keys.G), System.Windows.Forms.Keys) + Me.mnGotoMeasure.Size = New System.Drawing.Size(233, 22) + Me.mnGotoMeasure.Text = "Go To Measure..." + ' + 'ToolStripSeparator18 + ' + Me.ToolStripSeparator18.Name = "ToolStripSeparator18" + Me.ToolStripSeparator18.Size = New System.Drawing.Size(230, 6) + ' + 'mnFind + ' + Me.mnFind.Image = Global.iBMSC.My.Resources.Resources.x16Find + Me.mnFind.Name = "mnFind" + Me.mnFind.ShortcutKeyDisplayString = "Ctrl+F" + Me.mnFind.Size = New System.Drawing.Size(233, 22) + Me.mnFind.Text = "&Find / Delete / Replace" + ' + 'mnStatistics + ' + Me.mnStatistics.Image = Global.iBMSC.My.Resources.Resources.x16Statistics + Me.mnStatistics.Name = "mnStatistics" + Me.mnStatistics.ShortcutKeyDisplayString = "Ctrl+T" + Me.mnStatistics.Size = New System.Drawing.Size(233, 22) + Me.mnStatistics.Text = "St&atistics" + ' + 'ToolStripSeparator19 + ' + Me.ToolStripSeparator19.Name = "ToolStripSeparator19" + Me.ToolStripSeparator19.Size = New System.Drawing.Size(230, 6) + ' + 'mnTimeSelect + ' + Me.mnTimeSelect.CheckOnClick = True + Me.mnTimeSelect.Image = Global.iBMSC.My.Resources.Resources.x16TimeSelection + Me.mnTimeSelect.Name = "mnTimeSelect" + Me.mnTimeSelect.ShortcutKeys = System.Windows.Forms.Keys.F1 + Me.mnTimeSelect.Size = New System.Drawing.Size(233, 22) + Me.mnTimeSelect.Text = "T&ime Selection Tool" + ' + 'mnSelect + ' + Me.mnSelect.Checked = True + Me.mnSelect.CheckOnClick = True + Me.mnSelect.CheckState = System.Windows.Forms.CheckState.Checked + Me.mnSelect.Image = Global.iBMSC.My.Resources.Resources.x16Select + Me.mnSelect.Name = "mnSelect" + Me.mnSelect.ShortcutKeys = System.Windows.Forms.Keys.F2 + Me.mnSelect.Size = New System.Drawing.Size(233, 22) + Me.mnSelect.Text = "&Select Tool" + ' + 'mnWrite + ' + Me.mnWrite.CheckOnClick = True + Me.mnWrite.Image = Global.iBMSC.My.Resources.Resources.x16Pen + Me.mnWrite.Name = "mnWrite" + Me.mnWrite.ShortcutKeys = System.Windows.Forms.Keys.F3 + Me.mnWrite.Size = New System.Drawing.Size(233, 22) + Me.mnWrite.Text = "&Write Tool" + ' + 'ToolStripSeparator23 + ' + Me.ToolStripSeparator23.Name = "ToolStripSeparator23" + Me.ToolStripSeparator23.Size = New System.Drawing.Size(230, 6) + ' + 'mnMyO2 + ' + Me.mnMyO2.Image = Global.iBMSC.My.Resources.Resources.x16MyO2 + Me.mnMyO2.Name = "mnMyO2" + Me.mnMyO2.Size = New System.Drawing.Size(233, 22) + Me.mnMyO2.Text = "MyO2 ToolBox (Chinese Only)" + ' + 'mnSys + ' + Me.mnSys.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.mnSMenu, Me.mnSTB, Me.mnSOP, Me.mnSStatus, Me.mnSLSplitter, Me.mnSRSplitter, Me.ToolStripSeparator21, Me.CGShow, Me.CGShowS, Me.CGShowBG, Me.CGShowM, Me.CGShowMB, Me.CGShowV, Me.CGShowC, Me.ToolStripSeparator22, Me.CGBPM, Me.CGSTOP, Me.CGSCROLL, Me.CGBLP}) + Me.mnSys.Name = "mnSys" + Me.mnSys.Size = New System.Drawing.Size(44, 19) + Me.mnSys.Text = "&View" + ' + 'mnSMenu + ' + Me.mnSMenu.Checked = True + Me.mnSMenu.CheckOnClick = True + Me.mnSMenu.CheckState = System.Windows.Forms.CheckState.Checked + Me.mnSMenu.Name = "mnSMenu" + Me.mnSMenu.Size = New System.Drawing.Size(172, 22) + Me.mnSMenu.Text = "&Main Menu" + Me.mnSMenu.Visible = False + ' + 'mnSTB + ' + Me.mnSTB.Checked = True + Me.mnSTB.CheckOnClick = True + Me.mnSTB.CheckState = System.Windows.Forms.CheckState.Checked + Me.mnSTB.Name = "mnSTB" + Me.mnSTB.Size = New System.Drawing.Size(172, 22) + Me.mnSTB.Text = "&ToolBar" + ' + 'mnSOP + ' + Me.mnSOP.Checked = True + Me.mnSOP.CheckOnClick = True + Me.mnSOP.CheckState = System.Windows.Forms.CheckState.Checked + Me.mnSOP.Name = "mnSOP" + Me.mnSOP.Size = New System.Drawing.Size(172, 22) + Me.mnSOP.Text = "&Options Panel" + ' + 'mnSStatus + ' + Me.mnSStatus.Checked = True + Me.mnSStatus.CheckOnClick = True + Me.mnSStatus.CheckState = System.Windows.Forms.CheckState.Checked + Me.mnSStatus.Name = "mnSStatus" + Me.mnSStatus.Size = New System.Drawing.Size(172, 22) + Me.mnSStatus.Text = "&Status Bar" + ' + 'mnSLSplitter + ' + Me.mnSLSplitter.CheckOnClick = True + Me.mnSLSplitter.Name = "mnSLSplitter" + Me.mnSLSplitter.Size = New System.Drawing.Size(172, 22) + Me.mnSLSplitter.Text = "&Left Splitter" + ' + 'mnSRSplitter + ' + Me.mnSRSplitter.CheckOnClick = True + Me.mnSRSplitter.Name = "mnSRSplitter" + Me.mnSRSplitter.Size = New System.Drawing.Size(172, 22) + Me.mnSRSplitter.Text = "&Right Splitter" + ' + 'ToolStripSeparator21 + ' + Me.ToolStripSeparator21.Name = "ToolStripSeparator21" + Me.ToolStripSeparator21.Size = New System.Drawing.Size(169, 6) + ' + 'CGShow + ' + Me.CGShow.Checked = True + Me.CGShow.CheckOnClick = True + Me.CGShow.CheckState = System.Windows.Forms.CheckState.Checked + Me.CGShow.Name = "CGShow" + Me.CGShow.Size = New System.Drawing.Size(172, 22) + Me.CGShow.Text = "Grid" + ' + 'CGShowS + ' + Me.CGShowS.Checked = True + Me.CGShowS.CheckOnClick = True + Me.CGShowS.CheckState = System.Windows.Forms.CheckState.Checked + Me.CGShowS.Name = "CGShowS" + Me.CGShowS.Size = New System.Drawing.Size(172, 22) + Me.CGShowS.Text = "Sub" + ' + 'CGShowBG + ' + Me.CGShowBG.Checked = True + Me.CGShowBG.CheckOnClick = True + Me.CGShowBG.CheckState = System.Windows.Forms.CheckState.Checked + Me.CGShowBG.Name = "CGShowBG" + Me.CGShowBG.Size = New System.Drawing.Size(172, 22) + Me.CGShowBG.Text = "BackGround" + ' + 'CGShowM + ' + Me.CGShowM.Checked = True + Me.CGShowM.CheckOnClick = True + Me.CGShowM.CheckState = System.Windows.Forms.CheckState.Checked + Me.CGShowM.Name = "CGShowM" + Me.CGShowM.Size = New System.Drawing.Size(172, 22) + Me.CGShowM.Text = "Measure Index" + ' + 'CGShowMB + ' + Me.CGShowMB.Checked = True + Me.CGShowMB.CheckOnClick = True + Me.CGShowMB.CheckState = System.Windows.Forms.CheckState.Checked + Me.CGShowMB.Name = "CGShowMB" + Me.CGShowMB.Size = New System.Drawing.Size(172, 22) + Me.CGShowMB.Text = "Measure Line" + ' + 'CGShowV + ' + Me.CGShowV.Checked = True + Me.CGShowV.CheckOnClick = True + Me.CGShowV.CheckState = System.Windows.Forms.CheckState.Checked + Me.CGShowV.Name = "CGShowV" + Me.CGShowV.Size = New System.Drawing.Size(172, 22) + Me.CGShowV.Text = "Vertical Line" + ' + 'CGShowC + ' + Me.CGShowC.Checked = True + Me.CGShowC.CheckOnClick = True + Me.CGShowC.CheckState = System.Windows.Forms.CheckState.Checked + Me.CGShowC.Name = "CGShowC" + Me.CGShowC.Size = New System.Drawing.Size(172, 22) + Me.CGShowC.Text = "Column Caption" + ' + 'ToolStripSeparator22 + ' + Me.ToolStripSeparator22.Name = "ToolStripSeparator22" + Me.ToolStripSeparator22.Size = New System.Drawing.Size(169, 6) + ' + 'CGBPM + ' + Me.CGBPM.Checked = True + Me.CGBPM.CheckOnClick = True + Me.CGBPM.CheckState = System.Windows.Forms.CheckState.Checked + Me.CGBPM.Name = "CGBPM" + Me.CGBPM.Size = New System.Drawing.Size(172, 22) + Me.CGBPM.Text = "BPM" + ' + 'CGSTOP + ' + Me.CGSTOP.Checked = True + Me.CGSTOP.CheckOnClick = True + Me.CGSTOP.CheckState = System.Windows.Forms.CheckState.Checked + Me.CGSTOP.Name = "CGSTOP" + Me.CGSTOP.Size = New System.Drawing.Size(172, 22) + Me.CGSTOP.Text = "STOP" + ' + 'CGSCROLL + ' + Me.CGSCROLL.Checked = True + Me.CGSCROLL.CheckOnClick = True + Me.CGSCROLL.CheckState = System.Windows.Forms.CheckState.Checked + Me.CGSCROLL.Name = "CGSCROLL" + Me.CGSCROLL.Size = New System.Drawing.Size(172, 22) + Me.CGSCROLL.Text = "SCROLL" + ' + 'CGBLP + ' + Me.CGBLP.Checked = True + Me.CGBLP.CheckOnClick = True + Me.CGBLP.CheckState = System.Windows.Forms.CheckState.Checked + Me.CGBLP.Name = "CGBLP" + Me.CGBLP.Size = New System.Drawing.Size(172, 22) + Me.CGBLP.Text = "BGA / Layer / Poor" + ' + 'mnOptions + ' + Me.mnOptions.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.mnNTInput, Me.mnErrorCheck, Me.mnPreviewOnClick, Me.mnShowFileName, Me.ToolStripSeparator20, Me.mnGOptions, Me.mnVOptions, Me.mnPOptions, Me.mnLanguage, Me.mnTheme}) + Me.mnOptions.Name = "mnOptions" + Me.mnOptions.Size = New System.Drawing.Size(61, 19) + Me.mnOptions.Text = "&Options" + ' + 'mnNTInput + ' + Me.mnNTInput.Checked = True + Me.mnNTInput.CheckOnClick = True + Me.mnNTInput.CheckState = System.Windows.Forms.CheckState.Checked + Me.mnNTInput.Image = Global.iBMSC.My.Resources.Resources.x16NTInput + Me.mnNTInput.Name = "mnNTInput" + Me.mnNTInput.ShortcutKeys = System.Windows.Forms.Keys.F8 + Me.mnNTInput.Size = New System.Drawing.Size(228, 22) + Me.mnNTInput.Text = "L&N Input Style - NT/BMSE" + ' + 'mnErrorCheck + ' + Me.mnErrorCheck.Checked = True + Me.mnErrorCheck.CheckOnClick = True + Me.mnErrorCheck.CheckState = System.Windows.Forms.CheckState.Checked + Me.mnErrorCheck.Image = Global.iBMSC.My.Resources.Resources.x16CheckError + Me.mnErrorCheck.Name = "mnErrorCheck" + Me.mnErrorCheck.Size = New System.Drawing.Size(228, 22) + Me.mnErrorCheck.Text = "&Error Check" + ' + 'mnPreviewOnClick + ' + Me.mnPreviewOnClick.Checked = True + Me.mnPreviewOnClick.CheckOnClick = True + Me.mnPreviewOnClick.CheckState = System.Windows.Forms.CheckState.Checked + Me.mnPreviewOnClick.Image = Global.iBMSC.My.Resources.Resources.x16PreviewOnClick + Me.mnPreviewOnClick.Name = "mnPreviewOnClick" + Me.mnPreviewOnClick.Size = New System.Drawing.Size(228, 22) + Me.mnPreviewOnClick.Text = "Preview on &Click" + ' + 'mnShowFileName + ' + Me.mnShowFileName.CheckOnClick = True + Me.mnShowFileName.Image = Global.iBMSC.My.Resources.Resources.x16ShowFileNameN + Me.mnShowFileName.Name = "mnShowFileName" + Me.mnShowFileName.Size = New System.Drawing.Size(228, 22) + Me.mnShowFileName.Text = "Show &File Name on Notes" + ' + 'ToolStripSeparator20 + ' + Me.ToolStripSeparator20.Name = "ToolStripSeparator20" + Me.ToolStripSeparator20.Size = New System.Drawing.Size(225, 6) + ' + 'mnGOptions + ' + Me.mnGOptions.Image = Global.iBMSC.My.Resources.Resources.x16GeneralOptions + Me.mnGOptions.Name = "mnGOptions" + Me.mnGOptions.ShortcutKeys = System.Windows.Forms.Keys.F10 + Me.mnGOptions.Size = New System.Drawing.Size(228, 22) + Me.mnGOptions.Text = "&General Options" + ' + 'mnVOptions + ' + Me.mnVOptions.Image = Global.iBMSC.My.Resources.Resources.x16VisualOptions + Me.mnVOptions.Name = "mnVOptions" + Me.mnVOptions.ShortcutKeys = System.Windows.Forms.Keys.F12 + Me.mnVOptions.Size = New System.Drawing.Size(228, 22) + Me.mnVOptions.Text = "&Visual Options" + ' + 'mnPOptions + ' + Me.mnPOptions.Image = Global.iBMSC.My.Resources.Resources.x16PlayerOptions + Me.mnPOptions.Name = "mnPOptions" + Me.mnPOptions.ShortcutKeys = System.Windows.Forms.Keys.F9 + Me.mnPOptions.Size = New System.Drawing.Size(228, 22) + Me.mnPOptions.Text = "&Player Options" + ' + 'mnConversion + ' + Me.mnConversion.DropDown = Me.cmnConversion + Me.mnConversion.Name = "mnConversion" + Me.mnConversion.Size = New System.Drawing.Size(84, 19) + Me.mnConversion.Text = "&Conversions" + ' + 'cmnConversion + ' + Me.cmnConversion.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.POBLong, Me.POBShort, Me.POBLongShort, Me.ToolStripSeparator10, Me.POBHidden, Me.POBVisible, Me.POBHiddenVisible, Me.ToolStripSeparator11, Me.POBModify, Me.POBMirror, Me.POBFlip, Me.POBRandom, Me.POBSRandom}) + Me.cmnConversion.Name = "cmnLanguage" + Me.cmnConversion.OwnerItem = Me.POConvert + Me.cmnConversion.Size = New System.Drawing.Size(222, 258) + ' + 'POBLong + ' + Me.POBLong.Enabled = False + Me.POBLong.Image = Global.iBMSC.My.Resources.Resources.ConvertNotesL + Me.POBLong.Name = "POBLong" + Me.POBLong.Size = New System.Drawing.Size(221, 22) + Me.POBLong.Text = "→ &Long Note" + ' + 'POBShort + ' + Me.POBShort.Image = Global.iBMSC.My.Resources.Resources.ConvertNotesN + Me.POBShort.Name = "POBShort" + Me.POBShort.Size = New System.Drawing.Size(221, 22) + Me.POBShort.Text = "→ &Short Note" + ' + 'POBLongShort + ' + Me.POBLongShort.Enabled = False + Me.POBLongShort.Image = Global.iBMSC.My.Resources.Resources.ConvertNotes + Me.POBLongShort.Name = "POBLongShort" + Me.POBLongShort.Size = New System.Drawing.Size(221, 22) + Me.POBLongShort.Text = "Long Note ↔ Short Note" + ' + 'ToolStripSeparator10 + ' + Me.ToolStripSeparator10.Name = "ToolStripSeparator10" + Me.ToolStripSeparator10.Size = New System.Drawing.Size(218, 6) + ' + 'POBHidden + ' + Me.POBHidden.Image = Global.iBMSC.My.Resources.Resources.ConvertNotesH + Me.POBHidden.Name = "POBHidden" + Me.POBHidden.Size = New System.Drawing.Size(221, 22) + Me.POBHidden.Text = "→ &Hidden Note" + ' + 'POBVisible + ' + Me.POBVisible.Image = Global.iBMSC.My.Resources.Resources.ConvertNotesV + Me.POBVisible.Name = "POBVisible" + Me.POBVisible.Size = New System.Drawing.Size(221, 22) + Me.POBVisible.Text = "→ &Visible Note" + ' + 'POBHiddenVisible + ' + Me.POBHiddenVisible.Image = Global.iBMSC.My.Resources.Resources.ConvertNotesHV + Me.POBHiddenVisible.Name = "POBHiddenVisible" + Me.POBHiddenVisible.Size = New System.Drawing.Size(221, 22) + Me.POBHiddenVisible.Text = "Hidden Note ↔ Visible Note" + ' + 'ToolStripSeparator11 + ' + Me.ToolStripSeparator11.Name = "ToolStripSeparator11" + Me.ToolStripSeparator11.Size = New System.Drawing.Size(218, 6) + ' + 'POBModify + ' + Me.POBModify.Image = Global.iBMSC.My.Resources.Resources.x16ModifyLabel + Me.POBModify.Name = "POBModify" + Me.POBModify.Size = New System.Drawing.Size(221, 22) + Me.POBModify.Text = "Modify &Labels" + ' + 'POBMirror + ' + Me.POBMirror.Image = Global.iBMSC.My.Resources.Resources.x16Mirror + Me.POBMirror.Name = "POBMirror" + Me.POBMirror.Size = New System.Drawing.Size(221, 22) + Me.POBMirror.Text = "&Mirror" + ' + 'POBFlip + ' + Me.POBFlip.Image = Global.iBMSC.My.Resources.Resources.x16Flip + Me.POBFlip.Name = "POBFlip" + Me.POBFlip.Size = New System.Drawing.Size(221, 22) + Me.POBFlip.Text = "&Flip" + ' + 'POBRandom + ' + Me.POBRandom.Image = Global.iBMSC.My.Resources.Resources.x16Mirror + Me.POBRandom.Name = "POBRandom" + Me.POBRandom.Size = New System.Drawing.Size(221, 22) + Me.POBRandom.Text = "&Random" + ' + 'POBSRandom + ' + Me.POBSRandom.Image = Global.iBMSC.My.Resources.Resources.x16Mirror + Me.POBSRandom.Name = "POBSRandom" + Me.POBSRandom.Size = New System.Drawing.Size(221, 22) + Me.POBSRandom.Text = "S-R&andom" + ' + 'mnPreview + ' + Me.mnPreview.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.mnPlayB, Me.mnPlay, Me.mnStop}) + Me.mnPreview.Name = "mnPreview" + Me.mnPreview.Size = New System.Drawing.Size(60, 19) + Me.mnPreview.Text = "&Preview" + ' + 'mnPlayB + ' + Me.mnPlayB.Image = Global.iBMSC.My.Resources.Resources.x16PlayB + Me.mnPlayB.Name = "mnPlayB" + Me.mnPlayB.ShortcutKeys = System.Windows.Forms.Keys.F5 + Me.mnPlayB.Size = New System.Drawing.Size(201, 22) + Me.mnPlayB.Text = "Play from &beginning" + ' + 'mnPlay + ' + Me.mnPlay.Image = Global.iBMSC.My.Resources.Resources.x16Play + Me.mnPlay.Name = "mnPlay" + Me.mnPlay.ShortcutKeys = System.Windows.Forms.Keys.F6 + Me.mnPlay.Size = New System.Drawing.Size(201, 22) + Me.mnPlay.Text = "&Play from here" + ' + 'mnStop + ' + Me.mnStop.Image = Global.iBMSC.My.Resources.Resources.x16Stop + Me.mnStop.Name = "mnStop" + Me.mnStop.ShortcutKeys = System.Windows.Forms.Keys.F7 + Me.mnStop.Size = New System.Drawing.Size(201, 22) + Me.mnStop.Text = "&Stop" + ' + 'POConvert + ' + Me.POConvert.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image + Me.POConvert.DropDown = Me.cmnConversion + Me.POConvert.Image = Global.iBMSC.My.Resources.Resources.ConvertNotes + Me.POConvert.ImageTransparentColor = System.Drawing.Color.Magenta + Me.POConvert.Name = "POConvert" + Me.POConvert.Size = New System.Drawing.Size(29, 22) + Me.POConvert.Text = "Convert Notes" + ' + 'TBMain + ' + Me.TBMain.AccessibleRole = System.Windows.Forms.AccessibleRole.ToolBar + Me.TBMain.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch + Me.TBMain.Dock = System.Windows.Forms.DockStyle.None + Me.TBMain.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.TBNew, Me.TBOpen, Me.TBSave, Me.ToolStripSeparator1, Me.TBCut, Me.TBCopy, Me.TBPaste, Me.TBFind, Me.ToolStripSeparator24, Me.TBStatistics, Me.POConvert, Me.TBMyO2, Me.ToolStripSeparator4, Me.TBErrorCheck, Me.TBPreviewOnClick, Me.TBShowFileName, Me.ToolStripSeparator8, Me.TBNTInput, Me.TBWavIncrease, Me.ToolStripSeparator2, Me.TBUndo, Me.TBRedo, Me.ToolStripSeparator5, Me.TBTimeSelect, Me.TBSelect, Me.TBWrite, Me.ToolStripSeparator3, Me.TBPlayB, Me.TBPlay, Me.TBStop, Me.TBPOptions, Me.ToolStripSeparator7, Me.TBVOptions, Me.TBGOptions, Me.TBLanguage, Me.TBTheme, Me.POBStorm}) + Me.TBMain.Location = New System.Drawing.Point(3, 23) + Me.TBMain.Name = "TBMain" + Me.TBMain.Size = New System.Drawing.Size(751, 25) + Me.TBMain.TabIndex = 64 + Me.TBMain.Text = "Main Toolbar" + ' + 'TBNew + ' + Me.TBNew.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image + Me.TBNew.Image = Global.iBMSC.My.Resources.Resources.x16New + Me.TBNew.ImageTransparentColor = System.Drawing.Color.Transparent + Me.TBNew.Name = "TBNew" + Me.TBNew.Size = New System.Drawing.Size(23, 22) + Me.TBNew.Text = "New (Ctrl+N)" + ' + 'TBOpen + ' + Me.TBOpen.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image + Me.TBOpen.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.TBOpenR0, Me.TBOpenR1, Me.TBOpenR2, Me.TBOpenR3, Me.TBOpenR4, Me.ToolStripSeparator12, Me.TBImportSM, Me.TBImportIBMSC}) + Me.TBOpen.Image = Global.iBMSC.My.Resources.Resources.x16Open + Me.TBOpen.ImageTransparentColor = System.Drawing.Color.Magenta + Me.TBOpen.Name = "TBOpen" + Me.TBOpen.Size = New System.Drawing.Size(32, 22) + Me.TBOpen.Text = "Open (Ctrl+O)" + ' + 'TBOpenR0 + ' + Me.TBOpenR0.Enabled = False + Me.TBOpenR0.Name = "TBOpenR0" + Me.TBOpenR0.Size = New System.Drawing.Size(199, 22) + Me.TBOpenR0.Tag = "0" + Me.TBOpenR0.Text = "Recent #0" + ' + 'TBOpenR1 + ' + Me.TBOpenR1.Enabled = False + Me.TBOpenR1.Name = "TBOpenR1" + Me.TBOpenR1.Size = New System.Drawing.Size(199, 22) + Me.TBOpenR1.Tag = "1" + Me.TBOpenR1.Text = "Recent #1" + ' + 'TBOpenR2 + ' + Me.TBOpenR2.Enabled = False + Me.TBOpenR2.Name = "TBOpenR2" + Me.TBOpenR2.Size = New System.Drawing.Size(199, 22) + Me.TBOpenR2.Tag = "2" + Me.TBOpenR2.Text = "Recent #2" + ' + 'TBOpenR3 + ' + Me.TBOpenR3.Enabled = False + Me.TBOpenR3.Name = "TBOpenR3" + Me.TBOpenR3.Size = New System.Drawing.Size(199, 22) + Me.TBOpenR3.Tag = "3" + Me.TBOpenR3.Text = "Recent #3" + ' + 'TBOpenR4 + ' + Me.TBOpenR4.Enabled = False + Me.TBOpenR4.Name = "TBOpenR4" + Me.TBOpenR4.Size = New System.Drawing.Size(199, 22) + Me.TBOpenR4.Tag = "4" + Me.TBOpenR4.Text = "Recent #4" + ' + 'ToolStripSeparator12 + ' + Me.ToolStripSeparator12.Name = "ToolStripSeparator12" + Me.ToolStripSeparator12.Size = New System.Drawing.Size(196, 6) + ' + 'TBImportSM + ' + Me.TBImportSM.Image = Global.iBMSC.My.Resources.Resources.x16Import2 + Me.TBImportSM.Name = "TBImportSM" + Me.TBImportSM.Size = New System.Drawing.Size(199, 22) + Me.TBImportSM.Text = "Import from .SM file" + ' + 'TBImportIBMSC + ' + Me.TBImportIBMSC.Image = Global.iBMSC.My.Resources.Resources.x16Import2 + Me.TBImportIBMSC.Name = "TBImportIBMSC" + Me.TBImportIBMSC.Size = New System.Drawing.Size(199, 22) + Me.TBImportIBMSC.Text = "Import from .IBMSC file" + ' + 'TBSave + ' + Me.TBSave.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image + Me.TBSave.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.TBSaveAs, Me.TBExport}) + Me.TBSave.Image = Global.iBMSC.My.Resources.Resources.x16Save + Me.TBSave.ImageTransparentColor = System.Drawing.Color.Magenta + Me.TBSave.Name = "TBSave" + Me.TBSave.Size = New System.Drawing.Size(32, 22) + Me.TBSave.Text = "Save (Ctrl+S)" + ' + 'TBSaveAs + ' + Me.TBSaveAs.Image = Global.iBMSC.My.Resources.Resources.x16SaveAs + Me.TBSaveAs.Name = "TBSaveAs" + Me.TBSaveAs.Size = New System.Drawing.Size(168, 22) + Me.TBSaveAs.Text = "Save As..." + ' + 'TBExport + ' + Me.TBExport.Image = Global.iBMSC.My.Resources.Resources.x16Export + Me.TBExport.Name = "TBExport" + Me.TBExport.Size = New System.Drawing.Size(168, 22) + Me.TBExport.Text = "Export .IBMSC file" + ' + 'ToolStripSeparator1 + ' + Me.ToolStripSeparator1.Name = "ToolStripSeparator1" + Me.ToolStripSeparator1.Size = New System.Drawing.Size(6, 25) + ' + 'TBCut + ' + Me.TBCut.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image + Me.TBCut.Image = Global.iBMSC.My.Resources.Resources.x16Cut + Me.TBCut.ImageTransparentColor = System.Drawing.Color.Magenta + Me.TBCut.Name = "TBCut" + Me.TBCut.Size = New System.Drawing.Size(23, 22) + Me.TBCut.Text = "Cut (Ctrl+X)" + ' + 'TBCopy + ' + Me.TBCopy.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image + Me.TBCopy.Image = Global.iBMSC.My.Resources.Resources.x16Copy + Me.TBCopy.ImageTransparentColor = System.Drawing.Color.Magenta + Me.TBCopy.Name = "TBCopy" + Me.TBCopy.Size = New System.Drawing.Size(23, 22) + Me.TBCopy.Text = "Copy (Ctrl+C)" + ' + 'TBPaste + ' + Me.TBPaste.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image + Me.TBPaste.Image = Global.iBMSC.My.Resources.Resources.x16Paste + Me.TBPaste.ImageTransparentColor = System.Drawing.Color.Magenta + Me.TBPaste.Name = "TBPaste" + Me.TBPaste.Size = New System.Drawing.Size(23, 22) + Me.TBPaste.Text = "Paste (Ctrl+V)" + ' + 'TBFind + ' + Me.TBFind.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image + Me.TBFind.Image = Global.iBMSC.My.Resources.Resources.x16Find + Me.TBFind.ImageTransparentColor = System.Drawing.Color.Magenta + Me.TBFind.Name = "TBFind" + Me.TBFind.Size = New System.Drawing.Size(23, 22) + Me.TBFind.Text = "Find / Delete / Replace (Ctrl+F)" + ' + 'ToolStripSeparator24 + ' + Me.ToolStripSeparator24.Name = "ToolStripSeparator24" + Me.ToolStripSeparator24.Size = New System.Drawing.Size(6, 25) + ' + 'TBStatistics + ' + Me.TBStatistics.Font = New System.Drawing.Font("Segoe UI", 9.0!, System.Drawing.FontStyle.Bold) + Me.TBStatistics.Image = Global.iBMSC.My.Resources.Resources.x16Statistics + Me.TBStatistics.ImageTransparentColor = System.Drawing.Color.Magenta + Me.TBStatistics.Name = "TBStatistics" + Me.TBStatistics.Size = New System.Drawing.Size(34, 22) + Me.TBStatistics.Text = "0" + Me.TBStatistics.ToolTipText = "Statistics (Ctrl+T)" + ' + 'TBMyO2 + ' + Me.TBMyO2.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image + Me.TBMyO2.Image = Global.iBMSC.My.Resources.Resources.x16MyO2 + Me.TBMyO2.ImageTransparentColor = System.Drawing.Color.Magenta + Me.TBMyO2.Name = "TBMyO2" + Me.TBMyO2.Size = New System.Drawing.Size(23, 22) + Me.TBMyO2.Text = "MyO2 ToolBox (Chinese Only)" + ' + 'ToolStripSeparator4 + ' + Me.ToolStripSeparator4.Name = "ToolStripSeparator4" + Me.ToolStripSeparator4.Size = New System.Drawing.Size(6, 25) + ' + 'TBErrorCheck + ' + Me.TBErrorCheck.Checked = True + Me.TBErrorCheck.CheckOnClick = True + Me.TBErrorCheck.CheckState = System.Windows.Forms.CheckState.Checked + Me.TBErrorCheck.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image + Me.TBErrorCheck.Image = Global.iBMSC.My.Resources.Resources.x16CheckError + Me.TBErrorCheck.ImageTransparentColor = System.Drawing.Color.Magenta + Me.TBErrorCheck.Name = "TBErrorCheck" + Me.TBErrorCheck.Size = New System.Drawing.Size(23, 22) + Me.TBErrorCheck.Text = "Error Check" + ' + 'TBPreviewOnClick + ' + Me.TBPreviewOnClick.Checked = True + Me.TBPreviewOnClick.CheckOnClick = True + Me.TBPreviewOnClick.CheckState = System.Windows.Forms.CheckState.Checked + Me.TBPreviewOnClick.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image + Me.TBPreviewOnClick.Image = Global.iBMSC.My.Resources.Resources.x16PreviewOnClick + Me.TBPreviewOnClick.ImageTransparentColor = System.Drawing.Color.Magenta + Me.TBPreviewOnClick.Name = "TBPreviewOnClick" + Me.TBPreviewOnClick.Size = New System.Drawing.Size(23, 22) + Me.TBPreviewOnClick.Text = "Preview On Click" + ' + 'TBShowFileName + ' + Me.TBShowFileName.CheckOnClick = True + Me.TBShowFileName.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image + Me.TBShowFileName.Image = Global.iBMSC.My.Resources.Resources.x16ShowFileNameN + Me.TBShowFileName.ImageTransparentColor = System.Drawing.Color.Magenta + Me.TBShowFileName.Name = "TBShowFileName" + Me.TBShowFileName.Size = New System.Drawing.Size(23, 22) + Me.TBShowFileName.Text = "Show File Name on Notes" + ' + 'ToolStripSeparator8 + ' + Me.ToolStripSeparator8.Name = "ToolStripSeparator8" + Me.ToolStripSeparator8.Size = New System.Drawing.Size(6, 25) + ' + 'TBNTInput + ' + Me.TBNTInput.Checked = True + Me.TBNTInput.CheckOnClick = True + Me.TBNTInput.CheckState = System.Windows.Forms.CheckState.Checked + Me.TBNTInput.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image + Me.TBNTInput.Image = Global.iBMSC.My.Resources.Resources.x16NTInput + Me.TBNTInput.ImageTransparentColor = System.Drawing.Color.Magenta + Me.TBNTInput.Name = "TBNTInput" + Me.TBNTInput.Size = New System.Drawing.Size(23, 22) + Me.TBNTInput.Text = "LongNote Input Style - NoteTool/BMSE" + ' + 'TBWavIncrease + ' + Me.TBWavIncrease.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image + Me.TBWavIncrease.Image = CType(resources.GetObject("TBWavIncrease.Image"), System.Drawing.Image) + Me.TBWavIncrease.ImageTransparentColor = System.Drawing.Color.Magenta + Me.TBWavIncrease.Name = "TBWavIncrease" + Me.TBWavIncrease.Size = New System.Drawing.Size(23, 22) + Me.TBWavIncrease.Text = "Autoincrease WAV when writing" + ' + 'ToolStripSeparator2 + ' + Me.ToolStripSeparator2.Name = "ToolStripSeparator2" + Me.ToolStripSeparator2.Size = New System.Drawing.Size(6, 25) + ' + 'TBUndo + ' + Me.TBUndo.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image + Me.TBUndo.Enabled = False + Me.TBUndo.Image = Global.iBMSC.My.Resources.Resources.x16Undo + Me.TBUndo.ImageTransparentColor = System.Drawing.Color.Magenta + Me.TBUndo.Name = "TBUndo" + Me.TBUndo.Size = New System.Drawing.Size(23, 22) + Me.TBUndo.Text = "Undo (Ctrl+Z)" + ' + 'TBRedo + ' + Me.TBRedo.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image + Me.TBRedo.Enabled = False + Me.TBRedo.Image = Global.iBMSC.My.Resources.Resources.x16Redo + Me.TBRedo.ImageTransparentColor = System.Drawing.Color.Magenta + Me.TBRedo.Name = "TBRedo" + Me.TBRedo.Size = New System.Drawing.Size(23, 22) + Me.TBRedo.Text = "Redo (Ctrl+Y)" + ' + 'ToolStripSeparator5 + ' + Me.ToolStripSeparator5.Name = "ToolStripSeparator5" + Me.ToolStripSeparator5.Size = New System.Drawing.Size(6, 25) + ' + 'TBTimeSelect + ' + Me.TBTimeSelect.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image + Me.TBTimeSelect.Image = Global.iBMSC.My.Resources.Resources.x16TimeSelection + Me.TBTimeSelect.ImageTransparentColor = System.Drawing.Color.Magenta + Me.TBTimeSelect.Name = "TBTimeSelect" + Me.TBTimeSelect.Size = New System.Drawing.Size(23, 22) + Me.TBTimeSelect.Text = "Time Selection Tool (F1)" + ' + 'TBSelect + ' + Me.TBSelect.Checked = True + Me.TBSelect.CheckState = System.Windows.Forms.CheckState.Checked + Me.TBSelect.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image + Me.TBSelect.Image = Global.iBMSC.My.Resources.Resources.x16Select + Me.TBSelect.ImageTransparentColor = System.Drawing.Color.Magenta + Me.TBSelect.Name = "TBSelect" + Me.TBSelect.Size = New System.Drawing.Size(23, 22) + Me.TBSelect.Text = "Select Tool (F2)" + ' + 'TBWrite + ' + Me.TBWrite.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image + Me.TBWrite.Image = Global.iBMSC.My.Resources.Resources.x16Pen + Me.TBWrite.ImageTransparentColor = System.Drawing.Color.Magenta + Me.TBWrite.Name = "TBWrite" + Me.TBWrite.Size = New System.Drawing.Size(23, 22) + Me.TBWrite.Text = "Write Tool (F3)" + ' + 'ToolStripSeparator3 + ' + Me.ToolStripSeparator3.Name = "ToolStripSeparator3" + Me.ToolStripSeparator3.Size = New System.Drawing.Size(6, 25) + ' + 'TBPlayB + ' + Me.TBPlayB.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image + Me.TBPlayB.Image = Global.iBMSC.My.Resources.Resources.x16PlayB + Me.TBPlayB.ImageTransparentColor = System.Drawing.Color.Magenta + Me.TBPlayB.Name = "TBPlayB" + Me.TBPlayB.Size = New System.Drawing.Size(23, 22) + Me.TBPlayB.Text = "Play from beginning (F5)" + ' + 'TBPlay + ' + Me.TBPlay.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image + Me.TBPlay.Image = Global.iBMSC.My.Resources.Resources.x16Play + Me.TBPlay.ImageTransparentColor = System.Drawing.Color.Magenta + Me.TBPlay.Name = "TBPlay" + Me.TBPlay.Size = New System.Drawing.Size(23, 22) + Me.TBPlay.Text = "Play from here (F6)" + ' + 'TBStop + ' + Me.TBStop.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image + Me.TBStop.Image = Global.iBMSC.My.Resources.Resources.x16Stop + Me.TBStop.ImageTransparentColor = System.Drawing.Color.Magenta + Me.TBStop.Name = "TBStop" + Me.TBStop.Size = New System.Drawing.Size(23, 22) + Me.TBStop.Text = "Stop (F7)" + ' + 'TBPOptions + ' + Me.TBPOptions.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image + Me.TBPOptions.Image = Global.iBMSC.My.Resources.Resources.x16PlayerOptions + Me.TBPOptions.ImageTransparentColor = System.Drawing.Color.Magenta + Me.TBPOptions.Name = "TBPOptions" + Me.TBPOptions.Size = New System.Drawing.Size(23, 22) + Me.TBPOptions.Text = "Player Options (F9)" + ' + 'ToolStripSeparator7 + ' + Me.ToolStripSeparator7.Name = "ToolStripSeparator7" + Me.ToolStripSeparator7.Size = New System.Drawing.Size(6, 25) + ' + 'TBVOptions + ' + Me.TBVOptions.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image + Me.TBVOptions.Image = Global.iBMSC.My.Resources.Resources.x16VisualOptions + Me.TBVOptions.ImageTransparentColor = System.Drawing.Color.Magenta + Me.TBVOptions.Name = "TBVOptions" + Me.TBVOptions.Size = New System.Drawing.Size(23, 22) + Me.TBVOptions.Text = "Visual Options (F12)" + ' + 'TBGOptions + ' + Me.TBGOptions.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image + Me.TBGOptions.Image = Global.iBMSC.My.Resources.Resources.x16GeneralOptions + Me.TBGOptions.ImageTransparentColor = System.Drawing.Color.Magenta + Me.TBGOptions.Name = "TBGOptions" + Me.TBGOptions.Size = New System.Drawing.Size(23, 22) + Me.TBGOptions.Text = "General Options (F10)" + ' + 'POBStorm + ' + Me.POBStorm.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image + Me.POBStorm.Image = Global.iBMSC.My.Resources.Resources.x16Storm + Me.POBStorm.ImageTransparentColor = System.Drawing.Color.Magenta + Me.POBStorm.Name = "POBStorm" + Me.POBStorm.Size = New System.Drawing.Size(23, 22) + Me.POBStorm.Text = "Storm" + Me.POBStorm.Visible = False + ' + 'pStatus + ' + Me.pStatus.AutoSize = True + Me.pStatus.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink + Me.pStatus.Controls.Add(Me.FStatus2) + Me.pStatus.Controls.Add(Me.FStatus) + Me.pStatus.Dock = System.Windows.Forms.DockStyle.Bottom + Me.pStatus.Location = New System.Drawing.Point(0, 759) + Me.pStatus.Name = "pStatus" + Me.pStatus.Size = New System.Drawing.Size(952, 22) + Me.pStatus.TabIndex = 62 + ' + 'FStatus2 + ' + Me.FStatus2.AccessibleRole = System.Windows.Forms.AccessibleRole.StatusBar + Me.FStatus2.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.FSSS, Me.FSSL, Me.FSSH, Me.BVCReverse, Me.LblMultiply, Me.TVCM, Me.LblDivide, Me.TVCD, Me.BVCApply, Me.TVCBPM, Me.BVCCalculate, Me.BConvertStop}) + Me.FStatus2.Location = New System.Drawing.Point(0, 0) + Me.FStatus2.Name = "FStatus2" + Me.FStatus2.ShowItemToolTips = True + Me.FStatus2.Size = New System.Drawing.Size(876, 22) + Me.FStatus2.TabIndex = 0 + Me.FStatus2.Text = "Status" + Me.FStatus2.Visible = False + ' + 'FSSS + ' + Me.FSSS.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text + Me.FSSS.Font = New System.Drawing.Font("Segoe UI", 9.0!, System.Drawing.FontStyle.Bold) + Me.FSSS.ImageTransparentColor = System.Drawing.Color.Magenta + Me.FSSS.Name = "FSSS" + Me.FSSS.Size = New System.Drawing.Size(23, 20) + Me.FSSS.Text = "0" + Me.FSSS.ToolTipText = "Selection Start Position" + ' + 'FSSL + ' + Me.FSSL.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text + Me.FSSL.Font = New System.Drawing.Font("Segoe UI", 9.0!, System.Drawing.FontStyle.Bold) + Me.FSSL.ImageTransparentColor = System.Drawing.Color.Magenta + Me.FSSL.Name = "FSSL" + Me.FSSL.Size = New System.Drawing.Size(23, 20) + Me.FSSL.Text = "0" + Me.FSSL.ToolTipText = "Selection Length" + ' + 'FSSH + ' + Me.FSSH.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text + Me.FSSH.Font = New System.Drawing.Font("Segoe UI", 9.0!, System.Drawing.FontStyle.Bold) + Me.FSSH.ImageTransparentColor = System.Drawing.Color.Magenta + Me.FSSH.Name = "FSSH" + Me.FSSH.Size = New System.Drawing.Size(23, 20) + Me.FSSH.Text = "0" + Me.FSSH.ToolTipText = "Selection Split Position" + ' + 'BVCReverse + ' + Me.BVCReverse.BackColor = System.Drawing.Color.FromArgb(CType(CType(192, Byte), Integer), CType(CType(192, Byte), Integer), CType(CType(255, Byte), Integer)) + Me.BVCReverse.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text + Me.BVCReverse.ImageTransparentColor = System.Drawing.Color.Magenta + Me.BVCReverse.Name = "BVCReverse" + Me.BVCReverse.Size = New System.Drawing.Size(102, 20) + Me.BVCReverse.Text = "Reverse Selection" + ' + 'LblMultiply + ' + Me.LblMultiply.Name = "LblMultiply" + Me.LblMultiply.Size = New System.Drawing.Size(15, 17) + Me.LblMultiply.Text = "×" + ' + 'TVCM + ' + Me.TVCM.BackColor = System.Drawing.Color.FromArgb(CType(CType(255, Byte), Integer), CType(CType(192, Byte), Integer), CType(CType(192, Byte), Integer)) + Me.TVCM.BorderStyle = System.Windows.Forms.BorderStyle.None + Me.TVCM.Font = New System.Drawing.Font("Segoe UI", 9.0!, System.Drawing.FontStyle.Bold) + Me.TVCM.Name = "TVCM" + Me.TVCM.Size = New System.Drawing.Size(60, 22) + Me.TVCM.Text = "2" + Me.TVCM.TextBoxTextAlign = System.Windows.Forms.HorizontalAlignment.Center + ' + 'LblDivide + ' + Me.LblDivide.Name = "LblDivide" + Me.LblDivide.Size = New System.Drawing.Size(15, 17) + Me.LblDivide.Text = "÷" + ' + 'TVCD + ' + Me.TVCD.BackColor = System.Drawing.Color.FromArgb(CType(CType(255, Byte), Integer), CType(CType(192, Byte), Integer), CType(CType(192, Byte), Integer)) + Me.TVCD.BorderStyle = System.Windows.Forms.BorderStyle.None + Me.TVCD.Font = New System.Drawing.Font("Segoe UI", 9.0!, System.Drawing.FontStyle.Bold) + Me.TVCD.Name = "TVCD" + Me.TVCD.Size = New System.Drawing.Size(60, 22) + Me.TVCD.Text = "1" + Me.TVCD.TextBoxTextAlign = System.Windows.Forms.HorizontalAlignment.Center + ' + 'BVCApply + ' + Me.BVCApply.BackColor = System.Drawing.Color.FromArgb(CType(CType(192, Byte), Integer), CType(CType(192, Byte), Integer), CType(CType(255, Byte), Integer)) + Me.BVCApply.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text + Me.BVCApply.ImageTransparentColor = System.Drawing.Color.Magenta + Me.BVCApply.Name = "BVCApply" + Me.BVCApply.Size = New System.Drawing.Size(96, 20) + Me.BVCApply.Text = "Expand By Ratio" + Me.BVCApply.ToolTipText = "This will expand notes and selection by the ratio next to this button. Ignores ce" & + "nter bar." + ' + 'TVCBPM + ' + Me.TVCBPM.BackColor = System.Drawing.Color.FromArgb(CType(CType(255, Byte), Integer), CType(CType(192, Byte), Integer), CType(CType(192, Byte), Integer)) + Me.TVCBPM.BorderStyle = System.Windows.Forms.BorderStyle.None + Me.TVCBPM.Font = New System.Drawing.Font("Segoe UI", 9.0!, System.Drawing.FontStyle.Bold) + Me.TVCBPM.Name = "TVCBPM" + Me.TVCBPM.Size = New System.Drawing.Size(80, 22) + Me.TVCBPM.Text = "120" + Me.TVCBPM.TextBoxTextAlign = System.Windows.Forms.HorizontalAlignment.Center + ' + 'BVCCalculate + ' + Me.BVCCalculate.BackColor = System.Drawing.Color.FromArgb(CType(CType(192, Byte), Integer), CType(CType(192, Byte), Integer), CType(CType(255, Byte), Integer)) + Me.BVCCalculate.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text + Me.BVCCalculate.ImageTransparentColor = System.Drawing.Color.Magenta + Me.BVCCalculate.Name = "BVCCalculate" + Me.BVCCalculate.Size = New System.Drawing.Size(103, 20) + Me.BVCCalculate.Text = "Relocate By Value" + Me.BVCCalculate.ToolTipText = "This will move notes within the selection and preserve the selection, given the B" & + "PM value next to this button. Considers center bar." + ' + 'BConvertStop + ' + Me.BConvertStop.BackColor = System.Drawing.Color.FromArgb(CType(CType(192, Byte), Integer), CType(CType(192, Byte), Integer), CType(CType(255, Byte), Integer)) + Me.BConvertStop.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text + Me.BConvertStop.ImageTransparentColor = System.Drawing.Color.Magenta + Me.BConvertStop.Name = "BConvertStop" + Me.BConvertStop.Size = New System.Drawing.Size(115, 20) + Me.BConvertStop.Text = "Transform Into Stop" + Me.BConvertStop.ToolTipText = "This will move notes within the selection and preserve the selection, given the B" & + "PM value next to this button. Considers center bar." + ' + 'FStatus + ' + Me.FStatus.AccessibleRole = System.Windows.Forms.AccessibleRole.StatusBar + Me.FStatus.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.FSC, Me.FSW, Me.FSM, Me.FSP1, Me.FSP3, Me.FSP2, Me.FSP4, Me.TimeStatusLabel, Me.FST, Me.FSH, Me.FSE}) + Me.FStatus.Location = New System.Drawing.Point(0, 0) + Me.FStatus.Name = "FStatus" + Me.FStatus.ShowItemToolTips = True + Me.FStatus.Size = New System.Drawing.Size(952, 22) + Me.FStatus.SizingGrip = False + Me.FStatus.TabIndex = 62 + Me.FStatus.Text = "Status" + ' + 'FSC + ' + Me.FSC.AutoSize = False + Me.FSC.Name = "FSC" + Me.FSC.Size = New System.Drawing.Size(70, 17) + Me.FSC.Text = "BPM" + Me.FSC.ToolTipText = "Column Caption" + ' + 'FSW + ' + Me.FSW.AutoSize = False + Me.FSW.ForeColor = System.Drawing.Color.FromArgb(CType(CType(128, Byte), Integer), CType(CType(64, Byte), Integer), CType(CType(0, Byte), Integer)) + Me.FSW.Name = "FSW" + Me.FSW.Size = New System.Drawing.Size(40, 17) + Me.FSW.Text = "01" + Me.FSW.ToolTipText = "Note Index" + ' + 'FSM + ' + Me.FSM.AutoSize = False + Me.FSM.ForeColor = System.Drawing.Color.Teal + Me.FSM.Name = "FSM" + Me.FSM.Size = New System.Drawing.Size(40, 17) + Me.FSM.Text = "000" + Me.FSM.ToolTipText = "Measure Index" + ' + 'FSP1 + ' + Me.FSP1.AutoSize = False + Me.FSP1.Font = New System.Drawing.Font("Segoe UI", 9.0!, System.Drawing.FontStyle.Bold) + Me.FSP1.Name = "FSP1" + Me.FSP1.Size = New System.Drawing.Size(170, 17) + Me.FSP1.Text = "9.41176470588235 / 9999" + Me.FSP1.ToolTipText = "Grid Resolution" + ' + 'FSP3 + ' + Me.FSP3.AutoSize = False + Me.FSP3.Font = New System.Drawing.Font("Segoe UI", 9.0!, System.Drawing.FontStyle.Bold) + Me.FSP3.ForeColor = System.Drawing.Color.Maroon + Me.FSP3.Name = "FSP3" + Me.FSP3.Size = New System.Drawing.Size(85, 17) + Me.FSP3.Text = "9999 / 9999" + Me.FSP3.ToolTipText = "Reduced Resolution" + ' + 'FSP2 + ' + Me.FSP2.AutoSize = False + Me.FSP2.Font = New System.Drawing.Font("Segoe UI", 9.0!, System.Drawing.FontStyle.Bold) + Me.FSP2.ForeColor = System.Drawing.Color.Green + Me.FSP2.Name = "FSP2" + Me.FSP2.Size = New System.Drawing.Size(170, 17) + Me.FSP2.Text = "112.941176470588 / 9999" + Me.FSP2.ToolTipText = "Measure Resolution" + ' + 'FSP4 + ' + Me.FSP4.AutoSize = False + Me.FSP4.Name = "FSP4" + Me.FSP4.Size = New System.Drawing.Size(115, 17) + Me.FSP4.Text = "112.941176470588" + Me.FSP4.ToolTipText = "Absolute Position" + ' + 'TimeStatusLabel + ' + Me.TimeStatusLabel.Name = "TimeStatusLabel" + Me.TimeStatusLabel.Size = New System.Drawing.Size(55, 17) + Me.TimeStatusLabel.Text = "00:00:000" + ' + 'FST + ' + Me.FST.ForeColor = System.Drawing.Color.Olive + Me.FST.LinkColor = System.Drawing.Color.FromArgb(CType(CType(0, Byte), Integer), CType(CType(0, Byte), Integer), CType(CType(255, Byte), Integer)) + Me.FST.Name = "FST" + Me.FST.Size = New System.Drawing.Size(64, 17) + Me.FST.Text = "Length = 0" + ' + 'FSH + ' + Me.FSH.ForeColor = System.Drawing.Color.Blue + Me.FSH.Name = "FSH" + Me.FSH.Size = New System.Drawing.Size(46, 17) + Me.FSH.Text = "Hidden" + ' + 'FSE + ' + Me.FSE.ForeColor = System.Drawing.Color.Red + Me.FSE.Name = "FSE" + Me.FSE.Size = New System.Drawing.Size(32, 17) + Me.FSE.Text = "Error" + ' + 'TimerMiddle + ' + Me.TimerMiddle.Interval = 15 + ' + 'ToolStripContainer1 + ' + ' + 'ToolStripContainer1.ContentPanel + ' + Me.ToolStripContainer1.ContentPanel.Controls.Add(Me.PMain) + Me.ToolStripContainer1.ContentPanel.Controls.Add(Me.SpR) + Me.ToolStripContainer1.ContentPanel.Controls.Add(Me.SpL) + Me.ToolStripContainer1.ContentPanel.Controls.Add(Me.PMainR) + Me.ToolStripContainer1.ContentPanel.Controls.Add(Me.PMainL) + Me.ToolStripContainer1.ContentPanel.Size = New System.Drawing.Size(952, 711) + Me.ToolStripContainer1.Dock = System.Windows.Forms.DockStyle.Fill + Me.ToolStripContainer1.Location = New System.Drawing.Point(0, 0) + Me.ToolStripContainer1.Name = "ToolStripContainer1" + Me.ToolStripContainer1.Size = New System.Drawing.Size(952, 759) + Me.ToolStripContainer1.TabIndex = 65 + Me.ToolStripContainer1.Text = "ToolStripContainer1" + ' + 'ToolStripContainer1.TopToolStripPanel + ' + Me.ToolStripContainer1.TopToolStripPanel.Controls.Add(Me.mnMain) + Me.ToolStripContainer1.TopToolStripPanel.Controls.Add(Me.TBMain) + ' + 'PMain + ' + Me.PMain.BackColor = System.Drawing.Color.Black + Me.PMain.Controls.Add(Me.PMainIn) + Me.PMain.Controls.Add(Me.MainPanelScroll) + Me.PMain.Controls.Add(Me.HS) + Me.PMain.Dock = System.Windows.Forms.DockStyle.Fill + Me.PMain.Font = New System.Drawing.Font("Verdana", 9.0!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.PMain.ForeColor = System.Drawing.Color.White + Me.PMain.Location = New System.Drawing.Point(5, 0) + Me.PMain.Name = "PMain" + Me.PMain.Size = New System.Drawing.Size(942, 711) + Me.PMain.TabIndex = 58 + Me.PMain.Tag = "1" + ' + 'PMainIn + ' + Me.PMainIn.BackColor = System.Drawing.Color.Black + Me.PMainIn.Dock = System.Windows.Forms.DockStyle.Fill + Me.PMainIn.Font = New System.Drawing.Font("Verdana", 9.0!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.PMainIn.ForeColor = System.Drawing.Color.White + Me.PMainIn.Location = New System.Drawing.Point(0, 0) + Me.PMainIn.Name = "PMainIn" + Me.PMainIn.Size = New System.Drawing.Size(925, 694) + Me.PMainIn.TabIndex = 0 + Me.PMainIn.TabStop = True + Me.PMainIn.Tag = "1" + ' + 'MainPanelScroll + ' + Me.MainPanelScroll.AccessibleRole = System.Windows.Forms.AccessibleRole.ScrollBar + Me.MainPanelScroll.Dock = System.Windows.Forms.DockStyle.Right + Me.MainPanelScroll.LargeChange = 592 + Me.MainPanelScroll.Location = New System.Drawing.Point(925, 0) + Me.MainPanelScroll.Maximum = 591 + Me.MainPanelScroll.Minimum = -10000 + Me.MainPanelScroll.Name = "MainPanelScroll" + Me.MainPanelScroll.Size = New System.Drawing.Size(17, 694) + Me.MainPanelScroll.SmallChange = 12 + Me.MainPanelScroll.TabIndex = 2 + Me.MainPanelScroll.Tag = "1" + ' + 'HS + ' + Me.HS.AccessibleRole = System.Windows.Forms.AccessibleRole.ScrollBar + Me.HS.Dock = System.Windows.Forms.DockStyle.Bottom + Me.HS.LargeChange = 777 + Me.HS.Location = New System.Drawing.Point(0, 694) + Me.HS.Maximum = 1233 + Me.HS.Name = "HS" + Me.HS.Size = New System.Drawing.Size(942, 17) + Me.HS.TabIndex = 3 + Me.HS.Tag = "1" + ' + 'SpR + ' + Me.SpR.Dock = System.Windows.Forms.DockStyle.Right + Me.SpR.FlatAppearance.BorderSize = 0 + Me.SpR.FlatStyle = System.Windows.Forms.FlatStyle.Flat + Me.SpR.Location = New System.Drawing.Point(947, 0) + Me.SpR.Name = "SpR" + Me.SpR.Size = New System.Drawing.Size(5, 711) + Me.SpR.TabIndex = 59 + Me.SpR.TabStop = False + Me.SpR.UseVisualStyleBackColor = True + Me.SpR.Visible = False + ' + 'SpL + ' + Me.SpL.Dock = System.Windows.Forms.DockStyle.Left + Me.SpL.FlatAppearance.BorderSize = 0 + Me.SpL.FlatStyle = System.Windows.Forms.FlatStyle.Flat + Me.SpL.Location = New System.Drawing.Point(0, 0) + Me.SpL.Name = "SpL" + Me.SpL.Size = New System.Drawing.Size(5, 711) + Me.SpL.TabIndex = 60 + Me.SpL.TabStop = False + Me.SpL.UseVisualStyleBackColor = True + Me.SpL.Visible = False + ' + 'PMainR + ' + Me.PMainR.BackColor = System.Drawing.Color.Black + Me.PMainR.Controls.Add(Me.PMainInR) + Me.PMainR.Controls.Add(Me.RightPanelScroll) + Me.PMainR.Controls.Add(Me.HSR) + Me.PMainR.Dock = System.Windows.Forms.DockStyle.Right + Me.PMainR.Font = New System.Drawing.Font("Verdana", 9.0!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.PMainR.ForeColor = System.Drawing.Color.White + Me.PMainR.Location = New System.Drawing.Point(952, 0) + Me.PMainR.Name = "PMainR" + Me.PMainR.Size = New System.Drawing.Size(0, 711) + Me.PMainR.TabIndex = 56 + Me.PMainR.Tag = "2" + ' + 'PMainInR + ' + Me.PMainInR.BackColor = System.Drawing.Color.Black + Me.PMainInR.Dock = System.Windows.Forms.DockStyle.Fill + Me.PMainInR.Font = New System.Drawing.Font("Verdana", 9.0!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.PMainInR.ForeColor = System.Drawing.Color.White + Me.PMainInR.Location = New System.Drawing.Point(0, 0) + Me.PMainInR.Name = "PMainInR" + Me.PMainInR.Size = New System.Drawing.Size(0, 694) + Me.PMainInR.TabIndex = 0 + Me.PMainInR.TabStop = True + Me.PMainInR.Tag = "2" + ' + 'RightPanelScroll + ' + Me.RightPanelScroll.Dock = System.Windows.Forms.DockStyle.Right + Me.RightPanelScroll.LargeChange = 592 + Me.RightPanelScroll.Location = New System.Drawing.Point(-17, 0) + Me.RightPanelScroll.Maximum = 591 + Me.RightPanelScroll.Minimum = -10000 + Me.RightPanelScroll.Name = "RightPanelScroll" + Me.RightPanelScroll.Size = New System.Drawing.Size(17, 694) + Me.RightPanelScroll.SmallChange = 12 + Me.RightPanelScroll.TabIndex = 2 + Me.RightPanelScroll.Tag = "2" + ' + 'HSR + ' + Me.HSR.Dock = System.Windows.Forms.DockStyle.Bottom + Me.HSR.LargeChange = 777 + Me.HSR.Location = New System.Drawing.Point(0, 694) + Me.HSR.Maximum = 1233 + Me.HSR.Name = "HSR" + Me.HSR.Size = New System.Drawing.Size(0, 17) + Me.HSR.TabIndex = 3 + Me.HSR.Tag = "2" + ' + 'PMainL + ' + Me.PMainL.BackColor = System.Drawing.Color.Black + Me.PMainL.Controls.Add(Me.PMainInL) + Me.PMainL.Controls.Add(Me.LeftPanelScroll) + Me.PMainL.Controls.Add(Me.HSL) + Me.PMainL.Dock = System.Windows.Forms.DockStyle.Left + Me.PMainL.Font = New System.Drawing.Font("Verdana", 9.0!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.PMainL.ForeColor = System.Drawing.Color.White + Me.PMainL.Location = New System.Drawing.Point(0, 0) + Me.PMainL.Name = "PMainL" + Me.PMainL.Size = New System.Drawing.Size(0, 711) + Me.PMainL.TabIndex = 54 + Me.PMainL.Tag = "0" + ' + 'PMainInL + ' + Me.PMainInL.BackColor = System.Drawing.Color.Black + Me.PMainInL.Dock = System.Windows.Forms.DockStyle.Fill + Me.PMainInL.Font = New System.Drawing.Font("Verdana", 9.0!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.PMainInL.ForeColor = System.Drawing.Color.White + Me.PMainInL.Location = New System.Drawing.Point(0, 0) + Me.PMainInL.Name = "PMainInL" + Me.PMainInL.Size = New System.Drawing.Size(0, 694) + Me.PMainInL.TabIndex = 0 + Me.PMainInL.TabStop = True + Me.PMainInL.Tag = "0" + ' + 'LeftPanelScroll + ' + Me.LeftPanelScroll.Dock = System.Windows.Forms.DockStyle.Right + Me.LeftPanelScroll.LargeChange = 592 + Me.LeftPanelScroll.Location = New System.Drawing.Point(-17, 0) + Me.LeftPanelScroll.Maximum = 591 + Me.LeftPanelScroll.Minimum = -10000 + Me.LeftPanelScroll.Name = "LeftPanelScroll" + Me.LeftPanelScroll.Size = New System.Drawing.Size(17, 694) + Me.LeftPanelScroll.SmallChange = 12 + Me.LeftPanelScroll.TabIndex = 2 + Me.LeftPanelScroll.Tag = "0" + ' + 'HSL + ' + Me.HSL.Dock = System.Windows.Forms.DockStyle.Bottom + Me.HSL.LargeChange = 777 + Me.HSL.Location = New System.Drawing.Point(0, 694) + Me.HSL.Maximum = 1233 + Me.HSL.Name = "HSL" + Me.HSL.Size = New System.Drawing.Size(0, 17) + Me.HSL.TabIndex = 3 + Me.HSL.Tag = "0" + ' + 'POptionsResizer + ' + Me.POptionsResizer.AutoSize = True + Me.POptionsResizer.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink + Me.POptionsResizer.Dock = System.Windows.Forms.DockStyle.Right + Me.POptionsResizer.FlatAppearance.BorderSize = 0 + Me.POptionsResizer.FlatStyle = System.Windows.Forms.FlatStyle.Flat + Me.POptionsResizer.Location = New System.Drawing.Point(952, 0) + Me.POptionsResizer.Name = "POptionsResizer" + Me.POptionsResizer.Size = New System.Drawing.Size(6, 781) + Me.POptionsResizer.TabIndex = 67 + Me.POptionsResizer.TabStop = False + Me.POptionsResizer.UseVisualStyleBackColor = True + ' + 'MainWindow + ' + Me.AllowDrop = True + Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None + Me.ClientSize = New System.Drawing.Size(1158, 781) + Me.Controls.Add(Me.ToolStripContainer1) + Me.Controls.Add(Me.pStatus) + Me.Controls.Add(Me.POptionsResizer) + Me.Controls.Add(Me.POptionsScroll) + Me.DoubleBuffered = True + Me.Font = New System.Drawing.Font("Segoe UI", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.Icon = CType(resources.GetObject("$this.Icon"), System.Drawing.Icon) + Me.KeyPreview = True + Me.MainMenuStrip = Me.mnMain + Me.Name = "MainWindow" + Me.cmnLanguage.ResumeLayout(False) + Me.cmnTheme.ResumeLayout(False) + Me.POptionsScroll.ResumeLayout(False) + Me.POptionsScroll.PerformLayout() + Me.POptions.ResumeLayout(False) + Me.POptions.PerformLayout() + Me.POExpansion.ResumeLayout(False) + Me.POExpansionInner.ResumeLayout(False) + Me.POExpansionInner.PerformLayout() + Me.POBeat.ResumeLayout(False) + Me.POBeatInner.ResumeLayout(False) + Me.POBeatInner.PerformLayout() + Me.TableLayoutPanel7.ResumeLayout(False) + Me.TableLayoutPanel7.PerformLayout() + CType(Me.nBeatD, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.nBeatN, System.ComponentModel.ISupportInitialize).EndInit() + Me.POBeatPart2.ResumeLayout(False) + Me.POBeatPart2.PerformLayout() + Me.POWAV.ResumeLayout(False) + Me.POWAVInner.ResumeLayout(False) + Me.POWAVInner.PerformLayout() + Me.FlowLayoutPanel3.ResumeLayout(False) + Me.POWAVPart2.ResumeLayout(False) + Me.POWAVPart2.PerformLayout() + Me.POWaveForm.ResumeLayout(False) + Me.POWaveForm.PerformLayout() + Me.POWaveFormInner.ResumeLayout(False) + Me.POWaveFormInner.PerformLayout() + Me.POWaveFormPart2.ResumeLayout(False) + Me.POWaveFormPart2.PerformLayout() + CType(Me.TWSaturation, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.PictureBox2, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.TWTransparency, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.PictureBox3, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.TWPrecision, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.PictureBox4, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.TWWidth, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.PictureBox5, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.TWLeft, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.PictureBox6, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.TWSaturation2, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.TWLeft2, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.TWTransparency2, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.TWWidth2, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.TWPrecision2, System.ComponentModel.ISupportInitialize).EndInit() + Me.POWaveFormPart1.ResumeLayout(False) + Me.POWaveFormPart1.PerformLayout() + Me.TableLayoutPanel1.ResumeLayout(False) + Me.TableLayoutPanel1.PerformLayout() + Me.FlowLayoutPanel1.ResumeLayout(False) + Me.TableLayoutPanel6.ResumeLayout(False) + Me.TableLayoutPanel6.PerformLayout() + CType(Me.PictureBox1, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.TWPosition2, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.TWPosition, System.ComponentModel.ISupportInitialize).EndInit() + Me.POGrid.ResumeLayout(False) + Me.POGrid.PerformLayout() + Me.POGridInner.ResumeLayout(False) + Me.POGridInner.PerformLayout() + Me.POGridPart2.ResumeLayout(False) + Me.POGridPart2.PerformLayout() + Me.TableLayoutPanel5.ResumeLayout(False) + Me.TableLayoutPanel5.PerformLayout() + Me.FlowLayoutPanel2.ResumeLayout(False) + Me.TableLayoutPanel4.ResumeLayout(False) + Me.TableLayoutPanel4.PerformLayout() + CType(Me.CGB, System.ComponentModel.ISupportInitialize).EndInit() + Me.POGridPart1.ResumeLayout(False) + Me.POGridPart1.PerformLayout() + Me.TableLayoutPanel3.ResumeLayout(False) + Me.TableLayoutPanel3.PerformLayout() + CType(Me.PictureBox9, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.CGHeight2, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.CGHeight, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.PictureBox10, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.CGWidth2, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.CGWidth, System.ComponentModel.ISupportInitialize).EndInit() + Me.TableLayoutPanel2.ResumeLayout(False) + Me.TableLayoutPanel2.PerformLayout() + CType(Me.PictureBox7, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.CGDivide, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.CGSub, System.ComponentModel.ISupportInitialize).EndInit() + Me.POHeader.ResumeLayout(False) + Me.POHeader.PerformLayout() + Me.POHeaderInner.ResumeLayout(False) + Me.POHeaderInner.PerformLayout() + Me.POHeaderPart2.ResumeLayout(False) + Me.POHeaderPart2.PerformLayout() + Me.POHeaderPart1.ResumeLayout(False) + Me.POHeaderPart1.PerformLayout() + CType(Me.THBPM, System.ComponentModel.ISupportInitialize).EndInit() + Me.Menu1.ResumeLayout(False) + Me.mnMain.ResumeLayout(False) + Me.mnMain.PerformLayout() + Me.cmnConversion.ResumeLayout(False) + Me.TBMain.ResumeLayout(False) + Me.TBMain.PerformLayout() + Me.pStatus.ResumeLayout(False) + Me.pStatus.PerformLayout() + Me.FStatus2.ResumeLayout(False) + Me.FStatus2.PerformLayout() + Me.FStatus.ResumeLayout(False) + Me.FStatus.PerformLayout() + Me.ToolStripContainer1.ContentPanel.ResumeLayout(False) + Me.ToolStripContainer1.TopToolStripPanel.ResumeLayout(False) + Me.ToolStripContainer1.TopToolStripPanel.PerformLayout() + Me.ToolStripContainer1.ResumeLayout(False) + Me.ToolStripContainer1.PerformLayout() + Me.PMain.ResumeLayout(False) + Me.PMainR.ResumeLayout(False) + Me.PMainL.ResumeLayout(False) + Me.ResumeLayout(False) + Me.PerformLayout() + + End Sub + Friend WithEvents POptionsScroll As System.Windows.Forms.Panel + Friend WithEvents LWAV As System.Windows.Forms.ListBox + Friend WithEvents Timer1 As System.Windows.Forms.Timer + Friend WithEvents MInsert As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents MRemove As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents Menu1 As System.Windows.Forms.ContextMenuStrip + Friend WithEvents AutoSaveTimer As System.Windows.Forms.Timer + Friend WithEvents mnMain As System.Windows.Forms.MenuStrip + Friend WithEvents mnFile As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents mnNew As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents mnOpen As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents mnImportSM As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents mnImportIBMSC As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents ToolStripSeparator14 As System.Windows.Forms.ToolStripSeparator + Friend WithEvents mnSave As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents mnSaveAs As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents mnExport As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents ToolStripSeparator15 As System.Windows.Forms.ToolStripSeparator + Friend WithEvents mnOpenR0 As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents mnOpenR1 As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents mnOpenR2 As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents mnOpenR3 As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents mnOpenR4 As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents ToolStripSeparator16 As System.Windows.Forms.ToolStripSeparator + Friend WithEvents mnQuit As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents mnEdit As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents mnUndo As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents mnRedo As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents ToolStripSeparator17 As System.Windows.Forms.ToolStripSeparator + Friend WithEvents mnCut As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents mnCopy As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents mnPaste As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents ToolStripSeparator18 As System.Windows.Forms.ToolStripSeparator + Friend WithEvents mnFind As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents mnStatistics As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents mnDelete As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents mnSelectAll As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents mnMyO2 As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents ToolStripSeparator19 As System.Windows.Forms.ToolStripSeparator + Friend WithEvents mnOptions As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents mnPreview As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents mnPlayB As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents mnPlay As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents mnStop As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents mnTimeSelect As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents mnSelect As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents mnWrite As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents ToolStripSeparator23 As System.Windows.Forms.ToolStripSeparator + Friend WithEvents mnConversion As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents mnErrorCheck As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents mnPreviewOnClick As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents mnShowFileName As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents ToolStripSeparator20 As System.Windows.Forms.ToolStripSeparator + Friend WithEvents mnGOptions As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents mnVOptions As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents mnLanguage As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents mnTheme As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents cmnLanguage As System.Windows.Forms.ContextMenuStrip + Friend WithEvents TBLangDef As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents ToolStripSeparator9 As System.Windows.Forms.ToolStripSeparator + Friend WithEvents cmnTheme As System.Windows.Forms.ContextMenuStrip + Friend WithEvents TBThemeDef As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents TBThemeSave As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents TBThemeRefresh As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents ToolStripSeparator6 As System.Windows.Forms.ToolStripSeparator + Friend WithEvents cmnConversion As System.Windows.Forms.ContextMenuStrip + Friend WithEvents POBLong As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents POBShort As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents POBLongShort As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents ToolStripSeparator10 As System.Windows.Forms.ToolStripSeparator + Friend WithEvents POBHidden As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents POBVisible As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents POBHiddenVisible As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents ToolStripSeparator11 As System.Windows.Forms.ToolStripSeparator + Friend WithEvents POBMirror As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents POBFlip As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents POBModify As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents mnSys As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents mnSMenu As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents mnSTB As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents mnSOP As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents mnSStatus As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents mnSLSplitter As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents mnSRSplitter As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents mnNTInput As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents TBLangRefresh As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents CGSub As System.Windows.Forms.NumericUpDown + Friend WithEvents CGDivide As System.Windows.Forms.NumericUpDown + Friend WithEvents PictureBox7 As System.Windows.Forms.PictureBox + Friend WithEvents CGSnap As System.Windows.Forms.CheckBox + Friend WithEvents BWLock As System.Windows.Forms.CheckBox + Friend WithEvents TWSaturation As System.Windows.Forms.NumericUpDown + Friend WithEvents TWTransparency As System.Windows.Forms.NumericUpDown + Friend WithEvents TWPrecision As System.Windows.Forms.NumericUpDown + Friend WithEvents TWWidth As System.Windows.Forms.NumericUpDown + Friend WithEvents TWLeft As System.Windows.Forms.NumericUpDown + Friend WithEvents TWPosition As System.Windows.Forms.NumericUpDown + Friend WithEvents PictureBox5 As System.Windows.Forms.PictureBox + Friend WithEvents PictureBox6 As System.Windows.Forms.PictureBox + Friend WithEvents PictureBox4 As System.Windows.Forms.PictureBox + Friend WithEvents PictureBox3 As System.Windows.Forms.PictureBox + Friend WithEvents PictureBox2 As System.Windows.Forms.PictureBox + Friend WithEvents PictureBox1 As System.Windows.Forms.PictureBox + Friend WithEvents TWSaturation2 As System.Windows.Forms.TrackBar + Friend WithEvents TWTransparency2 As System.Windows.Forms.TrackBar + Friend WithEvents TWPrecision2 As System.Windows.Forms.TrackBar + Friend WithEvents TWWidth2 As System.Windows.Forms.TrackBar + Friend WithEvents TWLeft2 As System.Windows.Forms.TrackBar + Friend WithEvents TWPosition2 As System.Windows.Forms.TrackBar + Friend WithEvents TWFileName As System.Windows.Forms.TextBox + Friend WithEvents BWClear As System.Windows.Forms.Button + Friend WithEvents BWLoad As System.Windows.Forms.Button + Friend WithEvents TBMain As System.Windows.Forms.ToolStrip + Friend WithEvents TBNew As System.Windows.Forms.ToolStripButton + Friend WithEvents TBOpen As System.Windows.Forms.ToolStripSplitButton + Friend WithEvents TBOpenR0 As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents TBOpenR1 As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents TBOpenR2 As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents TBOpenR3 As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents TBOpenR4 As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents ToolStripSeparator12 As System.Windows.Forms.ToolStripSeparator + Friend WithEvents TBImportSM As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents TBImportIBMSC As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents TBSave As System.Windows.Forms.ToolStripSplitButton + Friend WithEvents TBSaveAs As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents TBExport As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents ToolStripSeparator1 As System.Windows.Forms.ToolStripSeparator + Friend WithEvents TBCut As System.Windows.Forms.ToolStripButton + Friend WithEvents TBCopy As System.Windows.Forms.ToolStripButton + Friend WithEvents TBPaste As System.Windows.Forms.ToolStripButton + Friend WithEvents TBFind As System.Windows.Forms.ToolStripButton + Friend WithEvents TBStatistics As System.Windows.Forms.ToolStripButton + Friend WithEvents pStatus As System.Windows.Forms.Panel + Friend WithEvents FStatus As System.Windows.Forms.StatusStrip + Friend WithEvents FSC As System.Windows.Forms.ToolStripStatusLabel + Friend WithEvents FSP1 As System.Windows.Forms.ToolStripStatusLabel + Friend WithEvents FSP2 As System.Windows.Forms.ToolStripStatusLabel + Friend WithEvents FSP3 As System.Windows.Forms.ToolStripStatusLabel + Friend WithEvents FSP4 As System.Windows.Forms.ToolStripStatusLabel + Friend WithEvents FST As System.Windows.Forms.ToolStripStatusLabel + Friend WithEvents FSH As System.Windows.Forms.ToolStripStatusLabel + Friend WithEvents FSE As System.Windows.Forms.ToolStripStatusLabel + Friend WithEvents FStatus2 As System.Windows.Forms.StatusStrip + Friend WithEvents BVCReverse As System.Windows.Forms.ToolStripButton + Friend WithEvents LblMultiply As System.Windows.Forms.ToolStripStatusLabel + Friend WithEvents TVCBPM As System.Windows.Forms.ToolStripTextBox + Friend WithEvents TVCM As System.Windows.Forms.ToolStripTextBox + Friend WithEvents LblDivide As System.Windows.Forms.ToolStripStatusLabel + Friend WithEvents TVCD As System.Windows.Forms.ToolStripTextBox + Friend WithEvents BVCApply As System.Windows.Forms.ToolStripButton + Friend WithEvents BVCCalculate As System.Windows.Forms.ToolStripButton + Friend WithEvents FSW As System.Windows.Forms.ToolStripStatusLabel + Friend WithEvents FSSS As System.Windows.Forms.ToolStripButton + Friend WithEvents FSSL As System.Windows.Forms.ToolStripButton + Friend WithEvents FSSH As System.Windows.Forms.ToolStripButton + Friend WithEvents TExpansion As System.Windows.Forms.TextBox + Friend WithEvents TimerMiddle As System.Windows.Forms.Timer + Friend WithEvents ToolStripSeparator21 As System.Windows.Forms.ToolStripSeparator + Friend WithEvents CGShow As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents CGShowS As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents CGShowBG As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents CGShowM As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents CGShowMB As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents CGShowV As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents CGShowC As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents ToolStripSeparator22 As System.Windows.Forms.ToolStripSeparator + Friend WithEvents CGBLP As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents CGSTOP As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents CGSCROLL As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents nBeatN As System.Windows.Forms.NumericUpDown + Friend WithEvents LBeat As System.Windows.Forms.ListBox + Friend WithEvents Label7 As System.Windows.Forms.Label + Friend WithEvents BBeatApply As System.Windows.Forms.Button + Friend WithEvents mnPOptions As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents ToolStripContainer1 As System.Windows.Forms.ToolStripContainer + Friend WithEvents PMain As System.Windows.Forms.Panel + Friend WithEvents PMainIn As System.Windows.Forms.Panel + Friend WithEvents MainPanelScroll As System.Windows.Forms.VScrollBar + Friend WithEvents HS As System.Windows.Forms.HScrollBar + Friend WithEvents PMainR As System.Windows.Forms.Panel + Friend WithEvents PMainInR As System.Windows.Forms.Panel + Friend WithEvents RightPanelScroll As System.Windows.Forms.VScrollBar + Friend WithEvents HSR As System.Windows.Forms.HScrollBar + Friend WithEvents PMainL As System.Windows.Forms.Panel + Friend WithEvents PMainInL As System.Windows.Forms.Panel + Friend WithEvents LeftPanelScroll As System.Windows.Forms.VScrollBar + Friend WithEvents HSL As System.Windows.Forms.HScrollBar + Friend WithEvents POConvert As System.Windows.Forms.ToolStripDropDownButton + Friend WithEvents TBLanguage As System.Windows.Forms.ToolStripDropDownButton + Friend WithEvents TBTheme As System.Windows.Forms.ToolStripDropDownButton + Friend WithEvents TBMyO2 As System.Windows.Forms.ToolStripButton + Friend WithEvents ToolStripSeparator4 As System.Windows.Forms.ToolStripSeparator + Friend WithEvents TBErrorCheck As System.Windows.Forms.ToolStripButton + Friend WithEvents TBPreviewOnClick As System.Windows.Forms.ToolStripButton + Friend WithEvents TBShowFileName As System.Windows.Forms.ToolStripButton + Friend WithEvents ToolStripSeparator2 As System.Windows.Forms.ToolStripSeparator + Friend WithEvents TBUndo As System.Windows.Forms.ToolStripButton + Friend WithEvents TBRedo As System.Windows.Forms.ToolStripButton + Friend WithEvents ToolStripSeparator5 As System.Windows.Forms.ToolStripSeparator + Friend WithEvents TBNTInput As System.Windows.Forms.ToolStripButton + Friend WithEvents TBTimeSelect As System.Windows.Forms.ToolStripButton + Friend WithEvents TBSelect As System.Windows.Forms.ToolStripButton + Friend WithEvents TBWrite As System.Windows.Forms.ToolStripButton + Friend WithEvents ToolStripSeparator3 As System.Windows.Forms.ToolStripSeparator + Friend WithEvents TBPlayB As System.Windows.Forms.ToolStripButton + Friend WithEvents TBPlay As System.Windows.Forms.ToolStripButton + Friend WithEvents TBStop As System.Windows.Forms.ToolStripButton + Friend WithEvents TBPOptions As System.Windows.Forms.ToolStripButton + Friend WithEvents ToolStripSeparator7 As System.Windows.Forms.ToolStripSeparator + Friend WithEvents TBVOptions As System.Windows.Forms.ToolStripButton + Friend WithEvents TBGOptions As System.Windows.Forms.ToolStripButton + Friend WithEvents POBStorm As System.Windows.Forms.ToolStripButton + Friend WithEvents POptions As System.Windows.Forms.Panel + Friend WithEvents POHeader As System.Windows.Forms.Panel + Friend WithEvents POHeaderSwitch As System.Windows.Forms.CheckBox + Friend WithEvents POGrid As System.Windows.Forms.Panel + Friend WithEvents POGridSwitch As System.Windows.Forms.CheckBox + Friend WithEvents POHeaderInner As System.Windows.Forms.Panel + Friend WithEvents POHeaderPart2 As System.Windows.Forms.TableLayoutPanel + Friend WithEvents THExRank As System.Windows.Forms.TextBox + Friend WithEvents Label25 As System.Windows.Forms.Label + Friend WithEvents CHLnObj As System.Windows.Forms.ComboBox + Friend WithEvents Label23 As System.Windows.Forms.Label + Friend WithEvents Label21 As System.Windows.Forms.Label + Friend WithEvents THComment As System.Windows.Forms.TextBox + Friend WithEvents Label24 As System.Windows.Forms.Label + Friend WithEvents Label15 As System.Windows.Forms.Label + Friend WithEvents THTotal As System.Windows.Forms.TextBox + Friend WithEvents Label20 As System.Windows.Forms.Label + Friend WithEvents BHStageFile As System.Windows.Forms.Button + Friend WithEvents BHBanner As System.Windows.Forms.Button + Friend WithEvents Label19 As System.Windows.Forms.Label + Friend WithEvents BHBackBMP As System.Windows.Forms.Button + Friend WithEvents Label17 As System.Windows.Forms.Label + Friend WithEvents Label16 As System.Windows.Forms.Label + Friend WithEvents Label12 As System.Windows.Forms.Label + Friend WithEvents THBackBMP As System.Windows.Forms.TextBox + Friend WithEvents Label11 As System.Windows.Forms.Label + Friend WithEvents THBanner As System.Windows.Forms.TextBox + Friend WithEvents THStageFile As System.Windows.Forms.TextBox + Friend WithEvents THSubTitle As System.Windows.Forms.TextBox + Friend WithEvents THSubArtist As System.Windows.Forms.TextBox + Friend WithEvents POHeaderExpander As System.Windows.Forms.CheckBox + Friend WithEvents POHeaderPart1 As System.Windows.Forms.TableLayoutPanel + Friend WithEvents Label3 As System.Windows.Forms.Label + Friend WithEvents THPlayLevel As System.Windows.Forms.TextBox + Friend WithEvents CHRank As System.Windows.Forms.ComboBox + Friend WithEvents Label10 As System.Windows.Forms.Label + Friend WithEvents CHPlayer As System.Windows.Forms.ComboBox + Friend WithEvents CHDifficulty As System.Windows.Forms.ComboBox + Friend WithEvents Label4 As System.Windows.Forms.Label + Friend WithEvents THGenre As System.Windows.Forms.TextBox + Friend WithEvents THBPM As System.Windows.Forms.NumericUpDown + Friend WithEvents Label2 As System.Windows.Forms.Label + Friend WithEvents THArtist As System.Windows.Forms.TextBox + Friend WithEvents THTitle As System.Windows.Forms.TextBox + Friend WithEvents Label9 As System.Windows.Forms.Label + Friend WithEvents Label8 As System.Windows.Forms.Label + Friend WithEvents Label6 As System.Windows.Forms.Label + Friend WithEvents POGridPart1 As System.Windows.Forms.TableLayoutPanel + Friend WithEvents TableLayoutPanel2 As System.Windows.Forms.TableLayoutPanel + Friend WithEvents POGridInner As System.Windows.Forms.Panel + Friend WithEvents POGridPart2 As System.Windows.Forms.TableLayoutPanel + Friend WithEvents TableLayoutPanel5 As System.Windows.Forms.TableLayoutPanel + Friend WithEvents cVSLockR As System.Windows.Forms.CheckBox + Friend WithEvents Label5 As System.Windows.Forms.Label + Friend WithEvents cVSLock As System.Windows.Forms.CheckBox + Friend WithEvents cVSLockL As System.Windows.Forms.CheckBox + Friend WithEvents CGDisableVertical As System.Windows.Forms.CheckBox + Friend WithEvents TableLayoutPanel4 As System.Windows.Forms.TableLayoutPanel + Friend WithEvents Label1 As System.Windows.Forms.Label + Friend WithEvents CGB As System.Windows.Forms.NumericUpDown + Friend WithEvents POGridExpander As System.Windows.Forms.CheckBox + Friend WithEvents TableLayoutPanel3 As System.Windows.Forms.TableLayoutPanel + Friend WithEvents PictureBox9 As System.Windows.Forms.PictureBox + Friend WithEvents CGHeight2 As System.Windows.Forms.TrackBar + Friend WithEvents CGHeight As System.Windows.Forms.NumericUpDown + Friend WithEvents PictureBox10 As System.Windows.Forms.PictureBox + Friend WithEvents CGWidth2 As System.Windows.Forms.TrackBar + Friend WithEvents CGWidth As System.Windows.Forms.NumericUpDown + Friend WithEvents POWaveForm As System.Windows.Forms.Panel + Friend WithEvents POWaveFormSwitch As System.Windows.Forms.CheckBox + Friend WithEvents POWaveFormInner As System.Windows.Forms.Panel + Friend WithEvents POWaveFormPart2 As System.Windows.Forms.TableLayoutPanel + Friend WithEvents POWaveFormExpander As System.Windows.Forms.CheckBox + Friend WithEvents POWaveFormPart1 As System.Windows.Forms.TableLayoutPanel + Friend WithEvents TableLayoutPanel1 As System.Windows.Forms.TableLayoutPanel + Friend WithEvents TableLayoutPanel6 As System.Windows.Forms.TableLayoutPanel + Friend WithEvents FlowLayoutPanel1 As System.Windows.Forms.FlowLayoutPanel + Friend WithEvents FlowLayoutPanel2 As System.Windows.Forms.FlowLayoutPanel + Friend WithEvents POWAV As System.Windows.Forms.Panel + Friend WithEvents POWAVInner As System.Windows.Forms.TableLayoutPanel + Friend WithEvents POWAVSwitch As System.Windows.Forms.CheckBox + Friend WithEvents POBeat As System.Windows.Forms.Panel + Friend WithEvents POBeatInner As System.Windows.Forms.TableLayoutPanel + Friend WithEvents POBeatSwitch As System.Windows.Forms.CheckBox + Friend WithEvents FlowLayoutPanel3 As System.Windows.Forms.FlowLayoutPanel + Friend WithEvents BWAVUp As System.Windows.Forms.Button + Friend WithEvents BWAVDown As System.Windows.Forms.Button + Friend WithEvents BWAVBrowse As System.Windows.Forms.Button + Friend WithEvents BWAVRemove As System.Windows.Forms.Button + Friend WithEvents POExpansion As System.Windows.Forms.Panel + Friend WithEvents POExpansionInner As System.Windows.Forms.Panel + Friend WithEvents POExpansionSwitch As System.Windows.Forms.CheckBox + Friend WithEvents POWAVResizer As System.Windows.Forms.Button + Friend WithEvents TableLayoutPanel7 As System.Windows.Forms.TableLayoutPanel + Friend WithEvents POExpansionResizer As System.Windows.Forms.Button + Friend WithEvents POBeatResizer As System.Windows.Forms.Button + Friend WithEvents POptionsResizer As System.Windows.Forms.Button + Friend WithEvents SpR As System.Windows.Forms.Button + Friend WithEvents SpL As System.Windows.Forms.Button + Friend WithEvents TBThemeLoadComptability As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents POWAVExpander As System.Windows.Forms.CheckBox + Friend WithEvents POWAVPart2 As System.Windows.Forms.TableLayoutPanel + Friend WithEvents CWAVMultiSelect As System.Windows.Forms.CheckBox + Friend WithEvents CWAVChangeLabel As System.Windows.Forms.CheckBox + Friend WithEvents nBeatD As System.Windows.Forms.NumericUpDown + Friend WithEvents BBeatApplyV As System.Windows.Forms.Button + Friend WithEvents tBeatValue As System.Windows.Forms.TextBox + Friend WithEvents POBeatExpander As System.Windows.Forms.CheckBox + Friend WithEvents POBeatPart2 As System.Windows.Forms.TableLayoutPanel + Friend WithEvents CBeatScale As System.Windows.Forms.RadioButton + Friend WithEvents CBeatCut As System.Windows.Forms.RadioButton + Friend WithEvents CBeatMeasure As System.Windows.Forms.RadioButton + Friend WithEvents CBeatPreserve As System.Windows.Forms.RadioButton + Friend WithEvents Label13 As System.Windows.Forms.Label + Friend WithEvents ToolTipUniversal As System.Windows.Forms.ToolTip + Friend WithEvents CGBPM As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents BGSlash As System.Windows.Forms.Button + Friend WithEvents FSM As System.Windows.Forms.ToolStripStatusLabel + Friend WithEvents mnGotoMeasure As ToolStripMenuItem + Friend WithEvents ToolStripSeparator24 As ToolStripSeparator + Friend WithEvents ToolStripSeparator8 As ToolStripSeparator + Friend WithEvents TBWavIncrease As ToolStripButton + Friend WithEvents TimeStatusLabel As ToolStripStatusLabel + Friend WithEvents BConvertStop As ToolStripButton + Friend WithEvents POBRandom As ToolStripMenuItem + Friend WithEvents POBSRandom As ToolStripMenuItem +End Class diff --git a/iBMSC/MainWindow.vb b/iBMSC/MainWindow.vb index fcc640d81..1c9f525f0 100644 --- a/iBMSC/MainWindow.vb +++ b/iBMSC/MainWindow.vb @@ -1,2306 +1,4600 @@ -Imports System.Linq -Imports iBMSC.Editor - - -Public Class MainWindow - - - 'Public Structure MARGINS - ' Public Left As Integer - ' Public Right As Integer - ' Public Top As Integer - ' Public Bottom As Integer - 'End Structure - - ' _ - 'Public Shared Function DwmIsCompositionEnabled(ByRef en As Integer) As Integer - 'End Function - ' _ - 'Public Shared Function DwmExtendFrameIntoClientArea(ByVal hwnd As IntPtr, ByRef margin As MARGINS) As Integer - 'End Function - Public Declare Function SendMessage Lib "user32.dll" Alias "SendMessageA" (ByVal hwnd As IntPtr, ByVal wMsg As Integer, ByVal wParam As Integer, ByVal lParam As Integer) As Integer - Public Declare Function ReleaseCapture Lib "user32.dll" Alias "ReleaseCapture" () As Integer - - 'Private Declare Auto Function GetWindowLong Lib "user32" (ByVal hWnd As IntPtr, ByVal nIndex As Integer) As Integer - 'Private Declare Auto Function SetWindowLong Lib "user32" (ByVal hWnd As IntPtr, ByVal nIndex As Integer, ByVal dwNewLong As Integer) As Integer - 'Private Declare Function SetWindowPos Lib "user32.dll" (ByVal hWnd As IntPtr, ByVal hWndInsertAfter As IntPtr, ByVal x As Integer, ByVal y As Integer, ByVal cx As Integer, ByVal cy As Integer, ByVal wFlags As Integer) As Integer - ' _ - 'Private Shared Function SetWindowText(ByVal hwnd As IntPtr, ByVal lpString As String) As Boolean - 'End Function - - 'Private Const GWL_STYLE As Integer = -16 - 'Private Const WS_CAPTION As Integer = &HC00000 - 'Private Const SWP_NOSIZE As Integer = &H1 - 'Private Const SWP_NOMOVE As Integer = &H2 - 'Private Const SWP_NOZORDER As Integer = &H4 - 'Private Const SWP_NOACTIVATE As Integer = &H10 - 'Private Const SWP_FRAMECHANGED As Integer = &H20 - 'Private Const SWP_REFRESH As Integer = SWP_NOZORDER Or SWP_NOSIZE Or SWP_NOMOVE Or SWP_NOACTIVATE Or SWP_FRAMECHANGED - - - Dim MeasureLength(999) As Double - Dim MeasureBottom(999) As Double - - Public Function MeasureUpper(idx As Integer) As Double - Return MeasureBottom(idx) + MeasureLength(idx) - End Function - - - Dim Notes() As Note = {New Note(niBPM, -1, 1200000, 0, False)} - Dim mColumn(999) As Integer '0 = no column, 1 = 1 column, etc. - Dim GreatestVPosition As Double '+ 2000 = -VS.Minimum - - Dim VSValue As Integer = 0 'Store value before ValueChange event - Dim HSValue As Integer = 0 'Store value before ValueChange event - - 'Dim SortingMethod As Integer = 1 - Dim MiddleButtonMoveMethod As Integer = 0 - Dim TextEncoding As System.Text.Encoding = System.Text.Encoding.UTF8 - Dim DispLang As String = "" 'Display Language - Dim Recent() As String = {"", "", "", "", ""} - Dim NTInput As Boolean = True - Dim ShowFileName As Boolean = False - - Dim BeepWhileSaved As Boolean = True - Dim BPMx1296 As Boolean = False - Dim STOPx1296 As Boolean = False - - Dim IsInitializing As Boolean = True - Dim FirstMouseEnter As Boolean = True - - Dim WAVMultiSelect As Boolean = True - Dim WAVChangeLabel As Boolean = True - Dim BeatChangeMode As Integer = 0 - - 'Dim FloatTolerance As Double = 0.0001R - Dim BMSGridLimit As Double = 1.0R - - Dim LnObj As Integer = 0 '0 for none, 1-1295 for 01-ZZ - - 'IO - Dim FileName As String = "Untitled.bms" - 'Dim TitlePath As New Drawing2D.GraphicsPath - Dim InitPath As String = "" - Dim IsSaved As Boolean = True - - 'Variables for Drag/Drop - Dim DDFileName() As String = {} - Dim SupportedFileExtension() As String = {".bms", ".bme", ".bml", ".pms", ".txt", ".sm", ".ibmsc"} - Dim SupportedAudioExtension() As String = {".wav", ".mp3", ".ogg"} - - 'Variables for theme - 'Dim SaveTheme As Boolean = True - - 'Variables for undo/redo - Dim sUndo(99) As UndoRedo.LinkedURCmd - Dim sRedo(99) As UndoRedo.LinkedURCmd - Dim sI As Integer = 0 - - 'Variables for select tool - Dim DisableVerticalMove As Boolean = False - Dim KMouseOver As Integer = -1 'Mouse is on which note (for drawing green outline) - Dim LastMouseDownLocation As PointF = New Point(-1, -1) 'Mouse is clicked on which point (location for display) (for selection box) - Dim pMouseMove As PointF = New Point(-1, -1) 'Mouse is moved to which point (location for display) (for selection box) - 'Dim KMouseDown As Integer = -1 'Mouse is clicked on which note (for moving) - Dim deltaVPosition As Double = 0 'difference between mouse and VPosition of K - Dim bAdjustLength As Boolean 'If adjusting note length instead of moving it - Dim bAdjustUpper As Boolean 'true = Adjusting upper end, false = adjusting lower end - Dim bAdjustSingle As Boolean 'true if there is only one note to be adjusted - Dim tempY As Integer - Dim tempV As Integer - Dim tempX As Integer - Dim tempH As Integer - Dim MiddleButtonLocation As New Point(0, 0) - Dim MiddleButtonClicked As Boolean = False - Dim MouseMoveStatus As Point = New Point(0, 0) 'mouse is moved to which point (For Status Panel) - 'Dim uCol As Integer 'temp variables for undo, original enabled columnindex - 'Dim uVPos As Double 'temp variables for undo, original vposition - 'Dim uPairWithI As Double 'temp variables for undo, original note length - Dim uAdded As Boolean 'temp variables for undo, if undo command is added - 'Dim uNote As Note 'temp variables for undo, original note - Dim SelectedNotes(-1) As Note 'temp notes for undo - Dim ctrlPressed As Boolean = False 'Indicates if the CTRL key is pressed while mousedown - Dim DuplicatedSelectedNotes As Boolean = False 'Indicates if duplicate notes of select/unselect note - - 'Variables for write tool - Dim ShouldDrawTempNote As Boolean = False - Dim SelectedColumn As Integer = -1 - Dim TempVPosition As Double = -1.0# - Dim TempLength As Double = 0.0# - - 'Variables for post effects tool - Dim vSelStart As Double = 192.0# - Dim vSelLength As Double = 0.0# - Dim vSelHalf As Double = 0.0# - Dim vSelMouseOverLine As Integer = 0 '0 = nothing, 1 = start, 2 = half, 3 = end - Dim vSelAdjust As Boolean = False - Dim vSelK() As Note = {} - Dim vSelPStart As Double = 192.0# - Dim vSelPLength As Double = 0.0# - Dim vSelPHalf As Double = 0.0# - - 'Variables for Full-Screen Mode - Dim isFullScreen As Boolean = False - Dim previousWindowState As FormWindowState = FormWindowState.Normal - Dim previousWindowPosition As New Rectangle(0, 0, 0, 0) - - 'Variables misc - Dim menuVPosition As Double = 0.0# - Dim tempResize As Integer = 0 - - '----AutoSave Options - Dim PreviousAutoSavedFileName As String = "" - Dim AutoSaveInterval As Integer = 120000 - - '----ErrorCheck Options - Dim ErrorCheck As Boolean = True - - '----Header Options - Dim hWAV(1295) As String - Dim hBPM(1295) As Long 'x10000 - Dim hSTOP(1295) As Long - Dim hSCROLL(1295) As Long - - '----Grid Options - Dim gSnap As Boolean = True - Dim gShowGrid As Boolean = True 'Grid - Dim gShowSubGrid As Boolean = True 'Sub - Dim gShowBG As Boolean = True 'BG Color - Dim gShowMeasureNumber As Boolean = True 'Measure Label - Dim gShowVerticalLine As Boolean = True 'Vertical - Dim gShowMeasureBar As Boolean = True 'Measure Barline - Dim gShowC As Boolean = True 'Column Caption - Dim gDivide As Integer = 16 - Dim gSub As Integer = 4 - Dim gSlash As Integer = 192 - Dim gxHeight As Single = 1.0! - Dim gxWidth As Single = 1.0! - Dim gWheel As Integer = 96 - Dim gPgUpDn As Integer = 384 - - Dim gDisplayBGAColumn As Boolean = True - Dim gSCROLL As Boolean = True - Dim gSTOP As Boolean = True - Dim gBPM As Boolean = True - 'Dim gA8 As Boolean = False - Dim iPlayer As Integer = 0 - Dim gColumns As Integer = 46 - - '----Visual Options - Dim vo As New visualSettings() - - Public Sub setVO(ByVal xvo As visualSettings) - vo = xvo - End Sub - - '----Preview Options - Structure PlayerArguments - Public Path As String - Public aBegin As String - Public aHere As String - Public aStop As String - Public Sub New(ByVal xPath As String, ByVal xBegin As String, ByVal xHere As String, ByVal xStop As String) - Path = xPath - aBegin = xBegin - aHere = xHere - aStop = xStop - End Sub - End Structure - - Public pArgs() As PlayerArguments = {New PlayerArguments("\uBMplay.exe", - "-P -N0 """"", - "-P -N """"", - "-S"), - New PlayerArguments("\o2play.exe", - "-P -N0 """"", - "-P -N """"", - "-S")} - Public CurrentPlayer As Integer = 0 - Dim PreviewOnClick As Boolean = True - Dim PreviewErrorCheck As Boolean = False - Dim ClickStopPreview As Boolean = True - Dim pTempFileNames() As String = {} - - '----Split Panel Options - Dim PanelWidth() As Single = {0, 100, 0} - Dim PanelHScroll() As Integer = {0, 0, 0} - Dim PanelVScroll() As Integer = {0, 0, 0} - Dim spLock() As Boolean = {False, False, False} - Dim spDiff() As Integer = {0, 0, 0} - Dim PanelFocus As Integer = 1 '0 = Left, 1 = Middle, 2 = Right - Dim spMouseOver As Integer = 1 - - Dim AutoFocusMouseEnter As Boolean = False - Dim FirstClickDisabled As Boolean = True - Dim tempFirstMouseDown As Boolean = False - - Dim spMain() As Panel = {} - - '----Find Delete Replace Options - Dim fdriMesL As Integer - Dim fdriMesU As Integer - Dim fdriLblL As Integer - Dim fdriLblU As Integer - Dim fdriValL As Integer - Dim fdriValU As Integer - Dim fdriCol() As Integer - - - Public Sub New() - InitializeComponent() - Audio.Initialize() - End Sub - - ''' - ''' - ''' - ''' Original horizontal position. - ''' HS.Value - - - Private Function HorizontalPositiontoDisplay(ByVal xHPosition As Integer, ByVal xHSVal As Long) As Integer - Return CInt(xHPosition * gxWidth - xHSVal * gxWidth) - End Function - - ''' - ''' - ''' - ''' Original vertical position. - ''' VS.Value - ''' Height of the panel. (DisplayRectangle, but not ClipRectangle) - - - Private Function NoteRowToPanelHeight(ByVal xVPosition As Double, ByVal xVSVal As Long, ByVal xTHeight As Integer) As Integer - Return xTHeight - CInt((xVPosition + xVSVal) * gxHeight) - 1 - End Function - - Public Function MeasureAtDisplacement(ByVal xVPos As Double) As Integer - 'Return Math.Floor((xVPos + FloatTolerance) / 192) - 'Return Math.Floor(xVPos / 192) - Dim xI1 As Integer - For xI1 = 1 To 999 - If xVPos < MeasureBottom(xI1) Then Exit For - Next - Return xI1 - 1 - End Function - - Private Function GetMaxVPosition() As Double - Return MeasureUpper(999) - End Function - - Private Function SnapToGrid(ByVal xVPos As Double) As Double - Dim xOffset As Double = MeasureBottom(MeasureAtDisplacement(xVPos)) - Dim xRatio As Double = 192.0R / gDivide - Return Math.Floor((xVPos - xOffset) / xRatio) * xRatio + xOffset - End Function - - Private Sub CalculateGreatestVPosition() - 'If K Is Nothing Then Exit Sub - Dim xI1 As Integer - GreatestVPosition = 0 - - If NTInput Then - For xI1 = UBound(Notes) To 0 Step -1 - If Notes(xI1).VPosition + Notes(xI1).Length > GreatestVPosition Then GreatestVPosition = Notes(xI1).VPosition + Notes(xI1).Length - Next - Else - For xI1 = UBound(Notes) To 0 Step -1 - If Notes(xI1).VPosition > GreatestVPosition Then GreatestVPosition = Notes(xI1).VPosition - Next - End If - - Dim xI2 As Integer = -CInt(IIf(GreatestVPosition + 2000 > GetMaxVPosition(), GetMaxVPosition, GreatestVPosition + 2000)) - MainPanelScroll.Minimum = xI2 - LeftPanelScroll.Minimum = xI2 - RightPanelScroll.Minimum = xI2 - End Sub - - - Private Sub SortByVPositionInsertion() 'Insertion Sort - If UBound(Notes) <= 0 Then Exit Sub - Dim xNote As Note - Dim xI1 As Integer - Dim xI2 As Integer - For xI1 = 2 To UBound(Notes) - xNote = Notes(xI1) - For xI2 = xI1 - 1 To 1 Step -1 - If Notes(xI2).VPosition > xNote.VPosition Then - Notes(xI2 + 1) = Notes(xI2) - ' If KMouseDown = xI2 Then KMouseDown += 1 - If xI2 = 1 Then - Notes(xI2) = xNote - ' If KMouseDown = xI1 Then KMouseDown = xI2 - Exit For - End If - Else - Notes(xI2 + 1) = xNote - ' If KMouseDown = xI1 Then KMouseDown = xI2 + 1 - Exit For - End If - Next - Next - - End Sub - - Private Sub SortByVPositionQuick(ByVal xMin As Integer, ByVal xMax As Integer) 'Quick Sort - Dim xNote As Note - Dim iHi As Integer - Dim iLo As Integer - Dim xI1 As Integer - - ' If min >= max, the list contains 0 or 1 items so it is sorted. - If xMin >= xMax Then Exit Sub - - ' Pick the dividing value. - xI1 = CInt((xMax - xMin) / 2) + xMin - xNote = Notes(xI1) - - ' Swap it to the front. - Notes(xI1) = Notes(xMin) - - iLo = xMin - iHi = xMax - Do - ' Look down from hi for a value < med_value. - Do While Notes(iHi).VPosition >= xNote.VPosition - iHi = iHi - 1 - If iHi <= iLo Then Exit Do - Loop - If iHi <= iLo Then - Notes(iLo) = xNote - Exit Do - End If - - ' Swap the lo and hi values. - Notes(iLo) = Notes(iHi) - - ' Look up from lo for a value >= med_value. - iLo = iLo + 1 - Do While Notes(iLo).VPosition < xNote.VPosition - iLo = iLo + 1 - If iLo >= iHi Then Exit Do - Loop - If iLo >= iHi Then - iLo = iHi - Notes(iHi) = xNote - Exit Do - End If - - ' Swap the lo and hi values. - Notes(iHi) = Notes(iLo) - Loop - - ' Sort the two sublists. - SortByVPositionQuick(xMin, iLo - 1) - SortByVPositionQuick(iLo + 1, xMax) - End Sub - - Private Sub SortByVPositionQuick3(ByVal xMin As Integer, ByVal xMax As Integer) - Dim xxMin As Integer - Dim xxMax As Integer - Dim xxMid As Integer - Dim xNote As Note - Dim xNoteMid As Note - Dim xI1 As Integer - Dim xI2 As Integer - Dim xI3 As Integer - - 'If xMax = 0 Then - ' xMin = LBound(K1) - ' xMax = UBound(K1) - 'End If - xxMin = xMin - xxMax = xMax - xxMid = xMax - xMin + 1 - xI1 = CInt(Int(xxMid * Rnd())) + xMin - xI2 = CInt(Int(xxMid * Rnd())) + xMin - xI3 = CInt(Int(xxMid * Rnd())) + xMin - If Notes(xI1).VPosition <= Notes(xI2).VPosition And Notes(xI2).VPosition <= Notes(xI3).VPosition Then - xxMid = xI2 - Else - If Notes(xI2).VPosition <= Notes(xI1).VPosition And Notes(xI1).VPosition <= Notes(xI3).VPosition Then - xxMid = xI1 - Else - xxMid = xI3 - End If - End If - xNoteMid = Notes(xxMid) - Do - Do While Notes(xxMin).VPosition < xNoteMid.VPosition And xxMin < xMax - xxMin = xxMin + 1 - Loop - Do While xNoteMid.VPosition < Notes(xxMax).VPosition And xxMax > xMin - xxMax = xxMax - 1 - Loop - If xxMin <= xxMax Then - xNote = Notes(xxMin) - Notes(xxMin) = Notes(xxMax) - Notes(xxMax) = xNote - xxMin = xxMin + 1 - xxMax = xxMax - 1 - End If - Loop Until xxMin > xxMax - If xxMax - xMin < xMax - xxMin Then - If xMin < xxMax Then SortByVPositionQuick3(xMin, xxMax) - If xxMin < xMax Then SortByVPositionQuick3(xxMin, xMax) - Else - If xxMin < xMax Then SortByVPositionQuick3(xxMin, xMax) - If xMin < xxMax Then SortByVPositionQuick3(xMin, xxMax) - End If - End Sub - - - Private Sub UpdateMeasureBottom() - MeasureBottom(0) = 0.0# - For xI1 As Integer = 0 To 998 - MeasureBottom(xI1 + 1) = MeasureBottom(xI1) + MeasureLength(xI1) - Next - End Sub - - Private Function PathIsValid(ByVal sPath As String) As Boolean - Return File.Exists(sPath) Or Directory.Exists(sPath) - End Function - - Public Function PrevCodeToReal(ByVal InitStr As String) As String - Dim xFileName As String = IIf(Not PathIsValid(FileName), - IIf(InitPath = "", My.Application.Info.DirectoryPath, InitPath), - ExcludeFileName(FileName)) _ - & "\___TempBMS.bms" - Dim xMeasure As Integer = MeasureAtDisplacement(Math.Abs(PanelVScroll(PanelFocus))) - Dim xS1 As String = Replace(InitStr, "", My.Application.Info.DirectoryPath) - Dim xS2 As String = Replace(xS1, "", xMeasure) - Dim xS3 As String = Replace(xS2, "", xFileName) - Return xS3 - End Function - - Private Sub SetFileName(ByVal xFileName As String) - FileName = xFileName.Trim - InitPath = ExcludeFileName(FileName) - SetIsSaved(IsSaved) - End Sub - - Private Sub SetIsSaved(ByVal isSaved As Boolean) - 'pttl.Refresh() - 'pIsSaved.Visible = Not xBool - Dim xVersion As String = My.Application.Info.Version.Major & "." & My.Application.Info.Version.Minor & - IIf(My.Application.Info.Version.Build = 0, "", "." & My.Application.Info.Version.Build) - Text = IIf(isSaved, "", "*") & GetFileName(FileName) & " - " & My.Application.Info.Title & " " & xVersion - Me.IsSaved = isSaved - End Sub - - Private Sub PreviewNote(ByVal xFileLocation As String, ByVal bStop As Boolean) - If bStop Then - Audio.StopPlaying() - End If - Audio.Play(xFileLocation) - End Sub - - Private Sub AddNote(note As Note, - Optional ByVal xSelected As Boolean = False, - Optional ByVal OverWrite As Boolean = True, - Optional ByVal SortAndUpdatePairing As Boolean = True) - - If note.VPosition < 0 Or note.VPosition >= GetMaxVPosition() Then Exit Sub - - Dim xI1 As Integer = 1 - - If OverWrite Then - Do While xI1 <= UBound(Notes) - If Notes(xI1).VPosition = note.VPosition And - Notes(xI1).ColumnIndex = note.ColumnIndex Then - RemoveNote(xI1) - Else - xI1 += 1 - End If - Loop - End If - - ReDim Preserve Notes(UBound(Notes) + 1) - note.Selected = note.Selected And nEnabled(note.ColumnIndex) - Notes(UBound(Notes)) = note - - If SortAndUpdatePairing Then SortByVPositionInsertion() : UpdatePairing() - CalculateTotalPlayableNotes() - End Sub - - Private Sub RemoveNote(ByVal I As Integer, Optional ByVal SortAndUpdatePairing As Boolean = True) - KMouseOver = -1 - Dim xI2 As Integer - - If TBWavIncrease.Checked Then - If Notes(I).Value = LWAV.SelectedIndex * 10000 Then - DecreaseCurrentWav() - End If - End If - - For xI2 = I + 1 To UBound(Notes) - Notes(xI2 - 1) = Notes(xI2) - Next - ReDim Preserve Notes(UBound(Notes) - 1) - If SortAndUpdatePairing Then SortByVPositionInsertion() : UpdatePairing() - - End Sub - - Private Sub AddNotesFromClipboard(Optional ByVal xSelected As Boolean = True, Optional ByVal SortAndUpdatePairing As Boolean = True) - Dim xStrLine() As String = Split(Clipboard.GetText, vbCrLf) - - Dim xI1 As Integer - For xI1 = 0 To UBound(Notes) - Notes(xI1).Selected = False - Next - - Dim xVS As Long = PanelVScroll(PanelFocus) - Dim xTempVP As Double - Dim xKbu() As Note = Notes - - If xStrLine(0) = "iBMSC Clipboard Data" Then - If NTInput Then ReDim Preserve Notes(0) - - 'paste - Dim xStrSub() As String - For xI1 = 1 To UBound(xStrLine) - If xStrLine(xI1).Trim = "" Then Continue For - xStrSub = Split(xStrLine(xI1), " ") - xTempVP = Val(xStrSub(1)) + MeasureBottom(MeasureAtDisplacement(-xVS) + 1) - If UBound(xStrSub) = 5 And xTempVP >= 0 And xTempVP < GetMaxVPosition() Then - ReDim Preserve Notes(UBound(Notes) + 1) - With Notes(UBound(Notes)) - .ColumnIndex = Val(xStrSub(0)) - .VPosition = xTempVP - .Value = Val(xStrSub(2)) - .LongNote = CBool(Val(xStrSub(3))) - .Hidden = CBool(Val(xStrSub(4))) - .Landmine = CBool(Val(xStrSub(5))) - .Selected = xSelected - End With - End If - Next - - 'convert - If NTInput Then - ConvertBMSE2NT() - - For xI1 = 1 To UBound(Notes) - Notes(xI1 - 1) = Notes(xI1) - Next - ReDim Preserve Notes(UBound(Notes) - 1) - - Dim xKn() As Note = Notes - Notes = xKbu - - Dim xIStart As Integer = Notes.Length - ReDim Preserve Notes(UBound(Notes) + xKn.Length) - - For xI1 = xIStart To UBound(Notes) - Notes(xI1) = xKn(xI1 - xIStart) - Next - End If - - ElseIf xStrLine(0) = "iBMSC Clipboard Data xNT" Then - If Not NTInput Then ReDim Preserve Notes(0) - - 'paste - Dim xStrSub() As String - For xI1 = 1 To UBound(xStrLine) - If xStrLine(xI1).Trim = "" Then Continue For - xStrSub = Split(xStrLine(xI1), " ") - xTempVP = Val(xStrSub(1)) + MeasureBottom(MeasureAtDisplacement(-xVS) + 1) - If UBound(xStrSub) = 5 And xTempVP >= 0 And xTempVP < GetMaxVPosition() Then - ReDim Preserve Notes(UBound(Notes) + 1) - With Notes(UBound(Notes)) - .ColumnIndex = Val(xStrSub(0)) - .VPosition = xTempVP - .Value = Val(xStrSub(2)) - .Length = Val(xStrSub(3)) - .Hidden = CBool(Val(xStrSub(4))) - .Landmine = CBool(Val(xStrSub(5))) - .Selected = xSelected - End With - End If - Next - - 'convert - If Not NTInput Then - ConvertNT2BMSE() - - For xI1 = 1 To UBound(Notes) - Notes(xI1 - 1) = Notes(xI1) - Next - ReDim Preserve Notes(UBound(Notes) - 1) - - Dim xKn() As Note = Notes - Notes = xKbu - - Dim xIStart As Integer = Notes.Length - ReDim Preserve Notes(UBound(Notes) + xKn.Length) - - For xI1 = xIStart To UBound(Notes) - Notes(xI1) = xKn(xI1 - xIStart) - Next - End If - - ElseIf xStrLine(0) = "BMSE ClipBoard Object Data Format" Then - If NTInput Then ReDim Preserve Notes(0) - - 'paste - For xI1 = 1 To UBound(xStrLine) - ' zdr: holy crap this is obtuse - Dim posStr = Mid(xStrLine(xI1), 5, 7) - Dim vPos = Val(posStr) + MeasureBottom(MeasureAtDisplacement(-xVS) + 1) - - Dim bmsIdent = Mid(xStrLine(xI1), 1, 3) - Dim lineCol = BMSEChannelToColumnIndex(bmsIdent) - - Dim Value = Val(Mid(xStrLine(xI1), 12)) * 10000 - - Dim attribute = Mid(xStrLine(xI1), 4, 1) - - Dim validCol = Len(xStrLine(xI1)) > 11 And lineCol > 0 - Dim inRange = vPos >= 0 And vPos < GetMaxVPosition() - If validCol And inRange Then - ReDim Preserve Notes(UBound(Notes) + 1) - - With Notes(UBound(Notes)) - .ColumnIndex = lineCol - .VPosition = vPos - .Value = Value - .LongNote = attribute = "2" - .Hidden = attribute = "1" - .Selected = xSelected And nEnabled(.ColumnIndex) - End With - End If - Next - - 'convert - If NTInput Then - ConvertBMSE2NT() - - For xI1 = 1 To UBound(Notes) - Notes(xI1 - 1) = Notes(xI1) - Next - ReDim Preserve Notes(UBound(Notes) - 1) - - Dim xKn() As Note = Notes - Notes = xKbu - - Dim xIStart As Integer = Notes.Length - ReDim Preserve Notes(UBound(Notes) + xKn.Length) - - For xI1 = xIStart To UBound(Notes) - Notes(xI1) = xKn(xI1 - xIStart) - Next - End If - End If - - If SortAndUpdatePairing Then SortByVPositionInsertion() : UpdatePairing() - CalculateTotalPlayableNotes() - End Sub - - Private Sub CopyNotes(Optional ByVal Unselect As Boolean = True) - Dim xStrAll As String = "iBMSC Clipboard Data" & IIf(NTInput, " xNT", "") - Dim xI1 As Integer - Dim MinMeasure As Double = 999 - - For xI1 = 1 To UBound(Notes) - If Notes(xI1).Selected And MeasureAtDisplacement(Notes(xI1).VPosition) < MinMeasure Then MinMeasure = MeasureAtDisplacement(Notes(xI1).VPosition) - Next - MinMeasure = MeasureBottom(MinMeasure) - - If Not NTInput Then - For xI1 = 1 To UBound(Notes) - If Notes(xI1).Selected Then - xStrAll &= vbCrLf & Notes(xI1).ColumnIndex.ToString & " " & - (Notes(xI1).VPosition - MinMeasure).ToString & " " & - Notes(xI1).Value.ToString & " " & - CInt(Notes(xI1).LongNote).ToString & " " & - CInt(Notes(xI1).Hidden).ToString & " " & - CInt(Notes(xI1).Landmine).ToString - Notes(xI1).Selected = Not Unselect - End If - Next - - Else - For xI1 = 1 To UBound(Notes) - If Notes(xI1).Selected Then - xStrAll &= vbCrLf & Notes(xI1).ColumnIndex.ToString & " " & - (Notes(xI1).VPosition - MinMeasure).ToString & " " & - Notes(xI1).Value.ToString & " " & - Notes(xI1).Length.ToString & " " & - CInt(Notes(xI1).Hidden).ToString & " " & - CInt(Notes(xI1).Landmine).ToString - Notes(xI1).Selected = Not Unselect - End If - Next - End If - - Clipboard.SetText(xStrAll) - End Sub - - Private Sub RemoveNotes(Optional ByVal SortAndUpdatePairing As Boolean = True) - If UBound(Notes) = 0 Then Exit Sub - - KMouseOver = -1 - Dim xI1 As Integer = 1 - Dim xI2 As Integer - Do - If Notes(xI1).Selected Then - For xI2 = xI1 + 1 To UBound(Notes) - Notes(xI2 - 1) = Notes(xI2) - Next - ReDim Preserve Notes(UBound(Notes) - 1) - xI1 = 0 - End If - xI1 += 1 - Loop While xI1 < UBound(Notes) + 1 - If SortAndUpdatePairing Then SortByVPositionInsertion() : UpdatePairing() - CalculateTotalPlayableNotes() - End Sub - - Private Function EnabledColumnIndexToColumnArrayIndex(ByVal cEnabled As Integer) As Integer - Dim xI1 As Integer = 0 - Do - If xI1 >= gColumns Then Exit Do - If Not nEnabled(xI1) Then cEnabled += 1 - If xI1 >= cEnabled Then Exit Do - xI1 += 1 - Loop - Return cEnabled - End Function - - Private Function ColumnArrayIndexToEnabledColumnIndex(ByVal cReal As Integer) As Integer - Dim xI1 As Integer - For xI1 = 0 To cReal - 1 - If Not nEnabled(xI1) Then cReal -= 1 - Next - Return cReal - End Function - - Private Sub Form1_FormClosed(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosedEventArgs) Handles Me.FormClosed - If pTempFileNames IsNot Nothing Then - For Each xStr As String In pTempFileNames - IO.File.Delete(xStr) - Next - End If - If PreviousAutoSavedFileName <> "" Then IO.File.Delete(PreviousAutoSavedFileName) - End Sub - - Private Sub Form1_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing - If Not IsSaved Then - Dim xStr As String = Strings.Messages.SaveOnExit - If e.CloseReason = CloseReason.WindowsShutDown Then xStr = Strings.Messages.SaveOnExit1 - If e.CloseReason = CloseReason.TaskManagerClosing Then xStr = Strings.Messages.SaveOnExit2 - - Dim xResult As MsgBoxResult = MsgBox(xStr, MsgBoxStyle.YesNoCancel Or MsgBoxStyle.Question, Me.Text) - - If xResult = MsgBoxResult.Yes Then - If ExcludeFileName(FileName) = "" Then - Dim xDSave As New SaveFileDialog - xDSave.Filter = Strings.FileType._bms & "|*.bms;*.bme;*.bml;*.pms;*.txt|" & - Strings.FileType.BMS & "|*.bms|" & - Strings.FileType.BME & "|*.bme|" & - Strings.FileType.BML & "|*.bml|" & - Strings.FileType.PMS & "|*.pms|" & - Strings.FileType.TXT & "|*.txt|" & - Strings.FileType._all & "|*.*" - xDSave.DefaultExt = "bms" - xDSave.InitialDirectory = InitPath - - If xDSave.ShowDialog = Windows.Forms.DialogResult.Cancel Then e.Cancel = True : Exit Sub - SetFileName(xDSave.FileName) - End If - Dim xStrAll As String = SaveBMS() - My.Computer.FileSystem.WriteAllText(FileName, xStrAll, False, TextEncoding) - NewRecent(FileName) - If BeepWhileSaved Then Beep() - End If - - If xResult = MsgBoxResult.Cancel Then e.Cancel = True - End If - - If Not e.Cancel Then - 'If SaveTheme Then - ' My.Computer.FileSystem.WriteAllText(My.Application.Info.DirectoryPath & "\Skin.cff", SaveSkinCFF, False, System.Text.Encoding.Unicode) - 'Else - ' My.Computer.FileSystem.WriteAllText(My.Application.Info.DirectoryPath & "\Skin.cff", "", False, System.Text.Encoding.Unicode) - 'End If - ' - 'My.Computer.FileSystem.WriteAllText(My.Application.Info.DirectoryPath & "\PlayerArgs.cff", SavePlayerCFF, False, System.Text.Encoding.Unicode) - 'My.Computer.FileSystem.WriteAllText(My.Application.Info.DirectoryPath & "\Config.cff", SaveCFF, False, System.Text.Encoding.Unicode) - 'My.Computer.FileSystem.WriteAllText(My.Application.Info.DirectoryPath & "\PreConfig.cff", "", False, System.Text.Encoding.Unicode) - Me.SaveSettings(My.Application.Info.DirectoryPath & "\iBMSC.Settings.xml", False) - End If - End Sub - - Private Function FilterFileBySupported(ByVal xFile() As String, ByVal xFilter() As String) As String() - Dim xPath(-1) As String - For xI1 As Integer = 0 To UBound(xFile) - If My.Computer.FileSystem.FileExists(xFile(xI1)) And Array.IndexOf(xFilter, Path.GetExtension(xFile(xI1))) <> -1 Then - ReDim Preserve xPath(UBound(xPath) + 1) - xPath(UBound(xPath)) = xFile(xI1) - End If - - If My.Computer.FileSystem.DirectoryExists(xFile(xI1)) Then - Dim xFileNames() As FileInfo = My.Computer.FileSystem.GetDirectoryInfo(xFile(xI1)).GetFiles() - For Each xStr As FileInfo In xFileNames - If Array.IndexOf(xFilter, xStr.Extension) = -1 Then Continue For - ReDim Preserve xPath(UBound(xPath) + 1) - xPath(UBound(xPath)) = xStr.FullName - Next - End If - Next - - Return xPath - End Function - - Private Sub InitializeNewBMS() - 'ReDim K(0) - 'With K(0) - ' .ColumnIndex = niBPM - ' .VPosition = -1 - ' .LongNote = False - ' .Selected = False - ' .Value = 1200000 - 'End With - - THTitle.Text = "" - THArtist.Text = "" - THGenre.Text = "" - THBPM.Value = 120 - If CHPlayer.SelectedIndex = -1 Then CHPlayer.SelectedIndex = 0 - CHRank.SelectedIndex = 3 - THPlayLevel.Text = "" - THSubTitle.Text = "" - THSubArtist.Text = "" - THStageFile.Text = "" - THBanner.Text = "" - THBackBMP.Text = "" - CHDifficulty.SelectedIndex = 0 - THExRank.Text = "" - THTotal.Text = "" - THComment.Text = "" - 'THLnType.Text = "1" - CHLnObj.SelectedIndex = 0 - - TExpansion.Text = "" - - LBeat.Items.Clear() - For xI1 As Integer = 0 To 999 - MeasureLength(xI1) = 192.0R - MeasureBottom(xI1) = xI1 * 192.0R - LBeat.Items.Add(Add3Zeros(xI1) & ": 1 ( 4 / 4 )") - Next - End Sub - - Private Sub InitializeOpenBMS() - CHPlayer.SelectedIndex = 0 - 'THLnType.Text = "" - End Sub - - Private Sub Form1_DragEnter(ByVal sender As Object, ByVal e As DragEventArgs) Handles Me.DragEnter - If e.Data.GetDataPresent(DataFormats.FileDrop) Then - e.Effect = DragDropEffects.Copy - DDFileName = FilterFileBySupported(CType(e.Data.GetData(DataFormats.FileDrop), String()), SupportedFileExtension) - Else - e.Effect = DragDropEffects.None - End If - RefreshPanelAll() - End Sub - - Private Sub Form1_DragLeave(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.DragLeave - ReDim DDFileName(-1) - RefreshPanelAll() - End Sub - - Private Sub Form1_DragDrop(ByVal sender As Object, ByVal e As DragEventArgs) Handles Me.DragDrop - ReDim DDFileName(-1) - If Not e.Data.GetDataPresent(DataFormats.FileDrop) Then Return - - Dim xOrigPath() As String = CType(e.Data.GetData(DataFormats.FileDrop), String()) - Dim xPath() As String = FilterFileBySupported(xOrigPath, SupportedFileExtension) - If xPath.Length > 0 Then - Dim xProg As New fLoadFileProgress(xPath, IsSaved) - xProg.ShowDialog(Me) - End If - - RefreshPanelAll() - End Sub - - Private Sub setFullScreen(ByVal value As Boolean) - If value Then - If Me.WindowState = FormWindowState.Minimized Then Exit Sub - - Me.SuspendLayout() - previousWindowPosition.Location = Me.Location - previousWindowPosition.Size = Me.Size - previousWindowState = Me.WindowState - - Me.WindowState = FormWindowState.Normal - Me.FormBorderStyle = Windows.Forms.FormBorderStyle.None - Me.WindowState = FormWindowState.Maximized - ToolStripContainer1.TopToolStripPanelVisible = False - - Me.ResumeLayout() - isFullScreen = True - Else - Me.SuspendLayout() - Me.FormBorderStyle = Windows.Forms.FormBorderStyle.Sizable - ToolStripContainer1.TopToolStripPanelVisible = True - Me.WindowState = FormWindowState.Normal - - Me.WindowState = previousWindowState - If Me.WindowState = FormWindowState.Normal Then - Me.Location = previousWindowPosition.Location - Me.Size = previousWindowPosition.Size - End If - - Me.ResumeLayout() - isFullScreen = False - End If - End Sub - - Private Sub Form1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown - Select Case e.KeyCode - Case Keys.F11 - setFullScreen(Not isFullScreen) - End Select - End Sub - - Private Sub Form1_KeyUp(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyUp - RefreshPanelAll() - POStatusRefresh() - End Sub - - Friend Sub ReadFile(ByVal xPath As String) - Select Case LCase(Path.GetExtension(xPath)) - Case ".bms", ".bme", ".bml", ".pms", ".txt" - OpenBMS(My.Computer.FileSystem.ReadAllText(xPath, TextEncoding)) - ClearUndo() - NewRecent(xPath) - SetFileName(xPath) - SetIsSaved(True) - - Case ".sm" - If OpenSM(My.Computer.FileSystem.ReadAllText(xPath, TextEncoding)) Then Return - InitPath = ExcludeFileName(xPath) - ClearUndo() - SetFileName("Untitled.bms") - SetIsSaved(False) - - Case ".ibmsc" - OpeniBMSC(xPath) - InitPath = ExcludeFileName(xPath) - NewRecent(xPath) - SetFileName("Imported_" & GetFileName(xPath)) - SetIsSaved(False) - - End Select - End Sub - - - Public Function GCD(ByVal NumA As Double, ByVal NumB As Double) As Double - Dim xNMax As Double = NumA - Dim xNMin As Double = NumB - If NumA < NumB Then - xNMax = NumB - xNMin = NumA - End If - Do While xNMin >= BMSGridLimit - GCD = xNMax - Math.Floor(xNMax / xNMin) * xNMin - xNMax = xNMin - xNMin = GCD - Loop - GCD = xNMax - End Function - - Private Shared Function LoadCursorFromFile(ByVal fileName As String) As IntPtr - End Function - Public Shared Function ActuallyLoadCursor(ByVal path As String) As Cursor - Return New Cursor(LoadCursorFromFile(path)) - End Function - - Private Sub Unload() Handles MyBase.Disposed - Audio.Finalize() - End Sub - - Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load - 'On Error Resume Next - Me.TopMost = True - Me.SuspendLayout() - Me.Visible = False - - 'POBMP.Dispose() - 'POBGA.Dispose() - - 'Me.MaximizedBounds = Screen.GetWorkingArea(Me) - 'Me.Visible = False - SetFileName(FileName) - 'Me.ShowCaption = False - 'SetWindowText(Me.Handle.ToInt32, FileName) - - InitializeNewBMS() - 'nBeatD.SelectedIndex = 4 - - Try - Dim xTempFileName As String = RandomFileName(".cur") - My.Computer.FileSystem.WriteAllBytes(xTempFileName, My.Resources.CursorResizeDown, False) - Dim xDownCursor As Cursor = ActuallyLoadCursor(xTempFileName) - My.Computer.FileSystem.WriteAllBytes(xTempFileName, My.Resources.CursorResizeLeft, False) - Dim xLeftCursor As Cursor = ActuallyLoadCursor(xTempFileName) - My.Computer.FileSystem.WriteAllBytes(xTempFileName, My.Resources.CursorResizeRight, False) - Dim xRightCursor As Cursor = ActuallyLoadCursor(xTempFileName) - File.Delete(xTempFileName) - - POWAVResizer.Cursor = xDownCursor - POBeatResizer.Cursor = xDownCursor - POExpansionResizer.Cursor = xDownCursor - - POptionsResizer.Cursor = xLeftCursor - - SpL.Cursor = xRightCursor - SpR.Cursor = xLeftCursor - Catch ex As Exception - - End Try - - spMain = New Panel() {PMainInL, PMainIn, PMainInR} - - Dim xI1 As Integer - - sUndo(0) = New UndoRedo.NoOperation - sUndo(1) = New UndoRedo.NoOperation - sRedo(0) = New UndoRedo.NoOperation - sRedo(1) = New UndoRedo.NoOperation - sI = 0 - - LWAV.Items.Clear() - For xI1 = 1 To 1295 - LWAV.Items.Add(C10to36(xI1) & ":") - Next - LWAV.SelectedIndex = 0 - CHPlayer.SelectedIndex = 0 - - CalculateGreatestVPosition() - TBLangRefresh_Click(TBLangRefresh, Nothing) - TBThemeRefresh_Click(TBThemeRefresh, Nothing) - - POHeaderPart2.Visible = False - POGridPart2.Visible = False - POWaveFormPart2.Visible = False - - If My.Computer.FileSystem.FileExists(My.Application.Info.DirectoryPath & "\iBMSC.Settings.xml") Then - LoadSettings(My.Application.Info.DirectoryPath & "\iBMSC.Settings.xml") - 'Else - '---- Settings for first-time start-up --------------------------------------------------------------------------- - 'Me.LoadLocale(My.Application.Info.DirectoryPath & "\Data\chs.Lang.xml") - '----------------------------------------------------------------------------------------------------------------- - End If - 'On Error GoTo 0 - SetIsSaved(True) - - Dim xStr() As String = Environment.GetCommandLineArgs - 'Dim xStr() As String = {Application.ExecutablePath, "C:\Users\User\Desktop\yang run xuan\SoFtwArES\Games\O2Mania\music\SHOOT!\shoot! -NM-.bms"} - - If xStr.Length = 2 Then - ReadFile(xStr(1)) - If LCase(Path.GetExtension(xStr(1))) = ".ibmsc" AndAlso GetFileName(xStr(1)).StartsWith("AutoSave_", True, Nothing) Then GoTo 1000 - End If - - 'pIsSaved.Visible = Not IsSaved - IsInitializing = False - - If Process.GetProcessesByName(Process.GetCurrentProcess.ProcessName).Length > 1 Then GoTo 1000 - Dim xFiles() As FileInfo = My.Computer.FileSystem.GetDirectoryInfo(My.Application.Info.DirectoryPath).GetFiles("AutoSave_*.IBMSC") - If xFiles Is Nothing OrElse xFiles.Length = 0 Then GoTo 1000 - - 'Me.TopMost = True - If MsgBox(Replace(Strings.Messages.RestoreAutosavedFile, "{}", xFiles.Length), MsgBoxStyle.YesNo Or MsgBoxStyle.MsgBoxSetForeground) = MsgBoxResult.Yes Then - For Each xF As FileInfo In xFiles - 'MsgBox(xF.FullName) - System.Diagnostics.Process.Start(Application.ExecutablePath, """" & xF.FullName & """") - Next - End If - - For Each xF As FileInfo In xFiles - ReDim Preserve pTempFileNames(UBound(pTempFileNames) + 1) - pTempFileNames(UBound(pTempFileNames)) = xF.FullName - Next - -1000: - IsInitializing = False - POStatusRefresh() - Me.ResumeLayout() - - tempResize = Me.WindowState - Me.TopMost = False - Me.WindowState = tempResize - - Me.Visible = True - End Sub - - Private Sub UpdatePairing() - Dim i As Integer, j As Integer - - If NTInput Then - For i = 0 To UBound(Notes) - Notes(i).HasError = False - Notes(i).LNPair = 0 - If Notes(i).Length < 0 Then Notes(i).Length = 0 - Next - - For i = 1 To UBound(Notes) - If Notes(i).Length <> 0 Then - For j = i + 1 To UBound(Notes) - If Notes(j).VPosition > Notes(i).VPosition + Notes(i).Length Then Exit For - If Notes(j).ColumnIndex = Notes(i).ColumnIndex Then Notes(j).HasError = True - Next - Else - For j = i + 1 To UBound(Notes) - If Notes(j).VPosition > Notes(i).VPosition Then Exit For - If Notes(j).ColumnIndex = Notes(i).ColumnIndex Then Notes(j).HasError = True - Next - - If Notes(i).Value \ 10000 = LnObj AndAlso Not IsColumnNumeric(Notes(i).ColumnIndex) Then - For j = i - 1 To 1 Step -1 - If Notes(j).ColumnIndex <> Notes(i).ColumnIndex Then Continue For - If Notes(j).Hidden Then Continue For - - If Notes(j).Length <> 0 OrElse Notes(j).Value \ 10000 = LnObj Then - Notes(i).HasError = True - Else - Notes(i).LNPair = j - Notes(j).LNPair = i - End If - Exit For - Next - If j = 0 Then - Notes(i).HasError = True - End If - End If - End If - Next - - Else - For i = 0 To UBound(Notes) - Notes(i).HasError = False - Notes(i).LNPair = 0 - Next - - For i = 1 To UBound(Notes) - - If Notes(i).LongNote Then - 'LongNote: If overlapping a note, then error. - ' Else if already matched by a LongNote below, then match it. - ' Otherwise match anything above. - ' If ShortNote above then error on above. - ' If nothing above then error. - For j = i - 1 To 1 Step -1 - If Notes(j).ColumnIndex <> Notes(i).ColumnIndex Then Continue For - If Notes(j).VPosition = Notes(i).VPosition Then - Notes(i).HasError = True - GoTo EndSearch - ElseIf Notes(j).LongNote And Notes(j).LNPair = i Then - Notes(i).LNPair = j - GoTo EndSearch - Else - Exit For - End If - Next - - For j = i + 1 To UBound(Notes) - If Notes(j).ColumnIndex <> Notes(i).ColumnIndex Then Continue For - Notes(i).LNPair = j - Notes(j).LNPair = i - If Not Notes(j).LongNote AndAlso Notes(j).Value \ 10000 <> LnObj Then - Notes(j).HasError = True - End If - Exit For - Next - - If j = UBound(Notes) + 1 Then - Notes(i).HasError = True - End If -EndSearch: - - ElseIf Notes(i).Value \ 10000 = LnObj And - Not IsColumnNumeric(Notes(i).ColumnIndex) Then - 'LnObj: Match anything below. - ' If matching a LongNote not matching back, then error on below. - ' If overlapping a note, then error. - ' If mathcing a LnObj below, then error on below. - ' If nothing below, then error. - For j = i - 1 To 1 Step -1 - If Notes(i).ColumnIndex <> Notes(j).ColumnIndex Then Continue For - If Notes(j).LNPair <> 0 And Notes(j).LNPair <> i Then - Notes(j).HasError = True - End If - Notes(i).LNPair = j - Notes(j).LNPair = i - If Notes(i).VPosition = Notes(j).VPosition Then - Notes(i).HasError = True - End If - If Notes(j).Value \ 10000 = LnObj Then - Notes(j).HasError = True - End If - Exit For - Next - - If j = 0 Then - Notes(i).HasError = True - End If - - Else - 'ShortNote: If overlapping a note, then error. - For j = i - 1 To 1 Step -1 - If Notes(j).VPosition < Notes(i).VPosition Then Exit For - If Notes(j).ColumnIndex <> Notes(i).ColumnIndex Then Continue For - Notes(i).HasError = True - Exit For - Next - - End If - Next - - - End If - - Dim currentMS = 0.0# - Dim currentBPM = Notes(0).Value / 10000 - Dim currentBPMVPosition = 0.0# - For i = 1 To UBound(Notes) - If Notes(i).ColumnIndex = niBPM Then - currentMS += (Notes(i).VPosition - currentBPMVPosition) / currentBPM * 1250 - currentBPM = Notes(i).Value / 10000 - currentBPMVPosition = Notes(i).VPosition - End If - 'K(i).TimeOffset = currentMS + (K(i).VPosition - currentBPMVPosition) / currentBPM * 1250 - Next - End Sub - - - - Public Sub ExceptionSave(ByVal Path As String) - SaveiBMSC(Path) - End Sub - - ''' - ''' True if pressed cancel. False elsewise. - ''' - ''' True if pressed cancel. False elsewise. - - Private Function ClosingPopSave() As Boolean - If Not IsSaved Then - Dim xResult As MsgBoxResult = MsgBox(Strings.Messages.SaveOnExit, MsgBoxStyle.YesNoCancel Or MsgBoxStyle.Question, Me.Text) - - If xResult = MsgBoxResult.Yes Then - If ExcludeFileName(FileName) = "" Then - Dim xDSave As New SaveFileDialog - xDSave.Filter = Strings.FileType._bms & "|*.bms;*.bme;*.bml;*.pms;*.txt|" & - Strings.FileType.BMS & "|*.bms|" & - Strings.FileType.BME & "|*.bme|" & - Strings.FileType.BML & "|*.bml|" & - Strings.FileType.PMS & "|*.pms|" & - Strings.FileType.TXT & "|*.txt|" & - Strings.FileType._all & "|*.*" - xDSave.DefaultExt = "bms" - xDSave.InitialDirectory = InitPath - - If xDSave.ShowDialog = Windows.Forms.DialogResult.Cancel Then Return True - SetFileName(xDSave.FileName) - End If - Dim xStrAll As String = SaveBMS() - My.Computer.FileSystem.WriteAllText(FileName, xStrAll, False, TextEncoding) - NewRecent(FileName) - If BeepWhileSaved Then Beep() - End If - - If xResult = MsgBoxResult.Cancel Then Return True - End If - Return False - End Function - - Private Sub TBNew_Click(ByVal sender As System.Object, ByVal e As EventArgs) Handles TBNew.Click, mnNew.Click - - 'KMouseDown = -1 - ReDim SelectedNotes(-1) - KMouseOver = -1 - If ClosingPopSave() Then Exit Sub - - ClearUndo() - InitializeNewBMS() - - ReDim Notes(0) - ReDim mColumn(999) - ReDim hWAV(1295) - ReDim hBPM(1295) 'x10000 - ReDim hSTOP(1295) - ReDim hSCROLL(1295) - THGenre.Text = "" - THTitle.Text = "" - THArtist.Text = "" - THPlayLevel.Text = "" - - With Notes(0) - .ColumnIndex = niBPM - .VPosition = -1 - '.LongNote = False - '.Selected = False - .Value = 1200000 - End With - THBPM.Value = 120 - - LWAV.Items.Clear() - Dim xI1 As Integer - For xI1 = 1 To 1295 - LWAV.Items.Add(C10to36(xI1) & ": " & hWAV(xI1)) - Next - LWAV.SelectedIndex = 0 - - SetFileName("Untitled.bms") - SetIsSaved(True) - 'pIsSaved.Visible = Not IsSaved - - CalculateTotalPlayableNotes() - CalculateGreatestVPosition() - RefreshPanelAll() - POStatusRefresh() - End Sub - - Private Sub TBNewC_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) 'Handles TBNewC.Click - 'KMouseDown = -1 - ReDim SelectedNotes(-1) - KMouseOver = -1 - If ClosingPopSave() Then Exit Sub - - ClearUndo() - - ReDim Notes(0) - ReDim mColumn(999) - ReDim hWAV(1295) - ReDim hBPM(1295) 'x10000 - ReDim hSTOP(1295) - ReDim hSCROLL(1295) - THGenre.Text = "" - THTitle.Text = "" - THArtist.Text = "" - THPlayLevel.Text = "" - - With Notes(0) - .ColumnIndex = niBPM - .VPosition = -1 - '.LongNote = False - '.Selected = False - .Value = 1200000 - End With - THBPM.Value = 120 - - SetFileName("Untitled.bms") - SetIsSaved(True) - 'pIsSaved.Visible = Not IsSaved - - If MsgBox("Please copy your code to clipboard and click OK.", MsgBoxStyle.OkCancel, "Create from code") = MsgBoxResult.Cancel Then Exit Sub - OpenBMS(Clipboard.GetText) - End Sub - - Private Sub TBOpen_ButtonClick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBOpen.ButtonClick, mnOpen.Click - 'KMouseDown = -1 - ReDim SelectedNotes(-1) - KMouseOver = -1 - If ClosingPopSave() Then Exit Sub - - Dim xDOpen As New OpenFileDialog - xDOpen.Filter = Strings.FileType._bms & "|*.bms;*.bme;*.bml;*.pms;*.txt" - xDOpen.DefaultExt = "bms" - xDOpen.InitialDirectory = IIf(ExcludeFileName(FileName) = "", InitPath, ExcludeFileName(FileName)) - - If xDOpen.ShowDialog = Windows.Forms.DialogResult.Cancel Then Exit Sub - InitPath = ExcludeFileName(xDOpen.FileName) - OpenBMS(My.Computer.FileSystem.ReadAllText(xDOpen.FileName, TextEncoding)) - ClearUndo() - SetFileName(xDOpen.FileName) - NewRecent(FileName) - SetIsSaved(True) - 'pIsSaved.Visible = Not IsSaved - End Sub - - Private Sub TBImportIBMSC_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBImportIBMSC.Click, mnImportIBMSC.Click - 'KMouseDown = -1 - ReDim SelectedNotes(-1) - KMouseOver = -1 - If ClosingPopSave() Then Return - - Dim xDOpen As New OpenFileDialog - xDOpen.Filter = Strings.FileType.IBMSC & "|*.ibmsc" - xDOpen.DefaultExt = "ibmsc" - xDOpen.InitialDirectory = IIf(ExcludeFileName(FileName) = "", InitPath, ExcludeFileName(FileName)) - - If xDOpen.ShowDialog = Windows.Forms.DialogResult.Cancel Then Return - InitPath = ExcludeFileName(xDOpen.FileName) - SetFileName("Imported_" & GetFileName(xDOpen.FileName)) - OpeniBMSC(xDOpen.FileName) - NewRecent(xDOpen.FileName) - SetIsSaved(False) - 'pIsSaved.Visible = Not IsSaved - End Sub - - Private Sub TBImportSM_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBImportSM.Click, mnImportSM.Click - 'KMouseDown = -1 - ReDim SelectedNotes(-1) - KMouseOver = -1 - If ClosingPopSave() Then Exit Sub - - Dim xDOpen As New OpenFileDialog - xDOpen.Filter = Strings.FileType.SM & "|*.sm" - xDOpen.DefaultExt = "sm" - xDOpen.InitialDirectory = IIf(ExcludeFileName(FileName) = "", InitPath, ExcludeFileName(FileName)) - - If xDOpen.ShowDialog = Windows.Forms.DialogResult.Cancel Then Exit Sub - If OpenSM(My.Computer.FileSystem.ReadAllText(xDOpen.FileName, TextEncoding)) Then Exit Sub - InitPath = ExcludeFileName(xDOpen.FileName) - SetFileName("Untitled.bms") - ClearUndo() - SetIsSaved(False) - 'pIsSaved.Visible = Not IsSaved - End Sub - - Private Sub TBSave_ButtonClick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBSave.ButtonClick, mnSave.Click - 'KMouseDown = -1 - ReDim SelectedNotes(-1) - KMouseOver = -1 - - If ExcludeFileName(FileName) = "" Then - Dim xDSave As New SaveFileDialog - xDSave.Filter = Strings.FileType._bms & "|*.bms;*.bme;*.bml;*.pms;*.txt|" & - Strings.FileType.BMS & "|*.bms|" & - Strings.FileType.BME & "|*.bme|" & - Strings.FileType.BML & "|*.bml|" & - Strings.FileType.PMS & "|*.pms|" & - Strings.FileType.TXT & "|*.txt|" & - Strings.FileType._all & "|*.*" - xDSave.DefaultExt = "bms" - xDSave.InitialDirectory = InitPath - - If xDSave.ShowDialog = Windows.Forms.DialogResult.Cancel Then Exit Sub - InitPath = ExcludeFileName(xDSave.FileName) - SetFileName(xDSave.FileName) - End If - Dim xStrAll As String = SaveBMS() - My.Computer.FileSystem.WriteAllText(FileName, xStrAll, False, TextEncoding) - NewRecent(FileName) - SetFileName(FileName) - SetIsSaved(True) - 'pIsSaved.Visible = Not IsSaved - If BeepWhileSaved Then Beep() - End Sub - - Private Sub TBSaveAs_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBSaveAs.Click, mnSaveAs.Click - 'KMouseDown = -1 - ReDim SelectedNotes(-1) - KMouseOver = -1 - - Dim xDSave As New SaveFileDialog - xDSave.Filter = Strings.FileType._bms & "|*.bms;*.bme;*.bml;*.pms;*.txt|" & - Strings.FileType.BMS & "|*.bms|" & - Strings.FileType.BME & "|*.bme|" & - Strings.FileType.BML & "|*.bml|" & - Strings.FileType.PMS & "|*.pms|" & - Strings.FileType.TXT & "|*.txt|" & - Strings.FileType._all & "|*.*" - xDSave.DefaultExt = "bms" - xDSave.InitialDirectory = IIf(ExcludeFileName(FileName) = "", InitPath, ExcludeFileName(FileName)) - - If xDSave.ShowDialog = Windows.Forms.DialogResult.Cancel Then Exit Sub - InitPath = ExcludeFileName(xDSave.FileName) - SetFileName(xDSave.FileName) - Dim xStrAll As String = SaveBMS() - My.Computer.FileSystem.WriteAllText(FileName, xStrAll, False, TextEncoding) - NewRecent(FileName) - SetFileName(FileName) - SetIsSaved(True) - 'pIsSaved.Visible = Not IsSaved - If BeepWhileSaved Then Beep() - End Sub - - Private Sub TBExport_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBExport.Click, mnExport.Click - 'KMouseDown = -1 - ReDim SelectedNotes(-1) - KMouseOver = -1 - - Dim xDSave As New SaveFileDialog - xDSave.Filter = Strings.FileType.IBMSC & "|*.ibmsc" - xDSave.DefaultExt = "ibmsc" - xDSave.InitialDirectory = IIf(ExcludeFileName(FileName) = "", InitPath, ExcludeFileName(FileName)) - If xDSave.ShowDialog = Windows.Forms.DialogResult.Cancel Then Exit Sub - - SaveiBMSC(xDSave.FileName) - 'My.Computer.FileSystem.WriteAllText(xDSave.FileName, xStrAll, False, TextEncoding) - NewRecent(FileName) - If BeepWhileSaved Then Beep() - End Sub - - - - Private Sub VSGotFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles MainPanelScroll.GotFocus, LeftPanelScroll.GotFocus, RightPanelScroll.GotFocus - PanelFocus = sender.Tag - spMain(PanelFocus).Focus() - End Sub - - Private Sub VSValueChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles MainPanelScroll.ValueChanged, LeftPanelScroll.ValueChanged, RightPanelScroll.ValueChanged - Dim iI As Integer = sender.Tag - - ' az: We got a wheel event when we're zooming in/out - If My.Computer.Keyboard.CtrlKeyDown Then - sender.Value = VSValue ' Undo the scroll - Exit Sub - End If - - If iI = PanelFocus And Not LastMouseDownLocation = New Point(-1, -1) And Not VSValue = -1 Then LastMouseDownLocation.Y += (VSValue - sender.Value) * gxHeight - PanelVScroll(iI) = sender.Value - - If spLock((iI + 1) Mod 3) Then - Dim xVS As Integer = PanelVScroll(iI) + spDiff(iI) - If xVS > 0 Then xVS = 0 - If xVS < MainPanelScroll.Minimum Then xVS = MainPanelScroll.Minimum - Select Case iI - Case 0 : MainPanelScroll.Value = xVS - Case 1 : RightPanelScroll.Value = xVS - Case 2 : LeftPanelScroll.Value = xVS - End Select - End If - - If spLock((iI + 2) Mod 3) Then - Dim xVS As Integer = PanelVScroll(iI) - spDiff((iI + 2) Mod 3) - If xVS > 0 Then xVS = 0 - If xVS < MainPanelScroll.Minimum Then xVS = MainPanelScroll.Minimum - Select Case iI - Case 0 : RightPanelScroll.Value = xVS - Case 1 : LeftPanelScroll.Value = xVS - Case 2 : MainPanelScroll.Value = xVS - End Select - End If - - spDiff(iI) = PanelVScroll((iI + 1) Mod 3) - PanelVScroll(iI) - spDiff((iI + 2) Mod 3) = PanelVScroll(iI) - PanelVScroll((iI + 2) Mod 3) - - VSValue = sender.Value - RefreshPanel(iI, spMain(iI).DisplayRectangle) - End Sub - - Private Sub cVSLock_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cVSLockL.CheckedChanged, cVSLock.CheckedChanged, cVSLockR.CheckedChanged - Dim iI As Integer = sender.Tag - spLock(iI) = sender.Checked - If Not spLock(iI) Then Return - - spDiff(iI) = PanelVScroll((iI + 1) Mod 3) - PanelVScroll(iI) - spDiff((iI + 2) Mod 3) = PanelVScroll(iI) - PanelVScroll((iI + 2) Mod 3) - - 'POHeaderB.Text = spDiff(0) & "_" & spDiff(1) & "_" & spDiff(2) - End Sub - - Private Sub HSGotFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles HS.GotFocus, HSL.GotFocus, HSR.GotFocus - PanelFocus = sender.Tag - spMain(PanelFocus).Focus() - End Sub - - Private Sub HSValueChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles HS.ValueChanged, HSL.ValueChanged, HSR.ValueChanged - Dim iI As Integer = sender.Tag - If Not LastMouseDownLocation = New Point(-1, -1) And Not HSValue = -1 Then LastMouseDownLocation.X += (HSValue - sender.Value) * gxWidth - PanelHScroll(iI) = sender.Value - HSValue = sender.Value - RefreshPanel(iI, spMain(iI).DisplayRectangle) - End Sub - - Private Sub TBSelect_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBSelect.Click, mnSelect.Click - TBSelect.Checked = True - TBWrite.Checked = False - TBTimeSelect.Checked = False - mnSelect.Checked = True - mnWrite.Checked = False - mnTimeSelect.Checked = False - - FStatus2.Visible = False - FStatus.Visible = True - - ShouldDrawTempNote = False - SelectedColumn = -1 - TempVPosition = -1 - TempLength = 0 - - vSelStart = MeasureBottom(MeasureAtDisplacement(-PanelVScroll(PanelFocus)) + 1) - vSelLength = 0 - - RefreshPanelAll() - POStatusRefresh() - End Sub - - Private Sub TBWrite_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBWrite.Click, mnWrite.Click - TBSelect.Checked = False - TBWrite.Checked = True - TBTimeSelect.Checked = False - mnSelect.Checked = False - mnWrite.Checked = True - mnTimeSelect.Checked = False - - FStatus2.Visible = False - FStatus.Visible = True - - ShouldDrawTempNote = True - SelectedColumn = -1 - TempVPosition = -1 - TempLength = 0 - - vSelStart = MeasureBottom(MeasureAtDisplacement(-PanelVScroll(PanelFocus)) + 1) - vSelLength = 0 - - RefreshPanelAll() - POStatusRefresh() - End Sub - - Private Sub TBPostEffects_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBTimeSelect.Click, mnTimeSelect.Click - TBSelect.Checked = False - TBWrite.Checked = False - TBTimeSelect.Checked = True - mnSelect.Checked = False - mnWrite.Checked = False - mnTimeSelect.Checked = True - - FStatus.Visible = False - FStatus2.Visible = True - - vSelMouseOverLine = 0 - ShouldDrawTempNote = False - SelectedColumn = -1 - TempVPosition = -1 - TempLength = 0 - ValidateSelection() - - Dim xI1 As Integer - For xI1 = 0 To UBound(Notes) - Notes(xI1).Selected = False - Next - RefreshPanelAll() - POStatusRefresh() - End Sub - - Private Sub CGHeight_ValueChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles CGHeight.ValueChanged - gxHeight = CSng(CGHeight.Value) - CGHeight2.Value = IIf(CGHeight.Value * 4 < CGHeight2.Maximum, CDec(CGHeight.Value * 4), CGHeight2.Maximum) - RefreshPanelAll() - End Sub - - Private Sub CGHeight2_Scroll(ByVal sender As Object, ByVal e As System.EventArgs) Handles CGHeight2.Scroll - CGHeight.Value = CGHeight2.Value / 4 - End Sub - - Private Sub CGWidth_ValueChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles CGWidth.ValueChanged - gxWidth = CSng(CGWidth.Value) - CGWidth2.Value = IIf(CGWidth.Value * 4 < CGWidth2.Maximum, CDec(CGWidth.Value * 4), CGWidth2.Maximum) - - HS.LargeChange = PMainIn.Width / gxWidth - If HS.Value > HS.Maximum - HS.LargeChange + 1 Then HS.Value = HS.Maximum - HS.LargeChange + 1 - HSL.LargeChange = PMainInL.Width / gxWidth - If HSL.Value > HSL.Maximum - HSL.LargeChange + 1 Then HSL.Value = HSL.Maximum - HSL.LargeChange + 1 - HSR.LargeChange = PMainInR.Width / gxWidth - If HSR.Value > HSR.Maximum - HSR.LargeChange + 1 Then HSR.Value = HSR.Maximum - HSR.LargeChange + 1 - - RefreshPanelAll() - End Sub - - Private Sub CGWidth2_Scroll(ByVal sender As Object, ByVal e As System.EventArgs) Handles CGWidth2.Scroll - CGWidth.Value = CGWidth2.Value / 4 - End Sub - - Private Sub CGDivide_ValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CGDivide.ValueChanged - gDivide = CGDivide.Value - RefreshPanelAll() - End Sub - Private Sub CGSub_ValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CGSub.ValueChanged - gSub = CGSub.Value - RefreshPanelAll() - End Sub - Private Sub BGSlash_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BGSlash.Click - Dim xd As Integer = Val(InputBox(Strings.Messages.PromptSlashValue, , gSlash)) - If xd = 0 Then Exit Sub - If xd > CGDivide.Maximum Then xd = CGDivide.Maximum - If xd < CGDivide.Minimum Then xd = CGDivide.Minimum - gSlash = xd - End Sub - - - Private Sub CGSnap_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CGSnap.CheckedChanged - gSnap = CGSnap.Checked - RefreshPanelAll() - End Sub - - Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick - Dim xI1 As Integer - - Select Case PanelFocus - Case 0 - With LeftPanelScroll - xI1 = .Value + (tempY / 5) / gxHeight - If xI1 > 0 Then xI1 = 0 - If xI1 < .Minimum Then xI1 = .Minimum - .Value = xI1 - End With - With HSL - xI1 = .Value + (tempX / 10) / gxWidth - If xI1 > .Maximum - .LargeChange + 1 Then xI1 = .Maximum - .LargeChange + 1 - If xI1 < .Minimum Then xI1 = .Minimum - .Value = xI1 - End With - - Case 1 - With MainPanelScroll - xI1 = .Value + (tempY / 5) / gxHeight - If xI1 > 0 Then xI1 = 0 - If xI1 < .Minimum Then xI1 = .Minimum - .Value = xI1 - End With - With HS - xI1 = .Value + (tempX / 10) / gxWidth - If xI1 > .Maximum - .LargeChange + 1 Then xI1 = .Maximum - .LargeChange + 1 - If xI1 < .Minimum Then xI1 = .Minimum - .Value = xI1 - End With - - Case 2 - With RightPanelScroll - xI1 = .Value + (tempY / 5) / gxHeight - If xI1 > 0 Then xI1 = 0 - If xI1 < .Minimum Then xI1 = .Minimum - .Value = xI1 - End With - With HSR - xI1 = .Value + (tempX / 10) / gxWidth - If xI1 > .Maximum - .LargeChange + 1 Then xI1 = .Maximum - .LargeChange + 1 - If xI1 < .Minimum Then xI1 = .Minimum - .Value = xI1 - End With - End Select - - Dim xMEArgs As New System.Windows.Forms.MouseEventArgs(Windows.Forms.MouseButtons.Left, 0, MouseMoveStatus.X, MouseMoveStatus.Y, 0) - PMainInMouseMove(spMain(PanelFocus), xMEArgs) - - End Sub - - Private Sub TimerMiddle_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TimerMiddle.Tick - If Not MiddleButtonClicked Then TimerMiddle.Enabled = False : Return - - Dim xI1 As Integer - - Select Case PanelFocus - Case 0 - With LeftPanelScroll - xI1 = .Value + (Cursor.Position.Y - MiddleButtonLocation.Y) / 5 / gxHeight - If xI1 > 0 Then xI1 = 0 - If xI1 < .Minimum Then xI1 = .Minimum - .Value = xI1 - End With - With HSL - xI1 = .Value + (Cursor.Position.X - MiddleButtonLocation.X) / 5 / gxWidth - If xI1 > .Maximum - .LargeChange + 1 Then xI1 = .Maximum - .LargeChange + 1 - If xI1 < .Minimum Then xI1 = .Minimum - .Value = xI1 - End With - - Case 1 - With MainPanelScroll - xI1 = .Value + (Cursor.Position.Y - MiddleButtonLocation.Y) / 5 / gxHeight - If xI1 > 0 Then xI1 = 0 - If xI1 < .Minimum Then xI1 = .Minimum - .Value = xI1 - End With - With HS - xI1 = .Value + (Cursor.Position.X - MiddleButtonLocation.X) / 5 / gxWidth - If xI1 > .Maximum - .LargeChange + 1 Then xI1 = .Maximum - .LargeChange + 1 - If xI1 < .Minimum Then xI1 = .Minimum - .Value = xI1 - End With - - Case 2 - With RightPanelScroll - xI1 = .Value + (Cursor.Position.Y - MiddleButtonLocation.Y) / 5 / gxHeight - If xI1 > 0 Then xI1 = 0 - If xI1 < .Minimum Then xI1 = .Minimum - .Value = xI1 - End With - With HSR - xI1 = .Value + (Cursor.Position.X - MiddleButtonLocation.X) / 5 / gxWidth - If xI1 > .Maximum - .LargeChange + 1 Then xI1 = .Maximum - .LargeChange + 1 - If xI1 < .Minimum Then xI1 = .Minimum - .Value = xI1 - End With - End Select - - Dim xMEArgs As New System.Windows.Forms.MouseEventArgs(Windows.Forms.MouseButtons.Left, 0, MouseMoveStatus.X, MouseMoveStatus.Y, 0) - PMainInMouseMove(spMain(PanelFocus), xMEArgs) - End Sub - - Private Sub ValidateWavListView() - Try - Dim xRect As Rectangle = LWAV.GetItemRectangle(LWAV.SelectedIndex) - If xRect.Top + xRect.Height > LWAV.DisplayRectangle.Height Then SendMessage(LWAV.Handle, &H115, 1, 0) - Catch ex As Exception - End Try - End Sub - - Private Sub LWAV_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles LWAV.Click - If TBWrite.Checked Then FSW.Text = C10to36(LWAV.SelectedIndex + 1) - - PreviewNote("", True) - If Not PreviewOnClick Then Exit Sub - If hWAV(LWAV.SelectedIndex + 1) = "" Then Exit Sub - - Dim xFileLocation As String = IIf(ExcludeFileName(FileName) = "", InitPath, ExcludeFileName(FileName)) & "\" & hWAV(LWAV.SelectedIndex + 1) - PreviewNote(xFileLocation, False) - End Sub - - Private Sub LWAV_DoubleClick(ByVal sender As Object, ByVal e As System.EventArgs) Handles LWAV.DoubleClick - Dim xDWAV As New OpenFileDialog - xDWAV.DefaultExt = "wav" - xDWAV.Filter = Strings.FileType._wave & "|*.wav;*.ogg;*.mp3|" & - Strings.FileType.WAV & "|*.wav|" & - Strings.FileType.OGG & "|*.ogg|" & - Strings.FileType.MP3 & "|*.mp3|" & - Strings.FileType._all & "|*.*" - xDWAV.InitialDirectory = IIf(ExcludeFileName(FileName) = "", InitPath, ExcludeFileName(FileName)) - - If xDWAV.ShowDialog = Windows.Forms.DialogResult.Cancel Then Exit Sub - InitPath = ExcludeFileName(xDWAV.FileName) - hWAV(LWAV.SelectedIndex + 1) = GetFileName(xDWAV.FileName) - LWAV.Items.Item(LWAV.SelectedIndex) = C10to36(LWAV.SelectedIndex + 1) & ": " & GetFileName(xDWAV.FileName) - If IsSaved Then SetIsSaved(False) - End Sub - - Private Sub LWAV_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles LWAV.KeyDown - Select Case e.KeyCode - Case Keys.Delete - hWAV(LWAV.SelectedIndex + 1) = "" - LWAV.Items.Item(LWAV.SelectedIndex) = C10to36(LWAV.SelectedIndex + 1) & ": " - If IsSaved Then SetIsSaved(False) - End Select - End Sub - - Private Sub TBErrorCheck_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBErrorCheck.Click, mnErrorCheck.Click - ErrorCheck = sender.Checked - TBErrorCheck.Checked = ErrorCheck - mnErrorCheck.Checked = ErrorCheck - TBErrorCheck.Image = IIf(TBErrorCheck.Checked, My.Resources.x16CheckError, My.Resources.x16CheckErrorN) - mnErrorCheck.Image = IIf(TBErrorCheck.Checked, My.Resources.x16CheckError, My.Resources.x16CheckErrorN) - RefreshPanelAll() - End Sub - - Private Sub TBPreviewOnClick_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBPreviewOnClick.Click, mnPreviewOnClick.Click - PreviewNote("", True) - PreviewOnClick = sender.Checked - TBPreviewOnClick.Checked = PreviewOnClick - mnPreviewOnClick.Checked = PreviewOnClick - TBPreviewOnClick.Image = IIf(PreviewOnClick, My.Resources.x16PreviewOnClick, My.Resources.x16PreviewOnClickN) - mnPreviewOnClick.Image = IIf(PreviewOnClick, My.Resources.x16PreviewOnClick, My.Resources.x16PreviewOnClickN) - End Sub - - 'Private Sub TBPreviewErrorCheck_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) - ' PreviewErrorCheck = TBPreviewErrorCheck.Checked - ' TBPreviewErrorCheck.Image = IIf(PreviewErrorCheck, My.Resources.x16PreviewCheck, My.Resources.x16PreviewCheckN) - 'End Sub - - Private Sub TBShowFileName_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBShowFileName.Click, mnShowFileName.Click - ShowFileName = sender.Checked - TBShowFileName.Checked = ShowFileName - mnShowFileName.Checked = ShowFileName - TBShowFileName.Image = IIf(ShowFileName, My.Resources.x16ShowFileName, My.Resources.x16ShowFileNameN) - mnShowFileName.Image = IIf(ShowFileName, My.Resources.x16ShowFileName, My.Resources.x16ShowFileNameN) - RefreshPanelAll() - End Sub - - Private Sub TBCut_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBCut.Click, mnCut.Click - Dim xUndo As UndoRedo.LinkedURCmd = Nothing - Dim xRedo As UndoRedo.LinkedURCmd = New UndoRedo.Void - Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo - Me.RedoRemoveNoteSelected(True, xUndo, xRedo) - 'Dim xRedo As String = sCmdKDs() - 'Dim xUndo As String = sCmdKs(True) - - CopyNotes(False) - RemoveNotes(False) - AddUndo(xUndo, xBaseRedo.Next) - - SortByVPositionInsertion() - UpdatePairing() - CalculateTotalPlayableNotes() - RefreshPanelAll() - POStatusRefresh() - CalculateGreatestVPosition() - End Sub - - Private Sub TBCopy_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBCopy.Click, mnCopy.Click - CopyNotes() - RefreshPanelAll() - POStatusRefresh() - End Sub - - Private Sub TBPaste_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBPaste.Click, mnPaste.Click - AddNotesFromClipboard() - - Dim xUndo As UndoRedo.LinkedURCmd = Nothing - Dim xRedo As UndoRedo.LinkedURCmd = New UndoRedo.Void - Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo - Me.RedoAddNoteSelected(True, xUndo, xRedo) - AddUndo(xUndo, xBaseRedo.Next) - - 'AddUndo(sCmdKDs(), sCmdKs(True)) - - SortByVPositionInsertion() - UpdatePairing() - CalculateTotalPlayableNotes() - RefreshPanelAll() - POStatusRefresh() - CalculateGreatestVPosition() - End Sub - - 'Private Function pArgPath(ByVal I As Integer) - ' Return Mid(pArgs(I), 1, InStr(pArgs(I), vbCrLf) - 1) - 'End Function - - Private Function GetFileName(ByVal s As String) As String - Dim fslash As Integer = InStrRev(s, "/") - Dim bslash As Integer = InStrRev(s, "\") - Return Mid(s, IIf(fslash > bslash, fslash, bslash) + 1) - End Function - - Private Function ExcludeFileName(ByVal s As String) As String - Dim fslash As Integer = InStrRev(s, "/") - Dim bslash As Integer = InStrRev(s, "\") - If (bslash Or fslash) = 0 Then Return "" - Return Mid(s, 1, IIf(fslash > bslash, fslash, bslash) - 1) - End Function - - Private Sub PlayerMissingPrompt() - Dim xArg As MainWindow.PlayerArguments = pArgs(CurrentPlayer) - MsgBox(Strings.Messages.CannotFind.Replace("{}", PrevCodeToReal(xArg.Path)) & vbCrLf & - Strings.Messages.PleaseRespecifyPath, MsgBoxStyle.Critical, Strings.Messages.PlayerNotFound) - - Dim xDOpen As New OpenFileDialog - xDOpen.InitialDirectory = IIf(ExcludeFileName(PrevCodeToReal(xArg.Path)) = "", - My.Application.Info.DirectoryPath, - ExcludeFileName(PrevCodeToReal(xArg.Path))) - xDOpen.FileName = PrevCodeToReal(xArg.Path) - xDOpen.Filter = Strings.FileType.EXE & "|*.exe" - xDOpen.DefaultExt = "exe" - If xDOpen.ShowDialog = Windows.Forms.DialogResult.Cancel Then Exit Sub - - 'pArgs(CurrentPlayer) = Replace(xDOpen.FileName, My.Application.Info.DirectoryPath, "") & _ - ' Mid(pArgs(CurrentPlayer), InStr(pArgs(CurrentPlayer), vbCrLf)) - 'xStr = Split(pArgs(CurrentPlayer), vbCrLf) - pArgs(CurrentPlayer).Path = Replace(xDOpen.FileName, My.Application.Info.DirectoryPath, "") - xArg = pArgs(CurrentPlayer) - End Sub - - Private Sub TBPlay_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBPlay.Click, mnPlay.Click - 'Dim xStr() As String = Split(pArgs(CurrentPlayer), vbCrLf) - Dim xArg As MainWindow.PlayerArguments = pArgs(CurrentPlayer) - - If Not File.Exists(PrevCodeToReal(xArg.Path)) Then - PlayerMissingPrompt() - xArg = pArgs(CurrentPlayer) - End If - - ' az: Treat it like we cancelled the operation - If Not File.Exists(PrevCodeToReal(xArg.Path)) Then - Exit Sub - End If - - Dim xStrAll As String = SaveBMS() - Dim xFileName As String = IIf(Not PathIsValid(FileName), - IIf(InitPath = "", My.Application.Info.DirectoryPath, InitPath), - ExcludeFileName(FileName)) & "\___TempBMS.bms" - My.Computer.FileSystem.WriteAllText(xFileName, xStrAll, False, TextEncoding) - - AddTempFileList(xFileName) - System.Diagnostics.Process.Start(PrevCodeToReal(xArg.Path), PrevCodeToReal(xArg.aHere)) - End Sub - - Private Sub TBPlayB_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBPlayB.Click, mnPlayB.Click - 'Dim xStr() As String = Split(pArgs(CurrentPlayer), vbCrLf) - Dim xArg As MainWindow.PlayerArguments = pArgs(CurrentPlayer) - - If Not File.Exists(PrevCodeToReal(xArg.Path)) Then - PlayerMissingPrompt() - xArg = pArgs(CurrentPlayer) - End If - - If Not File.Exists(PrevCodeToReal(xArg.Path)) Then - Exit Sub - End If - - Dim xStrAll As String = SaveBMS() - Dim xFileName As String = IIf(Not PathIsValid(FileName), - IIf(InitPath = "", My.Application.Info.DirectoryPath, InitPath), - ExcludeFileName(FileName)) & "\___TempBMS.bms" - My.Computer.FileSystem.WriteAllText(xFileName, xStrAll, False, TextEncoding) - - AddTempFileList(xFileName) - - System.Diagnostics.Process.Start(PrevCodeToReal(xArg.Path), PrevCodeToReal(xArg.aBegin)) - End Sub - - Private Sub TBStop_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBStop.Click, mnStop.Click - 'Dim xStr() As String = Split(pArgs(CurrentPlayer), vbCrLf) - Dim xArg As MainWindow.PlayerArguments = pArgs(CurrentPlayer) - - If Not File.Exists(PrevCodeToReal(xArg.Path)) Then - PlayerMissingPrompt() - xArg = pArgs(CurrentPlayer) - End If - - If Not File.Exists(PrevCodeToReal(xArg.Path)) Then - Exit Sub - End If - - System.Diagnostics.Process.Start(PrevCodeToReal(xArg.Path), PrevCodeToReal(xArg.aStop)) - End Sub - - Private Sub AddTempFileList(ByVal s As String) - Dim xAdd As Boolean = True - If pTempFileNames IsNot Nothing Then - For Each xStr1 As String In pTempFileNames - If xStr1 = s Then xAdd = False : Exit For - Next - End If - - If xAdd Then - ReDim Preserve pTempFileNames(UBound(pTempFileNames) + 1) - pTempFileNames(UBound(pTempFileNames)) = s - End If - End Sub - - Private Sub TBStatistics_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBStatistics.Click, mnStatistics.Click - SortByVPositionInsertion() - UpdatePairing() - - Dim data(6, 5) As Integer - For i As Integer = 1 To UBound(Notes) - With Notes(i) - Dim row As Integer = -1 - Select Case .ColumnIndex - Case niSCROLL : row = 0 - Case niBPM : row = 1 - Case niSTOP : row = 2 - Case niA1, niA2, niA3, niA4, niA5, niA6, niA7, niA8 : row = 3 - Case niD1, niD2, niD3, niD4, niD5, niD6, niD7, niD8 : row = 4 - Case Is >= niB : row = 5 - Case Else : row = 6 - End Select - - -StartCount: If Not NTInput Then - If Not .LongNote Then data(row, 0) += 1 - If .LongNote Then data(row, 1) += 1 - If .Value \ 10000 = LnObj Then data(row, 2) += 1 - If .Hidden Then data(row, 3) += 1 - If .HasError Then data(row, 4) += 1 - data(row, 5) += 1 - - Else - Dim noteUnit As Integer = 1 - If .Length = 0 Then data(row, 0) += 1 - If .Length <> 0 Then data(row, 1) += 2 : noteUnit = 2 - - If .Value \ 10000 = LnObj Then data(row, 2) += noteUnit - If .Hidden Then data(row, 3) += noteUnit - If .HasError Then data(row, 4) += noteUnit - data(row, 5) += noteUnit - - End If - - If row <> 6 Then row = 6 : GoTo StartCount - End With - Next - - Dim dStat As New dgStatistics(data) - dStat.ShowDialog() - End Sub - - ''' - ''' Remark: Pls sort and updatepairing before this process. - ''' - - Private Sub CalculateTotalPlayableNotes() - Dim xI1 As Integer - Dim xIAll As Integer = 0 - - If Not NTInput Then - For xI1 = 1 To UBound(Notes) - If Notes(xI1).ColumnIndex >= niA1 And Notes(xI1).ColumnIndex <= niA8 Then xIAll += 1 - Next - - Else - For xI1 = 1 To UBound(Notes) - If Notes(xI1).ColumnIndex >= niA1 And Notes(xI1).ColumnIndex <= niA8 Then - xIAll += 1 - If Notes(xI1).Length <> 0 Then xIAll += 1 - End If - Next - End If - - TBStatistics.Text = xIAll - End Sub - - Public Function GetMouseVPosition(Optional snap As Boolean = True) - Dim panHeight = spMain(PanelFocus).Height - Dim panDisplacement = PanelVScroll(PanelFocus) - Dim vpos = (panHeight - panDisplacement * gxHeight - MouseMoveStatus.Y - 1) / gxHeight - If snap Then - Return SnapToGrid(vpos) - Else - Return vpos - End If - End Function - - Private Sub POStatusRefresh() - - If TBSelect.Checked Then - Dim xI1 As Integer = KMouseOver - If xI1 < 0 Then - - TempVPosition = GetMouseVPosition(gSnap) - - SelectedColumn = GetColumnAtX(MouseMoveStatus.X, PanelHScroll(PanelFocus)) - - Dim xMeasure As Integer = MeasureAtDisplacement(TempVPosition) - Dim xMLength As Double = MeasureLength(xMeasure) - Dim xVposMod As Double = TempVPosition - MeasureBottom(xMeasure) - Dim xGCD As Double = GCD(IIf(xVposMod = 0, xMLength, xVposMod), xMLength) - - FSP1.Text = (xVposMod * gDivide / 192).ToString & " / " & (xMLength * gDivide / 192).ToString & " " - FSP2.Text = xVposMod.ToString & " / " & xMLength & " " - FSP3.Text = CInt(xVposMod / xGCD).ToString & " / " & CInt(xMLength / xGCD).ToString & " " - FSP4.Text = TempVPosition.ToString() & " " - TimeStatusLabel.Text = GetTimeFromVPosition(TempVPosition).ToString("F4") - FSC.Text = nTitle(SelectedColumn) - FSW.Text = "" - FSM.Text = Add3Zeros(xMeasure) - FST.Text = "" - FSH.Text = "" - FSE.Text = "" - - Else - Dim xMeasure As Integer = MeasureAtDisplacement(Notes(xI1).VPosition) - Dim xMLength As Double = MeasureLength(xMeasure) - Dim xVposMod As Double = Notes(xI1).VPosition - MeasureBottom(xMeasure) - Dim xGCD As Double = GCD(IIf(xVposMod = 0, xMLength, xVposMod), xMLength) - - FSP1.Text = (xVposMod * gDivide / 192).ToString & " / " & (xMLength * gDivide / 192).ToString & " " - FSP2.Text = xVposMod.ToString & " / " & xMLength & " " - FSP3.Text = CInt(xVposMod / xGCD).ToString & " / " & CInt(xMLength / xGCD).ToString & " " - FSP4.Text = Notes(xI1).VPosition.ToString() & " " - TimeStatusLabel.Text = GetTimeFromVPosition(TempVPosition).ToString("F4") - FSC.Text = nTitle(Notes(xI1).ColumnIndex) - FSW.Text = IIf(IsColumnNumeric(Notes(xI1).ColumnIndex), - Notes(xI1).Value / 10000, - C10to36(Notes(xI1).Value \ 10000)) - FSM.Text = Add3Zeros(xMeasure) - FST.Text = IIf(NTInput, Strings.StatusBar.Length & " = " & Notes(xI1).Length, IIf(Notes(xI1).LongNote, Strings.StatusBar.LongNote, "")) - FSH.Text = IIf(Notes(xI1).Hidden, Strings.StatusBar.Hidden, "") - FSE.Text = IIf(Notes(xI1).HasError, Strings.StatusBar.Err, "") - - End If - - ElseIf TBWrite.Checked Then - If SelectedColumn < 0 Then Exit Sub - - Dim xMeasure As Integer = MeasureAtDisplacement(TempVPosition) - Dim xMLength As Double = MeasureLength(xMeasure) - Dim xVposMod As Double = TempVPosition - MeasureBottom(xMeasure) - Dim xGCD As Double = GCD(IIf(xVposMod = 0, xMLength, xVposMod), xMLength) - - FSP1.Text = (xVposMod * gDivide / 192).ToString & " / " & (xMLength * gDivide / 192).ToString & " " - FSP2.Text = xVposMod.ToString & " / " & xMLength & " " - FSP3.Text = CInt(xVposMod / xGCD).ToString & " / " & CInt(xMLength / xGCD).ToString & " " - FSP4.Text = TempVPosition.ToString() & " " - TimeStatusLabel.Text = GetTimeFromVPosition(TempVPosition).ToString("F4") - FSC.Text = nTitle(SelectedColumn) - FSW.Text = C10to36(LWAV.SelectedIndex + 1) - FSM.Text = Add3Zeros(xMeasure) - FST.Text = IIf(NTInput, TempLength, IIf(My.Computer.Keyboard.ShiftKeyDown, Strings.StatusBar.LongNote, "")) - FSH.Text = IIf(My.Computer.Keyboard.CtrlKeyDown, Strings.StatusBar.Hidden, "") - - ElseIf TBTimeSelect.Checked Then - FSSS.Text = vSelStart - FSSL.Text = vSelLength - FSSH.Text = vSelHalf - - End If - FStatus.Invalidate() - End Sub - - Private Function GetTimeFromVPosition(vpos As Double) As Double - Dim timing_notes = (From note In Notes - Where note.ColumnIndex = niBPM Or note.ColumnIndex = niSTOP - Group By Column = note.ColumnIndex - Into NoteGroups = Group).ToDictionary(Function(x) x.Column, Function(x) x.NoteGroups) - - Dim bpm_notes = timing_notes.Item(niBPM) - - Dim stop_notes As IEnumerable(Of Note) = Nothing - - If timing_notes.ContainsKey(niSTOP) Then - stop_notes = timing_notes.Item(niSTOP) - End If - - - Dim stop_contrib As Double - Dim bpm_contrib As Double - - For i = 0 To bpm_notes.Count() - 1 - ' az: sum bpm contribution first - Dim duration = 0.0 - Dim current_note = bpm_notes.ElementAt(i) - Dim notevpos = Math.Max(0, current_note.VPosition) - - If i + 1 <> bpm_notes.Count() Then - Dim next_note = bpm_notes.ElementAt(i + 1) - duration = next_note.VPosition - notevpos - Else - duration = vpos - notevpos - End If - - Dim current_bps = 60 / (current_note.Value / 10000) - bpm_contrib += current_bps * duration / 48 - - If stop_notes Is Nothing Then Continue For - - Dim stops = From stp In stop_notes - Where stp.VPosition >= notevpos And - stp.VPosition < notevpos + duration - - Dim stop_beats = stops.Sum(Function(x) x.Value / 10000.0) / 48 - stop_contrib += current_bps * stop_beats - - Next - - Return stop_contrib + bpm_contrib - End Function - - Private Sub POBStorm_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles POBStorm.Click - - End Sub - - Private Sub POBMirror_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles POBMirror.Click - Dim xI1 As Integer - Dim xI2 As Integer - Dim xUndo As UndoRedo.LinkedURCmd = Nothing - Dim xRedo As UndoRedo.LinkedURCmd = New UndoRedo.Void - Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo - 'xRedo &= sCmdKM(niA1, .VPosition, .Value, IIf(NTInput, .Length, .LongNote), .Hidden, RealColumnToEnabled(niA7) - RealColumnToEnabled(niA1), 0, True) & vbCrLf - 'xUndo &= sCmdKM(niA7, .VPosition, .Value, IIf(NTInput, .Length, .LongNote), .Hidden, RealColumnToEnabled(niA1) - RealColumnToEnabled(niA7), 0, True) & vbCrLf - - Dim xniArray0 = New Integer() {niA1, niA2, niA3, niA4, niA5, niA6, niA7, niA8, niD1, niD2, niD3, niD4, niD5, niD6, niD7, niD8} - ' Dim xniArray1 = Integer() ' xniArray0 - - ' New function: Declare an array to see the range of selected notes. B columns ignored. - - Dim xRangeL As Integer = niB ' Big number +Imports System.Linq +Imports iBMSC.Editor + + +Public Class MainWindow + + + 'Public Structure MARGINS + ' Public Left As Integer + ' Public Right As Integer + ' Public Top As Integer + ' Public Bottom As Integer + 'End Structure + + ' _ + 'Public Shared Function DwmIsCompositionEnabled(ByRef en As Integer) As Integer + 'End Function + ' _ + 'Public Shared Function DwmExtendFrameIntoClientArea(ByVal hwnd As IntPtr, ByRef margin As MARGINS) As Integer + 'End Function + Public Declare Function SendMessage Lib "user32.dll" Alias "SendMessageA" (ByVal hwnd As IntPtr, ByVal wMsg As Integer, ByVal wParam As Integer, ByVal lParam As Integer) As Integer + Public Declare Function ReleaseCapture Lib "user32.dll" Alias "ReleaseCapture" () As Integer + + 'Private Declare Auto Function GetWindowLong Lib "user32" (ByVal hWnd As IntPtr, ByVal nIndex As Integer) As Integer + 'Private Declare Auto Function SetWindowLong Lib "user32" (ByVal hWnd As IntPtr, ByVal nIndex As Integer, ByVal dwNewLong As Integer) As Integer + 'Private Declare Function SetWindowPos Lib "user32.dll" (ByVal hWnd As IntPtr, ByVal hWndInsertAfter As IntPtr, ByVal x As Integer, ByVal y As Integer, ByVal cx As Integer, ByVal cy As Integer, ByVal wFlags As Integer) As Integer + ' _ + 'Private Shared Function SetWindowText(ByVal hwnd As IntPtr, ByVal lpString As String) As Boolean + 'End Function + + 'Private Const GWL_STYLE As Integer = -16 + 'Private Const WS_CAPTION As Integer = &HC00000 + 'Private Const SWP_NOSIZE As Integer = &H1 + 'Private Const SWP_NOMOVE As Integer = &H2 + 'Private Const SWP_NOZORDER As Integer = &H4 + 'Private Const SWP_NOACTIVATE As Integer = &H10 + 'Private Const SWP_FRAMECHANGED As Integer = &H20 + 'Private Const SWP_REFRESH As Integer = SWP_NOZORDER Or SWP_NOSIZE Or SWP_NOMOVE Or SWP_NOACTIVATE Or SWP_FRAMECHANGED + + + Dim MeasureLength(999) As Double + Dim MeasureBottom(999) As Double + + Public Function MeasureUpper(idx As Integer) As Double + Return MeasureBottom(idx) + MeasureLength(idx) + End Function + + + Dim Notes() As Note = {New Note(niBPM, -1, 1200000, 0, False)} + Dim mColumn(999) As Integer '0 = no column, 1 = 1 column, etc. + Dim GreatestVPosition As Double '+ 2000 = -VS.Minimum + + Dim VSValue As Integer = 0 'Store value before ValueChange event + Dim HSValue As Integer = 0 'Store value before ValueChange event + + 'Dim SortingMethod As Integer = 1 + Dim MiddleButtonMoveMethod As Integer = 0 + Dim TextEncoding As System.Text.Encoding = System.Text.Encoding.UTF8 + Dim DispLang As String = "" 'Display Language + Dim Recent() As String = {"", "", "", "", ""} + Dim NTInput As Boolean = True + Dim ShowFileName As Boolean = False + + Dim BeepWhileSaved As Boolean = True + Dim BPMx1296 As Boolean = False + Dim STOPx1296 As Boolean = False + + Dim IsInitializing As Boolean = True + Dim FirstMouseEnter As Boolean = True + + Dim WAVMultiSelect As Boolean = True + Dim WAVChangeLabel As Boolean = True + Dim BeatChangeMode As Integer = 0 + + 'Dim FloatTolerance As Double = 0.0001R + Dim BMSGridLimit As Double = 1.0R + + Dim LnObj As Integer = 0 '0 for none, 1-1295 for 01-ZZ + + 'IO + Dim FileName As String = "Untitled.bms" + 'Dim TitlePath As New Drawing2D.GraphicsPath + Dim InitPath As String = "" + Dim IsSaved As Boolean = True + + 'Variables for Drag/Drop + Dim DDFileName() As String = {} + Dim SupportedFileExtension() As String = {".bms", ".bme", ".bml", ".pms", ".txt", ".sm", ".ibmsc"} + Dim SupportedAudioExtension() As String = {".wav", ".mp3", ".ogg"} + + 'Variables for theme + 'Dim SaveTheme As Boolean = True + + 'Variables for undo/redo + Dim sUndo(99) As UndoRedo.LinkedURCmd + Dim sRedo(99) As UndoRedo.LinkedURCmd + Dim sI As Integer = 0 + + 'Variables for select tool + Dim DisableVerticalMove As Boolean = False + Dim KMouseOver As Integer = -1 'Mouse is on which note (for drawing green outline) + Dim LastMouseDownLocation As PointF = New Point(-1, -1) 'Mouse is clicked on which point (location for display) (for selection box) + Dim pMouseMove As PointF = New Point(-1, -1) 'Mouse is moved to which point (location for display) (for selection box) + 'Dim KMouseDown As Integer = -1 'Mouse is clicked on which note (for moving) + Dim deltaVPosition As Double = 0 'difference between mouse and VPosition of K + Dim bAdjustLength As Boolean 'If adjusting note length instead of moving it + Dim bAdjustUpper As Boolean 'true = Adjusting upper end, false = adjusting lower end + Dim bAdjustSingle As Boolean 'true if there is only one note to be adjusted + Dim tempY As Integer + Dim tempV As Integer + Dim tempX As Integer + Dim tempH As Integer + Dim MiddleButtonLocation As New Point(0, 0) + Dim MiddleButtonClicked As Boolean = False + Dim MouseMoveStatus As Point = New Point(0, 0) 'mouse is moved to which point (For Status Panel) + 'Dim uCol As Integer 'temp variables for undo, original enabled columnindex + 'Dim uVPos As Double 'temp variables for undo, original vposition + 'Dim uPairWithI As Double 'temp variables for undo, original note length + Dim uAdded As Boolean 'temp variables for undo, if undo command is added + 'Dim uNote As Note 'temp variables for undo, original note + Dim SelectedNotes(-1) As Note 'temp notes for undo + Dim ctrlPressed As Boolean = False 'Indicates if the CTRL key is pressed while mousedown + Dim DuplicatedSelectedNotes As Boolean = False 'Indicates if duplicate notes of select/unselect note + + 'Variables for write tool + Dim ShouldDrawTempNote As Boolean = False + Dim SelectedColumn As Integer = -1 + Dim TempVPosition As Double = -1.0# + Dim TempLength As Double = 0.0# + + 'Variables for post effects tool + Dim vSelStart As Double = 192.0# + Dim vSelLength As Double = 0.0# + Dim vSelHalf As Double = 0.0# + Dim vSelMouseOverLine As Integer = 0 '0 = nothing, 1 = start, 2 = half, 3 = end + Dim vSelAdjust As Boolean = False + Dim vSelK() As Note = {} + Dim vSelPStart As Double = 192.0# + Dim vSelPLength As Double = 0.0# + Dim vSelPHalf As Double = 0.0# + + 'Variables for Full-Screen Mode + Dim isFullScreen As Boolean = False + Dim previousWindowState As FormWindowState = FormWindowState.Normal + Dim previousWindowPosition As New Rectangle(0, 0, 0, 0) + + 'Variables misc + Dim menuVPosition As Double = 0.0# + Dim tempResize As Integer = 0 + + '----AutoSave Options + Dim PreviousAutoSavedFileName As String = "" + Dim AutoSaveInterval As Integer = 120000 + + '----ErrorCheck Options + Dim ErrorCheck As Boolean = True + + '----Header Options + Dim hWAV(1295) As String + Dim hBPM(1295) As Long 'x10000 + Dim hSTOP(1295) As Long + Dim hSCROLL(1295) As Long + + '----Grid Options + Dim gSnap As Boolean = True + Dim gShowGrid As Boolean = True 'Grid + Dim gShowSubGrid As Boolean = True 'Sub + Dim gShowBG As Boolean = True 'BG Color + Dim gShowMeasureNumber As Boolean = True 'Measure Label + Dim gShowVerticalLine As Boolean = True 'Vertical + Dim gShowMeasureBar As Boolean = True 'Measure Barline + Dim gShowC As Boolean = True 'Column Caption + Dim gDivide As Integer = 16 + Dim gSub As Integer = 4 + Dim gSlash As Integer = 192 + Dim gxHeight As Single = 1.0! + Dim gxWidth As Single = 1.0! + Dim gWheel As Integer = 96 + Dim gPgUpDn As Integer = 384 + + Dim gDisplayBGAColumn As Boolean = True + Dim gSCROLL As Boolean = True + Dim gSTOP As Boolean = True + Dim gBPM As Boolean = True + 'Dim gA8 As Boolean = False + Dim iPlayer As Integer = 0 + Dim gColumns As Integer = 46 + + '----Visual Options + Dim vo As New visualSettings() + + Public Sub setVO(ByVal xvo As visualSettings) + vo = xvo + End Sub + + '----Preview Options + Structure PlayerArguments + Public Path As String + Public aBegin As String + Public aHere As String + Public aStop As String + Public Sub New(ByVal xPath As String, ByVal xBegin As String, ByVal xHere As String, ByVal xStop As String) + Path = xPath + aBegin = xBegin + aHere = xHere + aStop = xStop + End Sub + End Structure + + Public pArgs() As PlayerArguments = {New PlayerArguments("\uBMplay.exe", + "-P -N0 """"", + "-P -N """"", + "-S"), + New PlayerArguments("\o2play.exe", + "-P -N0 """"", + "-P -N """"", + "-S")} + Public CurrentPlayer As Integer = 0 + Dim PreviewOnClick As Boolean = True + Dim PreviewErrorCheck As Boolean = False + Dim ClickStopPreview As Boolean = True + Dim pTempFileNames() As String = {} + + '----Split Panel Options + Dim PanelWidth() As Single = {0, 100, 0} + Dim PanelHScroll() As Integer = {0, 0, 0} + Dim PanelVScroll() As Integer = {0, 0, 0} + Dim spLock() As Boolean = {False, False, False} + Dim spDiff() As Integer = {0, 0, 0} + Dim PanelFocus As Integer = 1 '0 = Left, 1 = Middle, 2 = Right + Dim spMouseOver As Integer = 1 + + Dim AutoFocusMouseEnter As Boolean = False + Dim FirstClickDisabled As Boolean = True + Dim tempFirstMouseDown As Boolean = False + + Dim spMain() As Panel = {} + + '----Find Delete Replace Options + Dim fdriMesL As Integer + Dim fdriMesU As Integer + Dim fdriLblL As Integer + Dim fdriLblU As Integer + Dim fdriValL As Integer + Dim fdriValU As Integer + Dim fdriCol() As Integer + + + Public Sub New() + InitializeComponent() + Audio.Initialize() + End Sub + + ''' + ''' + ''' + ''' Original horizontal position. + ''' HS.Value + + + Private Function HorizontalPositiontoDisplay(ByVal xHPosition As Integer, ByVal xHSVal As Long) As Integer + Return CInt(xHPosition * gxWidth - xHSVal * gxWidth) + End Function + + ''' + ''' + ''' + ''' Original vertical position. + ''' VS.Value + ''' Height of the panel. (DisplayRectangle, but not ClipRectangle) + + + Private Function NoteRowToPanelHeight(ByVal xVPosition As Double, ByVal xVSVal As Long, ByVal xTHeight As Integer) As Integer + Return xTHeight - CInt((xVPosition + xVSVal) * gxHeight) - 1 + End Function + + Public Function MeasureAtDisplacement(ByVal xVPos As Double) As Integer + 'Return Math.Floor((xVPos + FloatTolerance) / 192) + 'Return Math.Floor(xVPos / 192) + Dim xI1 As Integer + For xI1 = 1 To 999 + If xVPos < MeasureBottom(xI1) Then Exit For + Next + Return xI1 - 1 + End Function + + Private Function GetMaxVPosition() As Double + Return MeasureUpper(999) + End Function + + Private Function SnapToGrid(ByVal xVPos As Double) As Double + Dim xOffset As Double = MeasureBottom(MeasureAtDisplacement(xVPos)) + Dim xRatio As Double = 192.0R / gDivide + Return Math.Floor((xVPos - xOffset) / xRatio) * xRatio + xOffset + End Function + + Private Sub CalculateGreatestVPosition() + 'If K Is Nothing Then Exit Sub + Dim xI1 As Integer + GreatestVPosition = 0 + + If NTInput Then + For xI1 = UBound(Notes) To 0 Step -1 + If Notes(xI1).VPosition + Notes(xI1).Length > GreatestVPosition Then GreatestVPosition = Notes(xI1).VPosition + Notes(xI1).Length + Next + Else + For xI1 = UBound(Notes) To 0 Step -1 + If Notes(xI1).VPosition > GreatestVPosition Then GreatestVPosition = Notes(xI1).VPosition + Next + End If + + Dim xI2 As Integer = -CInt(IIf(GreatestVPosition + 2000 > GetMaxVPosition(), GetMaxVPosition, GreatestVPosition + 2000)) + MainPanelScroll.Minimum = xI2 + LeftPanelScroll.Minimum = xI2 + RightPanelScroll.Minimum = xI2 + End Sub + + + Private Sub SortByVPositionInsertion() 'Insertion Sort + If UBound(Notes) <= 0 Then Exit Sub + Dim xNote As Note + Dim xI1 As Integer + Dim xI2 As Integer + For xI1 = 2 To UBound(Notes) + xNote = Notes(xI1) + For xI2 = xI1 - 1 To 1 Step -1 + If Notes(xI2).VPosition > xNote.VPosition Then + Notes(xI2 + 1) = Notes(xI2) + ' If KMouseDown = xI2 Then KMouseDown += 1 + If xI2 = 1 Then + Notes(xI2) = xNote + ' If KMouseDown = xI1 Then KMouseDown = xI2 + Exit For + End If + Else + Notes(xI2 + 1) = xNote + ' If KMouseDown = xI1 Then KMouseDown = xI2 + 1 + Exit For + End If + Next + Next + + End Sub + + Private Sub SortByVPositionQuick(ByVal xMin As Integer, ByVal xMax As Integer) 'Quick Sort + Dim xNote As Note + Dim iHi As Integer + Dim iLo As Integer + Dim xI1 As Integer + + ' If min >= max, the list contains 0 or 1 items so it is sorted. + If xMin >= xMax Then Exit Sub + + ' Pick the dividing value. + xI1 = CInt((xMax - xMin) / 2) + xMin + xNote = Notes(xI1) + + ' Swap it to the front. + Notes(xI1) = Notes(xMin) + + iLo = xMin + iHi = xMax + Do + ' Look down from hi for a value < med_value. + Do While Notes(iHi).VPosition >= xNote.VPosition + iHi = iHi - 1 + If iHi <= iLo Then Exit Do + Loop + If iHi <= iLo Then + Notes(iLo) = xNote + Exit Do + End If + + ' Swap the lo and hi values. + Notes(iLo) = Notes(iHi) + + ' Look up from lo for a value >= med_value. + iLo = iLo + 1 + Do While Notes(iLo).VPosition < xNote.VPosition + iLo = iLo + 1 + If iLo >= iHi Then Exit Do + Loop + If iLo >= iHi Then + iLo = iHi + Notes(iHi) = xNote + Exit Do + End If + + ' Swap the lo and hi values. + Notes(iHi) = Notes(iLo) + Loop + + ' Sort the two sublists. + SortByVPositionQuick(xMin, iLo - 1) + SortByVPositionQuick(iLo + 1, xMax) + End Sub + + Private Sub SortByVPositionQuick3(ByVal xMin As Integer, ByVal xMax As Integer) + Dim xxMin As Integer + Dim xxMax As Integer + Dim xxMid As Integer + Dim xNote As Note + Dim xNoteMid As Note + Dim xI1 As Integer + Dim xI2 As Integer + Dim xI3 As Integer + + 'If xMax = 0 Then + ' xMin = LBound(K1) + ' xMax = UBound(K1) + 'End If + xxMin = xMin + xxMax = xMax + xxMid = xMax - xMin + 1 + xI1 = CInt(Int(xxMid * Rnd())) + xMin + xI2 = CInt(Int(xxMid * Rnd())) + xMin + xI3 = CInt(Int(xxMid * Rnd())) + xMin + If Notes(xI1).VPosition <= Notes(xI2).VPosition And Notes(xI2).VPosition <= Notes(xI3).VPosition Then + xxMid = xI2 + Else + If Notes(xI2).VPosition <= Notes(xI1).VPosition And Notes(xI1).VPosition <= Notes(xI3).VPosition Then + xxMid = xI1 + Else + xxMid = xI3 + End If + End If + xNoteMid = Notes(xxMid) + Do + Do While Notes(xxMin).VPosition < xNoteMid.VPosition And xxMin < xMax + xxMin = xxMin + 1 + Loop + Do While xNoteMid.VPosition < Notes(xxMax).VPosition And xxMax > xMin + xxMax = xxMax - 1 + Loop + If xxMin <= xxMax Then + xNote = Notes(xxMin) + Notes(xxMin) = Notes(xxMax) + Notes(xxMax) = xNote + xxMin = xxMin + 1 + xxMax = xxMax - 1 + End If + Loop Until xxMin > xxMax + If xxMax - xMin < xMax - xxMin Then + If xMin < xxMax Then SortByVPositionQuick3(xMin, xxMax) + If xxMin < xMax Then SortByVPositionQuick3(xxMin, xMax) + Else + If xxMin < xMax Then SortByVPositionQuick3(xxMin, xMax) + If xMin < xxMax Then SortByVPositionQuick3(xMin, xxMax) + End If + End Sub + + + Private Sub UpdateMeasureBottom() + MeasureBottom(0) = 0.0# + For xI1 As Integer = 0 To 998 + MeasureBottom(xI1 + 1) = MeasureBottom(xI1) + MeasureLength(xI1) + Next + End Sub + + Private Function PathIsValid(ByVal sPath As String) As Boolean + Return File.Exists(sPath) Or Directory.Exists(sPath) + End Function + + Public Function PrevCodeToReal(ByVal InitStr As String) As String + Dim xFileName As String = IIf(Not PathIsValid(FileName), + IIf(InitPath = "", My.Application.Info.DirectoryPath, InitPath), + ExcludeFileName(FileName)) _ + & "\___TempBMS.bms" + Dim xMeasure As Integer = MeasureAtDisplacement(Math.Abs(PanelVScroll(PanelFocus))) + Dim xS1 As String = Replace(InitStr, "", My.Application.Info.DirectoryPath) + Dim xS2 As String = Replace(xS1, "", xMeasure) + Dim xS3 As String = Replace(xS2, "", xFileName) + Return xS3 + End Function + + Private Sub SetFileName(ByVal xFileName As String) + FileName = xFileName.Trim + InitPath = ExcludeFileName(FileName) + SetIsSaved(IsSaved) + End Sub + + Private Sub SetIsSaved(ByVal isSaved As Boolean) + 'pttl.Refresh() + 'pIsSaved.Visible = Not xBool + Dim xVersion As String = My.Application.Info.Version.Major & "." & My.Application.Info.Version.Minor & + IIf(My.Application.Info.Version.Build = 0, "", "." & My.Application.Info.Version.Build) + Text = IIf(isSaved, "", "*") & GetFileName(FileName) & " - " & My.Application.Info.Title & " " & xVersion + Me.IsSaved = isSaved + End Sub + + Private Sub PreviewNote(ByVal xFileLocation As String, ByVal bStop As Boolean) + If bStop Then + Audio.StopPlaying() + End If + Audio.Play(xFileLocation) + End Sub + + Private Sub AddNote(note As Note, + Optional ByVal xSelected As Boolean = False, + Optional ByVal OverWrite As Boolean = True, + Optional ByVal SortAndUpdatePairing As Boolean = True) + + If note.VPosition < 0 Or note.VPosition >= GetMaxVPosition() Then Exit Sub + + Dim xI1 As Integer = 1 + + If OverWrite Then + Do While xI1 <= UBound(Notes) + If Notes(xI1).VPosition = note.VPosition And + Notes(xI1).ColumnIndex = note.ColumnIndex Then + RemoveNote(xI1) + Else + xI1 += 1 + End If + Loop + End If + + ReDim Preserve Notes(UBound(Notes) + 1) + note.Selected = note.Selected And nEnabled(note.ColumnIndex) + Notes(UBound(Notes)) = note + + If SortAndUpdatePairing Then SortByVPositionInsertion() : UpdatePairing() + CalculateTotalPlayableNotes() + End Sub + + Private Sub RemoveNote(ByVal I As Integer, Optional ByVal SortAndUpdatePairing As Boolean = True) + KMouseOver = -1 + Dim xI2 As Integer + + If TBWavIncrease.Checked Then + If Notes(I).Value = LWAV.SelectedIndex * 10000 Then + DecreaseCurrentWav() + End If + End If + + For xI2 = I + 1 To UBound(Notes) + Notes(xI2 - 1) = Notes(xI2) + Next + ReDim Preserve Notes(UBound(Notes) - 1) + If SortAndUpdatePairing Then SortByVPositionInsertion() : UpdatePairing() + + End Sub + + Private Sub AddNotesFromClipboard(Optional ByVal xSelected As Boolean = True, Optional ByVal SortAndUpdatePairing As Boolean = True) + Dim xStrLine() As String = Split(Clipboard.GetText, vbCrLf) + + Dim xI1 As Integer + For xI1 = 0 To UBound(Notes) + Notes(xI1).Selected = False + Next + + Dim xVS As Long = PanelVScroll(PanelFocus) + Dim xTempVP As Double + Dim xKbu() As Note = Notes + + If xStrLine(0) = "iBMSC Clipboard Data" Then + If NTInput Then ReDim Preserve Notes(0) + + 'paste + Dim xStrSub() As String + For xI1 = 1 To UBound(xStrLine) + If xStrLine(xI1).Trim = "" Then Continue For + xStrSub = Split(xStrLine(xI1), " ") + xTempVP = Val(xStrSub(1)) + MeasureBottom(MeasureAtDisplacement(-xVS) + 1) + If UBound(xStrSub) = 5 And xTempVP >= 0 And xTempVP < GetMaxVPosition() Then + ReDim Preserve Notes(UBound(Notes) + 1) + With Notes(UBound(Notes)) + .ColumnIndex = Val(xStrSub(0)) + .VPosition = xTempVP + .Value = Val(xStrSub(2)) + .LongNote = CBool(Val(xStrSub(3))) + .Hidden = CBool(Val(xStrSub(4))) + .Landmine = CBool(Val(xStrSub(5))) + .Selected = xSelected + End With + End If + Next + + 'convert + If NTInput Then + ConvertBMSE2NT() + + For xI1 = 1 To UBound(Notes) + Notes(xI1 - 1) = Notes(xI1) + Next + ReDim Preserve Notes(UBound(Notes) - 1) + + Dim xKn() As Note = Notes + Notes = xKbu + + Dim xIStart As Integer = Notes.Length + ReDim Preserve Notes(UBound(Notes) + xKn.Length) + + For xI1 = xIStart To UBound(Notes) + Notes(xI1) = xKn(xI1 - xIStart) + Next + End If + + ElseIf xStrLine(0) = "iBMSC Clipboard Data xNT" Then + If Not NTInput Then ReDim Preserve Notes(0) + + 'paste + Dim xStrSub() As String + For xI1 = 1 To UBound(xStrLine) + If xStrLine(xI1).Trim = "" Then Continue For + xStrSub = Split(xStrLine(xI1), " ") + xTempVP = Val(xStrSub(1)) + MeasureBottom(MeasureAtDisplacement(-xVS) + 1) + If UBound(xStrSub) = 5 And xTempVP >= 0 And xTempVP < GetMaxVPosition() Then + ReDim Preserve Notes(UBound(Notes) + 1) + With Notes(UBound(Notes)) + .ColumnIndex = Val(xStrSub(0)) + .VPosition = xTempVP + .Value = Val(xStrSub(2)) + .Length = Val(xStrSub(3)) + .Hidden = CBool(Val(xStrSub(4))) + .Landmine = CBool(Val(xStrSub(5))) + .Selected = xSelected + End With + End If + Next + + 'convert + If Not NTInput Then + ConvertNT2BMSE() + + For xI1 = 1 To UBound(Notes) + Notes(xI1 - 1) = Notes(xI1) + Next + ReDim Preserve Notes(UBound(Notes) - 1) + + Dim xKn() As Note = Notes + Notes = xKbu + + Dim xIStart As Integer = Notes.Length + ReDim Preserve Notes(UBound(Notes) + xKn.Length) + + For xI1 = xIStart To UBound(Notes) + Notes(xI1) = xKn(xI1 - xIStart) + Next + End If + + ElseIf xStrLine(0) = "BMSE ClipBoard Object Data Format" Then + If NTInput Then ReDim Preserve Notes(0) + + 'paste + For xI1 = 1 To UBound(xStrLine) + ' zdr: holy crap this is obtuse + Dim posStr = Mid(xStrLine(xI1), 5, 7) + Dim vPos = Val(posStr) + MeasureBottom(MeasureAtDisplacement(-xVS) + 1) + + Dim bmsIdent = Mid(xStrLine(xI1), 1, 3) + Dim lineCol = BMSEChannelToColumnIndex(bmsIdent) + + Dim Value = Val(Mid(xStrLine(xI1), 12)) * 10000 + + Dim attribute = Mid(xStrLine(xI1), 4, 1) + + Dim validCol = Len(xStrLine(xI1)) > 11 And lineCol > 0 + Dim inRange = vPos >= 0 And vPos < GetMaxVPosition() + If validCol And inRange Then + ReDim Preserve Notes(UBound(Notes) + 1) + + With Notes(UBound(Notes)) + .ColumnIndex = lineCol + .VPosition = vPos + .Value = Value + .LongNote = attribute = "2" + .Hidden = attribute = "1" + .Selected = xSelected And nEnabled(.ColumnIndex) + End With + End If + Next + + 'convert + If NTInput Then + ConvertBMSE2NT() + + For xI1 = 1 To UBound(Notes) + Notes(xI1 - 1) = Notes(xI1) + Next + ReDim Preserve Notes(UBound(Notes) - 1) + + Dim xKn() As Note = Notes + Notes = xKbu + + Dim xIStart As Integer = Notes.Length + ReDim Preserve Notes(UBound(Notes) + xKn.Length) + + For xI1 = xIStart To UBound(Notes) + Notes(xI1) = xKn(xI1 - xIStart) + Next + End If + End If + + If SortAndUpdatePairing Then SortByVPositionInsertion() : UpdatePairing() + CalculateTotalPlayableNotes() + End Sub + + Private Sub CopyNotes(Optional ByVal Unselect As Boolean = True) + Dim xStrAll As String = "iBMSC Clipboard Data" & IIf(NTInput, " xNT", "") + Dim xI1 As Integer + Dim MinMeasure As Double = 999 + + For xI1 = 1 To UBound(Notes) + If Notes(xI1).Selected And MeasureAtDisplacement(Notes(xI1).VPosition) < MinMeasure Then MinMeasure = MeasureAtDisplacement(Notes(xI1).VPosition) + Next + MinMeasure = MeasureBottom(MinMeasure) + + If Not NTInput Then + For xI1 = 1 To UBound(Notes) + If Notes(xI1).Selected Then + xStrAll &= vbCrLf & Notes(xI1).ColumnIndex.ToString & " " & + (Notes(xI1).VPosition - MinMeasure).ToString & " " & + Notes(xI1).Value.ToString & " " & + CInt(Notes(xI1).LongNote).ToString & " " & + CInt(Notes(xI1).Hidden).ToString & " " & + CInt(Notes(xI1).Landmine).ToString + Notes(xI1).Selected = Not Unselect + End If + Next + + Else + For xI1 = 1 To UBound(Notes) + If Notes(xI1).Selected Then + xStrAll &= vbCrLf & Notes(xI1).ColumnIndex.ToString & " " & + (Notes(xI1).VPosition - MinMeasure).ToString & " " & + Notes(xI1).Value.ToString & " " & + Notes(xI1).Length.ToString & " " & + CInt(Notes(xI1).Hidden).ToString & " " & + CInt(Notes(xI1).Landmine).ToString + Notes(xI1).Selected = Not Unselect + End If + Next + End If + + Clipboard.SetText(xStrAll) + End Sub + + Private Sub RemoveNotes(Optional ByVal SortAndUpdatePairing As Boolean = True) + If UBound(Notes) = 0 Then Exit Sub + + KMouseOver = -1 + Dim xI1 As Integer = 1 + Dim xI2 As Integer + Do + If Notes(xI1).Selected Then + For xI2 = xI1 + 1 To UBound(Notes) + Notes(xI2 - 1) = Notes(xI2) + Next + ReDim Preserve Notes(UBound(Notes) - 1) + xI1 = 0 + End If + xI1 += 1 + Loop While xI1 < UBound(Notes) + 1 + If SortAndUpdatePairing Then SortByVPositionInsertion() : UpdatePairing() + CalculateTotalPlayableNotes() + End Sub + + Private Function EnabledColumnIndexToColumnArrayIndex(ByVal cEnabled As Integer) As Integer + Dim xI1 As Integer = 0 + Do + If xI1 >= gColumns Then Exit Do + If Not nEnabled(xI1) Then cEnabled += 1 + If xI1 >= cEnabled Then Exit Do + xI1 += 1 + Loop + Return cEnabled + End Function + + Private Function ColumnArrayIndexToEnabledColumnIndex(ByVal cReal As Integer) As Integer + Dim xI1 As Integer + For xI1 = 0 To cReal - 1 + If Not nEnabled(xI1) Then cReal -= 1 + Next + Return cReal + End Function + + Private Sub Form1_FormClosed(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosedEventArgs) Handles Me.FormClosed + If pTempFileNames IsNot Nothing Then + For Each xStr As String In pTempFileNames + IO.File.Delete(xStr) + Next + End If + If PreviousAutoSavedFileName <> "" Then IO.File.Delete(PreviousAutoSavedFileName) + End Sub + + Private Sub Form1_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing + If Not IsSaved Then + Dim xStr As String = Strings.Messages.SaveOnExit + If e.CloseReason = CloseReason.WindowsShutDown Then xStr = Strings.Messages.SaveOnExit1 + If e.CloseReason = CloseReason.TaskManagerClosing Then xStr = Strings.Messages.SaveOnExit2 + + Dim xResult As MsgBoxResult = MsgBox(xStr, MsgBoxStyle.YesNoCancel Or MsgBoxStyle.Question, Me.Text) + + If xResult = MsgBoxResult.Yes Then + If ExcludeFileName(FileName) = "" Then + Dim xDSave As New SaveFileDialog + xDSave.Filter = Strings.FileType._bms & "|*.bms;*.bme;*.bml;*.pms;*.txt|" & + Strings.FileType.BMS & "|*.bms|" & + Strings.FileType.BME & "|*.bme|" & + Strings.FileType.BML & "|*.bml|" & + Strings.FileType.PMS & "|*.pms|" & + Strings.FileType.TXT & "|*.txt|" & + Strings.FileType._all & "|*.*" + xDSave.DefaultExt = "bms" + xDSave.InitialDirectory = InitPath + + If xDSave.ShowDialog = Windows.Forms.DialogResult.Cancel Then e.Cancel = True : Exit Sub + SetFileName(xDSave.FileName) + End If + Dim xStrAll As String = SaveBMS() + My.Computer.FileSystem.WriteAllText(FileName, xStrAll, False, TextEncoding) + NewRecent(FileName) + If BeepWhileSaved Then Beep() + End If + + If xResult = MsgBoxResult.Cancel Then e.Cancel = True + End If + + If Not e.Cancel Then + 'If SaveTheme Then + ' My.Computer.FileSystem.WriteAllText(My.Application.Info.DirectoryPath & "\Skin.cff", SaveSkinCFF, False, System.Text.Encoding.Unicode) + 'Else + ' My.Computer.FileSystem.WriteAllText(My.Application.Info.DirectoryPath & "\Skin.cff", "", False, System.Text.Encoding.Unicode) + 'End If + ' + 'My.Computer.FileSystem.WriteAllText(My.Application.Info.DirectoryPath & "\PlayerArgs.cff", SavePlayerCFF, False, System.Text.Encoding.Unicode) + 'My.Computer.FileSystem.WriteAllText(My.Application.Info.DirectoryPath & "\Config.cff", SaveCFF, False, System.Text.Encoding.Unicode) + 'My.Computer.FileSystem.WriteAllText(My.Application.Info.DirectoryPath & "\PreConfig.cff", "", False, System.Text.Encoding.Unicode) + Me.SaveSettings(My.Application.Info.DirectoryPath & "\iBMSC.Settings.xml", False) + End If + End Sub + + Private Function FilterFileBySupported(ByVal xFile() As String, ByVal xFilter() As String) As String() + Dim xPath(-1) As String + For xI1 As Integer = 0 To UBound(xFile) + If My.Computer.FileSystem.FileExists(xFile(xI1)) And Array.IndexOf(xFilter, Path.GetExtension(xFile(xI1))) <> -1 Then + ReDim Preserve xPath(UBound(xPath) + 1) + xPath(UBound(xPath)) = xFile(xI1) + End If + + If My.Computer.FileSystem.DirectoryExists(xFile(xI1)) Then + Dim xFileNames() As FileInfo = My.Computer.FileSystem.GetDirectoryInfo(xFile(xI1)).GetFiles() + For Each xStr As FileInfo In xFileNames + If Array.IndexOf(xFilter, xStr.Extension) = -1 Then Continue For + ReDim Preserve xPath(UBound(xPath) + 1) + xPath(UBound(xPath)) = xStr.FullName + Next + End If + Next + + Return xPath + End Function + + Private Sub InitializeNewBMS() + 'ReDim K(0) + 'With K(0) + ' .ColumnIndex = niBPM + ' .VPosition = -1 + ' .LongNote = False + ' .Selected = False + ' .Value = 1200000 + 'End With + + THTitle.Text = "" + THArtist.Text = "" + THGenre.Text = "" + THBPM.Value = 120 + If CHPlayer.SelectedIndex = -1 Then CHPlayer.SelectedIndex = 0 + CHRank.SelectedIndex = 3 + THPlayLevel.Text = "" + THSubTitle.Text = "" + THSubArtist.Text = "" + THStageFile.Text = "" + THBanner.Text = "" + THBackBMP.Text = "" + CHDifficulty.SelectedIndex = 0 + THExRank.Text = "" + THTotal.Text = "" + THComment.Text = "" + 'THLnType.Text = "1" + CHLnObj.SelectedIndex = 0 + + TExpansion.Text = "" + + LBeat.Items.Clear() + For xI1 As Integer = 0 To 999 + MeasureLength(xI1) = 192.0R + MeasureBottom(xI1) = xI1 * 192.0R + LBeat.Items.Add(Add3Zeros(xI1) & ": 1 ( 4 / 4 )") + Next + End Sub + + Private Sub InitializeOpenBMS() + CHPlayer.SelectedIndex = 0 + 'THLnType.Text = "" + End Sub + + Private Sub Form1_DragEnter(ByVal sender As Object, ByVal e As DragEventArgs) Handles Me.DragEnter + If e.Data.GetDataPresent(DataFormats.FileDrop) Then + e.Effect = DragDropEffects.Copy + DDFileName = FilterFileBySupported(CType(e.Data.GetData(DataFormats.FileDrop), String()), SupportedFileExtension) + Else + e.Effect = DragDropEffects.None + End If + RefreshPanelAll() + End Sub + + Private Sub Form1_DragLeave(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.DragLeave + ReDim DDFileName(-1) + RefreshPanelAll() + End Sub + + Private Sub Form1_DragDrop(ByVal sender As Object, ByVal e As DragEventArgs) Handles Me.DragDrop + ReDim DDFileName(-1) + If Not e.Data.GetDataPresent(DataFormats.FileDrop) Then Return + + Dim xOrigPath() As String = CType(e.Data.GetData(DataFormats.FileDrop), String()) + Dim xPath() As String = FilterFileBySupported(xOrigPath, SupportedFileExtension) + If xPath.Length > 0 Then + Dim xProg As New fLoadFileProgress(xPath, IsSaved) + xProg.ShowDialog(Me) + End If + + RefreshPanelAll() + End Sub + + Private Sub setFullScreen(ByVal value As Boolean) + If value Then + If Me.WindowState = FormWindowState.Minimized Then Exit Sub + + Me.SuspendLayout() + previousWindowPosition.Location = Me.Location + previousWindowPosition.Size = Me.Size + previousWindowState = Me.WindowState + + Me.WindowState = FormWindowState.Normal + Me.FormBorderStyle = Windows.Forms.FormBorderStyle.None + Me.WindowState = FormWindowState.Maximized + ToolStripContainer1.TopToolStripPanelVisible = False + + Me.ResumeLayout() + isFullScreen = True + Else + Me.SuspendLayout() + Me.FormBorderStyle = Windows.Forms.FormBorderStyle.Sizable + ToolStripContainer1.TopToolStripPanelVisible = True + Me.WindowState = FormWindowState.Normal + + Me.WindowState = previousWindowState + If Me.WindowState = FormWindowState.Normal Then + Me.Location = previousWindowPosition.Location + Me.Size = previousWindowPosition.Size + End If + + Me.ResumeLayout() + isFullScreen = False + End If + End Sub + + Private Sub Form1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown + Select Case e.KeyCode + Case Keys.F11 + setFullScreen(Not isFullScreen) + End Select + End Sub + + Private Sub Form1_KeyUp(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyUp + RefreshPanelAll() + POStatusRefresh() + End Sub + + Friend Sub ReadFile(ByVal xPath As String) + Select Case LCase(Path.GetExtension(xPath)) + Case ".bms", ".bme", ".bml", ".pms", ".txt" + OpenBMS(My.Computer.FileSystem.ReadAllText(xPath, TextEncoding)) + ClearUndo() + NewRecent(xPath) + SetFileName(xPath) + SetIsSaved(True) + + Case ".sm" + If OpenSM(My.Computer.FileSystem.ReadAllText(xPath, TextEncoding)) Then Return + InitPath = ExcludeFileName(xPath) + ClearUndo() + SetFileName("Untitled.bms") + SetIsSaved(False) + + Case ".ibmsc" + OpeniBMSC(xPath) + InitPath = ExcludeFileName(xPath) + NewRecent(xPath) + SetFileName("Imported_" & GetFileName(xPath)) + SetIsSaved(False) + + End Select + End Sub + + + Public Function GCD(ByVal NumA As Double, ByVal NumB As Double) As Double + Dim xNMax As Double = NumA + Dim xNMin As Double = NumB + If NumA < NumB Then + xNMax = NumB + xNMin = NumA + End If + Do While xNMin >= BMSGridLimit + GCD = xNMax - Math.Floor(xNMax / xNMin) * xNMin + xNMax = xNMin + xNMin = GCD + Loop + GCD = xNMax + End Function + + Private Shared Function LoadCursorFromFile(ByVal fileName As String) As IntPtr + End Function + Public Shared Function ActuallyLoadCursor(ByVal path As String) As Cursor + Return New Cursor(LoadCursorFromFile(path)) + End Function + + Private Sub Unload() Handles MyBase.Disposed + Audio.Finalize() + End Sub + + Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load + 'On Error Resume Next + Me.TopMost = True + Me.SuspendLayout() + Me.Visible = False + + 'POBMP.Dispose() + 'POBGA.Dispose() + + 'Me.MaximizedBounds = Screen.GetWorkingArea(Me) + 'Me.Visible = False + SetFileName(FileName) + 'Me.ShowCaption = False + 'SetWindowText(Me.Handle.ToInt32, FileName) + + InitializeNewBMS() + 'nBeatD.SelectedIndex = 4 + + Try + Dim xTempFileName As String = RandomFileName(".cur") + My.Computer.FileSystem.WriteAllBytes(xTempFileName, My.Resources.CursorResizeDown, False) + Dim xDownCursor As Cursor = ActuallyLoadCursor(xTempFileName) + My.Computer.FileSystem.WriteAllBytes(xTempFileName, My.Resources.CursorResizeLeft, False) + Dim xLeftCursor As Cursor = ActuallyLoadCursor(xTempFileName) + My.Computer.FileSystem.WriteAllBytes(xTempFileName, My.Resources.CursorResizeRight, False) + Dim xRightCursor As Cursor = ActuallyLoadCursor(xTempFileName) + File.Delete(xTempFileName) + + POWAVResizer.Cursor = xDownCursor + POBeatResizer.Cursor = xDownCursor + POExpansionResizer.Cursor = xDownCursor + + POptionsResizer.Cursor = xLeftCursor + + SpL.Cursor = xRightCursor + SpR.Cursor = xLeftCursor + Catch ex As Exception + + End Try + + spMain = New Panel() {PMainInL, PMainIn, PMainInR} + + Dim xI1 As Integer + + sUndo(0) = New UndoRedo.NoOperation + sUndo(1) = New UndoRedo.NoOperation + sRedo(0) = New UndoRedo.NoOperation + sRedo(1) = New UndoRedo.NoOperation + sI = 0 + + LWAV.Items.Clear() + For xI1 = 1 To 1295 + LWAV.Items.Add(C10to36(xI1) & ":") + Next + LWAV.SelectedIndex = 0 + CHPlayer.SelectedIndex = 0 + + CalculateGreatestVPosition() + TBLangRefresh_Click(TBLangRefresh, Nothing) + TBThemeRefresh_Click(TBThemeRefresh, Nothing) + + POHeaderPart2.Visible = False + POGridPart2.Visible = False + POWaveFormPart2.Visible = False + + If My.Computer.FileSystem.FileExists(My.Application.Info.DirectoryPath & "\iBMSC.Settings.xml") Then + LoadSettings(My.Application.Info.DirectoryPath & "\iBMSC.Settings.xml") + 'Else + '---- Settings for first-time start-up --------------------------------------------------------------------------- + 'Me.LoadLocale(My.Application.Info.DirectoryPath & "\Data\chs.Lang.xml") + '----------------------------------------------------------------------------------------------------------------- + End If + 'On Error GoTo 0 + SetIsSaved(True) + + Dim xStr() As String = Environment.GetCommandLineArgs + 'Dim xStr() As String = {Application.ExecutablePath, "C:\Users\User\Desktop\yang run xuan\SoFtwArES\Games\O2Mania\music\SHOOT!\shoot! -NM-.bms"} + + If xStr.Length = 2 Then + ReadFile(xStr(1)) + If LCase(Path.GetExtension(xStr(1))) = ".ibmsc" AndAlso GetFileName(xStr(1)).StartsWith("AutoSave_", True, Nothing) Then GoTo 1000 + End If + + 'pIsSaved.Visible = Not IsSaved + IsInitializing = False + + If Process.GetProcessesByName(Process.GetCurrentProcess.ProcessName).Length > 1 Then GoTo 1000 + Dim xFiles() As FileInfo = My.Computer.FileSystem.GetDirectoryInfo(My.Application.Info.DirectoryPath).GetFiles("AutoSave_*.IBMSC") + If xFiles Is Nothing OrElse xFiles.Length = 0 Then GoTo 1000 + + 'Me.TopMost = True + If MsgBox(Replace(Strings.Messages.RestoreAutosavedFile, "{}", xFiles.Length), MsgBoxStyle.YesNo Or MsgBoxStyle.MsgBoxSetForeground) = MsgBoxResult.Yes Then + For Each xF As FileInfo In xFiles + 'MsgBox(xF.FullName) + System.Diagnostics.Process.Start(Application.ExecutablePath, """" & xF.FullName & """") + Next + End If + + For Each xF As FileInfo In xFiles + ReDim Preserve pTempFileNames(UBound(pTempFileNames) + 1) + pTempFileNames(UBound(pTempFileNames)) = xF.FullName + Next + +1000: + IsInitializing = False + POStatusRefresh() + Me.ResumeLayout() + + tempResize = Me.WindowState + Me.TopMost = False + Me.WindowState = tempResize + + Me.Visible = True + End Sub + + Private Sub UpdatePairing() + Dim i As Integer, j As Integer + + If NTInput Then + For i = 0 To UBound(Notes) + Notes(i).HasError = False + Notes(i).LNPair = 0 + If Notes(i).Length < 0 Then Notes(i).Length = 0 + Next + + For i = 1 To UBound(Notes) + If Notes(i).Length <> 0 Then + For j = i + 1 To UBound(Notes) + If Notes(j).VPosition > Notes(i).VPosition + Notes(i).Length Then Exit For + If Notes(j).ColumnIndex = Notes(i).ColumnIndex Then Notes(j).HasError = True + Next + Else + For j = i + 1 To UBound(Notes) + If Notes(j).VPosition > Notes(i).VPosition Then Exit For + If Notes(j).ColumnIndex = Notes(i).ColumnIndex Then Notes(j).HasError = True + Next + + If Notes(i).Value \ 10000 = LnObj AndAlso Not IsColumnNumeric(Notes(i).ColumnIndex) Then + For j = i - 1 To 1 Step -1 + If Notes(j).ColumnIndex <> Notes(i).ColumnIndex Then Continue For + If Notes(j).Hidden Then Continue For + + If Notes(j).Length <> 0 OrElse Notes(j).Value \ 10000 = LnObj Then + Notes(i).HasError = True + Else + Notes(i).LNPair = j + Notes(j).LNPair = i + End If + Exit For + Next + If j = 0 Then + Notes(i).HasError = True + End If + End If + End If + Next + + Else + For i = 0 To UBound(Notes) + Notes(i).HasError = False + Notes(i).LNPair = 0 + Next + + For i = 1 To UBound(Notes) + + If Notes(i).LongNote Then + 'LongNote: If overlapping a note, then error. + ' Else if already matched by a LongNote below, then match it. + ' Otherwise match anything above. + ' If ShortNote above then error on above. + ' If nothing above then error. + For j = i - 1 To 1 Step -1 + If Notes(j).ColumnIndex <> Notes(i).ColumnIndex Then Continue For + If Notes(j).VPosition = Notes(i).VPosition Then + Notes(i).HasError = True + GoTo EndSearch + ElseIf Notes(j).LongNote And Notes(j).LNPair = i Then + Notes(i).LNPair = j + GoTo EndSearch + Else + Exit For + End If + Next + + For j = i + 1 To UBound(Notes) + If Notes(j).ColumnIndex <> Notes(i).ColumnIndex Then Continue For + Notes(i).LNPair = j + Notes(j).LNPair = i + If Not Notes(j).LongNote AndAlso Notes(j).Value \ 10000 <> LnObj Then + Notes(j).HasError = True + End If + Exit For + Next + + If j = UBound(Notes) + 1 Then + Notes(i).HasError = True + End If +EndSearch: + + ElseIf Notes(i).Value \ 10000 = LnObj And + Not IsColumnNumeric(Notes(i).ColumnIndex) Then + 'LnObj: Match anything below. + ' If matching a LongNote not matching back, then error on below. + ' If overlapping a note, then error. + ' If mathcing a LnObj below, then error on below. + ' If nothing below, then error. + For j = i - 1 To 1 Step -1 + If Notes(i).ColumnIndex <> Notes(j).ColumnIndex Then Continue For + If Notes(j).LNPair <> 0 And Notes(j).LNPair <> i Then + Notes(j).HasError = True + End If + Notes(i).LNPair = j + Notes(j).LNPair = i + If Notes(i).VPosition = Notes(j).VPosition Then + Notes(i).HasError = True + End If + If Notes(j).Value \ 10000 = LnObj Then + Notes(j).HasError = True + End If + Exit For + Next + + If j = 0 Then + Notes(i).HasError = True + End If + + Else + 'ShortNote: If overlapping a note, then error. + For j = i - 1 To 1 Step -1 + If Notes(j).VPosition < Notes(i).VPosition Then Exit For + If Notes(j).ColumnIndex <> Notes(i).ColumnIndex Then Continue For + Notes(i).HasError = True + Exit For + Next + + End If + Next + + + End If + + Dim currentMS = 0.0# + Dim currentBPM = Notes(0).Value / 10000 + Dim currentBPMVPosition = 0.0# + For i = 1 To UBound(Notes) + If Notes(i).ColumnIndex = niBPM Then + currentMS += (Notes(i).VPosition - currentBPMVPosition) / currentBPM * 1250 + currentBPM = Notes(i).Value / 10000 + currentBPMVPosition = Notes(i).VPosition + End If + 'K(i).TimeOffset = currentMS + (K(i).VPosition - currentBPMVPosition) / currentBPM * 1250 + Next + End Sub + + + + Public Sub ExceptionSave(ByVal Path As String) + SaveiBMSC(Path) + End Sub + + ''' + ''' True if pressed cancel. False elsewise. + ''' + ''' True if pressed cancel. False elsewise. + + Private Function ClosingPopSave() As Boolean + If Not IsSaved Then + Dim xResult As MsgBoxResult = MsgBox(Strings.Messages.SaveOnExit, MsgBoxStyle.YesNoCancel Or MsgBoxStyle.Question, Me.Text) + + If xResult = MsgBoxResult.Yes Then + If ExcludeFileName(FileName) = "" Then + Dim xDSave As New SaveFileDialog + xDSave.Filter = Strings.FileType._bms & "|*.bms;*.bme;*.bml;*.pms;*.txt|" & + Strings.FileType.BMS & "|*.bms|" & + Strings.FileType.BME & "|*.bme|" & + Strings.FileType.BML & "|*.bml|" & + Strings.FileType.PMS & "|*.pms|" & + Strings.FileType.TXT & "|*.txt|" & + Strings.FileType._all & "|*.*" + xDSave.DefaultExt = "bms" + xDSave.InitialDirectory = InitPath + + If xDSave.ShowDialog = Windows.Forms.DialogResult.Cancel Then Return True + SetFileName(xDSave.FileName) + End If + Dim xStrAll As String = SaveBMS() + My.Computer.FileSystem.WriteAllText(FileName, xStrAll, False, TextEncoding) + NewRecent(FileName) + If BeepWhileSaved Then Beep() + End If + + If xResult = MsgBoxResult.Cancel Then Return True + End If + Return False + End Function + + Private Sub TBNew_Click(ByVal sender As System.Object, ByVal e As EventArgs) Handles TBNew.Click, mnNew.Click + + 'KMouseDown = -1 + ReDim SelectedNotes(-1) + KMouseOver = -1 + If ClosingPopSave() Then Exit Sub + + ClearUndo() + InitializeNewBMS() + + ReDim Notes(0) + ReDim mColumn(999) + ReDim hWAV(1295) + ReDim hBPM(1295) 'x10000 + ReDim hSTOP(1295) + ReDim hSCROLL(1295) + THGenre.Text = "" + THTitle.Text = "" + THArtist.Text = "" + THPlayLevel.Text = "" + + With Notes(0) + .ColumnIndex = niBPM + .VPosition = -1 + '.LongNote = False + '.Selected = False + .Value = 1200000 + End With + THBPM.Value = 120 + + LWAV.Items.Clear() + Dim xI1 As Integer + For xI1 = 1 To 1295 + LWAV.Items.Add(C10to36(xI1) & ": " & hWAV(xI1)) + Next + LWAV.SelectedIndex = 0 + + SetFileName("Untitled.bms") + SetIsSaved(True) + 'pIsSaved.Visible = Not IsSaved + + CalculateTotalPlayableNotes() + CalculateGreatestVPosition() + RefreshPanelAll() + POStatusRefresh() + End Sub + + Private Sub TBNewC_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) 'Handles TBNewC.Click + 'KMouseDown = -1 + ReDim SelectedNotes(-1) + KMouseOver = -1 + If ClosingPopSave() Then Exit Sub + + ClearUndo() + + ReDim Notes(0) + ReDim mColumn(999) + ReDim hWAV(1295) + ReDim hBPM(1295) 'x10000 + ReDim hSTOP(1295) + ReDim hSCROLL(1295) + THGenre.Text = "" + THTitle.Text = "" + THArtist.Text = "" + THPlayLevel.Text = "" + + With Notes(0) + .ColumnIndex = niBPM + .VPosition = -1 + '.LongNote = False + '.Selected = False + .Value = 1200000 + End With + THBPM.Value = 120 + + SetFileName("Untitled.bms") + SetIsSaved(True) + 'pIsSaved.Visible = Not IsSaved + + If MsgBox("Please copy your code to clipboard and click OK.", MsgBoxStyle.OkCancel, "Create from code") = MsgBoxResult.Cancel Then Exit Sub + OpenBMS(Clipboard.GetText) + End Sub + + Private Sub TBOpen_ButtonClick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBOpen.ButtonClick, mnOpen.Click + 'KMouseDown = -1 + ReDim SelectedNotes(-1) + KMouseOver = -1 + If ClosingPopSave() Then Exit Sub + + Dim xDOpen As New OpenFileDialog + xDOpen.Filter = Strings.FileType._bms & "|*.bms;*.bme;*.bml;*.pms;*.txt" + xDOpen.DefaultExt = "bms" + xDOpen.InitialDirectory = IIf(ExcludeFileName(FileName) = "", InitPath, ExcludeFileName(FileName)) + + If xDOpen.ShowDialog = Windows.Forms.DialogResult.Cancel Then Exit Sub + InitPath = ExcludeFileName(xDOpen.FileName) + OpenBMS(My.Computer.FileSystem.ReadAllText(xDOpen.FileName, TextEncoding)) + ClearUndo() + SetFileName(xDOpen.FileName) + NewRecent(FileName) + SetIsSaved(True) + 'pIsSaved.Visible = Not IsSaved + End Sub + + Private Sub TBImportIBMSC_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBImportIBMSC.Click, mnImportIBMSC.Click + 'KMouseDown = -1 + ReDim SelectedNotes(-1) + KMouseOver = -1 + If ClosingPopSave() Then Return + + Dim xDOpen As New OpenFileDialog + xDOpen.Filter = Strings.FileType.IBMSC & "|*.ibmsc" + xDOpen.DefaultExt = "ibmsc" + xDOpen.InitialDirectory = IIf(ExcludeFileName(FileName) = "", InitPath, ExcludeFileName(FileName)) + + If xDOpen.ShowDialog = Windows.Forms.DialogResult.Cancel Then Return + InitPath = ExcludeFileName(xDOpen.FileName) + SetFileName("Imported_" & GetFileName(xDOpen.FileName)) + OpeniBMSC(xDOpen.FileName) + NewRecent(xDOpen.FileName) + SetIsSaved(False) + 'pIsSaved.Visible = Not IsSaved + End Sub + + Private Sub TBImportSM_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBImportSM.Click, mnImportSM.Click + 'KMouseDown = -1 + ReDim SelectedNotes(-1) + KMouseOver = -1 + If ClosingPopSave() Then Exit Sub + + Dim xDOpen As New OpenFileDialog + xDOpen.Filter = Strings.FileType.SM & "|*.sm" + xDOpen.DefaultExt = "sm" + xDOpen.InitialDirectory = IIf(ExcludeFileName(FileName) = "", InitPath, ExcludeFileName(FileName)) + + If xDOpen.ShowDialog = Windows.Forms.DialogResult.Cancel Then Exit Sub + If OpenSM(My.Computer.FileSystem.ReadAllText(xDOpen.FileName, TextEncoding)) Then Exit Sub + InitPath = ExcludeFileName(xDOpen.FileName) + SetFileName("Untitled.bms") + ClearUndo() + SetIsSaved(False) + 'pIsSaved.Visible = Not IsSaved + End Sub + + Private Sub TBSave_ButtonClick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBSave.ButtonClick, mnSave.Click + 'KMouseDown = -1 + ReDim SelectedNotes(-1) + KMouseOver = -1 + + If ExcludeFileName(FileName) = "" Then + Dim xDSave As New SaveFileDialog + xDSave.Filter = Strings.FileType._bms & "|*.bms;*.bme;*.bml;*.pms;*.txt|" & + Strings.FileType.BMS & "|*.bms|" & + Strings.FileType.BME & "|*.bme|" & + Strings.FileType.BML & "|*.bml|" & + Strings.FileType.PMS & "|*.pms|" & + Strings.FileType.TXT & "|*.txt|" & + Strings.FileType._all & "|*.*" + xDSave.DefaultExt = "bms" + xDSave.InitialDirectory = InitPath + + If xDSave.ShowDialog = Windows.Forms.DialogResult.Cancel Then Exit Sub + InitPath = ExcludeFileName(xDSave.FileName) + SetFileName(xDSave.FileName) + End If + Dim xStrAll As String = SaveBMS() + My.Computer.FileSystem.WriteAllText(FileName, xStrAll, False, TextEncoding) + NewRecent(FileName) + SetFileName(FileName) + SetIsSaved(True) + 'pIsSaved.Visible = Not IsSaved + If BeepWhileSaved Then Beep() + End Sub + + Private Sub TBSaveAs_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBSaveAs.Click, mnSaveAs.Click + 'KMouseDown = -1 + ReDim SelectedNotes(-1) + KMouseOver = -1 + + Dim xDSave As New SaveFileDialog + xDSave.Filter = Strings.FileType._bms & "|*.bms;*.bme;*.bml;*.pms;*.txt|" & + Strings.FileType.BMS & "|*.bms|" & + Strings.FileType.BME & "|*.bme|" & + Strings.FileType.BML & "|*.bml|" & + Strings.FileType.PMS & "|*.pms|" & + Strings.FileType.TXT & "|*.txt|" & + Strings.FileType._all & "|*.*" + xDSave.DefaultExt = "bms" + xDSave.InitialDirectory = IIf(ExcludeFileName(FileName) = "", InitPath, ExcludeFileName(FileName)) + + If xDSave.ShowDialog = Windows.Forms.DialogResult.Cancel Then Exit Sub + InitPath = ExcludeFileName(xDSave.FileName) + SetFileName(xDSave.FileName) + Dim xStrAll As String = SaveBMS() + My.Computer.FileSystem.WriteAllText(FileName, xStrAll, False, TextEncoding) + NewRecent(FileName) + SetFileName(FileName) + SetIsSaved(True) + 'pIsSaved.Visible = Not IsSaved + If BeepWhileSaved Then Beep() + End Sub + + Private Sub TBExport_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBExport.Click, mnExport.Click + 'KMouseDown = -1 + ReDim SelectedNotes(-1) + KMouseOver = -1 + + Dim xDSave As New SaveFileDialog + xDSave.Filter = Strings.FileType.IBMSC & "|*.ibmsc" + xDSave.DefaultExt = "ibmsc" + xDSave.InitialDirectory = IIf(ExcludeFileName(FileName) = "", InitPath, ExcludeFileName(FileName)) + If xDSave.ShowDialog = Windows.Forms.DialogResult.Cancel Then Exit Sub + + SaveiBMSC(xDSave.FileName) + 'My.Computer.FileSystem.WriteAllText(xDSave.FileName, xStrAll, False, TextEncoding) + NewRecent(FileName) + If BeepWhileSaved Then Beep() + End Sub + + + + Private Sub VSGotFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles MainPanelScroll.GotFocus, LeftPanelScroll.GotFocus, RightPanelScroll.GotFocus + PanelFocus = sender.Tag + spMain(PanelFocus).Focus() + End Sub + + Private Sub VSValueChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles MainPanelScroll.ValueChanged, LeftPanelScroll.ValueChanged, RightPanelScroll.ValueChanged + Dim iI As Integer = sender.Tag + + ' az: We got a wheel event when we're zooming in/out + If My.Computer.Keyboard.CtrlKeyDown Then + sender.Value = VSValue ' Undo the scroll + Exit Sub + End If + + If iI = PanelFocus And Not LastMouseDownLocation = New Point(-1, -1) And Not VSValue = -1 Then LastMouseDownLocation.Y += (VSValue - sender.Value) * gxHeight + PanelVScroll(iI) = sender.Value + + If spLock((iI + 1) Mod 3) Then + Dim xVS As Integer = PanelVScroll(iI) + spDiff(iI) + If xVS > 0 Then xVS = 0 + If xVS < MainPanelScroll.Minimum Then xVS = MainPanelScroll.Minimum + Select Case iI + Case 0 : MainPanelScroll.Value = xVS + Case 1 : RightPanelScroll.Value = xVS + Case 2 : LeftPanelScroll.Value = xVS + End Select + End If + + If spLock((iI + 2) Mod 3) Then + Dim xVS As Integer = PanelVScroll(iI) - spDiff((iI + 2) Mod 3) + If xVS > 0 Then xVS = 0 + If xVS < MainPanelScroll.Minimum Then xVS = MainPanelScroll.Minimum + Select Case iI + Case 0 : RightPanelScroll.Value = xVS + Case 1 : LeftPanelScroll.Value = xVS + Case 2 : MainPanelScroll.Value = xVS + End Select + End If + + spDiff(iI) = PanelVScroll((iI + 1) Mod 3) - PanelVScroll(iI) + spDiff((iI + 2) Mod 3) = PanelVScroll(iI) - PanelVScroll((iI + 2) Mod 3) + + VSValue = sender.Value + RefreshPanel(iI, spMain(iI).DisplayRectangle) + End Sub + + Private Sub cVSLock_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cVSLockL.CheckedChanged, cVSLock.CheckedChanged, cVSLockR.CheckedChanged + Dim iI As Integer = sender.Tag + spLock(iI) = sender.Checked + If Not spLock(iI) Then Return + + spDiff(iI) = PanelVScroll((iI + 1) Mod 3) - PanelVScroll(iI) + spDiff((iI + 2) Mod 3) = PanelVScroll(iI) - PanelVScroll((iI + 2) Mod 3) + + 'POHeaderB.Text = spDiff(0) & "_" & spDiff(1) & "_" & spDiff(2) + End Sub + + Private Sub HSGotFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles HS.GotFocus, HSL.GotFocus, HSR.GotFocus + PanelFocus = sender.Tag + spMain(PanelFocus).Focus() + End Sub + + Private Sub HSValueChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles HS.ValueChanged, HSL.ValueChanged, HSR.ValueChanged + Dim iI As Integer = sender.Tag + If Not LastMouseDownLocation = New Point(-1, -1) And Not HSValue = -1 Then LastMouseDownLocation.X += (HSValue - sender.Value) * gxWidth + PanelHScroll(iI) = sender.Value + HSValue = sender.Value + RefreshPanel(iI, spMain(iI).DisplayRectangle) + End Sub + + Private Sub TBSelect_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBSelect.Click, mnSelect.Click + TBSelect.Checked = True + TBWrite.Checked = False + TBTimeSelect.Checked = False + mnSelect.Checked = True + mnWrite.Checked = False + mnTimeSelect.Checked = False + + FStatus2.Visible = False + FStatus.Visible = True + + ShouldDrawTempNote = False + SelectedColumn = -1 + TempVPosition = -1 + TempLength = 0 + + vSelStart = MeasureBottom(MeasureAtDisplacement(-PanelVScroll(PanelFocus)) + 1) + vSelLength = 0 + + RefreshPanelAll() + POStatusRefresh() + End Sub + + Private Sub TBWrite_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBWrite.Click, mnWrite.Click + TBSelect.Checked = False + TBWrite.Checked = True + TBTimeSelect.Checked = False + mnSelect.Checked = False + mnWrite.Checked = True + mnTimeSelect.Checked = False + + FStatus2.Visible = False + FStatus.Visible = True + + ShouldDrawTempNote = True + SelectedColumn = -1 + TempVPosition = -1 + TempLength = 0 + + vSelStart = MeasureBottom(MeasureAtDisplacement(-PanelVScroll(PanelFocus)) + 1) + vSelLength = 0 + + RefreshPanelAll() + POStatusRefresh() + End Sub + + Private Sub TBPostEffects_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBTimeSelect.Click, mnTimeSelect.Click + TBSelect.Checked = False + TBWrite.Checked = False + TBTimeSelect.Checked = True + mnSelect.Checked = False + mnWrite.Checked = False + mnTimeSelect.Checked = True + + FStatus.Visible = False + FStatus2.Visible = True + + vSelMouseOverLine = 0 + ShouldDrawTempNote = False + SelectedColumn = -1 + TempVPosition = -1 + TempLength = 0 + ValidateSelection() + + Dim xI1 As Integer + For xI1 = 0 To UBound(Notes) + Notes(xI1).Selected = False + Next + RefreshPanelAll() + POStatusRefresh() + End Sub + + Private Sub CGHeight_ValueChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles CGHeight.ValueChanged + gxHeight = CSng(CGHeight.Value) + CGHeight2.Value = IIf(CGHeight.Value * 4 < CGHeight2.Maximum, CDec(CGHeight.Value * 4), CGHeight2.Maximum) + RefreshPanelAll() + End Sub + + Private Sub CGHeight2_Scroll(ByVal sender As Object, ByVal e As System.EventArgs) Handles CGHeight2.Scroll + CGHeight.Value = CGHeight2.Value / 4 + End Sub + + Private Sub CGWidth_ValueChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles CGWidth.ValueChanged + gxWidth = CSng(CGWidth.Value) + CGWidth2.Value = IIf(CGWidth.Value * 4 < CGWidth2.Maximum, CDec(CGWidth.Value * 4), CGWidth2.Maximum) + + HS.LargeChange = PMainIn.Width / gxWidth + If HS.Value > HS.Maximum - HS.LargeChange + 1 Then HS.Value = HS.Maximum - HS.LargeChange + 1 + HSL.LargeChange = PMainInL.Width / gxWidth + If HSL.Value > HSL.Maximum - HSL.LargeChange + 1 Then HSL.Value = HSL.Maximum - HSL.LargeChange + 1 + HSR.LargeChange = PMainInR.Width / gxWidth + If HSR.Value > HSR.Maximum - HSR.LargeChange + 1 Then HSR.Value = HSR.Maximum - HSR.LargeChange + 1 + + RefreshPanelAll() + End Sub + + Private Sub CGWidth2_Scroll(ByVal sender As Object, ByVal e As System.EventArgs) Handles CGWidth2.Scroll + CGWidth.Value = CGWidth2.Value / 4 + End Sub + + Private Sub CGDivide_ValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CGDivide.ValueChanged + gDivide = CGDivide.Value + RefreshPanelAll() + End Sub + Private Sub CGSub_ValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CGSub.ValueChanged + gSub = CGSub.Value + RefreshPanelAll() + End Sub + Private Sub BGSlash_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BGSlash.Click + Dim xd As Integer = Val(InputBox(Strings.Messages.PromptSlashValue, , gSlash)) + If xd = 0 Then Exit Sub + If xd > CGDivide.Maximum Then xd = CGDivide.Maximum + If xd < CGDivide.Minimum Then xd = CGDivide.Minimum + gSlash = xd + End Sub + + + Private Sub CGSnap_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CGSnap.CheckedChanged + gSnap = CGSnap.Checked + RefreshPanelAll() + End Sub + + Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick + Dim xI1 As Integer + + Select Case PanelFocus + Case 0 + With LeftPanelScroll + xI1 = .Value + (tempY / 5) / gxHeight + If xI1 > 0 Then xI1 = 0 + If xI1 < .Minimum Then xI1 = .Minimum + .Value = xI1 + End With + With HSL + xI1 = .Value + (tempX / 10) / gxWidth + If xI1 > .Maximum - .LargeChange + 1 Then xI1 = .Maximum - .LargeChange + 1 + If xI1 < .Minimum Then xI1 = .Minimum + .Value = xI1 + End With + + Case 1 + With MainPanelScroll + xI1 = .Value + (tempY / 5) / gxHeight + If xI1 > 0 Then xI1 = 0 + If xI1 < .Minimum Then xI1 = .Minimum + .Value = xI1 + End With + With HS + xI1 = .Value + (tempX / 10) / gxWidth + If xI1 > .Maximum - .LargeChange + 1 Then xI1 = .Maximum - .LargeChange + 1 + If xI1 < .Minimum Then xI1 = .Minimum + .Value = xI1 + End With + + Case 2 + With RightPanelScroll + xI1 = .Value + (tempY / 5) / gxHeight + If xI1 > 0 Then xI1 = 0 + If xI1 < .Minimum Then xI1 = .Minimum + .Value = xI1 + End With + With HSR + xI1 = .Value + (tempX / 10) / gxWidth + If xI1 > .Maximum - .LargeChange + 1 Then xI1 = .Maximum - .LargeChange + 1 + If xI1 < .Minimum Then xI1 = .Minimum + .Value = xI1 + End With + End Select + + Dim xMEArgs As New System.Windows.Forms.MouseEventArgs(Windows.Forms.MouseButtons.Left, 0, MouseMoveStatus.X, MouseMoveStatus.Y, 0) + PMainInMouseMove(spMain(PanelFocus), xMEArgs) + + End Sub + + Private Sub TimerMiddle_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TimerMiddle.Tick + If Not MiddleButtonClicked Then TimerMiddle.Enabled = False : Return + + Dim xI1 As Integer + + Select Case PanelFocus + Case 0 + With LeftPanelScroll + xI1 = .Value + (Cursor.Position.Y - MiddleButtonLocation.Y) / 5 / gxHeight + If xI1 > 0 Then xI1 = 0 + If xI1 < .Minimum Then xI1 = .Minimum + .Value = xI1 + End With + With HSL + xI1 = .Value + (Cursor.Position.X - MiddleButtonLocation.X) / 5 / gxWidth + If xI1 > .Maximum - .LargeChange + 1 Then xI1 = .Maximum - .LargeChange + 1 + If xI1 < .Minimum Then xI1 = .Minimum + .Value = xI1 + End With + + Case 1 + With MainPanelScroll + xI1 = .Value + (Cursor.Position.Y - MiddleButtonLocation.Y) / 5 / gxHeight + If xI1 > 0 Then xI1 = 0 + If xI1 < .Minimum Then xI1 = .Minimum + .Value = xI1 + End With + With HS + xI1 = .Value + (Cursor.Position.X - MiddleButtonLocation.X) / 5 / gxWidth + If xI1 > .Maximum - .LargeChange + 1 Then xI1 = .Maximum - .LargeChange + 1 + If xI1 < .Minimum Then xI1 = .Minimum + .Value = xI1 + End With + + Case 2 + With RightPanelScroll + xI1 = .Value + (Cursor.Position.Y - MiddleButtonLocation.Y) / 5 / gxHeight + If xI1 > 0 Then xI1 = 0 + If xI1 < .Minimum Then xI1 = .Minimum + .Value = xI1 + End With + With HSR + xI1 = .Value + (Cursor.Position.X - MiddleButtonLocation.X) / 5 / gxWidth + If xI1 > .Maximum - .LargeChange + 1 Then xI1 = .Maximum - .LargeChange + 1 + If xI1 < .Minimum Then xI1 = .Minimum + .Value = xI1 + End With + End Select + + Dim xMEArgs As New System.Windows.Forms.MouseEventArgs(Windows.Forms.MouseButtons.Left, 0, MouseMoveStatus.X, MouseMoveStatus.Y, 0) + PMainInMouseMove(spMain(PanelFocus), xMEArgs) + End Sub + + Private Sub ValidateWavListView() + Try + Dim xRect As Rectangle = LWAV.GetItemRectangle(LWAV.SelectedIndex) + If xRect.Top + xRect.Height > LWAV.DisplayRectangle.Height Then SendMessage(LWAV.Handle, &H115, 1, 0) + Catch ex As Exception + End Try + End Sub + + Private Sub LWAV_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles LWAV.Click + If TBWrite.Checked Then FSW.Text = C10to36(LWAV.SelectedIndex + 1) + + PreviewNote("", True) + If Not PreviewOnClick Then Exit Sub + If hWAV(LWAV.SelectedIndex + 1) = "" Then Exit Sub + + Dim xFileLocation As String = IIf(ExcludeFileName(FileName) = "", InitPath, ExcludeFileName(FileName)) & "\" & hWAV(LWAV.SelectedIndex + 1) + PreviewNote(xFileLocation, False) + End Sub + + Private Sub LWAV_DoubleClick(ByVal sender As Object, ByVal e As System.EventArgs) Handles LWAV.DoubleClick + Dim xDWAV As New OpenFileDialog + xDWAV.DefaultExt = "wav" + xDWAV.Filter = Strings.FileType._wave & "|*.wav;*.ogg;*.mp3|" & + Strings.FileType.WAV & "|*.wav|" & + Strings.FileType.OGG & "|*.ogg|" & + Strings.FileType.MP3 & "|*.mp3|" & + Strings.FileType._all & "|*.*" + xDWAV.InitialDirectory = IIf(ExcludeFileName(FileName) = "", InitPath, ExcludeFileName(FileName)) + + If xDWAV.ShowDialog = Windows.Forms.DialogResult.Cancel Then Exit Sub + InitPath = ExcludeFileName(xDWAV.FileName) + hWAV(LWAV.SelectedIndex + 1) = GetFileName(xDWAV.FileName) + LWAV.Items.Item(LWAV.SelectedIndex) = C10to36(LWAV.SelectedIndex + 1) & ": " & GetFileName(xDWAV.FileName) + If IsSaved Then SetIsSaved(False) + End Sub + + Private Sub LWAV_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles LWAV.KeyDown + Select Case e.KeyCode + Case Keys.Delete + hWAV(LWAV.SelectedIndex + 1) = "" + LWAV.Items.Item(LWAV.SelectedIndex) = C10to36(LWAV.SelectedIndex + 1) & ": " + If IsSaved Then SetIsSaved(False) + End Select + End Sub + + Private Sub TBErrorCheck_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBErrorCheck.Click, mnErrorCheck.Click + ErrorCheck = sender.Checked + TBErrorCheck.Checked = ErrorCheck + mnErrorCheck.Checked = ErrorCheck + TBErrorCheck.Image = IIf(TBErrorCheck.Checked, My.Resources.x16CheckError, My.Resources.x16CheckErrorN) + mnErrorCheck.Image = IIf(TBErrorCheck.Checked, My.Resources.x16CheckError, My.Resources.x16CheckErrorN) + RefreshPanelAll() + End Sub + + Private Sub TBPreviewOnClick_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBPreviewOnClick.Click, mnPreviewOnClick.Click + PreviewNote("", True) + PreviewOnClick = sender.Checked + TBPreviewOnClick.Checked = PreviewOnClick + mnPreviewOnClick.Checked = PreviewOnClick + TBPreviewOnClick.Image = IIf(PreviewOnClick, My.Resources.x16PreviewOnClick, My.Resources.x16PreviewOnClickN) + mnPreviewOnClick.Image = IIf(PreviewOnClick, My.Resources.x16PreviewOnClick, My.Resources.x16PreviewOnClickN) + End Sub + + 'Private Sub TBPreviewErrorCheck_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) + ' PreviewErrorCheck = TBPreviewErrorCheck.Checked + ' TBPreviewErrorCheck.Image = IIf(PreviewErrorCheck, My.Resources.x16PreviewCheck, My.Resources.x16PreviewCheckN) + 'End Sub + + Private Sub TBShowFileName_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBShowFileName.Click, mnShowFileName.Click + ShowFileName = sender.Checked + TBShowFileName.Checked = ShowFileName + mnShowFileName.Checked = ShowFileName + TBShowFileName.Image = IIf(ShowFileName, My.Resources.x16ShowFileName, My.Resources.x16ShowFileNameN) + mnShowFileName.Image = IIf(ShowFileName, My.Resources.x16ShowFileName, My.Resources.x16ShowFileNameN) + RefreshPanelAll() + End Sub + + Private Sub TBCut_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBCut.Click, mnCut.Click + Dim xUndo As UndoRedo.LinkedURCmd = Nothing + Dim xRedo As UndoRedo.LinkedURCmd = New UndoRedo.Void + Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo + Me.RedoRemoveNoteSelected(True, xUndo, xRedo) + 'Dim xRedo As String = sCmdKDs() + 'Dim xUndo As String = sCmdKs(True) + + CopyNotes(False) + RemoveNotes(False) + AddUndo(xUndo, xBaseRedo.Next) + + SortByVPositionInsertion() + UpdatePairing() + CalculateTotalPlayableNotes() + RefreshPanelAll() + POStatusRefresh() + CalculateGreatestVPosition() + End Sub + + Private Sub TBCopy_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBCopy.Click, mnCopy.Click + CopyNotes() + RefreshPanelAll() + POStatusRefresh() + End Sub + + Private Sub TBPaste_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBPaste.Click, mnPaste.Click + AddNotesFromClipboard() + + Dim xUndo As UndoRedo.LinkedURCmd = Nothing + Dim xRedo As UndoRedo.LinkedURCmd = New UndoRedo.Void + Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo + Me.RedoAddNoteSelected(True, xUndo, xRedo) + AddUndo(xUndo, xBaseRedo.Next) + + 'AddUndo(sCmdKDs(), sCmdKs(True)) + + SortByVPositionInsertion() + UpdatePairing() + CalculateTotalPlayableNotes() + RefreshPanelAll() + POStatusRefresh() + CalculateGreatestVPosition() + End Sub + + 'Private Function pArgPath(ByVal I As Integer) + ' Return Mid(pArgs(I), 1, InStr(pArgs(I), vbCrLf) - 1) + 'End Function + + Private Function GetFileName(ByVal s As String) As String + Dim fslash As Integer = InStrRev(s, "/") + Dim bslash As Integer = InStrRev(s, "\") + Return Mid(s, IIf(fslash > bslash, fslash, bslash) + 1) + End Function + + Private Function ExcludeFileName(ByVal s As String) As String + Dim fslash As Integer = InStrRev(s, "/") + Dim bslash As Integer = InStrRev(s, "\") + If (bslash Or fslash) = 0 Then Return "" + Return Mid(s, 1, IIf(fslash > bslash, fslash, bslash) - 1) + End Function + + Private Sub PlayerMissingPrompt() + Dim xArg As MainWindow.PlayerArguments = pArgs(CurrentPlayer) + MsgBox(Strings.Messages.CannotFind.Replace("{}", PrevCodeToReal(xArg.Path)) & vbCrLf & + Strings.Messages.PleaseRespecifyPath, MsgBoxStyle.Critical, Strings.Messages.PlayerNotFound) + + Dim xDOpen As New OpenFileDialog + xDOpen.InitialDirectory = IIf(ExcludeFileName(PrevCodeToReal(xArg.Path)) = "", + My.Application.Info.DirectoryPath, + ExcludeFileName(PrevCodeToReal(xArg.Path))) + xDOpen.FileName = PrevCodeToReal(xArg.Path) + xDOpen.Filter = Strings.FileType.EXE & "|*.exe" + xDOpen.DefaultExt = "exe" + If xDOpen.ShowDialog = Windows.Forms.DialogResult.Cancel Then Exit Sub + + 'pArgs(CurrentPlayer) = Replace(xDOpen.FileName, My.Application.Info.DirectoryPath, "") & _ + ' Mid(pArgs(CurrentPlayer), InStr(pArgs(CurrentPlayer), vbCrLf)) + 'xStr = Split(pArgs(CurrentPlayer), vbCrLf) + pArgs(CurrentPlayer).Path = Replace(xDOpen.FileName, My.Application.Info.DirectoryPath, "") + xArg = pArgs(CurrentPlayer) + End Sub + + Private Sub TBPlay_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBPlay.Click, mnPlay.Click + 'Dim xStr() As String = Split(pArgs(CurrentPlayer), vbCrLf) + Dim xArg As MainWindow.PlayerArguments = pArgs(CurrentPlayer) + + If Not File.Exists(PrevCodeToReal(xArg.Path)) Then + PlayerMissingPrompt() + xArg = pArgs(CurrentPlayer) + End If + + ' az: Treat it like we cancelled the operation + If Not File.Exists(PrevCodeToReal(xArg.Path)) Then + Exit Sub + End If + + Dim xStrAll As String = SaveBMS() + Dim xFileName As String = IIf(Not PathIsValid(FileName), + IIf(InitPath = "", My.Application.Info.DirectoryPath, InitPath), + ExcludeFileName(FileName)) & "\___TempBMS.bms" + My.Computer.FileSystem.WriteAllText(xFileName, xStrAll, False, TextEncoding) + + AddTempFileList(xFileName) + System.Diagnostics.Process.Start(PrevCodeToReal(xArg.Path), PrevCodeToReal(xArg.aHere)) + End Sub + + Private Sub TBPlayB_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBPlayB.Click, mnPlayB.Click + 'Dim xStr() As String = Split(pArgs(CurrentPlayer), vbCrLf) + Dim xArg As MainWindow.PlayerArguments = pArgs(CurrentPlayer) + + If Not File.Exists(PrevCodeToReal(xArg.Path)) Then + PlayerMissingPrompt() + xArg = pArgs(CurrentPlayer) + End If + + If Not File.Exists(PrevCodeToReal(xArg.Path)) Then + Exit Sub + End If + + Dim xStrAll As String = SaveBMS() + Dim xFileName As String = IIf(Not PathIsValid(FileName), + IIf(InitPath = "", My.Application.Info.DirectoryPath, InitPath), + ExcludeFileName(FileName)) & "\___TempBMS.bms" + My.Computer.FileSystem.WriteAllText(xFileName, xStrAll, False, TextEncoding) + + AddTempFileList(xFileName) + + System.Diagnostics.Process.Start(PrevCodeToReal(xArg.Path), PrevCodeToReal(xArg.aBegin)) + End Sub + + Private Sub TBStop_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBStop.Click, mnStop.Click + 'Dim xStr() As String = Split(pArgs(CurrentPlayer), vbCrLf) + Dim xArg As MainWindow.PlayerArguments = pArgs(CurrentPlayer) + + If Not File.Exists(PrevCodeToReal(xArg.Path)) Then + PlayerMissingPrompt() + xArg = pArgs(CurrentPlayer) + End If + + If Not File.Exists(PrevCodeToReal(xArg.Path)) Then + Exit Sub + End If + + System.Diagnostics.Process.Start(PrevCodeToReal(xArg.Path), PrevCodeToReal(xArg.aStop)) + End Sub + + Private Sub AddTempFileList(ByVal s As String) + Dim xAdd As Boolean = True + If pTempFileNames IsNot Nothing Then + For Each xStr1 As String In pTempFileNames + If xStr1 = s Then xAdd = False : Exit For + Next + End If + + If xAdd Then + ReDim Preserve pTempFileNames(UBound(pTempFileNames) + 1) + pTempFileNames(UBound(pTempFileNames)) = s + End If + End Sub + + Private Sub TBStatistics_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBStatistics.Click, mnStatistics.Click + SortByVPositionInsertion() + UpdatePairing() + + Dim data(6, 5) As Integer + For i As Integer = 1 To UBound(Notes) + With Notes(i) + Dim row As Integer = -1 + Select Case .ColumnIndex + Case niSCROLL : row = 0 + Case niBPM : row = 1 + Case niSTOP : row = 2 + Case niA1, niA2, niA3, niA4, niA5, niA6, niA7, niA8 : row = 3 + Case niD1, niD2, niD3, niD4, niD5, niD6, niD7, niD8 : row = 4 + Case Is >= niB : row = 5 + Case Else : row = 6 + End Select + + +StartCount: If Not NTInput Then + If Not .LongNote Then data(row, 0) += 1 + If .LongNote Then data(row, 1) += 1 + If .Value \ 10000 = LnObj Then data(row, 2) += 1 + If .Hidden Then data(row, 3) += 1 + If .HasError Then data(row, 4) += 1 + data(row, 5) += 1 + + Else + Dim noteUnit As Integer = 1 + If .Length = 0 Then data(row, 0) += 1 + If .Length <> 0 Then data(row, 1) += 2 : noteUnit = 2 + + If .Value \ 10000 = LnObj Then data(row, 2) += noteUnit + If .Hidden Then data(row, 3) += noteUnit + If .HasError Then data(row, 4) += noteUnit + data(row, 5) += noteUnit + + End If + + If row <> 6 Then row = 6 : GoTo StartCount + End With + Next + + Dim dStat As New dgStatistics(data) + dStat.ShowDialog() + End Sub + + ''' + ''' Remark: Pls sort and updatepairing before this process. + ''' + + Private Sub CalculateTotalPlayableNotes() + Dim xI1 As Integer + Dim xIAll As Integer = 0 + + If Not NTInput Then + For xI1 = 1 To UBound(Notes) + If Notes(xI1).ColumnIndex >= niA1 And Notes(xI1).ColumnIndex <= niA8 Then xIAll += 1 + Next + + Else + For xI1 = 1 To UBound(Notes) + If Notes(xI1).ColumnIndex >= niA1 And Notes(xI1).ColumnIndex <= niA8 Then + xIAll += 1 + If Notes(xI1).Length <> 0 Then xIAll += 1 + End If + Next + End If + + TBStatistics.Text = xIAll + End Sub + + Public Function GetMouseVPosition(Optional snap As Boolean = True) + Dim panHeight = spMain(PanelFocus).Height + Dim panDisplacement = PanelVScroll(PanelFocus) + Dim vpos = (panHeight - panDisplacement * gxHeight - MouseMoveStatus.Y - 1) / gxHeight + If snap Then + Return SnapToGrid(vpos) + Else + Return vpos + End If + End Function + + Private Sub POStatusRefresh() + + If TBSelect.Checked Then + Dim xI1 As Integer = KMouseOver + If xI1 < 0 Then + + TempVPosition = GetMouseVPosition(gSnap) + + SelectedColumn = GetColumnAtX(MouseMoveStatus.X, PanelHScroll(PanelFocus)) + + Dim xMeasure As Integer = MeasureAtDisplacement(TempVPosition) + Dim xMLength As Double = MeasureLength(xMeasure) + Dim xVposMod As Double = TempVPosition - MeasureBottom(xMeasure) + Dim xGCD As Double = GCD(IIf(xVposMod = 0, xMLength, xVposMod), xMLength) + + FSP1.Text = (xVposMod * gDivide / 192).ToString & " / " & (xMLength * gDivide / 192).ToString & " " + FSP2.Text = xVposMod.ToString & " / " & xMLength & " " + FSP3.Text = CInt(xVposMod / xGCD).ToString & " / " & CInt(xMLength / xGCD).ToString & " " + FSP4.Text = TempVPosition.ToString() & " " + TimeStatusLabel.Text = GetTimeFromVPosition(TempVPosition).ToString("F4") + FSC.Text = nTitle(SelectedColumn) + FSW.Text = "" + FSM.Text = Add3Zeros(xMeasure) + FST.Text = "" + FSH.Text = "" + FSE.Text = "" + + Else + Dim xMeasure As Integer = MeasureAtDisplacement(Notes(xI1).VPosition) + Dim xMLength As Double = MeasureLength(xMeasure) + Dim xVposMod As Double = Notes(xI1).VPosition - MeasureBottom(xMeasure) + Dim xGCD As Double = GCD(IIf(xVposMod = 0, xMLength, xVposMod), xMLength) + + FSP1.Text = (xVposMod * gDivide / 192).ToString & " / " & (xMLength * gDivide / 192).ToString & " " + FSP2.Text = xVposMod.ToString & " / " & xMLength & " " + FSP3.Text = CInt(xVposMod / xGCD).ToString & " / " & CInt(xMLength / xGCD).ToString & " " + FSP4.Text = Notes(xI1).VPosition.ToString() & " " + TimeStatusLabel.Text = GetTimeFromVPosition(TempVPosition).ToString("F4") + FSC.Text = nTitle(Notes(xI1).ColumnIndex) + FSW.Text = IIf(IsColumnNumeric(Notes(xI1).ColumnIndex), + Notes(xI1).Value / 10000, + C10to36(Notes(xI1).Value \ 10000)) + FSM.Text = Add3Zeros(xMeasure) + FST.Text = IIf(NTInput, Strings.StatusBar.Length & " = " & Notes(xI1).Length, IIf(Notes(xI1).LongNote, Strings.StatusBar.LongNote, "")) + FSH.Text = IIf(Notes(xI1).Hidden, Strings.StatusBar.Hidden, "") + FSE.Text = IIf(Notes(xI1).HasError, Strings.StatusBar.Err, "") + + End If + + ElseIf TBWrite.Checked Then + If SelectedColumn < 0 Then Exit Sub + + Dim xMeasure As Integer = MeasureAtDisplacement(TempVPosition) + Dim xMLength As Double = MeasureLength(xMeasure) + Dim xVposMod As Double = TempVPosition - MeasureBottom(xMeasure) + Dim xGCD As Double = GCD(IIf(xVposMod = 0, xMLength, xVposMod), xMLength) + + FSP1.Text = (xVposMod * gDivide / 192).ToString & " / " & (xMLength * gDivide / 192).ToString & " " + FSP2.Text = xVposMod.ToString & " / " & xMLength & " " + FSP3.Text = CInt(xVposMod / xGCD).ToString & " / " & CInt(xMLength / xGCD).ToString & " " + FSP4.Text = TempVPosition.ToString() & " " + TimeStatusLabel.Text = GetTimeFromVPosition(TempVPosition).ToString("F4") + FSC.Text = nTitle(SelectedColumn) + FSW.Text = C10to36(LWAV.SelectedIndex + 1) + FSM.Text = Add3Zeros(xMeasure) + FST.Text = IIf(NTInput, TempLength, IIf(My.Computer.Keyboard.ShiftKeyDown, Strings.StatusBar.LongNote, "")) + FSH.Text = IIf(My.Computer.Keyboard.CtrlKeyDown, Strings.StatusBar.Hidden, "") + + ElseIf TBTimeSelect.Checked Then + FSSS.Text = vSelStart + FSSL.Text = vSelLength + FSSH.Text = vSelHalf + + End If + FStatus.Invalidate() + End Sub + + Private Function GetTimeFromVPosition(vpos As Double) As Double + Dim timing_notes = (From note In Notes + Where note.ColumnIndex = niBPM Or note.ColumnIndex = niSTOP + Group By Column = note.ColumnIndex + Into NoteGroups = Group).ToDictionary(Function(x) x.Column, Function(x) x.NoteGroups) + + Dim bpm_notes = timing_notes.Item(niBPM) + + Dim stop_notes As IEnumerable(Of Note) = Nothing + + If timing_notes.ContainsKey(niSTOP) Then + stop_notes = timing_notes.Item(niSTOP) + End If + + + Dim stop_contrib As Double + Dim bpm_contrib As Double + + For i = 0 To bpm_notes.Count() - 1 + ' az: sum bpm contribution first + Dim duration = 0.0 + Dim current_note = bpm_notes.ElementAt(i) + Dim notevpos = Math.Max(0, current_note.VPosition) + + If i + 1 <> bpm_notes.Count() Then + Dim next_note = bpm_notes.ElementAt(i + 1) + duration = next_note.VPosition - notevpos + Else + duration = vpos - notevpos + End If + + Dim current_bps = 60 / (current_note.Value / 10000) + bpm_contrib += current_bps * duration / 48 + + If stop_notes Is Nothing Then Continue For + + Dim stops = From stp In stop_notes + Where stp.VPosition >= notevpos And + stp.VPosition < notevpos + duration + + Dim stop_beats = stops.Sum(Function(x) x.Value / 10000.0) / 48 + stop_contrib += current_bps * stop_beats + + Next + + Return stop_contrib + bpm_contrib + End Function + + Private Sub POBStorm_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles POBStorm.Click + + End Sub + + Private Sub POBMirror_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles POBMirror.Click + Dim xI1 As Integer + Dim xI2 As Integer + Dim xUndo As UndoRedo.LinkedURCmd = Nothing + Dim xRedo As UndoRedo.LinkedURCmd = New UndoRedo.Void + Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo + 'xRedo &= sCmdKM(niA1, .VPosition, .Value, IIf(NTInput, .Length, .LongNote), .Hidden, RealColumnToEnabled(niA7) - RealColumnToEnabled(niA1), 0, True) & vbCrLf + 'xUndo &= sCmdKM(niA7, .VPosition, .Value, IIf(NTInput, .Length, .LongNote), .Hidden, RealColumnToEnabled(niA1) - RealColumnToEnabled(niA7), 0, True) & vbCrLf + + ' Array 0: Unmodified array + ' Array 1: Modified array based on range + ' Array R: Array 1 reversed + Dim xniArray0 = New Integer() {niA1, niA2, niA3, niA4, niA5, niA6, niA7, niA8, niD1, niD2, niD3, niD4, niD5, niD6, niD7, niD8} + ' Dim xniArray1 = Integer() ' xniArray0 + + ' New function: Declare an array to see the range of selected notes. B columns ignored. + + Dim xRangeL As Integer = niB ' Big number + Dim xRangeR As Integer = 0 ' Smol number + + ' Range finder + For xI1 = 1 To UBound(Notes) + If Not Notes(xI1).Selected Then Continue For + If xRangeL > Notes(xI1).ColumnIndex Then xRangeL = Notes(xI1).ColumnIndex + If xRangeR < Notes(xI1).ColumnIndex Then xRangeR = Notes(xI1).ColumnIndex + Next + + ' Modify xniArray based on range + ' Out of range + If xRangeL > niD8 Or xRangeR < niA1 Then GoTo DoNothing + + ' Semi-in Range + ' Cut off left side + If xRangeL < niA1 Then + xRangeL = 0 + GoTo MirrorSkip1 + End If + + For xI1 = 0 To xniArray0.Length + If xniArray0(xI1) = xRangeL Then + xRangeL = xI1 + Exit For + End If + Next + +MirrorSkip1: + ' Cut off right side + If xRangeR > niD8 Then + xRangeR = xniArray0.Length + GoTo MirrorSkip2 + End If + + For xI1 = 0 To xniArray0.Length + If xniArray0(xI1) = xRangeR Then + xRangeR = xI1 + 1 + Exit For + End If + Next + +MirrorSkip2: + + Dim xniArray1(xRangeR - xRangeL - 1) + For xI1 = 0 To xRangeR - xRangeL - 1 + xniArray1(xI1) = xniArray0(xI1 + xRangeL) + Next + + Dim xniArrayR = xniArray1.Reverse() + Dim xniArrayLen = xniArray1.Length + + Dim xCol As Integer + For xI1 = 1 To UBound(Notes) + If Not Notes(xI1).Selected Then Continue For + + xCol = Notes(xI1).ColumnIndex + ' MsgBox("Test" & "xCol: " & xCol & " xI1: " & xI1) + For xI2 = 0 To xniArrayLen - 1 + ' MsgBox("Test 2 xI2: " & xI2) + If xCol = xniArray1(xI2) Then + xCol = xniArrayR(xI2) + Exit For + End If + + Next + + Me.RedoMoveNote(Notes(xI1), xCol, Notes(xI1).VPosition, xUndo, xRedo) + Notes(xI1).ColumnIndex = xCol + Next + +DoNothing: + + AddUndo(xUndo, xBaseRedo.Next) + UpdatePairing() + RefreshPanelAll() + End Sub + + + Private Sub POBFlip_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles POBFlip.Click + Dim xI1 As Integer + Dim xI2 As Integer + Dim xUndo As UndoRedo.LinkedURCmd = Nothing + Dim xRedo As UndoRedo.LinkedURCmd = New UndoRedo.Void + Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo + + ' Array 1: Unmodified array + ' Array R: Flipped array + Dim xniArray1 = New Integer() {niA1, niA2, niA3, niA4, niA5, niA6, niA7, niA8, niD1, niD2, niD3, niD4, niD5, niD6, niD7, niD8} + Dim xniArrayR = New Integer() {niD8, niD1, niD2, niD3, niD4, niD5, niD6, niD7, niA2, niA3, niA4, niA5, niA6, niA7, niA8, niA1} + + Dim xniArrayLen = xniArray1.Length + + Dim xCol As Integer + For xI1 = 1 To UBound(Notes) + If Not Notes(xI1).Selected Then Continue For + + xCol = Notes(xI1).ColumnIndex + For xI2 = 0 To xniArrayLen - 1 + If xCol = xniArray1(xI2) Then + xCol = xniArrayR(xI2) + Exit For + End If + + Next + + Me.RedoMoveNote(Notes(xI1), xCol, Notes(xI1).VPosition, xUndo, xRedo) + Notes(xI1).ColumnIndex = xCol + Next + + AddUndo(xUndo, xBaseRedo.Next) + UpdatePairing() + RefreshPanelAll() + End Sub + + Private Sub POBRandom_Click(sender As Object, e As EventArgs) Handles POBRandom.Click + Dim xI1 As Integer + Dim xI2 As Integer + Dim xUndo As UndoRedo.LinkedURCmd = Nothing + Dim xRedo As UndoRedo.LinkedURCmd = New UndoRedo.Void + Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo + 'xRedo &= sCmdKM(niA1, .VPosition, .Value, IIf(NTInput, .Length, .LongNote), .Hidden, RealColumnToEnabled(niA7) - RealColumnToEnabled(niA1), 0, True) & vbCrLf + 'xUndo &= sCmdKM(niA7, .VPosition, .Value, IIf(NTInput, .Length, .LongNote), .Hidden, RealColumnToEnabled(niA1) - RealColumnToEnabled(niA7), 0, True) & vbCrLf + + ' Array 0: Unmodified array + ' Array 1: Modified array based on range + ' Array R: Array 1 reversed + Dim xniArray0 = New Integer() {niA1, niA2, niA3, niA4, niA5, niA6, niA7, niA8, niD1, niD2, niD3, niD4, niD5, niD6, niD7, niD8} + ' Dim xniArray1 = Integer() ' xniArray0 + + ' New function: Declare an array to see the range of selected notes. B columns ignored. + + Dim xRangeL As Integer = niB ' Big number + Dim xRangeR As Integer = 0 ' Smol number + + ' Range finder + For xI1 = 1 To UBound(Notes) + If Not Notes(xI1).Selected Then Continue For + If xRangeL > Notes(xI1).ColumnIndex Then xRangeL = Notes(xI1).ColumnIndex + If xRangeR < Notes(xI1).ColumnIndex Then xRangeR = Notes(xI1).ColumnIndex + Next + + ' Modify xniArray based on range + ' Out of range + If xRangeL > niD8 Or xRangeR < niA1 Then GoTo DoNothing + + ' Semi-in Range + ' Cut off left side + If xRangeL < niA1 Then + xRangeL = 0 + GoTo Skip1 + End If + + For xI1 = 0 To xniArray0.Length + If xniArray0(xI1) = xRangeL Then + xRangeL = xI1 + Exit For + End If + Next + +Skip1: + ' Cut off right side + If xRangeR > niD8 Then + xRangeR = xniArray0.Length + GoTo Skip2 + End If + + For xI1 = 0 To xniArray0.Length + If xniArray0(xI1) = xRangeR Then + xRangeR = xI1 + 1 + Exit For + End If + Next + +Skip2: + + Dim xniArray1(xRangeR - xRangeL - 1) + For xI1 = 0 To xRangeR - xRangeL - 1 + xniArray1(xI1) = xniArray0(xI1 + xRangeL) + Next + + Dim xniArrayLen = xniArray1.Length + ' xniArrayR: Randomized array + Dim xniArrayR = xniArray1.Clone() + Shuffle(xniArrayR, xniArrayLen) + + Dim xCol As Integer + For xI1 = 1 To UBound(Notes) + If Not Notes(xI1).Selected Then Continue For + + xCol = Notes(xI1).ColumnIndex + For xI2 = 0 To xniArrayLen - 1 + If xCol = xniArray1(xI2) Then + xCol = xniArrayR(xI2) + Exit For + End If + + Next + + Me.RedoMoveNote(Notes(xI1), xCol, Notes(xI1).VPosition, xUndo, xRedo) + Notes(xI1).ColumnIndex = xCol + Next + +DoNothing: + + AddUndo(xUndo, xBaseRedo.Next) + UpdatePairing() + RefreshPanelAll() + End Sub + + + Private Sub ValidateSelection() + If vSelStart < 0 Then vSelLength += vSelStart : vSelHalf += vSelStart : vSelStart = 0 + If vSelStart > GetMaxVPosition() - 1 Then vSelLength += vSelStart - GetMaxVPosition() + 1 : vSelHalf += vSelStart - GetMaxVPosition() + 1 : vSelStart = GetMaxVPosition() - 1 + If vSelStart + vSelLength < 0 Then vSelLength = -vSelStart + If vSelStart + vSelLength > GetMaxVPosition() - 1 Then vSelLength = GetMaxVPosition() - 1 - vSelStart + + If Math.Sign(vSelHalf) <> Math.Sign(vSelLength) Then vSelHalf = 0 + If Math.Abs(vSelHalf) > Math.Abs(vSelLength) Then vSelHalf = vSelLength + End Sub + + + + Private Sub TVCM_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TVCM.KeyDown + If e.KeyCode = Keys.Enter Then + TVCM.Text = Val(TVCM.Text) + If Val(TVCM.Text) <= 0 Then + MsgBox(Strings.Messages.NegativeFactorError, MsgBoxStyle.Critical, Strings.Messages.Err) + TVCM.Text = 1 + TVCM.Focus() + TVCM.SelectAll() + Else + BVCApply_Click(BVCApply, New System.EventArgs) + End If + End If + End Sub + + Private Sub TVCM_LostFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles TVCM.LostFocus + TVCM.Text = Val(TVCM.Text) + If Val(TVCM.Text) <= 0 Then + MsgBox(Strings.Messages.NegativeFactorError, MsgBoxStyle.Critical, Strings.Messages.Err) + TVCM.Text = 1 + TVCM.Focus() + TVCM.SelectAll() + End If + End Sub + + Private Sub TVCD_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TVCD.KeyDown + If e.KeyCode = Keys.Enter Then + TVCD.Text = Val(TVCD.Text) + If Val(TVCD.Text) <= 0 Then + MsgBox(Strings.Messages.NegativeDivisorError, MsgBoxStyle.Critical, Strings.Messages.Err) + TVCD.Text = 1 + TVCD.Focus() + TVCD.SelectAll() + Else + BVCApply_Click(BVCApply, New System.EventArgs) + End If + End If + End Sub + + Private Sub TVCD_LostFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles TVCD.LostFocus + TVCD.Text = Val(TVCD.Text) + If Val(TVCD.Text) <= 0 Then + MsgBox(Strings.Messages.NegativeDivisorError, MsgBoxStyle.Critical, Strings.Messages.Err) + TVCD.Text = 1 + TVCD.Focus() + TVCD.SelectAll() + End If + End Sub + + Private Sub TVCBPM_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TVCBPM.KeyDown + If e.KeyCode = Keys.Enter Then + TVCBPM.Text = Val(TVCBPM.Text) + If Val(TVCBPM.Text) <= 0 Then + MsgBox(Strings.Messages.NegativeDivisorError, MsgBoxStyle.Critical, Strings.Messages.Err) + TVCBPM.Text = Notes(0).Value / 10000 + TVCBPM.Focus() + TVCBPM.SelectAll() + Else + BVCCalculate_Click(BVCCalculate, New System.EventArgs) + End If + End If + End Sub + + Private Sub TVCBPM_LostFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles TVCBPM.LostFocus + TVCBPM.Text = Val(TVCBPM.Text) + If Val(TVCBPM.Text) <= 0 Then + MsgBox(Strings.Messages.NegativeDivisorError, MsgBoxStyle.Critical, Strings.Messages.Err) + TVCBPM.Text = Notes(0).Value / 10000 + TVCBPM.Focus() + TVCBPM.SelectAll() + End If + End Sub + + Private Function FindNoteIndex(note As Note) As Integer + Dim xI1 As Integer + If NTInput Then + For xI1 = 1 To UBound(Notes) + If Notes(xI1).equalsNT(note) Then Return xI1 + Next + Else + For xI1 = 1 To UBound(Notes) + If Notes(xI1).equalsBMSE(note) Then Return xI1 + Next + End If + Return xI1 + End Function + + + + + Private Function sIA() As Integer + Return IIf(sI > 98, 0, sI + 1) + End Function + + Private Function sIM() As Integer + Return IIf(sI < 1, 99, sI - 1) + End Function + + + + Private Sub TBUndo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBUndo.Click, mnUndo.Click + KMouseOver = -1 + 'KMouseDown = -1 + ReDim SelectedNotes(-1) + If sUndo(sI).ofType = UndoRedo.opNoOperation Then Exit Sub + PerformCommand(sUndo(sI)) + sI = sIM() + + TBUndo.Enabled = sUndo(sI).ofType <> UndoRedo.opNoOperation + TBRedo.Enabled = sRedo(sIA).ofType <> UndoRedo.opNoOperation + mnUndo.Enabled = sUndo(sI).ofType <> UndoRedo.opNoOperation + mnRedo.Enabled = sRedo(sIA).ofType <> UndoRedo.opNoOperation + End Sub + + Private Sub TBRedo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBRedo.Click, mnRedo.Click + KMouseOver = -1 + 'KMouseDown = -1 + ReDim SelectedNotes(-1) + If sRedo(sIA).ofType = UndoRedo.opNoOperation Then Exit Sub + PerformCommand(sRedo(sIA)) + sI = sIA() + + TBUndo.Enabled = sUndo(sI).ofType <> UndoRedo.opNoOperation + TBRedo.Enabled = sRedo(sIA).ofType <> UndoRedo.opNoOperation + mnUndo.Enabled = sUndo(sI).ofType <> UndoRedo.opNoOperation + mnRedo.Enabled = sRedo(sIA).ofType <> UndoRedo.opNoOperation + End Sub + + 'Undo appends before, Redo appends after. + 'After a sequence of Commands, + ' Undo will be the first one to execute, + ' Redo will be the last one to execute. + 'Remember to save the first Redo. + + 'In case where undo is Nothing: Dont worry. + 'In case where redo is Nothing: + ' If only one redo is in a sequence, put Nothing. + ' If several redo are in a sequence, + ' Create Void first. + ' Record its reference into a seperate copy. (xBaseRedo = xRedo) + ' Use this xRedo as the BaseRedo. + ' When calling AddUndo subroutine, use xBaseRedo.Next as cRedo. + + 'Dim xUndo As UndoRedo.LinkedURCmd = Nothing + 'Dim xRedo As UndoRedo.LinkedURCmd = Nothing + '... 'Me.RedoRemoveNote(K(xI1), True, xUndo, xRedo) + 'AddUndo(xUndo, xRedo) + + 'Dim xUndo As UndoRedo.LinkedURCmd = Nothing + 'Dim xRedo As New UndoRedo.Void + 'Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo + '... 'Me.RedoRemoveNote(K(xI1), True, xUndo, xRedo) + 'AddUndo(xUndo, xBaseRedo.Next) + + + + Private Sub TBAbout_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) + Dim Aboutboxx1 As New AboutBox1() + 'If My.Computer.FileSystem.FileExists(My.Application.Info.DirectoryPath & "\About.png") Then + Aboutboxx1.bBitmap = My.Resources.About0 + 'Aboutboxx1.SelectBitmap() + Aboutboxx1.ClientSize = New Size(1000, 500) + Aboutboxx1.ClickToCopy.Visible = True + Aboutboxx1.ShowDialog(Me) + 'Else + ' MsgBox(locale.Messages.cannotfind & " ""About.png""", MsgBoxStyle.Critical, locale.Messages.err) + 'End If + End Sub + + Private Sub TBOptions_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBVOptions.Click, mnVOptions.Click + + Dim xDiag As New OpVisual(vo, column, LWAV.Font) + xDiag.ShowDialog(Me) + UpdateColumnsX() + RefreshPanelAll() + End Sub + + + Private Sub AddToPOWAV(ByVal xPath() As String) + Dim xIndices(LWAV.SelectedIndices.Count - 1) As Integer + LWAV.SelectedIndices.CopyTo(xIndices, 0) + If xIndices.Length = 0 Then Exit Sub + + If xIndices.Length < xPath.Length Then + Dim i As Integer = xIndices.Length + Dim currWavIndex As Integer = xIndices(UBound(xIndices)) + 1 + ReDim Preserve xIndices(UBound(xPath)) + + Do While i < xIndices.Length And currWavIndex <= 1294 + Do While currWavIndex <= 1294 AndAlso hWAV(currWavIndex + 1) <> "" + currWavIndex += 1 + Loop + If currWavIndex > 1294 Then Exit Do + + xIndices(i) = currWavIndex + currWavIndex += 1 + i += 1 + Loop + + If currWavIndex > 1294 Then + ReDim Preserve xPath(i - 1) + ReDim Preserve xIndices(i - 1) + End If + End If + + 'Dim xI2 As Integer = 0 + For xI1 As Integer = 0 To UBound(xPath) + 'If xI2 > UBound(xIndices) Then Exit For + 'hWAV(xIndices(xI2) + 1) = GetFileName(xPath(xI1)) + 'LWAV.Items.Item(xIndices(xI2)) = C10to36(xIndices(xI2) + 1) & ": " & GetFileName(xPath(xI1)) + hWAV(xIndices(xI1) + 1) = GetFileName(xPath(xI1)) + LWAV.Items.Item(xIndices(xI1)) = C10to36(xIndices(xI1) + 1) & ": " & GetFileName(xPath(xI1)) + 'xI2 += 1 + Next + + LWAV.SelectedIndices.Clear() + For xI1 As Integer = 0 To IIf(UBound(xIndices) < UBound(xPath), UBound(xIndices), UBound(xPath)) + LWAV.SelectedIndices.Add(xIndices(xI1)) + Next + + If IsSaved Then SetIsSaved(False) + RefreshPanelAll() + End Sub + + Private Sub POWAV_DragDrop(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles POWAV.DragDrop + ReDim DDFileName(-1) + If Not e.Data.GetDataPresent(DataFormats.FileDrop) Then Return + + Dim xOrigPath() As String = CType(e.Data.GetData(DataFormats.FileDrop), String()) + Dim xPath() As String = FilterFileBySupported(xOrigPath, SupportedAudioExtension) + Array.Sort(xPath) + If xPath.Length = 0 Then + RefreshPanelAll() + Exit Sub + End If + + AddToPOWAV(xPath) + End Sub + + Private Sub POWAV_DragEnter(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles POWAV.DragEnter + If e.Data.GetDataPresent(DataFormats.FileDrop) Then + e.Effect = DragDropEffects.Copy + DDFileName = FilterFileBySupported(CType(e.Data.GetData(DataFormats.FileDrop), String()), SupportedAudioExtension) + Else + e.Effect = DragDropEffects.None + End If + RefreshPanelAll() + End Sub + + Private Sub POWAV_DragLeave(ByVal sender As Object, ByVal e As System.EventArgs) Handles POWAV.DragLeave + ReDim DDFileName(-1) + RefreshPanelAll() + End Sub + + Private Sub POWAV_Resize(ByVal sender As Object, ByVal e As System.EventArgs) Handles POWAV.Resize + LWAV.Height = sender.Height - 25 + End Sub + Private Sub POBeat_Resize(ByVal sender As Object, ByVal e As System.EventArgs) Handles POBeat.Resize + LBeat.Height = POBeat.Height - 25 + End Sub + Private Sub POExpansion_Resize(ByVal sender As Object, ByVal e As System.EventArgs) Handles POExpansion.Resize + TExpansion.Height = POExpansion.Height - 2 + End Sub + + Private Sub mn_DropDownClosed(ByVal sender As Object, ByVal e As System.EventArgs) + sender.ForeColor = Color.White + End Sub + Private Sub mn_DropDownOpened(ByVal sender As Object, ByVal e As System.EventArgs) + sender.ForeColor = Color.Black + End Sub + Private Sub mn_MouseEnter(ByVal sender As Object, ByVal e As System.EventArgs) + If sender.Pressed Then Return + sender.ForeColor = Color.Black + End Sub + Private Sub mn_MouseLeave(ByVal sender As Object, ByVal e As System.EventArgs) + If sender.Pressed Then Return + sender.ForeColor = Color.White + End Sub + + Private Sub TBPOptions_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBPOptions.Click, mnPOptions.Click + Dim xDOp As New OpPlayer(CurrentPlayer) + xDOp.ShowDialog(Me) + End Sub + + Private Sub THGenre_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles _ + THGenre.TextChanged, THTitle.TextChanged, THArtist.TextChanged, THPlayLevel.TextChanged, CHRank.SelectedIndexChanged, TExpansion.TextChanged, + THSubTitle.TextChanged, THSubArtist.TextChanged, THStageFile.TextChanged, THBanner.TextChanged, THBackBMP.TextChanged, + CHDifficulty.SelectedIndexChanged, THExRank.TextChanged, THTotal.TextChanged, THComment.TextChanged + If IsSaved Then SetIsSaved(False) + End Sub + + Private Sub CHLnObj_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CHLnObj.SelectedIndexChanged + If IsSaved Then SetIsSaved(False) + LnObj = CHLnObj.SelectedIndex + UpdatePairing() + RefreshPanelAll() + End Sub + + Private Sub ConvertBMSE2NT() + ReDim SelectedNotes(-1) + SortByVPositionInsertion() + + For i2 As Integer = 0 To UBound(Notes) + Notes(i2).Length = 0.0# + Next + + Dim i As Integer = 1 + Dim j As Integer = 0 + Dim xUbound As Integer = UBound(Notes) + + Do While i <= xUbound + If Not Notes(i).LongNote Then i += 1 : Continue Do + + For j = i + 1 To xUbound + If Notes(j).ColumnIndex <> Notes(i).ColumnIndex Then Continue For + + If Notes(j).LongNote Then + Notes(i).Length = Notes(j).VPosition - Notes(i).VPosition + For j2 As Integer = j To xUbound - 1 + Notes(j2) = Notes(j2 + 1) + Next + xUbound -= 1 + Exit For + + ElseIf Notes(j).Value \ 10000 = LnObj Then + Exit For + + End If + Next + + i += 1 + Loop + + ReDim Preserve Notes(xUbound) + + For i = 0 To xUbound + Notes(i).LongNote = False + Next + + SortByVPositionInsertion() + UpdatePairing() + CalculateTotalPlayableNotes() + End Sub + + Private Sub ConvertNT2BMSE() + ReDim SelectedNotes(-1) + Dim xK(0) As Note + xK(0) = Notes(0) + + For xI1 As Integer = 1 To UBound(Notes) + ReDim Preserve xK(UBound(xK) + 1) + With xK(UBound(xK)) + .ColumnIndex = Notes(xI1).ColumnIndex + .LongNote = Notes(xI1).Length > 0 + .Landmine = Notes(xI1).Landmine + .Value = Notes(xI1).Value + .VPosition = Notes(xI1).VPosition + .Selected = Notes(xI1).Selected + .Hidden = Notes(xI1).Hidden + End With + + If Notes(xI1).Length > 0 Then + ReDim Preserve xK(UBound(xK) + 1) + With xK(UBound(xK)) + .ColumnIndex = Notes(xI1).ColumnIndex + .LongNote = True + .Landmine = False + .Value = Notes(xI1).Value + .VPosition = Notes(xI1).VPosition + Notes(xI1).Length + .Selected = Notes(xI1).Selected + .Hidden = Notes(xI1).Hidden + End With + End If + Next + + Notes = xK + + SortByVPositionInsertion() + UpdatePairing() + CalculateTotalPlayableNotes() + End Sub + + Private Sub TBWavIncrease_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBWavIncrease.Click + Dim xUndo As UndoRedo.LinkedURCmd = Nothing + Dim xRedo As UndoRedo.LinkedURCmd = New UndoRedo.Void + Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo + + TBWavIncrease.Checked = Not sender.Checked + Me.RedoWavIncrease(TBWavIncrease.Checked, xUndo, xRedo) + AddUndo(xUndo, xBaseRedo.Next) + End Sub + + Private Sub TBNTInput_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBNTInput.Click, mnNTInput.Click + 'Dim xUndo As String = "NT_" & CInt(NTInput) & "_0" & vbCrLf & "KZ" & vbCrLf & sCmdKsAll(False) + 'Dim xRedo As String = "NT_" & CInt(Not NTInput) & "_1" + Dim xUndo As UndoRedo.LinkedURCmd = Nothing + Dim xRedo As UndoRedo.LinkedURCmd = New UndoRedo.Void + Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo + + Me.RedoRemoveNoteAll(False, xUndo, xRedo) + + NTInput = sender.Checked + + TBNTInput.Checked = NTInput + mnNTInput.Checked = NTInput + POBLong.Enabled = Not NTInput + POBLongShort.Enabled = Not NTInput + + bAdjustLength = False + bAdjustUpper = False + + Me.RedoNT(NTInput, False, xUndo, xRedo) + If NTInput Then + ConvertBMSE2NT() + Else + ConvertNT2BMSE() + End If + Me.RedoAddNoteAll(False, xUndo, xRedo) + + AddUndo(xUndo, xBaseRedo.Next) + RefreshPanelAll() + End Sub + + Private Sub THBPM_ValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles THBPM.ValueChanged + If Notes IsNot Nothing Then Notes(0).Value = THBPM.Value * 10000 : RefreshPanelAll() + If IsSaved Then SetIsSaved(False) + End Sub + + Private Sub TWPosition_ValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TWPosition.ValueChanged + wPosition = TWPosition.Value + TWPosition2.Value = IIf(wPosition > TWPosition2.Maximum, TWPosition2.Maximum, wPosition) + RefreshPanelAll() + End Sub + + Private Sub TWLeft_ValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TWLeft.ValueChanged + wLeft = TWLeft.Value + TWLeft2.Value = IIf(wLeft > TWLeft2.Maximum, TWLeft2.Maximum, wLeft) + RefreshPanelAll() + End Sub + + Private Sub TWWidth_ValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TWWidth.ValueChanged + wWidth = TWWidth.Value + TWWidth2.Value = IIf(wWidth > TWWidth2.Maximum, TWWidth2.Maximum, wWidth) + RefreshPanelAll() + End Sub + + Private Sub TWPrecision_ValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TWPrecision.ValueChanged + wPrecision = TWPrecision.Value + TWPrecision2.Value = IIf(wPrecision > TWPrecision2.Maximum, TWPrecision2.Maximum, wPrecision) + RefreshPanelAll() + End Sub + + Private Sub TWTransparency_ValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TWTransparency.ValueChanged + TWTransparency2.Value = TWTransparency.Value + vo.pBGMWav.Color = Color.FromArgb(TWTransparency.Value, vo.pBGMWav.Color) + RefreshPanelAll() + End Sub + + Private Sub TWSaturation_ValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TWSaturation.ValueChanged + Dim xColor As Color = vo.pBGMWav.Color + TWSaturation2.Value = TWSaturation.Value + vo.pBGMWav.Color = HSL2RGB(xColor.GetHue, TWSaturation.Value, xColor.GetBrightness * 1000, xColor.A) + RefreshPanelAll() + End Sub + + Private Sub TWPosition2_Scroll(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TWPosition2.Scroll + TWPosition.Value = TWPosition2.Value + End Sub + + Private Sub TWLeft2_Scroll(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TWLeft2.Scroll + TWLeft.Value = TWLeft2.Value + End Sub + + Private Sub TWWidth2_Scroll(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TWWidth2.Scroll + TWWidth.Value = TWWidth2.Value + End Sub + + Private Sub TWPrecision2_Scroll(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TWPrecision2.Scroll + TWPrecision.Value = TWPrecision2.Value + End Sub + + Private Sub TWTransparency2_Scroll(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TWTransparency2.Scroll + TWTransparency.Value = TWTransparency2.Value + End Sub + + Private Sub TWSaturation2_Scroll(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TWSaturation2.Scroll + TWSaturation.Value = TWSaturation2.Value + End Sub + + Private Sub TBLangDef_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBLangDef.Click + DispLang = "" + MsgBox(Strings.Messages.PreferencePostpone, MsgBoxStyle.Information) + End Sub + + Private Sub TBLangRefresh_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBLangRefresh.Click + For xI1 As Integer = cmnLanguage.Items.Count - 1 To 3 Step -1 + Try + cmnLanguage.Items.RemoveAt(xI1) + Catch ex As Exception + End Try + Next + + If Not Directory.Exists(My.Application.Info.DirectoryPath & "\Data") Then My.Computer.FileSystem.CreateDirectory(My.Application.Info.DirectoryPath & "\Data") + Dim xFileNames() As FileInfo = My.Computer.FileSystem.GetDirectoryInfo(My.Application.Info.DirectoryPath & "\Data").GetFiles("*.Lang.xml") + + For Each xStr As FileInfo In xFileNames + LoadLocaleXML(xStr) + Next + End Sub + + + Private Sub UpdateColumnsX() + column(0).Left = 0 + 'If col(0).Width = 0 Then col(0).Visible = False + + For xI1 As Integer = 1 To UBound(column) + column(xI1).Left = column(xI1 - 1).Left + IIf(column(xI1 - 1).isVisible, column(xI1 - 1).Width, 0) + 'If col(xI1).Width = 0 Then col(xI1).Visible = False + Next + HSL.Maximum = nLeft(gColumns) + column(niB).Width + HS.Maximum = nLeft(gColumns) + column(niB).Width + HSR.Maximum = nLeft(gColumns) + column(niB).Width + End Sub + + Private Sub CHPlayer_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CHPlayer.SelectedIndexChanged + If CHPlayer.SelectedIndex = -1 Then CHPlayer.SelectedIndex = 0 + + iPlayer = CHPlayer.SelectedIndex + Dim xGP2 As Boolean = iPlayer <> 0 + column(niD1).isVisible = xGP2 + column(niD2).isVisible = xGP2 + column(niD3).isVisible = xGP2 + column(niD4).isVisible = xGP2 + column(niD5).isVisible = xGP2 + column(niD6).isVisible = xGP2 + column(niD7).isVisible = xGP2 + column(niD8).isVisible = xGP2 + column(niS3).isVisible = xGP2 + + For xI1 As Integer = 1 To UBound(Notes) + Notes(xI1).Selected = Notes(xI1).Selected And nEnabled(Notes(xI1).ColumnIndex) + Next + 'AddUndo(xUndo, xRedo) + UpdateColumnsX() + + If IsInitializing Then Exit Sub + RefreshPanelAll() + End Sub + + Private Sub CGB_ValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CGB.ValueChanged + gColumns = niB + CGB.Value - 1 + UpdateColumnsX() + RefreshPanelAll() + End Sub + + Private Sub TBGOptions_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBGOptions.Click, mnGOptions.Click + Dim xTE As Integer + Select Case UCase(EncodingToString(TextEncoding)) ' az: wow seriously? is there really no better way? + Case "SYSTEM ANSI" : xTE = 0 + Case "LITTLE ENDIAN UTF16" : xTE = 1 + Case "ASCII" : xTE = 2 + Case "BIG ENDIAN UTF16" : xTE = 3 + Case "LITTLE ENDIAN UTF32" : xTE = 4 + Case "UTF7" : xTE = 5 + Case "UTF8" : xTE = 6 + Case "SJIS" : xTE = 7 + Case "EUC-KR" : xTE = 8 + Case Else : xTE = 0 + End Select + + Dim xDiag As New OpGeneral(gWheel, gPgUpDn, MiddleButtonMoveMethod, xTE, 192.0R / BMSGridLimit, + AutoSaveInterval, BeepWhileSaved, BPMx1296, STOPx1296, + AutoFocusMouseEnter, FirstClickDisabled, ClickStopPreview) + + If xDiag.ShowDialog() = Windows.Forms.DialogResult.OK Then + With xDiag + gWheel = .zWheel + gPgUpDn = .zPgUpDn + TextEncoding = .zEncoding + 'SortingMethod = .zSort + MiddleButtonMoveMethod = .zMiddle + AutoSaveInterval = .zAutoSave + BMSGridLimit = 192.0R / .zGridPartition + BeepWhileSaved = .cBeep.Checked + BPMx1296 = .cBpm1296.Checked + STOPx1296 = .cStop1296.Checked + AutoFocusMouseEnter = .cMEnterFocus.Checked + FirstClickDisabled = .cMClickFocus.Checked + ClickStopPreview = .cMStopPreview.Checked + ' KeyBindDP = .cMKeyBindDP.Checked + End With + If AutoSaveInterval Then AutoSaveTimer.Interval = AutoSaveInterval + AutoSaveTimer.Enabled = AutoSaveInterval + End If + End Sub + + Private Sub POBLong_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles POBLong.Click + If NTInput Then Exit Sub + + Dim xUndo As UndoRedo.LinkedURCmd = Nothing + Dim xRedo As UndoRedo.LinkedURCmd = New UndoRedo.Void + Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo + + For xI1 As Integer = 1 To UBound(Notes) + If Not Notes(xI1).Selected Then Continue For + + Me.RedoLongNoteModify(Notes(xI1), Notes(xI1).VPosition, True, xUndo, xRedo) + Notes(xI1).LongNote = True + Next + AddUndo(xUndo, xBaseRedo.Next) + SortByVPositionInsertion() + UpdatePairing() + RefreshPanelAll() + End Sub + + Private Sub POBNormal_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles POBShort.Click + Dim xUndo As UndoRedo.LinkedURCmd = Nothing + Dim xRedo As UndoRedo.LinkedURCmd = New UndoRedo.Void + Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo + + If Not NTInput Then + For xI1 As Integer = 1 To UBound(Notes) + If Not Notes(xI1).Selected Then Continue For + + Me.RedoLongNoteModify(Notes(xI1), Notes(xI1).VPosition, 0, xUndo, xRedo) + Notes(xI1).LongNote = False + Next + + Else + For xI1 As Integer = 1 To UBound(Notes) + If Not Notes(xI1).Selected Then Continue For + + Me.RedoLongNoteModify(Notes(xI1), Notes(xI1).VPosition, 0, xUndo, xRedo) + Notes(xI1).Length = 0 + Next + End If + + AddUndo(xUndo, xBaseRedo.Next) + SortByVPositionInsertion() + UpdatePairing() + RefreshPanelAll() + End Sub + + Private Sub POBNormalLong_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles POBLongShort.Click + If NTInput Then Exit Sub + + Dim xUndo As UndoRedo.LinkedURCmd = Nothing + Dim xRedo As UndoRedo.LinkedURCmd = New UndoRedo.Void + Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo + + For xI1 As Integer = 1 To UBound(Notes) + If Not Notes(xI1).Selected Then Continue For + + Me.RedoLongNoteModify(Notes(xI1), Notes(xI1).VPosition, Not Notes(xI1).LongNote, xUndo, xRedo) + Notes(xI1).LongNote = Not Notes(xI1).LongNote + Next + + AddUndo(xUndo, xBaseRedo.Next) + SortByVPositionInsertion() + UpdatePairing() + RefreshPanelAll() + End Sub + + Private Sub POBHidden_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles POBHidden.Click + Dim xUndo As UndoRedo.LinkedURCmd = Nothing + Dim xRedo As UndoRedo.LinkedURCmd = New UndoRedo.Void + Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo + + For xI1 As Integer = 1 To UBound(Notes) + If Not Notes(xI1).Selected Then Continue For + + Me.RedoHiddenNoteModify(Notes(xI1), True, True, xUndo, xRedo) + Notes(xI1).Hidden = True + Next + AddUndo(xUndo, xBaseRedo.Next) + SortByVPositionInsertion() + UpdatePairing() + RefreshPanelAll() + End Sub + + Private Sub POBVisible_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles POBVisible.Click + Dim xUndo As UndoRedo.LinkedURCmd = Nothing + Dim xRedo As UndoRedo.LinkedURCmd = New UndoRedo.Void + Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo + + For xI1 As Integer = 1 To UBound(Notes) + If Not Notes(xI1).Selected Then Continue For + + Me.RedoHiddenNoteModify(Notes(xI1), False, True, xUndo, xRedo) + Notes(xI1).Hidden = False + Next + AddUndo(xUndo, xBaseRedo.Next) + SortByVPositionInsertion() + UpdatePairing() + RefreshPanelAll() + End Sub + + Private Sub POBHiddenVisible_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles POBHiddenVisible.Click + Dim xUndo As UndoRedo.LinkedURCmd = Nothing + Dim xRedo As UndoRedo.LinkedURCmd = New UndoRedo.Void + Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo + + For xI1 As Integer = 1 To UBound(Notes) + If Not Notes(xI1).Selected Then Continue For + + Me.RedoHiddenNoteModify(Notes(xI1), Not Notes(xI1).Hidden, True, xUndo, xRedo) + Notes(xI1).Hidden = Not Notes(xI1).Hidden + Next + AddUndo(xUndo, xBaseRedo.Next) + SortByVPositionInsertion() + UpdatePairing() + RefreshPanelAll() + End Sub + + Private Sub POBModify_Click(ByVal sender As System.Object, ByVal e As EventArgs) Handles POBModify.Click + Dim xNum As Boolean = False + Dim xLbl As Boolean = False + Dim xI1 As Integer + + For xI1 = 1 To UBound(Notes) + If Notes(xI1).Selected AndAlso IsColumnNumeric(Notes(xI1).ColumnIndex) Then xNum = True : Exit For + Next + For xI1 = 1 To UBound(Notes) + If Notes(xI1).Selected AndAlso Not IsColumnNumeric(Notes(xI1).ColumnIndex) Then xLbl = True : Exit For + Next + If Not (xNum Or xLbl) Then Exit Sub + + If xNum Then + Dim xD1 As Double = Val(InputBox(Strings.Messages.PromptEnterNumeric, Text)) * 10000 + If Not xD1 = 0 Then + If xD1 <= 0 Then xD1 = 1 + + Dim xUndo As UndoRedo.LinkedURCmd = Nothing + Dim xRedo As UndoRedo.LinkedURCmd = New UndoRedo.Void + Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo + + For xI1 = 1 To UBound(Notes) + If Not IsColumnNumeric(Notes(xI1).ColumnIndex) Then Continue For + If Not Notes(xI1).Selected Then Continue For + + Me.RedoRelabelNote(Notes(xI1), xD1, xUndo, xRedo) + Notes(xI1).Value = xD1 + Next + AddUndo(xUndo, xBaseRedo.Next) + End If + End If + + If xLbl Then + Dim xStr As String = UCase(Trim(InputBox(Strings.Messages.PromptEnter, Me.Text))) + + If Len(xStr) = 0 Then GoTo Jump2 + If xStr = "00" Or xStr = "0" Then GoTo Jump1 + If Not Len(xStr) = 1 And Not Len(xStr) = 2 Then GoTo Jump1 + + Dim xI3 As Integer = Asc(Mid(xStr, 1, 1)) + If Not ((xI3 >= 48 And xI3 <= 57) Or (xI3 >= 65 And xI3 <= 90)) Then GoTo Jump1 + If Len(xStr) = 2 Then + Dim xI4 As Integer = Asc(Mid(xStr, 2, 1)) + If Not ((xI4 >= 48 And xI4 <= 57) Or (xI4 >= 65 And xI4 <= 90)) Then GoTo Jump1 + End If + Dim xVal As Integer = C36to10(xStr) * 10000 + + Dim xUndo As UndoRedo.LinkedURCmd = Nothing + Dim xRedo As UndoRedo.LinkedURCmd = New UndoRedo.Void + Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo + + For xI1 = 1 To UBound(Notes) + If IsColumnNumeric(Notes(xI1).ColumnIndex) Then Continue For + If Not Notes(xI1).Selected Then Continue For + + Me.RedoRelabelNote(Notes(xI1), xVal, xUndo, xRedo) + Notes(xI1).Value = xVal + Next + AddUndo(xUndo, xBaseRedo.Next) + GoTo Jump2 +Jump1: + MsgBox(Strings.Messages.InvalidLabel, MsgBoxStyle.Critical, Strings.Messages.Err) +Jump2: + End If + + RefreshPanelAll() + End Sub + + Private Sub TBMyO2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBMyO2.Click, mnMyO2.Click + Dim xDiag As New dgMyO2 + xDiag.Show() + End Sub + + + Private Sub TBFind_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBFind.Click, mnFind.Click + Dim xDiag As New diagFind(gColumns, Strings.Messages.Err, Strings.Messages.InvalidLabel) + xDiag.Show() + End Sub + + Private Function fdrCheck(ByVal xNote As Note) As Boolean + Return xNote.VPosition >= MeasureBottom(fdriMesL) And xNote.VPosition < MeasureBottom(fdriMesU) + MeasureLength(fdriMesU) AndAlso + IIf(IsColumnNumeric(xNote.ColumnIndex), + xNote.Value >= fdriValL And xNote.Value <= fdriValU, + xNote.Value >= fdriLblL And xNote.Value <= fdriLblU) AndAlso + Array.IndexOf(fdriCol, xNote.ColumnIndex - 1) <> -1 + ' lol Fixed + End Function + + Private Function fdrRangeS(ByVal xbLim1 As Boolean, ByVal xbLim2 As Boolean, ByVal xVal As Boolean) As Boolean + Return (Not xbLim1 And xbLim2 And xVal) Or (xbLim1 And Not xbLim2 And Not xVal) Or (xbLim1 And xbLim2) + End Function + + Public Sub fdrSelect(ByVal iRange As Integer, + ByVal xMesL As Integer, ByVal xMesU As Integer, + ByVal xLblL As String, ByVal xLblU As String, + ByVal xValL As Integer, ByVal xValU As Integer, + ByVal iCol() As Integer) + + fdriMesL = xMesL + fdriMesU = xMesU + fdriLblL = C36to10(xLblL) * 10000 + fdriLblU = C36to10(xLblU) * 10000 + fdriValL = xValL + fdriValU = xValU + fdriCol = iCol + + Dim xbSel As Boolean = iRange Mod 2 = 0 + Dim xbUnsel As Boolean = iRange Mod 3 = 0 + Dim xbShort As Boolean = iRange Mod 5 = 0 + Dim xbLong As Boolean = iRange Mod 7 = 0 + Dim xbHidden As Boolean = iRange Mod 11 = 0 + Dim xbVisible As Boolean = iRange Mod 13 = 0 + + Dim xSel(UBound(Notes)) As Boolean + For xI1 As Integer = 1 To UBound(Notes) + xSel(xI1) = Notes(xI1).Selected + Next + + 'Main process + For xI1 As Integer = 1 To UBound(Notes) + Dim bbba As Boolean = xbSel And xSel(xI1) + Dim bbbb As Boolean = xbUnsel And Not xSel(xI1) + Dim bbbc As Boolean = nEnabled(Notes(xI1).ColumnIndex) + Dim bbbd As Boolean = fdrRangeS(xbShort, xbLong, IIf(NTInput, Notes(xI1).Length, Notes(xI1).LongNote)) + Dim bbbe As Boolean = fdrRangeS(xbVisible, xbHidden, Notes(xI1).Hidden) + Dim bbbf As Boolean = fdrCheck(Notes(xI1)) + + If ((xbSel And xSel(xI1)) Or (xbUnsel And Not xSel(xI1))) AndAlso + nEnabled(Notes(xI1).ColumnIndex) AndAlso fdrRangeS(xbShort, xbLong, IIf(NTInput, Notes(xI1).Length, Notes(xI1).LongNote)) And fdrRangeS(xbVisible, xbHidden, Notes(xI1).Hidden) Then + Notes(xI1).Selected = fdrCheck(Notes(xI1)) + End If + Next + + RefreshPanelAll() + Beep() + End Sub + + Public Sub fdrUnselect(ByVal iRange As Integer, + ByVal xMesL As Integer, ByVal xMesU As Integer, + ByVal xLblL As String, ByVal xLblU As String, + ByVal xValL As Integer, ByVal xValU As Integer, + ByVal iCol() As Integer) + + fdriMesL = xMesL + fdriMesU = xMesU + fdriLblL = C36to10(xLblL) * 10000 + fdriLblU = C36to10(xLblU) * 10000 + fdriValL = xValL + fdriValU = xValU + fdriCol = iCol + + Dim xbSel As Boolean = iRange Mod 2 = 0 + Dim xbUnsel As Boolean = iRange Mod 3 = 0 + Dim xbShort As Boolean = iRange Mod 5 = 0 + Dim xbLong As Boolean = iRange Mod 7 = 0 + Dim xbHidden As Boolean = iRange Mod 11 = 0 + Dim xbVisible As Boolean = iRange Mod 13 = 0 + + Dim xSel(UBound(Notes)) As Boolean + For xI1 As Integer = 1 To UBound(Notes) + xSel(xI1) = Notes(xI1).Selected + Next + + 'Main process + For xI1 As Integer = 1 To UBound(Notes) + If ((xbSel And xSel(xI1)) Or (xbUnsel And Not xSel(xI1))) AndAlso + nEnabled(Notes(xI1).ColumnIndex) AndAlso fdrRangeS(xbShort, xbLong, IIf(NTInput, Notes(xI1).Length, Notes(xI1).LongNote)) And fdrRangeS(xbVisible, xbHidden, Notes(xI1).Hidden) Then + Notes(xI1).Selected = Not fdrCheck(Notes(xI1)) + End If + Next + + RefreshPanelAll() + Beep() + End Sub + + Public Sub fdrDelete(ByVal iRange As Integer, + ByVal xMesL As Integer, ByVal xMesU As Integer, + ByVal xLblL As String, ByVal xLblU As String, + ByVal xValL As Integer, ByVal xValU As Integer, + ByVal iCol() As Integer) + + fdriMesL = xMesL + fdriMesU = xMesU + fdriLblL = C36to10(xLblL) * 10000 + fdriLblU = C36to10(xLblU) * 10000 + fdriValL = xValL + fdriValU = xValU + fdriCol = iCol + + Dim xbSel As Boolean = iRange Mod 2 = 0 + Dim xbUnsel As Boolean = iRange Mod 3 = 0 + Dim xbShort As Boolean = iRange Mod 5 = 0 + Dim xbLong As Boolean = iRange Mod 7 = 0 + Dim xbHidden As Boolean = iRange Mod 11 = 0 + Dim xbVisible As Boolean = iRange Mod 13 = 0 + + Dim xUndo As UndoRedo.LinkedURCmd = Nothing + Dim xRedo As UndoRedo.LinkedURCmd = New UndoRedo.Void + Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo + + 'Main process + Dim xI1 As Integer = 1 + Do While xI1 <= UBound(Notes) + If ((xbSel And Notes(xI1).Selected) Or (xbUnsel And Not Notes(xI1).Selected)) AndAlso + fdrCheck(Notes(xI1)) AndAlso nEnabled(Notes(xI1).ColumnIndex) AndAlso fdrRangeS(xbShort, xbLong, IIf(NTInput, Notes(xI1).Length, Notes(xI1).LongNote)) And fdrRangeS(xbVisible, xbHidden, Notes(xI1).Hidden) Then + RedoRemoveNote(Notes(xI1), xUndo, xRedo) + RemoveNote(xI1, False) + Else + xI1 += 1 + End If + Loop + + AddUndo(xUndo, xBaseRedo.Next) + SortByVPositionInsertion() + UpdatePairing() + RefreshPanelAll() + CalculateTotalPlayableNotes() + Beep() + End Sub + + Public Sub fdrReplaceL(ByVal iRange As Integer, + ByVal xMesL As Integer, ByVal xMesU As Integer, + ByVal xLblL As String, ByVal xLblU As String, + ByVal xValL As Integer, ByVal xValU As Integer, + ByVal iCol() As Integer, ByVal xReplaceLbl As String) + + fdriMesL = xMesL + fdriMesU = xMesU + fdriLblL = C36to10(xLblL) * 10000 + fdriLblU = C36to10(xLblU) * 10000 + fdriValL = xValL + fdriValU = xValU + fdriCol = iCol + + Dim xbSel As Boolean = iRange Mod 2 = 0 + Dim xbUnsel As Boolean = iRange Mod 3 = 0 + Dim xbShort As Boolean = iRange Mod 5 = 0 + Dim xbLong As Boolean = iRange Mod 7 = 0 + Dim xbHidden As Boolean = iRange Mod 11 = 0 + Dim xbVisible As Boolean = iRange Mod 13 = 0 + + Dim xxLbl As Integer = C36to10(xReplaceLbl) * 10000 + + Dim xUndo As UndoRedo.LinkedURCmd = Nothing + Dim xRedo As UndoRedo.LinkedURCmd = New UndoRedo.Void + Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo + + 'Main process + For xI1 As Integer = 1 To UBound(Notes) + If ((xbSel And Notes(xI1).Selected) Or (xbUnsel And Not Notes(xI1).Selected)) AndAlso + fdrCheck(Notes(xI1)) AndAlso nEnabled(Notes(xI1).ColumnIndex) And Not IsColumnNumeric(Notes(xI1).ColumnIndex) AndAlso fdrRangeS(xbShort, xbLong, IIf(NTInput, Notes(xI1).Length, Notes(xI1).LongNote)) And fdrRangeS(xbVisible, xbHidden, Notes(xI1).Hidden) Then + 'xUndo &= sCmdKC(K(xI1).ColumnIndex, K(xI1).VPosition, xxLbl, IIf(NTInput, K(xI1).Length, K(xI1).LongNote), K(xI1).Hidden, 0, 0, K(xI1).Value, IIf(NTInput, K(xI1).Length, K(xI1).LongNote), K(xI1).Hidden, True) & vbCrLf + 'xRedo &= sCmdKC(K(xI1).ColumnIndex, K(xI1).VPosition, K(xI1).Value, IIf(NTInput, K(xI1).Length, K(xI1).LongNote), K(xI1).Hidden, 0, 0, xxLbl, IIf(NTInput, K(xI1).Length, K(xI1).LongNote), K(xI1).Hidden, True) & vbCrLf + Me.RedoRelabelNote(Notes(xI1), xxLbl, xUndo, xRedo) + Notes(xI1).Value = xxLbl + End If + Next + + AddUndo(xUndo, xBaseRedo.Next) + RefreshPanelAll() + Beep() + End Sub + + Public Sub fdrReplaceV(ByVal iRange As Integer, + ByVal xMesL As Integer, ByVal xMesU As Integer, + ByVal xLblL As String, ByVal xLblU As String, + ByVal xValL As Integer, ByVal xValU As Integer, + ByVal iCol() As Integer, ByVal xReplaceVal As Integer) + + fdriMesL = xMesL + fdriMesU = xMesU + fdriLblL = C36to10(xLblL) * 10000 + fdriLblU = C36to10(xLblU) * 10000 + fdriValL = xValL + fdriValU = xValU + fdriCol = iCol + + Dim xbSel As Boolean = iRange Mod 2 = 0 + Dim xbUnsel As Boolean = iRange Mod 3 = 0 + Dim xbShort As Boolean = iRange Mod 5 = 0 + Dim xbLong As Boolean = iRange Mod 7 = 0 + Dim xbHidden As Boolean = iRange Mod 11 = 0 + Dim xbVisible As Boolean = iRange Mod 13 = 0 + + Dim xUndo As UndoRedo.LinkedURCmd = Nothing + Dim xRedo As UndoRedo.LinkedURCmd = New UndoRedo.Void + Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo + + 'Main process + For xI1 As Integer = 1 To UBound(Notes) + If ((xbSel And Notes(xI1).Selected) Or (xbUnsel And Not Notes(xI1).Selected)) AndAlso + fdrCheck(Notes(xI1)) AndAlso nEnabled(Notes(xI1).ColumnIndex) And IsColumnNumeric(Notes(xI1).ColumnIndex) AndAlso fdrRangeS(xbShort, xbLong, IIf(NTInput, Notes(xI1).Length, Notes(xI1).LongNote)) And fdrRangeS(xbVisible, xbHidden, Notes(xI1).Hidden) Then + 'xUndo &= sCmdKC(K(xI1).ColumnIndex, K(xI1).VPosition, xReplaceVal, IIf(NTInput, K(xI1).Length, K(xI1).LongNote), K(xI1).Hidden, 0, 0, K(xI1).Value, IIf(NTInput, K(xI1).Length, K(xI1).LongNote), K(xI1).Hidden, True) & vbCrLf + 'xRedo &= sCmdKC(K(xI1).ColumnIndex, K(xI1).VPosition, K(xI1).Value, IIf(NTInput, K(xI1).Length, K(xI1).LongNote), K(xI1).Hidden, 0, 0, xReplaceVal, IIf(NTInput, K(xI1).Length, K(xI1).LongNote), K(xI1).Hidden, True) & vbCrLf + Me.RedoRelabelNote(Notes(xI1), xReplaceVal, xUndo, xRedo) + Notes(xI1).Value = xReplaceVal + End If + Next + + AddUndo(xUndo, xBaseRedo.Next) + RefreshPanelAll() + Beep() + End Sub + + Private Sub MInsert_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MInsert.Click + Dim xUndo As UndoRedo.LinkedURCmd = Nothing + Dim xRedo As UndoRedo.LinkedURCmd = New UndoRedo.Void + Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo + + Dim xMeasure As Integer = MeasureAtDisplacement(menuVPosition) + Dim xMLength As Double = MeasureLength(xMeasure) + Dim xVP As Double = MeasureBottom(xMeasure) + + If NTInput Then + Dim xI1 As Integer = 1 + Do While xI1 <= UBound(Notes) + If MeasureAtDisplacement(Notes(xI1).VPosition) >= 999 Then + Me.RedoRemoveNote(Notes(xI1), xUndo, xRedo) + RemoveNote(xI1, False) + Else + xI1 += 1 + End If + Loop + + Dim xdVP As Double + For xI1 = 1 To UBound(Notes) + If Notes(xI1).VPosition >= xVP And Notes(xI1).VPosition + Notes(xI1).Length <= MeasureBottom(999) Then + Me.RedoMoveNote(Notes(xI1), Notes(xI1).ColumnIndex, Notes(xI1).VPosition + xMLength, xUndo, xRedo) + Notes(xI1).VPosition += xMLength + + ElseIf Notes(xI1).VPosition >= xVP Then + xdVP = MeasureBottom(999) - 1 - Notes(xI1).VPosition - Notes(xI1).Length + Me.RedoLongNoteModify(Notes(xI1), Notes(xI1).VPosition + xMLength, Notes(xI1).Length + xdVP, xUndo, xRedo) + Notes(xI1).VPosition += xMLength + Notes(xI1).Length += xdVP + + ElseIf Notes(xI1).VPosition + Notes(xI1).Length >= xVP Then + xdVP = IIf(Notes(xI1).VPosition + Notes(xI1).Length > MeasureBottom(999) - 1, GetMaxVPosition() - 1 - Notes(xI1).VPosition - Notes(xI1).Length, xMLength) + Me.RedoLongNoteModify(Notes(xI1), Notes(xI1).VPosition, Notes(xI1).Length + xdVP, xUndo, xRedo) + Notes(xI1).Length += xdVP + End If + Next + + Else + Dim xI1 As Integer = 1 + Do While xI1 <= UBound(Notes) + If MeasureAtDisplacement(Notes(xI1).VPosition) >= 999 Then + Me.RedoRemoveNote(Notes(xI1), xUndo, xRedo) + RemoveNote(xI1, False) + Else + xI1 += 1 + End If + Loop + + For xI1 = 1 To UBound(Notes) + If Notes(xI1).VPosition >= xVP Then + Me.RedoMoveNote(Notes(xI1), Notes(xI1).ColumnIndex, Notes(xI1).VPosition + xMLength, xUndo, xRedo) + Notes(xI1).VPosition += xMLength + End If + Next + End If + + For xI1 As Integer = 999 To xMeasure + 1 Step -1 + MeasureLength(xI1) = MeasureLength(xI1 - 1) + Next + UpdateMeasureBottom() + + AddUndo(xUndo, xBaseRedo.Next) + UpdatePairing() + CalculateGreatestVPosition() + CalculateTotalPlayableNotes() + RefreshPanelAll() + End Sub + + Private Sub MRemove_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MRemove.Click + Dim xUndo As UndoRedo.LinkedURCmd = Nothing + Dim xRedo As UndoRedo.LinkedURCmd = New UndoRedo.Void + Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo + + Dim xMeasure As Integer = MeasureAtDisplacement(menuVPosition) + Dim xMLength As Double = MeasureLength(xMeasure) + Dim xVP As Double = MeasureBottom(xMeasure) + + If NTInput Then + Dim xI1 As Integer = 1 + Do While xI1 <= UBound(Notes) + If MeasureAtDisplacement(Notes(xI1).VPosition) = xMeasure And MeasureAtDisplacement(Notes(xI1).VPosition + Notes(xI1).Length) = xMeasure Then + Me.RedoRemoveNote(Notes(xI1), xUndo, xRedo) + RemoveNote(xI1, False) + Else + xI1 += 1 + End If + Loop + + Dim xdVP As Double + xVP = MeasureBottom(xMeasure) + For xI1 = 1 To UBound(Notes) + If Notes(xI1).VPosition >= xVP + xMLength Then + Me.RedoMoveNote(Notes(xI1), Notes(xI1).ColumnIndex, Notes(xI1).VPosition - xMLength, xUndo, xRedo) + Notes(xI1).VPosition -= xMLength + + ElseIf Notes(xI1).VPosition >= xVP Then + xdVP = xMLength + xVP - Notes(xI1).VPosition + Me.RedoLongNoteModify(Notes(xI1), Notes(xI1).VPosition + xdVP - xMLength, Notes(xI1).Length - xdVP, xUndo, xRedo) + Notes(xI1).VPosition += xdVP - xMLength + Notes(xI1).Length -= xdVP + + ElseIf Notes(xI1).VPosition + Notes(xI1).Length >= xVP Then + xdVP = IIf(Notes(xI1).VPosition + Notes(xI1).Length >= xVP + xMLength, xMLength, Notes(xI1).VPosition + Notes(xI1).Length - xVP + 1) + Me.RedoLongNoteModify(Notes(xI1), Notes(xI1).VPosition, Notes(xI1).Length - xdVP, xUndo, xRedo) + Notes(xI1).Length -= xdVP + End If + Next + + Else + Dim xI1 As Integer = 1 + Do While xI1 <= UBound(Notes) + If MeasureAtDisplacement(Notes(xI1).VPosition) = xMeasure Then + Me.RedoRemoveNote(Notes(xI1), xUndo, xRedo) + RemoveNote(xI1, False) + Else + xI1 += 1 + End If + Loop + + xVP = MeasureBottom(xMeasure) + For xI1 = 1 To UBound(Notes) + If Notes(xI1).VPosition >= xVP Then + Me.RedoMoveNote(Notes(xI1), Notes(xI1).ColumnIndex, Notes(xI1).VPosition - xMLength, xUndo, xRedo) + Notes(xI1).VPosition -= xMLength + End If + Next + End If + + For xI1 As Integer = 999 To xMeasure + 1 Step -1 + MeasureLength(xI1 - 1) = MeasureLength(xI1) + Next + UpdateMeasureBottom() + + AddUndo(xUndo, xBaseRedo.Next) + SortByVPositionInsertion() + UpdatePairing() + CalculateGreatestVPosition() + CalculateTotalPlayableNotes() + RefreshPanelAll() + End Sub + + Private Sub TBThemeDef_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBThemeDef.Click + Dim xTempFileName As String = My.Application.Info.DirectoryPath & "\____TempFile.Theme.xml" + My.Computer.FileSystem.WriteAllText(xTempFileName, My.Resources.O2Mania_Theme, False, System.Text.Encoding.Unicode) + LoadSettings(xTempFileName) + System.IO.File.Delete(xTempFileName) + + RefreshPanelAll() + End Sub + + Private Sub TBThemeSave_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBThemeSave.Click + Dim xDiag As New SaveFileDialog + xDiag.Filter = Strings.FileType.THEME_XML & "|*.Theme.xml" + xDiag.DefaultExt = "Theme.xml" + xDiag.InitialDirectory = My.Application.Info.DirectoryPath & "\Data" + If xDiag.ShowDialog = Windows.Forms.DialogResult.Cancel Then Exit Sub + + Me.SaveSettings(xDiag.FileName, True) + If BeepWhileSaved Then Beep() + TBThemeRefresh_Click(TBThemeRefresh, New System.EventArgs) + End Sub + + Private Sub TBThemeRefresh_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBThemeRefresh.Click + For xI1 As Integer = cmnTheme.Items.Count - 1 To 5 Step -1 + Try + cmnTheme.Items.RemoveAt(xI1) + Catch ex As Exception + End Try + Next + + If Not Directory.Exists(My.Application.Info.DirectoryPath & "\Data") Then My.Computer.FileSystem.CreateDirectory(My.Application.Info.DirectoryPath & "\Data") + Dim xFileNames() As FileInfo = My.Computer.FileSystem.GetDirectoryInfo(My.Application.Info.DirectoryPath & "\Data").GetFiles("*.Theme.xml") + For Each xStr As FileInfo In xFileNames + cmnTheme.Items.Add(xStr.Name, Nothing, AddressOf LoadTheme) + Next + End Sub + + Private Sub TBThemeLoadComptability_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBThemeLoadComptability.Click + Dim xDiag As New OpenFileDialog + xDiag.Filter = Strings.FileType.TH & "|*.th" + xDiag.DefaultExt = "th" + xDiag.InitialDirectory = My.Application.Info.DirectoryPath + If My.Computer.FileSystem.DirectoryExists(My.Application.Info.DirectoryPath & "\Theme") Then xDiag.InitialDirectory = My.Application.Info.DirectoryPath & "\Theme" + If xDiag.ShowDialog = Windows.Forms.DialogResult.Cancel Then Exit Sub + + Me.LoadThemeComptability(xDiag.FileName) + RefreshPanelAll() + End Sub + + ''' + ''' Will return Double.PositiveInfinity if canceled. + ''' + Private Function InputBoxDouble(ByVal Prompt As String, ByVal LBound As Double, ByVal UBound As Double, Optional ByVal Title As String = "", Optional ByVal DefaultResponse As String = "") As Double + Dim xStr As String = InputBox(Prompt, Title, DefaultResponse) + If xStr = "" Then Return Double.PositiveInfinity + + InputBoxDouble = Val(xStr) + If InputBoxDouble > UBound Then InputBoxDouble = UBound + If InputBoxDouble < LBound Then InputBoxDouble = LBound + End Function + + Private Sub FSSS_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles FSSS.Click + Dim xMax As Double = IIf(vSelLength > 0, GetMaxVPosition() - vSelLength, GetMaxVPosition) + Dim xMin As Double = IIf(vSelLength < 0, -vSelLength, 0) + Dim xDouble As Double = InputBoxDouble("Please enter a number between " & xMin & " and " & xMax & ".", xMin, xMax, , vSelStart) + If xDouble = Double.PositiveInfinity Then Return + + vSelStart = xDouble + ValidateSelection() + RefreshPanelAll() + POStatusRefresh() + End Sub + + Private Sub FSSL_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles FSSL.Click + Dim xMax As Double = GetMaxVPosition() - vSelStart + Dim xMin As Double = -vSelStart + Dim xDouble As Double = InputBoxDouble("Please enter a number between " & xMin & " and " & xMax & ".", xMin, xMax, , vSelLength) + If xDouble = Double.PositiveInfinity Then Return + + vSelLength = xDouble + ValidateSelection() + RefreshPanelAll() + POStatusRefresh() + End Sub + + Private Sub FSSH_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles FSSH.Click + Dim xMax As Double = IIf(vSelLength > 0, vSelLength, 0) + Dim xMin As Double = IIf(vSelLength > 0, 0, -vSelLength) + Dim xDouble As Double = InputBoxDouble("Please enter a number between " & xMin & " and " & xMax & ".", xMin, xMax, , vSelHalf) + If xDouble = Double.PositiveInfinity Then Return + + vSelHalf = xDouble + ValidateSelection() + RefreshPanelAll() + POStatusRefresh() + End Sub + + Private Sub BVCReverse_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BVCReverse.Click + vSelStart += vSelLength + vSelHalf -= vSelLength + vSelLength *= -1 + ValidateSelection() + RefreshPanelAll() + POStatusRefresh() + End Sub + + Private Sub AutoSaveTimer_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles AutoSaveTimer.Tick + Dim xTime As Date = Now + Dim xFileName As String + With xTime + xFileName = My.Application.Info.DirectoryPath & "\AutoSave_" & + .Year & "_" & .Month & "_" & .Day & "_" & .Hour & "_" & .Minute & "_" & .Second & "_" & .Millisecond & ".IBMSC" + End With + 'My.Computer.FileSystem.WriteAllText(xFileName, SaveiBMSC, False, System.Text.Encoding.Unicode) + SaveiBMSC(xFileName) + + On Error Resume Next + If PreviousAutoSavedFileName <> "" Then IO.File.Delete(PreviousAutoSavedFileName) + On Error GoTo 0 + + PreviousAutoSavedFileName = xFileName + End Sub + + Private Sub CWAVMultiSelect_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CWAVMultiSelect.CheckedChanged + WAVMultiSelect = CWAVMultiSelect.Checked + LWAV.SelectionMode = IIf(WAVMultiSelect, SelectionMode.MultiExtended, SelectionMode.One) + End Sub + + Private Sub CWAVChangeLabel_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CWAVChangeLabel.CheckedChanged + WAVChangeLabel = CWAVChangeLabel.Checked + End Sub + + Private Sub BWAVUp_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BWAVUp.Click + If LWAV.SelectedIndex = -1 Then Return + + Dim xUndo As UndoRedo.LinkedURCmd = Nothing + Dim xRedo As UndoRedo.LinkedURCmd = New UndoRedo.Void + Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo + + Dim xIndices(LWAV.SelectedIndices.Count - 1) As Integer + LWAV.SelectedIndices.CopyTo(xIndices, 0) + + Dim xS As Integer + For xS = 0 To 1294 + If Array.IndexOf(xIndices, xS) = -1 Then Exit For + Next + + Dim xStr As String = "" + Dim xIndex As Integer = -1 + For xI1 As Integer = xS To 1294 + xIndex = Array.IndexOf(xIndices, xI1) + If xIndex <> -1 Then + xStr = hWAV(xI1 + 1) + hWAV(xI1 + 1) = hWAV(xI1) + hWAV(xI1) = xStr + + LWAV.Items.Item(xI1) = C10to36(xI1 + 1) & ": " & hWAV(xI1 + 1) + LWAV.Items.Item(xI1 - 1) = C10to36(xI1) & ": " & hWAV(xI1) + + If Not WAVChangeLabel Then GoTo 1100 + + Dim xL1 As String = C10to36(xI1) + Dim xL2 As String = C10to36(xI1 + 1) + For xI2 As Integer = 1 To UBound(Notes) + If IsColumnNumeric(Notes(xI2).ColumnIndex) Then Continue For + + If C10to36(Notes(xI2).Value \ 10000) = xL1 Then + Me.RedoRelabelNote(Notes(xI2), xI1 * 10000 + 10000, xUndo, xRedo) + Notes(xI2).Value = xI1 * 10000 + 10000 + + ElseIf C10to36(Notes(xI2).Value \ 10000) = xL2 Then + Me.RedoRelabelNote(Notes(xI2), xI1 * 10000, xUndo, xRedo) + Notes(xI2).Value = xI1 * 10000 + + End If + Next + +1100: xIndices(xIndex) += -1 + End If + Next + + LWAV.SelectedIndices.Clear() + For xI1 As Integer = 0 To UBound(xIndices) + LWAV.SelectedIndices.Add(xIndices(xI1)) + Next + + AddUndo(xUndo, xBaseRedo.Next) + RefreshPanelAll() + POStatusRefresh() + End Sub + + Private Sub BWAVDown_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BWAVDown.Click + If LWAV.SelectedIndex = -1 Then Return + + Dim xUndo As UndoRedo.LinkedURCmd = Nothing + Dim xRedo As UndoRedo.LinkedURCmd = New UndoRedo.Void + Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo + + Dim xIndices(LWAV.SelectedIndices.Count - 1) As Integer + LWAV.SelectedIndices.CopyTo(xIndices, 0) + + Dim xS As Integer + For xS = 1294 To 0 Step -1 + If Array.IndexOf(xIndices, xS) = -1 Then Exit For + Next + + Dim xStr As String = "" + Dim xIndex As Integer = -1 + For xI1 As Integer = xS To 0 Step -1 + xIndex = Array.IndexOf(xIndices, xI1) + If xIndex <> -1 Then + xStr = hWAV(xI1 + 1) + hWAV(xI1 + 1) = hWAV(xI1 + 2) + hWAV(xI1 + 2) = xStr + + LWAV.Items.Item(xI1) = C10to36(xI1 + 1) & ": " & hWAV(xI1 + 1) + LWAV.Items.Item(xI1 + 1) = C10to36(xI1 + 2) & ": " & hWAV(xI1 + 2) + + If Not WAVChangeLabel Then GoTo 1100 + + Dim xL1 As String = C10to36(xI1 + 2) + Dim xL2 As String = C10to36(xI1 + 1) + For xI2 As Integer = 1 To UBound(Notes) + If IsColumnNumeric(Notes(xI2).ColumnIndex) Then Continue For + + If C10to36(Notes(xI2).Value \ 10000) = xL1 Then + Me.RedoRelabelNote(Notes(xI2), xI1 * 10000 + 10000, xUndo, xRedo) + Notes(xI2).Value = xI1 * 10000 + 10000 + + ElseIf C10to36(Notes(xI2).Value \ 10000) = xL2 Then + Me.RedoRelabelNote(Notes(xI2), xI1 * 10000 + 20000, xUndo, xRedo) + Notes(xI2).Value = xI1 * 10000 + 20000 + + End If + Next + +1100: xIndices(xIndex) += 1 + End If + Next + + LWAV.SelectedIndices.Clear() + For xI1 As Integer = 0 To UBound(xIndices) + LWAV.SelectedIndices.Add(xIndices(xI1)) + Next + + AddUndo(xUndo, xBaseRedo.Next) + RefreshPanelAll() + POStatusRefresh() + End Sub + + Private Sub BWAVBrowse_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BWAVBrowse.Click + Dim xDWAV As New OpenFileDialog + xDWAV.DefaultExt = "wav" + xDWAV.Filter = Strings.FileType._wave & "|*.wav;*.ogg;*.mp3|" & + Strings.FileType.WAV & "|*.wav|" & + Strings.FileType.OGG & "|*.ogg|" & + Strings.FileType.MP3 & "|*.mp3|" & + Strings.FileType._all & "|*.*" + xDWAV.InitialDirectory = IIf(ExcludeFileName(FileName) = "", InitPath, ExcludeFileName(FileName)) + xDWAV.Multiselect = WAVMultiSelect + + If xDWAV.ShowDialog = Windows.Forms.DialogResult.Cancel Then Exit Sub + InitPath = ExcludeFileName(xDWAV.FileName) + + AddToPOWAV(xDWAV.FileNames) + End Sub + + Private Sub BWAVRemove_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BWAVRemove.Click + Dim xIndices(LWAV.SelectedIndices.Count - 1) As Integer + LWAV.SelectedIndices.CopyTo(xIndices, 0) + For xI1 As Integer = 0 To UBound(xIndices) + hWAV(xIndices(xI1) + 1) = "" + LWAV.Items.Item(xIndices(xI1)) = C10to36(xIndices(xI1) + 1) & ": " + Next + + LWAV.SelectedIndices.Clear() + For xI1 As Integer = 0 To UBound(xIndices) + LWAV.SelectedIndices.Add(xIndices(xI1)) + Next + + If IsSaved Then SetIsSaved(False) + RefreshPanelAll() + POStatusRefresh() + End Sub + + Private Sub mnMain_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles mnMain.MouseDown ', TBMain.MouseDown ', pttl.MouseDown, pIsSaved.MouseDown + If e.Button = Windows.Forms.MouseButtons.Left Then + ReleaseCapture() + SendMessage(Me.Handle, &H112, &HF012, 0) + If e.Clicks = 2 Then + If Me.WindowState = FormWindowState.Maximized Then Me.WindowState = FormWindowState.Normal Else Me.WindowState = FormWindowState.Maximized + End If + ElseIf e.Button = Windows.Forms.MouseButtons.Right Then + 'mnSys.Show(sender, e.Location) + End If + End Sub + + Private Sub mnSelectAll_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnSelectAll.Click + If Not (PMainIn.Focused OrElse PMainInL.Focused Or PMainInR.Focused) Then Exit Sub + For xI1 As Integer = 1 To UBound(Notes) + Notes(xI1).Selected = nEnabled(Notes(xI1).ColumnIndex) + Next + If TBTimeSelect.Checked Then + CalculateGreatestVPosition() + vSelStart = 0 + vSelLength = MeasureBottom(MeasureAtDisplacement(GreatestVPosition)) + MeasureLength(MeasureAtDisplacement(GreatestVPosition)) + End If + RefreshPanelAll() + POStatusRefresh() + End Sub + + Private Sub mnDelete_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnDelete.Click + If Not (PMainIn.Focused OrElse PMainInL.Focused Or PMainInR.Focused) Then Exit Sub + + Dim xUndo As UndoRedo.LinkedURCmd = Nothing + Dim xRedo As UndoRedo.LinkedURCmd = New UndoRedo.Void + Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo + + Me.RedoRemoveNoteSelected(True, xUndo, xRedo) + RemoveNotes(True) + + AddUndo(xUndo, xBaseRedo.Next) + CalculateGreatestVPosition() + CalculateTotalPlayableNotes() + RefreshPanelAll() + POStatusRefresh() + End Sub + + Private Sub mnUpdate_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) + Process.Start("http://www.cs.mcgill.ca/~ryang6/iBMSC/") + End Sub + + Private Sub mnUpdateC_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) + Process.Start("http://bbs.rohome.net/thread-1074065-1-1.html") + End Sub + + Private Sub mnQuit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnQuit.Click + Close() + End Sub + + + Private Sub EnableDWM() + mnMain.BackColor = Color.Black + 'TBMain.BackColor = Color.FromArgb(64, 64, 64) + + For Each xmn As ToolStripMenuItem In mnMain.Items + xmn.ForeColor = Color.White + AddHandler xmn.DropDownClosed, AddressOf mn_DropDownClosed + AddHandler xmn.DropDownOpened, AddressOf mn_DropDownOpened + AddHandler xmn.MouseEnter, AddressOf mn_MouseEnter + AddHandler xmn.MouseLeave, AddressOf mn_MouseLeave + Next + End Sub + + Private Sub DisableDWM() + mnMain.BackColor = SystemColors.Control + 'TBMain.BackColor = SystemColors.Control + + For Each xmn As ToolStripMenuItem In mnMain.Items + xmn.ForeColor = SystemColors.ControlText + RemoveHandler xmn.DropDownClosed, AddressOf mn_DropDownClosed + RemoveHandler xmn.DropDownOpened, AddressOf mn_DropDownOpened + RemoveHandler xmn.MouseEnter, AddressOf mn_MouseEnter + RemoveHandler xmn.MouseLeave, AddressOf mn_MouseLeave + Next + End Sub + + Private Sub ttlIcon_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) + 'ttlIcon.Image = My.Resources.icon2_16 + 'mnSys.Show(ttlIcon, 0, ttlIcon.Height) + End Sub + Private Sub ttlIcon_MouseEnter(ByVal sender As Object, ByVal e As System.EventArgs) + 'ttlIcon.Image = My.Resources.icon2_16_highlight + End Sub + Private Sub ttlIcon_MouseLeave(ByVal sender As Object, ByVal e As System.EventArgs) + 'ttlIcon.Image = My.Resources.icon2_16 + End Sub + + Private Sub mnSMenu_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnSMenu.CheckedChanged + mnMain.Visible = mnSMenu.Checked + End Sub + Private Sub mnSTB_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnSTB.CheckedChanged + TBMain.Visible = mnSTB.Checked + End Sub + Private Sub mnSOP_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnSOP.CheckedChanged + POptions.Visible = mnSOP.Checked + End Sub + Private Sub mnSStatus_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnSStatus.CheckedChanged + pStatus.Visible = mnSStatus.Checked + End Sub + Private Sub mnSLSplitter_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnSLSplitter.CheckedChanged + SpL.Visible = mnSLSplitter.Checked + End Sub + Private Sub mnSRSplitter_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnSRSplitter.CheckedChanged + SpR.Visible = mnSRSplitter.Checked + End Sub + Private Sub CGShow_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CGShow.CheckedChanged + gShowGrid = CGShow.Checked + RefreshPanelAll() + End Sub + Private Sub CGShowS_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CGShowS.CheckedChanged + gShowSubGrid = CGShowS.Checked + RefreshPanelAll() + End Sub + Private Sub CGShowBG_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CGShowBG.CheckedChanged + gShowBG = CGShowBG.Checked + RefreshPanelAll() + End Sub + Private Sub CGShowM_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CGShowM.CheckedChanged + gShowMeasureNumber = CGShowM.Checked + RefreshPanelAll() + End Sub + Private Sub CGShowV_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CGShowV.CheckedChanged + gShowVerticalLine = CGShowV.Checked + RefreshPanelAll() + End Sub + Private Sub CGShowMB_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CGShowMB.CheckedChanged + gShowMeasureBar = CGShowMB.Checked + RefreshPanelAll() + End Sub + Private Sub CGShowC_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CGShowC.CheckedChanged + gShowC = CGShowC.Checked + RefreshPanelAll() + End Sub + Private Sub CGBLP_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CGBLP.CheckedChanged + gDisplayBGAColumn = CGBLP.Checked + + column(niBGA).isVisible = gDisplayBGAColumn + column(niLAYER).isVisible = gDisplayBGAColumn + column(niPOOR).isVisible = gDisplayBGAColumn + column(niS4).isVisible = gDisplayBGAColumn + + If IsInitializing Then Exit Sub + For xI1 As Integer = 1 To UBound(Notes) + Notes(xI1).Selected = Notes(xI1).Selected And nEnabled(Notes(xI1).ColumnIndex) + Next + 'AddUndo(xUndo, xRedo) + UpdateColumnsX() + RefreshPanelAll() + End Sub + Private Sub CGSCROLL_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CGSCROLL.CheckedChanged + gSCROLL = CGSCROLL.Checked + + column(niSCROLL).isVisible = gSCROLL + + If IsInitializing Then Exit Sub + For xI1 As Integer = 1 To UBound(Notes) + Notes(xI1).Selected = Notes(xI1).Selected And nEnabled(Notes(xI1).ColumnIndex) + Next + 'AddUndo(xUndo, xRedo) + UpdateColumnsX() + RefreshPanelAll() + End Sub + Private Sub CGSTOP_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CGSTOP.CheckedChanged + gSTOP = CGSTOP.Checked + + column(niSTOP).isVisible = gSTOP + + If IsInitializing Then Exit Sub + For xI1 As Integer = 1 To UBound(Notes) + Notes(xI1).Selected = Notes(xI1).Selected And nEnabled(Notes(xI1).ColumnIndex) + Next + 'AddUndo(xUndo, xRedo) + UpdateColumnsX() + RefreshPanelAll() + End Sub + Private Sub CGBPM_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CGBPM.CheckedChanged + 'Dim xUndo As UndoRedo.LinkedURCmd = Nothing + 'Dim xRedo As UndoRedo.LinkedURCmd = Nothing + 'Me.RedoChangeVisibleColumns(gBLP, gSTOP, iPlayer, gBLP, CGSTOP.Checked, iPlayer, xUndo, xRedo) + gBPM = CGBPM.Checked + + column(niBPM).isVisible = gBPM + + If IsInitializing Then Exit Sub + For xI1 As Integer = 1 To UBound(Notes) + Notes(xI1).Selected = Notes(xI1).Selected And nEnabled(Notes(xI1).ColumnIndex) + Next + 'AddUndo(xUndo, xRedo) + UpdateColumnsX() + RefreshPanelAll() + End Sub + + Private Sub CGDisableVertical_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CGDisableVertical.CheckedChanged + DisableVerticalMove = CGDisableVertical.Checked + End Sub + + Private Sub CBeatPreserve_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CBeatPreserve.Click, CBeatMeasure.Click, CBeatCut.Click, CBeatScale.Click + 'If Not sender.Checked Then Exit Sub + Dim xBeatList() As RadioButton = {CBeatPreserve, CBeatMeasure, CBeatCut, CBeatScale} + BeatChangeMode = Array.IndexOf(Of RadioButton)(xBeatList, sender) + 'For xI1 As Integer = 0 To mnBeat.Items.Count - 1 + 'If xI1 <> BeatChangeMode Then CType(mnBeat.Items(xI1), ToolStripMenuItem).Checked = False + 'Next + 'sender.Checked = True + End Sub + + + Private Sub tBeatValue_LostFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles tBeatValue.LostFocus + Dim a As Double + If Double.TryParse(tBeatValue.Text, a) Then + If a <= 0.0# Or a >= 1000.0# Then tBeatValue.BackColor = Color.FromArgb(&HFFFFC0C0) Else tBeatValue.BackColor = Nothing + + tBeatValue.Text = a + End If + End Sub + + + + Private Sub ApplyBeat(ByVal xRatio As Double, ByVal xDisplay As String) + SortByVPositionInsertion() + + Dim xUndo As UndoRedo.LinkedURCmd = Nothing + Dim xRedo As UndoRedo.LinkedURCmd = New UndoRedo.Void + Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo + + Me.RedoChangeMeasureLengthSelected(192 * xRatio, xUndo, xRedo) + + Dim xIndices(LBeat.SelectedIndices.Count - 1) As Integer + LBeat.SelectedIndices.CopyTo(xIndices, 0) + + + For Each xI1 As Integer In xIndices + Dim dLength As Double = xRatio * 192.0R - MeasureLength(xI1) + Dim dRatio As Double = xRatio * 192.0R / MeasureLength(xI1) + + Dim xBottom As Double = 0 + For xI2 As Integer = 0 To xI1 - 1 + xBottom += MeasureLength(xI2) + Next + Dim xUpBefore As Double = xBottom + MeasureLength(xI1) + Dim xUpAfter As Double = xUpBefore + dLength + + Select Case BeatChangeMode + Case 1 +case2: Dim xI0 As Integer + + If NTInput Then + For xI0 = 1 To UBound(Notes) + If Notes(xI0).VPosition >= xUpBefore Then Exit For + If Notes(xI0).VPosition + Notes(xI0).Length >= xUpBefore Then + Me.RedoLongNoteModify(Notes(xI0), Notes(xI0).VPosition, Notes(xI0).Length + dLength, xUndo, xRedo) + Notes(xI0).Length += dLength + End If + Next + Else + For xI0 = 1 To UBound(Notes) + If Notes(xI0).VPosition >= xUpBefore Then Exit For + Next + End If + + For xI9 As Integer = xI0 To UBound(Notes) + Me.RedoLongNoteModify(Notes(xI9), Notes(xI9).VPosition + dLength, Notes(xI9).Length, xUndo, xRedo) + Notes(xI9).VPosition += dLength + Next + + Case 2 + If dLength < 0 Then + If NTInput Then + Dim xI0 As Integer = 1 + Dim xU As Integer = UBound(Notes) + Do While xI0 <= xU + If Notes(xI0).VPosition < xUpAfter Then + If Notes(xI0).VPosition + Notes(xI0).Length >= xUpAfter And Notes(xI0).VPosition + Notes(xI0).Length < xUpBefore Then + Dim nLen As Double = xUpAfter - Notes(xI0).VPosition - 1.0R + Me.RedoLongNoteModify(Notes(xI0), Notes(xI0).VPosition, nLen, xUndo, xRedo) + Notes(xI0).Length = nLen + End If + ElseIf Notes(xI0).VPosition < xUpBefore Then + If Notes(xI0).VPosition + Notes(xI0).Length < xUpBefore Then + Me.RedoRemoveNote(Notes(xI0), xUndo, xRedo) + RemoveNote(xI0) + xI0 -= 1 + xU -= 1 + Else + Dim nLen As Double = Notes(xI0).Length - xUpBefore + Notes(xI0).VPosition + Me.RedoLongNoteModify(Notes(xI0), xUpBefore, nLen, xUndo, xRedo) + Notes(xI0).Length = nLen + Notes(xI0).VPosition = xUpBefore + End If + End If + xI0 += 1 + Loop + Else + Dim xI0 As Integer + Dim xI9 As Integer + For xI0 = 1 To UBound(Notes) + If Notes(xI0).VPosition >= xUpAfter Then Exit For + Next + For xI9 = xI0 To UBound(Notes) + If Notes(xI9).VPosition >= xUpBefore Then Exit For + Next + + For xI8 As Integer = xI0 To xI9 - 1 + Me.RedoRemoveNote(Notes(xI8), xUndo, xRedo) + Next + For xI8 As Integer = xI9 To UBound(Notes) + Notes(xI8 - xI9 + xI0) = Notes(xI8) + Next + ReDim Preserve Notes(UBound(Notes) - xI9 + xI0) + End If + End If + + GoTo case2 + + Case 3 + If NTInput Then + For xI0 As Integer = 1 To UBound(Notes) + If Notes(xI0).VPosition < xBottom Then + If Notes(xI0).VPosition + Notes(xI0).Length > xUpBefore Then + Me.RedoLongNoteModify(Notes(xI0), Notes(xI0).VPosition, Notes(xI0).Length + dLength, xUndo, xRedo) + Notes(xI0).Length += dLength + ElseIf Notes(xI0).VPosition + Notes(xI0).Length > xBottom Then + Dim nLen As Double = (Notes(xI0).Length + Notes(xI0).VPosition - xBottom) * dRatio + xBottom - Notes(xI0).VPosition + Me.RedoLongNoteModify(Notes(xI0), Notes(xI0).VPosition, nLen, xUndo, xRedo) + Notes(xI0).Length = nLen + End If + ElseIf Notes(xI0).VPosition < xUpBefore Then + If Notes(xI0).VPosition + Notes(xI0).Length > xUpBefore Then + Dim nLen As Double = (xUpBefore - Notes(xI0).VPosition) * dRatio + Notes(xI0).VPosition + Notes(xI0).Length - xUpBefore + Dim nVPos As Double = (Notes(xI0).VPosition - xBottom) * dRatio + xBottom + Me.RedoLongNoteModify(Notes(xI0), nVPos, nLen, xUndo, xRedo) + Notes(xI0).Length = nLen + Notes(xI0).VPosition = nVPos + Else + Dim nLen As Double = Notes(xI0).Length * dRatio + Dim nVPos As Double = (Notes(xI0).VPosition - xBottom) * dRatio + xBottom + Me.RedoLongNoteModify(Notes(xI0), nVPos, nLen, xUndo, xRedo) + Notes(xI0).Length = nLen + Notes(xI0).VPosition = nVPos + End If + Else + Me.RedoLongNoteModify(Notes(xI0), Notes(xI0).VPosition + dLength, Notes(xI0).Length, xUndo, xRedo) + Notes(xI0).VPosition += dLength + End If + Next + Else + Dim xI0 As Integer + Dim xI9 As Integer + For xI0 = 1 To UBound(Notes) + If Notes(xI0).VPosition >= xBottom Then Exit For + Next + For xI9 = xI0 To UBound(Notes) + If Notes(xI9).VPosition >= xUpBefore Then Exit For + Next + + For xI8 As Integer = xI0 To xI9 - 1 + Dim nVP As Double = (Notes(xI8).VPosition - xBottom) * dRatio + xBottom + Me.RedoLongNoteModify(Notes(xI0), nVP, Notes(xI0).Length, xUndo, xRedo) + Notes(xI8).VPosition = nVP + Next + + 'GoTo case2 + + For xI8 As Integer = xI9 To UBound(Notes) + Me.RedoLongNoteModify(Notes(xI8), Notes(xI8).VPosition + dLength, Notes(xI8).Length, xUndo, xRedo) + Notes(xI8).VPosition += dLength + Next + End If + + End Select + + MeasureLength(xI1) = xRatio * 192.0R + LBeat.Items(xI1) = Add3Zeros(xI1) & ": " & xDisplay + Next + UpdateMeasureBottom() + 'xUndo &= vbCrLf & xUndo2 + 'xRedo &= vbCrLf & xRedo2 + + LBeat.SelectedIndices.Clear() + For xI1 As Integer = 0 To UBound(xIndices) + LBeat.SelectedIndices.Add(xIndices(xI1)) + Next + + AddUndo(xUndo, xBaseRedo.Next) + SortByVPositionInsertion() + UpdatePairing() + CalculateTotalPlayableNotes() + CalculateGreatestVPosition() + RefreshPanelAll() + POStatusRefresh() + End Sub + + Private Sub BBeatApply_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BBeatApply.Click + Dim xxD As Integer = nBeatD.Value + Dim xxN As Integer = nBeatN.Value + Dim xxRatio As Double = xxN / xxD + + ApplyBeat(xxRatio, xxRatio & " ( " & xxN & " / " & xxD & " ) ") + End Sub + + Private Sub BBeatApplyV_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BBeatApplyV.Click + Dim a As Double + If Double.TryParse(tBeatValue.Text, a) Then + If a <= 0.0# Or a >= 1000.0# Then System.Media.SystemSounds.Hand.Play() : Exit Sub + + Dim xxD As Long = GetDenominator(a) + + ApplyBeat(a, a & IIf(xxD > 10000, "", " ( " & CLng(a * xxD) & " / " & xxD & " ) ")) + End If + End Sub + + + Private Sub BHStageFile_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BHStageFile.Click, BHBanner.Click, BHBackBMP.Click + Dim xDiag As New OpenFileDialog + xDiag.Filter = Strings.FileType._image & "|*.bmp;*.png;*.jpg;*.gif|" & + Strings.FileType._all & "|*.*" + xDiag.InitialDirectory = IIf(ExcludeFileName(FileName) = "", InitPath, ExcludeFileName(FileName)) + xDiag.DefaultExt = "png" + + If xDiag.ShowDialog = Windows.Forms.DialogResult.Cancel Then Exit Sub + InitPath = ExcludeFileName(xDiag.FileName) + + If [Object].ReferenceEquals(sender, BHStageFile) Then + THStageFile.Text = GetFileName(xDiag.FileName) + ElseIf [Object].ReferenceEquals(sender, BHBanner) Then + THBanner.Text = GetFileName(xDiag.FileName) + ElseIf [Object].ReferenceEquals(sender, BHBackBMP) Then + THBackBMP.Text = GetFileName(xDiag.FileName) + End If + End Sub + + Private Sub Switches_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles _ + POHeaderSwitch.CheckedChanged, + POGridSwitch.CheckedChanged, + POWaveFormSwitch.CheckedChanged, + POWAVSwitch.CheckedChanged, + POBeatSwitch.CheckedChanged, + POExpansionSwitch.CheckedChanged + + Try + Dim Source As CheckBox = CType(sender, CheckBox) + Dim Target As Panel = Nothing + + If Object.ReferenceEquals(sender, Nothing) Then : Exit Sub + ElseIf Object.ReferenceEquals(sender, POHeaderSwitch) Then : Target = POHeaderInner + ElseIf Object.ReferenceEquals(sender, POGridSwitch) Then : Target = POGridInner + ElseIf Object.ReferenceEquals(sender, POWaveFormSwitch) Then : Target = POWaveFormInner + ElseIf Object.ReferenceEquals(sender, POWAVSwitch) Then : Target = POWAVInner + ElseIf Object.ReferenceEquals(sender, POBeatSwitch) Then : Target = POBeatInner + ElseIf Object.ReferenceEquals(sender, POExpansionSwitch) Then : Target = POExpansionInner + End If + + If Source.Checked Then + Target.Visible = True + Else + Target.Visible = False + End If + + Catch ex As Exception + + End Try + End Sub + + Private Sub Expanders_CheckChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles _ + POHeaderExpander.CheckedChanged, + POGridExpander.CheckedChanged, + POWaveFormExpander.CheckedChanged, + POWAVExpander.CheckedChanged, + POBeatExpander.CheckedChanged + + Try + Dim Source As CheckBox = CType(sender, CheckBox) + Dim Target As Panel = Nothing + 'Dim TargetParent As Panel = Nothing + + If Object.ReferenceEquals(sender, Nothing) Then : Exit Sub + ElseIf Object.ReferenceEquals(sender, POHeaderExpander) Then : Target = POHeaderPart2 ' : TargetParent = POHeaderInner + ElseIf Object.ReferenceEquals(sender, POGridExpander) Then : Target = POGridPart2 ' : TargetParent = POGridInner + ElseIf Object.ReferenceEquals(sender, POWaveFormExpander) Then : Target = POWaveFormPart2 ' : TargetParent = POWaveFormInner + ElseIf Object.ReferenceEquals(sender, POWAVExpander) Then : Target = POWAVPart2 ' : TargetParent = POWaveFormInner + ElseIf Object.ReferenceEquals(sender, POBeatExpander) Then : Target = POBeatPart2 ' : TargetParent = POWaveFormInner + End If + + If Source.Checked Then + Target.Visible = True + 'Source.Image = My.Resources.Collapse + Else + Target.Visible = False + 'Source.Image = My.Resources.Expand + End If + + Catch ex As Exception + + End Try + + End Sub + + Private Sub VerticalResizer_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles POWAVResizer.MouseDown, POBeatResizer.MouseDown, POExpansionResizer.MouseDown + tempResize = e.Y + End Sub + + Private Sub HorizontalResizer_MouseDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles POptionsResizer.MouseDown, SpL.MouseDown, SpR.MouseDown + tempResize = e.X + End Sub + + Private Sub POResizer_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles POWAVResizer.MouseMove, POBeatResizer.MouseMove, POExpansionResizer.MouseMove + If e.Button <> Windows.Forms.MouseButtons.Left Then Exit Sub + If e.Y = tempResize Then Exit Sub + + Try + Dim Source As Button = CType(sender, Button) + Dim Target As Panel = Source.Parent + + Dim xHeight As Integer = Target.Height + e.Y - tempResize + If xHeight < 10 Then xHeight = 10 + Target.Height = xHeight + + Target.Refresh() + Catch ex As Exception + + End Try + End Sub + + Private Sub POptionsResizer_MouseMove(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles POptionsResizer.MouseMove + If e.Button <> Windows.Forms.MouseButtons.Left Then Exit Sub + If e.X = tempResize Then Exit Sub + + Try + Dim xWidth As Integer = POptionsScroll.Width - e.X + tempResize + If xWidth < 25 Then xWidth = 25 + POptionsScroll.Width = xWidth + + Me.Refresh() + Application.DoEvents() + Catch ex As Exception + + End Try + End Sub + + Private Sub SpR_MouseMove(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles SpR.MouseMove + If e.Button <> Windows.Forms.MouseButtons.Left Then Exit Sub + If e.X = tempResize Then Exit Sub + + Try + Dim xWidth As Integer = PMainR.Width - e.X + tempResize + If xWidth < 0 Then xWidth = 0 + PMainR.Width = xWidth + + Me.ToolStripContainer1.Refresh() + Application.DoEvents() + Catch ex As Exception + + End Try + End Sub + + Private Sub SpL_MouseMove(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles SpL.MouseMove + If e.Button <> Windows.Forms.MouseButtons.Left Then Exit Sub + If e.X = tempResize Then Exit Sub + + Try + Dim xWidth As Integer = PMainL.Width + e.X - tempResize + If xWidth < 0 Then xWidth = 0 + PMainL.Width = xWidth + + Me.ToolStripContainer1.Refresh() + Application.DoEvents() + Catch ex As Exception + + End Try + End Sub + + Private Sub mnGotoMeasure_Click(sender As Object, e As EventArgs) Handles mnGotoMeasure.Click + Dim s = InputBox(Strings.Messages.PromptEnterMeasure, "Enter Measure") + + Dim i As Integer + If Int32.TryParse(s, i) Then + If i < 0 Or i > 999 Then + Exit Sub + End If + + PanelVScroll(PanelFocus) = -MeasureBottom(i) + End If + End Sub + + ' Generic shuffle for basic type arrays + Public Function Shuffle(Of T)(items As T(), Len As Integer) + Dim temp As T + Dim j As Int32 + + For i As Int32 = items.Count - 1 To 0 Step -1 + ' Pick an item for position i. + j = Int(Len * Rnd()) + ' Swap + temp = items(i) + items(i) = items(j) + items(j) = temp + Next i + Return items + End Function + + Private Sub POBSRandom_Click(sender As Object, e As EventArgs) Handles POBSRandom.Click + Dim xI1 As Integer + Dim xI2 As Integer + Dim xUndo As UndoRedo.LinkedURCmd = Nothing + Dim xRedo As UndoRedo.LinkedURCmd = New UndoRedo.Void + Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo + 'xRedo &= sCmdKM(niA1, .VPosition, .Value, IIf(NTInput, .Length, .LongNote), .Hidden, RealColumnToEnabled(niA7) - RealColumnToEnabled(niA1), 0, True) & vbCrLf + 'xUndo &= sCmdKM(niA7, .VPosition, .Value, IIf(NTInput, .Length, .LongNote), .Hidden, RealColumnToEnabled(niA1) - RealColumnToEnabled(niA7), 0, True) & vbCrLf + + ' Array 0: Unmodified array + ' Array 1: Modified array based on range + ' Array R: Array 1 reversed + Dim xniArray0 = New Integer() {niA1, niA2, niA3, niA4, niA5, niA6, niA7, niA8, niD1, niD2, niD3, niD4, niD5, niD6, niD7, niD8} + ' Dim xniArray1 = Integer() ' xniArray0 + + ' New function: Declare an array to see the range of selected notes. B columns ignored. + + Dim xRangeL As Integer = niB ' Big number Dim xRangeR As Integer = 0 ' Smol number ' Range finder @@ -2318,7 +4612,7 @@ StartCount: If Not NTInput Then ' Cut off left side If xRangeL < niA1 Then xRangeL = 0 - GoTo MirrorSkip1 + GoTo Skip1 End If For xI1 = 0 To xniArray0.Length @@ -2328,11 +4622,11 @@ StartCount: If Not NTInput Then End If Next -MirrorSkip1: +Skip1: ' Cut off right side If xRangeR > niD8 Then xRangeR = xniArray0.Length - GoTo MirrorSkip2 + GoTo Skip2 End If For xI1 = 0 To xniArray0.Length @@ -2342,2092 +4636,39 @@ MirrorSkip1: End If Next -MirrorSkip2: +Skip2: Dim xniArray1(xRangeR - xRangeL - 1) For xI1 = 0 To xRangeR - xRangeL - 1 xniArray1(xI1) = xniArray0(xI1 + xRangeL) Next - Dim xniArrayR = xniArray1.Reverse() Dim xniArrayLen = xniArray1.Length + ' xniArrayR: Randomized array + Dim xniArrayR = xniArray1.Clone() - Dim xCol As Integer - For xI1 = 1 To UBound(Notes) - If Not Notes(xI1).Selected Then Continue For - - xCol = Notes(xI1).ColumnIndex - ' MsgBox("Test" & "xCol: " & xCol & " xI1: " & xI1) + Dim xCol As Integer + For xI1 = 1 To UBound(Notes) + If Not Notes(xI1).Selected Then Continue For + Shuffle(xniArrayR, xniArrayLen) + xCol = Notes(xI1).ColumnIndex For xI2 = 0 To xniArrayLen - 1 - ' MsgBox("Test 2 xI2: " & xI2) If xCol = xniArray1(xI2) Then xCol = xniArrayR(xI2) Exit For End If - Next - - Me.RedoMoveNote(Notes(xI1), xCol, Notes(xI1).VPosition, xUndo, xRedo) - Notes(xI1).ColumnIndex = xCol + Next + + Me.RedoMoveNote(Notes(xI1), xCol, Notes(xI1).VPosition, xUndo, xRedo) + Notes(xI1).ColumnIndex = xCol Next -DoNothing: - - AddUndo(xUndo, xBaseRedo.Next) - UpdatePairing() - RefreshPanelAll() - End Sub - - - - - - - - Private Sub ValidateSelection() - If vSelStart < 0 Then vSelLength += vSelStart : vSelHalf += vSelStart : vSelStart = 0 - If vSelStart > GetMaxVPosition() - 1 Then vSelLength += vSelStart - GetMaxVPosition() + 1 : vSelHalf += vSelStart - GetMaxVPosition() + 1 : vSelStart = GetMaxVPosition() - 1 - If vSelStart + vSelLength < 0 Then vSelLength = -vSelStart - If vSelStart + vSelLength > GetMaxVPosition() - 1 Then vSelLength = GetMaxVPosition() - 1 - vSelStart - - If Math.Sign(vSelHalf) <> Math.Sign(vSelLength) Then vSelHalf = 0 - If Math.Abs(vSelHalf) > Math.Abs(vSelLength) Then vSelHalf = vSelLength - End Sub - - - - Private Sub TVCM_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TVCM.KeyDown - If e.KeyCode = Keys.Enter Then - TVCM.Text = Val(TVCM.Text) - If Val(TVCM.Text) <= 0 Then - MsgBox(Strings.Messages.NegativeFactorError, MsgBoxStyle.Critical, Strings.Messages.Err) - TVCM.Text = 1 - TVCM.Focus() - TVCM.SelectAll() - Else - BVCApply_Click(BVCApply, New System.EventArgs) - End If - End If - End Sub - - Private Sub TVCM_LostFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles TVCM.LostFocus - TVCM.Text = Val(TVCM.Text) - If Val(TVCM.Text) <= 0 Then - MsgBox(Strings.Messages.NegativeFactorError, MsgBoxStyle.Critical, Strings.Messages.Err) - TVCM.Text = 1 - TVCM.Focus() - TVCM.SelectAll() - End If - End Sub - - Private Sub TVCD_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TVCD.KeyDown - If e.KeyCode = Keys.Enter Then - TVCD.Text = Val(TVCD.Text) - If Val(TVCD.Text) <= 0 Then - MsgBox(Strings.Messages.NegativeDivisorError, MsgBoxStyle.Critical, Strings.Messages.Err) - TVCD.Text = 1 - TVCD.Focus() - TVCD.SelectAll() - Else - BVCApply_Click(BVCApply, New System.EventArgs) - End If - End If - End Sub - - Private Sub TVCD_LostFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles TVCD.LostFocus - TVCD.Text = Val(TVCD.Text) - If Val(TVCD.Text) <= 0 Then - MsgBox(Strings.Messages.NegativeDivisorError, MsgBoxStyle.Critical, Strings.Messages.Err) - TVCD.Text = 1 - TVCD.Focus() - TVCD.SelectAll() - End If - End Sub - - Private Sub TVCBPM_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TVCBPM.KeyDown - If e.KeyCode = Keys.Enter Then - TVCBPM.Text = Val(TVCBPM.Text) - If Val(TVCBPM.Text) <= 0 Then - MsgBox(Strings.Messages.NegativeDivisorError, MsgBoxStyle.Critical, Strings.Messages.Err) - TVCBPM.Text = Notes(0).Value / 10000 - TVCBPM.Focus() - TVCBPM.SelectAll() - Else - BVCCalculate_Click(BVCCalculate, New System.EventArgs) - End If - End If - End Sub - - Private Sub TVCBPM_LostFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles TVCBPM.LostFocus - TVCBPM.Text = Val(TVCBPM.Text) - If Val(TVCBPM.Text) <= 0 Then - MsgBox(Strings.Messages.NegativeDivisorError, MsgBoxStyle.Critical, Strings.Messages.Err) - TVCBPM.Text = Notes(0).Value / 10000 - TVCBPM.Focus() - TVCBPM.SelectAll() - End If - End Sub - - Private Function FindNoteIndex(note As Note) As Integer - Dim xI1 As Integer - If NTInput Then - For xI1 = 1 To UBound(Notes) - If Notes(xI1).equalsNT(note) Then Return xI1 - Next - Else - For xI1 = 1 To UBound(Notes) - If Notes(xI1).equalsBMSE(note) Then Return xI1 - Next - End If - Return xI1 - End Function - - - - - Private Function sIA() As Integer - Return IIf(sI > 98, 0, sI + 1) - End Function - - Private Function sIM() As Integer - Return IIf(sI < 1, 99, sI - 1) - End Function - - - - Private Sub TBUndo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBUndo.Click, mnUndo.Click - KMouseOver = -1 - 'KMouseDown = -1 - ReDim SelectedNotes(-1) - If sUndo(sI).ofType = UndoRedo.opNoOperation Then Exit Sub - PerformCommand(sUndo(sI)) - sI = sIM() - - TBUndo.Enabled = sUndo(sI).ofType <> UndoRedo.opNoOperation - TBRedo.Enabled = sRedo(sIA).ofType <> UndoRedo.opNoOperation - mnUndo.Enabled = sUndo(sI).ofType <> UndoRedo.opNoOperation - mnRedo.Enabled = sRedo(sIA).ofType <> UndoRedo.opNoOperation - End Sub - - Private Sub TBRedo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBRedo.Click, mnRedo.Click - KMouseOver = -1 - 'KMouseDown = -1 - ReDim SelectedNotes(-1) - If sRedo(sIA).ofType = UndoRedo.opNoOperation Then Exit Sub - PerformCommand(sRedo(sIA)) - sI = sIA() - - TBUndo.Enabled = sUndo(sI).ofType <> UndoRedo.opNoOperation - TBRedo.Enabled = sRedo(sIA).ofType <> UndoRedo.opNoOperation - mnUndo.Enabled = sUndo(sI).ofType <> UndoRedo.opNoOperation - mnRedo.Enabled = sRedo(sIA).ofType <> UndoRedo.opNoOperation - End Sub - - 'Undo appends before, Redo appends after. - 'After a sequence of Commands, - ' Undo will be the first one to execute, - ' Redo will be the last one to execute. - 'Remember to save the first Redo. - - 'In case where undo is Nothing: Dont worry. - 'In case where redo is Nothing: - ' If only one redo is in a sequence, put Nothing. - ' If several redo are in a sequence, - ' Create Void first. - ' Record its reference into a seperate copy. (xBaseRedo = xRedo) - ' Use this xRedo as the BaseRedo. - ' When calling AddUndo subroutine, use xBaseRedo.Next as cRedo. - - 'Dim xUndo As UndoRedo.LinkedURCmd = Nothing - 'Dim xRedo As UndoRedo.LinkedURCmd = Nothing - '... 'Me.RedoRemoveNote(K(xI1), True, xUndo, xRedo) - 'AddUndo(xUndo, xRedo) - - 'Dim xUndo As UndoRedo.LinkedURCmd = Nothing - 'Dim xRedo As New UndoRedo.Void - 'Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo - '... 'Me.RedoRemoveNote(K(xI1), True, xUndo, xRedo) - 'AddUndo(xUndo, xBaseRedo.Next) - - - - Private Sub TBAbout_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) - Dim Aboutboxx1 As New AboutBox1() - 'If My.Computer.FileSystem.FileExists(My.Application.Info.DirectoryPath & "\About.png") Then - Aboutboxx1.bBitmap = My.Resources.About0 - 'Aboutboxx1.SelectBitmap() - Aboutboxx1.ClientSize = New Size(1000, 500) - Aboutboxx1.ClickToCopy.Visible = True - Aboutboxx1.ShowDialog(Me) - 'Else - ' MsgBox(locale.Messages.cannotfind & " ""About.png""", MsgBoxStyle.Critical, locale.Messages.err) - 'End If - End Sub - - Private Sub TBOptions_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBVOptions.Click, mnVOptions.Click - - Dim xDiag As New OpVisual(vo, column, LWAV.Font) - xDiag.ShowDialog(Me) - UpdateColumnsX() - RefreshPanelAll() - End Sub - - - Private Sub AddToPOWAV(ByVal xPath() As String) - Dim xIndices(LWAV.SelectedIndices.Count - 1) As Integer - LWAV.SelectedIndices.CopyTo(xIndices, 0) - If xIndices.Length = 0 Then Exit Sub - - If xIndices.Length < xPath.Length Then - Dim i As Integer = xIndices.Length - Dim currWavIndex As Integer = xIndices(UBound(xIndices)) + 1 - ReDim Preserve xIndices(UBound(xPath)) - - Do While i < xIndices.Length And currWavIndex <= 1294 - Do While currWavIndex <= 1294 AndAlso hWAV(currWavIndex + 1) <> "" - currWavIndex += 1 - Loop - If currWavIndex > 1294 Then Exit Do - - xIndices(i) = currWavIndex - currWavIndex += 1 - i += 1 - Loop - - If currWavIndex > 1294 Then - ReDim Preserve xPath(i - 1) - ReDim Preserve xIndices(i - 1) - End If - End If - - 'Dim xI2 As Integer = 0 - For xI1 As Integer = 0 To UBound(xPath) - 'If xI2 > UBound(xIndices) Then Exit For - 'hWAV(xIndices(xI2) + 1) = GetFileName(xPath(xI1)) - 'LWAV.Items.Item(xIndices(xI2)) = C10to36(xIndices(xI2) + 1) & ": " & GetFileName(xPath(xI1)) - hWAV(xIndices(xI1) + 1) = GetFileName(xPath(xI1)) - LWAV.Items.Item(xIndices(xI1)) = C10to36(xIndices(xI1) + 1) & ": " & GetFileName(xPath(xI1)) - 'xI2 += 1 - Next - - LWAV.SelectedIndices.Clear() - For xI1 As Integer = 0 To IIf(UBound(xIndices) < UBound(xPath), UBound(xIndices), UBound(xPath)) - LWAV.SelectedIndices.Add(xIndices(xI1)) - Next - - If IsSaved Then SetIsSaved(False) - RefreshPanelAll() - End Sub - - Private Sub POWAV_DragDrop(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles POWAV.DragDrop - ReDim DDFileName(-1) - If Not e.Data.GetDataPresent(DataFormats.FileDrop) Then Return - - Dim xOrigPath() As String = CType(e.Data.GetData(DataFormats.FileDrop), String()) - Dim xPath() As String = FilterFileBySupported(xOrigPath, SupportedAudioExtension) - Array.Sort(xPath) - If xPath.Length = 0 Then - RefreshPanelAll() - Exit Sub - End If - - AddToPOWAV(xPath) - End Sub - - Private Sub POWAV_DragEnter(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles POWAV.DragEnter - If e.Data.GetDataPresent(DataFormats.FileDrop) Then - e.Effect = DragDropEffects.Copy - DDFileName = FilterFileBySupported(CType(e.Data.GetData(DataFormats.FileDrop), String()), SupportedAudioExtension) - Else - e.Effect = DragDropEffects.None - End If - RefreshPanelAll() - End Sub - - Private Sub POWAV_DragLeave(ByVal sender As Object, ByVal e As System.EventArgs) Handles POWAV.DragLeave - ReDim DDFileName(-1) - RefreshPanelAll() - End Sub - - Private Sub POWAV_Resize(ByVal sender As Object, ByVal e As System.EventArgs) Handles POWAV.Resize - LWAV.Height = sender.Height - 25 - End Sub - Private Sub POBeat_Resize(ByVal sender As Object, ByVal e As System.EventArgs) Handles POBeat.Resize - LBeat.Height = POBeat.Height - 25 - End Sub - Private Sub POExpansion_Resize(ByVal sender As Object, ByVal e As System.EventArgs) Handles POExpansion.Resize - TExpansion.Height = POExpansion.Height - 2 - End Sub - - Private Sub mn_DropDownClosed(ByVal sender As Object, ByVal e As System.EventArgs) - sender.ForeColor = Color.White - End Sub - Private Sub mn_DropDownOpened(ByVal sender As Object, ByVal e As System.EventArgs) - sender.ForeColor = Color.Black - End Sub - Private Sub mn_MouseEnter(ByVal sender As Object, ByVal e As System.EventArgs) - If sender.Pressed Then Return - sender.ForeColor = Color.Black - End Sub - Private Sub mn_MouseLeave(ByVal sender As Object, ByVal e As System.EventArgs) - If sender.Pressed Then Return - sender.ForeColor = Color.White - End Sub - - Private Sub TBPOptions_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBPOptions.Click, mnPOptions.Click - Dim xDOp As New OpPlayer(CurrentPlayer) - xDOp.ShowDialog(Me) - End Sub - - Private Sub THGenre_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles _ - THGenre.TextChanged, THTitle.TextChanged, THArtist.TextChanged, THPlayLevel.TextChanged, CHRank.SelectedIndexChanged, TExpansion.TextChanged, - THSubTitle.TextChanged, THSubArtist.TextChanged, THStageFile.TextChanged, THBanner.TextChanged, THBackBMP.TextChanged, - CHDifficulty.SelectedIndexChanged, THExRank.TextChanged, THTotal.TextChanged, THComment.TextChanged - If IsSaved Then SetIsSaved(False) - End Sub - - Private Sub CHLnObj_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CHLnObj.SelectedIndexChanged - If IsSaved Then SetIsSaved(False) - LnObj = CHLnObj.SelectedIndex - UpdatePairing() - RefreshPanelAll() - End Sub - - Private Sub ConvertBMSE2NT() - ReDim SelectedNotes(-1) - SortByVPositionInsertion() - - For i2 As Integer = 0 To UBound(Notes) - Notes(i2).Length = 0.0# - Next - - Dim i As Integer = 1 - Dim j As Integer = 0 - Dim xUbound As Integer = UBound(Notes) - - Do While i <= xUbound - If Not Notes(i).LongNote Then i += 1 : Continue Do - - For j = i + 1 To xUbound - If Notes(j).ColumnIndex <> Notes(i).ColumnIndex Then Continue For - - If Notes(j).LongNote Then - Notes(i).Length = Notes(j).VPosition - Notes(i).VPosition - For j2 As Integer = j To xUbound - 1 - Notes(j2) = Notes(j2 + 1) - Next - xUbound -= 1 - Exit For - - ElseIf Notes(j).Value \ 10000 = LnObj Then - Exit For - - End If - Next - - i += 1 - Loop - - ReDim Preserve Notes(xUbound) - - For i = 0 To xUbound - Notes(i).LongNote = False - Next - - SortByVPositionInsertion() - UpdatePairing() - CalculateTotalPlayableNotes() - End Sub - - Private Sub ConvertNT2BMSE() - ReDim SelectedNotes(-1) - Dim xK(0) As Note - xK(0) = Notes(0) - - For xI1 As Integer = 1 To UBound(Notes) - ReDim Preserve xK(UBound(xK) + 1) - With xK(UBound(xK)) - .ColumnIndex = Notes(xI1).ColumnIndex - .LongNote = Notes(xI1).Length > 0 - .Landmine = Notes(xI1).Landmine - .Value = Notes(xI1).Value - .VPosition = Notes(xI1).VPosition - .Selected = Notes(xI1).Selected - .Hidden = Notes(xI1).Hidden - End With - - If Notes(xI1).Length > 0 Then - ReDim Preserve xK(UBound(xK) + 1) - With xK(UBound(xK)) - .ColumnIndex = Notes(xI1).ColumnIndex - .LongNote = True - .Landmine = False - .Value = Notes(xI1).Value - .VPosition = Notes(xI1).VPosition + Notes(xI1).Length - .Selected = Notes(xI1).Selected - .Hidden = Notes(xI1).Hidden - End With - End If - Next - - Notes = xK - - SortByVPositionInsertion() - UpdatePairing() - CalculateTotalPlayableNotes() - End Sub - - Private Sub TBWavIncrease_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBWavIncrease.Click - Dim xUndo As UndoRedo.LinkedURCmd = Nothing - Dim xRedo As UndoRedo.LinkedURCmd = New UndoRedo.Void - Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo - - TBWavIncrease.Checked = Not sender.Checked - Me.RedoWavIncrease(TBWavIncrease.Checked, xUndo, xRedo) - AddUndo(xUndo, xBaseRedo.Next) - End Sub - - Private Sub TBNTInput_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBNTInput.Click, mnNTInput.Click - 'Dim xUndo As String = "NT_" & CInt(NTInput) & "_0" & vbCrLf & "KZ" & vbCrLf & sCmdKsAll(False) - 'Dim xRedo As String = "NT_" & CInt(Not NTInput) & "_1" - Dim xUndo As UndoRedo.LinkedURCmd = Nothing - Dim xRedo As UndoRedo.LinkedURCmd = New UndoRedo.Void - Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo - - Me.RedoRemoveNoteAll(False, xUndo, xRedo) - - NTInput = sender.Checked - - TBNTInput.Checked = NTInput - mnNTInput.Checked = NTInput - POBLong.Enabled = Not NTInput - POBLongShort.Enabled = Not NTInput - - bAdjustLength = False - bAdjustUpper = False - - Me.RedoNT(NTInput, False, xUndo, xRedo) - If NTInput Then - ConvertBMSE2NT() - Else - ConvertNT2BMSE() - End If - Me.RedoAddNoteAll(False, xUndo, xRedo) - - AddUndo(xUndo, xBaseRedo.Next) - RefreshPanelAll() - End Sub - - Private Sub THBPM_ValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles THBPM.ValueChanged - If Notes IsNot Nothing Then Notes(0).Value = THBPM.Value * 10000 : RefreshPanelAll() - If IsSaved Then SetIsSaved(False) - End Sub - - Private Sub TWPosition_ValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TWPosition.ValueChanged - wPosition = TWPosition.Value - TWPosition2.Value = IIf(wPosition > TWPosition2.Maximum, TWPosition2.Maximum, wPosition) - RefreshPanelAll() - End Sub - - Private Sub TWLeft_ValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TWLeft.ValueChanged - wLeft = TWLeft.Value - TWLeft2.Value = IIf(wLeft > TWLeft2.Maximum, TWLeft2.Maximum, wLeft) - RefreshPanelAll() - End Sub - - Private Sub TWWidth_ValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TWWidth.ValueChanged - wWidth = TWWidth.Value - TWWidth2.Value = IIf(wWidth > TWWidth2.Maximum, TWWidth2.Maximum, wWidth) - RefreshPanelAll() - End Sub - - Private Sub TWPrecision_ValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TWPrecision.ValueChanged - wPrecision = TWPrecision.Value - TWPrecision2.Value = IIf(wPrecision > TWPrecision2.Maximum, TWPrecision2.Maximum, wPrecision) - RefreshPanelAll() - End Sub - - Private Sub TWTransparency_ValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TWTransparency.ValueChanged - TWTransparency2.Value = TWTransparency.Value - vo.pBGMWav.Color = Color.FromArgb(TWTransparency.Value, vo.pBGMWav.Color) - RefreshPanelAll() - End Sub - - Private Sub TWSaturation_ValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TWSaturation.ValueChanged - Dim xColor As Color = vo.pBGMWav.Color - TWSaturation2.Value = TWSaturation.Value - vo.pBGMWav.Color = HSL2RGB(xColor.GetHue, TWSaturation.Value, xColor.GetBrightness * 1000, xColor.A) - RefreshPanelAll() - End Sub - - Private Sub TWPosition2_Scroll(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TWPosition2.Scroll - TWPosition.Value = TWPosition2.Value - End Sub - - Private Sub TWLeft2_Scroll(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TWLeft2.Scroll - TWLeft.Value = TWLeft2.Value - End Sub - - Private Sub TWWidth2_Scroll(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TWWidth2.Scroll - TWWidth.Value = TWWidth2.Value - End Sub - - Private Sub TWPrecision2_Scroll(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TWPrecision2.Scroll - TWPrecision.Value = TWPrecision2.Value - End Sub - - Private Sub TWTransparency2_Scroll(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TWTransparency2.Scroll - TWTransparency.Value = TWTransparency2.Value - End Sub - - Private Sub TWSaturation2_Scroll(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TWSaturation2.Scroll - TWSaturation.Value = TWSaturation2.Value - End Sub - - Private Sub TBLangDef_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBLangDef.Click - DispLang = "" - MsgBox(Strings.Messages.PreferencePostpone, MsgBoxStyle.Information) - End Sub - - Private Sub TBLangRefresh_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBLangRefresh.Click - For xI1 As Integer = cmnLanguage.Items.Count - 1 To 3 Step -1 - Try - cmnLanguage.Items.RemoveAt(xI1) - Catch ex As Exception - End Try - Next - - If Not Directory.Exists(My.Application.Info.DirectoryPath & "\Data") Then My.Computer.FileSystem.CreateDirectory(My.Application.Info.DirectoryPath & "\Data") - Dim xFileNames() As FileInfo = My.Computer.FileSystem.GetDirectoryInfo(My.Application.Info.DirectoryPath & "\Data").GetFiles("*.Lang.xml") - - For Each xStr As FileInfo In xFileNames - LoadLocaleXML(xStr) - Next - End Sub - - - Private Sub UpdateColumnsX() - column(0).Left = 0 - 'If col(0).Width = 0 Then col(0).Visible = False - - For xI1 As Integer = 1 To UBound(column) - column(xI1).Left = column(xI1 - 1).Left + IIf(column(xI1 - 1).isVisible, column(xI1 - 1).Width, 0) - 'If col(xI1).Width = 0 Then col(xI1).Visible = False - Next - HSL.Maximum = nLeft(gColumns) + column(niB).Width - HS.Maximum = nLeft(gColumns) + column(niB).Width - HSR.Maximum = nLeft(gColumns) + column(niB).Width - End Sub - - Private Sub CHPlayer_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CHPlayer.SelectedIndexChanged - If CHPlayer.SelectedIndex = -1 Then CHPlayer.SelectedIndex = 0 - - iPlayer = CHPlayer.SelectedIndex - Dim xGP2 As Boolean = iPlayer <> 0 - column(niD1).isVisible = xGP2 - column(niD2).isVisible = xGP2 - column(niD3).isVisible = xGP2 - column(niD4).isVisible = xGP2 - column(niD5).isVisible = xGP2 - column(niD6).isVisible = xGP2 - column(niD7).isVisible = xGP2 - column(niD8).isVisible = xGP2 - column(niS3).isVisible = xGP2 - - For xI1 As Integer = 1 To UBound(Notes) - Notes(xI1).Selected = Notes(xI1).Selected And nEnabled(Notes(xI1).ColumnIndex) - Next - 'AddUndo(xUndo, xRedo) - UpdateColumnsX() - - If IsInitializing Then Exit Sub - RefreshPanelAll() - End Sub - - Private Sub CGB_ValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CGB.ValueChanged - gColumns = niB + CGB.Value - 1 - UpdateColumnsX() - RefreshPanelAll() - End Sub - - Private Sub TBGOptions_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBGOptions.Click, mnGOptions.Click - Dim xTE As Integer - Select Case UCase(EncodingToString(TextEncoding)) ' az: wow seriously? is there really no better way? - Case "SYSTEM ANSI" : xTE = 0 - Case "LITTLE ENDIAN UTF16" : xTE = 1 - Case "ASCII" : xTE = 2 - Case "BIG ENDIAN UTF16" : xTE = 3 - Case "LITTLE ENDIAN UTF32" : xTE = 4 - Case "UTF7" : xTE = 5 - Case "UTF8" : xTE = 6 - Case "SJIS" : xTE = 7 - Case "EUC-KR" : xTE = 8 - Case Else : xTE = 0 - End Select - - Dim xDiag As New OpGeneral(gWheel, gPgUpDn, MiddleButtonMoveMethod, xTE, 192.0R / BMSGridLimit, - AutoSaveInterval, BeepWhileSaved, BPMx1296, STOPx1296, - AutoFocusMouseEnter, FirstClickDisabled, ClickStopPreview) - - If xDiag.ShowDialog() = Windows.Forms.DialogResult.OK Then - With xDiag - gWheel = .zWheel - gPgUpDn = .zPgUpDn - TextEncoding = .zEncoding - 'SortingMethod = .zSort - MiddleButtonMoveMethod = .zMiddle - AutoSaveInterval = .zAutoSave - BMSGridLimit = 192.0R / .zGridPartition - BeepWhileSaved = .cBeep.Checked - BPMx1296 = .cBpm1296.Checked - STOPx1296 = .cStop1296.Checked - AutoFocusMouseEnter = .cMEnterFocus.Checked - FirstClickDisabled = .cMClickFocus.Checked - ClickStopPreview = .cMStopPreview.Checked - ' KeyBindDP = .cMKeyBindDP.Checked - End With - If AutoSaveInterval Then AutoSaveTimer.Interval = AutoSaveInterval - AutoSaveTimer.Enabled = AutoSaveInterval - End If - End Sub - - Private Sub POBLong_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles POBLong.Click - If NTInput Then Exit Sub - - Dim xUndo As UndoRedo.LinkedURCmd = Nothing - Dim xRedo As UndoRedo.LinkedURCmd = New UndoRedo.Void - Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo - - For xI1 As Integer = 1 To UBound(Notes) - If Not Notes(xI1).Selected Then Continue For - - Me.RedoLongNoteModify(Notes(xI1), Notes(xI1).VPosition, True, xUndo, xRedo) - Notes(xI1).LongNote = True - Next - AddUndo(xUndo, xBaseRedo.Next) - SortByVPositionInsertion() - UpdatePairing() - RefreshPanelAll() - End Sub - - Private Sub POBNormal_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles POBShort.Click - Dim xUndo As UndoRedo.LinkedURCmd = Nothing - Dim xRedo As UndoRedo.LinkedURCmd = New UndoRedo.Void - Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo - - If Not NTInput Then - For xI1 As Integer = 1 To UBound(Notes) - If Not Notes(xI1).Selected Then Continue For - - Me.RedoLongNoteModify(Notes(xI1), Notes(xI1).VPosition, 0, xUndo, xRedo) - Notes(xI1).LongNote = False - Next - - Else - For xI1 As Integer = 1 To UBound(Notes) - If Not Notes(xI1).Selected Then Continue For - - Me.RedoLongNoteModify(Notes(xI1), Notes(xI1).VPosition, 0, xUndo, xRedo) - Notes(xI1).Length = 0 - Next - End If - - AddUndo(xUndo, xBaseRedo.Next) - SortByVPositionInsertion() - UpdatePairing() - RefreshPanelAll() - End Sub - - Private Sub POBNormalLong_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles POBLongShort.Click - If NTInput Then Exit Sub - - Dim xUndo As UndoRedo.LinkedURCmd = Nothing - Dim xRedo As UndoRedo.LinkedURCmd = New UndoRedo.Void - Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo - - For xI1 As Integer = 1 To UBound(Notes) - If Not Notes(xI1).Selected Then Continue For - - Me.RedoLongNoteModify(Notes(xI1), Notes(xI1).VPosition, Not Notes(xI1).LongNote, xUndo, xRedo) - Notes(xI1).LongNote = Not Notes(xI1).LongNote - Next - - AddUndo(xUndo, xBaseRedo.Next) - SortByVPositionInsertion() - UpdatePairing() - RefreshPanelAll() - End Sub - - Private Sub POBHidden_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles POBHidden.Click - Dim xUndo As UndoRedo.LinkedURCmd = Nothing - Dim xRedo As UndoRedo.LinkedURCmd = New UndoRedo.Void - Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo - - For xI1 As Integer = 1 To UBound(Notes) - If Not Notes(xI1).Selected Then Continue For - - Me.RedoHiddenNoteModify(Notes(xI1), True, True, xUndo, xRedo) - Notes(xI1).Hidden = True - Next - AddUndo(xUndo, xBaseRedo.Next) - SortByVPositionInsertion() - UpdatePairing() - RefreshPanelAll() - End Sub - - Private Sub POBVisible_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles POBVisible.Click - Dim xUndo As UndoRedo.LinkedURCmd = Nothing - Dim xRedo As UndoRedo.LinkedURCmd = New UndoRedo.Void - Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo - - For xI1 As Integer = 1 To UBound(Notes) - If Not Notes(xI1).Selected Then Continue For - - Me.RedoHiddenNoteModify(Notes(xI1), False, True, xUndo, xRedo) - Notes(xI1).Hidden = False - Next - AddUndo(xUndo, xBaseRedo.Next) - SortByVPositionInsertion() - UpdatePairing() - RefreshPanelAll() - End Sub - - Private Sub POBHiddenVisible_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles POBHiddenVisible.Click - Dim xUndo As UndoRedo.LinkedURCmd = Nothing - Dim xRedo As UndoRedo.LinkedURCmd = New UndoRedo.Void - Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo - - For xI1 As Integer = 1 To UBound(Notes) - If Not Notes(xI1).Selected Then Continue For - - Me.RedoHiddenNoteModify(Notes(xI1), Not Notes(xI1).Hidden, True, xUndo, xRedo) - Notes(xI1).Hidden = Not Notes(xI1).Hidden - Next - AddUndo(xUndo, xBaseRedo.Next) - SortByVPositionInsertion() - UpdatePairing() - RefreshPanelAll() - End Sub - - Private Sub POBModify_Click(ByVal sender As System.Object, ByVal e As EventArgs) Handles POBModify.Click - Dim xNum As Boolean = False - Dim xLbl As Boolean = False - Dim xI1 As Integer - - For xI1 = 1 To UBound(Notes) - If Notes(xI1).Selected AndAlso IsColumnNumeric(Notes(xI1).ColumnIndex) Then xNum = True : Exit For - Next - For xI1 = 1 To UBound(Notes) - If Notes(xI1).Selected AndAlso Not IsColumnNumeric(Notes(xI1).ColumnIndex) Then xLbl = True : Exit For - Next - If Not (xNum Or xLbl) Then Exit Sub - - If xNum Then - Dim xD1 As Double = Val(InputBox(Strings.Messages.PromptEnterNumeric, Text)) * 10000 - If Not xD1 = 0 Then - If xD1 <= 0 Then xD1 = 1 - - Dim xUndo As UndoRedo.LinkedURCmd = Nothing - Dim xRedo As UndoRedo.LinkedURCmd = New UndoRedo.Void - Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo - - For xI1 = 1 To UBound(Notes) - If Not IsColumnNumeric(Notes(xI1).ColumnIndex) Then Continue For - If Not Notes(xI1).Selected Then Continue For - - Me.RedoRelabelNote(Notes(xI1), xD1, xUndo, xRedo) - Notes(xI1).Value = xD1 - Next - AddUndo(xUndo, xBaseRedo.Next) - End If - End If - - If xLbl Then - Dim xStr As String = UCase(Trim(InputBox(Strings.Messages.PromptEnter, Me.Text))) - - If Len(xStr) = 0 Then GoTo Jump2 - If xStr = "00" Or xStr = "0" Then GoTo Jump1 - If Not Len(xStr) = 1 And Not Len(xStr) = 2 Then GoTo Jump1 - - Dim xI3 As Integer = Asc(Mid(xStr, 1, 1)) - If Not ((xI3 >= 48 And xI3 <= 57) Or (xI3 >= 65 And xI3 <= 90)) Then GoTo Jump1 - If Len(xStr) = 2 Then - Dim xI4 As Integer = Asc(Mid(xStr, 2, 1)) - If Not ((xI4 >= 48 And xI4 <= 57) Or (xI4 >= 65 And xI4 <= 90)) Then GoTo Jump1 - End If - Dim xVal As Integer = C36to10(xStr) * 10000 - - Dim xUndo As UndoRedo.LinkedURCmd = Nothing - Dim xRedo As UndoRedo.LinkedURCmd = New UndoRedo.Void - Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo - - For xI1 = 1 To UBound(Notes) - If IsColumnNumeric(Notes(xI1).ColumnIndex) Then Continue For - If Not Notes(xI1).Selected Then Continue For - - Me.RedoRelabelNote(Notes(xI1), xVal, xUndo, xRedo) - Notes(xI1).Value = xVal - Next - AddUndo(xUndo, xBaseRedo.Next) - GoTo Jump2 -Jump1: - MsgBox(Strings.Messages.InvalidLabel, MsgBoxStyle.Critical, Strings.Messages.Err) -Jump2: - End If - - RefreshPanelAll() - End Sub - - Private Sub TBMyO2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBMyO2.Click, mnMyO2.Click - Dim xDiag As New dgMyO2 - xDiag.Show() - End Sub - - - Private Sub TBFind_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBFind.Click, mnFind.Click - Dim xDiag As New diagFind(gColumns, Strings.Messages.Err, Strings.Messages.InvalidLabel) - xDiag.Show() - End Sub - - Private Function fdrCheck(ByVal xNote As Note) As Boolean - Return xNote.VPosition >= MeasureBottom(fdriMesL) And xNote.VPosition < MeasureBottom(fdriMesU) + MeasureLength(fdriMesU) AndAlso - IIf(IsColumnNumeric(xNote.ColumnIndex), - xNote.Value >= fdriValL And xNote.Value <= fdriValU, - xNote.Value >= fdriLblL And xNote.Value <= fdriLblU) AndAlso - Array.IndexOf(fdriCol, xNote.ColumnIndex - 1) <> -1 - ' lol Fixed - End Function - - Private Function fdrRangeS(ByVal xbLim1 As Boolean, ByVal xbLim2 As Boolean, ByVal xVal As Boolean) As Boolean - Return (Not xbLim1 And xbLim2 And xVal) Or (xbLim1 And Not xbLim2 And Not xVal) Or (xbLim1 And xbLim2) - End Function - - Public Sub fdrSelect(ByVal iRange As Integer, - ByVal xMesL As Integer, ByVal xMesU As Integer, - ByVal xLblL As String, ByVal xLblU As String, - ByVal xValL As Integer, ByVal xValU As Integer, - ByVal iCol() As Integer) - - fdriMesL = xMesL - fdriMesU = xMesU - fdriLblL = C36to10(xLblL) * 10000 - fdriLblU = C36to10(xLblU) * 10000 - fdriValL = xValL - fdriValU = xValU - fdriCol = iCol - - Dim xbSel As Boolean = iRange Mod 2 = 0 - Dim xbUnsel As Boolean = iRange Mod 3 = 0 - Dim xbShort As Boolean = iRange Mod 5 = 0 - Dim xbLong As Boolean = iRange Mod 7 = 0 - Dim xbHidden As Boolean = iRange Mod 11 = 0 - Dim xbVisible As Boolean = iRange Mod 13 = 0 - - Dim xSel(UBound(Notes)) As Boolean - For xI1 As Integer = 1 To UBound(Notes) - xSel(xI1) = Notes(xI1).Selected - Next - - 'Main process - For xI1 As Integer = 1 To UBound(Notes) - Dim bbba As Boolean = xbSel And xSel(xI1) - Dim bbbb As Boolean = xbUnsel And Not xSel(xI1) - Dim bbbc As Boolean = nEnabled(Notes(xI1).ColumnIndex) - Dim bbbd As Boolean = fdrRangeS(xbShort, xbLong, IIf(NTInput, Notes(xI1).Length, Notes(xI1).LongNote)) - Dim bbbe As Boolean = fdrRangeS(xbVisible, xbHidden, Notes(xI1).Hidden) - Dim bbbf As Boolean = fdrCheck(Notes(xI1)) - - If ((xbSel And xSel(xI1)) Or (xbUnsel And Not xSel(xI1))) AndAlso - nEnabled(Notes(xI1).ColumnIndex) AndAlso fdrRangeS(xbShort, xbLong, IIf(NTInput, Notes(xI1).Length, Notes(xI1).LongNote)) And fdrRangeS(xbVisible, xbHidden, Notes(xI1).Hidden) Then - Notes(xI1).Selected = fdrCheck(Notes(xI1)) - End If - Next - - RefreshPanelAll() - Beep() - End Sub - - Public Sub fdrUnselect(ByVal iRange As Integer, - ByVal xMesL As Integer, ByVal xMesU As Integer, - ByVal xLblL As String, ByVal xLblU As String, - ByVal xValL As Integer, ByVal xValU As Integer, - ByVal iCol() As Integer) - - fdriMesL = xMesL - fdriMesU = xMesU - fdriLblL = C36to10(xLblL) * 10000 - fdriLblU = C36to10(xLblU) * 10000 - fdriValL = xValL - fdriValU = xValU - fdriCol = iCol - - Dim xbSel As Boolean = iRange Mod 2 = 0 - Dim xbUnsel As Boolean = iRange Mod 3 = 0 - Dim xbShort As Boolean = iRange Mod 5 = 0 - Dim xbLong As Boolean = iRange Mod 7 = 0 - Dim xbHidden As Boolean = iRange Mod 11 = 0 - Dim xbVisible As Boolean = iRange Mod 13 = 0 - - Dim xSel(UBound(Notes)) As Boolean - For xI1 As Integer = 1 To UBound(Notes) - xSel(xI1) = Notes(xI1).Selected - Next - - 'Main process - For xI1 As Integer = 1 To UBound(Notes) - If ((xbSel And xSel(xI1)) Or (xbUnsel And Not xSel(xI1))) AndAlso - nEnabled(Notes(xI1).ColumnIndex) AndAlso fdrRangeS(xbShort, xbLong, IIf(NTInput, Notes(xI1).Length, Notes(xI1).LongNote)) And fdrRangeS(xbVisible, xbHidden, Notes(xI1).Hidden) Then - Notes(xI1).Selected = Not fdrCheck(Notes(xI1)) - End If - Next - - RefreshPanelAll() - Beep() - End Sub - - Public Sub fdrDelete(ByVal iRange As Integer, - ByVal xMesL As Integer, ByVal xMesU As Integer, - ByVal xLblL As String, ByVal xLblU As String, - ByVal xValL As Integer, ByVal xValU As Integer, - ByVal iCol() As Integer) - - fdriMesL = xMesL - fdriMesU = xMesU - fdriLblL = C36to10(xLblL) * 10000 - fdriLblU = C36to10(xLblU) * 10000 - fdriValL = xValL - fdriValU = xValU - fdriCol = iCol - - Dim xbSel As Boolean = iRange Mod 2 = 0 - Dim xbUnsel As Boolean = iRange Mod 3 = 0 - Dim xbShort As Boolean = iRange Mod 5 = 0 - Dim xbLong As Boolean = iRange Mod 7 = 0 - Dim xbHidden As Boolean = iRange Mod 11 = 0 - Dim xbVisible As Boolean = iRange Mod 13 = 0 - - Dim xUndo As UndoRedo.LinkedURCmd = Nothing - Dim xRedo As UndoRedo.LinkedURCmd = New UndoRedo.Void - Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo - - 'Main process - Dim xI1 As Integer = 1 - Do While xI1 <= UBound(Notes) - If ((xbSel And Notes(xI1).Selected) Or (xbUnsel And Not Notes(xI1).Selected)) AndAlso - fdrCheck(Notes(xI1)) AndAlso nEnabled(Notes(xI1).ColumnIndex) AndAlso fdrRangeS(xbShort, xbLong, IIf(NTInput, Notes(xI1).Length, Notes(xI1).LongNote)) And fdrRangeS(xbVisible, xbHidden, Notes(xI1).Hidden) Then - RedoRemoveNote(Notes(xI1), xUndo, xRedo) - RemoveNote(xI1, False) - Else - xI1 += 1 - End If - Loop - - AddUndo(xUndo, xBaseRedo.Next) - SortByVPositionInsertion() - UpdatePairing() - RefreshPanelAll() - CalculateTotalPlayableNotes() - Beep() - End Sub - - Public Sub fdrReplaceL(ByVal iRange As Integer, - ByVal xMesL As Integer, ByVal xMesU As Integer, - ByVal xLblL As String, ByVal xLblU As String, - ByVal xValL As Integer, ByVal xValU As Integer, - ByVal iCol() As Integer, ByVal xReplaceLbl As String) - - fdriMesL = xMesL - fdriMesU = xMesU - fdriLblL = C36to10(xLblL) * 10000 - fdriLblU = C36to10(xLblU) * 10000 - fdriValL = xValL - fdriValU = xValU - fdriCol = iCol - - Dim xbSel As Boolean = iRange Mod 2 = 0 - Dim xbUnsel As Boolean = iRange Mod 3 = 0 - Dim xbShort As Boolean = iRange Mod 5 = 0 - Dim xbLong As Boolean = iRange Mod 7 = 0 - Dim xbHidden As Boolean = iRange Mod 11 = 0 - Dim xbVisible As Boolean = iRange Mod 13 = 0 - - Dim xxLbl As Integer = C36to10(xReplaceLbl) * 10000 - - Dim xUndo As UndoRedo.LinkedURCmd = Nothing - Dim xRedo As UndoRedo.LinkedURCmd = New UndoRedo.Void - Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo - - 'Main process - For xI1 As Integer = 1 To UBound(Notes) - If ((xbSel And Notes(xI1).Selected) Or (xbUnsel And Not Notes(xI1).Selected)) AndAlso - fdrCheck(Notes(xI1)) AndAlso nEnabled(Notes(xI1).ColumnIndex) And Not IsColumnNumeric(Notes(xI1).ColumnIndex) AndAlso fdrRangeS(xbShort, xbLong, IIf(NTInput, Notes(xI1).Length, Notes(xI1).LongNote)) And fdrRangeS(xbVisible, xbHidden, Notes(xI1).Hidden) Then - 'xUndo &= sCmdKC(K(xI1).ColumnIndex, K(xI1).VPosition, xxLbl, IIf(NTInput, K(xI1).Length, K(xI1).LongNote), K(xI1).Hidden, 0, 0, K(xI1).Value, IIf(NTInput, K(xI1).Length, K(xI1).LongNote), K(xI1).Hidden, True) & vbCrLf - 'xRedo &= sCmdKC(K(xI1).ColumnIndex, K(xI1).VPosition, K(xI1).Value, IIf(NTInput, K(xI1).Length, K(xI1).LongNote), K(xI1).Hidden, 0, 0, xxLbl, IIf(NTInput, K(xI1).Length, K(xI1).LongNote), K(xI1).Hidden, True) & vbCrLf - Me.RedoRelabelNote(Notes(xI1), xxLbl, xUndo, xRedo) - Notes(xI1).Value = xxLbl - End If - Next - - AddUndo(xUndo, xBaseRedo.Next) - RefreshPanelAll() - Beep() - End Sub - - Public Sub fdrReplaceV(ByVal iRange As Integer, - ByVal xMesL As Integer, ByVal xMesU As Integer, - ByVal xLblL As String, ByVal xLblU As String, - ByVal xValL As Integer, ByVal xValU As Integer, - ByVal iCol() As Integer, ByVal xReplaceVal As Integer) - - fdriMesL = xMesL - fdriMesU = xMesU - fdriLblL = C36to10(xLblL) * 10000 - fdriLblU = C36to10(xLblU) * 10000 - fdriValL = xValL - fdriValU = xValU - fdriCol = iCol - - Dim xbSel As Boolean = iRange Mod 2 = 0 - Dim xbUnsel As Boolean = iRange Mod 3 = 0 - Dim xbShort As Boolean = iRange Mod 5 = 0 - Dim xbLong As Boolean = iRange Mod 7 = 0 - Dim xbHidden As Boolean = iRange Mod 11 = 0 - Dim xbVisible As Boolean = iRange Mod 13 = 0 - - Dim xUndo As UndoRedo.LinkedURCmd = Nothing - Dim xRedo As UndoRedo.LinkedURCmd = New UndoRedo.Void - Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo - - 'Main process - For xI1 As Integer = 1 To UBound(Notes) - If ((xbSel And Notes(xI1).Selected) Or (xbUnsel And Not Notes(xI1).Selected)) AndAlso - fdrCheck(Notes(xI1)) AndAlso nEnabled(Notes(xI1).ColumnIndex) And IsColumnNumeric(Notes(xI1).ColumnIndex) AndAlso fdrRangeS(xbShort, xbLong, IIf(NTInput, Notes(xI1).Length, Notes(xI1).LongNote)) And fdrRangeS(xbVisible, xbHidden, Notes(xI1).Hidden) Then - 'xUndo &= sCmdKC(K(xI1).ColumnIndex, K(xI1).VPosition, xReplaceVal, IIf(NTInput, K(xI1).Length, K(xI1).LongNote), K(xI1).Hidden, 0, 0, K(xI1).Value, IIf(NTInput, K(xI1).Length, K(xI1).LongNote), K(xI1).Hidden, True) & vbCrLf - 'xRedo &= sCmdKC(K(xI1).ColumnIndex, K(xI1).VPosition, K(xI1).Value, IIf(NTInput, K(xI1).Length, K(xI1).LongNote), K(xI1).Hidden, 0, 0, xReplaceVal, IIf(NTInput, K(xI1).Length, K(xI1).LongNote), K(xI1).Hidden, True) & vbCrLf - Me.RedoRelabelNote(Notes(xI1), xReplaceVal, xUndo, xRedo) - Notes(xI1).Value = xReplaceVal - End If - Next - - AddUndo(xUndo, xBaseRedo.Next) - RefreshPanelAll() - Beep() - End Sub - - Private Sub MInsert_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MInsert.Click - Dim xUndo As UndoRedo.LinkedURCmd = Nothing - Dim xRedo As UndoRedo.LinkedURCmd = New UndoRedo.Void - Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo - - Dim xMeasure As Integer = MeasureAtDisplacement(menuVPosition) - Dim xMLength As Double = MeasureLength(xMeasure) - Dim xVP As Double = MeasureBottom(xMeasure) - - If NTInput Then - Dim xI1 As Integer = 1 - Do While xI1 <= UBound(Notes) - If MeasureAtDisplacement(Notes(xI1).VPosition) >= 999 Then - Me.RedoRemoveNote(Notes(xI1), xUndo, xRedo) - RemoveNote(xI1, False) - Else - xI1 += 1 - End If - Loop - - Dim xdVP As Double - For xI1 = 1 To UBound(Notes) - If Notes(xI1).VPosition >= xVP And Notes(xI1).VPosition + Notes(xI1).Length <= MeasureBottom(999) Then - Me.RedoMoveNote(Notes(xI1), Notes(xI1).ColumnIndex, Notes(xI1).VPosition + xMLength, xUndo, xRedo) - Notes(xI1).VPosition += xMLength - - ElseIf Notes(xI1).VPosition >= xVP Then - xdVP = MeasureBottom(999) - 1 - Notes(xI1).VPosition - Notes(xI1).Length - Me.RedoLongNoteModify(Notes(xI1), Notes(xI1).VPosition + xMLength, Notes(xI1).Length + xdVP, xUndo, xRedo) - Notes(xI1).VPosition += xMLength - Notes(xI1).Length += xdVP - - ElseIf Notes(xI1).VPosition + Notes(xI1).Length >= xVP Then - xdVP = IIf(Notes(xI1).VPosition + Notes(xI1).Length > MeasureBottom(999) - 1, GetMaxVPosition() - 1 - Notes(xI1).VPosition - Notes(xI1).Length, xMLength) - Me.RedoLongNoteModify(Notes(xI1), Notes(xI1).VPosition, Notes(xI1).Length + xdVP, xUndo, xRedo) - Notes(xI1).Length += xdVP - End If - Next - - Else - Dim xI1 As Integer = 1 - Do While xI1 <= UBound(Notes) - If MeasureAtDisplacement(Notes(xI1).VPosition) >= 999 Then - Me.RedoRemoveNote(Notes(xI1), xUndo, xRedo) - RemoveNote(xI1, False) - Else - xI1 += 1 - End If - Loop - - For xI1 = 1 To UBound(Notes) - If Notes(xI1).VPosition >= xVP Then - Me.RedoMoveNote(Notes(xI1), Notes(xI1).ColumnIndex, Notes(xI1).VPosition + xMLength, xUndo, xRedo) - Notes(xI1).VPosition += xMLength - End If - Next - End If - - For xI1 As Integer = 999 To xMeasure + 1 Step -1 - MeasureLength(xI1) = MeasureLength(xI1 - 1) - Next - UpdateMeasureBottom() - - AddUndo(xUndo, xBaseRedo.Next) - UpdatePairing() - CalculateGreatestVPosition() - CalculateTotalPlayableNotes() - RefreshPanelAll() - End Sub - - Private Sub MRemove_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MRemove.Click - Dim xUndo As UndoRedo.LinkedURCmd = Nothing - Dim xRedo As UndoRedo.LinkedURCmd = New UndoRedo.Void - Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo - - Dim xMeasure As Integer = MeasureAtDisplacement(menuVPosition) - Dim xMLength As Double = MeasureLength(xMeasure) - Dim xVP As Double = MeasureBottom(xMeasure) - - If NTInput Then - Dim xI1 As Integer = 1 - Do While xI1 <= UBound(Notes) - If MeasureAtDisplacement(Notes(xI1).VPosition) = xMeasure And MeasureAtDisplacement(Notes(xI1).VPosition + Notes(xI1).Length) = xMeasure Then - Me.RedoRemoveNote(Notes(xI1), xUndo, xRedo) - RemoveNote(xI1, False) - Else - xI1 += 1 - End If - Loop - - Dim xdVP As Double - xVP = MeasureBottom(xMeasure) - For xI1 = 1 To UBound(Notes) - If Notes(xI1).VPosition >= xVP + xMLength Then - Me.RedoMoveNote(Notes(xI1), Notes(xI1).ColumnIndex, Notes(xI1).VPosition - xMLength, xUndo, xRedo) - Notes(xI1).VPosition -= xMLength - - ElseIf Notes(xI1).VPosition >= xVP Then - xdVP = xMLength + xVP - Notes(xI1).VPosition - Me.RedoLongNoteModify(Notes(xI1), Notes(xI1).VPosition + xdVP - xMLength, Notes(xI1).Length - xdVP, xUndo, xRedo) - Notes(xI1).VPosition += xdVP - xMLength - Notes(xI1).Length -= xdVP - - ElseIf Notes(xI1).VPosition + Notes(xI1).Length >= xVP Then - xdVP = IIf(Notes(xI1).VPosition + Notes(xI1).Length >= xVP + xMLength, xMLength, Notes(xI1).VPosition + Notes(xI1).Length - xVP + 1) - Me.RedoLongNoteModify(Notes(xI1), Notes(xI1).VPosition, Notes(xI1).Length - xdVP, xUndo, xRedo) - Notes(xI1).Length -= xdVP - End If - Next - - Else - Dim xI1 As Integer = 1 - Do While xI1 <= UBound(Notes) - If MeasureAtDisplacement(Notes(xI1).VPosition) = xMeasure Then - Me.RedoRemoveNote(Notes(xI1), xUndo, xRedo) - RemoveNote(xI1, False) - Else - xI1 += 1 - End If - Loop - - xVP = MeasureBottom(xMeasure) - For xI1 = 1 To UBound(Notes) - If Notes(xI1).VPosition >= xVP Then - Me.RedoMoveNote(Notes(xI1), Notes(xI1).ColumnIndex, Notes(xI1).VPosition - xMLength, xUndo, xRedo) - Notes(xI1).VPosition -= xMLength - End If - Next - End If - - For xI1 As Integer = 999 To xMeasure + 1 Step -1 - MeasureLength(xI1 - 1) = MeasureLength(xI1) - Next - UpdateMeasureBottom() - - AddUndo(xUndo, xBaseRedo.Next) - SortByVPositionInsertion() - UpdatePairing() - CalculateGreatestVPosition() - CalculateTotalPlayableNotes() - RefreshPanelAll() - End Sub - - Private Sub TBThemeDef_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBThemeDef.Click - Dim xTempFileName As String = My.Application.Info.DirectoryPath & "\____TempFile.Theme.xml" - My.Computer.FileSystem.WriteAllText(xTempFileName, My.Resources.O2Mania_Theme, False, System.Text.Encoding.Unicode) - LoadSettings(xTempFileName) - System.IO.File.Delete(xTempFileName) - - RefreshPanelAll() - End Sub - - Private Sub TBThemeSave_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBThemeSave.Click - Dim xDiag As New SaveFileDialog - xDiag.Filter = Strings.FileType.THEME_XML & "|*.Theme.xml" - xDiag.DefaultExt = "Theme.xml" - xDiag.InitialDirectory = My.Application.Info.DirectoryPath & "\Data" - If xDiag.ShowDialog = Windows.Forms.DialogResult.Cancel Then Exit Sub - - Me.SaveSettings(xDiag.FileName, True) - If BeepWhileSaved Then Beep() - TBThemeRefresh_Click(TBThemeRefresh, New System.EventArgs) - End Sub - - Private Sub TBThemeRefresh_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBThemeRefresh.Click - For xI1 As Integer = cmnTheme.Items.Count - 1 To 5 Step -1 - Try - cmnTheme.Items.RemoveAt(xI1) - Catch ex As Exception - End Try - Next - - If Not Directory.Exists(My.Application.Info.DirectoryPath & "\Data") Then My.Computer.FileSystem.CreateDirectory(My.Application.Info.DirectoryPath & "\Data") - Dim xFileNames() As FileInfo = My.Computer.FileSystem.GetDirectoryInfo(My.Application.Info.DirectoryPath & "\Data").GetFiles("*.Theme.xml") - For Each xStr As FileInfo In xFileNames - cmnTheme.Items.Add(xStr.Name, Nothing, AddressOf LoadTheme) - Next - End Sub - - Private Sub TBThemeLoadComptability_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBThemeLoadComptability.Click - Dim xDiag As New OpenFileDialog - xDiag.Filter = Strings.FileType.TH & "|*.th" - xDiag.DefaultExt = "th" - xDiag.InitialDirectory = My.Application.Info.DirectoryPath - If My.Computer.FileSystem.DirectoryExists(My.Application.Info.DirectoryPath & "\Theme") Then xDiag.InitialDirectory = My.Application.Info.DirectoryPath & "\Theme" - If xDiag.ShowDialog = Windows.Forms.DialogResult.Cancel Then Exit Sub - - Me.LoadThemeComptability(xDiag.FileName) - RefreshPanelAll() - End Sub - - ''' - ''' Will return Double.PositiveInfinity if canceled. - ''' - Private Function InputBoxDouble(ByVal Prompt As String, ByVal LBound As Double, ByVal UBound As Double, Optional ByVal Title As String = "", Optional ByVal DefaultResponse As String = "") As Double - Dim xStr As String = InputBox(Prompt, Title, DefaultResponse) - If xStr = "" Then Return Double.PositiveInfinity - - InputBoxDouble = Val(xStr) - If InputBoxDouble > UBound Then InputBoxDouble = UBound - If InputBoxDouble < LBound Then InputBoxDouble = LBound - End Function - - Private Sub FSSS_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles FSSS.Click - Dim xMax As Double = IIf(vSelLength > 0, GetMaxVPosition() - vSelLength, GetMaxVPosition) - Dim xMin As Double = IIf(vSelLength < 0, -vSelLength, 0) - Dim xDouble As Double = InputBoxDouble("Please enter a number between " & xMin & " and " & xMax & ".", xMin, xMax, , vSelStart) - If xDouble = Double.PositiveInfinity Then Return - - vSelStart = xDouble - ValidateSelection() - RefreshPanelAll() - POStatusRefresh() - End Sub - - Private Sub FSSL_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles FSSL.Click - Dim xMax As Double = GetMaxVPosition() - vSelStart - Dim xMin As Double = -vSelStart - Dim xDouble As Double = InputBoxDouble("Please enter a number between " & xMin & " and " & xMax & ".", xMin, xMax, , vSelLength) - If xDouble = Double.PositiveInfinity Then Return - - vSelLength = xDouble - ValidateSelection() - RefreshPanelAll() - POStatusRefresh() - End Sub - - Private Sub FSSH_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles FSSH.Click - Dim xMax As Double = IIf(vSelLength > 0, vSelLength, 0) - Dim xMin As Double = IIf(vSelLength > 0, 0, -vSelLength) - Dim xDouble As Double = InputBoxDouble("Please enter a number between " & xMin & " and " & xMax & ".", xMin, xMax, , vSelHalf) - If xDouble = Double.PositiveInfinity Then Return - - vSelHalf = xDouble - ValidateSelection() - RefreshPanelAll() - POStatusRefresh() - End Sub - - Private Sub BVCReverse_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BVCReverse.Click - vSelStart += vSelLength - vSelHalf -= vSelLength - vSelLength *= -1 - ValidateSelection() - RefreshPanelAll() - POStatusRefresh() - End Sub - - Private Sub AutoSaveTimer_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles AutoSaveTimer.Tick - Dim xTime As Date = Now - Dim xFileName As String - With xTime - xFileName = My.Application.Info.DirectoryPath & "\AutoSave_" & - .Year & "_" & .Month & "_" & .Day & "_" & .Hour & "_" & .Minute & "_" & .Second & "_" & .Millisecond & ".IBMSC" - End With - 'My.Computer.FileSystem.WriteAllText(xFileName, SaveiBMSC, False, System.Text.Encoding.Unicode) - SaveiBMSC(xFileName) - - On Error Resume Next - If PreviousAutoSavedFileName <> "" Then IO.File.Delete(PreviousAutoSavedFileName) - On Error GoTo 0 - - PreviousAutoSavedFileName = xFileName - End Sub - - Private Sub CWAVMultiSelect_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CWAVMultiSelect.CheckedChanged - WAVMultiSelect = CWAVMultiSelect.Checked - LWAV.SelectionMode = IIf(WAVMultiSelect, SelectionMode.MultiExtended, SelectionMode.One) - End Sub - - Private Sub CWAVChangeLabel_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CWAVChangeLabel.CheckedChanged - WAVChangeLabel = CWAVChangeLabel.Checked - End Sub - - Private Sub BWAVUp_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BWAVUp.Click - If LWAV.SelectedIndex = -1 Then Return - - Dim xUndo As UndoRedo.LinkedURCmd = Nothing - Dim xRedo As UndoRedo.LinkedURCmd = New UndoRedo.Void - Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo - - Dim xIndices(LWAV.SelectedIndices.Count - 1) As Integer - LWAV.SelectedIndices.CopyTo(xIndices, 0) - - Dim xS As Integer - For xS = 0 To 1294 - If Array.IndexOf(xIndices, xS) = -1 Then Exit For - Next - - Dim xStr As String = "" - Dim xIndex As Integer = -1 - For xI1 As Integer = xS To 1294 - xIndex = Array.IndexOf(xIndices, xI1) - If xIndex <> -1 Then - xStr = hWAV(xI1 + 1) - hWAV(xI1 + 1) = hWAV(xI1) - hWAV(xI1) = xStr - - LWAV.Items.Item(xI1) = C10to36(xI1 + 1) & ": " & hWAV(xI1 + 1) - LWAV.Items.Item(xI1 - 1) = C10to36(xI1) & ": " & hWAV(xI1) - - If Not WAVChangeLabel Then GoTo 1100 - - Dim xL1 As String = C10to36(xI1) - Dim xL2 As String = C10to36(xI1 + 1) - For xI2 As Integer = 1 To UBound(Notes) - If IsColumnNumeric(Notes(xI2).ColumnIndex) Then Continue For - - If C10to36(Notes(xI2).Value \ 10000) = xL1 Then - Me.RedoRelabelNote(Notes(xI2), xI1 * 10000 + 10000, xUndo, xRedo) - Notes(xI2).Value = xI1 * 10000 + 10000 - - ElseIf C10to36(Notes(xI2).Value \ 10000) = xL2 Then - Me.RedoRelabelNote(Notes(xI2), xI1 * 10000, xUndo, xRedo) - Notes(xI2).Value = xI1 * 10000 - - End If - Next - -1100: xIndices(xIndex) += -1 - End If - Next - - LWAV.SelectedIndices.Clear() - For xI1 As Integer = 0 To UBound(xIndices) - LWAV.SelectedIndices.Add(xIndices(xI1)) - Next - - AddUndo(xUndo, xBaseRedo.Next) - RefreshPanelAll() - POStatusRefresh() - End Sub - - Private Sub BWAVDown_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BWAVDown.Click - If LWAV.SelectedIndex = -1 Then Return - - Dim xUndo As UndoRedo.LinkedURCmd = Nothing - Dim xRedo As UndoRedo.LinkedURCmd = New UndoRedo.Void - Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo - - Dim xIndices(LWAV.SelectedIndices.Count - 1) As Integer - LWAV.SelectedIndices.CopyTo(xIndices, 0) - - Dim xS As Integer - For xS = 1294 To 0 Step -1 - If Array.IndexOf(xIndices, xS) = -1 Then Exit For - Next - - Dim xStr As String = "" - Dim xIndex As Integer = -1 - For xI1 As Integer = xS To 0 Step -1 - xIndex = Array.IndexOf(xIndices, xI1) - If xIndex <> -1 Then - xStr = hWAV(xI1 + 1) - hWAV(xI1 + 1) = hWAV(xI1 + 2) - hWAV(xI1 + 2) = xStr - - LWAV.Items.Item(xI1) = C10to36(xI1 + 1) & ": " & hWAV(xI1 + 1) - LWAV.Items.Item(xI1 + 1) = C10to36(xI1 + 2) & ": " & hWAV(xI1 + 2) - - If Not WAVChangeLabel Then GoTo 1100 - - Dim xL1 As String = C10to36(xI1 + 2) - Dim xL2 As String = C10to36(xI1 + 1) - For xI2 As Integer = 1 To UBound(Notes) - If IsColumnNumeric(Notes(xI2).ColumnIndex) Then Continue For - - If C10to36(Notes(xI2).Value \ 10000) = xL1 Then - Me.RedoRelabelNote(Notes(xI2), xI1 * 10000 + 10000, xUndo, xRedo) - Notes(xI2).Value = xI1 * 10000 + 10000 - - ElseIf C10to36(Notes(xI2).Value \ 10000) = xL2 Then - Me.RedoRelabelNote(Notes(xI2), xI1 * 10000 + 20000, xUndo, xRedo) - Notes(xI2).Value = xI1 * 10000 + 20000 - - End If - Next - -1100: xIndices(xIndex) += 1 - End If - Next - - LWAV.SelectedIndices.Clear() - For xI1 As Integer = 0 To UBound(xIndices) - LWAV.SelectedIndices.Add(xIndices(xI1)) - Next - - AddUndo(xUndo, xBaseRedo.Next) - RefreshPanelAll() - POStatusRefresh() - End Sub - - Private Sub BWAVBrowse_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BWAVBrowse.Click - Dim xDWAV As New OpenFileDialog - xDWAV.DefaultExt = "wav" - xDWAV.Filter = Strings.FileType._wave & "|*.wav;*.ogg;*.mp3|" & - Strings.FileType.WAV & "|*.wav|" & - Strings.FileType.OGG & "|*.ogg|" & - Strings.FileType.MP3 & "|*.mp3|" & - Strings.FileType._all & "|*.*" - xDWAV.InitialDirectory = IIf(ExcludeFileName(FileName) = "", InitPath, ExcludeFileName(FileName)) - xDWAV.Multiselect = WAVMultiSelect - - If xDWAV.ShowDialog = Windows.Forms.DialogResult.Cancel Then Exit Sub - InitPath = ExcludeFileName(xDWAV.FileName) - - AddToPOWAV(xDWAV.FileNames) - End Sub - - Private Sub BWAVRemove_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BWAVRemove.Click - Dim xIndices(LWAV.SelectedIndices.Count - 1) As Integer - LWAV.SelectedIndices.CopyTo(xIndices, 0) - For xI1 As Integer = 0 To UBound(xIndices) - hWAV(xIndices(xI1) + 1) = "" - LWAV.Items.Item(xIndices(xI1)) = C10to36(xIndices(xI1) + 1) & ": " - Next - - LWAV.SelectedIndices.Clear() - For xI1 As Integer = 0 To UBound(xIndices) - LWAV.SelectedIndices.Add(xIndices(xI1)) - Next - - If IsSaved Then SetIsSaved(False) - RefreshPanelAll() - POStatusRefresh() - End Sub - - Private Sub mnMain_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles mnMain.MouseDown ', TBMain.MouseDown ', pttl.MouseDown, pIsSaved.MouseDown - If e.Button = Windows.Forms.MouseButtons.Left Then - ReleaseCapture() - SendMessage(Me.Handle, &H112, &HF012, 0) - If e.Clicks = 2 Then - If Me.WindowState = FormWindowState.Maximized Then Me.WindowState = FormWindowState.Normal Else Me.WindowState = FormWindowState.Maximized - End If - ElseIf e.Button = Windows.Forms.MouseButtons.Right Then - 'mnSys.Show(sender, e.Location) - End If - End Sub - - Private Sub mnSelectAll_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnSelectAll.Click - If Not (PMainIn.Focused OrElse PMainInL.Focused Or PMainInR.Focused) Then Exit Sub - For xI1 As Integer = 1 To UBound(Notes) - Notes(xI1).Selected = nEnabled(Notes(xI1).ColumnIndex) - Next - If TBTimeSelect.Checked Then - CalculateGreatestVPosition() - vSelStart = 0 - vSelLength = MeasureBottom(MeasureAtDisplacement(GreatestVPosition)) + MeasureLength(MeasureAtDisplacement(GreatestVPosition)) - End If - RefreshPanelAll() - POStatusRefresh() - End Sub - - Private Sub mnDelete_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnDelete.Click - If Not (PMainIn.Focused OrElse PMainInL.Focused Or PMainInR.Focused) Then Exit Sub - - Dim xUndo As UndoRedo.LinkedURCmd = Nothing - Dim xRedo As UndoRedo.LinkedURCmd = New UndoRedo.Void - Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo - - Me.RedoRemoveNoteSelected(True, xUndo, xRedo) - RemoveNotes(True) - - AddUndo(xUndo, xBaseRedo.Next) - CalculateGreatestVPosition() - CalculateTotalPlayableNotes() - RefreshPanelAll() - POStatusRefresh() - End Sub - - Private Sub mnUpdate_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) - Process.Start("http://www.cs.mcgill.ca/~ryang6/iBMSC/") - End Sub - - Private Sub mnUpdateC_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) - Process.Start("http://bbs.rohome.net/thread-1074065-1-1.html") - End Sub - - Private Sub mnQuit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnQuit.Click - Close() - End Sub - - - Private Sub EnableDWM() - mnMain.BackColor = Color.Black - 'TBMain.BackColor = Color.FromArgb(64, 64, 64) - - For Each xmn As ToolStripMenuItem In mnMain.Items - xmn.ForeColor = Color.White - AddHandler xmn.DropDownClosed, AddressOf mn_DropDownClosed - AddHandler xmn.DropDownOpened, AddressOf mn_DropDownOpened - AddHandler xmn.MouseEnter, AddressOf mn_MouseEnter - AddHandler xmn.MouseLeave, AddressOf mn_MouseLeave - Next - End Sub - - Private Sub DisableDWM() - mnMain.BackColor = SystemColors.Control - 'TBMain.BackColor = SystemColors.Control - - For Each xmn As ToolStripMenuItem In mnMain.Items - xmn.ForeColor = SystemColors.ControlText - RemoveHandler xmn.DropDownClosed, AddressOf mn_DropDownClosed - RemoveHandler xmn.DropDownOpened, AddressOf mn_DropDownOpened - RemoveHandler xmn.MouseEnter, AddressOf mn_MouseEnter - RemoveHandler xmn.MouseLeave, AddressOf mn_MouseLeave - Next - End Sub - - Private Sub ttlIcon_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) - 'ttlIcon.Image = My.Resources.icon2_16 - 'mnSys.Show(ttlIcon, 0, ttlIcon.Height) - End Sub - Private Sub ttlIcon_MouseEnter(ByVal sender As Object, ByVal e As System.EventArgs) - 'ttlIcon.Image = My.Resources.icon2_16_highlight - End Sub - Private Sub ttlIcon_MouseLeave(ByVal sender As Object, ByVal e As System.EventArgs) - 'ttlIcon.Image = My.Resources.icon2_16 - End Sub - - Private Sub mnSMenu_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnSMenu.CheckedChanged - mnMain.Visible = mnSMenu.Checked - End Sub - Private Sub mnSTB_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnSTB.CheckedChanged - TBMain.Visible = mnSTB.Checked - End Sub - Private Sub mnSOP_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnSOP.CheckedChanged - POptions.Visible = mnSOP.Checked - End Sub - Private Sub mnSStatus_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnSStatus.CheckedChanged - pStatus.Visible = mnSStatus.Checked - End Sub - Private Sub mnSLSplitter_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnSLSplitter.CheckedChanged - SpL.Visible = mnSLSplitter.Checked - End Sub - Private Sub mnSRSplitter_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnSRSplitter.CheckedChanged - SpR.Visible = mnSRSplitter.Checked - End Sub - Private Sub CGShow_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CGShow.CheckedChanged - gShowGrid = CGShow.Checked - RefreshPanelAll() - End Sub - Private Sub CGShowS_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CGShowS.CheckedChanged - gShowSubGrid = CGShowS.Checked - RefreshPanelAll() - End Sub - Private Sub CGShowBG_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CGShowBG.CheckedChanged - gShowBG = CGShowBG.Checked - RefreshPanelAll() - End Sub - Private Sub CGShowM_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CGShowM.CheckedChanged - gShowMeasureNumber = CGShowM.Checked - RefreshPanelAll() - End Sub - Private Sub CGShowV_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CGShowV.CheckedChanged - gShowVerticalLine = CGShowV.Checked - RefreshPanelAll() - End Sub - Private Sub CGShowMB_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CGShowMB.CheckedChanged - gShowMeasureBar = CGShowMB.Checked - RefreshPanelAll() - End Sub - Private Sub CGShowC_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CGShowC.CheckedChanged - gShowC = CGShowC.Checked - RefreshPanelAll() - End Sub - Private Sub CGBLP_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CGBLP.CheckedChanged - gDisplayBGAColumn = CGBLP.Checked - - column(niBGA).isVisible = gDisplayBGAColumn - column(niLAYER).isVisible = gDisplayBGAColumn - column(niPOOR).isVisible = gDisplayBGAColumn - column(niS4).isVisible = gDisplayBGAColumn - - If IsInitializing Then Exit Sub - For xI1 As Integer = 1 To UBound(Notes) - Notes(xI1).Selected = Notes(xI1).Selected And nEnabled(Notes(xI1).ColumnIndex) - Next - 'AddUndo(xUndo, xRedo) - UpdateColumnsX() - RefreshPanelAll() - End Sub - Private Sub CGSCROLL_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CGSCROLL.CheckedChanged - gSCROLL = CGSCROLL.Checked - - column(niSCROLL).isVisible = gSCROLL - - If IsInitializing Then Exit Sub - For xI1 As Integer = 1 To UBound(Notes) - Notes(xI1).Selected = Notes(xI1).Selected And nEnabled(Notes(xI1).ColumnIndex) - Next - 'AddUndo(xUndo, xRedo) - UpdateColumnsX() - RefreshPanelAll() - End Sub - Private Sub CGSTOP_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CGSTOP.CheckedChanged - gSTOP = CGSTOP.Checked - - column(niSTOP).isVisible = gSTOP - - If IsInitializing Then Exit Sub - For xI1 As Integer = 1 To UBound(Notes) - Notes(xI1).Selected = Notes(xI1).Selected And nEnabled(Notes(xI1).ColumnIndex) - Next - 'AddUndo(xUndo, xRedo) - UpdateColumnsX() - RefreshPanelAll() - End Sub - Private Sub CGBPM_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CGBPM.CheckedChanged - 'Dim xUndo As UndoRedo.LinkedURCmd = Nothing - 'Dim xRedo As UndoRedo.LinkedURCmd = Nothing - 'Me.RedoChangeVisibleColumns(gBLP, gSTOP, iPlayer, gBLP, CGSTOP.Checked, iPlayer, xUndo, xRedo) - gBPM = CGBPM.Checked - - column(niBPM).isVisible = gBPM - - If IsInitializing Then Exit Sub - For xI1 As Integer = 1 To UBound(Notes) - Notes(xI1).Selected = Notes(xI1).Selected And nEnabled(Notes(xI1).ColumnIndex) - Next - 'AddUndo(xUndo, xRedo) - UpdateColumnsX() - RefreshPanelAll() - End Sub - - Private Sub CGDisableVertical_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CGDisableVertical.CheckedChanged - DisableVerticalMove = CGDisableVertical.Checked - End Sub - - Private Sub CBeatPreserve_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CBeatPreserve.Click, CBeatMeasure.Click, CBeatCut.Click, CBeatScale.Click - 'If Not sender.Checked Then Exit Sub - Dim xBeatList() As RadioButton = {CBeatPreserve, CBeatMeasure, CBeatCut, CBeatScale} - BeatChangeMode = Array.IndexOf(Of RadioButton)(xBeatList, sender) - 'For xI1 As Integer = 0 To mnBeat.Items.Count - 1 - 'If xI1 <> BeatChangeMode Then CType(mnBeat.Items(xI1), ToolStripMenuItem).Checked = False - 'Next - 'sender.Checked = True - End Sub - - - Private Sub tBeatValue_LostFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles tBeatValue.LostFocus - Dim a As Double - If Double.TryParse(tBeatValue.Text, a) Then - If a <= 0.0# Or a >= 1000.0# Then tBeatValue.BackColor = Color.FromArgb(&HFFFFC0C0) Else tBeatValue.BackColor = Nothing - - tBeatValue.Text = a - End If - End Sub - - - - Private Sub ApplyBeat(ByVal xRatio As Double, ByVal xDisplay As String) - SortByVPositionInsertion() - - Dim xUndo As UndoRedo.LinkedURCmd = Nothing - Dim xRedo As UndoRedo.LinkedURCmd = New UndoRedo.Void - Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo - - Me.RedoChangeMeasureLengthSelected(192 * xRatio, xUndo, xRedo) - - Dim xIndices(LBeat.SelectedIndices.Count - 1) As Integer - LBeat.SelectedIndices.CopyTo(xIndices, 0) - - - For Each xI1 As Integer In xIndices - Dim dLength As Double = xRatio * 192.0R - MeasureLength(xI1) - Dim dRatio As Double = xRatio * 192.0R / MeasureLength(xI1) - - Dim xBottom As Double = 0 - For xI2 As Integer = 0 To xI1 - 1 - xBottom += MeasureLength(xI2) - Next - Dim xUpBefore As Double = xBottom + MeasureLength(xI1) - Dim xUpAfter As Double = xUpBefore + dLength - - Select Case BeatChangeMode - Case 1 -case2: Dim xI0 As Integer - - If NTInput Then - For xI0 = 1 To UBound(Notes) - If Notes(xI0).VPosition >= xUpBefore Then Exit For - If Notes(xI0).VPosition + Notes(xI0).Length >= xUpBefore Then - Me.RedoLongNoteModify(Notes(xI0), Notes(xI0).VPosition, Notes(xI0).Length + dLength, xUndo, xRedo) - Notes(xI0).Length += dLength - End If - Next - Else - For xI0 = 1 To UBound(Notes) - If Notes(xI0).VPosition >= xUpBefore Then Exit For - Next - End If - - For xI9 As Integer = xI0 To UBound(Notes) - Me.RedoLongNoteModify(Notes(xI9), Notes(xI9).VPosition + dLength, Notes(xI9).Length, xUndo, xRedo) - Notes(xI9).VPosition += dLength - Next - - Case 2 - If dLength < 0 Then - If NTInput Then - Dim xI0 As Integer = 1 - Dim xU As Integer = UBound(Notes) - Do While xI0 <= xU - If Notes(xI0).VPosition < xUpAfter Then - If Notes(xI0).VPosition + Notes(xI0).Length >= xUpAfter And Notes(xI0).VPosition + Notes(xI0).Length < xUpBefore Then - Dim nLen As Double = xUpAfter - Notes(xI0).VPosition - 1.0R - Me.RedoLongNoteModify(Notes(xI0), Notes(xI0).VPosition, nLen, xUndo, xRedo) - Notes(xI0).Length = nLen - End If - ElseIf Notes(xI0).VPosition < xUpBefore Then - If Notes(xI0).VPosition + Notes(xI0).Length < xUpBefore Then - Me.RedoRemoveNote(Notes(xI0), xUndo, xRedo) - RemoveNote(xI0) - xI0 -= 1 - xU -= 1 - Else - Dim nLen As Double = Notes(xI0).Length - xUpBefore + Notes(xI0).VPosition - Me.RedoLongNoteModify(Notes(xI0), xUpBefore, nLen, xUndo, xRedo) - Notes(xI0).Length = nLen - Notes(xI0).VPosition = xUpBefore - End If - End If - xI0 += 1 - Loop - Else - Dim xI0 As Integer - Dim xI9 As Integer - For xI0 = 1 To UBound(Notes) - If Notes(xI0).VPosition >= xUpAfter Then Exit For - Next - For xI9 = xI0 To UBound(Notes) - If Notes(xI9).VPosition >= xUpBefore Then Exit For - Next - - For xI8 As Integer = xI0 To xI9 - 1 - Me.RedoRemoveNote(Notes(xI8), xUndo, xRedo) - Next - For xI8 As Integer = xI9 To UBound(Notes) - Notes(xI8 - xI9 + xI0) = Notes(xI8) - Next - ReDim Preserve Notes(UBound(Notes) - xI9 + xI0) - End If - End If - - GoTo case2 - - Case 3 - If NTInput Then - For xI0 As Integer = 1 To UBound(Notes) - If Notes(xI0).VPosition < xBottom Then - If Notes(xI0).VPosition + Notes(xI0).Length > xUpBefore Then - Me.RedoLongNoteModify(Notes(xI0), Notes(xI0).VPosition, Notes(xI0).Length + dLength, xUndo, xRedo) - Notes(xI0).Length += dLength - ElseIf Notes(xI0).VPosition + Notes(xI0).Length > xBottom Then - Dim nLen As Double = (Notes(xI0).Length + Notes(xI0).VPosition - xBottom) * dRatio + xBottom - Notes(xI0).VPosition - Me.RedoLongNoteModify(Notes(xI0), Notes(xI0).VPosition, nLen, xUndo, xRedo) - Notes(xI0).Length = nLen - End If - ElseIf Notes(xI0).VPosition < xUpBefore Then - If Notes(xI0).VPosition + Notes(xI0).Length > xUpBefore Then - Dim nLen As Double = (xUpBefore - Notes(xI0).VPosition) * dRatio + Notes(xI0).VPosition + Notes(xI0).Length - xUpBefore - Dim nVPos As Double = (Notes(xI0).VPosition - xBottom) * dRatio + xBottom - Me.RedoLongNoteModify(Notes(xI0), nVPos, nLen, xUndo, xRedo) - Notes(xI0).Length = nLen - Notes(xI0).VPosition = nVPos - Else - Dim nLen As Double = Notes(xI0).Length * dRatio - Dim nVPos As Double = (Notes(xI0).VPosition - xBottom) * dRatio + xBottom - Me.RedoLongNoteModify(Notes(xI0), nVPos, nLen, xUndo, xRedo) - Notes(xI0).Length = nLen - Notes(xI0).VPosition = nVPos - End If - Else - Me.RedoLongNoteModify(Notes(xI0), Notes(xI0).VPosition + dLength, Notes(xI0).Length, xUndo, xRedo) - Notes(xI0).VPosition += dLength - End If - Next - Else - Dim xI0 As Integer - Dim xI9 As Integer - For xI0 = 1 To UBound(Notes) - If Notes(xI0).VPosition >= xBottom Then Exit For - Next - For xI9 = xI0 To UBound(Notes) - If Notes(xI9).VPosition >= xUpBefore Then Exit For - Next - - For xI8 As Integer = xI0 To xI9 - 1 - Dim nVP As Double = (Notes(xI8).VPosition - xBottom) * dRatio + xBottom - Me.RedoLongNoteModify(Notes(xI0), nVP, Notes(xI0).Length, xUndo, xRedo) - Notes(xI8).VPosition = nVP - Next - - 'GoTo case2 - - For xI8 As Integer = xI9 To UBound(Notes) - Me.RedoLongNoteModify(Notes(xI8), Notes(xI8).VPosition + dLength, Notes(xI8).Length, xUndo, xRedo) - Notes(xI8).VPosition += dLength - Next - End If - - End Select - - MeasureLength(xI1) = xRatio * 192.0R - LBeat.Items(xI1) = Add3Zeros(xI1) & ": " & xDisplay - Next - UpdateMeasureBottom() - 'xUndo &= vbCrLf & xUndo2 - 'xRedo &= vbCrLf & xRedo2 - - LBeat.SelectedIndices.Clear() - For xI1 As Integer = 0 To UBound(xIndices) - LBeat.SelectedIndices.Add(xIndices(xI1)) - Next - - AddUndo(xUndo, xBaseRedo.Next) - SortByVPositionInsertion() - UpdatePairing() - CalculateTotalPlayableNotes() - CalculateGreatestVPosition() - RefreshPanelAll() - POStatusRefresh() - End Sub - - Private Sub BBeatApply_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BBeatApply.Click - Dim xxD As Integer = nBeatD.Value - Dim xxN As Integer = nBeatN.Value - Dim xxRatio As Double = xxN / xxD - - ApplyBeat(xxRatio, xxRatio & " ( " & xxN & " / " & xxD & " ) ") - End Sub - - Private Sub BBeatApplyV_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BBeatApplyV.Click - Dim a As Double - If Double.TryParse(tBeatValue.Text, a) Then - If a <= 0.0# Or a >= 1000.0# Then System.Media.SystemSounds.Hand.Play() : Exit Sub - - Dim xxD As Long = GetDenominator(a) - - ApplyBeat(a, a & IIf(xxD > 10000, "", " ( " & CLng(a * xxD) & " / " & xxD & " ) ")) - End If - End Sub - - - Private Sub BHStageFile_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BHStageFile.Click, BHBanner.Click, BHBackBMP.Click - Dim xDiag As New OpenFileDialog - xDiag.Filter = Strings.FileType._image & "|*.bmp;*.png;*.jpg;*.gif|" & - Strings.FileType._all & "|*.*" - xDiag.InitialDirectory = IIf(ExcludeFileName(FileName) = "", InitPath, ExcludeFileName(FileName)) - xDiag.DefaultExt = "png" - - If xDiag.ShowDialog = Windows.Forms.DialogResult.Cancel Then Exit Sub - InitPath = ExcludeFileName(xDiag.FileName) - - If [Object].ReferenceEquals(sender, BHStageFile) Then - THStageFile.Text = GetFileName(xDiag.FileName) - ElseIf [Object].ReferenceEquals(sender, BHBanner) Then - THBanner.Text = GetFileName(xDiag.FileName) - ElseIf [Object].ReferenceEquals(sender, BHBackBMP) Then - THBackBMP.Text = GetFileName(xDiag.FileName) - End If - End Sub - - Private Sub Switches_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles _ - POHeaderSwitch.CheckedChanged, - POGridSwitch.CheckedChanged, - POWaveFormSwitch.CheckedChanged, - POWAVSwitch.CheckedChanged, - POBeatSwitch.CheckedChanged, - POExpansionSwitch.CheckedChanged - - Try - Dim Source As CheckBox = CType(sender, CheckBox) - Dim Target As Panel = Nothing - - If Object.ReferenceEquals(sender, Nothing) Then : Exit Sub - ElseIf Object.ReferenceEquals(sender, POHeaderSwitch) Then : Target = POHeaderInner - ElseIf Object.ReferenceEquals(sender, POGridSwitch) Then : Target = POGridInner - ElseIf Object.ReferenceEquals(sender, POWaveFormSwitch) Then : Target = POWaveFormInner - ElseIf Object.ReferenceEquals(sender, POWAVSwitch) Then : Target = POWAVInner - ElseIf Object.ReferenceEquals(sender, POBeatSwitch) Then : Target = POBeatInner - ElseIf Object.ReferenceEquals(sender, POExpansionSwitch) Then : Target = POExpansionInner - End If - - If Source.Checked Then - Target.Visible = True - Else - Target.Visible = False - End If - - Catch ex As Exception - - End Try - End Sub - - Private Sub Expanders_CheckChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles _ - POHeaderExpander.CheckedChanged, - POGridExpander.CheckedChanged, - POWaveFormExpander.CheckedChanged, - POWAVExpander.CheckedChanged, - POBeatExpander.CheckedChanged - - Try - Dim Source As CheckBox = CType(sender, CheckBox) - Dim Target As Panel = Nothing - 'Dim TargetParent As Panel = Nothing - - If Object.ReferenceEquals(sender, Nothing) Then : Exit Sub - ElseIf Object.ReferenceEquals(sender, POHeaderExpander) Then : Target = POHeaderPart2 ' : TargetParent = POHeaderInner - ElseIf Object.ReferenceEquals(sender, POGridExpander) Then : Target = POGridPart2 ' : TargetParent = POGridInner - ElseIf Object.ReferenceEquals(sender, POWaveFormExpander) Then : Target = POWaveFormPart2 ' : TargetParent = POWaveFormInner - ElseIf Object.ReferenceEquals(sender, POWAVExpander) Then : Target = POWAVPart2 ' : TargetParent = POWaveFormInner - ElseIf Object.ReferenceEquals(sender, POBeatExpander) Then : Target = POBeatPart2 ' : TargetParent = POWaveFormInner - End If - - If Source.Checked Then - Target.Visible = True - 'Source.Image = My.Resources.Collapse - Else - Target.Visible = False - 'Source.Image = My.Resources.Expand - End If - - Catch ex As Exception - - End Try - - End Sub - - Private Sub VerticalResizer_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles POWAVResizer.MouseDown, POBeatResizer.MouseDown, POExpansionResizer.MouseDown - tempResize = e.Y - End Sub - - Private Sub HorizontalResizer_MouseDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles POptionsResizer.MouseDown, SpL.MouseDown, SpR.MouseDown - tempResize = e.X - End Sub - - Private Sub POResizer_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles POWAVResizer.MouseMove, POBeatResizer.MouseMove, POExpansionResizer.MouseMove - If e.Button <> Windows.Forms.MouseButtons.Left Then Exit Sub - If e.Y = tempResize Then Exit Sub - - Try - Dim Source As Button = CType(sender, Button) - Dim Target As Panel = Source.Parent - - Dim xHeight As Integer = Target.Height + e.Y - tempResize - If xHeight < 10 Then xHeight = 10 - Target.Height = xHeight - - Target.Refresh() - Catch ex As Exception - - End Try - End Sub - - Private Sub POptionsResizer_MouseMove(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles POptionsResizer.MouseMove - If e.Button <> Windows.Forms.MouseButtons.Left Then Exit Sub - If e.X = tempResize Then Exit Sub - - Try - Dim xWidth As Integer = POptionsScroll.Width - e.X + tempResize - If xWidth < 25 Then xWidth = 25 - POptionsScroll.Width = xWidth - - Me.Refresh() - Application.DoEvents() - Catch ex As Exception - - End Try - End Sub - - Private Sub SpR_MouseMove(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles SpR.MouseMove - If e.Button <> Windows.Forms.MouseButtons.Left Then Exit Sub - If e.X = tempResize Then Exit Sub - - Try - Dim xWidth As Integer = PMainR.Width - e.X + tempResize - If xWidth < 0 Then xWidth = 0 - PMainR.Width = xWidth - - Me.ToolStripContainer1.Refresh() - Application.DoEvents() - Catch ex As Exception - - End Try - End Sub - - Private Sub SpL_MouseMove(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles SpL.MouseMove - If e.Button <> Windows.Forms.MouseButtons.Left Then Exit Sub - If e.X = tempResize Then Exit Sub - - Try - Dim xWidth As Integer = PMainL.Width + e.X - tempResize - If xWidth < 0 Then xWidth = 0 - PMainL.Width = xWidth - - Me.ToolStripContainer1.Refresh() - Application.DoEvents() - Catch ex As Exception - - End Try - End Sub - - Private Sub mnGotoMeasure_Click(sender As Object, e As EventArgs) Handles mnGotoMeasure.Click - Dim s = InputBox(Strings.Messages.PromptEnterMeasure, "Enter Measure") - - Dim i As Integer - If Int32.TryParse(s, i) Then - If i < 0 Or i > 999 Then - Exit Sub - End If - - PanelVScroll(PanelFocus) = -MeasureBottom(i) - End If - End Sub -End Class +DoNothing: + + AddUndo(xUndo, xBaseRedo.Next) + UpdatePairing() + RefreshPanelAll() + End Sub + +End Class From 36badbcf61d83a3697ffc8ca59fca2997616ea60 Mon Sep 17 00:00:00 2001 From: psyk2642 <60137590+psyk2642@users.noreply.github.com> Date: Sun, 1 Nov 2020 11:59:05 +0800 Subject: [PATCH 006/257] Update README.md --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 8d20cf5f9..12ba287b8 100644 --- a/README.md +++ b/README.md @@ -12,6 +12,7 @@ Changes in this fork * Ctrl+1 to 7 are now assigned to D1-D8. * Fixed the search function such that notes on lane A8 and D8 are now searchable. * Fixed the mirror function such that notes between A1 and D8 are reflected locally. +* Added Random and S-Random. For S-random, note overlapping can occur. Check appveyor for automated builds. From aebe9d4d62661fe2eedcfb23e5acd0317a973074 Mon Sep 17 00:00:00 2001 From: psyk2642 <60137590+psyk2642@users.noreply.github.com> Date: Sun, 1 Nov 2020 12:56:18 +0800 Subject: [PATCH 007/257] Total and #Total fixes Fixed the Statistic Label not including notes between D1-D8. Added recommended #Total using the IIDX formula. --- MainWindow.designer.vb | 4543 ++++++++++++++++++++++++++++++++++++++ MainWindow.vb | 4675 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 9218 insertions(+) create mode 100644 MainWindow.designer.vb create mode 100644 MainWindow.vb diff --git a/MainWindow.designer.vb b/MainWindow.designer.vb new file mode 100644 index 000000000..ae9f0d3df --- /dev/null +++ b/MainWindow.designer.vb @@ -0,0 +1,4543 @@ + +Partial Class MainWindow + Inherits System.Windows.Forms.Form + + 'Form 重写 Dispose,以清理组件列表。 + + Protected Overrides Sub Dispose(ByVal disposing As Boolean) + If disposing AndAlso components IsNot Nothing Then + components.Dispose() + End If + MyBase.Dispose(disposing) + End Sub + + 'Windows 窗体设计器所必需的 + Private components As System.ComponentModel.IContainer + + '注意: 以下过程是 Windows 窗体设计器所必需的 + '可以使用 Windows 窗体设计器修改它。 + '不要使用代码编辑器修改它。 + + Private Sub InitializeComponent() + Me.components = New System.ComponentModel.Container() + Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(MainWindow)) + Me.cmnLanguage = New System.Windows.Forms.ContextMenuStrip(Me.components) + Me.TBLangDef = New System.Windows.Forms.ToolStripMenuItem() + Me.TBLangRefresh = New System.Windows.Forms.ToolStripMenuItem() + Me.ToolStripSeparator9 = New System.Windows.Forms.ToolStripSeparator() + Me.TBLanguage = New System.Windows.Forms.ToolStripDropDownButton() + Me.mnLanguage = New System.Windows.Forms.ToolStripMenuItem() + Me.cmnTheme = New System.Windows.Forms.ContextMenuStrip(Me.components) + Me.TBThemeDef = New System.Windows.Forms.ToolStripMenuItem() + Me.TBThemeSave = New System.Windows.Forms.ToolStripMenuItem() + Me.TBThemeRefresh = New System.Windows.Forms.ToolStripMenuItem() + Me.TBThemeLoadComptability = New System.Windows.Forms.ToolStripMenuItem() + Me.ToolStripSeparator6 = New System.Windows.Forms.ToolStripSeparator() + Me.TBTheme = New System.Windows.Forms.ToolStripDropDownButton() + Me.mnTheme = New System.Windows.Forms.ToolStripMenuItem() + Me.POptionsScroll = New System.Windows.Forms.Panel() + Me.POptions = New System.Windows.Forms.Panel() + Me.POExpansion = New System.Windows.Forms.Panel() + Me.POExpansionInner = New System.Windows.Forms.Panel() + Me.TExpansion = New System.Windows.Forms.TextBox() + Me.POExpansionResizer = New System.Windows.Forms.Button() + Me.POExpansionSwitch = New System.Windows.Forms.CheckBox() + Me.POBeat = New System.Windows.Forms.Panel() + Me.POBeatInner = New System.Windows.Forms.TableLayoutPanel() + Me.POBeatExpander = New System.Windows.Forms.CheckBox() + Me.POBeatResizer = New System.Windows.Forms.Button() + Me.TableLayoutPanel7 = New System.Windows.Forms.TableLayoutPanel() + Me.nBeatD = New System.Windows.Forms.NumericUpDown() + Me.BBeatApplyV = New System.Windows.Forms.Button() + Me.nBeatN = New System.Windows.Forms.NumericUpDown() + Me.BBeatApply = New System.Windows.Forms.Button() + Me.Label7 = New System.Windows.Forms.Label() + Me.tBeatValue = New System.Windows.Forms.TextBox() + Me.LBeat = New System.Windows.Forms.ListBox() + Me.POBeatPart2 = New System.Windows.Forms.TableLayoutPanel() + Me.CBeatScale = New System.Windows.Forms.RadioButton() + Me.CBeatCut = New System.Windows.Forms.RadioButton() + Me.CBeatMeasure = New System.Windows.Forms.RadioButton() + Me.CBeatPreserve = New System.Windows.Forms.RadioButton() + Me.POBeatSwitch = New System.Windows.Forms.CheckBox() + Me.POWAV = New System.Windows.Forms.Panel() + Me.POWAVInner = New System.Windows.Forms.TableLayoutPanel() + Me.POWAVExpander = New System.Windows.Forms.CheckBox() + Me.LWAV = New System.Windows.Forms.ListBox() + Me.FlowLayoutPanel3 = New System.Windows.Forms.FlowLayoutPanel() + Me.BWAVUp = New System.Windows.Forms.Button() + Me.BWAVDown = New System.Windows.Forms.Button() + Me.BWAVBrowse = New System.Windows.Forms.Button() + Me.BWAVRemove = New System.Windows.Forms.Button() + Me.POWAVResizer = New System.Windows.Forms.Button() + Me.POWAVPart2 = New System.Windows.Forms.TableLayoutPanel() + Me.CWAVMultiSelect = New System.Windows.Forms.CheckBox() + Me.CWAVChangeLabel = New System.Windows.Forms.CheckBox() + Me.POWAVSwitch = New System.Windows.Forms.CheckBox() + Me.POWaveForm = New System.Windows.Forms.Panel() + Me.POWaveFormInner = New System.Windows.Forms.Panel() + Me.POWaveFormPart2 = New System.Windows.Forms.TableLayoutPanel() + Me.TWSaturation = New System.Windows.Forms.NumericUpDown() + Me.PictureBox2 = New System.Windows.Forms.PictureBox() + Me.TWTransparency = New System.Windows.Forms.NumericUpDown() + Me.PictureBox3 = New System.Windows.Forms.PictureBox() + Me.TWPrecision = New System.Windows.Forms.NumericUpDown() + Me.PictureBox4 = New System.Windows.Forms.PictureBox() + Me.TWWidth = New System.Windows.Forms.NumericUpDown() + Me.PictureBox5 = New System.Windows.Forms.PictureBox() + Me.TWLeft = New System.Windows.Forms.NumericUpDown() + Me.PictureBox6 = New System.Windows.Forms.PictureBox() + Me.TWSaturation2 = New System.Windows.Forms.TrackBar() + Me.TWLeft2 = New System.Windows.Forms.TrackBar() + Me.TWTransparency2 = New System.Windows.Forms.TrackBar() + Me.TWWidth2 = New System.Windows.Forms.TrackBar() + Me.TWPrecision2 = New System.Windows.Forms.TrackBar() + Me.POWaveFormExpander = New System.Windows.Forms.CheckBox() + Me.POWaveFormPart1 = New System.Windows.Forms.TableLayoutPanel() + Me.TableLayoutPanel1 = New System.Windows.Forms.TableLayoutPanel() + Me.FlowLayoutPanel1 = New System.Windows.Forms.FlowLayoutPanel() + Me.BWLoad = New System.Windows.Forms.Button() + Me.BWClear = New System.Windows.Forms.Button() + Me.BWLock = New System.Windows.Forms.CheckBox() + Me.TWFileName = New System.Windows.Forms.TextBox() + Me.TableLayoutPanel6 = New System.Windows.Forms.TableLayoutPanel() + Me.PictureBox1 = New System.Windows.Forms.PictureBox() + Me.TWPosition2 = New System.Windows.Forms.TrackBar() + Me.TWPosition = New System.Windows.Forms.NumericUpDown() + Me.POWaveFormSwitch = New System.Windows.Forms.CheckBox() + Me.POGrid = New System.Windows.Forms.Panel() + Me.POGridInner = New System.Windows.Forms.Panel() + Me.POGridPart2 = New System.Windows.Forms.TableLayoutPanel() + Me.TableLayoutPanel5 = New System.Windows.Forms.TableLayoutPanel() + Me.FlowLayoutPanel2 = New System.Windows.Forms.FlowLayoutPanel() + Me.cVSLockL = New System.Windows.Forms.CheckBox() + Me.cVSLock = New System.Windows.Forms.CheckBox() + Me.cVSLockR = New System.Windows.Forms.CheckBox() + Me.Label5 = New System.Windows.Forms.Label() + Me.TableLayoutPanel4 = New System.Windows.Forms.TableLayoutPanel() + Me.Label1 = New System.Windows.Forms.Label() + Me.CGB = New System.Windows.Forms.NumericUpDown() + Me.POGridExpander = New System.Windows.Forms.CheckBox() + Me.POGridPart1 = New System.Windows.Forms.TableLayoutPanel() + Me.TableLayoutPanel3 = New System.Windows.Forms.TableLayoutPanel() + Me.PictureBox9 = New System.Windows.Forms.PictureBox() + Me.CGHeight2 = New System.Windows.Forms.TrackBar() + Me.CGHeight = New System.Windows.Forms.NumericUpDown() + Me.PictureBox10 = New System.Windows.Forms.PictureBox() + Me.CGWidth2 = New System.Windows.Forms.TrackBar() + Me.CGWidth = New System.Windows.Forms.NumericUpDown() + Me.CGDisableVertical = New System.Windows.Forms.CheckBox() + Me.CGSnap = New System.Windows.Forms.CheckBox() + Me.TableLayoutPanel2 = New System.Windows.Forms.TableLayoutPanel() + Me.PictureBox7 = New System.Windows.Forms.PictureBox() + Me.CGDivide = New System.Windows.Forms.NumericUpDown() + Me.CGSub = New System.Windows.Forms.NumericUpDown() + Me.BGSlash = New System.Windows.Forms.Button() + Me.POGridSwitch = New System.Windows.Forms.CheckBox() + Me.POHeader = New System.Windows.Forms.Panel() + Me.POHeaderInner = New System.Windows.Forms.Panel() + Me.POHeaderPart2 = New System.Windows.Forms.TableLayoutPanel() + Me.CHDifficulty = New System.Windows.Forms.ComboBox() + Me.Label13 = New System.Windows.Forms.Label() + Me.THExRank = New System.Windows.Forms.TextBox() + Me.Label25 = New System.Windows.Forms.Label() + Me.CHLnObj = New System.Windows.Forms.ComboBox() + Me.Label23 = New System.Windows.Forms.Label() + Me.Label21 = New System.Windows.Forms.Label() + Me.THComment = New System.Windows.Forms.TextBox() + Me.Label24 = New System.Windows.Forms.Label() + Me.Label15 = New System.Windows.Forms.Label() + Me.THTotal = New System.Windows.Forms.TextBox() + Me.Label20 = New System.Windows.Forms.Label() + Me.BHStageFile = New System.Windows.Forms.Button() + Me.BHBanner = New System.Windows.Forms.Button() + Me.Label19 = New System.Windows.Forms.Label() + Me.BHBackBMP = New System.Windows.Forms.Button() + Me.Label17 = New System.Windows.Forms.Label() + Me.Label16 = New System.Windows.Forms.Label() + Me.Label12 = New System.Windows.Forms.Label() + Me.THBackBMP = New System.Windows.Forms.TextBox() + Me.Label11 = New System.Windows.Forms.Label() + Me.THBanner = New System.Windows.Forms.TextBox() + Me.THStageFile = New System.Windows.Forms.TextBox() + Me.THSubTitle = New System.Windows.Forms.TextBox() + Me.THSubArtist = New System.Windows.Forms.TextBox() + Me.POHeaderExpander = New System.Windows.Forms.CheckBox() + Me.POHeaderPart1 = New System.Windows.Forms.TableLayoutPanel() + Me.Label3 = New System.Windows.Forms.Label() + Me.THPlayLevel = New System.Windows.Forms.TextBox() + Me.CHRank = New System.Windows.Forms.ComboBox() + Me.Label10 = New System.Windows.Forms.Label() + Me.CHPlayer = New System.Windows.Forms.ComboBox() + Me.Label4 = New System.Windows.Forms.Label() + Me.THGenre = New System.Windows.Forms.TextBox() + Me.THBPM = New System.Windows.Forms.NumericUpDown() + Me.Label2 = New System.Windows.Forms.Label() + Me.THArtist = New System.Windows.Forms.TextBox() + Me.THTitle = New System.Windows.Forms.TextBox() + Me.Label9 = New System.Windows.Forms.Label() + Me.Label8 = New System.Windows.Forms.Label() + Me.Label6 = New System.Windows.Forms.Label() + Me.POHeaderSwitch = New System.Windows.Forms.CheckBox() + Me.Timer1 = New System.Windows.Forms.Timer(Me.components) + Me.Menu1 = New System.Windows.Forms.ContextMenuStrip(Me.components) + Me.MInsert = New System.Windows.Forms.ToolStripMenuItem() + Me.MRemove = New System.Windows.Forms.ToolStripMenuItem() + Me.AutoSaveTimer = New System.Windows.Forms.Timer(Me.components) + Me.mnMain = New System.Windows.Forms.MenuStrip() + Me.mnFile = New System.Windows.Forms.ToolStripMenuItem() + Me.mnNew = New System.Windows.Forms.ToolStripMenuItem() + Me.mnOpen = New System.Windows.Forms.ToolStripMenuItem() + Me.mnImportSM = New System.Windows.Forms.ToolStripMenuItem() + Me.mnImportIBMSC = New System.Windows.Forms.ToolStripMenuItem() + Me.ToolStripSeparator14 = New System.Windows.Forms.ToolStripSeparator() + Me.mnSave = New System.Windows.Forms.ToolStripMenuItem() + Me.mnSaveAs = New System.Windows.Forms.ToolStripMenuItem() + Me.mnExport = New System.Windows.Forms.ToolStripMenuItem() + Me.ToolStripSeparator15 = New System.Windows.Forms.ToolStripSeparator() + Me.mnOpenR0 = New System.Windows.Forms.ToolStripMenuItem() + Me.mnOpenR1 = New System.Windows.Forms.ToolStripMenuItem() + Me.mnOpenR2 = New System.Windows.Forms.ToolStripMenuItem() + Me.mnOpenR3 = New System.Windows.Forms.ToolStripMenuItem() + Me.mnOpenR4 = New System.Windows.Forms.ToolStripMenuItem() + Me.ToolStripSeparator16 = New System.Windows.Forms.ToolStripSeparator() + Me.mnQuit = New System.Windows.Forms.ToolStripMenuItem() + Me.mnEdit = New System.Windows.Forms.ToolStripMenuItem() + Me.mnUndo = New System.Windows.Forms.ToolStripMenuItem() + Me.mnRedo = New System.Windows.Forms.ToolStripMenuItem() + Me.ToolStripSeparator17 = New System.Windows.Forms.ToolStripSeparator() + Me.mnCut = New System.Windows.Forms.ToolStripMenuItem() + Me.mnCopy = New System.Windows.Forms.ToolStripMenuItem() + Me.mnPaste = New System.Windows.Forms.ToolStripMenuItem() + Me.mnDelete = New System.Windows.Forms.ToolStripMenuItem() + Me.mnSelectAll = New System.Windows.Forms.ToolStripMenuItem() + Me.mnGotoMeasure = New System.Windows.Forms.ToolStripMenuItem() + Me.ToolStripSeparator18 = New System.Windows.Forms.ToolStripSeparator() + Me.mnFind = New System.Windows.Forms.ToolStripMenuItem() + Me.mnStatistics = New System.Windows.Forms.ToolStripMenuItem() + Me.ToolStripSeparator19 = New System.Windows.Forms.ToolStripSeparator() + Me.mnTimeSelect = New System.Windows.Forms.ToolStripMenuItem() + Me.mnSelect = New System.Windows.Forms.ToolStripMenuItem() + Me.mnWrite = New System.Windows.Forms.ToolStripMenuItem() + Me.ToolStripSeparator23 = New System.Windows.Forms.ToolStripSeparator() + Me.mnMyO2 = New System.Windows.Forms.ToolStripMenuItem() + Me.mnSys = New System.Windows.Forms.ToolStripMenuItem() + Me.mnSMenu = New System.Windows.Forms.ToolStripMenuItem() + Me.mnSTB = New System.Windows.Forms.ToolStripMenuItem() + Me.mnSOP = New System.Windows.Forms.ToolStripMenuItem() + Me.mnSStatus = New System.Windows.Forms.ToolStripMenuItem() + Me.mnSLSplitter = New System.Windows.Forms.ToolStripMenuItem() + Me.mnSRSplitter = New System.Windows.Forms.ToolStripMenuItem() + Me.ToolStripSeparator21 = New System.Windows.Forms.ToolStripSeparator() + Me.CGShow = New System.Windows.Forms.ToolStripMenuItem() + Me.CGShowS = New System.Windows.Forms.ToolStripMenuItem() + Me.CGShowBG = New System.Windows.Forms.ToolStripMenuItem() + Me.CGShowM = New System.Windows.Forms.ToolStripMenuItem() + Me.CGShowMB = New System.Windows.Forms.ToolStripMenuItem() + Me.CGShowV = New System.Windows.Forms.ToolStripMenuItem() + Me.CGShowC = New System.Windows.Forms.ToolStripMenuItem() + Me.ToolStripSeparator22 = New System.Windows.Forms.ToolStripSeparator() + Me.CGBPM = New System.Windows.Forms.ToolStripMenuItem() + Me.CGSTOP = New System.Windows.Forms.ToolStripMenuItem() + Me.CGSCROLL = New System.Windows.Forms.ToolStripMenuItem() + Me.CGBLP = New System.Windows.Forms.ToolStripMenuItem() + Me.mnOptions = New System.Windows.Forms.ToolStripMenuItem() + Me.mnNTInput = New System.Windows.Forms.ToolStripMenuItem() + Me.mnErrorCheck = New System.Windows.Forms.ToolStripMenuItem() + Me.mnPreviewOnClick = New System.Windows.Forms.ToolStripMenuItem() + Me.mnShowFileName = New System.Windows.Forms.ToolStripMenuItem() + Me.ToolStripSeparator20 = New System.Windows.Forms.ToolStripSeparator() + Me.mnGOptions = New System.Windows.Forms.ToolStripMenuItem() + Me.mnVOptions = New System.Windows.Forms.ToolStripMenuItem() + Me.mnPOptions = New System.Windows.Forms.ToolStripMenuItem() + Me.mnConversion = New System.Windows.Forms.ToolStripMenuItem() + Me.cmnConversion = New System.Windows.Forms.ContextMenuStrip(Me.components) + Me.POBLong = New System.Windows.Forms.ToolStripMenuItem() + Me.POBShort = New System.Windows.Forms.ToolStripMenuItem() + Me.POBLongShort = New System.Windows.Forms.ToolStripMenuItem() + Me.ToolStripSeparator10 = New System.Windows.Forms.ToolStripSeparator() + Me.POBHidden = New System.Windows.Forms.ToolStripMenuItem() + Me.POBVisible = New System.Windows.Forms.ToolStripMenuItem() + Me.POBHiddenVisible = New System.Windows.Forms.ToolStripMenuItem() + Me.ToolStripSeparator11 = New System.Windows.Forms.ToolStripSeparator() + Me.POBModify = New System.Windows.Forms.ToolStripMenuItem() + Me.POBMirror = New System.Windows.Forms.ToolStripMenuItem() + Me.POBFlip = New System.Windows.Forms.ToolStripMenuItem() + Me.POBRandom = New System.Windows.Forms.ToolStripMenuItem() + Me.POBSRandom = New System.Windows.Forms.ToolStripMenuItem() + Me.mnPreview = New System.Windows.Forms.ToolStripMenuItem() + Me.mnPlayB = New System.Windows.Forms.ToolStripMenuItem() + Me.mnPlay = New System.Windows.Forms.ToolStripMenuItem() + Me.mnStop = New System.Windows.Forms.ToolStripMenuItem() + Me.POConvert = New System.Windows.Forms.ToolStripDropDownButton() + Me.TBMain = New System.Windows.Forms.ToolStrip() + Me.TBNew = New System.Windows.Forms.ToolStripButton() + Me.TBOpen = New System.Windows.Forms.ToolStripSplitButton() + Me.TBOpenR0 = New System.Windows.Forms.ToolStripMenuItem() + Me.TBOpenR1 = New System.Windows.Forms.ToolStripMenuItem() + Me.TBOpenR2 = New System.Windows.Forms.ToolStripMenuItem() + Me.TBOpenR3 = New System.Windows.Forms.ToolStripMenuItem() + Me.TBOpenR4 = New System.Windows.Forms.ToolStripMenuItem() + Me.ToolStripSeparator12 = New System.Windows.Forms.ToolStripSeparator() + Me.TBImportSM = New System.Windows.Forms.ToolStripMenuItem() + Me.TBImportIBMSC = New System.Windows.Forms.ToolStripMenuItem() + Me.TBSave = New System.Windows.Forms.ToolStripSplitButton() + Me.TBSaveAs = New System.Windows.Forms.ToolStripMenuItem() + Me.TBExport = New System.Windows.Forms.ToolStripMenuItem() + Me.ToolStripSeparator1 = New System.Windows.Forms.ToolStripSeparator() + Me.TBCut = New System.Windows.Forms.ToolStripButton() + Me.TBCopy = New System.Windows.Forms.ToolStripButton() + Me.TBPaste = New System.Windows.Forms.ToolStripButton() + Me.TBFind = New System.Windows.Forms.ToolStripButton() + Me.ToolStripSeparator24 = New System.Windows.Forms.ToolStripSeparator() + Me.TBStatistics = New System.Windows.Forms.ToolStripButton() + Me.TBMyO2 = New System.Windows.Forms.ToolStripButton() + Me.ToolStripSeparator4 = New System.Windows.Forms.ToolStripSeparator() + Me.TBErrorCheck = New System.Windows.Forms.ToolStripButton() + Me.TBPreviewOnClick = New System.Windows.Forms.ToolStripButton() + Me.TBShowFileName = New System.Windows.Forms.ToolStripButton() + Me.ToolStripSeparator8 = New System.Windows.Forms.ToolStripSeparator() + Me.TBNTInput = New System.Windows.Forms.ToolStripButton() + Me.TBWavIncrease = New System.Windows.Forms.ToolStripButton() + Me.ToolStripSeparator2 = New System.Windows.Forms.ToolStripSeparator() + Me.TBUndo = New System.Windows.Forms.ToolStripButton() + Me.TBRedo = New System.Windows.Forms.ToolStripButton() + Me.ToolStripSeparator5 = New System.Windows.Forms.ToolStripSeparator() + Me.TBTimeSelect = New System.Windows.Forms.ToolStripButton() + Me.TBSelect = New System.Windows.Forms.ToolStripButton() + Me.TBWrite = New System.Windows.Forms.ToolStripButton() + Me.ToolStripSeparator3 = New System.Windows.Forms.ToolStripSeparator() + Me.TBPlayB = New System.Windows.Forms.ToolStripButton() + Me.TBPlay = New System.Windows.Forms.ToolStripButton() + Me.TBStop = New System.Windows.Forms.ToolStripButton() + Me.TBPOptions = New System.Windows.Forms.ToolStripButton() + Me.ToolStripSeparator7 = New System.Windows.Forms.ToolStripSeparator() + Me.TBVOptions = New System.Windows.Forms.ToolStripButton() + Me.TBGOptions = New System.Windows.Forms.ToolStripButton() + Me.POBStorm = New System.Windows.Forms.ToolStripButton() + Me.pStatus = New System.Windows.Forms.Panel() + Me.FStatus2 = New System.Windows.Forms.StatusStrip() + Me.FSSS = New System.Windows.Forms.ToolStripButton() + Me.FSSL = New System.Windows.Forms.ToolStripButton() + Me.FSSH = New System.Windows.Forms.ToolStripButton() + Me.BVCReverse = New System.Windows.Forms.ToolStripButton() + Me.LblMultiply = New System.Windows.Forms.ToolStripStatusLabel() + Me.TVCM = New System.Windows.Forms.ToolStripTextBox() + Me.LblDivide = New System.Windows.Forms.ToolStripStatusLabel() + Me.TVCD = New System.Windows.Forms.ToolStripTextBox() + Me.BVCApply = New System.Windows.Forms.ToolStripButton() + Me.TVCBPM = New System.Windows.Forms.ToolStripTextBox() + Me.BVCCalculate = New System.Windows.Forms.ToolStripButton() + Me.BConvertStop = New System.Windows.Forms.ToolStripButton() + Me.FStatus = New System.Windows.Forms.StatusStrip() + Me.FSC = New System.Windows.Forms.ToolStripStatusLabel() + Me.FSW = New System.Windows.Forms.ToolStripStatusLabel() + Me.FSM = New System.Windows.Forms.ToolStripStatusLabel() + Me.FSP1 = New System.Windows.Forms.ToolStripStatusLabel() + Me.FSP3 = New System.Windows.Forms.ToolStripStatusLabel() + Me.FSP2 = New System.Windows.Forms.ToolStripStatusLabel() + Me.FSP4 = New System.Windows.Forms.ToolStripStatusLabel() + Me.TimeStatusLabel = New System.Windows.Forms.ToolStripStatusLabel() + Me.FST = New System.Windows.Forms.ToolStripStatusLabel() + Me.FSH = New System.Windows.Forms.ToolStripStatusLabel() + Me.FSE = New System.Windows.Forms.ToolStripStatusLabel() + Me.TimerMiddle = New System.Windows.Forms.Timer(Me.components) + Me.ToolStripContainer1 = New System.Windows.Forms.ToolStripContainer() + Me.PMain = New System.Windows.Forms.Panel() + Me.PMainIn = New System.Windows.Forms.Panel() + Me.MainPanelScroll = New System.Windows.Forms.VScrollBar() + Me.HS = New System.Windows.Forms.HScrollBar() + Me.SpR = New System.Windows.Forms.Button() + Me.SpL = New System.Windows.Forms.Button() + Me.PMainR = New System.Windows.Forms.Panel() + Me.PMainInR = New System.Windows.Forms.Panel() + Me.RightPanelScroll = New System.Windows.Forms.VScrollBar() + Me.HSR = New System.Windows.Forms.HScrollBar() + Me.PMainL = New System.Windows.Forms.Panel() + Me.PMainInL = New System.Windows.Forms.Panel() + Me.LeftPanelScroll = New System.Windows.Forms.VScrollBar() + Me.HSL = New System.Windows.Forms.HScrollBar() + Me.POptionsResizer = New System.Windows.Forms.Button() + Me.ToolTipUniversal = New System.Windows.Forms.ToolTip(Me.components) + Me.ToolStrip1 = New System.Windows.Forms.ToolStrip() + Me.TBTotalValue = New System.Windows.Forms.ToolStripLabel() + Me.cmnLanguage.SuspendLayout() + Me.cmnTheme.SuspendLayout() + Me.POptionsScroll.SuspendLayout() + Me.POptions.SuspendLayout() + Me.POExpansion.SuspendLayout() + Me.POExpansionInner.SuspendLayout() + Me.POBeat.SuspendLayout() + Me.POBeatInner.SuspendLayout() + Me.TableLayoutPanel7.SuspendLayout() + CType(Me.nBeatD, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.nBeatN, System.ComponentModel.ISupportInitialize).BeginInit() + Me.POBeatPart2.SuspendLayout() + Me.POWAV.SuspendLayout() + Me.POWAVInner.SuspendLayout() + Me.FlowLayoutPanel3.SuspendLayout() + Me.POWAVPart2.SuspendLayout() + Me.POWaveForm.SuspendLayout() + Me.POWaveFormInner.SuspendLayout() + Me.POWaveFormPart2.SuspendLayout() + CType(Me.TWSaturation, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.PictureBox2, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.TWTransparency, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.PictureBox3, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.TWPrecision, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.PictureBox4, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.TWWidth, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.PictureBox5, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.TWLeft, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.PictureBox6, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.TWSaturation2, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.TWLeft2, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.TWTransparency2, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.TWWidth2, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.TWPrecision2, System.ComponentModel.ISupportInitialize).BeginInit() + Me.POWaveFormPart1.SuspendLayout() + Me.TableLayoutPanel1.SuspendLayout() + Me.FlowLayoutPanel1.SuspendLayout() + Me.TableLayoutPanel6.SuspendLayout() + CType(Me.PictureBox1, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.TWPosition2, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.TWPosition, System.ComponentModel.ISupportInitialize).BeginInit() + Me.POGrid.SuspendLayout() + Me.POGridInner.SuspendLayout() + Me.POGridPart2.SuspendLayout() + Me.TableLayoutPanel5.SuspendLayout() + Me.FlowLayoutPanel2.SuspendLayout() + Me.TableLayoutPanel4.SuspendLayout() + CType(Me.CGB, System.ComponentModel.ISupportInitialize).BeginInit() + Me.POGridPart1.SuspendLayout() + Me.TableLayoutPanel3.SuspendLayout() + CType(Me.PictureBox9, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.CGHeight2, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.CGHeight, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.PictureBox10, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.CGWidth2, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.CGWidth, System.ComponentModel.ISupportInitialize).BeginInit() + Me.TableLayoutPanel2.SuspendLayout() + CType(Me.PictureBox7, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.CGDivide, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.CGSub, System.ComponentModel.ISupportInitialize).BeginInit() + Me.POHeader.SuspendLayout() + Me.POHeaderInner.SuspendLayout() + Me.POHeaderPart2.SuspendLayout() + Me.POHeaderPart1.SuspendLayout() + CType(Me.THBPM, System.ComponentModel.ISupportInitialize).BeginInit() + Me.Menu1.SuspendLayout() + Me.mnMain.SuspendLayout() + Me.cmnConversion.SuspendLayout() + Me.TBMain.SuspendLayout() + Me.pStatus.SuspendLayout() + Me.FStatus2.SuspendLayout() + Me.FStatus.SuspendLayout() + Me.ToolStripContainer1.ContentPanel.SuspendLayout() + Me.ToolStripContainer1.TopToolStripPanel.SuspendLayout() + Me.ToolStripContainer1.SuspendLayout() + Me.PMain.SuspendLayout() + Me.PMainR.SuspendLayout() + Me.PMainL.SuspendLayout() + Me.ToolStrip1.SuspendLayout() + Me.SuspendLayout() + ' + 'cmnLanguage + ' + Me.cmnLanguage.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.TBLangDef, Me.TBLangRefresh, Me.ToolStripSeparator9}) + Me.cmnLanguage.Name = "cmnLanguage" + Me.cmnLanguage.OwnerItem = Me.mnLanguage + Me.cmnLanguage.Size = New System.Drawing.Size(121, 54) + ' + 'TBLangDef + ' + Me.TBLangDef.Name = "TBLangDef" + Me.TBLangDef.Size = New System.Drawing.Size(120, 22) + Me.TBLangDef.Text = "(Default)" + ' + 'TBLangRefresh + ' + Me.TBLangRefresh.Image = Global.iBMSC.My.Resources.Resources.x16Refresh + Me.TBLangRefresh.Name = "TBLangRefresh" + Me.TBLangRefresh.Size = New System.Drawing.Size(120, 22) + Me.TBLangRefresh.Text = "Refresh" + ' + 'ToolStripSeparator9 + ' + Me.ToolStripSeparator9.Name = "ToolStripSeparator9" + Me.ToolStripSeparator9.Size = New System.Drawing.Size(117, 6) + ' + 'TBLanguage + ' + Me.TBLanguage.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image + Me.TBLanguage.DropDown = Me.cmnLanguage + Me.TBLanguage.Image = Global.iBMSC.My.Resources.Resources.x16Language + Me.TBLanguage.ImageTransparentColor = System.Drawing.Color.Magenta + Me.TBLanguage.Name = "TBLanguage" + Me.TBLanguage.Size = New System.Drawing.Size(29, 22) + Me.TBLanguage.Text = "Language" + ' + 'mnLanguage + ' + Me.mnLanguage.DropDown = Me.cmnLanguage + Me.mnLanguage.Image = Global.iBMSC.My.Resources.Resources.x16Language + Me.mnLanguage.Name = "mnLanguage" + Me.mnLanguage.Size = New System.Drawing.Size(228, 22) + Me.mnLanguage.Text = "&Language" + ' + 'cmnTheme + ' + Me.cmnTheme.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.TBThemeDef, Me.TBThemeSave, Me.TBThemeRefresh, Me.TBThemeLoadComptability, Me.ToolStripSeparator6}) + Me.cmnTheme.Name = "cmnLanguage" + Me.cmnTheme.OwnerItem = Me.mnTheme + Me.cmnTheme.Size = New System.Drawing.Size(246, 98) + ' + 'TBThemeDef + ' + Me.TBThemeDef.Name = "TBThemeDef" + Me.TBThemeDef.Size = New System.Drawing.Size(245, 22) + Me.TBThemeDef.Text = "(Default)" + ' + 'TBThemeSave + ' + Me.TBThemeSave.Image = Global.iBMSC.My.Resources.Resources.x16SaveAs + Me.TBThemeSave.Name = "TBThemeSave" + Me.TBThemeSave.Size = New System.Drawing.Size(245, 22) + Me.TBThemeSave.Text = "Save Theme" + ' + 'TBThemeRefresh + ' + Me.TBThemeRefresh.Image = Global.iBMSC.My.Resources.Resources.x16Refresh + Me.TBThemeRefresh.Name = "TBThemeRefresh" + Me.TBThemeRefresh.Size = New System.Drawing.Size(245, 22) + Me.TBThemeRefresh.Text = "Refresh" + ' + 'TBThemeLoadComptability + ' + Me.TBThemeLoadComptability.Name = "TBThemeLoadComptability" + Me.TBThemeLoadComptability.Size = New System.Drawing.Size(245, 22) + Me.TBThemeLoadComptability.Text = "Load Theme File from iBMSC 2.x" + ' + 'ToolStripSeparator6 + ' + Me.ToolStripSeparator6.Name = "ToolStripSeparator6" + Me.ToolStripSeparator6.Size = New System.Drawing.Size(242, 6) + ' + 'TBTheme + ' + Me.TBTheme.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image + Me.TBTheme.DropDown = Me.cmnTheme + Me.TBTheme.Image = Global.iBMSC.My.Resources.Resources.x16Theme + Me.TBTheme.ImageTransparentColor = System.Drawing.Color.Magenta + Me.TBTheme.Name = "TBTheme" + Me.TBTheme.Size = New System.Drawing.Size(29, 22) + Me.TBTheme.Text = "Theme" + ' + 'mnTheme + ' + Me.mnTheme.DropDown = Me.cmnTheme + Me.mnTheme.Image = Global.iBMSC.My.Resources.Resources.x16Theme + Me.mnTheme.Name = "mnTheme" + Me.mnTheme.Size = New System.Drawing.Size(228, 22) + Me.mnTheme.Text = "&Theme" + ' + 'POptionsScroll + ' + Me.POptionsScroll.AutoScroll = True + Me.POptionsScroll.Controls.Add(Me.POptions) + Me.POptionsScroll.Dock = System.Windows.Forms.DockStyle.Right + Me.POptionsScroll.Location = New System.Drawing.Point(958, 0) + Me.POptionsScroll.Name = "POptionsScroll" + Me.POptionsScroll.Size = New System.Drawing.Size(200, 781) + Me.POptionsScroll.TabIndex = 28 + ' + 'POptions + ' + Me.POptions.AutoSize = True + Me.POptions.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink + Me.POptions.Controls.Add(Me.POExpansion) + Me.POptions.Controls.Add(Me.POBeat) + Me.POptions.Controls.Add(Me.POWAV) + Me.POptions.Controls.Add(Me.POWaveForm) + Me.POptions.Controls.Add(Me.POGrid) + Me.POptions.Controls.Add(Me.POHeader) + Me.POptions.Dock = System.Windows.Forms.DockStyle.Top + Me.POptions.Location = New System.Drawing.Point(0, 0) + Me.POptions.Name = "POptions" + Me.POptions.Size = New System.Drawing.Size(183, 1722) + Me.POptions.TabIndex = 29 + ' + 'POExpansion + ' + Me.POExpansion.AutoSize = True + Me.POExpansion.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink + Me.POExpansion.Controls.Add(Me.POExpansionInner) + Me.POExpansion.Controls.Add(Me.POExpansionSwitch) + Me.POExpansion.Dock = System.Windows.Forms.DockStyle.Top + Me.POExpansion.Location = New System.Drawing.Point(0, 1452) + Me.POExpansion.Name = "POExpansion" + Me.POExpansion.Size = New System.Drawing.Size(183, 270) + Me.POExpansion.TabIndex = 6 + ' + 'POExpansionInner + ' + Me.POExpansionInner.Controls.Add(Me.TExpansion) + Me.POExpansionInner.Controls.Add(Me.POExpansionResizer) + Me.POExpansionInner.Dock = System.Windows.Forms.DockStyle.Top + Me.POExpansionInner.Font = New System.Drawing.Font("Consolas", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.POExpansionInner.Location = New System.Drawing.Point(0, 20) + Me.POExpansionInner.Name = "POExpansionInner" + Me.POExpansionInner.Size = New System.Drawing.Size(183, 250) + Me.POExpansionInner.TabIndex = 7 + Me.POExpansionInner.Visible = False + ' + 'TExpansion + ' + Me.TExpansion.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle + Me.TExpansion.Dock = System.Windows.Forms.DockStyle.Fill + Me.TExpansion.HideSelection = False + Me.TExpansion.Location = New System.Drawing.Point(0, 0) + Me.TExpansion.Multiline = True + Me.TExpansion.Name = "TExpansion" + Me.TExpansion.ScrollBars = System.Windows.Forms.ScrollBars.Vertical + Me.TExpansion.Size = New System.Drawing.Size(183, 245) + Me.TExpansion.TabIndex = 1002 + Me.TExpansion.WordWrap = False + ' + 'POExpansionResizer + ' + Me.POExpansionResizer.Dock = System.Windows.Forms.DockStyle.Bottom + Me.POExpansionResizer.FlatAppearance.BorderSize = 0 + Me.POExpansionResizer.FlatStyle = System.Windows.Forms.FlatStyle.Flat + Me.POExpansionResizer.Location = New System.Drawing.Point(0, 245) + Me.POExpansionResizer.Margin = New System.Windows.Forms.Padding(0) + Me.POExpansionResizer.Name = "POExpansionResizer" + Me.POExpansionResizer.Size = New System.Drawing.Size(183, 5) + Me.POExpansionResizer.TabIndex = 65 + Me.POExpansionResizer.TabStop = False + Me.POExpansionResizer.UseVisualStyleBackColor = True + ' + 'POExpansionSwitch + ' + Me.POExpansionSwitch.Appearance = System.Windows.Forms.Appearance.Button + Me.POExpansionSwitch.BackColor = System.Drawing.SystemColors.Control + Me.POExpansionSwitch.Cursor = System.Windows.Forms.Cursors.Hand + Me.POExpansionSwitch.Dock = System.Windows.Forms.DockStyle.Top + Me.POExpansionSwitch.Font = New System.Drawing.Font("Segoe UI", 9.0!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.POExpansionSwitch.Location = New System.Drawing.Point(0, 0) + Me.POExpansionSwitch.Name = "POExpansionSwitch" + Me.POExpansionSwitch.Size = New System.Drawing.Size(183, 20) + Me.POExpansionSwitch.TabIndex = 1001 + Me.POExpansionSwitch.TabStop = False + Me.POExpansionSwitch.Text = "Expansion Code" + Me.POExpansionSwitch.TextAlign = System.Drawing.ContentAlignment.MiddleCenter + Me.POExpansionSwitch.UseCompatibleTextRendering = True + Me.POExpansionSwitch.UseVisualStyleBackColor = False + ' + 'POBeat + ' + Me.POBeat.AutoSize = True + Me.POBeat.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink + Me.POBeat.Controls.Add(Me.POBeatInner) + Me.POBeat.Controls.Add(Me.POBeatSwitch) + Me.POBeat.Dock = System.Windows.Forms.DockStyle.Top + Me.POBeat.Location = New System.Drawing.Point(0, 1182) + Me.POBeat.Name = "POBeat" + Me.POBeat.Size = New System.Drawing.Size(183, 270) + Me.POBeat.TabIndex = 5 + ' + 'POBeatInner + ' + Me.POBeatInner.ColumnCount = 1 + Me.POBeatInner.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100.0!)) + Me.POBeatInner.Controls.Add(Me.POBeatExpander, 0, 1) + Me.POBeatInner.Controls.Add(Me.POBeatResizer, 0, 4) + Me.POBeatInner.Controls.Add(Me.TableLayoutPanel7, 0, 0) + Me.POBeatInner.Controls.Add(Me.LBeat, 0, 3) + Me.POBeatInner.Controls.Add(Me.POBeatPart2, 0, 2) + Me.POBeatInner.Dock = System.Windows.Forms.DockStyle.Top + Me.POBeatInner.Location = New System.Drawing.Point(0, 20) + Me.POBeatInner.Name = "POBeatInner" + Me.POBeatInner.RowCount = 5 + Me.POBeatInner.RowStyles.Add(New System.Windows.Forms.RowStyle()) + Me.POBeatInner.RowStyles.Add(New System.Windows.Forms.RowStyle()) + Me.POBeatInner.RowStyles.Add(New System.Windows.Forms.RowStyle()) + Me.POBeatInner.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100.0!)) + Me.POBeatInner.RowStyles.Add(New System.Windows.Forms.RowStyle()) + Me.POBeatInner.Size = New System.Drawing.Size(183, 250) + Me.POBeatInner.TabIndex = 6 + Me.POBeatInner.Visible = False + ' + 'POBeatExpander + ' + Me.POBeatExpander.Appearance = System.Windows.Forms.Appearance.Button + Me.POBeatExpander.AutoSize = True + Me.POBeatExpander.Cursor = System.Windows.Forms.Cursors.Hand + Me.POBeatExpander.Dock = System.Windows.Forms.DockStyle.Top + Me.POBeatExpander.FlatAppearance.BorderSize = 0 + Me.POBeatExpander.FlatStyle = System.Windows.Forms.FlatStyle.Popup + Me.POBeatExpander.Location = New System.Drawing.Point(0, 54) + Me.POBeatExpander.Margin = New System.Windows.Forms.Padding(0) + Me.POBeatExpander.Name = "POBeatExpander" + Me.POBeatExpander.Size = New System.Drawing.Size(183, 25) + Me.POBeatExpander.TabIndex = 901 + Me.POBeatExpander.TabStop = False + Me.POBeatExpander.Text = "Expand..." + Me.POBeatExpander.TextAlign = System.Drawing.ContentAlignment.MiddleCenter + Me.POBeatExpander.UseVisualStyleBackColor = False + ' + 'POBeatResizer + ' + Me.POBeatInner.SetColumnSpan(Me.POBeatResizer, 2) + Me.POBeatResizer.Dock = System.Windows.Forms.DockStyle.Top + Me.POBeatResizer.FlatAppearance.BorderSize = 0 + Me.POBeatResizer.FlatStyle = System.Windows.Forms.FlatStyle.Flat + Me.POBeatResizer.Location = New System.Drawing.Point(0, 245) + Me.POBeatResizer.Margin = New System.Windows.Forms.Padding(0) + Me.POBeatResizer.Name = "POBeatResizer" + Me.POBeatResizer.Size = New System.Drawing.Size(183, 5) + Me.POBeatResizer.TabIndex = 64 + Me.POBeatResizer.TabStop = False + Me.POBeatResizer.UseVisualStyleBackColor = True + ' + 'TableLayoutPanel7 + ' + Me.TableLayoutPanel7.AutoSize = True + Me.TableLayoutPanel7.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink + Me.TableLayoutPanel7.ColumnCount = 4 + Me.TableLayoutPanel7.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 30.0!)) + Me.TableLayoutPanel7.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle()) + Me.TableLayoutPanel7.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 30.0!)) + Me.TableLayoutPanel7.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 40.0!)) + Me.TableLayoutPanel7.Controls.Add(Me.nBeatD, 2, 0) + Me.TableLayoutPanel7.Controls.Add(Me.BBeatApplyV, 3, 1) + Me.TableLayoutPanel7.Controls.Add(Me.nBeatN, 0, 0) + Me.TableLayoutPanel7.Controls.Add(Me.BBeatApply, 3, 0) + Me.TableLayoutPanel7.Controls.Add(Me.Label7, 1, 0) + Me.TableLayoutPanel7.Controls.Add(Me.tBeatValue, 0, 1) + Me.TableLayoutPanel7.Dock = System.Windows.Forms.DockStyle.Fill + Me.TableLayoutPanel7.Location = New System.Drawing.Point(0, 0) + Me.TableLayoutPanel7.Margin = New System.Windows.Forms.Padding(0) + Me.TableLayoutPanel7.Name = "TableLayoutPanel7" + Me.TableLayoutPanel7.RowCount = 2 + Me.TableLayoutPanel7.RowStyles.Add(New System.Windows.Forms.RowStyle()) + Me.TableLayoutPanel7.RowStyles.Add(New System.Windows.Forms.RowStyle()) + Me.TableLayoutPanel7.Size = New System.Drawing.Size(183, 54) + Me.TableLayoutPanel7.TabIndex = 63 + ' + 'nBeatD + ' + Me.nBeatD.Dock = System.Windows.Forms.DockStyle.Fill + Me.nBeatD.Location = New System.Drawing.Point(66, 3) + Me.nBeatD.Maximum = New Decimal(New Integer() {10000, 0, 0, 0}) + Me.nBeatD.Minimum = New Decimal(New Integer() {1, 0, 0, 0}) + Me.nBeatD.Name = "nBeatD" + Me.nBeatD.Size = New System.Drawing.Size(45, 23) + Me.nBeatD.TabIndex = 803 + Me.nBeatD.Value = New Decimal(New Integer() {4, 0, 0, 0}) + ' + 'BBeatApplyV + ' + Me.BBeatApplyV.AutoSize = True + Me.BBeatApplyV.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink + Me.BBeatApplyV.Dock = System.Windows.Forms.DockStyle.Fill + Me.BBeatApplyV.Location = New System.Drawing.Point(114, 29) + Me.BBeatApplyV.Margin = New System.Windows.Forms.Padding(0, 0, 3, 0) + Me.BBeatApplyV.Name = "BBeatApplyV" + Me.BBeatApplyV.Size = New System.Drawing.Size(66, 25) + Me.BBeatApplyV.TabIndex = 806 + Me.BBeatApplyV.Text = "Apply" + Me.BBeatApplyV.UseVisualStyleBackColor = True + ' + 'nBeatN + ' + Me.nBeatN.Dock = System.Windows.Forms.DockStyle.Fill + Me.nBeatN.Location = New System.Drawing.Point(3, 3) + Me.nBeatN.Maximum = New Decimal(New Integer() {99999, 0, 0, 0}) + Me.nBeatN.Minimum = New Decimal(New Integer() {1, 0, 0, 0}) + Me.nBeatN.Name = "nBeatN" + Me.nBeatN.Size = New System.Drawing.Size(45, 23) + Me.nBeatN.TabIndex = 802 + Me.nBeatN.Value = New Decimal(New Integer() {4, 0, 0, 0}) + ' + 'BBeatApply + ' + Me.BBeatApply.AutoSize = True + Me.BBeatApply.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink + Me.BBeatApply.Dock = System.Windows.Forms.DockStyle.Fill + Me.BBeatApply.Location = New System.Drawing.Point(114, 2) + Me.BBeatApply.Margin = New System.Windows.Forms.Padding(0, 2, 3, 2) + Me.BBeatApply.Name = "BBeatApply" + Me.BBeatApply.Size = New System.Drawing.Size(66, 25) + Me.BBeatApply.TabIndex = 804 + Me.BBeatApply.Text = "Apply" + Me.BBeatApply.UseVisualStyleBackColor = True + ' + 'Label7 + ' + Me.Label7.Anchor = System.Windows.Forms.AnchorStyles.None + Me.Label7.AutoSize = True + Me.Label7.Location = New System.Drawing.Point(51, 7) + Me.Label7.Margin = New System.Windows.Forms.Padding(0) + Me.Label7.Name = "Label7" + Me.Label7.Size = New System.Drawing.Size(12, 15) + Me.Label7.TabIndex = 31 + Me.Label7.Text = "/" + Me.Label7.TextAlign = System.Drawing.ContentAlignment.MiddleCenter + ' + 'tBeatValue + ' + Me.TableLayoutPanel7.SetColumnSpan(Me.tBeatValue, 3) + Me.tBeatValue.Dock = System.Windows.Forms.DockStyle.Fill + Me.tBeatValue.Location = New System.Drawing.Point(3, 30) + Me.tBeatValue.Margin = New System.Windows.Forms.Padding(3, 1, 3, 0) + Me.tBeatValue.Name = "tBeatValue" + Me.tBeatValue.Size = New System.Drawing.Size(108, 23) + Me.tBeatValue.TabIndex = 805 + Me.tBeatValue.Text = "1" + ' + 'LBeat + ' + Me.LBeat.Dock = System.Windows.Forms.DockStyle.Fill + Me.LBeat.Font = New System.Drawing.Font("Consolas", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.LBeat.IntegralHeight = False + Me.LBeat.ItemHeight = 14 + Me.LBeat.Items.AddRange(New Object() {"000: 15.984375 (1023/64)"}) + Me.LBeat.Location = New System.Drawing.Point(3, 155) + Me.LBeat.Margin = New System.Windows.Forms.Padding(3, 0, 3, 0) + Me.LBeat.Name = "LBeat" + Me.LBeat.SelectionMode = System.Windows.Forms.SelectionMode.MultiExtended + Me.LBeat.Size = New System.Drawing.Size(177, 90) + Me.LBeat.TabIndex = 906 + ' + 'POBeatPart2 + ' + Me.POBeatPart2.AutoSize = True + Me.POBeatPart2.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink + Me.POBeatPart2.ColumnCount = 1 + Me.POBeatPart2.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100.0!)) + Me.POBeatPart2.Controls.Add(Me.CBeatScale, 0, 3) + Me.POBeatPart2.Controls.Add(Me.CBeatCut, 0, 2) + Me.POBeatPart2.Controls.Add(Me.CBeatMeasure, 0, 1) + Me.POBeatPart2.Controls.Add(Me.CBeatPreserve, 0, 0) + Me.POBeatPart2.Dock = System.Windows.Forms.DockStyle.Fill + Me.POBeatPart2.Location = New System.Drawing.Point(0, 79) + Me.POBeatPart2.Margin = New System.Windows.Forms.Padding(0) + Me.POBeatPart2.Name = "POBeatPart2" + Me.POBeatPart2.RowCount = 4 + Me.POBeatPart2.RowStyles.Add(New System.Windows.Forms.RowStyle()) + Me.POBeatPart2.RowStyles.Add(New System.Windows.Forms.RowStyle()) + Me.POBeatPart2.RowStyles.Add(New System.Windows.Forms.RowStyle()) + Me.POBeatPart2.RowStyles.Add(New System.Windows.Forms.RowStyle()) + Me.POBeatPart2.Size = New System.Drawing.Size(183, 76) + Me.POBeatPart2.TabIndex = 66 + Me.POBeatPart2.Visible = False + ' + 'CBeatScale + ' + Me.CBeatScale.AutoSize = True + Me.CBeatScale.Location = New System.Drawing.Point(3, 57) + Me.CBeatScale.Margin = New System.Windows.Forms.Padding(3, 0, 3, 0) + Me.CBeatScale.Name = "CBeatScale" + Me.CBeatScale.Size = New System.Drawing.Size(151, 19) + Me.CBeatScale.TabIndex = 905 + Me.CBeatScale.Text = "Scale to measure length" + Me.CBeatScale.UseVisualStyleBackColor = True + ' + 'CBeatCut + ' + Me.CBeatCut.AutoEllipsis = True + Me.CBeatCut.Dock = System.Windows.Forms.DockStyle.Fill + Me.CBeatCut.Location = New System.Drawing.Point(3, 38) + Me.CBeatCut.Margin = New System.Windows.Forms.Padding(3, 0, 3, 0) + Me.CBeatCut.Name = "CBeatCut" + Me.CBeatCut.Size = New System.Drawing.Size(177, 19) + Me.CBeatCut.TabIndex = 904 + Me.CBeatCut.Text = "Keep measure position and cut overflow" + Me.CBeatCut.UseVisualStyleBackColor = True + ' + 'CBeatMeasure + ' + Me.CBeatMeasure.AutoSize = True + Me.CBeatMeasure.Location = New System.Drawing.Point(3, 19) + Me.CBeatMeasure.Margin = New System.Windows.Forms.Padding(3, 0, 3, 0) + Me.CBeatMeasure.Name = "CBeatMeasure" + Me.CBeatMeasure.Size = New System.Drawing.Size(145, 19) + Me.CBeatMeasure.TabIndex = 903 + Me.CBeatMeasure.Text = "Keep measure position" + Me.CBeatMeasure.UseVisualStyleBackColor = True + ' + 'CBeatPreserve + ' + Me.CBeatPreserve.AutoSize = True + Me.CBeatPreserve.Checked = True + Me.CBeatPreserve.Location = New System.Drawing.Point(3, 0) + Me.CBeatPreserve.Margin = New System.Windows.Forms.Padding(3, 0, 3, 0) + Me.CBeatPreserve.Name = "CBeatPreserve" + Me.CBeatPreserve.Size = New System.Drawing.Size(145, 19) + Me.CBeatPreserve.TabIndex = 902 + Me.CBeatPreserve.TabStop = True + Me.CBeatPreserve.Text = "Keep absolute position" + Me.CBeatPreserve.UseVisualStyleBackColor = True + ' + 'POBeatSwitch + ' + Me.POBeatSwitch.Appearance = System.Windows.Forms.Appearance.Button + Me.POBeatSwitch.BackColor = System.Drawing.SystemColors.Control + Me.POBeatSwitch.Cursor = System.Windows.Forms.Cursors.Hand + Me.POBeatSwitch.Dock = System.Windows.Forms.DockStyle.Top + Me.POBeatSwitch.Font = New System.Drawing.Font("Segoe UI", 9.0!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.POBeatSwitch.Location = New System.Drawing.Point(0, 0) + Me.POBeatSwitch.Name = "POBeatSwitch" + Me.POBeatSwitch.Size = New System.Drawing.Size(183, 20) + Me.POBeatSwitch.TabIndex = 801 + Me.POBeatSwitch.TabStop = False + Me.POBeatSwitch.Text = "Beat" + Me.POBeatSwitch.TextAlign = System.Drawing.ContentAlignment.MiddleCenter + Me.POBeatSwitch.UseCompatibleTextRendering = True + Me.POBeatSwitch.UseVisualStyleBackColor = False + ' + 'POWAV + ' + Me.POWAV.AllowDrop = True + Me.POWAV.AutoSize = True + Me.POWAV.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink + Me.POWAV.Controls.Add(Me.POWAVInner) + Me.POWAV.Controls.Add(Me.POWAVSwitch) + Me.POWAV.Dock = System.Windows.Forms.DockStyle.Top + Me.POWAV.Location = New System.Drawing.Point(0, 912) + Me.POWAV.Name = "POWAV" + Me.POWAV.Size = New System.Drawing.Size(183, 270) + Me.POWAV.TabIndex = 4 + ' + 'POWAVInner + ' + Me.POWAVInner.ColumnCount = 1 + Me.POWAVInner.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100.0!)) + Me.POWAVInner.Controls.Add(Me.POWAVExpander, 0, 1) + Me.POWAVInner.Controls.Add(Me.LWAV, 0, 3) + Me.POWAVInner.Controls.Add(Me.FlowLayoutPanel3, 0, 0) + Me.POWAVInner.Controls.Add(Me.POWAVResizer, 0, 4) + Me.POWAVInner.Controls.Add(Me.POWAVPart2, 0, 2) + Me.POWAVInner.Dock = System.Windows.Forms.DockStyle.Top + Me.POWAVInner.Location = New System.Drawing.Point(0, 20) + Me.POWAVInner.Name = "POWAVInner" + Me.POWAVInner.RowCount = 5 + Me.POWAVInner.RowStyles.Add(New System.Windows.Forms.RowStyle()) + Me.POWAVInner.RowStyles.Add(New System.Windows.Forms.RowStyle()) + Me.POWAVInner.RowStyles.Add(New System.Windows.Forms.RowStyle()) + Me.POWAVInner.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100.0!)) + Me.POWAVInner.RowStyles.Add(New System.Windows.Forms.RowStyle()) + Me.POWAVInner.Size = New System.Drawing.Size(183, 250) + Me.POWAVInner.TabIndex = 5 + ' + 'POWAVExpander + ' + Me.POWAVExpander.Appearance = System.Windows.Forms.Appearance.Button + Me.POWAVExpander.AutoSize = True + Me.POWAVExpander.Cursor = System.Windows.Forms.Cursors.Hand + Me.POWAVExpander.Dock = System.Windows.Forms.DockStyle.Top + Me.POWAVExpander.FlatAppearance.BorderSize = 0 + Me.POWAVExpander.FlatStyle = System.Windows.Forms.FlatStyle.Popup + Me.POWAVExpander.Location = New System.Drawing.Point(0, 30) + Me.POWAVExpander.Margin = New System.Windows.Forms.Padding(0) + Me.POWAVExpander.Name = "POWAVExpander" + Me.POWAVExpander.Size = New System.Drawing.Size(183, 25) + Me.POWAVExpander.TabIndex = 701 + Me.POWAVExpander.TabStop = False + Me.POWAVExpander.Text = "Expand..." + Me.POWAVExpander.TextAlign = System.Drawing.ContentAlignment.MiddleCenter + Me.POWAVExpander.UseVisualStyleBackColor = False + ' + 'LWAV + ' + Me.LWAV.Dock = System.Windows.Forms.DockStyle.Fill + Me.LWAV.Font = New System.Drawing.Font("Consolas", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.LWAV.IntegralHeight = False + Me.LWAV.ItemHeight = 14 + Me.LWAV.Location = New System.Drawing.Point(3, 93) + Me.LWAV.Margin = New System.Windows.Forms.Padding(3, 0, 3, 0) + Me.LWAV.Name = "LWAV" + Me.LWAV.SelectionMode = System.Windows.Forms.SelectionMode.MultiExtended + Me.LWAV.Size = New System.Drawing.Size(177, 152) + Me.LWAV.TabIndex = 704 + ' + 'FlowLayoutPanel3 + ' + Me.FlowLayoutPanel3.AutoSize = True + Me.FlowLayoutPanel3.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink + Me.FlowLayoutPanel3.Controls.Add(Me.BWAVUp) + Me.FlowLayoutPanel3.Controls.Add(Me.BWAVDown) + Me.FlowLayoutPanel3.Controls.Add(Me.BWAVBrowse) + Me.FlowLayoutPanel3.Controls.Add(Me.BWAVRemove) + Me.FlowLayoutPanel3.Location = New System.Drawing.Point(3, 3) + Me.FlowLayoutPanel3.Name = "FlowLayoutPanel3" + Me.FlowLayoutPanel3.Size = New System.Drawing.Size(96, 24) + Me.FlowLayoutPanel3.TabIndex = 26 + Me.FlowLayoutPanel3.WrapContents = False + ' + 'BWAVUp + ' + Me.BWAVUp.Image = Global.iBMSC.My.Resources.Resources.x16Up + Me.BWAVUp.Location = New System.Drawing.Point(0, 0) + Me.BWAVUp.Margin = New System.Windows.Forms.Padding(0) + Me.BWAVUp.Name = "BWAVUp" + Me.BWAVUp.Size = New System.Drawing.Size(24, 24) + Me.BWAVUp.TabIndex = 602 + Me.ToolTipUniversal.SetToolTip(Me.BWAVUp, "Move Up") + Me.BWAVUp.UseVisualStyleBackColor = True + ' + 'BWAVDown + ' + Me.BWAVDown.Image = Global.iBMSC.My.Resources.Resources.x16Down + Me.BWAVDown.Location = New System.Drawing.Point(24, 0) + Me.BWAVDown.Margin = New System.Windows.Forms.Padding(0) + Me.BWAVDown.Name = "BWAVDown" + Me.BWAVDown.Size = New System.Drawing.Size(24, 24) + Me.BWAVDown.TabIndex = 603 + Me.ToolTipUniversal.SetToolTip(Me.BWAVDown, "Move Down") + Me.BWAVDown.UseVisualStyleBackColor = True + ' + 'BWAVBrowse + ' + Me.BWAVBrowse.Image = Global.iBMSC.My.Resources.Resources.x16PlayerBrowse + Me.BWAVBrowse.Location = New System.Drawing.Point(48, 0) + Me.BWAVBrowse.Margin = New System.Windows.Forms.Padding(0) + Me.BWAVBrowse.Name = "BWAVBrowse" + Me.BWAVBrowse.Size = New System.Drawing.Size(24, 24) + Me.BWAVBrowse.TabIndex = 604 + Me.ToolTipUniversal.SetToolTip(Me.BWAVBrowse, "Browse") + Me.BWAVBrowse.UseVisualStyleBackColor = True + ' + 'BWAVRemove + ' + Me.BWAVRemove.Image = Global.iBMSC.My.Resources.Resources.x16Remove + Me.BWAVRemove.Location = New System.Drawing.Point(72, 0) + Me.BWAVRemove.Margin = New System.Windows.Forms.Padding(0) + Me.BWAVRemove.Name = "BWAVRemove" + Me.BWAVRemove.Size = New System.Drawing.Size(24, 24) + Me.BWAVRemove.TabIndex = 605 + Me.ToolTipUniversal.SetToolTip(Me.BWAVRemove, "Remove") + Me.BWAVRemove.UseVisualStyleBackColor = True + ' + 'POWAVResizer + ' + Me.POWAVResizer.Dock = System.Windows.Forms.DockStyle.Top + Me.POWAVResizer.FlatAppearance.BorderSize = 0 + Me.POWAVResizer.FlatStyle = System.Windows.Forms.FlatStyle.Flat + Me.POWAVResizer.Location = New System.Drawing.Point(0, 245) + Me.POWAVResizer.Margin = New System.Windows.Forms.Padding(0) + Me.POWAVResizer.Name = "POWAVResizer" + Me.POWAVResizer.Size = New System.Drawing.Size(183, 5) + Me.POWAVResizer.TabIndex = 33 + Me.POWAVResizer.TabStop = False + Me.POWAVResizer.UseVisualStyleBackColor = True + ' + 'POWAVPart2 + ' + Me.POWAVPart2.AutoSize = True + Me.POWAVPart2.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink + Me.POWAVPart2.ColumnCount = 1 + Me.POWAVPart2.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100.0!)) + Me.POWAVPart2.Controls.Add(Me.CWAVMultiSelect, 0, 0) + Me.POWAVPart2.Controls.Add(Me.CWAVChangeLabel, 0, 1) + Me.POWAVPart2.Dock = System.Windows.Forms.DockStyle.Fill + Me.POWAVPart2.Location = New System.Drawing.Point(0, 55) + Me.POWAVPart2.Margin = New System.Windows.Forms.Padding(0) + Me.POWAVPart2.Name = "POWAVPart2" + Me.POWAVPart2.RowCount = 2 + Me.POWAVPart2.RowStyles.Add(New System.Windows.Forms.RowStyle()) + Me.POWAVPart2.RowStyles.Add(New System.Windows.Forms.RowStyle()) + Me.POWAVPart2.Size = New System.Drawing.Size(183, 38) + Me.POWAVPart2.TabIndex = 35 + Me.POWAVPart2.Visible = False + ' + 'CWAVMultiSelect + ' + Me.CWAVMultiSelect.AutoSize = True + Me.CWAVMultiSelect.Checked = True + Me.CWAVMultiSelect.CheckState = System.Windows.Forms.CheckState.Checked + Me.CWAVMultiSelect.Location = New System.Drawing.Point(3, 0) + Me.CWAVMultiSelect.Margin = New System.Windows.Forms.Padding(3, 0, 3, 0) + Me.CWAVMultiSelect.Name = "CWAVMultiSelect" + Me.CWAVMultiSelect.Size = New System.Drawing.Size(154, 19) + Me.CWAVMultiSelect.TabIndex = 702 + Me.CWAVMultiSelect.Text = "Allow Multiple Selection" + Me.CWAVMultiSelect.UseVisualStyleBackColor = True + ' + 'CWAVChangeLabel + ' + Me.CWAVChangeLabel.AutoSize = True + Me.CWAVChangeLabel.Checked = True + Me.CWAVChangeLabel.CheckState = System.Windows.Forms.CheckState.Checked + Me.CWAVChangeLabel.Location = New System.Drawing.Point(3, 19) + Me.CWAVChangeLabel.Margin = New System.Windows.Forms.Padding(3, 0, 3, 0) + Me.CWAVChangeLabel.Name = "CWAVChangeLabel" + Me.CWAVChangeLabel.Size = New System.Drawing.Size(155, 19) + Me.CWAVChangeLabel.TabIndex = 703 + Me.CWAVChangeLabel.Text = "Synchronize Note Labels" + Me.CWAVChangeLabel.UseVisualStyleBackColor = True + ' + 'POWAVSwitch + ' + Me.POWAVSwitch.Appearance = System.Windows.Forms.Appearance.Button + Me.POWAVSwitch.BackColor = System.Drawing.SystemColors.Control + Me.POWAVSwitch.Checked = True + Me.POWAVSwitch.CheckState = System.Windows.Forms.CheckState.Checked + Me.POWAVSwitch.Cursor = System.Windows.Forms.Cursors.Hand + Me.POWAVSwitch.Dock = System.Windows.Forms.DockStyle.Top + Me.POWAVSwitch.Font = New System.Drawing.Font("Segoe UI", 9.0!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.POWAVSwitch.Location = New System.Drawing.Point(0, 0) + Me.POWAVSwitch.Name = "POWAVSwitch" + Me.POWAVSwitch.Size = New System.Drawing.Size(183, 20) + Me.POWAVSwitch.TabIndex = 601 + Me.POWAVSwitch.TabStop = False + Me.POWAVSwitch.Text = "#WAV (Sounds List)" + Me.POWAVSwitch.TextAlign = System.Drawing.ContentAlignment.MiddleCenter + Me.POWAVSwitch.UseCompatibleTextRendering = True + Me.POWAVSwitch.UseVisualStyleBackColor = False + ' + 'POWaveForm + ' + Me.POWaveForm.AutoSize = True + Me.POWaveForm.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink + Me.POWaveForm.Controls.Add(Me.POWaveFormInner) + Me.POWaveForm.Controls.Add(Me.POWaveFormSwitch) + Me.POWaveForm.Dock = System.Windows.Forms.DockStyle.Top + Me.POWaveForm.Location = New System.Drawing.Point(0, 669) + Me.POWaveForm.Name = "POWaveForm" + Me.POWaveForm.Size = New System.Drawing.Size(183, 243) + Me.POWaveForm.TabIndex = 3 + ' + 'POWaveFormInner + ' + Me.POWaveFormInner.AutoSize = True + Me.POWaveFormInner.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink + Me.POWaveFormInner.Controls.Add(Me.POWaveFormPart2) + Me.POWaveFormInner.Controls.Add(Me.POWaveFormExpander) + Me.POWaveFormInner.Controls.Add(Me.POWaveFormPart1) + Me.POWaveFormInner.Dock = System.Windows.Forms.DockStyle.Top + Me.POWaveFormInner.Location = New System.Drawing.Point(0, 20) + Me.POWaveFormInner.Name = "POWaveFormInner" + Me.POWaveFormInner.Size = New System.Drawing.Size(183, 223) + Me.POWaveFormInner.TabIndex = 29 + Me.POWaveFormInner.Visible = False + ' + 'POWaveFormPart2 + ' + Me.POWaveFormPart2.AutoSize = True + Me.POWaveFormPart2.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink + Me.POWaveFormPart2.ColumnCount = 3 + Me.POWaveFormPart2.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle()) + Me.POWaveFormPart2.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 70.0!)) + Me.POWaveFormPart2.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 30.0!)) + Me.POWaveFormPart2.Controls.Add(Me.TWSaturation, 2, 4) + Me.POWaveFormPart2.Controls.Add(Me.PictureBox2, 0, 0) + Me.POWaveFormPart2.Controls.Add(Me.TWTransparency, 2, 3) + Me.POWaveFormPart2.Controls.Add(Me.PictureBox3, 0, 1) + Me.POWaveFormPart2.Controls.Add(Me.TWPrecision, 2, 2) + Me.POWaveFormPart2.Controls.Add(Me.PictureBox4, 0, 2) + Me.POWaveFormPart2.Controls.Add(Me.TWWidth, 2, 1) + Me.POWaveFormPart2.Controls.Add(Me.PictureBox5, 0, 3) + Me.POWaveFormPart2.Controls.Add(Me.TWLeft, 2, 0) + Me.POWaveFormPart2.Controls.Add(Me.PictureBox6, 0, 4) + Me.POWaveFormPart2.Controls.Add(Me.TWSaturation2, 1, 4) + Me.POWaveFormPart2.Controls.Add(Me.TWLeft2, 1, 0) + Me.POWaveFormPart2.Controls.Add(Me.TWTransparency2, 1, 3) + Me.POWaveFormPart2.Controls.Add(Me.TWWidth2, 1, 1) + Me.POWaveFormPart2.Controls.Add(Me.TWPrecision2, 1, 2) + Me.POWaveFormPart2.Dock = System.Windows.Forms.DockStyle.Top + Me.POWaveFormPart2.Location = New System.Drawing.Point(0, 83) + Me.POWaveFormPart2.Name = "POWaveFormPart2" + Me.POWaveFormPart2.RowCount = 5 + Me.POWaveFormPart2.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 28.0!)) + Me.POWaveFormPart2.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 28.0!)) + Me.POWaveFormPart2.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 28.0!)) + Me.POWaveFormPart2.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 28.0!)) + Me.POWaveFormPart2.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 28.0!)) + Me.POWaveFormPart2.Size = New System.Drawing.Size(183, 140) + Me.POWaveFormPart2.TabIndex = 5 + ' + 'TWSaturation + ' + Me.TWSaturation.Dock = System.Windows.Forms.DockStyle.Fill + Me.TWSaturation.Increment = New Decimal(New Integer() {50, 0, 0, 0}) + Me.TWSaturation.Location = New System.Drawing.Point(137, 112) + Me.TWSaturation.Margin = New System.Windows.Forms.Padding(0, 0, 3, 0) + Me.TWSaturation.Maximum = New Decimal(New Integer() {1000, 0, 0, 0}) + Me.TWSaturation.Name = "TWSaturation" + Me.TWSaturation.Size = New System.Drawing.Size(43, 23) + Me.TWSaturation.TabIndex = 511 + ' + 'PictureBox2 + ' + Me.PictureBox2.Image = Global.iBMSC.My.Resources.Resources.WAVLeft + Me.PictureBox2.Location = New System.Drawing.Point(3, 0) + Me.PictureBox2.Margin = New System.Windows.Forms.Padding(3, 0, 3, 0) + Me.PictureBox2.Name = "PictureBox2" + Me.PictureBox2.Size = New System.Drawing.Size(24, 24) + Me.PictureBox2.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize + Me.PictureBox2.TabIndex = 60 + Me.PictureBox2.TabStop = False + ' + 'TWTransparency + ' + Me.TWTransparency.Dock = System.Windows.Forms.DockStyle.Fill + Me.TWTransparency.Increment = New Decimal(New Integer() {10, 0, 0, 0}) + Me.TWTransparency.Location = New System.Drawing.Point(137, 84) + Me.TWTransparency.Margin = New System.Windows.Forms.Padding(0, 0, 3, 0) + Me.TWTransparency.Maximum = New Decimal(New Integer() {255, 0, 0, 0}) + Me.TWTransparency.Name = "TWTransparency" + Me.TWTransparency.Size = New System.Drawing.Size(43, 23) + Me.TWTransparency.TabIndex = 509 + Me.TWTransparency.Value = New Decimal(New Integer() {80, 0, 0, 0}) + ' + 'PictureBox3 + ' + Me.PictureBox3.Image = Global.iBMSC.My.Resources.Resources.WAVWidth + Me.PictureBox3.Location = New System.Drawing.Point(3, 28) + Me.PictureBox3.Margin = New System.Windows.Forms.Padding(3, 0, 3, 0) + Me.PictureBox3.Name = "PictureBox3" + Me.PictureBox3.Size = New System.Drawing.Size(24, 24) + Me.PictureBox3.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize + Me.PictureBox3.TabIndex = 61 + Me.PictureBox3.TabStop = False + ' + 'TWPrecision + ' + Me.TWPrecision.Dock = System.Windows.Forms.DockStyle.Fill + Me.TWPrecision.Location = New System.Drawing.Point(137, 56) + Me.TWPrecision.Margin = New System.Windows.Forms.Padding(0, 0, 3, 0) + Me.TWPrecision.Maximum = New Decimal(New Integer() {50, 0, 0, 0}) + Me.TWPrecision.Name = "TWPrecision" + Me.TWPrecision.Size = New System.Drawing.Size(43, 23) + Me.TWPrecision.TabIndex = 507 + Me.TWPrecision.Value = New Decimal(New Integer() {5, 0, 0, 0}) + ' + 'PictureBox4 + ' + Me.PictureBox4.Image = Global.iBMSC.My.Resources.Resources.WAVPrecision + Me.PictureBox4.Location = New System.Drawing.Point(3, 56) + Me.PictureBox4.Margin = New System.Windows.Forms.Padding(3, 0, 3, 0) + Me.PictureBox4.Name = "PictureBox4" + Me.PictureBox4.Size = New System.Drawing.Size(24, 24) + Me.PictureBox4.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize + Me.PictureBox4.TabIndex = 62 + Me.PictureBox4.TabStop = False + ' + 'TWWidth + ' + Me.TWWidth.Dock = System.Windows.Forms.DockStyle.Fill + Me.TWWidth.Increment = New Decimal(New Integer() {10, 0, 0, 0}) + Me.TWWidth.Location = New System.Drawing.Point(137, 28) + Me.TWWidth.Margin = New System.Windows.Forms.Padding(0, 0, 3, 0) + Me.TWWidth.Maximum = New Decimal(New Integer() {1000, 0, 0, 0}) + Me.TWWidth.Name = "TWWidth" + Me.TWWidth.Size = New System.Drawing.Size(43, 23) + Me.TWWidth.TabIndex = 505 + Me.TWWidth.Value = New Decimal(New Integer() {200, 0, 0, 0}) + ' + 'PictureBox5 + ' + Me.PictureBox5.Image = Global.iBMSC.My.Resources.Resources.WAVTransparency + Me.PictureBox5.Location = New System.Drawing.Point(3, 84) + Me.PictureBox5.Margin = New System.Windows.Forms.Padding(3, 0, 3, 0) + Me.PictureBox5.Name = "PictureBox5" + Me.PictureBox5.Size = New System.Drawing.Size(24, 24) + Me.PictureBox5.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize + Me.PictureBox5.TabIndex = 67 + Me.PictureBox5.TabStop = False + ' + 'TWLeft + ' + Me.TWLeft.Dock = System.Windows.Forms.DockStyle.Fill + Me.TWLeft.Increment = New Decimal(New Integer() {5, 0, 0, 0}) + Me.TWLeft.Location = New System.Drawing.Point(137, 0) + Me.TWLeft.Margin = New System.Windows.Forms.Padding(0, 0, 3, 0) + Me.TWLeft.Maximum = New Decimal(New Integer() {800, 0, 0, 0}) + Me.TWLeft.Name = "TWLeft" + Me.TWLeft.Size = New System.Drawing.Size(43, 23) + Me.TWLeft.TabIndex = 503 + Me.TWLeft.Value = New Decimal(New Integer() {50, 0, 0, 0}) + ' + 'PictureBox6 + ' + Me.PictureBox6.Image = Global.iBMSC.My.Resources.Resources.WAVSaturation + Me.PictureBox6.Location = New System.Drawing.Point(3, 112) + Me.PictureBox6.Margin = New System.Windows.Forms.Padding(3, 0, 3, 0) + Me.PictureBox6.Name = "PictureBox6" + Me.PictureBox6.Size = New System.Drawing.Size(24, 24) + Me.PictureBox6.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize + Me.PictureBox6.TabIndex = 66 + Me.PictureBox6.TabStop = False + ' + 'TWSaturation2 + ' + Me.TWSaturation2.Dock = System.Windows.Forms.DockStyle.Fill + Me.TWSaturation2.LargeChange = 200 + Me.TWSaturation2.Location = New System.Drawing.Point(30, 112) + Me.TWSaturation2.Margin = New System.Windows.Forms.Padding(0) + Me.TWSaturation2.Maximum = 1000 + Me.TWSaturation2.Name = "TWSaturation2" + Me.TWSaturation2.Size = New System.Drawing.Size(107, 28) + Me.TWSaturation2.SmallChange = 50 + Me.TWSaturation2.TabIndex = 510 + Me.TWSaturation2.TickFrequency = 200 + ' + 'TWLeft2 + ' + Me.TWLeft2.Dock = System.Windows.Forms.DockStyle.Fill + Me.TWLeft2.LargeChange = 50 + Me.TWLeft2.Location = New System.Drawing.Point(30, 0) + Me.TWLeft2.Margin = New System.Windows.Forms.Padding(0) + Me.TWLeft2.Maximum = 800 + Me.TWLeft2.Name = "TWLeft2" + Me.TWLeft2.Size = New System.Drawing.Size(107, 28) + Me.TWLeft2.SmallChange = 10 + Me.TWLeft2.TabIndex = 502 + Me.TWLeft2.TickFrequency = 100 + Me.TWLeft2.Value = 50 + ' + 'TWTransparency2 + ' + Me.TWTransparency2.Dock = System.Windows.Forms.DockStyle.Fill + Me.TWTransparency2.LargeChange = 64 + Me.TWTransparency2.Location = New System.Drawing.Point(30, 84) + Me.TWTransparency2.Margin = New System.Windows.Forms.Padding(0) + Me.TWTransparency2.Maximum = 255 + Me.TWTransparency2.Name = "TWTransparency2" + Me.TWTransparency2.Size = New System.Drawing.Size(107, 28) + Me.TWTransparency2.SmallChange = 8 + Me.TWTransparency2.TabIndex = 508 + Me.TWTransparency2.TickFrequency = 64 + Me.TWTransparency2.Value = 80 + ' + 'TWWidth2 + ' + Me.TWWidth2.Dock = System.Windows.Forms.DockStyle.Fill + Me.TWWidth2.LargeChange = 50 + Me.TWWidth2.Location = New System.Drawing.Point(30, 28) + Me.TWWidth2.Margin = New System.Windows.Forms.Padding(0) + Me.TWWidth2.Maximum = 1000 + Me.TWWidth2.Name = "TWWidth2" + Me.TWWidth2.Size = New System.Drawing.Size(107, 28) + Me.TWWidth2.SmallChange = 10 + Me.TWWidth2.TabIndex = 504 + Me.TWWidth2.TickFrequency = 100 + Me.TWWidth2.Value = 200 + ' + 'TWPrecision2 + ' + Me.TWPrecision2.Dock = System.Windows.Forms.DockStyle.Fill + Me.TWPrecision2.LargeChange = 4 + Me.TWPrecision2.Location = New System.Drawing.Point(30, 56) + Me.TWPrecision2.Margin = New System.Windows.Forms.Padding(0) + Me.TWPrecision2.Maximum = 50 + Me.TWPrecision2.Name = "TWPrecision2" + Me.TWPrecision2.Size = New System.Drawing.Size(107, 28) + Me.TWPrecision2.TabIndex = 506 + Me.TWPrecision2.TickFrequency = 5 + Me.TWPrecision2.Value = 5 + ' + 'POWaveFormExpander + ' + Me.POWaveFormExpander.Appearance = System.Windows.Forms.Appearance.Button + Me.POWaveFormExpander.AutoSize = True + Me.POWaveFormExpander.Cursor = System.Windows.Forms.Cursors.Hand + Me.POWaveFormExpander.Dock = System.Windows.Forms.DockStyle.Top + Me.POWaveFormExpander.FlatAppearance.BorderSize = 0 + Me.POWaveFormExpander.FlatStyle = System.Windows.Forms.FlatStyle.Popup + Me.POWaveFormExpander.Location = New System.Drawing.Point(0, 58) + Me.POWaveFormExpander.Margin = New System.Windows.Forms.Padding(0) + Me.POWaveFormExpander.Name = "POWaveFormExpander" + Me.POWaveFormExpander.Size = New System.Drawing.Size(183, 25) + Me.POWaveFormExpander.TabIndex = 501 + Me.POWaveFormExpander.TabStop = False + Me.POWaveFormExpander.Text = "Expand..." + Me.POWaveFormExpander.TextAlign = System.Drawing.ContentAlignment.MiddleCenter + Me.POWaveFormExpander.UseVisualStyleBackColor = False + ' + 'POWaveFormPart1 + ' + Me.POWaveFormPart1.AutoSize = True + Me.POWaveFormPart1.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink + Me.POWaveFormPart1.ColumnCount = 1 + Me.POWaveFormPart1.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100.0!)) + Me.POWaveFormPart1.Controls.Add(Me.TableLayoutPanel1, 0, 0) + Me.POWaveFormPart1.Controls.Add(Me.TableLayoutPanel6, 0, 1) + Me.POWaveFormPart1.Dock = System.Windows.Forms.DockStyle.Top + Me.POWaveFormPart1.Location = New System.Drawing.Point(0, 0) + Me.POWaveFormPart1.Name = "POWaveFormPart1" + Me.POWaveFormPart1.RowCount = 2 + Me.POWaveFormPart1.RowStyles.Add(New System.Windows.Forms.RowStyle()) + Me.POWaveFormPart1.RowStyles.Add(New System.Windows.Forms.RowStyle()) + Me.POWaveFormPart1.Size = New System.Drawing.Size(183, 58) + Me.POWaveFormPart1.TabIndex = 4 + ' + 'TableLayoutPanel1 + ' + Me.TableLayoutPanel1.AutoSize = True + Me.TableLayoutPanel1.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink + Me.TableLayoutPanel1.ColumnCount = 2 + Me.TableLayoutPanel1.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle()) + Me.TableLayoutPanel1.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100.0!)) + Me.TableLayoutPanel1.Controls.Add(Me.FlowLayoutPanel1, 0, 0) + Me.TableLayoutPanel1.Controls.Add(Me.TWFileName, 1, 0) + Me.TableLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Fill + Me.TableLayoutPanel1.Location = New System.Drawing.Point(0, 0) + Me.TableLayoutPanel1.Margin = New System.Windows.Forms.Padding(0) + Me.TableLayoutPanel1.Name = "TableLayoutPanel1" + Me.TableLayoutPanel1.RowCount = 1 + Me.TableLayoutPanel1.RowStyles.Add(New System.Windows.Forms.RowStyle()) + Me.TableLayoutPanel1.Size = New System.Drawing.Size(183, 30) + Me.TableLayoutPanel1.TabIndex = 0 + ' + 'FlowLayoutPanel1 + ' + Me.FlowLayoutPanel1.AutoSize = True + Me.FlowLayoutPanel1.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink + Me.FlowLayoutPanel1.Controls.Add(Me.BWLoad) + Me.FlowLayoutPanel1.Controls.Add(Me.BWClear) + Me.FlowLayoutPanel1.Controls.Add(Me.BWLock) + Me.FlowLayoutPanel1.Location = New System.Drawing.Point(3, 3) + Me.FlowLayoutPanel1.Name = "FlowLayoutPanel1" + Me.FlowLayoutPanel1.Size = New System.Drawing.Size(72, 24) + Me.FlowLayoutPanel1.TabIndex = 72 + Me.FlowLayoutPanel1.WrapContents = False + ' + 'BWLoad + ' + Me.BWLoad.Image = Global.iBMSC.My.Resources.Resources.x16Add + Me.BWLoad.Location = New System.Drawing.Point(0, 0) + Me.BWLoad.Margin = New System.Windows.Forms.Padding(0) + Me.BWLoad.Name = "BWLoad" + Me.BWLoad.Size = New System.Drawing.Size(24, 24) + Me.BWLoad.TabIndex = 402 + Me.ToolTipUniversal.SetToolTip(Me.BWLoad, "Load WaveForm") + Me.BWLoad.UseVisualStyleBackColor = True + ' + 'BWClear + ' + Me.BWClear.Image = Global.iBMSC.My.Resources.Resources.x16Remove + Me.BWClear.Location = New System.Drawing.Point(24, 0) + Me.BWClear.Margin = New System.Windows.Forms.Padding(0) + Me.BWClear.Name = "BWClear" + Me.BWClear.Size = New System.Drawing.Size(24, 24) + Me.BWClear.TabIndex = 403 + Me.ToolTipUniversal.SetToolTip(Me.BWClear, "Clear WaveForm") + Me.BWClear.UseVisualStyleBackColor = True + ' + 'BWLock + ' + Me.BWLock.Appearance = System.Windows.Forms.Appearance.Button + Me.BWLock.Checked = True + Me.BWLock.CheckState = System.Windows.Forms.CheckState.Checked + Me.BWLock.Image = Global.iBMSC.My.Resources.Resources.x16Lock + Me.BWLock.Location = New System.Drawing.Point(48, 0) + Me.BWLock.Margin = New System.Windows.Forms.Padding(0) + Me.BWLock.Name = "BWLock" + Me.BWLock.Size = New System.Drawing.Size(24, 24) + Me.BWLock.TabIndex = 404 + Me.ToolTipUniversal.SetToolTip(Me.BWLock, "Lock to BGM") + Me.BWLock.UseVisualStyleBackColor = True + ' + 'TWFileName + ' + Me.TWFileName.Dock = System.Windows.Forms.DockStyle.Fill + Me.TWFileName.Location = New System.Drawing.Point(81, 3) + Me.TWFileName.Name = "TWFileName" + Me.TWFileName.ReadOnly = True + Me.TWFileName.Size = New System.Drawing.Size(99, 23) + Me.TWFileName.TabIndex = 405 + Me.TWFileName.Text = "(None)" + ' + 'TableLayoutPanel6 + ' + Me.TableLayoutPanel6.AutoSize = True + Me.TableLayoutPanel6.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink + Me.TableLayoutPanel6.ColumnCount = 3 + Me.TableLayoutPanel6.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle()) + Me.TableLayoutPanel6.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 60.0!)) + Me.TableLayoutPanel6.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 40.0!)) + Me.TableLayoutPanel6.Controls.Add(Me.PictureBox1, 0, 0) + Me.TableLayoutPanel6.Controls.Add(Me.TWPosition2, 1, 0) + Me.TableLayoutPanel6.Controls.Add(Me.TWPosition, 2, 0) + Me.TableLayoutPanel6.Dock = System.Windows.Forms.DockStyle.Fill + Me.TableLayoutPanel6.Location = New System.Drawing.Point(0, 30) + Me.TableLayoutPanel6.Margin = New System.Windows.Forms.Padding(0) + Me.TableLayoutPanel6.Name = "TableLayoutPanel6" + Me.TableLayoutPanel6.RowCount = 1 + Me.TableLayoutPanel6.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 28.0!)) + Me.TableLayoutPanel6.Size = New System.Drawing.Size(183, 28) + Me.TableLayoutPanel6.TabIndex = 1 + ' + 'PictureBox1 + ' + Me.PictureBox1.Image = Global.iBMSC.My.Resources.Resources.WAVOffset + Me.PictureBox1.Location = New System.Drawing.Point(3, 0) + Me.PictureBox1.Margin = New System.Windows.Forms.Padding(3, 0, 3, 0) + Me.PictureBox1.Name = "PictureBox1" + Me.PictureBox1.Size = New System.Drawing.Size(24, 24) + Me.PictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize + Me.PictureBox1.TabIndex = 59 + Me.PictureBox1.TabStop = False + ' + 'TWPosition2 + ' + Me.TWPosition2.Dock = System.Windows.Forms.DockStyle.Fill + Me.TWPosition2.Enabled = False + Me.TWPosition2.LargeChange = 24 + Me.TWPosition2.Location = New System.Drawing.Point(30, 0) + Me.TWPosition2.Margin = New System.Windows.Forms.Padding(0) + Me.TWPosition2.Maximum = 960 + Me.TWPosition2.Name = "TWPosition2" + Me.TWPosition2.Size = New System.Drawing.Size(91, 28) + Me.TWPosition2.TabIndex = 406 + Me.TWPosition2.TickFrequency = 192 + ' + 'TWPosition + ' + Me.TWPosition.DecimalPlaces = 2 + Me.TWPosition.Dock = System.Windows.Forms.DockStyle.Fill + Me.TWPosition.Enabled = False + Me.TWPosition.Location = New System.Drawing.Point(121, 0) + Me.TWPosition.Margin = New System.Windows.Forms.Padding(0, 0, 3, 0) + Me.TWPosition.Maximum = New Decimal(New Integer() {192000, 0, 0, 0}) + Me.TWPosition.Name = "TWPosition" + Me.TWPosition.Size = New System.Drawing.Size(59, 23) + Me.TWPosition.TabIndex = 407 + ' + 'POWaveFormSwitch + ' + Me.POWaveFormSwitch.Appearance = System.Windows.Forms.Appearance.Button + Me.POWaveFormSwitch.BackColor = System.Drawing.SystemColors.Control + Me.POWaveFormSwitch.Cursor = System.Windows.Forms.Cursors.Hand + Me.POWaveFormSwitch.Dock = System.Windows.Forms.DockStyle.Top + Me.POWaveFormSwitch.Font = New System.Drawing.Font("Segoe UI", 9.0!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.POWaveFormSwitch.Location = New System.Drawing.Point(0, 0) + Me.POWaveFormSwitch.Name = "POWaveFormSwitch" + Me.POWaveFormSwitch.Size = New System.Drawing.Size(183, 20) + Me.POWaveFormSwitch.TabIndex = 401 + Me.POWaveFormSwitch.TabStop = False + Me.POWaveFormSwitch.Text = "WaveForm" + Me.POWaveFormSwitch.TextAlign = System.Drawing.ContentAlignment.MiddleCenter + Me.POWaveFormSwitch.UseCompatibleTextRendering = True + Me.POWaveFormSwitch.UseVisualStyleBackColor = False + ' + 'POGrid + ' + Me.POGrid.AutoSize = True + Me.POGrid.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink + Me.POGrid.Controls.Add(Me.POGridInner) + Me.POGrid.Controls.Add(Me.POGridSwitch) + Me.POGrid.Dock = System.Windows.Forms.DockStyle.Top + Me.POGrid.Location = New System.Drawing.Point(0, 439) + Me.POGrid.Name = "POGrid" + Me.POGrid.Size = New System.Drawing.Size(183, 230) + Me.POGrid.TabIndex = 2 + ' + 'POGridInner + ' + Me.POGridInner.AutoSize = True + Me.POGridInner.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink + Me.POGridInner.Controls.Add(Me.POGridPart2) + Me.POGridInner.Controls.Add(Me.POGridExpander) + Me.POGridInner.Controls.Add(Me.POGridPart1) + Me.POGridInner.Dock = System.Windows.Forms.DockStyle.Top + Me.POGridInner.Location = New System.Drawing.Point(0, 20) + Me.POGridInner.Name = "POGridInner" + Me.POGridInner.Size = New System.Drawing.Size(183, 210) + Me.POGridInner.TabIndex = 3 + ' + 'POGridPart2 + ' + Me.POGridPart2.AutoSize = True + Me.POGridPart2.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink + Me.POGridPart2.ColumnCount = 1 + Me.POGridPart2.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100.0!)) + Me.POGridPart2.Controls.Add(Me.TableLayoutPanel5, 0, 1) + Me.POGridPart2.Controls.Add(Me.TableLayoutPanel4, 0, 0) + Me.POGridPart2.Dock = System.Windows.Forms.DockStyle.Top + Me.POGridPart2.Location = New System.Drawing.Point(0, 152) + Me.POGridPart2.Name = "POGridPart2" + Me.POGridPart2.RowCount = 2 + Me.POGridPart2.RowStyles.Add(New System.Windows.Forms.RowStyle()) + Me.POGridPart2.RowStyles.Add(New System.Windows.Forms.RowStyle()) + Me.POGridPart2.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20.0!)) + Me.POGridPart2.Size = New System.Drawing.Size(183, 58) + Me.POGridPart2.TabIndex = 0 + ' + 'TableLayoutPanel5 + ' + Me.TableLayoutPanel5.AutoSize = True + Me.TableLayoutPanel5.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink + Me.TableLayoutPanel5.ColumnCount = 2 + Me.TableLayoutPanel5.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle()) + Me.TableLayoutPanel5.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100.0!)) + Me.TableLayoutPanel5.Controls.Add(Me.FlowLayoutPanel2, 1, 0) + Me.TableLayoutPanel5.Controls.Add(Me.Label5, 0, 0) + Me.TableLayoutPanel5.Dock = System.Windows.Forms.DockStyle.Fill + Me.TableLayoutPanel5.Location = New System.Drawing.Point(0, 29) + Me.TableLayoutPanel5.Margin = New System.Windows.Forms.Padding(0) + Me.TableLayoutPanel5.Name = "TableLayoutPanel5" + Me.TableLayoutPanel5.RowCount = 1 + Me.TableLayoutPanel5.RowStyles.Add(New System.Windows.Forms.RowStyle()) + Me.TableLayoutPanel5.Size = New System.Drawing.Size(183, 29) + Me.TableLayoutPanel5.TabIndex = 46 + ' + 'FlowLayoutPanel2 + ' + Me.FlowLayoutPanel2.AutoSize = True + Me.FlowLayoutPanel2.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink + Me.FlowLayoutPanel2.Controls.Add(Me.cVSLockL) + Me.FlowLayoutPanel2.Controls.Add(Me.cVSLock) + Me.FlowLayoutPanel2.Controls.Add(Me.cVSLockR) + Me.FlowLayoutPanel2.Location = New System.Drawing.Point(114, 3) + Me.FlowLayoutPanel2.Name = "FlowLayoutPanel2" + Me.FlowLayoutPanel2.Size = New System.Drawing.Size(66, 23) + Me.FlowLayoutPanel2.TabIndex = 72 + Me.FlowLayoutPanel2.WrapContents = False + ' + 'cVSLockL + ' + Me.cVSLockL.Appearance = System.Windows.Forms.Appearance.Button + Me.cVSLockL.FlatStyle = System.Windows.Forms.FlatStyle.Popup + Me.cVSLockL.Image = Global.iBMSC.My.Resources.Resources.x16Lock + Me.cVSLockL.Location = New System.Drawing.Point(0, 0) + Me.cVSLockL.Margin = New System.Windows.Forms.Padding(0) + Me.cVSLockL.Name = "cVSLockL" + Me.cVSLockL.Size = New System.Drawing.Size(23, 23) + Me.cVSLockL.TabIndex = 303 + Me.cVSLockL.Tag = "0" + Me.ToolTipUniversal.SetToolTip(Me.cVSLockL, "Lock Left Editing Panel") + ' + 'cVSLock + ' + Me.cVSLock.Appearance = System.Windows.Forms.Appearance.Button + Me.cVSLock.FlatStyle = System.Windows.Forms.FlatStyle.Popup + Me.cVSLock.Image = Global.iBMSC.My.Resources.Resources.x16Lock + Me.cVSLock.Location = New System.Drawing.Point(23, 0) + Me.cVSLock.Margin = New System.Windows.Forms.Padding(0) + Me.cVSLock.Name = "cVSLock" + Me.cVSLock.Size = New System.Drawing.Size(23, 23) + Me.cVSLock.TabIndex = 304 + Me.cVSLock.Tag = "1" + Me.ToolTipUniversal.SetToolTip(Me.cVSLock, "Lock Middle Editing Panel") + ' + 'cVSLockR + ' + Me.cVSLockR.Appearance = System.Windows.Forms.Appearance.Button + Me.cVSLockR.FlatStyle = System.Windows.Forms.FlatStyle.Popup + Me.cVSLockR.Image = Global.iBMSC.My.Resources.Resources.x16Lock + Me.cVSLockR.Location = New System.Drawing.Point(46, 0) + Me.cVSLockR.Margin = New System.Windows.Forms.Padding(0) + Me.cVSLockR.Name = "cVSLockR" + Me.cVSLockR.Size = New System.Drawing.Size(23, 23) + Me.cVSLockR.TabIndex = 305 + Me.cVSLockR.Tag = "2" + Me.ToolTipUniversal.SetToolTip(Me.cVSLockR, "Lock Right Editing Panel") + ' + 'Label5 + ' + Me.Label5.AutoSize = True + Me.Label5.Dock = System.Windows.Forms.DockStyle.Fill + Me.Label5.Location = New System.Drawing.Point(3, 0) + Me.Label5.Name = "Label5" + Me.Label5.Size = New System.Drawing.Size(105, 29) + Me.Label5.TabIndex = 303 + Me.Label5.Text = "Vertical Scroll Lock" + Me.Label5.TextAlign = System.Drawing.ContentAlignment.MiddleRight + ' + 'TableLayoutPanel4 + ' + Me.TableLayoutPanel4.AutoSize = True + Me.TableLayoutPanel4.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink + Me.TableLayoutPanel4.ColumnCount = 2 + Me.TableLayoutPanel4.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle()) + Me.TableLayoutPanel4.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100.0!)) + Me.TableLayoutPanel4.Controls.Add(Me.Label1, 0, 0) + Me.TableLayoutPanel4.Controls.Add(Me.CGB, 1, 0) + Me.TableLayoutPanel4.Dock = System.Windows.Forms.DockStyle.Fill + Me.TableLayoutPanel4.Location = New System.Drawing.Point(0, 0) + Me.TableLayoutPanel4.Margin = New System.Windows.Forms.Padding(0) + Me.TableLayoutPanel4.Name = "TableLayoutPanel4" + Me.TableLayoutPanel4.RowCount = 1 + Me.TableLayoutPanel4.RowStyles.Add(New System.Windows.Forms.RowStyle()) + Me.TableLayoutPanel4.Size = New System.Drawing.Size(183, 29) + Me.TableLayoutPanel4.TabIndex = 44 + ' + 'Label1 + ' + Me.Label1.AutoSize = True + Me.Label1.Dock = System.Windows.Forms.DockStyle.Fill + Me.Label1.Location = New System.Drawing.Point(3, 0) + Me.Label1.Name = "Label1" + Me.Label1.Size = New System.Drawing.Size(126, 29) + Me.Label1.TabIndex = 302 + Me.Label1.Text = "Number of B Columns" + Me.Label1.TextAlign = System.Drawing.ContentAlignment.MiddleRight + ' + 'CGB + ' + Me.CGB.Dock = System.Windows.Forms.DockStyle.Fill + Me.CGB.Location = New System.Drawing.Point(135, 3) + Me.CGB.Maximum = New Decimal(New Integer() {999, 0, 0, 0}) + Me.CGB.Minimum = New Decimal(New Integer() {1, 0, 0, 0}) + Me.CGB.Name = "CGB" + Me.CGB.Size = New System.Drawing.Size(45, 23) + Me.CGB.TabIndex = 302 + Me.CGB.Value = New Decimal(New Integer() {15, 0, 0, 0}) + ' + 'POGridExpander + ' + Me.POGridExpander.Appearance = System.Windows.Forms.Appearance.Button + Me.POGridExpander.AutoSize = True + Me.POGridExpander.Cursor = System.Windows.Forms.Cursors.Hand + Me.POGridExpander.Dock = System.Windows.Forms.DockStyle.Top + Me.POGridExpander.FlatAppearance.BorderSize = 0 + Me.POGridExpander.FlatStyle = System.Windows.Forms.FlatStyle.Popup + Me.POGridExpander.Location = New System.Drawing.Point(0, 127) + Me.POGridExpander.Margin = New System.Windows.Forms.Padding(0) + Me.POGridExpander.Name = "POGridExpander" + Me.POGridExpander.Size = New System.Drawing.Size(183, 25) + Me.POGridExpander.TabIndex = 301 + Me.POGridExpander.TabStop = False + Me.POGridExpander.Text = "Expand..." + Me.POGridExpander.TextAlign = System.Drawing.ContentAlignment.MiddleCenter + Me.POGridExpander.UseVisualStyleBackColor = False + ' + 'POGridPart1 + ' + Me.POGridPart1.AutoSize = True + Me.POGridPart1.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink + Me.POGridPart1.ColumnCount = 1 + Me.POGridPart1.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100.0!)) + Me.POGridPart1.Controls.Add(Me.TableLayoutPanel3, 0, 1) + Me.POGridPart1.Controls.Add(Me.CGDisableVertical, 0, 3) + Me.POGridPart1.Controls.Add(Me.CGSnap, 0, 2) + Me.POGridPart1.Controls.Add(Me.TableLayoutPanel2, 0, 0) + Me.POGridPart1.Dock = System.Windows.Forms.DockStyle.Top + Me.POGridPart1.Location = New System.Drawing.Point(0, 0) + Me.POGridPart1.Name = "POGridPart1" + Me.POGridPart1.RowCount = 4 + Me.POGridPart1.RowStyles.Add(New System.Windows.Forms.RowStyle()) + Me.POGridPart1.RowStyles.Add(New System.Windows.Forms.RowStyle()) + Me.POGridPart1.RowStyles.Add(New System.Windows.Forms.RowStyle()) + Me.POGridPart1.RowStyles.Add(New System.Windows.Forms.RowStyle()) + Me.POGridPart1.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20.0!)) + Me.POGridPart1.Size = New System.Drawing.Size(183, 127) + Me.POGridPart1.TabIndex = 11 + ' + 'TableLayoutPanel3 + ' + Me.TableLayoutPanel3.AutoSize = True + Me.TableLayoutPanel3.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink + Me.TableLayoutPanel3.ColumnCount = 3 + Me.TableLayoutPanel3.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle()) + Me.TableLayoutPanel3.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 70.0!)) + Me.TableLayoutPanel3.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 30.0!)) + Me.TableLayoutPanel3.Controls.Add(Me.PictureBox9, 0, 0) + Me.TableLayoutPanel3.Controls.Add(Me.CGHeight2, 1, 0) + Me.TableLayoutPanel3.Controls.Add(Me.CGHeight, 2, 0) + Me.TableLayoutPanel3.Controls.Add(Me.PictureBox10, 0, 1) + Me.TableLayoutPanel3.Controls.Add(Me.CGWidth2, 1, 1) + Me.TableLayoutPanel3.Controls.Add(Me.CGWidth, 2, 1) + Me.TableLayoutPanel3.Dock = System.Windows.Forms.DockStyle.Fill + Me.TableLayoutPanel3.Location = New System.Drawing.Point(0, 30) + Me.TableLayoutPanel3.Margin = New System.Windows.Forms.Padding(0) + Me.TableLayoutPanel3.Name = "TableLayoutPanel3" + Me.TableLayoutPanel3.RowCount = 2 + Me.TableLayoutPanel3.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 28.0!)) + Me.TableLayoutPanel3.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 28.0!)) + Me.TableLayoutPanel3.Size = New System.Drawing.Size(183, 56) + Me.TableLayoutPanel3.TabIndex = 12 + ' + 'PictureBox9 + ' + Me.PictureBox9.Image = Global.iBMSC.My.Resources.Resources.lgheight + Me.PictureBox9.Location = New System.Drawing.Point(3, 0) + Me.PictureBox9.Margin = New System.Windows.Forms.Padding(3, 0, 3, 0) + Me.PictureBox9.Name = "PictureBox9" + Me.PictureBox9.Size = New System.Drawing.Size(24, 24) + Me.PictureBox9.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize + Me.PictureBox9.TabIndex = 27 + Me.PictureBox9.TabStop = False + ' + 'CGHeight2 + ' + Me.CGHeight2.Dock = System.Windows.Forms.DockStyle.Fill + Me.CGHeight2.LargeChange = 4 + Me.CGHeight2.Location = New System.Drawing.Point(30, 0) + Me.CGHeight2.Margin = New System.Windows.Forms.Padding(0) + Me.CGHeight2.Maximum = 20 + Me.CGHeight2.Minimum = 1 + Me.CGHeight2.Name = "CGHeight2" + Me.CGHeight2.Size = New System.Drawing.Size(107, 28) + Me.CGHeight2.TabIndex = 205 + Me.CGHeight2.TickFrequency = 2 + Me.CGHeight2.Value = 4 + ' + 'CGHeight + ' + Me.CGHeight.DecimalPlaces = 2 + Me.CGHeight.Dock = System.Windows.Forms.DockStyle.Fill + Me.CGHeight.Increment = New Decimal(New Integer() {25, 0, 0, 131072}) + Me.CGHeight.Location = New System.Drawing.Point(137, 0) + Me.CGHeight.Margin = New System.Windows.Forms.Padding(0, 0, 3, 0) + Me.CGHeight.Maximum = New Decimal(New Integer() {99, 0, 0, 0}) + Me.CGHeight.Minimum = New Decimal(New Integer() {25, 0, 0, 131072}) + Me.CGHeight.Name = "CGHeight" + Me.CGHeight.Size = New System.Drawing.Size(43, 23) + Me.CGHeight.TabIndex = 206 + Me.CGHeight.Value = New Decimal(New Integer() {1, 0, 0, 0}) + ' + 'PictureBox10 + ' + Me.PictureBox10.Image = Global.iBMSC.My.Resources.Resources.lgwidth + Me.PictureBox10.Location = New System.Drawing.Point(3, 28) + Me.PictureBox10.Margin = New System.Windows.Forms.Padding(3, 0, 3, 0) + Me.PictureBox10.Name = "PictureBox10" + Me.PictureBox10.Size = New System.Drawing.Size(24, 24) + Me.PictureBox10.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize + Me.PictureBox10.TabIndex = 28 + Me.PictureBox10.TabStop = False + ' + 'CGWidth2 + ' + Me.CGWidth2.Dock = System.Windows.Forms.DockStyle.Fill + Me.CGWidth2.LargeChange = 4 + Me.CGWidth2.Location = New System.Drawing.Point(30, 28) + Me.CGWidth2.Margin = New System.Windows.Forms.Padding(0) + Me.CGWidth2.Maximum = 20 + Me.CGWidth2.Minimum = 1 + Me.CGWidth2.Name = "CGWidth2" + Me.CGWidth2.Size = New System.Drawing.Size(107, 28) + Me.CGWidth2.TabIndex = 207 + Me.CGWidth2.TickFrequency = 2 + Me.CGWidth2.Value = 4 + ' + 'CGWidth + ' + Me.CGWidth.DecimalPlaces = 2 + Me.CGWidth.Dock = System.Windows.Forms.DockStyle.Fill + Me.CGWidth.Increment = New Decimal(New Integer() {25, 0, 0, 131072}) + Me.CGWidth.Location = New System.Drawing.Point(137, 28) + Me.CGWidth.Margin = New System.Windows.Forms.Padding(0, 0, 3, 0) + Me.CGWidth.Maximum = New Decimal(New Integer() {99, 0, 0, 0}) + Me.CGWidth.Minimum = New Decimal(New Integer() {25, 0, 0, 131072}) + Me.CGWidth.Name = "CGWidth" + Me.CGWidth.Size = New System.Drawing.Size(43, 23) + Me.CGWidth.TabIndex = 208 + Me.CGWidth.Value = New Decimal(New Integer() {1, 0, 0, 0}) + ' + 'CGDisableVertical + ' + Me.CGDisableVertical.AutoSize = True + Me.CGDisableVertical.Location = New System.Drawing.Point(3, 108) + Me.CGDisableVertical.Margin = New System.Windows.Forms.Padding(3, 0, 3, 0) + Me.CGDisableVertical.Name = "CGDisableVertical" + Me.CGDisableVertical.Size = New System.Drawing.Size(162, 19) + Me.CGDisableVertical.TabIndex = 210 + Me.CGDisableVertical.Text = "Disable vertical moves (D)" + Me.CGDisableVertical.UseVisualStyleBackColor = True + ' + 'CGSnap + ' + Me.CGSnap.AutoSize = True + Me.CGSnap.Checked = True + Me.CGSnap.CheckState = System.Windows.Forms.CheckState.Checked + Me.CGSnap.Location = New System.Drawing.Point(3, 89) + Me.CGSnap.Margin = New System.Windows.Forms.Padding(3, 3, 3, 0) + Me.CGSnap.Name = "CGSnap" + Me.CGSnap.Size = New System.Drawing.Size(109, 19) + Me.CGSnap.TabIndex = 209 + Me.CGSnap.Text = "Snap to grid (G)" + Me.CGSnap.UseVisualStyleBackColor = True + ' + 'TableLayoutPanel2 + ' + Me.TableLayoutPanel2.AutoSize = True + Me.TableLayoutPanel2.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink + Me.TableLayoutPanel2.ColumnCount = 4 + Me.TableLayoutPanel2.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle()) + Me.TableLayoutPanel2.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50.0!)) + Me.TableLayoutPanel2.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50.0!)) + Me.TableLayoutPanel2.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle()) + Me.TableLayoutPanel2.Controls.Add(Me.PictureBox7, 0, 0) + Me.TableLayoutPanel2.Controls.Add(Me.CGDivide, 1, 0) + Me.TableLayoutPanel2.Controls.Add(Me.CGSub, 2, 0) + Me.TableLayoutPanel2.Controls.Add(Me.BGSlash, 3, 0) + Me.TableLayoutPanel2.Dock = System.Windows.Forms.DockStyle.Fill + Me.TableLayoutPanel2.Location = New System.Drawing.Point(0, 0) + Me.TableLayoutPanel2.Margin = New System.Windows.Forms.Padding(0) + Me.TableLayoutPanel2.Name = "TableLayoutPanel2" + Me.TableLayoutPanel2.RowCount = 1 + Me.TableLayoutPanel2.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100.0!)) + Me.TableLayoutPanel2.Size = New System.Drawing.Size(183, 30) + Me.TableLayoutPanel2.TabIndex = 11 + ' + 'PictureBox7 + ' + Me.PictureBox7.Anchor = System.Windows.Forms.AnchorStyles.None + Me.PictureBox7.Image = Global.iBMSC.My.Resources.Resources.lgpartition + Me.PictureBox7.Location = New System.Drawing.Point(3, 3) + Me.PictureBox7.Name = "PictureBox7" + Me.PictureBox7.Size = New System.Drawing.Size(24, 24) + Me.PictureBox7.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize + Me.PictureBox7.TabIndex = 25 + Me.PictureBox7.TabStop = False + ' + 'CGDivide + ' + Me.CGDivide.Dock = System.Windows.Forms.DockStyle.Fill + Me.CGDivide.Location = New System.Drawing.Point(33, 3) + Me.CGDivide.Maximum = New Decimal(New Integer() {1920, 0, 0, 0}) + Me.CGDivide.Minimum = New Decimal(New Integer() {1, 0, 0, 0}) + Me.CGDivide.Name = "CGDivide" + Me.CGDivide.Size = New System.Drawing.Size(58, 23) + Me.CGDivide.TabIndex = 202 + Me.CGDivide.Value = New Decimal(New Integer() {16, 0, 0, 0}) + ' + 'CGSub + ' + Me.CGSub.Dock = System.Windows.Forms.DockStyle.Fill + Me.CGSub.Location = New System.Drawing.Point(97, 3) + Me.CGSub.Maximum = New Decimal(New Integer() {1920, 0, 0, 0}) + Me.CGSub.Minimum = New Decimal(New Integer() {1, 0, 0, 0}) + Me.CGSub.Name = "CGSub" + Me.CGSub.Size = New System.Drawing.Size(58, 23) + Me.CGSub.TabIndex = 203 + Me.CGSub.Value = New Decimal(New Integer() {4, 0, 0, 0}) + ' + 'BGSlash + ' + Me.BGSlash.Anchor = System.Windows.Forms.AnchorStyles.None + Me.BGSlash.Image = Global.iBMSC.My.Resources.Resources.Shortcut + Me.BGSlash.Location = New System.Drawing.Point(158, 4) + Me.BGSlash.Margin = New System.Windows.Forms.Padding(0, 0, 3, 0) + Me.BGSlash.Name = "BGSlash" + Me.BGSlash.Size = New System.Drawing.Size(22, 22) + Me.BGSlash.TabIndex = 204 + Me.BGSlash.UseVisualStyleBackColor = True + ' + 'POGridSwitch + ' + Me.POGridSwitch.Appearance = System.Windows.Forms.Appearance.Button + Me.POGridSwitch.BackColor = System.Drawing.SystemColors.Control + Me.POGridSwitch.Checked = True + Me.POGridSwitch.CheckState = System.Windows.Forms.CheckState.Checked + Me.POGridSwitch.Cursor = System.Windows.Forms.Cursors.Hand + Me.POGridSwitch.Dock = System.Windows.Forms.DockStyle.Top + Me.POGridSwitch.Font = New System.Drawing.Font("Segoe UI", 9.0!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.POGridSwitch.Location = New System.Drawing.Point(0, 0) + Me.POGridSwitch.Name = "POGridSwitch" + Me.POGridSwitch.Size = New System.Drawing.Size(183, 20) + Me.POGridSwitch.TabIndex = 201 + Me.POGridSwitch.TabStop = False + Me.POGridSwitch.Text = "Grid" + Me.POGridSwitch.TextAlign = System.Drawing.ContentAlignment.MiddleCenter + Me.POGridSwitch.UseCompatibleTextRendering = True + Me.POGridSwitch.UseVisualStyleBackColor = False + ' + 'POHeader + ' + Me.POHeader.AutoSize = True + Me.POHeader.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink + Me.POHeader.Controls.Add(Me.POHeaderInner) + Me.POHeader.Controls.Add(Me.POHeaderSwitch) + Me.POHeader.Dock = System.Windows.Forms.DockStyle.Top + Me.POHeader.Location = New System.Drawing.Point(0, 0) + Me.POHeader.Name = "POHeader" + Me.POHeader.Size = New System.Drawing.Size(183, 439) + Me.POHeader.TabIndex = 1 + ' + 'POHeaderInner + ' + Me.POHeaderInner.AutoSize = True + Me.POHeaderInner.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink + Me.POHeaderInner.Controls.Add(Me.POHeaderPart2) + Me.POHeaderInner.Controls.Add(Me.POHeaderExpander) + Me.POHeaderInner.Controls.Add(Me.POHeaderPart1) + Me.POHeaderInner.Dock = System.Windows.Forms.DockStyle.Top + Me.POHeaderInner.Location = New System.Drawing.Point(0, 20) + Me.POHeaderInner.Name = "POHeaderInner" + Me.POHeaderInner.Size = New System.Drawing.Size(183, 419) + Me.POHeaderInner.TabIndex = 2 + ' + 'POHeaderPart2 + ' + Me.POHeaderPart2.AutoSize = True + Me.POHeaderPart2.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink + Me.POHeaderPart2.ColumnCount = 3 + Me.POHeaderPart2.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle()) + Me.POHeaderPart2.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100.0!)) + Me.POHeaderPart2.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle()) + Me.POHeaderPart2.Controls.Add(Me.CHDifficulty, 1, 5) + Me.POHeaderPart2.Controls.Add(Me.Label13, 2, 6) + Me.POHeaderPart2.Controls.Add(Me.THExRank, 1, 6) + Me.POHeaderPart2.Controls.Add(Me.Label25, 2, 7) + Me.POHeaderPart2.Controls.Add(Me.CHLnObj, 1, 9) + Me.POHeaderPart2.Controls.Add(Me.Label23, 0, 6) + Me.POHeaderPart2.Controls.Add(Me.Label21, 0, 5) + Me.POHeaderPart2.Controls.Add(Me.THComment, 1, 8) + Me.POHeaderPart2.Controls.Add(Me.Label24, 0, 9) + Me.POHeaderPart2.Controls.Add(Me.Label15, 0, 0) + Me.POHeaderPart2.Controls.Add(Me.THTotal, 1, 7) + Me.POHeaderPart2.Controls.Add(Me.Label20, 0, 7) + Me.POHeaderPart2.Controls.Add(Me.BHStageFile, 2, 2) + Me.POHeaderPart2.Controls.Add(Me.BHBanner, 2, 3) + Me.POHeaderPart2.Controls.Add(Me.Label19, 0, 8) + Me.POHeaderPart2.Controls.Add(Me.BHBackBMP, 2, 4) + Me.POHeaderPart2.Controls.Add(Me.Label17, 0, 1) + Me.POHeaderPart2.Controls.Add(Me.Label16, 0, 2) + Me.POHeaderPart2.Controls.Add(Me.Label12, 0, 3) + Me.POHeaderPart2.Controls.Add(Me.THBackBMP, 1, 4) + Me.POHeaderPart2.Controls.Add(Me.Label11, 0, 4) + Me.POHeaderPart2.Controls.Add(Me.THBanner, 1, 3) + Me.POHeaderPart2.Controls.Add(Me.THStageFile, 1, 2) + Me.POHeaderPart2.Controls.Add(Me.THSubTitle, 1, 0) + Me.POHeaderPart2.Controls.Add(Me.THSubArtist, 1, 1) + Me.POHeaderPart2.Dock = System.Windows.Forms.DockStyle.Top + Me.POHeaderPart2.Location = New System.Drawing.Point(0, 186) + Me.POHeaderPart2.Name = "POHeaderPart2" + Me.POHeaderPart2.RowCount = 10 + Me.POHeaderPart2.RowStyles.Add(New System.Windows.Forms.RowStyle()) + Me.POHeaderPart2.RowStyles.Add(New System.Windows.Forms.RowStyle()) + Me.POHeaderPart2.RowStyles.Add(New System.Windows.Forms.RowStyle()) + Me.POHeaderPart2.RowStyles.Add(New System.Windows.Forms.RowStyle()) + Me.POHeaderPart2.RowStyles.Add(New System.Windows.Forms.RowStyle()) + Me.POHeaderPart2.RowStyles.Add(New System.Windows.Forms.RowStyle()) + Me.POHeaderPart2.RowStyles.Add(New System.Windows.Forms.RowStyle()) + Me.POHeaderPart2.RowStyles.Add(New System.Windows.Forms.RowStyle()) + Me.POHeaderPart2.RowStyles.Add(New System.Windows.Forms.RowStyle()) + Me.POHeaderPart2.RowStyles.Add(New System.Windows.Forms.RowStyle()) + Me.POHeaderPart2.Size = New System.Drawing.Size(183, 233) + Me.POHeaderPart2.TabIndex = 27 + ' + 'CHDifficulty + ' + Me.POHeaderPart2.SetColumnSpan(Me.CHDifficulty, 2) + Me.CHDifficulty.Dock = System.Windows.Forms.DockStyle.Top + Me.CHDifficulty.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList + Me.CHDifficulty.FlatStyle = System.Windows.Forms.FlatStyle.System + Me.CHDifficulty.Items.AddRange(New Object() {"None", "1 - EZ / Beginner", "2 - NM / Normal", "3 - HD / Hyper", "4 - MX / Another", "5 - SC / Insane"}) + Me.CHDifficulty.Location = New System.Drawing.Point(67, 118) + Me.CHDifficulty.Margin = New System.Windows.Forms.Padding(0) + Me.CHDifficulty.Name = "CHDifficulty" + Me.CHDifficulty.Size = New System.Drawing.Size(116, 23) + Me.CHDifficulty.TabIndex = 110 + ' + 'Label13 + ' + Me.Label13.AutoSize = True + Me.Label13.Dock = System.Windows.Forms.DockStyle.Fill + Me.Label13.Location = New System.Drawing.Point(158, 141) + Me.Label13.Margin = New System.Windows.Forms.Padding(3, 0, 0, 0) + Me.Label13.Name = "Label13" + Me.Label13.Size = New System.Drawing.Size(25, 23) + Me.Label13.TabIndex = 63 + Me.Label13.Text = "(%)" + Me.Label13.TextAlign = System.Drawing.ContentAlignment.MiddleLeft + ' + 'THExRank + ' + Me.THExRank.Dock = System.Windows.Forms.DockStyle.Fill + Me.THExRank.Location = New System.Drawing.Point(67, 141) + Me.THExRank.Margin = New System.Windows.Forms.Padding(0) + Me.THExRank.Name = "THExRank" + Me.THExRank.Size = New System.Drawing.Size(88, 23) + Me.THExRank.TabIndex = 111 + ' + 'Label25 + ' + Me.Label25.AutoSize = True + Me.Label25.Dock = System.Windows.Forms.DockStyle.Fill + Me.Label25.Location = New System.Drawing.Point(158, 164) + Me.Label25.Margin = New System.Windows.Forms.Padding(3, 0, 0, 0) + Me.Label25.Name = "Label25" + Me.Label25.Size = New System.Drawing.Size(25, 23) + Me.Label25.TabIndex = 23 + Me.Label25.Text = "(%)" + Me.Label25.TextAlign = System.Drawing.ContentAlignment.MiddleLeft + ' + 'CHLnObj + ' + Me.POHeaderPart2.SetColumnSpan(Me.CHLnObj, 2) + Me.CHLnObj.Dock = System.Windows.Forms.DockStyle.Top + Me.CHLnObj.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList + Me.CHLnObj.FlatStyle = System.Windows.Forms.FlatStyle.System + Me.CHLnObj.Items.AddRange(New Object() {"None (#LnType 1)", "01", "02", "03", "04", "05", "06", "07", "08", "09", "0A", "0B", "0C", "0D", "0E", "0F", "0G", "0H", "0I", "0J", "0K", "0L", "0M", "0N", "0O", "0P", "0Q", "0R", "0S", "0T", "0U", "0V", "0W", "0X", "0Y", "0Z", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "1A", "1B", "1C", "1D", "1E", "1F", "1G", "1H", "1I", "1J", "1K", "1L", "1M", "1N", "1O", "1P", "1Q", "1R", "1S", "1T", "1U", "1V", "1W", "1X", "1Y", "1Z", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "2A", "2B", "2C", "2D", "2E", "2F", "2G", "2H", "2I", "2J", "2K", "2L", "2M", "2N", "2O", "2P", "2Q", "2R", "2S", "2T", "2U", "2V", "2W", "2X", "2Y", "2Z", "30", "31", "32", "33", "34", "35", "36", "37", "38", "39", "3A", "3B", "3C", "3D", "3E", "3F", "3G", "3H", "3I", "3J", "3K", "3L", "3M", "3N", "3O", "3P", "3Q", "3R", "3S", "3T", "3U", "3V", "3W", "3X", "3Y", "3Z", "40", "41", "42", "43", "44", "45", "46", "47", "48", "49", "4A", "4B", "4C", "4D", "4E", "4F", "4G", "4H", "4I", "4J", "4K", "4L", "4M", "4N", "4O", "4P", "4Q", "4R", "4S", "4T", "4U", "4V", "4W", "4X", "4Y", "4Z", "50", "51", "52", "53", "54", "55", "56", "57", "58", "59", "5A", "5B", "5C", "5D", "5E", "5F", "5G", "5H", "5I", "5J", "5K", "5L", "5M", "5N", "5O", "5P", "5Q", "5R", "5S", "5T", "5U", "5V", "5W", "5X", "5Y", "5Z", "60", "61", "62", "63", "64", "65", "66", "67", "68", "69", "6A", "6B", "6C", "6D", "6E", "6F", "6G", "6H", "6I", "6J", "6K", "6L", "6M", "6N", "6O", "6P", "6Q", "6R", "6S", "6T", "6U", "6V", "6W", "6X", "6Y", "6Z", "70", "71", "72", "73", "74", "75", "76", "77", "78", "79", "7A", "7B", "7C", "7D", "7E", "7F", "7G", "7H", "7I", "7J", "7K", "7L", "7M", "7N", "7O", "7P", "7Q", "7R", "7S", "7T", "7U", "7V", "7W", "7X", "7Y", "7Z", "80", "81", "82", "83", "84", "85", "86", "87", "88", "89", "8A", "8B", "8C", "8D", "8E", "8F", "8G", "8H", "8I", "8J", "8K", "8L", "8M", "8N", "8O", "8P", "8Q", "8R", "8S", "8T", "8U", "8V", "8W", "8X", "8Y", "8Z", "90", "91", "92", "93", "94", "95", "96", "97", "98", "99", "9A", "9B", "9C", "9D", "9E", "9F", "9G", "9H", "9I", "9J", "9K", "9L", "9M", "9N", "9O", "9P", "9Q", "9R", "9S", "9T", "9U", "9V", "9W", "9X", "9Y", "9Z", "A0", "A1", "A2", "A3", "A4", "A5", "A6", "A7", "A8", "A9", "AA", "AB", "AC", "AD", "AE", "AF", "AG", "AH", "AI", "AJ", "AK", "AL", "AM", "AN", "AO", "AP", "AQ", "AR", "AS", "AT", "AU", "AV", "AW", "AX", "AY", "AZ", "B0", "B1", "B2", "B3", "B4", "B5", "B6", "B7", "B8", "B9", "BA", "BB", "BC", "BD", "BE", "BF", "BG", "BH", "BI", "BJ", "BK", "BL", "BM", "BN", "BO", "BP", "BQ", "BR", "BS", "BT", "BU", "BV", "BW", "BX", "BY", "BZ", "C0", "C1", "C2", "C3", "C4", "C5", "C6", "C7", "C8", "C9", "CA", "CB", "CC", "CD", "CE", "CF", "CG", "CH", "CI", "CJ", "CK", "CL", "CM", "CN", "CO", "CP", "CQ", "CR", "CS", "CT", "CU", "CV", "CW", "CX", "CY", "CZ", "D0", "D1", "D2", "D3", "D4", "D5", "D6", "D7", "D8", "D9", "DA", "DB", "DC", "DD", "DE", "DF", "DG", "DH", "DI", "DJ", "DK", "DL", "DM", "DN", "DO", "DP", "DQ", "DR", "DS", "DT", "DU", "DV", "DW", "DX", "DY", "DZ", "E0", "E1", "E2", "E3", "E4", "E5", "E6", "E7", "E8", "E9", "EA", "EB", "EC", "ED", "EE", "EF", "EG", "EH", "EI", "EJ", "EK", "EL", "EM", "EN", "EO", "EP", "EQ", "ER", "ES", "ET", "EU", "EV", "EW", "EX", "EY", "EZ", "F0", "F1", "F2", "F3", "F4", "F5", "F6", "F7", "F8", "F9", "FA", "FB", "FC", "FD", "FE", "FF", "FG", "FH", "FI", "FJ", "FK", "FL", "FM", "FN", "FO", "FP", "FQ", "FR", "FS", "FT", "FU", "FV", "FW", "FX", "FY", "FZ", "G0", "G1", "G2", "G3", "G4", "G5", "G6", "G7", "G8", "G9", "GA", "GB", "GC", "GD", "GE", "GF", "GG", "GH", "GI", "GJ", "GK", "GL", "GM", "GN", "GO", "GP", "GQ", "GR", "GS", "GT", "GU", "GV", "GW", "GX", "GY", "GZ", "H0", "H1", "H2", "H3", "H4", "H5", "H6", "H7", "H8", "H9", "HA", "HB", "HC", "HD", "HE", "HF", "HG", "HH", "HI", "HJ", "HK", "HL", "HM", "HN", "HO", "HP", "HQ", "HR", "HS", "HT", "HU", "HV", "HW", "HX", "HY", "HZ", "I0", "I1", "I2", "I3", "I4", "I5", "I6", "I7", "I8", "I9", "IA", "IB", "IC", "ID", "IE", "IF", "IG", "IH", "II", "IJ", "IK", "IL", "IM", "IN", "IO", "IP", "IQ", "IR", "IS", "IT", "IU", "IV", "IW", "IX", "IY", "IZ", "J0", "J1", "J2", "J3", "J4", "J5", "J6", "J7", "J8", "J9", "JA", "JB", "JC", "JD", "JE", "JF", "JG", "JH", "JI", "JJ", "JK", "JL", "JM", "JN", "JO", "JP", "JQ", "JR", "JS", "JT", "JU", "JV", "JW", "JX", "JY", "JZ", "K0", "K1", "K2", "K3", "K4", "K5", "K6", "K7", "K8", "K9", "KA", "KB", "KC", "KD", "KE", "KF", "KG", "KH", "KI", "KJ", "KK", "KL", "KM", "KN", "KO", "KP", "KQ", "KR", "KS", "KT", "KU", "KV", "KW", "KX", "KY", "KZ", "L0", "L1", "L2", "L3", "L4", "L5", "L6", "L7", "L8", "L9", "LA", "LB", "LC", "LD", "LE", "LF", "LG", "LH", "LI", "LJ", "LK", "LL", "LM", "LN", "LO", "LP", "LQ", "LR", "LS", "LT", "LU", "LV", "LW", "LX", "LY", "LZ", "M0", "M1", "M2", "M3", "M4", "M5", "M6", "M7", "M8", "M9", "MA", "MB", "MC", "MD", "ME", "MF", "MG", "MH", "MI", "MJ", "MK", "ML", "MM", "MN", "MO", "MP", "MQ", "MR", "MS", "MT", "MU", "MV", "MW", "MX", "MY", "MZ", "N0", "N1", "N2", "N3", "N4", "N5", "N6", "N7", "N8", "N9", "NA", "NB", "NC", "ND", "NE", "NF", "NG", "NH", "NI", "NJ", "NK", "NL", "NM", "NN", "NO", "NP", "NQ", "NR", "NS", "NT", "NU", "NV", "NW", "NX", "NY", "NZ", "O0", "O1", "O2", "O3", "O4", "O5", "O6", "O7", "O8", "O9", "OA", "OB", "OC", "OD", "OE", "OF", "OG", "OH", "OI", "OJ", "OK", "OL", "OM", "ON", "OO", "OP", "OQ", "OR", "OS", "OT", "OU", "OV", "OW", "OX", "OY", "OZ", "P0", "P1", "P2", "P3", "P4", "P5", "P6", "P7", "P8", "P9", "PA", "PB", "PC", "PD", "PE", "PF", "PG", "PH", "PI", "PJ", "PK", "PL", "PM", "PN", "PO", "PP", "PQ", "PR", "PS", "PT", "PU", "PV", "PW", "PX", "PY", "PZ", "Q0", "Q1", "Q2", "Q3", "Q4", "Q5", "Q6", "Q7", "Q8", "Q9", "QA", "QB", "QC", "QD", "QE", "QF", "QG", "QH", "QI", "QJ", "QK", "QL", "QM", "QN", "QO", "QP", "QQ", "QR", "QS", "QT", "QU", "QV", "QW", "QX", "QY", "QZ", "R0", "R1", "R2", "R3", "R4", "R5", "R6", "R7", "R8", "R9", "RA", "RB", "RC", "RD", "RE", "RF", "RG", "RH", "RI", "RJ", "RK", "RL", "RM", "RN", "RO", "RP", "RQ", "RR", "RS", "RT", "RU", "RV", "RW", "RX", "RY", "RZ", "S0", "S1", "S2", "S3", "S4", "S5", "S6", "S7", "S8", "S9", "SA", "SB", "SC", "SD", "SE", "SF", "SG", "SH", "SI", "SJ", "SK", "SL", "SM", "SN", "SO", "SP", "SQ", "SR", "SS", "ST", "SU", "SV", "SW", "SX", "SY", "SZ", "T0", "T1", "T2", "T3", "T4", "T5", "T6", "T7", "T8", "T9", "TA", "TB", "TC", "TD", "TE", "TF", "TG", "TH", "TI", "TJ", "TK", "TL", "TM", "TN", "TO", "TP", "TQ", "TR", "TS", "TT", "TU", "TV", "TW", "TX", "TY", "TZ", "U0", "U1", "U2", "U3", "U4", "U5", "U6", "U7", "U8", "U9", "UA", "UB", "UC", "UD", "UE", "UF", "UG", "UH", "UI", "UJ", "UK", "UL", "UM", "UN", "UO", "UP", "UQ", "UR", "US", "UT", "UU", "UV", "UW", "UX", "UY", "UZ", "V0", "V1", "V2", "V3", "V4", "V5", "V6", "V7", "V8", "V9", "VA", "VB", "VC", "VD", "VE", "VF", "VG", "VH", "VI", "VJ", "VK", "VL", "VM", "VN", "VO", "VP", "VQ", "VR", "VS", "VT", "VU", "VV", "VW", "VX", "VY", "VZ", "W0", "W1", "W2", "W3", "W4", "W5", "W6", "W7", "W8", "W9", "WA", "WB", "WC", "WD", "WE", "WF", "WG", "WH", "WI", "WJ", "WK", "WL", "WM", "WN", "WO", "WP", "WQ", "WR", "WS", "WT", "WU", "WV", "WW", "WX", "WY", "WZ", "X0", "X1", "X2", "X3", "X4", "X5", "X6", "X7", "X8", "X9", "XA", "XB", "XC", "XD", "XE", "XF", "XG", "XH", "XI", "XJ", "XK", "XL", "XM", "XN", "XO", "XP", "XQ", "XR", "XS", "XT", "XU", "XV", "XW", "XX", "XY", "XZ", "Y0", "Y1", "Y2", "Y3", "Y4", "Y5", "Y6", "Y7", "Y8", "Y9", "YA", "YB", "YC", "YD", "YE", "YF", "YG", "YH", "YI", "YJ", "YK", "YL", "YM", "YN", "YO", "YP", "YQ", "YR", "YS", "YT", "YU", "YV", "YW", "YX", "YY", "YZ", "Z0", "Z1", "Z2", "Z3", "Z4", "Z5", "Z6", "Z7", "Z8", "Z9", "ZA", "ZB", "ZC", "ZD", "ZE", "ZF", "ZG", "ZH", "ZI", "ZJ", "ZK", "ZL", "ZM", "ZN", "ZO", "ZP", "ZQ", "ZR", "ZS", "ZT", "ZU", "ZV", "ZW", "ZX", "ZY", "ZZ"}) + Me.CHLnObj.Location = New System.Drawing.Point(67, 210) + Me.CHLnObj.Margin = New System.Windows.Forms.Padding(0) + Me.CHLnObj.Name = "CHLnObj" + Me.CHLnObj.Size = New System.Drawing.Size(116, 23) + Me.CHLnObj.TabIndex = 114 + ' + 'Label23 + ' + Me.Label23.Anchor = System.Windows.Forms.AnchorStyles.Right + Me.Label23.AutoSize = True + Me.Label23.Location = New System.Drawing.Point(19, 145) + Me.Label23.Name = "Label23" + Me.Label23.Size = New System.Drawing.Size(45, 15) + Me.Label23.TabIndex = 26 + Me.Label23.Text = "ExRank" + Me.Label23.TextAlign = System.Drawing.ContentAlignment.MiddleRight + ' + 'Label21 + ' + Me.Label21.Anchor = System.Windows.Forms.AnchorStyles.Right + Me.Label21.AutoSize = True + Me.Label21.Location = New System.Drawing.Point(9, 122) + Me.Label21.Name = "Label21" + Me.Label21.Size = New System.Drawing.Size(55, 15) + Me.Label21.TabIndex = 25 + Me.Label21.Text = "Difficulty" + Me.Label21.TextAlign = System.Drawing.ContentAlignment.MiddleRight + ' + 'THComment + ' + Me.POHeaderPart2.SetColumnSpan(Me.THComment, 2) + Me.THComment.Dock = System.Windows.Forms.DockStyle.Fill + Me.THComment.Location = New System.Drawing.Point(67, 187) + Me.THComment.Margin = New System.Windows.Forms.Padding(0) + Me.THComment.Name = "THComment" + Me.THComment.Size = New System.Drawing.Size(116, 23) + Me.THComment.TabIndex = 113 + ' + 'Label24 + ' + Me.Label24.Anchor = System.Windows.Forms.AnchorStyles.Right + Me.Label24.AutoSize = True + Me.Label24.Location = New System.Drawing.Point(25, 214) + Me.Label24.Name = "Label24" + Me.Label24.Size = New System.Drawing.Size(39, 15) + Me.Label24.TabIndex = 27 + Me.Label24.Text = "LnObj" + Me.Label24.TextAlign = System.Drawing.ContentAlignment.MiddleRight + ' + 'Label15 + ' + Me.Label15.Anchor = System.Windows.Forms.AnchorStyles.Right + Me.Label15.AutoSize = True + Me.Label15.Location = New System.Drawing.Point(15, 4) + Me.Label15.Name = "Label15" + Me.Label15.Size = New System.Drawing.Size(49, 15) + Me.Label15.TabIndex = 6 + Me.Label15.Text = "SubTitle" + Me.Label15.TextAlign = System.Drawing.ContentAlignment.MiddleRight + ' + 'THTotal + ' + Me.THTotal.Dock = System.Windows.Forms.DockStyle.Fill + Me.THTotal.Location = New System.Drawing.Point(67, 164) + Me.THTotal.Margin = New System.Windows.Forms.Padding(0) + Me.THTotal.Name = "THTotal" + Me.THTotal.Size = New System.Drawing.Size(88, 23) + Me.THTotal.TabIndex = 112 + ' + 'Label20 + ' + Me.Label20.Anchor = System.Windows.Forms.AnchorStyles.Right + Me.Label20.AutoSize = True + Me.Label20.Location = New System.Drawing.Point(32, 168) + Me.Label20.Name = "Label20" + Me.Label20.Size = New System.Drawing.Size(32, 15) + Me.Label20.TabIndex = 5 + Me.Label20.Text = "Total" + Me.Label20.TextAlign = System.Drawing.ContentAlignment.MiddleRight + ' + 'BHStageFile + ' + Me.BHStageFile.Dock = System.Windows.Forms.DockStyle.Fill + Me.BHStageFile.FlatStyle = System.Windows.Forms.FlatStyle.System + Me.BHStageFile.Location = New System.Drawing.Point(158, 46) + Me.BHStageFile.Margin = New System.Windows.Forms.Padding(3, 0, 0, 0) + Me.BHStageFile.Name = "BHStageFile" + Me.BHStageFile.Size = New System.Drawing.Size(25, 24) + Me.BHStageFile.TabIndex = 105 + Me.BHStageFile.Text = "..." + Me.BHStageFile.UseVisualStyleBackColor = True + ' + 'BHBanner + ' + Me.BHBanner.Dock = System.Windows.Forms.DockStyle.Fill + Me.BHBanner.FlatStyle = System.Windows.Forms.FlatStyle.System + Me.BHBanner.Location = New System.Drawing.Point(158, 70) + Me.BHBanner.Margin = New System.Windows.Forms.Padding(3, 0, 0, 0) + Me.BHBanner.Name = "BHBanner" + Me.BHBanner.Size = New System.Drawing.Size(25, 24) + Me.BHBanner.TabIndex = 107 + Me.BHBanner.Text = "..." + Me.BHBanner.UseVisualStyleBackColor = True + ' + 'Label19 + ' + Me.Label19.Anchor = System.Windows.Forms.AnchorStyles.Right + Me.Label19.AutoSize = True + Me.Label19.Location = New System.Drawing.Point(3, 191) + Me.Label19.Name = "Label19" + Me.Label19.Size = New System.Drawing.Size(61, 15) + Me.Label19.TabIndex = 13 + Me.Label19.Text = "Comment" + Me.Label19.TextAlign = System.Drawing.ContentAlignment.MiddleRight + ' + 'BHBackBMP + ' + Me.BHBackBMP.Dock = System.Windows.Forms.DockStyle.Fill + Me.BHBackBMP.FlatStyle = System.Windows.Forms.FlatStyle.System + Me.BHBackBMP.Location = New System.Drawing.Point(158, 94) + Me.BHBackBMP.Margin = New System.Windows.Forms.Padding(3, 0, 0, 0) + Me.BHBackBMP.Name = "BHBackBMP" + Me.BHBackBMP.Size = New System.Drawing.Size(25, 24) + Me.BHBackBMP.TabIndex = 109 + Me.BHBackBMP.Text = "..." + Me.BHBackBMP.UseVisualStyleBackColor = True + ' + 'Label17 + ' + Me.Label17.Anchor = System.Windows.Forms.AnchorStyles.Right + Me.Label17.AutoSize = True + Me.Label17.Location = New System.Drawing.Point(9, 27) + Me.Label17.Name = "Label17" + Me.Label17.Size = New System.Drawing.Size(55, 15) + Me.Label17.TabIndex = 7 + Me.Label17.Text = "SubArtist" + Me.Label17.TextAlign = System.Drawing.ContentAlignment.MiddleRight + ' + 'Label16 + ' + Me.Label16.Anchor = System.Windows.Forms.AnchorStyles.Right + Me.Label16.AutoSize = True + Me.Label16.Location = New System.Drawing.Point(7, 50) + Me.Label16.Name = "Label16" + Me.Label16.Size = New System.Drawing.Size(57, 15) + Me.Label16.TabIndex = 9 + Me.Label16.Text = "Stage File" + Me.Label16.TextAlign = System.Drawing.ContentAlignment.MiddleRight + ' + 'Label12 + ' + Me.Label12.Anchor = System.Windows.Forms.AnchorStyles.Right + Me.Label12.AutoSize = True + Me.Label12.Location = New System.Drawing.Point(20, 74) + Me.Label12.Name = "Label12" + Me.Label12.Size = New System.Drawing.Size(44, 15) + Me.Label12.TabIndex = 13 + Me.Label12.Text = "Banner" + Me.Label12.TextAlign = System.Drawing.ContentAlignment.MiddleRight + ' + 'THBackBMP + ' + Me.THBackBMP.Dock = System.Windows.Forms.DockStyle.Fill + Me.THBackBMP.Location = New System.Drawing.Point(67, 94) + Me.THBackBMP.Margin = New System.Windows.Forms.Padding(0) + Me.THBackBMP.Name = "THBackBMP" + Me.THBackBMP.Size = New System.Drawing.Size(88, 23) + Me.THBackBMP.TabIndex = 108 + ' + 'Label11 + ' + Me.Label11.Anchor = System.Windows.Forms.AnchorStyles.Right + Me.Label11.AutoSize = True + Me.Label11.Location = New System.Drawing.Point(4, 98) + Me.Label11.Name = "Label11" + Me.Label11.Size = New System.Drawing.Size(60, 15) + Me.Label11.TabIndex = 16 + Me.Label11.Text = "Back BMP" + Me.Label11.TextAlign = System.Drawing.ContentAlignment.MiddleRight + ' + 'THBanner + ' + Me.THBanner.Dock = System.Windows.Forms.DockStyle.Fill + Me.THBanner.Location = New System.Drawing.Point(67, 70) + Me.THBanner.Margin = New System.Windows.Forms.Padding(0) + Me.THBanner.Name = "THBanner" + Me.THBanner.Size = New System.Drawing.Size(88, 23) + Me.THBanner.TabIndex = 106 + ' + 'THStageFile + ' + Me.THStageFile.Dock = System.Windows.Forms.DockStyle.Fill + Me.THStageFile.Location = New System.Drawing.Point(67, 46) + Me.THStageFile.Margin = New System.Windows.Forms.Padding(0) + Me.THStageFile.Name = "THStageFile" + Me.THStageFile.Size = New System.Drawing.Size(88, 23) + Me.THStageFile.TabIndex = 104 + ' + 'THSubTitle + ' + Me.POHeaderPart2.SetColumnSpan(Me.THSubTitle, 2) + Me.THSubTitle.Dock = System.Windows.Forms.DockStyle.Fill + Me.THSubTitle.Location = New System.Drawing.Point(67, 0) + Me.THSubTitle.Margin = New System.Windows.Forms.Padding(0) + Me.THSubTitle.Name = "THSubTitle" + Me.THSubTitle.Size = New System.Drawing.Size(116, 23) + Me.THSubTitle.TabIndex = 102 + ' + 'THSubArtist + ' + Me.POHeaderPart2.SetColumnSpan(Me.THSubArtist, 2) + Me.THSubArtist.Dock = System.Windows.Forms.DockStyle.Fill + Me.THSubArtist.Location = New System.Drawing.Point(67, 23) + Me.THSubArtist.Margin = New System.Windows.Forms.Padding(0) + Me.THSubArtist.Name = "THSubArtist" + Me.THSubArtist.Size = New System.Drawing.Size(116, 23) + Me.THSubArtist.TabIndex = 103 + ' + 'POHeaderExpander + ' + Me.POHeaderExpander.Appearance = System.Windows.Forms.Appearance.Button + Me.POHeaderExpander.AutoSize = True + Me.POHeaderExpander.Cursor = System.Windows.Forms.Cursors.Hand + Me.POHeaderExpander.Dock = System.Windows.Forms.DockStyle.Top + Me.POHeaderExpander.FlatAppearance.BorderSize = 0 + Me.POHeaderExpander.FlatStyle = System.Windows.Forms.FlatStyle.Popup + Me.POHeaderExpander.Location = New System.Drawing.Point(0, 161) + Me.POHeaderExpander.Margin = New System.Windows.Forms.Padding(0) + Me.POHeaderExpander.Name = "POHeaderExpander" + Me.POHeaderExpander.Size = New System.Drawing.Size(183, 25) + Me.POHeaderExpander.TabIndex = 101 + Me.POHeaderExpander.TabStop = False + Me.POHeaderExpander.Text = "Expand..." + Me.POHeaderExpander.TextAlign = System.Drawing.ContentAlignment.MiddleCenter + Me.POHeaderExpander.UseVisualStyleBackColor = False + ' + 'POHeaderPart1 + ' + Me.POHeaderPart1.AutoSize = True + Me.POHeaderPart1.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink + Me.POHeaderPart1.ColumnCount = 2 + Me.POHeaderPart1.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle()) + Me.POHeaderPart1.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100.0!)) + Me.POHeaderPart1.Controls.Add(Me.Label3, 0, 0) + Me.POHeaderPart1.Controls.Add(Me.THPlayLevel, 1, 6) + Me.POHeaderPart1.Controls.Add(Me.CHRank, 1, 5) + Me.POHeaderPart1.Controls.Add(Me.Label10, 0, 5) + Me.POHeaderPart1.Controls.Add(Me.CHPlayer, 1, 4) + Me.POHeaderPart1.Controls.Add(Me.Label4, 0, 1) + Me.POHeaderPart1.Controls.Add(Me.THGenre, 1, 2) + Me.POHeaderPart1.Controls.Add(Me.THBPM, 1, 3) + Me.POHeaderPart1.Controls.Add(Me.Label2, 0, 2) + Me.POHeaderPart1.Controls.Add(Me.THArtist, 1, 1) + Me.POHeaderPart1.Controls.Add(Me.THTitle, 1, 0) + Me.POHeaderPart1.Controls.Add(Me.Label9, 0, 3) + Me.POHeaderPart1.Controls.Add(Me.Label8, 0, 4) + Me.POHeaderPart1.Controls.Add(Me.Label6, 0, 6) + Me.POHeaderPart1.Dock = System.Windows.Forms.DockStyle.Top + Me.POHeaderPart1.Location = New System.Drawing.Point(0, 0) + Me.POHeaderPart1.Name = "POHeaderPart1" + Me.POHeaderPart1.RowCount = 7 + Me.POHeaderPart1.RowStyles.Add(New System.Windows.Forms.RowStyle()) + Me.POHeaderPart1.RowStyles.Add(New System.Windows.Forms.RowStyle()) + Me.POHeaderPart1.RowStyles.Add(New System.Windows.Forms.RowStyle()) + Me.POHeaderPart1.RowStyles.Add(New System.Windows.Forms.RowStyle()) + Me.POHeaderPart1.RowStyles.Add(New System.Windows.Forms.RowStyle()) + Me.POHeaderPart1.RowStyles.Add(New System.Windows.Forms.RowStyle()) + Me.POHeaderPart1.RowStyles.Add(New System.Windows.Forms.RowStyle()) + Me.POHeaderPart1.Size = New System.Drawing.Size(183, 161) + Me.POHeaderPart1.TabIndex = 25 + ' + 'Label3 + ' + Me.Label3.Anchor = System.Windows.Forms.AnchorStyles.Right + Me.Label3.AutoSize = True + Me.Label3.Location = New System.Drawing.Point(33, 4) + Me.Label3.Name = "Label3" + Me.Label3.Size = New System.Drawing.Size(29, 15) + Me.Label3.TabIndex = 2 + Me.Label3.Text = "Title" + Me.Label3.TextAlign = System.Drawing.ContentAlignment.MiddleRight + ' + 'THPlayLevel + ' + Me.THPlayLevel.Dock = System.Windows.Forms.DockStyle.Fill + Me.THPlayLevel.Location = New System.Drawing.Point(65, 138) + Me.THPlayLevel.Margin = New System.Windows.Forms.Padding(0) + Me.THPlayLevel.Name = "THPlayLevel" + Me.THPlayLevel.Size = New System.Drawing.Size(118, 23) + Me.THPlayLevel.TabIndex = 8 + ' + 'CHRank + ' + Me.CHRank.Dock = System.Windows.Forms.DockStyle.Top + Me.CHRank.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList + Me.CHRank.FlatStyle = System.Windows.Forms.FlatStyle.System + Me.CHRank.Items.AddRange(New Object() {"0 - Very Hard", "1 - Hard", "2 - Normal", "3 - Easy", "4 - Very Easy"}) + Me.CHRank.Location = New System.Drawing.Point(65, 115) + Me.CHRank.Margin = New System.Windows.Forms.Padding(0) + Me.CHRank.Name = "CHRank" + Me.CHRank.Size = New System.Drawing.Size(118, 23) + Me.CHRank.TabIndex = 7 + ' + 'Label10 + ' + Me.Label10.Anchor = System.Windows.Forms.AnchorStyles.Right + Me.Label10.AutoSize = True + Me.Label10.Location = New System.Drawing.Point(19, 119) + Me.Label10.Name = "Label10" + Me.Label10.Size = New System.Drawing.Size(43, 15) + Me.Label10.TabIndex = 16 + Me.Label10.Text = "Rankgi" + Me.Label10.TextAlign = System.Drawing.ContentAlignment.MiddleRight + ' + 'CHPlayer + ' + Me.CHPlayer.Dock = System.Windows.Forms.DockStyle.Top + Me.CHPlayer.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList + Me.CHPlayer.FlatStyle = System.Windows.Forms.FlatStyle.System + Me.CHPlayer.Items.AddRange(New Object() {"1 - Single Play", "2 - Couple Play", "3 - Double Play"}) + Me.CHPlayer.Location = New System.Drawing.Point(65, 92) + Me.CHPlayer.Margin = New System.Windows.Forms.Padding(0) + Me.CHPlayer.Name = "CHPlayer" + Me.CHPlayer.Size = New System.Drawing.Size(118, 23) + Me.CHPlayer.TabIndex = 6 + ' + 'Label4 + ' + Me.Label4.Anchor = System.Windows.Forms.AnchorStyles.Right + Me.Label4.AutoSize = True + Me.Label4.Location = New System.Drawing.Point(27, 27) + Me.Label4.Name = "Label4" + Me.Label4.Size = New System.Drawing.Size(35, 15) + Me.Label4.TabIndex = 3 + Me.Label4.Text = "Artist" + Me.Label4.TextAlign = System.Drawing.ContentAlignment.MiddleRight + ' + 'THGenre + ' + Me.THGenre.Dock = System.Windows.Forms.DockStyle.Fill + Me.THGenre.Location = New System.Drawing.Point(65, 46) + Me.THGenre.Margin = New System.Windows.Forms.Padding(0) + Me.THGenre.Name = "THGenre" + Me.THGenre.Size = New System.Drawing.Size(118, 23) + Me.THGenre.TabIndex = 4 + ' + 'THBPM + ' + Me.THBPM.DecimalPlaces = 4 + Me.THBPM.Dock = System.Windows.Forms.DockStyle.Fill + Me.THBPM.Increment = New Decimal(New Integer() {10, 0, 0, 0}) + Me.THBPM.Location = New System.Drawing.Point(65, 69) + Me.THBPM.Margin = New System.Windows.Forms.Padding(0) + Me.THBPM.Maximum = New Decimal(New Integer() {655359999, 0, 0, 262144}) + Me.THBPM.Minimum = New Decimal(New Integer() {1, 0, 0, 262144}) + Me.THBPM.Name = "THBPM" + Me.THBPM.Size = New System.Drawing.Size(118, 23) + Me.THBPM.TabIndex = 5 + Me.THBPM.Value = New Decimal(New Integer() {120, 0, 0, 0}) + ' + 'Label2 + ' + Me.Label2.Anchor = System.Windows.Forms.AnchorStyles.Right + Me.Label2.AutoSize = True + Me.Label2.Location = New System.Drawing.Point(24, 50) + Me.Label2.Name = "Label2" + Me.Label2.Size = New System.Drawing.Size(38, 15) + Me.Label2.TabIndex = 4 + Me.Label2.Text = "Genre" + Me.Label2.TextAlign = System.Drawing.ContentAlignment.MiddleRight + ' + 'THArtist + ' + Me.THArtist.Dock = System.Windows.Forms.DockStyle.Fill + Me.THArtist.Location = New System.Drawing.Point(65, 23) + Me.THArtist.Margin = New System.Windows.Forms.Padding(0) + Me.THArtist.Name = "THArtist" + Me.THArtist.Size = New System.Drawing.Size(118, 23) + Me.THArtist.TabIndex = 3 + ' + 'THTitle + ' + Me.THTitle.Dock = System.Windows.Forms.DockStyle.Fill + Me.THTitle.Location = New System.Drawing.Point(65, 0) + Me.THTitle.Margin = New System.Windows.Forms.Padding(0) + Me.THTitle.Name = "THTitle" + Me.THTitle.Size = New System.Drawing.Size(118, 23) + Me.THTitle.TabIndex = 2 + ' + 'Label9 + ' + Me.Label9.Anchor = System.Windows.Forms.AnchorStyles.Right + Me.Label9.AutoSize = True + Me.Label9.Location = New System.Drawing.Point(30, 73) + Me.Label9.Name = "Label9" + Me.Label9.Size = New System.Drawing.Size(32, 15) + Me.Label9.TabIndex = 5 + Me.Label9.Text = "BPM" + Me.Label9.TextAlign = System.Drawing.ContentAlignment.MiddleRight + ' + 'Label8 + ' + Me.Label8.Anchor = System.Windows.Forms.AnchorStyles.Right + Me.Label8.AutoSize = True + Me.Label8.Location = New System.Drawing.Point(23, 96) + Me.Label8.Name = "Label8" + Me.Label8.Size = New System.Drawing.Size(39, 15) + Me.Label8.TabIndex = 13 + Me.Label8.Text = "Player" + Me.Label8.TextAlign = System.Drawing.ContentAlignment.MiddleRight + ' + 'Label6 + ' + Me.Label6.Anchor = System.Windows.Forms.AnchorStyles.Right + Me.Label6.AutoSize = True + Me.Label6.Location = New System.Drawing.Point(3, 142) + Me.Label6.Name = "Label6" + Me.Label6.Size = New System.Drawing.Size(59, 15) + Me.Label6.TabIndex = 8 + Me.Label6.Text = "Play Level" + Me.Label6.TextAlign = System.Drawing.ContentAlignment.MiddleRight + ' + 'POHeaderSwitch + ' + Me.POHeaderSwitch.Appearance = System.Windows.Forms.Appearance.Button + Me.POHeaderSwitch.BackColor = System.Drawing.SystemColors.Control + Me.POHeaderSwitch.Checked = True + Me.POHeaderSwitch.CheckState = System.Windows.Forms.CheckState.Checked + Me.POHeaderSwitch.Cursor = System.Windows.Forms.Cursors.Hand + Me.POHeaderSwitch.Dock = System.Windows.Forms.DockStyle.Top + Me.POHeaderSwitch.Font = New System.Drawing.Font("Segoe UI", 9.0!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.POHeaderSwitch.Location = New System.Drawing.Point(0, 0) + Me.POHeaderSwitch.Name = "POHeaderSwitch" + Me.POHeaderSwitch.Size = New System.Drawing.Size(183, 20) + Me.POHeaderSwitch.TabIndex = 1 + Me.POHeaderSwitch.TabStop = False + Me.POHeaderSwitch.Text = "Header" + Me.POHeaderSwitch.TextAlign = System.Drawing.ContentAlignment.MiddleCenter + Me.POHeaderSwitch.UseCompatibleTextRendering = True + Me.POHeaderSwitch.UseVisualStyleBackColor = False + ' + 'Timer1 + ' + Me.Timer1.Interval = 15 + ' + 'Menu1 + ' + Me.Menu1.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.MInsert, Me.MRemove}) + Me.Menu1.Name = "Menu1" + Me.Menu1.Size = New System.Drawing.Size(166, 48) + ' + 'MInsert + ' + Me.MInsert.Image = Global.iBMSC.My.Resources.Resources.x16Add + Me.MInsert.Name = "MInsert" + Me.MInsert.Size = New System.Drawing.Size(165, 22) + Me.MInsert.Text = "Insert Measure" + ' + 'MRemove + ' + Me.MRemove.Image = Global.iBMSC.My.Resources.Resources.x16Remove + Me.MRemove.Name = "MRemove" + Me.MRemove.Size = New System.Drawing.Size(165, 22) + Me.MRemove.Text = "Remove Measure" + ' + 'AutoSaveTimer + ' + Me.AutoSaveTimer.Enabled = True + Me.AutoSaveTimer.Interval = 300000 + ' + 'mnMain + ' + Me.mnMain.AccessibleRole = System.Windows.Forms.AccessibleRole.MenuBar + Me.mnMain.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch + Me.mnMain.Dock = System.Windows.Forms.DockStyle.None + Me.mnMain.GripMargin = New System.Windows.Forms.Padding(2) + Me.mnMain.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.mnFile, Me.mnEdit, Me.mnSys, Me.mnOptions, Me.mnConversion, Me.mnPreview}) + Me.mnMain.LayoutStyle = System.Windows.Forms.ToolStripLayoutStyle.Flow + Me.mnMain.Location = New System.Drawing.Point(0, 0) + Me.mnMain.Name = "mnMain" + Me.mnMain.Size = New System.Drawing.Size(952, 23) + Me.mnMain.TabIndex = 57 + ' + 'mnFile + ' + Me.mnFile.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.mnNew, Me.mnOpen, Me.mnImportSM, Me.mnImportIBMSC, Me.ToolStripSeparator14, Me.mnSave, Me.mnSaveAs, Me.mnExport, Me.ToolStripSeparator15, Me.mnOpenR0, Me.mnOpenR1, Me.mnOpenR2, Me.mnOpenR3, Me.mnOpenR4, Me.ToolStripSeparator16, Me.mnQuit}) + Me.mnFile.Name = "mnFile" + Me.mnFile.Size = New System.Drawing.Size(37, 19) + Me.mnFile.Text = "&File" + ' + 'mnNew + ' + Me.mnNew.Image = Global.iBMSC.My.Resources.Resources.x16New + Me.mnNew.Name = "mnNew" + Me.mnNew.ShortcutKeys = CType((System.Windows.Forms.Keys.Control Or System.Windows.Forms.Keys.N), System.Windows.Forms.Keys) + Me.mnNew.Size = New System.Drawing.Size(240, 22) + Me.mnNew.Text = "&New" + ' + 'mnOpen + ' + Me.mnOpen.Image = Global.iBMSC.My.Resources.Resources.x16Open + Me.mnOpen.Name = "mnOpen" + Me.mnOpen.ShortcutKeys = CType((System.Windows.Forms.Keys.Control Or System.Windows.Forms.Keys.O), System.Windows.Forms.Keys) + Me.mnOpen.Size = New System.Drawing.Size(240, 22) + Me.mnOpen.Text = "&Open" + ' + 'mnImportSM + ' + Me.mnImportSM.Image = Global.iBMSC.My.Resources.Resources.x16Import2 + Me.mnImportSM.Name = "mnImportSM" + Me.mnImportSM.Size = New System.Drawing.Size(240, 22) + Me.mnImportSM.Text = "Import from .S&M file" + ' + 'mnImportIBMSC + ' + Me.mnImportIBMSC.Image = Global.iBMSC.My.Resources.Resources.x16Import2 + Me.mnImportIBMSC.Name = "mnImportIBMSC" + Me.mnImportIBMSC.Size = New System.Drawing.Size(240, 22) + Me.mnImportIBMSC.Text = "Import from .&IBMSC file" + ' + 'ToolStripSeparator14 + ' + Me.ToolStripSeparator14.Name = "ToolStripSeparator14" + Me.ToolStripSeparator14.Size = New System.Drawing.Size(237, 6) + ' + 'mnSave + ' + Me.mnSave.Image = Global.iBMSC.My.Resources.Resources.x16Save + Me.mnSave.Name = "mnSave" + Me.mnSave.ShortcutKeys = CType((System.Windows.Forms.Keys.Control Or System.Windows.Forms.Keys.S), System.Windows.Forms.Keys) + Me.mnSave.Size = New System.Drawing.Size(240, 22) + Me.mnSave.Text = "&Save" + ' + 'mnSaveAs + ' + Me.mnSaveAs.Image = Global.iBMSC.My.Resources.Resources.x16SaveAs + Me.mnSaveAs.Name = "mnSaveAs" + Me.mnSaveAs.ShortcutKeys = CType(((System.Windows.Forms.Keys.Control Or System.Windows.Forms.Keys.Alt) _ + Or System.Windows.Forms.Keys.S), System.Windows.Forms.Keys) + Me.mnSaveAs.Size = New System.Drawing.Size(240, 22) + Me.mnSaveAs.Text = "Save &As..." + ' + 'mnExport + ' + Me.mnExport.Image = Global.iBMSC.My.Resources.Resources.x16Export + Me.mnExport.Name = "mnExport" + Me.mnExport.ShortcutKeys = CType(((System.Windows.Forms.Keys.Control Or System.Windows.Forms.Keys.Shift) _ + Or System.Windows.Forms.Keys.E), System.Windows.Forms.Keys) + Me.mnExport.Size = New System.Drawing.Size(240, 22) + Me.mnExport.Text = "&Export .IBMSC file" + ' + 'ToolStripSeparator15 + ' + Me.ToolStripSeparator15.Name = "ToolStripSeparator15" + Me.ToolStripSeparator15.Size = New System.Drawing.Size(237, 6) + ' + 'mnOpenR0 + ' + Me.mnOpenR0.Enabled = False + Me.mnOpenR0.Name = "mnOpenR0" + Me.mnOpenR0.ShortcutKeys = CType((System.Windows.Forms.Keys.Alt Or System.Windows.Forms.Keys.D1), System.Windows.Forms.Keys) + Me.mnOpenR0.Size = New System.Drawing.Size(240, 22) + Me.mnOpenR0.Tag = "0" + Me.mnOpenR0.Text = "Recent #0" + ' + 'mnOpenR1 + ' + Me.mnOpenR1.Enabled = False + Me.mnOpenR1.Name = "mnOpenR1" + Me.mnOpenR1.ShortcutKeys = CType((System.Windows.Forms.Keys.Alt Or System.Windows.Forms.Keys.D2), System.Windows.Forms.Keys) + Me.mnOpenR1.Size = New System.Drawing.Size(240, 22) + Me.mnOpenR1.Tag = "1" + Me.mnOpenR1.Text = "Recent #1" + ' + 'mnOpenR2 + ' + Me.mnOpenR2.Enabled = False + Me.mnOpenR2.Name = "mnOpenR2" + Me.mnOpenR2.ShortcutKeys = CType((System.Windows.Forms.Keys.Alt Or System.Windows.Forms.Keys.D3), System.Windows.Forms.Keys) + Me.mnOpenR2.Size = New System.Drawing.Size(240, 22) + Me.mnOpenR2.Tag = "2" + Me.mnOpenR2.Text = "Recent #2" + ' + 'mnOpenR3 + ' + Me.mnOpenR3.Enabled = False + Me.mnOpenR3.Name = "mnOpenR3" + Me.mnOpenR3.ShortcutKeys = CType((System.Windows.Forms.Keys.Alt Or System.Windows.Forms.Keys.D4), System.Windows.Forms.Keys) + Me.mnOpenR3.Size = New System.Drawing.Size(240, 22) + Me.mnOpenR3.Tag = "3" + Me.mnOpenR3.Text = "Recent #3" + ' + 'mnOpenR4 + ' + Me.mnOpenR4.Enabled = False + Me.mnOpenR4.Name = "mnOpenR4" + Me.mnOpenR4.ShortcutKeys = CType((System.Windows.Forms.Keys.Alt Or System.Windows.Forms.Keys.D5), System.Windows.Forms.Keys) + Me.mnOpenR4.Size = New System.Drawing.Size(240, 22) + Me.mnOpenR4.Tag = "4" + Me.mnOpenR4.Text = "Recent #4" + ' + 'ToolStripSeparator16 + ' + Me.ToolStripSeparator16.Name = "ToolStripSeparator16" + Me.ToolStripSeparator16.Size = New System.Drawing.Size(237, 6) + ' + 'mnQuit + ' + Me.mnQuit.Name = "mnQuit" + Me.mnQuit.Size = New System.Drawing.Size(240, 22) + Me.mnQuit.Text = "&Quit" + ' + 'mnEdit + ' + Me.mnEdit.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.mnUndo, Me.mnRedo, Me.ToolStripSeparator17, Me.mnCut, Me.mnCopy, Me.mnPaste, Me.mnDelete, Me.mnSelectAll, Me.mnGotoMeasure, Me.ToolStripSeparator18, Me.mnFind, Me.mnStatistics, Me.ToolStripSeparator19, Me.mnTimeSelect, Me.mnSelect, Me.mnWrite, Me.ToolStripSeparator23, Me.mnMyO2}) + Me.mnEdit.Name = "mnEdit" + Me.mnEdit.Size = New System.Drawing.Size(39, 19) + Me.mnEdit.Text = "&Edit" + ' + 'mnUndo + ' + Me.mnUndo.Enabled = False + Me.mnUndo.Image = Global.iBMSC.My.Resources.Resources.x16Undo + Me.mnUndo.Name = "mnUndo" + Me.mnUndo.ShortcutKeyDisplayString = "Ctrl+Z" + Me.mnUndo.Size = New System.Drawing.Size(233, 22) + Me.mnUndo.Text = "&Undo" + ' + 'mnRedo + ' + Me.mnRedo.Enabled = False + Me.mnRedo.Image = Global.iBMSC.My.Resources.Resources.x16Redo + Me.mnRedo.Name = "mnRedo" + Me.mnRedo.ShortcutKeyDisplayString = "Ctrl+Y" + Me.mnRedo.Size = New System.Drawing.Size(233, 22) + Me.mnRedo.Text = "&Redo" + ' + 'ToolStripSeparator17 + ' + Me.ToolStripSeparator17.Name = "ToolStripSeparator17" + Me.ToolStripSeparator17.Size = New System.Drawing.Size(230, 6) + ' + 'mnCut + ' + Me.mnCut.Image = Global.iBMSC.My.Resources.Resources.x16Cut + Me.mnCut.Name = "mnCut" + Me.mnCut.ShortcutKeyDisplayString = "Ctrl+X" + Me.mnCut.Size = New System.Drawing.Size(233, 22) + Me.mnCut.Text = "Cu&t" + ' + 'mnCopy + ' + Me.mnCopy.Image = Global.iBMSC.My.Resources.Resources.x16Copy + Me.mnCopy.Name = "mnCopy" + Me.mnCopy.ShortcutKeyDisplayString = "Ctrl+C" + Me.mnCopy.Size = New System.Drawing.Size(233, 22) + Me.mnCopy.Text = "&Copy" + ' + 'mnPaste + ' + Me.mnPaste.Image = Global.iBMSC.My.Resources.Resources.x16Paste + Me.mnPaste.Name = "mnPaste" + Me.mnPaste.ShortcutKeyDisplayString = "Ctrl+V" + Me.mnPaste.Size = New System.Drawing.Size(233, 22) + Me.mnPaste.Text = "&Paste" + ' + 'mnDelete + ' + Me.mnDelete.Image = Global.iBMSC.My.Resources.Resources.x16Remove + Me.mnDelete.Name = "mnDelete" + Me.mnDelete.ShortcutKeyDisplayString = "Del" + Me.mnDelete.Size = New System.Drawing.Size(233, 22) + Me.mnDelete.Text = "De&lete" + ' + 'mnSelectAll + ' + Me.mnSelectAll.Name = "mnSelectAll" + Me.mnSelectAll.ShortcutKeyDisplayString = "Ctrl+A" + Me.mnSelectAll.Size = New System.Drawing.Size(233, 22) + Me.mnSelectAll.Text = "Select &All" + ' + 'mnGotoMeasure + ' + Me.mnGotoMeasure.Name = "mnGotoMeasure" + Me.mnGotoMeasure.ShortcutKeys = CType((System.Windows.Forms.Keys.Control Or System.Windows.Forms.Keys.G), System.Windows.Forms.Keys) + Me.mnGotoMeasure.Size = New System.Drawing.Size(233, 22) + Me.mnGotoMeasure.Text = "Go To Measure..." + ' + 'ToolStripSeparator18 + ' + Me.ToolStripSeparator18.Name = "ToolStripSeparator18" + Me.ToolStripSeparator18.Size = New System.Drawing.Size(230, 6) + ' + 'mnFind + ' + Me.mnFind.Image = Global.iBMSC.My.Resources.Resources.x16Find + Me.mnFind.Name = "mnFind" + Me.mnFind.ShortcutKeyDisplayString = "Ctrl+F" + Me.mnFind.Size = New System.Drawing.Size(233, 22) + Me.mnFind.Text = "&Find / Delete / Replace" + ' + 'mnStatistics + ' + Me.mnStatistics.Image = Global.iBMSC.My.Resources.Resources.x16Statistics + Me.mnStatistics.Name = "mnStatistics" + Me.mnStatistics.ShortcutKeyDisplayString = "Ctrl+T" + Me.mnStatistics.Size = New System.Drawing.Size(233, 22) + Me.mnStatistics.Text = "St&atistics" + ' + 'ToolStripSeparator19 + ' + Me.ToolStripSeparator19.Name = "ToolStripSeparator19" + Me.ToolStripSeparator19.Size = New System.Drawing.Size(230, 6) + ' + 'mnTimeSelect + ' + Me.mnTimeSelect.CheckOnClick = True + Me.mnTimeSelect.Image = Global.iBMSC.My.Resources.Resources.x16TimeSelection + Me.mnTimeSelect.Name = "mnTimeSelect" + Me.mnTimeSelect.ShortcutKeys = System.Windows.Forms.Keys.F1 + Me.mnTimeSelect.Size = New System.Drawing.Size(233, 22) + Me.mnTimeSelect.Text = "T&ime Selection Tool" + ' + 'mnSelect + ' + Me.mnSelect.Checked = True + Me.mnSelect.CheckOnClick = True + Me.mnSelect.CheckState = System.Windows.Forms.CheckState.Checked + Me.mnSelect.Image = Global.iBMSC.My.Resources.Resources.x16Select + Me.mnSelect.Name = "mnSelect" + Me.mnSelect.ShortcutKeys = System.Windows.Forms.Keys.F2 + Me.mnSelect.Size = New System.Drawing.Size(233, 22) + Me.mnSelect.Text = "&Select Tool" + ' + 'mnWrite + ' + Me.mnWrite.CheckOnClick = True + Me.mnWrite.Image = Global.iBMSC.My.Resources.Resources.x16Pen + Me.mnWrite.Name = "mnWrite" + Me.mnWrite.ShortcutKeys = System.Windows.Forms.Keys.F3 + Me.mnWrite.Size = New System.Drawing.Size(233, 22) + Me.mnWrite.Text = "&Write Tool" + ' + 'ToolStripSeparator23 + ' + Me.ToolStripSeparator23.Name = "ToolStripSeparator23" + Me.ToolStripSeparator23.Size = New System.Drawing.Size(230, 6) + ' + 'mnMyO2 + ' + Me.mnMyO2.Image = Global.iBMSC.My.Resources.Resources.x16MyO2 + Me.mnMyO2.Name = "mnMyO2" + Me.mnMyO2.Size = New System.Drawing.Size(233, 22) + Me.mnMyO2.Text = "MyO2 ToolBox (Chinese Only)" + ' + 'mnSys + ' + Me.mnSys.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.mnSMenu, Me.mnSTB, Me.mnSOP, Me.mnSStatus, Me.mnSLSplitter, Me.mnSRSplitter, Me.ToolStripSeparator21, Me.CGShow, Me.CGShowS, Me.CGShowBG, Me.CGShowM, Me.CGShowMB, Me.CGShowV, Me.CGShowC, Me.ToolStripSeparator22, Me.CGBPM, Me.CGSTOP, Me.CGSCROLL, Me.CGBLP}) + Me.mnSys.Name = "mnSys" + Me.mnSys.Size = New System.Drawing.Size(44, 19) + Me.mnSys.Text = "&View" + ' + 'mnSMenu + ' + Me.mnSMenu.Checked = True + Me.mnSMenu.CheckOnClick = True + Me.mnSMenu.CheckState = System.Windows.Forms.CheckState.Checked + Me.mnSMenu.Name = "mnSMenu" + Me.mnSMenu.Size = New System.Drawing.Size(172, 22) + Me.mnSMenu.Text = "&Main Menu" + Me.mnSMenu.Visible = False + ' + 'mnSTB + ' + Me.mnSTB.Checked = True + Me.mnSTB.CheckOnClick = True + Me.mnSTB.CheckState = System.Windows.Forms.CheckState.Checked + Me.mnSTB.Name = "mnSTB" + Me.mnSTB.Size = New System.Drawing.Size(172, 22) + Me.mnSTB.Text = "&ToolBar" + ' + 'mnSOP + ' + Me.mnSOP.Checked = True + Me.mnSOP.CheckOnClick = True + Me.mnSOP.CheckState = System.Windows.Forms.CheckState.Checked + Me.mnSOP.Name = "mnSOP" + Me.mnSOP.Size = New System.Drawing.Size(172, 22) + Me.mnSOP.Text = "&Options Panel" + ' + 'mnSStatus + ' + Me.mnSStatus.Checked = True + Me.mnSStatus.CheckOnClick = True + Me.mnSStatus.CheckState = System.Windows.Forms.CheckState.Checked + Me.mnSStatus.Name = "mnSStatus" + Me.mnSStatus.Size = New System.Drawing.Size(172, 22) + Me.mnSStatus.Text = "&Status Bar" + ' + 'mnSLSplitter + ' + Me.mnSLSplitter.CheckOnClick = True + Me.mnSLSplitter.Name = "mnSLSplitter" + Me.mnSLSplitter.Size = New System.Drawing.Size(172, 22) + Me.mnSLSplitter.Text = "&Left Splitter" + ' + 'mnSRSplitter + ' + Me.mnSRSplitter.CheckOnClick = True + Me.mnSRSplitter.Name = "mnSRSplitter" + Me.mnSRSplitter.Size = New System.Drawing.Size(172, 22) + Me.mnSRSplitter.Text = "&Right Splitter" + ' + 'ToolStripSeparator21 + ' + Me.ToolStripSeparator21.Name = "ToolStripSeparator21" + Me.ToolStripSeparator21.Size = New System.Drawing.Size(169, 6) + ' + 'CGShow + ' + Me.CGShow.Checked = True + Me.CGShow.CheckOnClick = True + Me.CGShow.CheckState = System.Windows.Forms.CheckState.Checked + Me.CGShow.Name = "CGShow" + Me.CGShow.Size = New System.Drawing.Size(172, 22) + Me.CGShow.Text = "Grid" + ' + 'CGShowS + ' + Me.CGShowS.Checked = True + Me.CGShowS.CheckOnClick = True + Me.CGShowS.CheckState = System.Windows.Forms.CheckState.Checked + Me.CGShowS.Name = "CGShowS" + Me.CGShowS.Size = New System.Drawing.Size(172, 22) + Me.CGShowS.Text = "Sub" + ' + 'CGShowBG + ' + Me.CGShowBG.Checked = True + Me.CGShowBG.CheckOnClick = True + Me.CGShowBG.CheckState = System.Windows.Forms.CheckState.Checked + Me.CGShowBG.Name = "CGShowBG" + Me.CGShowBG.Size = New System.Drawing.Size(172, 22) + Me.CGShowBG.Text = "BackGround" + ' + 'CGShowM + ' + Me.CGShowM.Checked = True + Me.CGShowM.CheckOnClick = True + Me.CGShowM.CheckState = System.Windows.Forms.CheckState.Checked + Me.CGShowM.Name = "CGShowM" + Me.CGShowM.Size = New System.Drawing.Size(172, 22) + Me.CGShowM.Text = "Measure Index" + ' + 'CGShowMB + ' + Me.CGShowMB.Checked = True + Me.CGShowMB.CheckOnClick = True + Me.CGShowMB.CheckState = System.Windows.Forms.CheckState.Checked + Me.CGShowMB.Name = "CGShowMB" + Me.CGShowMB.Size = New System.Drawing.Size(172, 22) + Me.CGShowMB.Text = "Measure Line" + ' + 'CGShowV + ' + Me.CGShowV.Checked = True + Me.CGShowV.CheckOnClick = True + Me.CGShowV.CheckState = System.Windows.Forms.CheckState.Checked + Me.CGShowV.Name = "CGShowV" + Me.CGShowV.Size = New System.Drawing.Size(172, 22) + Me.CGShowV.Text = "Vertical Line" + ' + 'CGShowC + ' + Me.CGShowC.Checked = True + Me.CGShowC.CheckOnClick = True + Me.CGShowC.CheckState = System.Windows.Forms.CheckState.Checked + Me.CGShowC.Name = "CGShowC" + Me.CGShowC.Size = New System.Drawing.Size(172, 22) + Me.CGShowC.Text = "Column Caption" + ' + 'ToolStripSeparator22 + ' + Me.ToolStripSeparator22.Name = "ToolStripSeparator22" + Me.ToolStripSeparator22.Size = New System.Drawing.Size(169, 6) + ' + 'CGBPM + ' + Me.CGBPM.Checked = True + Me.CGBPM.CheckOnClick = True + Me.CGBPM.CheckState = System.Windows.Forms.CheckState.Checked + Me.CGBPM.Name = "CGBPM" + Me.CGBPM.Size = New System.Drawing.Size(172, 22) + Me.CGBPM.Text = "BPM" + ' + 'CGSTOP + ' + Me.CGSTOP.Checked = True + Me.CGSTOP.CheckOnClick = True + Me.CGSTOP.CheckState = System.Windows.Forms.CheckState.Checked + Me.CGSTOP.Name = "CGSTOP" + Me.CGSTOP.Size = New System.Drawing.Size(172, 22) + Me.CGSTOP.Text = "STOP" + ' + 'CGSCROLL + ' + Me.CGSCROLL.Checked = True + Me.CGSCROLL.CheckOnClick = True + Me.CGSCROLL.CheckState = System.Windows.Forms.CheckState.Checked + Me.CGSCROLL.Name = "CGSCROLL" + Me.CGSCROLL.Size = New System.Drawing.Size(172, 22) + Me.CGSCROLL.Text = "SCROLL" + ' + 'CGBLP + ' + Me.CGBLP.Checked = True + Me.CGBLP.CheckOnClick = True + Me.CGBLP.CheckState = System.Windows.Forms.CheckState.Checked + Me.CGBLP.Name = "CGBLP" + Me.CGBLP.Size = New System.Drawing.Size(172, 22) + Me.CGBLP.Text = "BGA / Layer / Poor" + ' + 'mnOptions + ' + Me.mnOptions.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.mnNTInput, Me.mnErrorCheck, Me.mnPreviewOnClick, Me.mnShowFileName, Me.ToolStripSeparator20, Me.mnGOptions, Me.mnVOptions, Me.mnPOptions, Me.mnLanguage, Me.mnTheme}) + Me.mnOptions.Name = "mnOptions" + Me.mnOptions.Size = New System.Drawing.Size(61, 19) + Me.mnOptions.Text = "&Options" + ' + 'mnNTInput + ' + Me.mnNTInput.Checked = True + Me.mnNTInput.CheckOnClick = True + Me.mnNTInput.CheckState = System.Windows.Forms.CheckState.Checked + Me.mnNTInput.Image = Global.iBMSC.My.Resources.Resources.x16NTInput + Me.mnNTInput.Name = "mnNTInput" + Me.mnNTInput.ShortcutKeys = System.Windows.Forms.Keys.F8 + Me.mnNTInput.Size = New System.Drawing.Size(228, 22) + Me.mnNTInput.Text = "L&N Input Style - NT/BMSE" + ' + 'mnErrorCheck + ' + Me.mnErrorCheck.Checked = True + Me.mnErrorCheck.CheckOnClick = True + Me.mnErrorCheck.CheckState = System.Windows.Forms.CheckState.Checked + Me.mnErrorCheck.Image = Global.iBMSC.My.Resources.Resources.x16CheckError + Me.mnErrorCheck.Name = "mnErrorCheck" + Me.mnErrorCheck.Size = New System.Drawing.Size(228, 22) + Me.mnErrorCheck.Text = "&Error Check" + ' + 'mnPreviewOnClick + ' + Me.mnPreviewOnClick.Checked = True + Me.mnPreviewOnClick.CheckOnClick = True + Me.mnPreviewOnClick.CheckState = System.Windows.Forms.CheckState.Checked + Me.mnPreviewOnClick.Image = Global.iBMSC.My.Resources.Resources.x16PreviewOnClick + Me.mnPreviewOnClick.Name = "mnPreviewOnClick" + Me.mnPreviewOnClick.Size = New System.Drawing.Size(228, 22) + Me.mnPreviewOnClick.Text = "Preview on &Click" + ' + 'mnShowFileName + ' + Me.mnShowFileName.CheckOnClick = True + Me.mnShowFileName.Image = Global.iBMSC.My.Resources.Resources.x16ShowFileNameN + Me.mnShowFileName.Name = "mnShowFileName" + Me.mnShowFileName.Size = New System.Drawing.Size(228, 22) + Me.mnShowFileName.Text = "Show &File Name on Notes" + ' + 'ToolStripSeparator20 + ' + Me.ToolStripSeparator20.Name = "ToolStripSeparator20" + Me.ToolStripSeparator20.Size = New System.Drawing.Size(225, 6) + ' + 'mnGOptions + ' + Me.mnGOptions.Image = Global.iBMSC.My.Resources.Resources.x16GeneralOptions + Me.mnGOptions.Name = "mnGOptions" + Me.mnGOptions.ShortcutKeys = System.Windows.Forms.Keys.F10 + Me.mnGOptions.Size = New System.Drawing.Size(228, 22) + Me.mnGOptions.Text = "&General Options" + ' + 'mnVOptions + ' + Me.mnVOptions.Image = Global.iBMSC.My.Resources.Resources.x16VisualOptions + Me.mnVOptions.Name = "mnVOptions" + Me.mnVOptions.ShortcutKeys = System.Windows.Forms.Keys.F12 + Me.mnVOptions.Size = New System.Drawing.Size(228, 22) + Me.mnVOptions.Text = "&Visual Options" + ' + 'mnPOptions + ' + Me.mnPOptions.Image = Global.iBMSC.My.Resources.Resources.x16PlayerOptions + Me.mnPOptions.Name = "mnPOptions" + Me.mnPOptions.ShortcutKeys = System.Windows.Forms.Keys.F9 + Me.mnPOptions.Size = New System.Drawing.Size(228, 22) + Me.mnPOptions.Text = "&Player Options" + ' + 'mnConversion + ' + Me.mnConversion.DropDown = Me.cmnConversion + Me.mnConversion.Name = "mnConversion" + Me.mnConversion.Size = New System.Drawing.Size(84, 19) + Me.mnConversion.Text = "&Conversions" + ' + 'cmnConversion + ' + Me.cmnConversion.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.POBLong, Me.POBShort, Me.POBLongShort, Me.ToolStripSeparator10, Me.POBHidden, Me.POBVisible, Me.POBHiddenVisible, Me.ToolStripSeparator11, Me.POBModify, Me.POBMirror, Me.POBFlip, Me.POBRandom, Me.POBSRandom}) + Me.cmnConversion.Name = "cmnLanguage" + Me.cmnConversion.OwnerItem = Me.POConvert + Me.cmnConversion.Size = New System.Drawing.Size(222, 258) + ' + 'POBLong + ' + Me.POBLong.Enabled = False + Me.POBLong.Image = Global.iBMSC.My.Resources.Resources.ConvertNotesL + Me.POBLong.Name = "POBLong" + Me.POBLong.Size = New System.Drawing.Size(221, 22) + Me.POBLong.Text = "→ &Long Note" + ' + 'POBShort + ' + Me.POBShort.Image = Global.iBMSC.My.Resources.Resources.ConvertNotesN + Me.POBShort.Name = "POBShort" + Me.POBShort.Size = New System.Drawing.Size(221, 22) + Me.POBShort.Text = "→ &Short Note" + ' + 'POBLongShort + ' + Me.POBLongShort.Enabled = False + Me.POBLongShort.Image = Global.iBMSC.My.Resources.Resources.ConvertNotes + Me.POBLongShort.Name = "POBLongShort" + Me.POBLongShort.Size = New System.Drawing.Size(221, 22) + Me.POBLongShort.Text = "Long Note ↔ Short Note" + ' + 'ToolStripSeparator10 + ' + Me.ToolStripSeparator10.Name = "ToolStripSeparator10" + Me.ToolStripSeparator10.Size = New System.Drawing.Size(218, 6) + ' + 'POBHidden + ' + Me.POBHidden.Image = Global.iBMSC.My.Resources.Resources.ConvertNotesH + Me.POBHidden.Name = "POBHidden" + Me.POBHidden.Size = New System.Drawing.Size(221, 22) + Me.POBHidden.Text = "→ &Hidden Note" + ' + 'POBVisible + ' + Me.POBVisible.Image = Global.iBMSC.My.Resources.Resources.ConvertNotesV + Me.POBVisible.Name = "POBVisible" + Me.POBVisible.Size = New System.Drawing.Size(221, 22) + Me.POBVisible.Text = "→ &Visible Note" + ' + 'POBHiddenVisible + ' + Me.POBHiddenVisible.Image = Global.iBMSC.My.Resources.Resources.ConvertNotesHV + Me.POBHiddenVisible.Name = "POBHiddenVisible" + Me.POBHiddenVisible.Size = New System.Drawing.Size(221, 22) + Me.POBHiddenVisible.Text = "Hidden Note ↔ Visible Note" + ' + 'ToolStripSeparator11 + ' + Me.ToolStripSeparator11.Name = "ToolStripSeparator11" + Me.ToolStripSeparator11.Size = New System.Drawing.Size(218, 6) + ' + 'POBModify + ' + Me.POBModify.Image = Global.iBMSC.My.Resources.Resources.x16ModifyLabel + Me.POBModify.Name = "POBModify" + Me.POBModify.Size = New System.Drawing.Size(221, 22) + Me.POBModify.Text = "Modify &Labels" + ' + 'POBMirror + ' + Me.POBMirror.Image = Global.iBMSC.My.Resources.Resources.x16Mirror + Me.POBMirror.Name = "POBMirror" + Me.POBMirror.Size = New System.Drawing.Size(221, 22) + Me.POBMirror.Text = "&Mirror" + ' + 'POBFlip + ' + Me.POBFlip.Image = Global.iBMSC.My.Resources.Resources.x16Flip + Me.POBFlip.Name = "POBFlip" + Me.POBFlip.Size = New System.Drawing.Size(221, 22) + Me.POBFlip.Text = "&Flip" + ' + 'POBRandom + ' + Me.POBRandom.Image = Global.iBMSC.My.Resources.Resources.x16Mirror + Me.POBRandom.Name = "POBRandom" + Me.POBRandom.Size = New System.Drawing.Size(221, 22) + Me.POBRandom.Text = "&Random" + ' + 'POBSRandom + ' + Me.POBSRandom.Image = Global.iBMSC.My.Resources.Resources.x16Mirror + Me.POBSRandom.Name = "POBSRandom" + Me.POBSRandom.Size = New System.Drawing.Size(221, 22) + Me.POBSRandom.Text = "S-R&andom" + ' + 'mnPreview + ' + Me.mnPreview.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.mnPlayB, Me.mnPlay, Me.mnStop}) + Me.mnPreview.Name = "mnPreview" + Me.mnPreview.Size = New System.Drawing.Size(60, 19) + Me.mnPreview.Text = "&Preview" + ' + 'mnPlayB + ' + Me.mnPlayB.Image = Global.iBMSC.My.Resources.Resources.x16PlayB + Me.mnPlayB.Name = "mnPlayB" + Me.mnPlayB.ShortcutKeys = System.Windows.Forms.Keys.F5 + Me.mnPlayB.Size = New System.Drawing.Size(201, 22) + Me.mnPlayB.Text = "Play from &beginning" + ' + 'mnPlay + ' + Me.mnPlay.Image = Global.iBMSC.My.Resources.Resources.x16Play + Me.mnPlay.Name = "mnPlay" + Me.mnPlay.ShortcutKeys = System.Windows.Forms.Keys.F6 + Me.mnPlay.Size = New System.Drawing.Size(201, 22) + Me.mnPlay.Text = "&Play from here" + ' + 'mnStop + ' + Me.mnStop.Image = Global.iBMSC.My.Resources.Resources.x16Stop + Me.mnStop.Name = "mnStop" + Me.mnStop.ShortcutKeys = System.Windows.Forms.Keys.F7 + Me.mnStop.Size = New System.Drawing.Size(201, 22) + Me.mnStop.Text = "&Stop" + ' + 'POConvert + ' + Me.POConvert.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image + Me.POConvert.DropDown = Me.cmnConversion + Me.POConvert.Image = Global.iBMSC.My.Resources.Resources.ConvertNotes + Me.POConvert.ImageTransparentColor = System.Drawing.Color.Magenta + Me.POConvert.Name = "POConvert" + Me.POConvert.Size = New System.Drawing.Size(29, 22) + Me.POConvert.Text = "Convert Notes" + ' + 'TBMain + ' + Me.TBMain.AccessibleRole = System.Windows.Forms.AccessibleRole.ToolBar + Me.TBMain.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch + Me.TBMain.Dock = System.Windows.Forms.DockStyle.None + Me.TBMain.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.TBNew, Me.TBOpen, Me.TBSave, Me.ToolStripSeparator1, Me.TBCut, Me.TBCopy, Me.TBPaste, Me.TBFind, Me.ToolStripSeparator24, Me.TBStatistics, Me.POConvert, Me.TBMyO2, Me.ToolStripSeparator4, Me.TBErrorCheck, Me.TBPreviewOnClick, Me.TBShowFileName, Me.ToolStripSeparator8, Me.TBNTInput, Me.TBWavIncrease, Me.ToolStripSeparator2, Me.TBUndo, Me.TBRedo, Me.ToolStripSeparator5, Me.TBTimeSelect, Me.TBSelect, Me.TBWrite, Me.ToolStripSeparator3, Me.TBPlayB, Me.TBPlay, Me.TBStop, Me.TBPOptions, Me.ToolStripSeparator7, Me.TBVOptions, Me.TBGOptions, Me.TBLanguage, Me.TBTheme, Me.POBStorm}) + Me.TBMain.Location = New System.Drawing.Point(3, 23) + Me.TBMain.Name = "TBMain" + Me.TBMain.Size = New System.Drawing.Size(751, 25) + Me.TBMain.TabIndex = 64 + Me.TBMain.Text = "Main Toolbar" + ' + 'TBNew + ' + Me.TBNew.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image + Me.TBNew.Image = Global.iBMSC.My.Resources.Resources.x16New + Me.TBNew.ImageTransparentColor = System.Drawing.Color.Transparent + Me.TBNew.Name = "TBNew" + Me.TBNew.Size = New System.Drawing.Size(23, 22) + Me.TBNew.Text = "New (Ctrl+N)" + ' + 'TBOpen + ' + Me.TBOpen.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image + Me.TBOpen.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.TBOpenR0, Me.TBOpenR1, Me.TBOpenR2, Me.TBOpenR3, Me.TBOpenR4, Me.ToolStripSeparator12, Me.TBImportSM, Me.TBImportIBMSC}) + Me.TBOpen.Image = Global.iBMSC.My.Resources.Resources.x16Open + Me.TBOpen.ImageTransparentColor = System.Drawing.Color.Magenta + Me.TBOpen.Name = "TBOpen" + Me.TBOpen.Size = New System.Drawing.Size(32, 22) + Me.TBOpen.Text = "Open (Ctrl+O)" + ' + 'TBOpenR0 + ' + Me.TBOpenR0.Enabled = False + Me.TBOpenR0.Name = "TBOpenR0" + Me.TBOpenR0.Size = New System.Drawing.Size(199, 22) + Me.TBOpenR0.Tag = "0" + Me.TBOpenR0.Text = "Recent #0" + ' + 'TBOpenR1 + ' + Me.TBOpenR1.Enabled = False + Me.TBOpenR1.Name = "TBOpenR1" + Me.TBOpenR1.Size = New System.Drawing.Size(199, 22) + Me.TBOpenR1.Tag = "1" + Me.TBOpenR1.Text = "Recent #1" + ' + 'TBOpenR2 + ' + Me.TBOpenR2.Enabled = False + Me.TBOpenR2.Name = "TBOpenR2" + Me.TBOpenR2.Size = New System.Drawing.Size(199, 22) + Me.TBOpenR2.Tag = "2" + Me.TBOpenR2.Text = "Recent #2" + ' + 'TBOpenR3 + ' + Me.TBOpenR3.Enabled = False + Me.TBOpenR3.Name = "TBOpenR3" + Me.TBOpenR3.Size = New System.Drawing.Size(199, 22) + Me.TBOpenR3.Tag = "3" + Me.TBOpenR3.Text = "Recent #3" + ' + 'TBOpenR4 + ' + Me.TBOpenR4.Enabled = False + Me.TBOpenR4.Name = "TBOpenR4" + Me.TBOpenR4.Size = New System.Drawing.Size(199, 22) + Me.TBOpenR4.Tag = "4" + Me.TBOpenR4.Text = "Recent #4" + ' + 'ToolStripSeparator12 + ' + Me.ToolStripSeparator12.Name = "ToolStripSeparator12" + Me.ToolStripSeparator12.Size = New System.Drawing.Size(196, 6) + ' + 'TBImportSM + ' + Me.TBImportSM.Image = Global.iBMSC.My.Resources.Resources.x16Import2 + Me.TBImportSM.Name = "TBImportSM" + Me.TBImportSM.Size = New System.Drawing.Size(199, 22) + Me.TBImportSM.Text = "Import from .SM file" + ' + 'TBImportIBMSC + ' + Me.TBImportIBMSC.Image = Global.iBMSC.My.Resources.Resources.x16Import2 + Me.TBImportIBMSC.Name = "TBImportIBMSC" + Me.TBImportIBMSC.Size = New System.Drawing.Size(199, 22) + Me.TBImportIBMSC.Text = "Import from .IBMSC file" + ' + 'TBSave + ' + Me.TBSave.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image + Me.TBSave.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.TBSaveAs, Me.TBExport}) + Me.TBSave.Image = Global.iBMSC.My.Resources.Resources.x16Save + Me.TBSave.ImageTransparentColor = System.Drawing.Color.Magenta + Me.TBSave.Name = "TBSave" + Me.TBSave.Size = New System.Drawing.Size(32, 22) + Me.TBSave.Text = "Save (Ctrl+S)" + ' + 'TBSaveAs + ' + Me.TBSaveAs.Image = Global.iBMSC.My.Resources.Resources.x16SaveAs + Me.TBSaveAs.Name = "TBSaveAs" + Me.TBSaveAs.Size = New System.Drawing.Size(168, 22) + Me.TBSaveAs.Text = "Save As..." + ' + 'TBExport + ' + Me.TBExport.Image = Global.iBMSC.My.Resources.Resources.x16Export + Me.TBExport.Name = "TBExport" + Me.TBExport.Size = New System.Drawing.Size(168, 22) + Me.TBExport.Text = "Export .IBMSC file" + ' + 'ToolStripSeparator1 + ' + Me.ToolStripSeparator1.Name = "ToolStripSeparator1" + Me.ToolStripSeparator1.Size = New System.Drawing.Size(6, 25) + ' + 'TBCut + ' + Me.TBCut.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image + Me.TBCut.Image = Global.iBMSC.My.Resources.Resources.x16Cut + Me.TBCut.ImageTransparentColor = System.Drawing.Color.Magenta + Me.TBCut.Name = "TBCut" + Me.TBCut.Size = New System.Drawing.Size(23, 22) + Me.TBCut.Text = "Cut (Ctrl+X)" + ' + 'TBCopy + ' + Me.TBCopy.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image + Me.TBCopy.Image = Global.iBMSC.My.Resources.Resources.x16Copy + Me.TBCopy.ImageTransparentColor = System.Drawing.Color.Magenta + Me.TBCopy.Name = "TBCopy" + Me.TBCopy.Size = New System.Drawing.Size(23, 22) + Me.TBCopy.Text = "Copy (Ctrl+C)" + ' + 'TBPaste + ' + Me.TBPaste.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image + Me.TBPaste.Image = Global.iBMSC.My.Resources.Resources.x16Paste + Me.TBPaste.ImageTransparentColor = System.Drawing.Color.Magenta + Me.TBPaste.Name = "TBPaste" + Me.TBPaste.Size = New System.Drawing.Size(23, 22) + Me.TBPaste.Text = "Paste (Ctrl+V)" + ' + 'TBFind + ' + Me.TBFind.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image + Me.TBFind.Image = Global.iBMSC.My.Resources.Resources.x16Find + Me.TBFind.ImageTransparentColor = System.Drawing.Color.Magenta + Me.TBFind.Name = "TBFind" + Me.TBFind.Size = New System.Drawing.Size(23, 22) + Me.TBFind.Text = "Find / Delete / Replace (Ctrl+F)" + ' + 'ToolStripSeparator24 + ' + Me.ToolStripSeparator24.Name = "ToolStripSeparator24" + Me.ToolStripSeparator24.Size = New System.Drawing.Size(6, 25) + ' + 'TBStatistics + ' + Me.TBStatistics.Font = New System.Drawing.Font("Segoe UI", 9.0!, System.Drawing.FontStyle.Bold) + Me.TBStatistics.Image = Global.iBMSC.My.Resources.Resources.x16Statistics + Me.TBStatistics.ImageTransparentColor = System.Drawing.Color.Magenta + Me.TBStatistics.Name = "TBStatistics" + Me.TBStatistics.Size = New System.Drawing.Size(34, 22) + Me.TBStatistics.Text = "0" + Me.TBStatistics.ToolTipText = "Statistics (Ctrl+T)" + ' + 'TBMyO2 + ' + Me.TBMyO2.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image + Me.TBMyO2.Image = Global.iBMSC.My.Resources.Resources.x16MyO2 + Me.TBMyO2.ImageTransparentColor = System.Drawing.Color.Magenta + Me.TBMyO2.Name = "TBMyO2" + Me.TBMyO2.Size = New System.Drawing.Size(23, 22) + Me.TBMyO2.Text = "MyO2 ToolBox (Chinese Only)" + ' + 'ToolStripSeparator4 + ' + Me.ToolStripSeparator4.Name = "ToolStripSeparator4" + Me.ToolStripSeparator4.Size = New System.Drawing.Size(6, 25) + ' + 'TBErrorCheck + ' + Me.TBErrorCheck.Checked = True + Me.TBErrorCheck.CheckOnClick = True + Me.TBErrorCheck.CheckState = System.Windows.Forms.CheckState.Checked + Me.TBErrorCheck.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image + Me.TBErrorCheck.Image = Global.iBMSC.My.Resources.Resources.x16CheckError + Me.TBErrorCheck.ImageTransparentColor = System.Drawing.Color.Magenta + Me.TBErrorCheck.Name = "TBErrorCheck" + Me.TBErrorCheck.Size = New System.Drawing.Size(23, 22) + Me.TBErrorCheck.Text = "Error Check" + ' + 'TBPreviewOnClick + ' + Me.TBPreviewOnClick.Checked = True + Me.TBPreviewOnClick.CheckOnClick = True + Me.TBPreviewOnClick.CheckState = System.Windows.Forms.CheckState.Checked + Me.TBPreviewOnClick.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image + Me.TBPreviewOnClick.Image = Global.iBMSC.My.Resources.Resources.x16PreviewOnClick + Me.TBPreviewOnClick.ImageTransparentColor = System.Drawing.Color.Magenta + Me.TBPreviewOnClick.Name = "TBPreviewOnClick" + Me.TBPreviewOnClick.Size = New System.Drawing.Size(23, 22) + Me.TBPreviewOnClick.Text = "Preview On Click" + ' + 'TBShowFileName + ' + Me.TBShowFileName.CheckOnClick = True + Me.TBShowFileName.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image + Me.TBShowFileName.Image = Global.iBMSC.My.Resources.Resources.x16ShowFileNameN + Me.TBShowFileName.ImageTransparentColor = System.Drawing.Color.Magenta + Me.TBShowFileName.Name = "TBShowFileName" + Me.TBShowFileName.Size = New System.Drawing.Size(23, 22) + Me.TBShowFileName.Text = "Show File Name on Notes" + ' + 'ToolStripSeparator8 + ' + Me.ToolStripSeparator8.Name = "ToolStripSeparator8" + Me.ToolStripSeparator8.Size = New System.Drawing.Size(6, 25) + ' + 'TBNTInput + ' + Me.TBNTInput.Checked = True + Me.TBNTInput.CheckOnClick = True + Me.TBNTInput.CheckState = System.Windows.Forms.CheckState.Checked + Me.TBNTInput.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image + Me.TBNTInput.Image = Global.iBMSC.My.Resources.Resources.x16NTInput + Me.TBNTInput.ImageTransparentColor = System.Drawing.Color.Magenta + Me.TBNTInput.Name = "TBNTInput" + Me.TBNTInput.Size = New System.Drawing.Size(23, 22) + Me.TBNTInput.Text = "LongNote Input Style - NoteTool/BMSE" + ' + 'TBWavIncrease + ' + Me.TBWavIncrease.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image + Me.TBWavIncrease.Image = CType(resources.GetObject("TBWavIncrease.Image"), System.Drawing.Image) + Me.TBWavIncrease.ImageTransparentColor = System.Drawing.Color.Magenta + Me.TBWavIncrease.Name = "TBWavIncrease" + Me.TBWavIncrease.Size = New System.Drawing.Size(23, 22) + Me.TBWavIncrease.Text = "Autoincrease WAV when writing" + ' + 'ToolStripSeparator2 + ' + Me.ToolStripSeparator2.Name = "ToolStripSeparator2" + Me.ToolStripSeparator2.Size = New System.Drawing.Size(6, 25) + ' + 'TBUndo + ' + Me.TBUndo.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image + Me.TBUndo.Enabled = False + Me.TBUndo.Image = Global.iBMSC.My.Resources.Resources.x16Undo + Me.TBUndo.ImageTransparentColor = System.Drawing.Color.Magenta + Me.TBUndo.Name = "TBUndo" + Me.TBUndo.Size = New System.Drawing.Size(23, 22) + Me.TBUndo.Text = "Undo (Ctrl+Z)" + ' + 'TBRedo + ' + Me.TBRedo.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image + Me.TBRedo.Enabled = False + Me.TBRedo.Image = Global.iBMSC.My.Resources.Resources.x16Redo + Me.TBRedo.ImageTransparentColor = System.Drawing.Color.Magenta + Me.TBRedo.Name = "TBRedo" + Me.TBRedo.Size = New System.Drawing.Size(23, 22) + Me.TBRedo.Text = "Redo (Ctrl+Y)" + ' + 'ToolStripSeparator5 + ' + Me.ToolStripSeparator5.Name = "ToolStripSeparator5" + Me.ToolStripSeparator5.Size = New System.Drawing.Size(6, 25) + ' + 'TBTimeSelect + ' + Me.TBTimeSelect.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image + Me.TBTimeSelect.Image = Global.iBMSC.My.Resources.Resources.x16TimeSelection + Me.TBTimeSelect.ImageTransparentColor = System.Drawing.Color.Magenta + Me.TBTimeSelect.Name = "TBTimeSelect" + Me.TBTimeSelect.Size = New System.Drawing.Size(23, 22) + Me.TBTimeSelect.Text = "Time Selection Tool (F1)" + ' + 'TBSelect + ' + Me.TBSelect.Checked = True + Me.TBSelect.CheckState = System.Windows.Forms.CheckState.Checked + Me.TBSelect.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image + Me.TBSelect.Image = Global.iBMSC.My.Resources.Resources.x16Select + Me.TBSelect.ImageTransparentColor = System.Drawing.Color.Magenta + Me.TBSelect.Name = "TBSelect" + Me.TBSelect.Size = New System.Drawing.Size(23, 22) + Me.TBSelect.Text = "Select Tool (F2)" + ' + 'TBWrite + ' + Me.TBWrite.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image + Me.TBWrite.Image = Global.iBMSC.My.Resources.Resources.x16Pen + Me.TBWrite.ImageTransparentColor = System.Drawing.Color.Magenta + Me.TBWrite.Name = "TBWrite" + Me.TBWrite.Size = New System.Drawing.Size(23, 22) + Me.TBWrite.Text = "Write Tool (F3)" + ' + 'ToolStripSeparator3 + ' + Me.ToolStripSeparator3.Name = "ToolStripSeparator3" + Me.ToolStripSeparator3.Size = New System.Drawing.Size(6, 25) + ' + 'TBPlayB + ' + Me.TBPlayB.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image + Me.TBPlayB.Image = Global.iBMSC.My.Resources.Resources.x16PlayB + Me.TBPlayB.ImageTransparentColor = System.Drawing.Color.Magenta + Me.TBPlayB.Name = "TBPlayB" + Me.TBPlayB.Size = New System.Drawing.Size(23, 22) + Me.TBPlayB.Text = "Play from beginning (F5)" + ' + 'TBPlay + ' + Me.TBPlay.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image + Me.TBPlay.Image = Global.iBMSC.My.Resources.Resources.x16Play + Me.TBPlay.ImageTransparentColor = System.Drawing.Color.Magenta + Me.TBPlay.Name = "TBPlay" + Me.TBPlay.Size = New System.Drawing.Size(23, 22) + Me.TBPlay.Text = "Play from here (F6)" + ' + 'TBStop + ' + Me.TBStop.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image + Me.TBStop.Image = Global.iBMSC.My.Resources.Resources.x16Stop + Me.TBStop.ImageTransparentColor = System.Drawing.Color.Magenta + Me.TBStop.Name = "TBStop" + Me.TBStop.Size = New System.Drawing.Size(23, 22) + Me.TBStop.Text = "Stop (F7)" + ' + 'TBPOptions + ' + Me.TBPOptions.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image + Me.TBPOptions.Image = Global.iBMSC.My.Resources.Resources.x16PlayerOptions + Me.TBPOptions.ImageTransparentColor = System.Drawing.Color.Magenta + Me.TBPOptions.Name = "TBPOptions" + Me.TBPOptions.Size = New System.Drawing.Size(23, 22) + Me.TBPOptions.Text = "Player Options (F9)" + ' + 'ToolStripSeparator7 + ' + Me.ToolStripSeparator7.Name = "ToolStripSeparator7" + Me.ToolStripSeparator7.Size = New System.Drawing.Size(6, 25) + ' + 'TBVOptions + ' + Me.TBVOptions.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image + Me.TBVOptions.Image = Global.iBMSC.My.Resources.Resources.x16VisualOptions + Me.TBVOptions.ImageTransparentColor = System.Drawing.Color.Magenta + Me.TBVOptions.Name = "TBVOptions" + Me.TBVOptions.Size = New System.Drawing.Size(23, 22) + Me.TBVOptions.Text = "Visual Options (F12)" + ' + 'TBGOptions + ' + Me.TBGOptions.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image + Me.TBGOptions.Image = Global.iBMSC.My.Resources.Resources.x16GeneralOptions + Me.TBGOptions.ImageTransparentColor = System.Drawing.Color.Magenta + Me.TBGOptions.Name = "TBGOptions" + Me.TBGOptions.Size = New System.Drawing.Size(23, 22) + Me.TBGOptions.Text = "General Options (F10)" + ' + 'POBStorm + ' + Me.POBStorm.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image + Me.POBStorm.Image = Global.iBMSC.My.Resources.Resources.x16Storm + Me.POBStorm.ImageTransparentColor = System.Drawing.Color.Magenta + Me.POBStorm.Name = "POBStorm" + Me.POBStorm.Size = New System.Drawing.Size(23, 22) + Me.POBStorm.Text = "Storm" + Me.POBStorm.Visible = False + ' + 'pStatus + ' + Me.pStatus.AutoSize = True + Me.pStatus.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink + Me.pStatus.Controls.Add(Me.FStatus2) + Me.pStatus.Controls.Add(Me.FStatus) + Me.pStatus.Dock = System.Windows.Forms.DockStyle.Bottom + Me.pStatus.Location = New System.Drawing.Point(0, 759) + Me.pStatus.Name = "pStatus" + Me.pStatus.Size = New System.Drawing.Size(952, 22) + Me.pStatus.TabIndex = 62 + ' + 'FStatus2 + ' + Me.FStatus2.AccessibleRole = System.Windows.Forms.AccessibleRole.StatusBar + Me.FStatus2.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.FSSS, Me.FSSL, Me.FSSH, Me.BVCReverse, Me.LblMultiply, Me.TVCM, Me.LblDivide, Me.TVCD, Me.BVCApply, Me.TVCBPM, Me.BVCCalculate, Me.BConvertStop}) + Me.FStatus2.Location = New System.Drawing.Point(0, 0) + Me.FStatus2.Name = "FStatus2" + Me.FStatus2.ShowItemToolTips = True + Me.FStatus2.Size = New System.Drawing.Size(876, 22) + Me.FStatus2.TabIndex = 0 + Me.FStatus2.Text = "Status" + Me.FStatus2.Visible = False + ' + 'FSSS + ' + Me.FSSS.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text + Me.FSSS.Font = New System.Drawing.Font("Segoe UI", 9.0!, System.Drawing.FontStyle.Bold) + Me.FSSS.ImageTransparentColor = System.Drawing.Color.Magenta + Me.FSSS.Name = "FSSS" + Me.FSSS.Size = New System.Drawing.Size(23, 20) + Me.FSSS.Text = "0" + Me.FSSS.ToolTipText = "Selection Start Position" + ' + 'FSSL + ' + Me.FSSL.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text + Me.FSSL.Font = New System.Drawing.Font("Segoe UI", 9.0!, System.Drawing.FontStyle.Bold) + Me.FSSL.ImageTransparentColor = System.Drawing.Color.Magenta + Me.FSSL.Name = "FSSL" + Me.FSSL.Size = New System.Drawing.Size(23, 20) + Me.FSSL.Text = "0" + Me.FSSL.ToolTipText = "Selection Length" + ' + 'FSSH + ' + Me.FSSH.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text + Me.FSSH.Font = New System.Drawing.Font("Segoe UI", 9.0!, System.Drawing.FontStyle.Bold) + Me.FSSH.ImageTransparentColor = System.Drawing.Color.Magenta + Me.FSSH.Name = "FSSH" + Me.FSSH.Size = New System.Drawing.Size(23, 20) + Me.FSSH.Text = "0" + Me.FSSH.ToolTipText = "Selection Split Position" + ' + 'BVCReverse + ' + Me.BVCReverse.BackColor = System.Drawing.Color.FromArgb(CType(CType(192, Byte), Integer), CType(CType(192, Byte), Integer), CType(CType(255, Byte), Integer)) + Me.BVCReverse.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text + Me.BVCReverse.ImageTransparentColor = System.Drawing.Color.Magenta + Me.BVCReverse.Name = "BVCReverse" + Me.BVCReverse.Size = New System.Drawing.Size(102, 20) + Me.BVCReverse.Text = "Reverse Selection" + ' + 'LblMultiply + ' + Me.LblMultiply.Name = "LblMultiply" + Me.LblMultiply.Size = New System.Drawing.Size(15, 17) + Me.LblMultiply.Text = "×" + ' + 'TVCM + ' + Me.TVCM.BackColor = System.Drawing.Color.FromArgb(CType(CType(255, Byte), Integer), CType(CType(192, Byte), Integer), CType(CType(192, Byte), Integer)) + Me.TVCM.BorderStyle = System.Windows.Forms.BorderStyle.None + Me.TVCM.Font = New System.Drawing.Font("Segoe UI", 9.0!, System.Drawing.FontStyle.Bold) + Me.TVCM.Name = "TVCM" + Me.TVCM.Size = New System.Drawing.Size(60, 22) + Me.TVCM.Text = "2" + Me.TVCM.TextBoxTextAlign = System.Windows.Forms.HorizontalAlignment.Center + ' + 'LblDivide + ' + Me.LblDivide.Name = "LblDivide" + Me.LblDivide.Size = New System.Drawing.Size(15, 17) + Me.LblDivide.Text = "÷" + ' + 'TVCD + ' + Me.TVCD.BackColor = System.Drawing.Color.FromArgb(CType(CType(255, Byte), Integer), CType(CType(192, Byte), Integer), CType(CType(192, Byte), Integer)) + Me.TVCD.BorderStyle = System.Windows.Forms.BorderStyle.None + Me.TVCD.Font = New System.Drawing.Font("Segoe UI", 9.0!, System.Drawing.FontStyle.Bold) + Me.TVCD.Name = "TVCD" + Me.TVCD.Size = New System.Drawing.Size(60, 22) + Me.TVCD.Text = "1" + Me.TVCD.TextBoxTextAlign = System.Windows.Forms.HorizontalAlignment.Center + ' + 'BVCApply + ' + Me.BVCApply.BackColor = System.Drawing.Color.FromArgb(CType(CType(192, Byte), Integer), CType(CType(192, Byte), Integer), CType(CType(255, Byte), Integer)) + Me.BVCApply.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text + Me.BVCApply.ImageTransparentColor = System.Drawing.Color.Magenta + Me.BVCApply.Name = "BVCApply" + Me.BVCApply.Size = New System.Drawing.Size(96, 20) + Me.BVCApply.Text = "Expand By Ratio" + Me.BVCApply.ToolTipText = "This will expand notes and selection by the ratio next to this button. Ignores ce" & + "nter bar." + ' + 'TVCBPM + ' + Me.TVCBPM.BackColor = System.Drawing.Color.FromArgb(CType(CType(255, Byte), Integer), CType(CType(192, Byte), Integer), CType(CType(192, Byte), Integer)) + Me.TVCBPM.BorderStyle = System.Windows.Forms.BorderStyle.None + Me.TVCBPM.Font = New System.Drawing.Font("Segoe UI", 9.0!, System.Drawing.FontStyle.Bold) + Me.TVCBPM.Name = "TVCBPM" + Me.TVCBPM.Size = New System.Drawing.Size(80, 22) + Me.TVCBPM.Text = "120" + Me.TVCBPM.TextBoxTextAlign = System.Windows.Forms.HorizontalAlignment.Center + ' + 'BVCCalculate + ' + Me.BVCCalculate.BackColor = System.Drawing.Color.FromArgb(CType(CType(192, Byte), Integer), CType(CType(192, Byte), Integer), CType(CType(255, Byte), Integer)) + Me.BVCCalculate.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text + Me.BVCCalculate.ImageTransparentColor = System.Drawing.Color.Magenta + Me.BVCCalculate.Name = "BVCCalculate" + Me.BVCCalculate.Size = New System.Drawing.Size(103, 20) + Me.BVCCalculate.Text = "Relocate By Value" + Me.BVCCalculate.ToolTipText = "This will move notes within the selection and preserve the selection, given the B" & + "PM value next to this button. Considers center bar." + ' + 'BConvertStop + ' + Me.BConvertStop.BackColor = System.Drawing.Color.FromArgb(CType(CType(192, Byte), Integer), CType(CType(192, Byte), Integer), CType(CType(255, Byte), Integer)) + Me.BConvertStop.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text + Me.BConvertStop.ImageTransparentColor = System.Drawing.Color.Magenta + Me.BConvertStop.Name = "BConvertStop" + Me.BConvertStop.Size = New System.Drawing.Size(115, 20) + Me.BConvertStop.Text = "Transform Into Stop" + Me.BConvertStop.ToolTipText = "This will move notes within the selection and preserve the selection, given the B" & + "PM value next to this button. Considers center bar." + ' + 'FStatus + ' + Me.FStatus.AccessibleRole = System.Windows.Forms.AccessibleRole.StatusBar + Me.FStatus.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.FSC, Me.FSW, Me.FSM, Me.FSP1, Me.FSP3, Me.FSP2, Me.FSP4, Me.TimeStatusLabel, Me.FST, Me.FSH, Me.FSE}) + Me.FStatus.Location = New System.Drawing.Point(0, 0) + Me.FStatus.Name = "FStatus" + Me.FStatus.ShowItemToolTips = True + Me.FStatus.Size = New System.Drawing.Size(952, 22) + Me.FStatus.SizingGrip = False + Me.FStatus.TabIndex = 62 + Me.FStatus.Text = "Status" + ' + 'FSC + ' + Me.FSC.AutoSize = False + Me.FSC.Name = "FSC" + Me.FSC.Size = New System.Drawing.Size(70, 17) + Me.FSC.Text = "BPM" + Me.FSC.ToolTipText = "Column Caption" + ' + 'FSW + ' + Me.FSW.AutoSize = False + Me.FSW.ForeColor = System.Drawing.Color.FromArgb(CType(CType(128, Byte), Integer), CType(CType(64, Byte), Integer), CType(CType(0, Byte), Integer)) + Me.FSW.Name = "FSW" + Me.FSW.Size = New System.Drawing.Size(40, 17) + Me.FSW.Text = "01" + Me.FSW.ToolTipText = "Note Index" + ' + 'FSM + ' + Me.FSM.AutoSize = False + Me.FSM.ForeColor = System.Drawing.Color.Teal + Me.FSM.Name = "FSM" + Me.FSM.Size = New System.Drawing.Size(40, 17) + Me.FSM.Text = "000" + Me.FSM.ToolTipText = "Measure Index" + ' + 'FSP1 + ' + Me.FSP1.AutoSize = False + Me.FSP1.Font = New System.Drawing.Font("Segoe UI", 9.0!, System.Drawing.FontStyle.Bold) + Me.FSP1.Name = "FSP1" + Me.FSP1.Size = New System.Drawing.Size(170, 17) + Me.FSP1.Text = "9.41176470588235 / 9999" + Me.FSP1.ToolTipText = "Grid Resolution" + ' + 'FSP3 + ' + Me.FSP3.AutoSize = False + Me.FSP3.Font = New System.Drawing.Font("Segoe UI", 9.0!, System.Drawing.FontStyle.Bold) + Me.FSP3.ForeColor = System.Drawing.Color.Maroon + Me.FSP3.Name = "FSP3" + Me.FSP3.Size = New System.Drawing.Size(85, 17) + Me.FSP3.Text = "9999 / 9999" + Me.FSP3.ToolTipText = "Reduced Resolution" + ' + 'FSP2 + ' + Me.FSP2.AutoSize = False + Me.FSP2.Font = New System.Drawing.Font("Segoe UI", 9.0!, System.Drawing.FontStyle.Bold) + Me.FSP2.ForeColor = System.Drawing.Color.Green + Me.FSP2.Name = "FSP2" + Me.FSP2.Size = New System.Drawing.Size(170, 17) + Me.FSP2.Text = "112.941176470588 / 9999" + Me.FSP2.ToolTipText = "Measure Resolution" + ' + 'FSP4 + ' + Me.FSP4.AutoSize = False + Me.FSP4.Name = "FSP4" + Me.FSP4.Size = New System.Drawing.Size(115, 17) + Me.FSP4.Text = "112.941176470588" + Me.FSP4.ToolTipText = "Absolute Position" + ' + 'TimeStatusLabel + ' + Me.TimeStatusLabel.Name = "TimeStatusLabel" + Me.TimeStatusLabel.Size = New System.Drawing.Size(55, 17) + Me.TimeStatusLabel.Text = "00:00:000" + ' + 'FST + ' + Me.FST.ForeColor = System.Drawing.Color.Olive + Me.FST.LinkColor = System.Drawing.Color.FromArgb(CType(CType(0, Byte), Integer), CType(CType(0, Byte), Integer), CType(CType(255, Byte), Integer)) + Me.FST.Name = "FST" + Me.FST.Size = New System.Drawing.Size(64, 17) + Me.FST.Text = "Length = 0" + ' + 'FSH + ' + Me.FSH.ForeColor = System.Drawing.Color.Blue + Me.FSH.Name = "FSH" + Me.FSH.Size = New System.Drawing.Size(46, 17) + Me.FSH.Text = "Hidden" + ' + 'FSE + ' + Me.FSE.ForeColor = System.Drawing.Color.Red + Me.FSE.Name = "FSE" + Me.FSE.Size = New System.Drawing.Size(32, 17) + Me.FSE.Text = "Error" + ' + 'TimerMiddle + ' + Me.TimerMiddle.Interval = 15 + ' + 'ToolStripContainer1 + ' + ' + 'ToolStripContainer1.ContentPanel + ' + Me.ToolStripContainer1.ContentPanel.Controls.Add(Me.PMain) + Me.ToolStripContainer1.ContentPanel.Controls.Add(Me.SpR) + Me.ToolStripContainer1.ContentPanel.Controls.Add(Me.SpL) + Me.ToolStripContainer1.ContentPanel.Controls.Add(Me.PMainR) + Me.ToolStripContainer1.ContentPanel.Controls.Add(Me.PMainL) + Me.ToolStripContainer1.ContentPanel.Size = New System.Drawing.Size(952, 711) + Me.ToolStripContainer1.Dock = System.Windows.Forms.DockStyle.Fill + Me.ToolStripContainer1.Location = New System.Drawing.Point(0, 0) + Me.ToolStripContainer1.Name = "ToolStripContainer1" + Me.ToolStripContainer1.Size = New System.Drawing.Size(952, 759) + Me.ToolStripContainer1.TabIndex = 65 + Me.ToolStripContainer1.Text = "ToolStripContainer1" + ' + 'ToolStripContainer1.TopToolStripPanel + ' + Me.ToolStripContainer1.TopToolStripPanel.Controls.Add(Me.ToolStrip1) + Me.ToolStripContainer1.TopToolStripPanel.Controls.Add(Me.mnMain) + Me.ToolStripContainer1.TopToolStripPanel.Controls.Add(Me.TBMain) + ' + 'PMain + ' + Me.PMain.BackColor = System.Drawing.Color.Black + Me.PMain.Controls.Add(Me.PMainIn) + Me.PMain.Controls.Add(Me.MainPanelScroll) + Me.PMain.Controls.Add(Me.HS) + Me.PMain.Dock = System.Windows.Forms.DockStyle.Fill + Me.PMain.Font = New System.Drawing.Font("Verdana", 9.0!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.PMain.ForeColor = System.Drawing.Color.White + Me.PMain.Location = New System.Drawing.Point(5, 0) + Me.PMain.Name = "PMain" + Me.PMain.Size = New System.Drawing.Size(942, 711) + Me.PMain.TabIndex = 58 + Me.PMain.Tag = "1" + ' + 'PMainIn + ' + Me.PMainIn.BackColor = System.Drawing.Color.Black + Me.PMainIn.Dock = System.Windows.Forms.DockStyle.Fill + Me.PMainIn.Font = New System.Drawing.Font("Verdana", 9.0!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.PMainIn.ForeColor = System.Drawing.Color.White + Me.PMainIn.Location = New System.Drawing.Point(0, 0) + Me.PMainIn.Name = "PMainIn" + Me.PMainIn.Size = New System.Drawing.Size(925, 694) + Me.PMainIn.TabIndex = 0 + Me.PMainIn.TabStop = True + Me.PMainIn.Tag = "1" + ' + 'MainPanelScroll + ' + Me.MainPanelScroll.AccessibleRole = System.Windows.Forms.AccessibleRole.ScrollBar + Me.MainPanelScroll.Dock = System.Windows.Forms.DockStyle.Right + Me.MainPanelScroll.LargeChange = 592 + Me.MainPanelScroll.Location = New System.Drawing.Point(925, 0) + Me.MainPanelScroll.Maximum = 591 + Me.MainPanelScroll.Minimum = -10000 + Me.MainPanelScroll.Name = "MainPanelScroll" + Me.MainPanelScroll.Size = New System.Drawing.Size(17, 694) + Me.MainPanelScroll.SmallChange = 12 + Me.MainPanelScroll.TabIndex = 2 + Me.MainPanelScroll.Tag = "1" + ' + 'HS + ' + Me.HS.AccessibleRole = System.Windows.Forms.AccessibleRole.ScrollBar + Me.HS.Dock = System.Windows.Forms.DockStyle.Bottom + Me.HS.LargeChange = 777 + Me.HS.Location = New System.Drawing.Point(0, 694) + Me.HS.Maximum = 1233 + Me.HS.Name = "HS" + Me.HS.Size = New System.Drawing.Size(942, 17) + Me.HS.TabIndex = 3 + Me.HS.Tag = "1" + ' + 'SpR + ' + Me.SpR.Dock = System.Windows.Forms.DockStyle.Right + Me.SpR.FlatAppearance.BorderSize = 0 + Me.SpR.FlatStyle = System.Windows.Forms.FlatStyle.Flat + Me.SpR.Location = New System.Drawing.Point(947, 0) + Me.SpR.Name = "SpR" + Me.SpR.Size = New System.Drawing.Size(5, 711) + Me.SpR.TabIndex = 59 + Me.SpR.TabStop = False + Me.SpR.UseVisualStyleBackColor = True + Me.SpR.Visible = False + ' + 'SpL + ' + Me.SpL.Dock = System.Windows.Forms.DockStyle.Left + Me.SpL.FlatAppearance.BorderSize = 0 + Me.SpL.FlatStyle = System.Windows.Forms.FlatStyle.Flat + Me.SpL.Location = New System.Drawing.Point(0, 0) + Me.SpL.Name = "SpL" + Me.SpL.Size = New System.Drawing.Size(5, 711) + Me.SpL.TabIndex = 60 + Me.SpL.TabStop = False + Me.SpL.UseVisualStyleBackColor = True + Me.SpL.Visible = False + ' + 'PMainR + ' + Me.PMainR.BackColor = System.Drawing.Color.Black + Me.PMainR.Controls.Add(Me.PMainInR) + Me.PMainR.Controls.Add(Me.RightPanelScroll) + Me.PMainR.Controls.Add(Me.HSR) + Me.PMainR.Dock = System.Windows.Forms.DockStyle.Right + Me.PMainR.Font = New System.Drawing.Font("Verdana", 9.0!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.PMainR.ForeColor = System.Drawing.Color.White + Me.PMainR.Location = New System.Drawing.Point(952, 0) + Me.PMainR.Name = "PMainR" + Me.PMainR.Size = New System.Drawing.Size(0, 711) + Me.PMainR.TabIndex = 56 + Me.PMainR.Tag = "2" + ' + 'PMainInR + ' + Me.PMainInR.BackColor = System.Drawing.Color.Black + Me.PMainInR.Dock = System.Windows.Forms.DockStyle.Fill + Me.PMainInR.Font = New System.Drawing.Font("Verdana", 9.0!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.PMainInR.ForeColor = System.Drawing.Color.White + Me.PMainInR.Location = New System.Drawing.Point(0, 0) + Me.PMainInR.Name = "PMainInR" + Me.PMainInR.Size = New System.Drawing.Size(0, 694) + Me.PMainInR.TabIndex = 0 + Me.PMainInR.TabStop = True + Me.PMainInR.Tag = "2" + ' + 'RightPanelScroll + ' + Me.RightPanelScroll.Dock = System.Windows.Forms.DockStyle.Right + Me.RightPanelScroll.LargeChange = 592 + Me.RightPanelScroll.Location = New System.Drawing.Point(-17, 0) + Me.RightPanelScroll.Maximum = 591 + Me.RightPanelScroll.Minimum = -10000 + Me.RightPanelScroll.Name = "RightPanelScroll" + Me.RightPanelScroll.Size = New System.Drawing.Size(17, 694) + Me.RightPanelScroll.SmallChange = 12 + Me.RightPanelScroll.TabIndex = 2 + Me.RightPanelScroll.Tag = "2" + ' + 'HSR + ' + Me.HSR.Dock = System.Windows.Forms.DockStyle.Bottom + Me.HSR.LargeChange = 777 + Me.HSR.Location = New System.Drawing.Point(0, 694) + Me.HSR.Maximum = 1233 + Me.HSR.Name = "HSR" + Me.HSR.Size = New System.Drawing.Size(0, 17) + Me.HSR.TabIndex = 3 + Me.HSR.Tag = "2" + ' + 'PMainL + ' + Me.PMainL.BackColor = System.Drawing.Color.Black + Me.PMainL.Controls.Add(Me.PMainInL) + Me.PMainL.Controls.Add(Me.LeftPanelScroll) + Me.PMainL.Controls.Add(Me.HSL) + Me.PMainL.Dock = System.Windows.Forms.DockStyle.Left + Me.PMainL.Font = New System.Drawing.Font("Verdana", 9.0!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.PMainL.ForeColor = System.Drawing.Color.White + Me.PMainL.Location = New System.Drawing.Point(0, 0) + Me.PMainL.Name = "PMainL" + Me.PMainL.Size = New System.Drawing.Size(0, 711) + Me.PMainL.TabIndex = 54 + Me.PMainL.Tag = "0" + ' + 'PMainInL + ' + Me.PMainInL.BackColor = System.Drawing.Color.Black + Me.PMainInL.Dock = System.Windows.Forms.DockStyle.Fill + Me.PMainInL.Font = New System.Drawing.Font("Verdana", 9.0!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.PMainInL.ForeColor = System.Drawing.Color.White + Me.PMainInL.Location = New System.Drawing.Point(0, 0) + Me.PMainInL.Name = "PMainInL" + Me.PMainInL.Size = New System.Drawing.Size(0, 694) + Me.PMainInL.TabIndex = 0 + Me.PMainInL.TabStop = True + Me.PMainInL.Tag = "0" + ' + 'LeftPanelScroll + ' + Me.LeftPanelScroll.Dock = System.Windows.Forms.DockStyle.Right + Me.LeftPanelScroll.LargeChange = 592 + Me.LeftPanelScroll.Location = New System.Drawing.Point(-17, 0) + Me.LeftPanelScroll.Maximum = 591 + Me.LeftPanelScroll.Minimum = -10000 + Me.LeftPanelScroll.Name = "LeftPanelScroll" + Me.LeftPanelScroll.Size = New System.Drawing.Size(17, 694) + Me.LeftPanelScroll.SmallChange = 12 + Me.LeftPanelScroll.TabIndex = 2 + Me.LeftPanelScroll.Tag = "0" + ' + 'HSL + ' + Me.HSL.Dock = System.Windows.Forms.DockStyle.Bottom + Me.HSL.LargeChange = 777 + Me.HSL.Location = New System.Drawing.Point(0, 694) + Me.HSL.Maximum = 1233 + Me.HSL.Name = "HSL" + Me.HSL.Size = New System.Drawing.Size(0, 17) + Me.HSL.TabIndex = 3 + Me.HSL.Tag = "0" + ' + 'POptionsResizer + ' + Me.POptionsResizer.AutoSize = True + Me.POptionsResizer.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink + Me.POptionsResizer.Dock = System.Windows.Forms.DockStyle.Right + Me.POptionsResizer.FlatAppearance.BorderSize = 0 + Me.POptionsResizer.FlatStyle = System.Windows.Forms.FlatStyle.Flat + Me.POptionsResizer.Location = New System.Drawing.Point(952, 0) + Me.POptionsResizer.Name = "POptionsResizer" + Me.POptionsResizer.Size = New System.Drawing.Size(6, 781) + Me.POptionsResizer.TabIndex = 67 + Me.POptionsResizer.TabStop = False + Me.POptionsResizer.UseVisualStyleBackColor = True + ' + 'ToolStrip1 + ' + Me.ToolStrip1.Dock = System.Windows.Forms.DockStyle.None + Me.ToolStrip1.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.TBTotalValue}) + Me.ToolStrip1.Location = New System.Drawing.Point(754, 23) + Me.ToolStrip1.Name = "ToolStrip1" + Me.ToolStrip1.Size = New System.Drawing.Size(56, 25) + Me.ToolStrip1.TabIndex = 0 + Me.ToolStrip1.Text = "ToolStrip1" + ' + 'TBTotalValue + ' + Me.TBTotalValue.Name = "TBTotalValue" + Me.TBTotalValue.Size = New System.Drawing.Size(13, 22) + Me.TBTotalValue.Text = "0" + ' + 'MainWindow + ' + Me.AllowDrop = True + Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None + Me.ClientSize = New System.Drawing.Size(1158, 781) + Me.Controls.Add(Me.ToolStripContainer1) + Me.Controls.Add(Me.pStatus) + Me.Controls.Add(Me.POptionsResizer) + Me.Controls.Add(Me.POptionsScroll) + Me.DoubleBuffered = True + Me.Font = New System.Drawing.Font("Segoe UI", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.Icon = CType(resources.GetObject("$this.Icon"), System.Drawing.Icon) + Me.KeyPreview = True + Me.MainMenuStrip = Me.mnMain + Me.Name = "MainWindow" + Me.cmnLanguage.ResumeLayout(False) + Me.cmnTheme.ResumeLayout(False) + Me.POptionsScroll.ResumeLayout(False) + Me.POptionsScroll.PerformLayout() + Me.POptions.ResumeLayout(False) + Me.POptions.PerformLayout() + Me.POExpansion.ResumeLayout(False) + Me.POExpansionInner.ResumeLayout(False) + Me.POExpansionInner.PerformLayout() + Me.POBeat.ResumeLayout(False) + Me.POBeatInner.ResumeLayout(False) + Me.POBeatInner.PerformLayout() + Me.TableLayoutPanel7.ResumeLayout(False) + Me.TableLayoutPanel7.PerformLayout() + CType(Me.nBeatD, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.nBeatN, System.ComponentModel.ISupportInitialize).EndInit() + Me.POBeatPart2.ResumeLayout(False) + Me.POBeatPart2.PerformLayout() + Me.POWAV.ResumeLayout(False) + Me.POWAVInner.ResumeLayout(False) + Me.POWAVInner.PerformLayout() + Me.FlowLayoutPanel3.ResumeLayout(False) + Me.POWAVPart2.ResumeLayout(False) + Me.POWAVPart2.PerformLayout() + Me.POWaveForm.ResumeLayout(False) + Me.POWaveForm.PerformLayout() + Me.POWaveFormInner.ResumeLayout(False) + Me.POWaveFormInner.PerformLayout() + Me.POWaveFormPart2.ResumeLayout(False) + Me.POWaveFormPart2.PerformLayout() + CType(Me.TWSaturation, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.PictureBox2, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.TWTransparency, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.PictureBox3, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.TWPrecision, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.PictureBox4, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.TWWidth, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.PictureBox5, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.TWLeft, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.PictureBox6, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.TWSaturation2, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.TWLeft2, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.TWTransparency2, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.TWWidth2, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.TWPrecision2, System.ComponentModel.ISupportInitialize).EndInit() + Me.POWaveFormPart1.ResumeLayout(False) + Me.POWaveFormPart1.PerformLayout() + Me.TableLayoutPanel1.ResumeLayout(False) + Me.TableLayoutPanel1.PerformLayout() + Me.FlowLayoutPanel1.ResumeLayout(False) + Me.TableLayoutPanel6.ResumeLayout(False) + Me.TableLayoutPanel6.PerformLayout() + CType(Me.PictureBox1, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.TWPosition2, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.TWPosition, System.ComponentModel.ISupportInitialize).EndInit() + Me.POGrid.ResumeLayout(False) + Me.POGrid.PerformLayout() + Me.POGridInner.ResumeLayout(False) + Me.POGridInner.PerformLayout() + Me.POGridPart2.ResumeLayout(False) + Me.POGridPart2.PerformLayout() + Me.TableLayoutPanel5.ResumeLayout(False) + Me.TableLayoutPanel5.PerformLayout() + Me.FlowLayoutPanel2.ResumeLayout(False) + Me.TableLayoutPanel4.ResumeLayout(False) + Me.TableLayoutPanel4.PerformLayout() + CType(Me.CGB, System.ComponentModel.ISupportInitialize).EndInit() + Me.POGridPart1.ResumeLayout(False) + Me.POGridPart1.PerformLayout() + Me.TableLayoutPanel3.ResumeLayout(False) + Me.TableLayoutPanel3.PerformLayout() + CType(Me.PictureBox9, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.CGHeight2, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.CGHeight, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.PictureBox10, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.CGWidth2, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.CGWidth, System.ComponentModel.ISupportInitialize).EndInit() + Me.TableLayoutPanel2.ResumeLayout(False) + Me.TableLayoutPanel2.PerformLayout() + CType(Me.PictureBox7, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.CGDivide, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.CGSub, System.ComponentModel.ISupportInitialize).EndInit() + Me.POHeader.ResumeLayout(False) + Me.POHeader.PerformLayout() + Me.POHeaderInner.ResumeLayout(False) + Me.POHeaderInner.PerformLayout() + Me.POHeaderPart2.ResumeLayout(False) + Me.POHeaderPart2.PerformLayout() + Me.POHeaderPart1.ResumeLayout(False) + Me.POHeaderPart1.PerformLayout() + CType(Me.THBPM, System.ComponentModel.ISupportInitialize).EndInit() + Me.Menu1.ResumeLayout(False) + Me.mnMain.ResumeLayout(False) + Me.mnMain.PerformLayout() + Me.cmnConversion.ResumeLayout(False) + Me.TBMain.ResumeLayout(False) + Me.TBMain.PerformLayout() + Me.pStatus.ResumeLayout(False) + Me.pStatus.PerformLayout() + Me.FStatus2.ResumeLayout(False) + Me.FStatus2.PerformLayout() + Me.FStatus.ResumeLayout(False) + Me.FStatus.PerformLayout() + Me.ToolStripContainer1.ContentPanel.ResumeLayout(False) + Me.ToolStripContainer1.TopToolStripPanel.ResumeLayout(False) + Me.ToolStripContainer1.TopToolStripPanel.PerformLayout() + Me.ToolStripContainer1.ResumeLayout(False) + Me.ToolStripContainer1.PerformLayout() + Me.PMain.ResumeLayout(False) + Me.PMainR.ResumeLayout(False) + Me.PMainL.ResumeLayout(False) + Me.ToolStrip1.ResumeLayout(False) + Me.ToolStrip1.PerformLayout() + Me.ResumeLayout(False) + Me.PerformLayout() + + End Sub + Friend WithEvents POptionsScroll As System.Windows.Forms.Panel + Friend WithEvents LWAV As System.Windows.Forms.ListBox + Friend WithEvents Timer1 As System.Windows.Forms.Timer + Friend WithEvents MInsert As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents MRemove As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents Menu1 As System.Windows.Forms.ContextMenuStrip + Friend WithEvents AutoSaveTimer As System.Windows.Forms.Timer + Friend WithEvents mnMain As System.Windows.Forms.MenuStrip + Friend WithEvents mnFile As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents mnNew As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents mnOpen As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents mnImportSM As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents mnImportIBMSC As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents ToolStripSeparator14 As System.Windows.Forms.ToolStripSeparator + Friend WithEvents mnSave As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents mnSaveAs As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents mnExport As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents ToolStripSeparator15 As System.Windows.Forms.ToolStripSeparator + Friend WithEvents mnOpenR0 As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents mnOpenR1 As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents mnOpenR2 As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents mnOpenR3 As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents mnOpenR4 As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents ToolStripSeparator16 As System.Windows.Forms.ToolStripSeparator + Friend WithEvents mnQuit As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents mnEdit As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents mnUndo As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents mnRedo As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents ToolStripSeparator17 As System.Windows.Forms.ToolStripSeparator + Friend WithEvents mnCut As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents mnCopy As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents mnPaste As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents ToolStripSeparator18 As System.Windows.Forms.ToolStripSeparator + Friend WithEvents mnFind As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents mnStatistics As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents mnDelete As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents mnSelectAll As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents mnMyO2 As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents ToolStripSeparator19 As System.Windows.Forms.ToolStripSeparator + Friend WithEvents mnOptions As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents mnPreview As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents mnPlayB As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents mnPlay As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents mnStop As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents mnTimeSelect As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents mnSelect As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents mnWrite As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents ToolStripSeparator23 As System.Windows.Forms.ToolStripSeparator + Friend WithEvents mnConversion As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents mnErrorCheck As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents mnPreviewOnClick As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents mnShowFileName As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents ToolStripSeparator20 As System.Windows.Forms.ToolStripSeparator + Friend WithEvents mnGOptions As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents mnVOptions As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents mnLanguage As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents mnTheme As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents cmnLanguage As System.Windows.Forms.ContextMenuStrip + Friend WithEvents TBLangDef As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents ToolStripSeparator9 As System.Windows.Forms.ToolStripSeparator + Friend WithEvents cmnTheme As System.Windows.Forms.ContextMenuStrip + Friend WithEvents TBThemeDef As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents TBThemeSave As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents TBThemeRefresh As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents ToolStripSeparator6 As System.Windows.Forms.ToolStripSeparator + Friend WithEvents cmnConversion As System.Windows.Forms.ContextMenuStrip + Friend WithEvents POBLong As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents POBShort As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents POBLongShort As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents ToolStripSeparator10 As System.Windows.Forms.ToolStripSeparator + Friend WithEvents POBHidden As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents POBVisible As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents POBHiddenVisible As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents ToolStripSeparator11 As System.Windows.Forms.ToolStripSeparator + Friend WithEvents POBMirror As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents POBFlip As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents POBModify As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents mnSys As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents mnSMenu As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents mnSTB As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents mnSOP As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents mnSStatus As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents mnSLSplitter As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents mnSRSplitter As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents mnNTInput As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents TBLangRefresh As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents CGSub As System.Windows.Forms.NumericUpDown + Friend WithEvents CGDivide As System.Windows.Forms.NumericUpDown + Friend WithEvents PictureBox7 As System.Windows.Forms.PictureBox + Friend WithEvents CGSnap As System.Windows.Forms.CheckBox + Friend WithEvents BWLock As System.Windows.Forms.CheckBox + Friend WithEvents TWSaturation As System.Windows.Forms.NumericUpDown + Friend WithEvents TWTransparency As System.Windows.Forms.NumericUpDown + Friend WithEvents TWPrecision As System.Windows.Forms.NumericUpDown + Friend WithEvents TWWidth As System.Windows.Forms.NumericUpDown + Friend WithEvents TWLeft As System.Windows.Forms.NumericUpDown + Friend WithEvents TWPosition As System.Windows.Forms.NumericUpDown + Friend WithEvents PictureBox5 As System.Windows.Forms.PictureBox + Friend WithEvents PictureBox6 As System.Windows.Forms.PictureBox + Friend WithEvents PictureBox4 As System.Windows.Forms.PictureBox + Friend WithEvents PictureBox3 As System.Windows.Forms.PictureBox + Friend WithEvents PictureBox2 As System.Windows.Forms.PictureBox + Friend WithEvents PictureBox1 As System.Windows.Forms.PictureBox + Friend WithEvents TWSaturation2 As System.Windows.Forms.TrackBar + Friend WithEvents TWTransparency2 As System.Windows.Forms.TrackBar + Friend WithEvents TWPrecision2 As System.Windows.Forms.TrackBar + Friend WithEvents TWWidth2 As System.Windows.Forms.TrackBar + Friend WithEvents TWLeft2 As System.Windows.Forms.TrackBar + Friend WithEvents TWPosition2 As System.Windows.Forms.TrackBar + Friend WithEvents TWFileName As System.Windows.Forms.TextBox + Friend WithEvents BWClear As System.Windows.Forms.Button + Friend WithEvents BWLoad As System.Windows.Forms.Button + Friend WithEvents TBMain As System.Windows.Forms.ToolStrip + Friend WithEvents TBNew As System.Windows.Forms.ToolStripButton + Friend WithEvents TBOpen As System.Windows.Forms.ToolStripSplitButton + Friend WithEvents TBOpenR0 As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents TBOpenR1 As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents TBOpenR2 As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents TBOpenR3 As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents TBOpenR4 As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents ToolStripSeparator12 As System.Windows.Forms.ToolStripSeparator + Friend WithEvents TBImportSM As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents TBImportIBMSC As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents TBSave As System.Windows.Forms.ToolStripSplitButton + Friend WithEvents TBSaveAs As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents TBExport As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents ToolStripSeparator1 As System.Windows.Forms.ToolStripSeparator + Friend WithEvents TBCut As System.Windows.Forms.ToolStripButton + Friend WithEvents TBCopy As System.Windows.Forms.ToolStripButton + Friend WithEvents TBPaste As System.Windows.Forms.ToolStripButton + Friend WithEvents TBFind As System.Windows.Forms.ToolStripButton + Friend WithEvents TBStatistics As System.Windows.Forms.ToolStripButton + Friend WithEvents pStatus As System.Windows.Forms.Panel + Friend WithEvents FStatus As System.Windows.Forms.StatusStrip + Friend WithEvents FSC As System.Windows.Forms.ToolStripStatusLabel + Friend WithEvents FSP1 As System.Windows.Forms.ToolStripStatusLabel + Friend WithEvents FSP2 As System.Windows.Forms.ToolStripStatusLabel + Friend WithEvents FSP3 As System.Windows.Forms.ToolStripStatusLabel + Friend WithEvents FSP4 As System.Windows.Forms.ToolStripStatusLabel + Friend WithEvents FST As System.Windows.Forms.ToolStripStatusLabel + Friend WithEvents FSH As System.Windows.Forms.ToolStripStatusLabel + Friend WithEvents FSE As System.Windows.Forms.ToolStripStatusLabel + Friend WithEvents FStatus2 As System.Windows.Forms.StatusStrip + Friend WithEvents BVCReverse As System.Windows.Forms.ToolStripButton + Friend WithEvents LblMultiply As System.Windows.Forms.ToolStripStatusLabel + Friend WithEvents TVCBPM As System.Windows.Forms.ToolStripTextBox + Friend WithEvents TVCM As System.Windows.Forms.ToolStripTextBox + Friend WithEvents LblDivide As System.Windows.Forms.ToolStripStatusLabel + Friend WithEvents TVCD As System.Windows.Forms.ToolStripTextBox + Friend WithEvents BVCApply As System.Windows.Forms.ToolStripButton + Friend WithEvents BVCCalculate As System.Windows.Forms.ToolStripButton + Friend WithEvents FSW As System.Windows.Forms.ToolStripStatusLabel + Friend WithEvents FSSS As System.Windows.Forms.ToolStripButton + Friend WithEvents FSSL As System.Windows.Forms.ToolStripButton + Friend WithEvents FSSH As System.Windows.Forms.ToolStripButton + Friend WithEvents TExpansion As System.Windows.Forms.TextBox + Friend WithEvents TimerMiddle As System.Windows.Forms.Timer + Friend WithEvents ToolStripSeparator21 As System.Windows.Forms.ToolStripSeparator + Friend WithEvents CGShow As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents CGShowS As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents CGShowBG As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents CGShowM As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents CGShowMB As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents CGShowV As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents CGShowC As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents ToolStripSeparator22 As System.Windows.Forms.ToolStripSeparator + Friend WithEvents CGBLP As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents CGSTOP As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents CGSCROLL As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents nBeatN As System.Windows.Forms.NumericUpDown + Friend WithEvents LBeat As System.Windows.Forms.ListBox + Friend WithEvents Label7 As System.Windows.Forms.Label + Friend WithEvents BBeatApply As System.Windows.Forms.Button + Friend WithEvents mnPOptions As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents ToolStripContainer1 As System.Windows.Forms.ToolStripContainer + Friend WithEvents PMain As System.Windows.Forms.Panel + Friend WithEvents PMainIn As System.Windows.Forms.Panel + Friend WithEvents MainPanelScroll As System.Windows.Forms.VScrollBar + Friend WithEvents HS As System.Windows.Forms.HScrollBar + Friend WithEvents PMainR As System.Windows.Forms.Panel + Friend WithEvents PMainInR As System.Windows.Forms.Panel + Friend WithEvents RightPanelScroll As System.Windows.Forms.VScrollBar + Friend WithEvents HSR As System.Windows.Forms.HScrollBar + Friend WithEvents PMainL As System.Windows.Forms.Panel + Friend WithEvents PMainInL As System.Windows.Forms.Panel + Friend WithEvents LeftPanelScroll As System.Windows.Forms.VScrollBar + Friend WithEvents HSL As System.Windows.Forms.HScrollBar + Friend WithEvents POConvert As System.Windows.Forms.ToolStripDropDownButton + Friend WithEvents TBLanguage As System.Windows.Forms.ToolStripDropDownButton + Friend WithEvents TBTheme As System.Windows.Forms.ToolStripDropDownButton + Friend WithEvents TBMyO2 As System.Windows.Forms.ToolStripButton + Friend WithEvents ToolStripSeparator4 As System.Windows.Forms.ToolStripSeparator + Friend WithEvents TBErrorCheck As System.Windows.Forms.ToolStripButton + Friend WithEvents TBPreviewOnClick As System.Windows.Forms.ToolStripButton + Friend WithEvents TBShowFileName As System.Windows.Forms.ToolStripButton + Friend WithEvents ToolStripSeparator2 As System.Windows.Forms.ToolStripSeparator + Friend WithEvents TBUndo As System.Windows.Forms.ToolStripButton + Friend WithEvents TBRedo As System.Windows.Forms.ToolStripButton + Friend WithEvents ToolStripSeparator5 As System.Windows.Forms.ToolStripSeparator + Friend WithEvents TBNTInput As System.Windows.Forms.ToolStripButton + Friend WithEvents TBTimeSelect As System.Windows.Forms.ToolStripButton + Friend WithEvents TBSelect As System.Windows.Forms.ToolStripButton + Friend WithEvents TBWrite As System.Windows.Forms.ToolStripButton + Friend WithEvents ToolStripSeparator3 As System.Windows.Forms.ToolStripSeparator + Friend WithEvents TBPlayB As System.Windows.Forms.ToolStripButton + Friend WithEvents TBPlay As System.Windows.Forms.ToolStripButton + Friend WithEvents TBStop As System.Windows.Forms.ToolStripButton + Friend WithEvents TBPOptions As System.Windows.Forms.ToolStripButton + Friend WithEvents ToolStripSeparator7 As System.Windows.Forms.ToolStripSeparator + Friend WithEvents TBVOptions As System.Windows.Forms.ToolStripButton + Friend WithEvents TBGOptions As System.Windows.Forms.ToolStripButton + Friend WithEvents POBStorm As System.Windows.Forms.ToolStripButton + Friend WithEvents POptions As System.Windows.Forms.Panel + Friend WithEvents POHeader As System.Windows.Forms.Panel + Friend WithEvents POHeaderSwitch As System.Windows.Forms.CheckBox + Friend WithEvents POGrid As System.Windows.Forms.Panel + Friend WithEvents POGridSwitch As System.Windows.Forms.CheckBox + Friend WithEvents POHeaderInner As System.Windows.Forms.Panel + Friend WithEvents POHeaderPart2 As System.Windows.Forms.TableLayoutPanel + Friend WithEvents THExRank As System.Windows.Forms.TextBox + Friend WithEvents Label25 As System.Windows.Forms.Label + Friend WithEvents CHLnObj As System.Windows.Forms.ComboBox + Friend WithEvents Label23 As System.Windows.Forms.Label + Friend WithEvents Label21 As System.Windows.Forms.Label + Friend WithEvents THComment As System.Windows.Forms.TextBox + Friend WithEvents Label24 As System.Windows.Forms.Label + Friend WithEvents Label15 As System.Windows.Forms.Label + Friend WithEvents THTotal As System.Windows.Forms.TextBox + Friend WithEvents Label20 As System.Windows.Forms.Label + Friend WithEvents BHStageFile As System.Windows.Forms.Button + Friend WithEvents BHBanner As System.Windows.Forms.Button + Friend WithEvents Label19 As System.Windows.Forms.Label + Friend WithEvents BHBackBMP As System.Windows.Forms.Button + Friend WithEvents Label17 As System.Windows.Forms.Label + Friend WithEvents Label16 As System.Windows.Forms.Label + Friend WithEvents Label12 As System.Windows.Forms.Label + Friend WithEvents THBackBMP As System.Windows.Forms.TextBox + Friend WithEvents Label11 As System.Windows.Forms.Label + Friend WithEvents THBanner As System.Windows.Forms.TextBox + Friend WithEvents THStageFile As System.Windows.Forms.TextBox + Friend WithEvents THSubTitle As System.Windows.Forms.TextBox + Friend WithEvents THSubArtist As System.Windows.Forms.TextBox + Friend WithEvents POHeaderExpander As System.Windows.Forms.CheckBox + Friend WithEvents POHeaderPart1 As System.Windows.Forms.TableLayoutPanel + Friend WithEvents Label3 As System.Windows.Forms.Label + Friend WithEvents THPlayLevel As System.Windows.Forms.TextBox + Friend WithEvents CHRank As System.Windows.Forms.ComboBox + Friend WithEvents Label10 As System.Windows.Forms.Label + Friend WithEvents CHPlayer As System.Windows.Forms.ComboBox + Friend WithEvents CHDifficulty As System.Windows.Forms.ComboBox + Friend WithEvents Label4 As System.Windows.Forms.Label + Friend WithEvents THGenre As System.Windows.Forms.TextBox + Friend WithEvents THBPM As System.Windows.Forms.NumericUpDown + Friend WithEvents Label2 As System.Windows.Forms.Label + Friend WithEvents THArtist As System.Windows.Forms.TextBox + Friend WithEvents THTitle As System.Windows.Forms.TextBox + Friend WithEvents Label9 As System.Windows.Forms.Label + Friend WithEvents Label8 As System.Windows.Forms.Label + Friend WithEvents Label6 As System.Windows.Forms.Label + Friend WithEvents POGridPart1 As System.Windows.Forms.TableLayoutPanel + Friend WithEvents TableLayoutPanel2 As System.Windows.Forms.TableLayoutPanel + Friend WithEvents POGridInner As System.Windows.Forms.Panel + Friend WithEvents POGridPart2 As System.Windows.Forms.TableLayoutPanel + Friend WithEvents TableLayoutPanel5 As System.Windows.Forms.TableLayoutPanel + Friend WithEvents cVSLockR As System.Windows.Forms.CheckBox + Friend WithEvents Label5 As System.Windows.Forms.Label + Friend WithEvents cVSLock As System.Windows.Forms.CheckBox + Friend WithEvents cVSLockL As System.Windows.Forms.CheckBox + Friend WithEvents CGDisableVertical As System.Windows.Forms.CheckBox + Friend WithEvents TableLayoutPanel4 As System.Windows.Forms.TableLayoutPanel + Friend WithEvents Label1 As System.Windows.Forms.Label + Friend WithEvents CGB As System.Windows.Forms.NumericUpDown + Friend WithEvents POGridExpander As System.Windows.Forms.CheckBox + Friend WithEvents TableLayoutPanel3 As System.Windows.Forms.TableLayoutPanel + Friend WithEvents PictureBox9 As System.Windows.Forms.PictureBox + Friend WithEvents CGHeight2 As System.Windows.Forms.TrackBar + Friend WithEvents CGHeight As System.Windows.Forms.NumericUpDown + Friend WithEvents PictureBox10 As System.Windows.Forms.PictureBox + Friend WithEvents CGWidth2 As System.Windows.Forms.TrackBar + Friend WithEvents CGWidth As System.Windows.Forms.NumericUpDown + Friend WithEvents POWaveForm As System.Windows.Forms.Panel + Friend WithEvents POWaveFormSwitch As System.Windows.Forms.CheckBox + Friend WithEvents POWaveFormInner As System.Windows.Forms.Panel + Friend WithEvents POWaveFormPart2 As System.Windows.Forms.TableLayoutPanel + Friend WithEvents POWaveFormExpander As System.Windows.Forms.CheckBox + Friend WithEvents POWaveFormPart1 As System.Windows.Forms.TableLayoutPanel + Friend WithEvents TableLayoutPanel1 As System.Windows.Forms.TableLayoutPanel + Friend WithEvents TableLayoutPanel6 As System.Windows.Forms.TableLayoutPanel + Friend WithEvents FlowLayoutPanel1 As System.Windows.Forms.FlowLayoutPanel + Friend WithEvents FlowLayoutPanel2 As System.Windows.Forms.FlowLayoutPanel + Friend WithEvents POWAV As System.Windows.Forms.Panel + Friend WithEvents POWAVInner As System.Windows.Forms.TableLayoutPanel + Friend WithEvents POWAVSwitch As System.Windows.Forms.CheckBox + Friend WithEvents POBeat As System.Windows.Forms.Panel + Friend WithEvents POBeatInner As System.Windows.Forms.TableLayoutPanel + Friend WithEvents POBeatSwitch As System.Windows.Forms.CheckBox + Friend WithEvents FlowLayoutPanel3 As System.Windows.Forms.FlowLayoutPanel + Friend WithEvents BWAVUp As System.Windows.Forms.Button + Friend WithEvents BWAVDown As System.Windows.Forms.Button + Friend WithEvents BWAVBrowse As System.Windows.Forms.Button + Friend WithEvents BWAVRemove As System.Windows.Forms.Button + Friend WithEvents POExpansion As System.Windows.Forms.Panel + Friend WithEvents POExpansionInner As System.Windows.Forms.Panel + Friend WithEvents POExpansionSwitch As System.Windows.Forms.CheckBox + Friend WithEvents POWAVResizer As System.Windows.Forms.Button + Friend WithEvents TableLayoutPanel7 As System.Windows.Forms.TableLayoutPanel + Friend WithEvents POExpansionResizer As System.Windows.Forms.Button + Friend WithEvents POBeatResizer As System.Windows.Forms.Button + Friend WithEvents POptionsResizer As System.Windows.Forms.Button + Friend WithEvents SpR As System.Windows.Forms.Button + Friend WithEvents SpL As System.Windows.Forms.Button + Friend WithEvents TBThemeLoadComptability As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents POWAVExpander As System.Windows.Forms.CheckBox + Friend WithEvents POWAVPart2 As System.Windows.Forms.TableLayoutPanel + Friend WithEvents CWAVMultiSelect As System.Windows.Forms.CheckBox + Friend WithEvents CWAVChangeLabel As System.Windows.Forms.CheckBox + Friend WithEvents nBeatD As System.Windows.Forms.NumericUpDown + Friend WithEvents BBeatApplyV As System.Windows.Forms.Button + Friend WithEvents tBeatValue As System.Windows.Forms.TextBox + Friend WithEvents POBeatExpander As System.Windows.Forms.CheckBox + Friend WithEvents POBeatPart2 As System.Windows.Forms.TableLayoutPanel + Friend WithEvents CBeatScale As System.Windows.Forms.RadioButton + Friend WithEvents CBeatCut As System.Windows.Forms.RadioButton + Friend WithEvents CBeatMeasure As System.Windows.Forms.RadioButton + Friend WithEvents CBeatPreserve As System.Windows.Forms.RadioButton + Friend WithEvents Label13 As System.Windows.Forms.Label + Friend WithEvents ToolTipUniversal As System.Windows.Forms.ToolTip + Friend WithEvents CGBPM As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents BGSlash As System.Windows.Forms.Button + Friend WithEvents FSM As System.Windows.Forms.ToolStripStatusLabel + Friend WithEvents mnGotoMeasure As ToolStripMenuItem + Friend WithEvents ToolStripSeparator24 As ToolStripSeparator + Friend WithEvents ToolStripSeparator8 As ToolStripSeparator + Friend WithEvents TBWavIncrease As ToolStripButton + Friend WithEvents TimeStatusLabel As ToolStripStatusLabel + Friend WithEvents BConvertStop As ToolStripButton + Friend WithEvents POBRandom As ToolStripMenuItem + Friend WithEvents POBSRandom As ToolStripMenuItem + Friend WithEvents ToolStrip1 As ToolStrip + Friend WithEvents TBTotalValue As ToolStripLabel +End Class diff --git a/MainWindow.vb b/MainWindow.vb new file mode 100644 index 000000000..f40669d14 --- /dev/null +++ b/MainWindow.vb @@ -0,0 +1,4675 @@ +Imports System.Linq +Imports iBMSC.Editor + + +Public Class MainWindow + + + 'Public Structure MARGINS + ' Public Left As Integer + ' Public Right As Integer + ' Public Top As Integer + ' Public Bottom As Integer + 'End Structure + + ' _ + 'Public Shared Function DwmIsCompositionEnabled(ByRef en As Integer) As Integer + 'End Function + ' _ + 'Public Shared Function DwmExtendFrameIntoClientArea(ByVal hwnd As IntPtr, ByRef margin As MARGINS) As Integer + 'End Function + Public Declare Function SendMessage Lib "user32.dll" Alias "SendMessageA" (ByVal hwnd As IntPtr, ByVal wMsg As Integer, ByVal wParam As Integer, ByVal lParam As Integer) As Integer + Public Declare Function ReleaseCapture Lib "user32.dll" Alias "ReleaseCapture" () As Integer + + 'Private Declare Auto Function GetWindowLong Lib "user32" (ByVal hWnd As IntPtr, ByVal nIndex As Integer) As Integer + 'Private Declare Auto Function SetWindowLong Lib "user32" (ByVal hWnd As IntPtr, ByVal nIndex As Integer, ByVal dwNewLong As Integer) As Integer + 'Private Declare Function SetWindowPos Lib "user32.dll" (ByVal hWnd As IntPtr, ByVal hWndInsertAfter As IntPtr, ByVal x As Integer, ByVal y As Integer, ByVal cx As Integer, ByVal cy As Integer, ByVal wFlags As Integer) As Integer + ' _ + 'Private Shared Function SetWindowText(ByVal hwnd As IntPtr, ByVal lpString As String) As Boolean + 'End Function + + 'Private Const GWL_STYLE As Integer = -16 + 'Private Const WS_CAPTION As Integer = &HC00000 + 'Private Const SWP_NOSIZE As Integer = &H1 + 'Private Const SWP_NOMOVE As Integer = &H2 + 'Private Const SWP_NOZORDER As Integer = &H4 + 'Private Const SWP_NOACTIVATE As Integer = &H10 + 'Private Const SWP_FRAMECHANGED As Integer = &H20 + 'Private Const SWP_REFRESH As Integer = SWP_NOZORDER Or SWP_NOSIZE Or SWP_NOMOVE Or SWP_NOACTIVATE Or SWP_FRAMECHANGED + + + Dim MeasureLength(999) As Double + Dim MeasureBottom(999) As Double + + Public Function MeasureUpper(idx As Integer) As Double + Return MeasureBottom(idx) + MeasureLength(idx) + End Function + + + Dim Notes() As Note = {New Note(niBPM, -1, 1200000, 0, False)} + Dim mColumn(999) As Integer '0 = no column, 1 = 1 column, etc. + Dim GreatestVPosition As Double '+ 2000 = -VS.Minimum + + Dim VSValue As Integer = 0 'Store value before ValueChange event + Dim HSValue As Integer = 0 'Store value before ValueChange event + + 'Dim SortingMethod As Integer = 1 + Dim MiddleButtonMoveMethod As Integer = 0 + Dim TextEncoding As System.Text.Encoding = System.Text.Encoding.UTF8 + Dim DispLang As String = "" 'Display Language + Dim Recent() As String = {"", "", "", "", ""} + Dim NTInput As Boolean = True + Dim ShowFileName As Boolean = False + + Dim BeepWhileSaved As Boolean = True + Dim BPMx1296 As Boolean = False + Dim STOPx1296 As Boolean = False + + Dim IsInitializing As Boolean = True + Dim FirstMouseEnter As Boolean = True + + Dim WAVMultiSelect As Boolean = True + Dim WAVChangeLabel As Boolean = True + Dim BeatChangeMode As Integer = 0 + + 'Dim FloatTolerance As Double = 0.0001R + Dim BMSGridLimit As Double = 1.0R + + Dim LnObj As Integer = 0 '0 for none, 1-1295 for 01-ZZ + + 'IO + Dim FileName As String = "Untitled.bms" + 'Dim TitlePath As New Drawing2D.GraphicsPath + Dim InitPath As String = "" + Dim IsSaved As Boolean = True + + 'Variables for Drag/Drop + Dim DDFileName() As String = {} + Dim SupportedFileExtension() As String = {".bms", ".bme", ".bml", ".pms", ".txt", ".sm", ".ibmsc"} + Dim SupportedAudioExtension() As String = {".wav", ".mp3", ".ogg"} + + 'Variables for theme + 'Dim SaveTheme As Boolean = True + + 'Variables for undo/redo + Dim sUndo(99) As UndoRedo.LinkedURCmd + Dim sRedo(99) As UndoRedo.LinkedURCmd + Dim sI As Integer = 0 + + 'Variables for select tool + Dim DisableVerticalMove As Boolean = False + Dim KMouseOver As Integer = -1 'Mouse is on which note (for drawing green outline) + Dim LastMouseDownLocation As PointF = New Point(-1, -1) 'Mouse is clicked on which point (location for display) (for selection box) + Dim pMouseMove As PointF = New Point(-1, -1) 'Mouse is moved to which point (location for display) (for selection box) + 'Dim KMouseDown As Integer = -1 'Mouse is clicked on which note (for moving) + Dim deltaVPosition As Double = 0 'difference between mouse and VPosition of K + Dim bAdjustLength As Boolean 'If adjusting note length instead of moving it + Dim bAdjustUpper As Boolean 'true = Adjusting upper end, false = adjusting lower end + Dim bAdjustSingle As Boolean 'true if there is only one note to be adjusted + Dim tempY As Integer + Dim tempV As Integer + Dim tempX As Integer + Dim tempH As Integer + Dim MiddleButtonLocation As New Point(0, 0) + Dim MiddleButtonClicked As Boolean = False + Dim MouseMoveStatus As Point = New Point(0, 0) 'mouse is moved to which point (For Status Panel) + 'Dim uCol As Integer 'temp variables for undo, original enabled columnindex + 'Dim uVPos As Double 'temp variables for undo, original vposition + 'Dim uPairWithI As Double 'temp variables for undo, original note length + Dim uAdded As Boolean 'temp variables for undo, if undo command is added + 'Dim uNote As Note 'temp variables for undo, original note + Dim SelectedNotes(-1) As Note 'temp notes for undo + Dim ctrlPressed As Boolean = False 'Indicates if the CTRL key is pressed while mousedown + Dim DuplicatedSelectedNotes As Boolean = False 'Indicates if duplicate notes of select/unselect note + + 'Variables for write tool + Dim ShouldDrawTempNote As Boolean = False + Dim SelectedColumn As Integer = -1 + Dim TempVPosition As Double = -1.0# + Dim TempLength As Double = 0.0# + + 'Variables for post effects tool + Dim vSelStart As Double = 192.0# + Dim vSelLength As Double = 0.0# + Dim vSelHalf As Double = 0.0# + Dim vSelMouseOverLine As Integer = 0 '0 = nothing, 1 = start, 2 = half, 3 = end + Dim vSelAdjust As Boolean = False + Dim vSelK() As Note = {} + Dim vSelPStart As Double = 192.0# + Dim vSelPLength As Double = 0.0# + Dim vSelPHalf As Double = 0.0# + + 'Variables for Full-Screen Mode + Dim isFullScreen As Boolean = False + Dim previousWindowState As FormWindowState = FormWindowState.Normal + Dim previousWindowPosition As New Rectangle(0, 0, 0, 0) + + 'Variables misc + Dim menuVPosition As Double = 0.0# + Dim tempResize As Integer = 0 + + '----AutoSave Options + Dim PreviousAutoSavedFileName As String = "" + Dim AutoSaveInterval As Integer = 120000 + + '----ErrorCheck Options + Dim ErrorCheck As Boolean = True + + '----Header Options + Dim hWAV(1295) As String + Dim hBPM(1295) As Long 'x10000 + Dim hSTOP(1295) As Long + Dim hSCROLL(1295) As Long + + '----Grid Options + Dim gSnap As Boolean = True + Dim gShowGrid As Boolean = True 'Grid + Dim gShowSubGrid As Boolean = True 'Sub + Dim gShowBG As Boolean = True 'BG Color + Dim gShowMeasureNumber As Boolean = True 'Measure Label + Dim gShowVerticalLine As Boolean = True 'Vertical + Dim gShowMeasureBar As Boolean = True 'Measure Barline + Dim gShowC As Boolean = True 'Column Caption + Dim gDivide As Integer = 16 + Dim gSub As Integer = 4 + Dim gSlash As Integer = 192 + Dim gxHeight As Single = 1.0! + Dim gxWidth As Single = 1.0! + Dim gWheel As Integer = 96 + Dim gPgUpDn As Integer = 384 + + Dim gDisplayBGAColumn As Boolean = True + Dim gSCROLL As Boolean = True + Dim gSTOP As Boolean = True + Dim gBPM As Boolean = True + 'Dim gA8 As Boolean = False + Dim iPlayer As Integer = 0 + Dim gColumns As Integer = 46 + + '----Visual Options + Dim vo As New visualSettings() + + Public Sub setVO(ByVal xvo As visualSettings) + vo = xvo + End Sub + + '----Preview Options + Structure PlayerArguments + Public Path As String + Public aBegin As String + Public aHere As String + Public aStop As String + Public Sub New(ByVal xPath As String, ByVal xBegin As String, ByVal xHere As String, ByVal xStop As String) + Path = xPath + aBegin = xBegin + aHere = xHere + aStop = xStop + End Sub + End Structure + + Public pArgs() As PlayerArguments = {New PlayerArguments("\uBMplay.exe", + "-P -N0 """"", + "-P -N """"", + "-S"), + New PlayerArguments("\o2play.exe", + "-P -N0 """"", + "-P -N """"", + "-S")} + Public CurrentPlayer As Integer = 0 + Dim PreviewOnClick As Boolean = True + Dim PreviewErrorCheck As Boolean = False + Dim ClickStopPreview As Boolean = True + Dim pTempFileNames() As String = {} + + '----Split Panel Options + Dim PanelWidth() As Single = {0, 100, 0} + Dim PanelHScroll() As Integer = {0, 0, 0} + Dim PanelVScroll() As Integer = {0, 0, 0} + Dim spLock() As Boolean = {False, False, False} + Dim spDiff() As Integer = {0, 0, 0} + Dim PanelFocus As Integer = 1 '0 = Left, 1 = Middle, 2 = Right + Dim spMouseOver As Integer = 1 + + Dim AutoFocusMouseEnter As Boolean = False + Dim FirstClickDisabled As Boolean = True + Dim tempFirstMouseDown As Boolean = False + + Dim spMain() As Panel = {} + + '----Find Delete Replace Options + Dim fdriMesL As Integer + Dim fdriMesU As Integer + Dim fdriLblL As Integer + Dim fdriLblU As Integer + Dim fdriValL As Integer + Dim fdriValU As Integer + Dim fdriCol() As Integer + + + Public Sub New() + InitializeComponent() + Audio.Initialize() + End Sub + + ''' + ''' + ''' + ''' Original horizontal position. + ''' HS.Value + + + Private Function HorizontalPositiontoDisplay(ByVal xHPosition As Integer, ByVal xHSVal As Long) As Integer + Return CInt(xHPosition * gxWidth - xHSVal * gxWidth) + End Function + + ''' + ''' + ''' + ''' Original vertical position. + ''' VS.Value + ''' Height of the panel. (DisplayRectangle, but not ClipRectangle) + + + Private Function NoteRowToPanelHeight(ByVal xVPosition As Double, ByVal xVSVal As Long, ByVal xTHeight As Integer) As Integer + Return xTHeight - CInt((xVPosition + xVSVal) * gxHeight) - 1 + End Function + + Public Function MeasureAtDisplacement(ByVal xVPos As Double) As Integer + 'Return Math.Floor((xVPos + FloatTolerance) / 192) + 'Return Math.Floor(xVPos / 192) + Dim xI1 As Integer + For xI1 = 1 To 999 + If xVPos < MeasureBottom(xI1) Then Exit For + Next + Return xI1 - 1 + End Function + + Private Function GetMaxVPosition() As Double + Return MeasureUpper(999) + End Function + + Private Function SnapToGrid(ByVal xVPos As Double) As Double + Dim xOffset As Double = MeasureBottom(MeasureAtDisplacement(xVPos)) + Dim xRatio As Double = 192.0R / gDivide + Return Math.Floor((xVPos - xOffset) / xRatio) * xRatio + xOffset + End Function + + Private Sub CalculateGreatestVPosition() + 'If K Is Nothing Then Exit Sub + Dim xI1 As Integer + GreatestVPosition = 0 + + If NTInput Then + For xI1 = UBound(Notes) To 0 Step -1 + If Notes(xI1).VPosition + Notes(xI1).Length > GreatestVPosition Then GreatestVPosition = Notes(xI1).VPosition + Notes(xI1).Length + Next + Else + For xI1 = UBound(Notes) To 0 Step -1 + If Notes(xI1).VPosition > GreatestVPosition Then GreatestVPosition = Notes(xI1).VPosition + Next + End If + + Dim xI2 As Integer = -CInt(IIf(GreatestVPosition + 2000 > GetMaxVPosition(), GetMaxVPosition, GreatestVPosition + 2000)) + MainPanelScroll.Minimum = xI2 + LeftPanelScroll.Minimum = xI2 + RightPanelScroll.Minimum = xI2 + End Sub + + + Private Sub SortByVPositionInsertion() 'Insertion Sort + If UBound(Notes) <= 0 Then Exit Sub + Dim xNote As Note + Dim xI1 As Integer + Dim xI2 As Integer + For xI1 = 2 To UBound(Notes) + xNote = Notes(xI1) + For xI2 = xI1 - 1 To 1 Step -1 + If Notes(xI2).VPosition > xNote.VPosition Then + Notes(xI2 + 1) = Notes(xI2) + ' If KMouseDown = xI2 Then KMouseDown += 1 + If xI2 = 1 Then + Notes(xI2) = xNote + ' If KMouseDown = xI1 Then KMouseDown = xI2 + Exit For + End If + Else + Notes(xI2 + 1) = xNote + ' If KMouseDown = xI1 Then KMouseDown = xI2 + 1 + Exit For + End If + Next + Next + + End Sub + + Private Sub SortByVPositionQuick(ByVal xMin As Integer, ByVal xMax As Integer) 'Quick Sort + Dim xNote As Note + Dim iHi As Integer + Dim iLo As Integer + Dim xI1 As Integer + + ' If min >= max, the list contains 0 or 1 items so it is sorted. + If xMin >= xMax Then Exit Sub + + ' Pick the dividing value. + xI1 = CInt((xMax - xMin) / 2) + xMin + xNote = Notes(xI1) + + ' Swap it to the front. + Notes(xI1) = Notes(xMin) + + iLo = xMin + iHi = xMax + Do + ' Look down from hi for a value < med_value. + Do While Notes(iHi).VPosition >= xNote.VPosition + iHi = iHi - 1 + If iHi <= iLo Then Exit Do + Loop + If iHi <= iLo Then + Notes(iLo) = xNote + Exit Do + End If + + ' Swap the lo and hi values. + Notes(iLo) = Notes(iHi) + + ' Look up from lo for a value >= med_value. + iLo = iLo + 1 + Do While Notes(iLo).VPosition < xNote.VPosition + iLo = iLo + 1 + If iLo >= iHi Then Exit Do + Loop + If iLo >= iHi Then + iLo = iHi + Notes(iHi) = xNote + Exit Do + End If + + ' Swap the lo and hi values. + Notes(iHi) = Notes(iLo) + Loop + + ' Sort the two sublists. + SortByVPositionQuick(xMin, iLo - 1) + SortByVPositionQuick(iLo + 1, xMax) + End Sub + + Private Sub SortByVPositionQuick3(ByVal xMin As Integer, ByVal xMax As Integer) + Dim xxMin As Integer + Dim xxMax As Integer + Dim xxMid As Integer + Dim xNote As Note + Dim xNoteMid As Note + Dim xI1 As Integer + Dim xI2 As Integer + Dim xI3 As Integer + + 'If xMax = 0 Then + ' xMin = LBound(K1) + ' xMax = UBound(K1) + 'End If + xxMin = xMin + xxMax = xMax + xxMid = xMax - xMin + 1 + xI1 = CInt(Int(xxMid * Rnd())) + xMin + xI2 = CInt(Int(xxMid * Rnd())) + xMin + xI3 = CInt(Int(xxMid * Rnd())) + xMin + If Notes(xI1).VPosition <= Notes(xI2).VPosition And Notes(xI2).VPosition <= Notes(xI3).VPosition Then + xxMid = xI2 + Else + If Notes(xI2).VPosition <= Notes(xI1).VPosition And Notes(xI1).VPosition <= Notes(xI3).VPosition Then + xxMid = xI1 + Else + xxMid = xI3 + End If + End If + xNoteMid = Notes(xxMid) + Do + Do While Notes(xxMin).VPosition < xNoteMid.VPosition And xxMin < xMax + xxMin = xxMin + 1 + Loop + Do While xNoteMid.VPosition < Notes(xxMax).VPosition And xxMax > xMin + xxMax = xxMax - 1 + Loop + If xxMin <= xxMax Then + xNote = Notes(xxMin) + Notes(xxMin) = Notes(xxMax) + Notes(xxMax) = xNote + xxMin = xxMin + 1 + xxMax = xxMax - 1 + End If + Loop Until xxMin > xxMax + If xxMax - xMin < xMax - xxMin Then + If xMin < xxMax Then SortByVPositionQuick3(xMin, xxMax) + If xxMin < xMax Then SortByVPositionQuick3(xxMin, xMax) + Else + If xxMin < xMax Then SortByVPositionQuick3(xxMin, xMax) + If xMin < xxMax Then SortByVPositionQuick3(xMin, xxMax) + End If + End Sub + + + Private Sub UpdateMeasureBottom() + MeasureBottom(0) = 0.0# + For xI1 As Integer = 0 To 998 + MeasureBottom(xI1 + 1) = MeasureBottom(xI1) + MeasureLength(xI1) + Next + End Sub + + Private Function PathIsValid(ByVal sPath As String) As Boolean + Return File.Exists(sPath) Or Directory.Exists(sPath) + End Function + + Public Function PrevCodeToReal(ByVal InitStr As String) As String + Dim xFileName As String = IIf(Not PathIsValid(FileName), + IIf(InitPath = "", My.Application.Info.DirectoryPath, InitPath), + ExcludeFileName(FileName)) _ + & "\___TempBMS.bms" + Dim xMeasure As Integer = MeasureAtDisplacement(Math.Abs(PanelVScroll(PanelFocus))) + Dim xS1 As String = Replace(InitStr, "", My.Application.Info.DirectoryPath) + Dim xS2 As String = Replace(xS1, "", xMeasure) + Dim xS3 As String = Replace(xS2, "", xFileName) + Return xS3 + End Function + + Private Sub SetFileName(ByVal xFileName As String) + FileName = xFileName.Trim + InitPath = ExcludeFileName(FileName) + SetIsSaved(IsSaved) + End Sub + + Private Sub SetIsSaved(ByVal isSaved As Boolean) + 'pttl.Refresh() + 'pIsSaved.Visible = Not xBool + Dim xVersion As String = My.Application.Info.Version.Major & "." & My.Application.Info.Version.Minor & + IIf(My.Application.Info.Version.Build = 0, "", "." & My.Application.Info.Version.Build) + Text = IIf(isSaved, "", "*") & GetFileName(FileName) & " - " & My.Application.Info.Title & " " & xVersion + Me.IsSaved = isSaved + End Sub + + Private Sub PreviewNote(ByVal xFileLocation As String, ByVal bStop As Boolean) + If bStop Then + Audio.StopPlaying() + End If + Audio.Play(xFileLocation) + End Sub + + Private Sub AddNote(note As Note, + Optional ByVal xSelected As Boolean = False, + Optional ByVal OverWrite As Boolean = True, + Optional ByVal SortAndUpdatePairing As Boolean = True) + + If note.VPosition < 0 Or note.VPosition >= GetMaxVPosition() Then Exit Sub + + Dim xI1 As Integer = 1 + + If OverWrite Then + Do While xI1 <= UBound(Notes) + If Notes(xI1).VPosition = note.VPosition And + Notes(xI1).ColumnIndex = note.ColumnIndex Then + RemoveNote(xI1) + Else + xI1 += 1 + End If + Loop + End If + + ReDim Preserve Notes(UBound(Notes) + 1) + note.Selected = note.Selected And nEnabled(note.ColumnIndex) + Notes(UBound(Notes)) = note + + If SortAndUpdatePairing Then SortByVPositionInsertion() : UpdatePairing() + CalculateTotalPlayableNotes() + End Sub + + Private Sub RemoveNote(ByVal I As Integer, Optional ByVal SortAndUpdatePairing As Boolean = True) + KMouseOver = -1 + Dim xI2 As Integer + + If TBWavIncrease.Checked Then + If Notes(I).Value = LWAV.SelectedIndex * 10000 Then + DecreaseCurrentWav() + End If + End If + + For xI2 = I + 1 To UBound(Notes) + Notes(xI2 - 1) = Notes(xI2) + Next + ReDim Preserve Notes(UBound(Notes) - 1) + If SortAndUpdatePairing Then SortByVPositionInsertion() : UpdatePairing() + + End Sub + + Private Sub AddNotesFromClipboard(Optional ByVal xSelected As Boolean = True, Optional ByVal SortAndUpdatePairing As Boolean = True) + Dim xStrLine() As String = Split(Clipboard.GetText, vbCrLf) + + Dim xI1 As Integer + For xI1 = 0 To UBound(Notes) + Notes(xI1).Selected = False + Next + + Dim xVS As Long = PanelVScroll(PanelFocus) + Dim xTempVP As Double + Dim xKbu() As Note = Notes + + If xStrLine(0) = "iBMSC Clipboard Data" Then + If NTInput Then ReDim Preserve Notes(0) + + 'paste + Dim xStrSub() As String + For xI1 = 1 To UBound(xStrLine) + If xStrLine(xI1).Trim = "" Then Continue For + xStrSub = Split(xStrLine(xI1), " ") + xTempVP = Val(xStrSub(1)) + MeasureBottom(MeasureAtDisplacement(-xVS) + 1) + If UBound(xStrSub) = 5 And xTempVP >= 0 And xTempVP < GetMaxVPosition() Then + ReDim Preserve Notes(UBound(Notes) + 1) + With Notes(UBound(Notes)) + .ColumnIndex = Val(xStrSub(0)) + .VPosition = xTempVP + .Value = Val(xStrSub(2)) + .LongNote = CBool(Val(xStrSub(3))) + .Hidden = CBool(Val(xStrSub(4))) + .Landmine = CBool(Val(xStrSub(5))) + .Selected = xSelected + End With + End If + Next + + 'convert + If NTInput Then + ConvertBMSE2NT() + + For xI1 = 1 To UBound(Notes) + Notes(xI1 - 1) = Notes(xI1) + Next + ReDim Preserve Notes(UBound(Notes) - 1) + + Dim xKn() As Note = Notes + Notes = xKbu + + Dim xIStart As Integer = Notes.Length + ReDim Preserve Notes(UBound(Notes) + xKn.Length) + + For xI1 = xIStart To UBound(Notes) + Notes(xI1) = xKn(xI1 - xIStart) + Next + End If + + ElseIf xStrLine(0) = "iBMSC Clipboard Data xNT" Then + If Not NTInput Then ReDim Preserve Notes(0) + + 'paste + Dim xStrSub() As String + For xI1 = 1 To UBound(xStrLine) + If xStrLine(xI1).Trim = "" Then Continue For + xStrSub = Split(xStrLine(xI1), " ") + xTempVP = Val(xStrSub(1)) + MeasureBottom(MeasureAtDisplacement(-xVS) + 1) + If UBound(xStrSub) = 5 And xTempVP >= 0 And xTempVP < GetMaxVPosition() Then + ReDim Preserve Notes(UBound(Notes) + 1) + With Notes(UBound(Notes)) + .ColumnIndex = Val(xStrSub(0)) + .VPosition = xTempVP + .Value = Val(xStrSub(2)) + .Length = Val(xStrSub(3)) + .Hidden = CBool(Val(xStrSub(4))) + .Landmine = CBool(Val(xStrSub(5))) + .Selected = xSelected + End With + End If + Next + + 'convert + If Not NTInput Then + ConvertNT2BMSE() + + For xI1 = 1 To UBound(Notes) + Notes(xI1 - 1) = Notes(xI1) + Next + ReDim Preserve Notes(UBound(Notes) - 1) + + Dim xKn() As Note = Notes + Notes = xKbu + + Dim xIStart As Integer = Notes.Length + ReDim Preserve Notes(UBound(Notes) + xKn.Length) + + For xI1 = xIStart To UBound(Notes) + Notes(xI1) = xKn(xI1 - xIStart) + Next + End If + + ElseIf xStrLine(0) = "BMSE ClipBoard Object Data Format" Then + If NTInput Then ReDim Preserve Notes(0) + + 'paste + For xI1 = 1 To UBound(xStrLine) + ' zdr: holy crap this is obtuse + Dim posStr = Mid(xStrLine(xI1), 5, 7) + Dim vPos = Val(posStr) + MeasureBottom(MeasureAtDisplacement(-xVS) + 1) + + Dim bmsIdent = Mid(xStrLine(xI1), 1, 3) + Dim lineCol = BMSEChannelToColumnIndex(bmsIdent) + + Dim Value = Val(Mid(xStrLine(xI1), 12)) * 10000 + + Dim attribute = Mid(xStrLine(xI1), 4, 1) + + Dim validCol = Len(xStrLine(xI1)) > 11 And lineCol > 0 + Dim inRange = vPos >= 0 And vPos < GetMaxVPosition() + If validCol And inRange Then + ReDim Preserve Notes(UBound(Notes) + 1) + + With Notes(UBound(Notes)) + .ColumnIndex = lineCol + .VPosition = vPos + .Value = Value + .LongNote = attribute = "2" + .Hidden = attribute = "1" + .Selected = xSelected And nEnabled(.ColumnIndex) + End With + End If + Next + + 'convert + If NTInput Then + ConvertBMSE2NT() + + For xI1 = 1 To UBound(Notes) + Notes(xI1 - 1) = Notes(xI1) + Next + ReDim Preserve Notes(UBound(Notes) - 1) + + Dim xKn() As Note = Notes + Notes = xKbu + + Dim xIStart As Integer = Notes.Length + ReDim Preserve Notes(UBound(Notes) + xKn.Length) + + For xI1 = xIStart To UBound(Notes) + Notes(xI1) = xKn(xI1 - xIStart) + Next + End If + End If + + If SortAndUpdatePairing Then SortByVPositionInsertion() : UpdatePairing() + CalculateTotalPlayableNotes() + End Sub + + Private Sub CopyNotes(Optional ByVal Unselect As Boolean = True) + Dim xStrAll As String = "iBMSC Clipboard Data" & IIf(NTInput, " xNT", "") + Dim xI1 As Integer + Dim MinMeasure As Double = 999 + + For xI1 = 1 To UBound(Notes) + If Notes(xI1).Selected And MeasureAtDisplacement(Notes(xI1).VPosition) < MinMeasure Then MinMeasure = MeasureAtDisplacement(Notes(xI1).VPosition) + Next + MinMeasure = MeasureBottom(MinMeasure) + + If Not NTInput Then + For xI1 = 1 To UBound(Notes) + If Notes(xI1).Selected Then + xStrAll &= vbCrLf & Notes(xI1).ColumnIndex.ToString & " " & + (Notes(xI1).VPosition - MinMeasure).ToString & " " & + Notes(xI1).Value.ToString & " " & + CInt(Notes(xI1).LongNote).ToString & " " & + CInt(Notes(xI1).Hidden).ToString & " " & + CInt(Notes(xI1).Landmine).ToString + Notes(xI1).Selected = Not Unselect + End If + Next + + Else + For xI1 = 1 To UBound(Notes) + If Notes(xI1).Selected Then + xStrAll &= vbCrLf & Notes(xI1).ColumnIndex.ToString & " " & + (Notes(xI1).VPosition - MinMeasure).ToString & " " & + Notes(xI1).Value.ToString & " " & + Notes(xI1).Length.ToString & " " & + CInt(Notes(xI1).Hidden).ToString & " " & + CInt(Notes(xI1).Landmine).ToString + Notes(xI1).Selected = Not Unselect + End If + Next + End If + + Clipboard.SetText(xStrAll) + End Sub + + Private Sub RemoveNotes(Optional ByVal SortAndUpdatePairing As Boolean = True) + If UBound(Notes) = 0 Then Exit Sub + + KMouseOver = -1 + Dim xI1 As Integer = 1 + Dim xI2 As Integer + Do + If Notes(xI1).Selected Then + For xI2 = xI1 + 1 To UBound(Notes) + Notes(xI2 - 1) = Notes(xI2) + Next + ReDim Preserve Notes(UBound(Notes) - 1) + xI1 = 0 + End If + xI1 += 1 + Loop While xI1 < UBound(Notes) + 1 + If SortAndUpdatePairing Then SortByVPositionInsertion() : UpdatePairing() + CalculateTotalPlayableNotes() + End Sub + + Private Function EnabledColumnIndexToColumnArrayIndex(ByVal cEnabled As Integer) As Integer + Dim xI1 As Integer = 0 + Do + If xI1 >= gColumns Then Exit Do + If Not nEnabled(xI1) Then cEnabled += 1 + If xI1 >= cEnabled Then Exit Do + xI1 += 1 + Loop + Return cEnabled + End Function + + Private Function ColumnArrayIndexToEnabledColumnIndex(ByVal cReal As Integer) As Integer + Dim xI1 As Integer + For xI1 = 0 To cReal - 1 + If Not nEnabled(xI1) Then cReal -= 1 + Next + Return cReal + End Function + + Private Sub Form1_FormClosed(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosedEventArgs) Handles Me.FormClosed + If pTempFileNames IsNot Nothing Then + For Each xStr As String In pTempFileNames + IO.File.Delete(xStr) + Next + End If + If PreviousAutoSavedFileName <> "" Then IO.File.Delete(PreviousAutoSavedFileName) + End Sub + + Private Sub Form1_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing + If Not IsSaved Then + Dim xStr As String = Strings.Messages.SaveOnExit + If e.CloseReason = CloseReason.WindowsShutDown Then xStr = Strings.Messages.SaveOnExit1 + If e.CloseReason = CloseReason.TaskManagerClosing Then xStr = Strings.Messages.SaveOnExit2 + + Dim xResult As MsgBoxResult = MsgBox(xStr, MsgBoxStyle.YesNoCancel Or MsgBoxStyle.Question, Me.Text) + + If xResult = MsgBoxResult.Yes Then + If ExcludeFileName(FileName) = "" Then + Dim xDSave As New SaveFileDialog + xDSave.Filter = Strings.FileType._bms & "|*.bms;*.bme;*.bml;*.pms;*.txt|" & + Strings.FileType.BMS & "|*.bms|" & + Strings.FileType.BME & "|*.bme|" & + Strings.FileType.BML & "|*.bml|" & + Strings.FileType.PMS & "|*.pms|" & + Strings.FileType.TXT & "|*.txt|" & + Strings.FileType._all & "|*.*" + xDSave.DefaultExt = "bms" + xDSave.InitialDirectory = InitPath + + If xDSave.ShowDialog = Windows.Forms.DialogResult.Cancel Then e.Cancel = True : Exit Sub + SetFileName(xDSave.FileName) + End If + Dim xStrAll As String = SaveBMS() + My.Computer.FileSystem.WriteAllText(FileName, xStrAll, False, TextEncoding) + NewRecent(FileName) + If BeepWhileSaved Then Beep() + End If + + If xResult = MsgBoxResult.Cancel Then e.Cancel = True + End If + + If Not e.Cancel Then + 'If SaveTheme Then + ' My.Computer.FileSystem.WriteAllText(My.Application.Info.DirectoryPath & "\Skin.cff", SaveSkinCFF, False, System.Text.Encoding.Unicode) + 'Else + ' My.Computer.FileSystem.WriteAllText(My.Application.Info.DirectoryPath & "\Skin.cff", "", False, System.Text.Encoding.Unicode) + 'End If + ' + 'My.Computer.FileSystem.WriteAllText(My.Application.Info.DirectoryPath & "\PlayerArgs.cff", SavePlayerCFF, False, System.Text.Encoding.Unicode) + 'My.Computer.FileSystem.WriteAllText(My.Application.Info.DirectoryPath & "\Config.cff", SaveCFF, False, System.Text.Encoding.Unicode) + 'My.Computer.FileSystem.WriteAllText(My.Application.Info.DirectoryPath & "\PreConfig.cff", "", False, System.Text.Encoding.Unicode) + Me.SaveSettings(My.Application.Info.DirectoryPath & "\iBMSC.Settings.xml", False) + End If + End Sub + + Private Function FilterFileBySupported(ByVal xFile() As String, ByVal xFilter() As String) As String() + Dim xPath(-1) As String + For xI1 As Integer = 0 To UBound(xFile) + If My.Computer.FileSystem.FileExists(xFile(xI1)) And Array.IndexOf(xFilter, Path.GetExtension(xFile(xI1))) <> -1 Then + ReDim Preserve xPath(UBound(xPath) + 1) + xPath(UBound(xPath)) = xFile(xI1) + End If + + If My.Computer.FileSystem.DirectoryExists(xFile(xI1)) Then + Dim xFileNames() As FileInfo = My.Computer.FileSystem.GetDirectoryInfo(xFile(xI1)).GetFiles() + For Each xStr As FileInfo In xFileNames + If Array.IndexOf(xFilter, xStr.Extension) = -1 Then Continue For + ReDim Preserve xPath(UBound(xPath) + 1) + xPath(UBound(xPath)) = xStr.FullName + Next + End If + Next + + Return xPath + End Function + + Private Sub InitializeNewBMS() + 'ReDim K(0) + 'With K(0) + ' .ColumnIndex = niBPM + ' .VPosition = -1 + ' .LongNote = False + ' .Selected = False + ' .Value = 1200000 + 'End With + + THTitle.Text = "" + THArtist.Text = "" + THGenre.Text = "" + THBPM.Value = 120 + If CHPlayer.SelectedIndex = -1 Then CHPlayer.SelectedIndex = 0 + CHRank.SelectedIndex = 3 + THPlayLevel.Text = "" + THSubTitle.Text = "" + THSubArtist.Text = "" + THStageFile.Text = "" + THBanner.Text = "" + THBackBMP.Text = "" + CHDifficulty.SelectedIndex = 0 + THExRank.Text = "" + THTotal.Text = "" + THComment.Text = "" + 'THLnType.Text = "1" + CHLnObj.SelectedIndex = 0 + + TExpansion.Text = "" + + LBeat.Items.Clear() + For xI1 As Integer = 0 To 999 + MeasureLength(xI1) = 192.0R + MeasureBottom(xI1) = xI1 * 192.0R + LBeat.Items.Add(Add3Zeros(xI1) & ": 1 ( 4 / 4 )") + Next + End Sub + + Private Sub InitializeOpenBMS() + CHPlayer.SelectedIndex = 0 + 'THLnType.Text = "" + End Sub + + Private Sub Form1_DragEnter(ByVal sender As Object, ByVal e As DragEventArgs) Handles Me.DragEnter + If e.Data.GetDataPresent(DataFormats.FileDrop) Then + e.Effect = DragDropEffects.Copy + DDFileName = FilterFileBySupported(CType(e.Data.GetData(DataFormats.FileDrop), String()), SupportedFileExtension) + Else + e.Effect = DragDropEffects.None + End If + RefreshPanelAll() + End Sub + + Private Sub Form1_DragLeave(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.DragLeave + ReDim DDFileName(-1) + RefreshPanelAll() + End Sub + + Private Sub Form1_DragDrop(ByVal sender As Object, ByVal e As DragEventArgs) Handles Me.DragDrop + ReDim DDFileName(-1) + If Not e.Data.GetDataPresent(DataFormats.FileDrop) Then Return + + Dim xOrigPath() As String = CType(e.Data.GetData(DataFormats.FileDrop), String()) + Dim xPath() As String = FilterFileBySupported(xOrigPath, SupportedFileExtension) + If xPath.Length > 0 Then + Dim xProg As New fLoadFileProgress(xPath, IsSaved) + xProg.ShowDialog(Me) + End If + + RefreshPanelAll() + End Sub + + Private Sub setFullScreen(ByVal value As Boolean) + If value Then + If Me.WindowState = FormWindowState.Minimized Then Exit Sub + + Me.SuspendLayout() + previousWindowPosition.Location = Me.Location + previousWindowPosition.Size = Me.Size + previousWindowState = Me.WindowState + + Me.WindowState = FormWindowState.Normal + Me.FormBorderStyle = Windows.Forms.FormBorderStyle.None + Me.WindowState = FormWindowState.Maximized + ToolStripContainer1.TopToolStripPanelVisible = False + + Me.ResumeLayout() + isFullScreen = True + Else + Me.SuspendLayout() + Me.FormBorderStyle = Windows.Forms.FormBorderStyle.Sizable + ToolStripContainer1.TopToolStripPanelVisible = True + Me.WindowState = FormWindowState.Normal + + Me.WindowState = previousWindowState + If Me.WindowState = FormWindowState.Normal Then + Me.Location = previousWindowPosition.Location + Me.Size = previousWindowPosition.Size + End If + + Me.ResumeLayout() + isFullScreen = False + End If + End Sub + + Private Sub Form1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown + Select Case e.KeyCode + Case Keys.F11 + setFullScreen(Not isFullScreen) + End Select + End Sub + + Private Sub Form1_KeyUp(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyUp + RefreshPanelAll() + POStatusRefresh() + End Sub + + Friend Sub ReadFile(ByVal xPath As String) + Select Case LCase(Path.GetExtension(xPath)) + Case ".bms", ".bme", ".bml", ".pms", ".txt" + OpenBMS(My.Computer.FileSystem.ReadAllText(xPath, TextEncoding)) + ClearUndo() + NewRecent(xPath) + SetFileName(xPath) + SetIsSaved(True) + + Case ".sm" + If OpenSM(My.Computer.FileSystem.ReadAllText(xPath, TextEncoding)) Then Return + InitPath = ExcludeFileName(xPath) + ClearUndo() + SetFileName("Untitled.bms") + SetIsSaved(False) + + Case ".ibmsc" + OpeniBMSC(xPath) + InitPath = ExcludeFileName(xPath) + NewRecent(xPath) + SetFileName("Imported_" & GetFileName(xPath)) + SetIsSaved(False) + + End Select + End Sub + + + Public Function GCD(ByVal NumA As Double, ByVal NumB As Double) As Double + Dim xNMax As Double = NumA + Dim xNMin As Double = NumB + If NumA < NumB Then + xNMax = NumB + xNMin = NumA + End If + Do While xNMin >= BMSGridLimit + GCD = xNMax - Math.Floor(xNMax / xNMin) * xNMin + xNMax = xNMin + xNMin = GCD + Loop + GCD = xNMax + End Function + + Private Shared Function LoadCursorFromFile(ByVal fileName As String) As IntPtr + End Function + Public Shared Function ActuallyLoadCursor(ByVal path As String) As Cursor + Return New Cursor(LoadCursorFromFile(path)) + End Function + + Private Sub Unload() Handles MyBase.Disposed + Audio.Finalize() + End Sub + + Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load + 'On Error Resume Next + Me.TopMost = True + Me.SuspendLayout() + Me.Visible = False + + 'POBMP.Dispose() + 'POBGA.Dispose() + + 'Me.MaximizedBounds = Screen.GetWorkingArea(Me) + 'Me.Visible = False + SetFileName(FileName) + 'Me.ShowCaption = False + 'SetWindowText(Me.Handle.ToInt32, FileName) + + InitializeNewBMS() + 'nBeatD.SelectedIndex = 4 + + Try + Dim xTempFileName As String = RandomFileName(".cur") + My.Computer.FileSystem.WriteAllBytes(xTempFileName, My.Resources.CursorResizeDown, False) + Dim xDownCursor As Cursor = ActuallyLoadCursor(xTempFileName) + My.Computer.FileSystem.WriteAllBytes(xTempFileName, My.Resources.CursorResizeLeft, False) + Dim xLeftCursor As Cursor = ActuallyLoadCursor(xTempFileName) + My.Computer.FileSystem.WriteAllBytes(xTempFileName, My.Resources.CursorResizeRight, False) + Dim xRightCursor As Cursor = ActuallyLoadCursor(xTempFileName) + File.Delete(xTempFileName) + + POWAVResizer.Cursor = xDownCursor + POBeatResizer.Cursor = xDownCursor + POExpansionResizer.Cursor = xDownCursor + + POptionsResizer.Cursor = xLeftCursor + + SpL.Cursor = xRightCursor + SpR.Cursor = xLeftCursor + Catch ex As Exception + + End Try + + spMain = New Panel() {PMainInL, PMainIn, PMainInR} + + Dim xI1 As Integer + + sUndo(0) = New UndoRedo.NoOperation + sUndo(1) = New UndoRedo.NoOperation + sRedo(0) = New UndoRedo.NoOperation + sRedo(1) = New UndoRedo.NoOperation + sI = 0 + + LWAV.Items.Clear() + For xI1 = 1 To 1295 + LWAV.Items.Add(C10to36(xI1) & ":") + Next + LWAV.SelectedIndex = 0 + CHPlayer.SelectedIndex = 0 + + CalculateGreatestVPosition() + TBLangRefresh_Click(TBLangRefresh, Nothing) + TBThemeRefresh_Click(TBThemeRefresh, Nothing) + + POHeaderPart2.Visible = False + POGridPart2.Visible = False + POWaveFormPart2.Visible = False + + If My.Computer.FileSystem.FileExists(My.Application.Info.DirectoryPath & "\iBMSC.Settings.xml") Then + LoadSettings(My.Application.Info.DirectoryPath & "\iBMSC.Settings.xml") + 'Else + '---- Settings for first-time start-up --------------------------------------------------------------------------- + 'Me.LoadLocale(My.Application.Info.DirectoryPath & "\Data\chs.Lang.xml") + '----------------------------------------------------------------------------------------------------------------- + End If + 'On Error GoTo 0 + SetIsSaved(True) + + Dim xStr() As String = Environment.GetCommandLineArgs + 'Dim xStr() As String = {Application.ExecutablePath, "C:\Users\User\Desktop\yang run xuan\SoFtwArES\Games\O2Mania\music\SHOOT!\shoot! -NM-.bms"} + + If xStr.Length = 2 Then + ReadFile(xStr(1)) + If LCase(Path.GetExtension(xStr(1))) = ".ibmsc" AndAlso GetFileName(xStr(1)).StartsWith("AutoSave_", True, Nothing) Then GoTo 1000 + End If + + 'pIsSaved.Visible = Not IsSaved + IsInitializing = False + + If Process.GetProcessesByName(Process.GetCurrentProcess.ProcessName).Length > 1 Then GoTo 1000 + Dim xFiles() As FileInfo = My.Computer.FileSystem.GetDirectoryInfo(My.Application.Info.DirectoryPath).GetFiles("AutoSave_*.IBMSC") + If xFiles Is Nothing OrElse xFiles.Length = 0 Then GoTo 1000 + + 'Me.TopMost = True + If MsgBox(Replace(Strings.Messages.RestoreAutosavedFile, "{}", xFiles.Length), MsgBoxStyle.YesNo Or MsgBoxStyle.MsgBoxSetForeground) = MsgBoxResult.Yes Then + For Each xF As FileInfo In xFiles + 'MsgBox(xF.FullName) + System.Diagnostics.Process.Start(Application.ExecutablePath, """" & xF.FullName & """") + Next + End If + + For Each xF As FileInfo In xFiles + ReDim Preserve pTempFileNames(UBound(pTempFileNames) + 1) + pTempFileNames(UBound(pTempFileNames)) = xF.FullName + Next + +1000: + IsInitializing = False + POStatusRefresh() + Me.ResumeLayout() + + tempResize = Me.WindowState + Me.TopMost = False + Me.WindowState = tempResize + + Me.Visible = True + End Sub + + Private Sub UpdatePairing() + Dim i As Integer, j As Integer + + If NTInput Then + For i = 0 To UBound(Notes) + Notes(i).HasError = False + Notes(i).LNPair = 0 + If Notes(i).Length < 0 Then Notes(i).Length = 0 + Next + + For i = 1 To UBound(Notes) + If Notes(i).Length <> 0 Then + For j = i + 1 To UBound(Notes) + If Notes(j).VPosition > Notes(i).VPosition + Notes(i).Length Then Exit For + If Notes(j).ColumnIndex = Notes(i).ColumnIndex Then Notes(j).HasError = True + Next + Else + For j = i + 1 To UBound(Notes) + If Notes(j).VPosition > Notes(i).VPosition Then Exit For + If Notes(j).ColumnIndex = Notes(i).ColumnIndex Then Notes(j).HasError = True + Next + + If Notes(i).Value \ 10000 = LnObj AndAlso Not IsColumnNumeric(Notes(i).ColumnIndex) Then + For j = i - 1 To 1 Step -1 + If Notes(j).ColumnIndex <> Notes(i).ColumnIndex Then Continue For + If Notes(j).Hidden Then Continue For + + If Notes(j).Length <> 0 OrElse Notes(j).Value \ 10000 = LnObj Then + Notes(i).HasError = True + Else + Notes(i).LNPair = j + Notes(j).LNPair = i + End If + Exit For + Next + If j = 0 Then + Notes(i).HasError = True + End If + End If + End If + Next + + Else + For i = 0 To UBound(Notes) + Notes(i).HasError = False + Notes(i).LNPair = 0 + Next + + For i = 1 To UBound(Notes) + + If Notes(i).LongNote Then + 'LongNote: If overlapping a note, then error. + ' Else if already matched by a LongNote below, then match it. + ' Otherwise match anything above. + ' If ShortNote above then error on above. + ' If nothing above then error. + For j = i - 1 To 1 Step -1 + If Notes(j).ColumnIndex <> Notes(i).ColumnIndex Then Continue For + If Notes(j).VPosition = Notes(i).VPosition Then + Notes(i).HasError = True + GoTo EndSearch + ElseIf Notes(j).LongNote And Notes(j).LNPair = i Then + Notes(i).LNPair = j + GoTo EndSearch + Else + Exit For + End If + Next + + For j = i + 1 To UBound(Notes) + If Notes(j).ColumnIndex <> Notes(i).ColumnIndex Then Continue For + Notes(i).LNPair = j + Notes(j).LNPair = i + If Not Notes(j).LongNote AndAlso Notes(j).Value \ 10000 <> LnObj Then + Notes(j).HasError = True + End If + Exit For + Next + + If j = UBound(Notes) + 1 Then + Notes(i).HasError = True + End If +EndSearch: + + ElseIf Notes(i).Value \ 10000 = LnObj And + Not IsColumnNumeric(Notes(i).ColumnIndex) Then + 'LnObj: Match anything below. + ' If matching a LongNote not matching back, then error on below. + ' If overlapping a note, then error. + ' If mathcing a LnObj below, then error on below. + ' If nothing below, then error. + For j = i - 1 To 1 Step -1 + If Notes(i).ColumnIndex <> Notes(j).ColumnIndex Then Continue For + If Notes(j).LNPair <> 0 And Notes(j).LNPair <> i Then + Notes(j).HasError = True + End If + Notes(i).LNPair = j + Notes(j).LNPair = i + If Notes(i).VPosition = Notes(j).VPosition Then + Notes(i).HasError = True + End If + If Notes(j).Value \ 10000 = LnObj Then + Notes(j).HasError = True + End If + Exit For + Next + + If j = 0 Then + Notes(i).HasError = True + End If + + Else + 'ShortNote: If overlapping a note, then error. + For j = i - 1 To 1 Step -1 + If Notes(j).VPosition < Notes(i).VPosition Then Exit For + If Notes(j).ColumnIndex <> Notes(i).ColumnIndex Then Continue For + Notes(i).HasError = True + Exit For + Next + + End If + Next + + + End If + + Dim currentMS = 0.0# + Dim currentBPM = Notes(0).Value / 10000 + Dim currentBPMVPosition = 0.0# + For i = 1 To UBound(Notes) + If Notes(i).ColumnIndex = niBPM Then + currentMS += (Notes(i).VPosition - currentBPMVPosition) / currentBPM * 1250 + currentBPM = Notes(i).Value / 10000 + currentBPMVPosition = Notes(i).VPosition + End If + 'K(i).TimeOffset = currentMS + (K(i).VPosition - currentBPMVPosition) / currentBPM * 1250 + Next + End Sub + + + + Public Sub ExceptionSave(ByVal Path As String) + SaveiBMSC(Path) + End Sub + + ''' + ''' True if pressed cancel. False elsewise. + ''' + ''' True if pressed cancel. False elsewise. + + Private Function ClosingPopSave() As Boolean + If Not IsSaved Then + Dim xResult As MsgBoxResult = MsgBox(Strings.Messages.SaveOnExit, MsgBoxStyle.YesNoCancel Or MsgBoxStyle.Question, Me.Text) + + If xResult = MsgBoxResult.Yes Then + If ExcludeFileName(FileName) = "" Then + Dim xDSave As New SaveFileDialog + xDSave.Filter = Strings.FileType._bms & "|*.bms;*.bme;*.bml;*.pms;*.txt|" & + Strings.FileType.BMS & "|*.bms|" & + Strings.FileType.BME & "|*.bme|" & + Strings.FileType.BML & "|*.bml|" & + Strings.FileType.PMS & "|*.pms|" & + Strings.FileType.TXT & "|*.txt|" & + Strings.FileType._all & "|*.*" + xDSave.DefaultExt = "bms" + xDSave.InitialDirectory = InitPath + + If xDSave.ShowDialog = Windows.Forms.DialogResult.Cancel Then Return True + SetFileName(xDSave.FileName) + End If + Dim xStrAll As String = SaveBMS() + My.Computer.FileSystem.WriteAllText(FileName, xStrAll, False, TextEncoding) + NewRecent(FileName) + If BeepWhileSaved Then Beep() + End If + + If xResult = MsgBoxResult.Cancel Then Return True + End If + Return False + End Function + + Private Sub TBNew_Click(ByVal sender As System.Object, ByVal e As EventArgs) Handles TBNew.Click, mnNew.Click + + 'KMouseDown = -1 + ReDim SelectedNotes(-1) + KMouseOver = -1 + If ClosingPopSave() Then Exit Sub + + ClearUndo() + InitializeNewBMS() + + ReDim Notes(0) + ReDim mColumn(999) + ReDim hWAV(1295) + ReDim hBPM(1295) 'x10000 + ReDim hSTOP(1295) + ReDim hSCROLL(1295) + THGenre.Text = "" + THTitle.Text = "" + THArtist.Text = "" + THPlayLevel.Text = "" + + With Notes(0) + .ColumnIndex = niBPM + .VPosition = -1 + '.LongNote = False + '.Selected = False + .Value = 1200000 + End With + THBPM.Value = 120 + + LWAV.Items.Clear() + Dim xI1 As Integer + For xI1 = 1 To 1295 + LWAV.Items.Add(C10to36(xI1) & ": " & hWAV(xI1)) + Next + LWAV.SelectedIndex = 0 + + SetFileName("Untitled.bms") + SetIsSaved(True) + 'pIsSaved.Visible = Not IsSaved + + CalculateTotalPlayableNotes() + CalculateGreatestVPosition() + RefreshPanelAll() + POStatusRefresh() + End Sub + + Private Sub TBNewC_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) 'Handles TBNewC.Click + 'KMouseDown = -1 + ReDim SelectedNotes(-1) + KMouseOver = -1 + If ClosingPopSave() Then Exit Sub + + ClearUndo() + + ReDim Notes(0) + ReDim mColumn(999) + ReDim hWAV(1295) + ReDim hBPM(1295) 'x10000 + ReDim hSTOP(1295) + ReDim hSCROLL(1295) + THGenre.Text = "" + THTitle.Text = "" + THArtist.Text = "" + THPlayLevel.Text = "" + + With Notes(0) + .ColumnIndex = niBPM + .VPosition = -1 + '.LongNote = False + '.Selected = False + .Value = 1200000 + End With + THBPM.Value = 120 + + SetFileName("Untitled.bms") + SetIsSaved(True) + 'pIsSaved.Visible = Not IsSaved + + If MsgBox("Please copy your code to clipboard and click OK.", MsgBoxStyle.OkCancel, "Create from code") = MsgBoxResult.Cancel Then Exit Sub + OpenBMS(Clipboard.GetText) + End Sub + + Private Sub TBOpen_ButtonClick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBOpen.ButtonClick, mnOpen.Click + 'KMouseDown = -1 + ReDim SelectedNotes(-1) + KMouseOver = -1 + If ClosingPopSave() Then Exit Sub + + Dim xDOpen As New OpenFileDialog + xDOpen.Filter = Strings.FileType._bms & "|*.bms;*.bme;*.bml;*.pms;*.txt" + xDOpen.DefaultExt = "bms" + xDOpen.InitialDirectory = IIf(ExcludeFileName(FileName) = "", InitPath, ExcludeFileName(FileName)) + + If xDOpen.ShowDialog = Windows.Forms.DialogResult.Cancel Then Exit Sub + InitPath = ExcludeFileName(xDOpen.FileName) + OpenBMS(My.Computer.FileSystem.ReadAllText(xDOpen.FileName, TextEncoding)) + ClearUndo() + SetFileName(xDOpen.FileName) + NewRecent(FileName) + SetIsSaved(True) + 'pIsSaved.Visible = Not IsSaved + End Sub + + Private Sub TBImportIBMSC_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBImportIBMSC.Click, mnImportIBMSC.Click + 'KMouseDown = -1 + ReDim SelectedNotes(-1) + KMouseOver = -1 + If ClosingPopSave() Then Return + + Dim xDOpen As New OpenFileDialog + xDOpen.Filter = Strings.FileType.IBMSC & "|*.ibmsc" + xDOpen.DefaultExt = "ibmsc" + xDOpen.InitialDirectory = IIf(ExcludeFileName(FileName) = "", InitPath, ExcludeFileName(FileName)) + + If xDOpen.ShowDialog = Windows.Forms.DialogResult.Cancel Then Return + InitPath = ExcludeFileName(xDOpen.FileName) + SetFileName("Imported_" & GetFileName(xDOpen.FileName)) + OpeniBMSC(xDOpen.FileName) + NewRecent(xDOpen.FileName) + SetIsSaved(False) + 'pIsSaved.Visible = Not IsSaved + End Sub + + Private Sub TBImportSM_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBImportSM.Click, mnImportSM.Click + 'KMouseDown = -1 + ReDim SelectedNotes(-1) + KMouseOver = -1 + If ClosingPopSave() Then Exit Sub + + Dim xDOpen As New OpenFileDialog + xDOpen.Filter = Strings.FileType.SM & "|*.sm" + xDOpen.DefaultExt = "sm" + xDOpen.InitialDirectory = IIf(ExcludeFileName(FileName) = "", InitPath, ExcludeFileName(FileName)) + + If xDOpen.ShowDialog = Windows.Forms.DialogResult.Cancel Then Exit Sub + If OpenSM(My.Computer.FileSystem.ReadAllText(xDOpen.FileName, TextEncoding)) Then Exit Sub + InitPath = ExcludeFileName(xDOpen.FileName) + SetFileName("Untitled.bms") + ClearUndo() + SetIsSaved(False) + 'pIsSaved.Visible = Not IsSaved + End Sub + + Private Sub TBSave_ButtonClick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBSave.ButtonClick, mnSave.Click + 'KMouseDown = -1 + ReDim SelectedNotes(-1) + KMouseOver = -1 + + If ExcludeFileName(FileName) = "" Then + Dim xDSave As New SaveFileDialog + xDSave.Filter = Strings.FileType._bms & "|*.bms;*.bme;*.bml;*.pms;*.txt|" & + Strings.FileType.BMS & "|*.bms|" & + Strings.FileType.BME & "|*.bme|" & + Strings.FileType.BML & "|*.bml|" & + Strings.FileType.PMS & "|*.pms|" & + Strings.FileType.TXT & "|*.txt|" & + Strings.FileType._all & "|*.*" + xDSave.DefaultExt = "bms" + xDSave.InitialDirectory = InitPath + + If xDSave.ShowDialog = Windows.Forms.DialogResult.Cancel Then Exit Sub + InitPath = ExcludeFileName(xDSave.FileName) + SetFileName(xDSave.FileName) + End If + Dim xStrAll As String = SaveBMS() + My.Computer.FileSystem.WriteAllText(FileName, xStrAll, False, TextEncoding) + NewRecent(FileName) + SetFileName(FileName) + SetIsSaved(True) + 'pIsSaved.Visible = Not IsSaved + If BeepWhileSaved Then Beep() + End Sub + + Private Sub TBSaveAs_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBSaveAs.Click, mnSaveAs.Click + 'KMouseDown = -1 + ReDim SelectedNotes(-1) + KMouseOver = -1 + + Dim xDSave As New SaveFileDialog + xDSave.Filter = Strings.FileType._bms & "|*.bms;*.bme;*.bml;*.pms;*.txt|" & + Strings.FileType.BMS & "|*.bms|" & + Strings.FileType.BME & "|*.bme|" & + Strings.FileType.BML & "|*.bml|" & + Strings.FileType.PMS & "|*.pms|" & + Strings.FileType.TXT & "|*.txt|" & + Strings.FileType._all & "|*.*" + xDSave.DefaultExt = "bms" + xDSave.InitialDirectory = IIf(ExcludeFileName(FileName) = "", InitPath, ExcludeFileName(FileName)) + + If xDSave.ShowDialog = Windows.Forms.DialogResult.Cancel Then Exit Sub + InitPath = ExcludeFileName(xDSave.FileName) + SetFileName(xDSave.FileName) + Dim xStrAll As String = SaveBMS() + My.Computer.FileSystem.WriteAllText(FileName, xStrAll, False, TextEncoding) + NewRecent(FileName) + SetFileName(FileName) + SetIsSaved(True) + 'pIsSaved.Visible = Not IsSaved + If BeepWhileSaved Then Beep() + End Sub + + Private Sub TBExport_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBExport.Click, mnExport.Click + 'KMouseDown = -1 + ReDim SelectedNotes(-1) + KMouseOver = -1 + + Dim xDSave As New SaveFileDialog + xDSave.Filter = Strings.FileType.IBMSC & "|*.ibmsc" + xDSave.DefaultExt = "ibmsc" + xDSave.InitialDirectory = IIf(ExcludeFileName(FileName) = "", InitPath, ExcludeFileName(FileName)) + If xDSave.ShowDialog = Windows.Forms.DialogResult.Cancel Then Exit Sub + + SaveiBMSC(xDSave.FileName) + 'My.Computer.FileSystem.WriteAllText(xDSave.FileName, xStrAll, False, TextEncoding) + NewRecent(FileName) + If BeepWhileSaved Then Beep() + End Sub + + + + Private Sub VSGotFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles MainPanelScroll.GotFocus, LeftPanelScroll.GotFocus, RightPanelScroll.GotFocus + PanelFocus = sender.Tag + spMain(PanelFocus).Focus() + End Sub + + Private Sub VSValueChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles MainPanelScroll.ValueChanged, LeftPanelScroll.ValueChanged, RightPanelScroll.ValueChanged + Dim iI As Integer = sender.Tag + + ' az: We got a wheel event when we're zooming in/out + If My.Computer.Keyboard.CtrlKeyDown Then + sender.Value = VSValue ' Undo the scroll + Exit Sub + End If + + If iI = PanelFocus And Not LastMouseDownLocation = New Point(-1, -1) And Not VSValue = -1 Then LastMouseDownLocation.Y += (VSValue - sender.Value) * gxHeight + PanelVScroll(iI) = sender.Value + + If spLock((iI + 1) Mod 3) Then + Dim xVS As Integer = PanelVScroll(iI) + spDiff(iI) + If xVS > 0 Then xVS = 0 + If xVS < MainPanelScroll.Minimum Then xVS = MainPanelScroll.Minimum + Select Case iI + Case 0 : MainPanelScroll.Value = xVS + Case 1 : RightPanelScroll.Value = xVS + Case 2 : LeftPanelScroll.Value = xVS + End Select + End If + + If spLock((iI + 2) Mod 3) Then + Dim xVS As Integer = PanelVScroll(iI) - spDiff((iI + 2) Mod 3) + If xVS > 0 Then xVS = 0 + If xVS < MainPanelScroll.Minimum Then xVS = MainPanelScroll.Minimum + Select Case iI + Case 0 : RightPanelScroll.Value = xVS + Case 1 : LeftPanelScroll.Value = xVS + Case 2 : MainPanelScroll.Value = xVS + End Select + End If + + spDiff(iI) = PanelVScroll((iI + 1) Mod 3) - PanelVScroll(iI) + spDiff((iI + 2) Mod 3) = PanelVScroll(iI) - PanelVScroll((iI + 2) Mod 3) + + VSValue = sender.Value + RefreshPanel(iI, spMain(iI).DisplayRectangle) + End Sub + + Private Sub cVSLock_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cVSLockL.CheckedChanged, cVSLock.CheckedChanged, cVSLockR.CheckedChanged + Dim iI As Integer = sender.Tag + spLock(iI) = sender.Checked + If Not spLock(iI) Then Return + + spDiff(iI) = PanelVScroll((iI + 1) Mod 3) - PanelVScroll(iI) + spDiff((iI + 2) Mod 3) = PanelVScroll(iI) - PanelVScroll((iI + 2) Mod 3) + + 'POHeaderB.Text = spDiff(0) & "_" & spDiff(1) & "_" & spDiff(2) + End Sub + + Private Sub HSGotFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles HS.GotFocus, HSL.GotFocus, HSR.GotFocus + PanelFocus = sender.Tag + spMain(PanelFocus).Focus() + End Sub + + Private Sub HSValueChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles HS.ValueChanged, HSL.ValueChanged, HSR.ValueChanged + Dim iI As Integer = sender.Tag + If Not LastMouseDownLocation = New Point(-1, -1) And Not HSValue = -1 Then LastMouseDownLocation.X += (HSValue - sender.Value) * gxWidth + PanelHScroll(iI) = sender.Value + HSValue = sender.Value + RefreshPanel(iI, spMain(iI).DisplayRectangle) + End Sub + + Private Sub TBSelect_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBSelect.Click, mnSelect.Click + TBSelect.Checked = True + TBWrite.Checked = False + TBTimeSelect.Checked = False + mnSelect.Checked = True + mnWrite.Checked = False + mnTimeSelect.Checked = False + + FStatus2.Visible = False + FStatus.Visible = True + + ShouldDrawTempNote = False + SelectedColumn = -1 + TempVPosition = -1 + TempLength = 0 + + vSelStart = MeasureBottom(MeasureAtDisplacement(-PanelVScroll(PanelFocus)) + 1) + vSelLength = 0 + + RefreshPanelAll() + POStatusRefresh() + End Sub + + Private Sub TBWrite_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBWrite.Click, mnWrite.Click + TBSelect.Checked = False + TBWrite.Checked = True + TBTimeSelect.Checked = False + mnSelect.Checked = False + mnWrite.Checked = True + mnTimeSelect.Checked = False + + FStatus2.Visible = False + FStatus.Visible = True + + ShouldDrawTempNote = True + SelectedColumn = -1 + TempVPosition = -1 + TempLength = 0 + + vSelStart = MeasureBottom(MeasureAtDisplacement(-PanelVScroll(PanelFocus)) + 1) + vSelLength = 0 + + RefreshPanelAll() + POStatusRefresh() + End Sub + + Private Sub TBPostEffects_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBTimeSelect.Click, mnTimeSelect.Click + TBSelect.Checked = False + TBWrite.Checked = False + TBTimeSelect.Checked = True + mnSelect.Checked = False + mnWrite.Checked = False + mnTimeSelect.Checked = True + + FStatus.Visible = False + FStatus2.Visible = True + + vSelMouseOverLine = 0 + ShouldDrawTempNote = False + SelectedColumn = -1 + TempVPosition = -1 + TempLength = 0 + ValidateSelection() + + Dim xI1 As Integer + For xI1 = 0 To UBound(Notes) + Notes(xI1).Selected = False + Next + RefreshPanelAll() + POStatusRefresh() + End Sub + + Private Sub CGHeight_ValueChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles CGHeight.ValueChanged + gxHeight = CSng(CGHeight.Value) + CGHeight2.Value = IIf(CGHeight.Value * 4 < CGHeight2.Maximum, CDec(CGHeight.Value * 4), CGHeight2.Maximum) + RefreshPanelAll() + End Sub + + Private Sub CGHeight2_Scroll(ByVal sender As Object, ByVal e As System.EventArgs) Handles CGHeight2.Scroll + CGHeight.Value = CGHeight2.Value / 4 + End Sub + + Private Sub CGWidth_ValueChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles CGWidth.ValueChanged + gxWidth = CSng(CGWidth.Value) + CGWidth2.Value = IIf(CGWidth.Value * 4 < CGWidth2.Maximum, CDec(CGWidth.Value * 4), CGWidth2.Maximum) + + HS.LargeChange = PMainIn.Width / gxWidth + If HS.Value > HS.Maximum - HS.LargeChange + 1 Then HS.Value = HS.Maximum - HS.LargeChange + 1 + HSL.LargeChange = PMainInL.Width / gxWidth + If HSL.Value > HSL.Maximum - HSL.LargeChange + 1 Then HSL.Value = HSL.Maximum - HSL.LargeChange + 1 + HSR.LargeChange = PMainInR.Width / gxWidth + If HSR.Value > HSR.Maximum - HSR.LargeChange + 1 Then HSR.Value = HSR.Maximum - HSR.LargeChange + 1 + + RefreshPanelAll() + End Sub + + Private Sub CGWidth2_Scroll(ByVal sender As Object, ByVal e As System.EventArgs) Handles CGWidth2.Scroll + CGWidth.Value = CGWidth2.Value / 4 + End Sub + + Private Sub CGDivide_ValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CGDivide.ValueChanged + gDivide = CGDivide.Value + RefreshPanelAll() + End Sub + Private Sub CGSub_ValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CGSub.ValueChanged + gSub = CGSub.Value + RefreshPanelAll() + End Sub + Private Sub BGSlash_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BGSlash.Click + Dim xd As Integer = Val(InputBox(Strings.Messages.PromptSlashValue, , gSlash)) + If xd = 0 Then Exit Sub + If xd > CGDivide.Maximum Then xd = CGDivide.Maximum + If xd < CGDivide.Minimum Then xd = CGDivide.Minimum + gSlash = xd + End Sub + + + Private Sub CGSnap_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CGSnap.CheckedChanged + gSnap = CGSnap.Checked + RefreshPanelAll() + End Sub + + Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick + Dim xI1 As Integer + + Select Case PanelFocus + Case 0 + With LeftPanelScroll + xI1 = .Value + (tempY / 5) / gxHeight + If xI1 > 0 Then xI1 = 0 + If xI1 < .Minimum Then xI1 = .Minimum + .Value = xI1 + End With + With HSL + xI1 = .Value + (tempX / 10) / gxWidth + If xI1 > .Maximum - .LargeChange + 1 Then xI1 = .Maximum - .LargeChange + 1 + If xI1 < .Minimum Then xI1 = .Minimum + .Value = xI1 + End With + + Case 1 + With MainPanelScroll + xI1 = .Value + (tempY / 5) / gxHeight + If xI1 > 0 Then xI1 = 0 + If xI1 < .Minimum Then xI1 = .Minimum + .Value = xI1 + End With + With HS + xI1 = .Value + (tempX / 10) / gxWidth + If xI1 > .Maximum - .LargeChange + 1 Then xI1 = .Maximum - .LargeChange + 1 + If xI1 < .Minimum Then xI1 = .Minimum + .Value = xI1 + End With + + Case 2 + With RightPanelScroll + xI1 = .Value + (tempY / 5) / gxHeight + If xI1 > 0 Then xI1 = 0 + If xI1 < .Minimum Then xI1 = .Minimum + .Value = xI1 + End With + With HSR + xI1 = .Value + (tempX / 10) / gxWidth + If xI1 > .Maximum - .LargeChange + 1 Then xI1 = .Maximum - .LargeChange + 1 + If xI1 < .Minimum Then xI1 = .Minimum + .Value = xI1 + End With + End Select + + Dim xMEArgs As New System.Windows.Forms.MouseEventArgs(Windows.Forms.MouseButtons.Left, 0, MouseMoveStatus.X, MouseMoveStatus.Y, 0) + PMainInMouseMove(spMain(PanelFocus), xMEArgs) + + End Sub + + Private Sub TimerMiddle_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TimerMiddle.Tick + If Not MiddleButtonClicked Then TimerMiddle.Enabled = False : Return + + Dim xI1 As Integer + + Select Case PanelFocus + Case 0 + With LeftPanelScroll + xI1 = .Value + (Cursor.Position.Y - MiddleButtonLocation.Y) / 5 / gxHeight + If xI1 > 0 Then xI1 = 0 + If xI1 < .Minimum Then xI1 = .Minimum + .Value = xI1 + End With + With HSL + xI1 = .Value + (Cursor.Position.X - MiddleButtonLocation.X) / 5 / gxWidth + If xI1 > .Maximum - .LargeChange + 1 Then xI1 = .Maximum - .LargeChange + 1 + If xI1 < .Minimum Then xI1 = .Minimum + .Value = xI1 + End With + + Case 1 + With MainPanelScroll + xI1 = .Value + (Cursor.Position.Y - MiddleButtonLocation.Y) / 5 / gxHeight + If xI1 > 0 Then xI1 = 0 + If xI1 < .Minimum Then xI1 = .Minimum + .Value = xI1 + End With + With HS + xI1 = .Value + (Cursor.Position.X - MiddleButtonLocation.X) / 5 / gxWidth + If xI1 > .Maximum - .LargeChange + 1 Then xI1 = .Maximum - .LargeChange + 1 + If xI1 < .Minimum Then xI1 = .Minimum + .Value = xI1 + End With + + Case 2 + With RightPanelScroll + xI1 = .Value + (Cursor.Position.Y - MiddleButtonLocation.Y) / 5 / gxHeight + If xI1 > 0 Then xI1 = 0 + If xI1 < .Minimum Then xI1 = .Minimum + .Value = xI1 + End With + With HSR + xI1 = .Value + (Cursor.Position.X - MiddleButtonLocation.X) / 5 / gxWidth + If xI1 > .Maximum - .LargeChange + 1 Then xI1 = .Maximum - .LargeChange + 1 + If xI1 < .Minimum Then xI1 = .Minimum + .Value = xI1 + End With + End Select + + Dim xMEArgs As New System.Windows.Forms.MouseEventArgs(Windows.Forms.MouseButtons.Left, 0, MouseMoveStatus.X, MouseMoveStatus.Y, 0) + PMainInMouseMove(spMain(PanelFocus), xMEArgs) + End Sub + + Private Sub ValidateWavListView() + Try + Dim xRect As Rectangle = LWAV.GetItemRectangle(LWAV.SelectedIndex) + If xRect.Top + xRect.Height > LWAV.DisplayRectangle.Height Then SendMessage(LWAV.Handle, &H115, 1, 0) + Catch ex As Exception + End Try + End Sub + + Private Sub LWAV_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles LWAV.Click + If TBWrite.Checked Then FSW.Text = C10to36(LWAV.SelectedIndex + 1) + + PreviewNote("", True) + If Not PreviewOnClick Then Exit Sub + If hWAV(LWAV.SelectedIndex + 1) = "" Then Exit Sub + + Dim xFileLocation As String = IIf(ExcludeFileName(FileName) = "", InitPath, ExcludeFileName(FileName)) & "\" & hWAV(LWAV.SelectedIndex + 1) + PreviewNote(xFileLocation, False) + End Sub + + Private Sub LWAV_DoubleClick(ByVal sender As Object, ByVal e As System.EventArgs) Handles LWAV.DoubleClick + Dim xDWAV As New OpenFileDialog + xDWAV.DefaultExt = "wav" + xDWAV.Filter = Strings.FileType._wave & "|*.wav;*.ogg;*.mp3|" & + Strings.FileType.WAV & "|*.wav|" & + Strings.FileType.OGG & "|*.ogg|" & + Strings.FileType.MP3 & "|*.mp3|" & + Strings.FileType._all & "|*.*" + xDWAV.InitialDirectory = IIf(ExcludeFileName(FileName) = "", InitPath, ExcludeFileName(FileName)) + + If xDWAV.ShowDialog = Windows.Forms.DialogResult.Cancel Then Exit Sub + InitPath = ExcludeFileName(xDWAV.FileName) + hWAV(LWAV.SelectedIndex + 1) = GetFileName(xDWAV.FileName) + LWAV.Items.Item(LWAV.SelectedIndex) = C10to36(LWAV.SelectedIndex + 1) & ": " & GetFileName(xDWAV.FileName) + If IsSaved Then SetIsSaved(False) + End Sub + + Private Sub LWAV_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles LWAV.KeyDown + Select Case e.KeyCode + Case Keys.Delete + hWAV(LWAV.SelectedIndex + 1) = "" + LWAV.Items.Item(LWAV.SelectedIndex) = C10to36(LWAV.SelectedIndex + 1) & ": " + If IsSaved Then SetIsSaved(False) + End Select + End Sub + + Private Sub TBErrorCheck_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBErrorCheck.Click, mnErrorCheck.Click + ErrorCheck = sender.Checked + TBErrorCheck.Checked = ErrorCheck + mnErrorCheck.Checked = ErrorCheck + TBErrorCheck.Image = IIf(TBErrorCheck.Checked, My.Resources.x16CheckError, My.Resources.x16CheckErrorN) + mnErrorCheck.Image = IIf(TBErrorCheck.Checked, My.Resources.x16CheckError, My.Resources.x16CheckErrorN) + RefreshPanelAll() + End Sub + + Private Sub TBPreviewOnClick_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBPreviewOnClick.Click, mnPreviewOnClick.Click + PreviewNote("", True) + PreviewOnClick = sender.Checked + TBPreviewOnClick.Checked = PreviewOnClick + mnPreviewOnClick.Checked = PreviewOnClick + TBPreviewOnClick.Image = IIf(PreviewOnClick, My.Resources.x16PreviewOnClick, My.Resources.x16PreviewOnClickN) + mnPreviewOnClick.Image = IIf(PreviewOnClick, My.Resources.x16PreviewOnClick, My.Resources.x16PreviewOnClickN) + End Sub + + 'Private Sub TBPreviewErrorCheck_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) + ' PreviewErrorCheck = TBPreviewErrorCheck.Checked + ' TBPreviewErrorCheck.Image = IIf(PreviewErrorCheck, My.Resources.x16PreviewCheck, My.Resources.x16PreviewCheckN) + 'End Sub + + Private Sub TBShowFileName_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBShowFileName.Click, mnShowFileName.Click + ShowFileName = sender.Checked + TBShowFileName.Checked = ShowFileName + mnShowFileName.Checked = ShowFileName + TBShowFileName.Image = IIf(ShowFileName, My.Resources.x16ShowFileName, My.Resources.x16ShowFileNameN) + mnShowFileName.Image = IIf(ShowFileName, My.Resources.x16ShowFileName, My.Resources.x16ShowFileNameN) + RefreshPanelAll() + End Sub + + Private Sub TBCut_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBCut.Click, mnCut.Click + Dim xUndo As UndoRedo.LinkedURCmd = Nothing + Dim xRedo As UndoRedo.LinkedURCmd = New UndoRedo.Void + Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo + Me.RedoRemoveNoteSelected(True, xUndo, xRedo) + 'Dim xRedo As String = sCmdKDs() + 'Dim xUndo As String = sCmdKs(True) + + CopyNotes(False) + RemoveNotes(False) + AddUndo(xUndo, xBaseRedo.Next) + + SortByVPositionInsertion() + UpdatePairing() + CalculateTotalPlayableNotes() + RefreshPanelAll() + POStatusRefresh() + CalculateGreatestVPosition() + End Sub + + Private Sub TBCopy_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBCopy.Click, mnCopy.Click + CopyNotes() + RefreshPanelAll() + POStatusRefresh() + End Sub + + Private Sub TBPaste_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBPaste.Click, mnPaste.Click + AddNotesFromClipboard() + + Dim xUndo As UndoRedo.LinkedURCmd = Nothing + Dim xRedo As UndoRedo.LinkedURCmd = New UndoRedo.Void + Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo + Me.RedoAddNoteSelected(True, xUndo, xRedo) + AddUndo(xUndo, xBaseRedo.Next) + + 'AddUndo(sCmdKDs(), sCmdKs(True)) + + SortByVPositionInsertion() + UpdatePairing() + CalculateTotalPlayableNotes() + RefreshPanelAll() + POStatusRefresh() + CalculateGreatestVPosition() + End Sub + + 'Private Function pArgPath(ByVal I As Integer) + ' Return Mid(pArgs(I), 1, InStr(pArgs(I), vbCrLf) - 1) + 'End Function + + Private Function GetFileName(ByVal s As String) As String + Dim fslash As Integer = InStrRev(s, "/") + Dim bslash As Integer = InStrRev(s, "\") + Return Mid(s, IIf(fslash > bslash, fslash, bslash) + 1) + End Function + + Private Function ExcludeFileName(ByVal s As String) As String + Dim fslash As Integer = InStrRev(s, "/") + Dim bslash As Integer = InStrRev(s, "\") + If (bslash Or fslash) = 0 Then Return "" + Return Mid(s, 1, IIf(fslash > bslash, fslash, bslash) - 1) + End Function + + Private Sub PlayerMissingPrompt() + Dim xArg As MainWindow.PlayerArguments = pArgs(CurrentPlayer) + MsgBox(Strings.Messages.CannotFind.Replace("{}", PrevCodeToReal(xArg.Path)) & vbCrLf & + Strings.Messages.PleaseRespecifyPath, MsgBoxStyle.Critical, Strings.Messages.PlayerNotFound) + + Dim xDOpen As New OpenFileDialog + xDOpen.InitialDirectory = IIf(ExcludeFileName(PrevCodeToReal(xArg.Path)) = "", + My.Application.Info.DirectoryPath, + ExcludeFileName(PrevCodeToReal(xArg.Path))) + xDOpen.FileName = PrevCodeToReal(xArg.Path) + xDOpen.Filter = Strings.FileType.EXE & "|*.exe" + xDOpen.DefaultExt = "exe" + If xDOpen.ShowDialog = Windows.Forms.DialogResult.Cancel Then Exit Sub + + 'pArgs(CurrentPlayer) = Replace(xDOpen.FileName, My.Application.Info.DirectoryPath, "") & _ + ' Mid(pArgs(CurrentPlayer), InStr(pArgs(CurrentPlayer), vbCrLf)) + 'xStr = Split(pArgs(CurrentPlayer), vbCrLf) + pArgs(CurrentPlayer).Path = Replace(xDOpen.FileName, My.Application.Info.DirectoryPath, "") + xArg = pArgs(CurrentPlayer) + End Sub + + Private Sub TBPlay_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBPlay.Click, mnPlay.Click + 'Dim xStr() As String = Split(pArgs(CurrentPlayer), vbCrLf) + Dim xArg As MainWindow.PlayerArguments = pArgs(CurrentPlayer) + + If Not File.Exists(PrevCodeToReal(xArg.Path)) Then + PlayerMissingPrompt() + xArg = pArgs(CurrentPlayer) + End If + + ' az: Treat it like we cancelled the operation + If Not File.Exists(PrevCodeToReal(xArg.Path)) Then + Exit Sub + End If + + Dim xStrAll As String = SaveBMS() + Dim xFileName As String = IIf(Not PathIsValid(FileName), + IIf(InitPath = "", My.Application.Info.DirectoryPath, InitPath), + ExcludeFileName(FileName)) & "\___TempBMS.bms" + My.Computer.FileSystem.WriteAllText(xFileName, xStrAll, False, TextEncoding) + + AddTempFileList(xFileName) + System.Diagnostics.Process.Start(PrevCodeToReal(xArg.Path), PrevCodeToReal(xArg.aHere)) + End Sub + + Private Sub TBPlayB_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBPlayB.Click, mnPlayB.Click + 'Dim xStr() As String = Split(pArgs(CurrentPlayer), vbCrLf) + Dim xArg As MainWindow.PlayerArguments = pArgs(CurrentPlayer) + + If Not File.Exists(PrevCodeToReal(xArg.Path)) Then + PlayerMissingPrompt() + xArg = pArgs(CurrentPlayer) + End If + + If Not File.Exists(PrevCodeToReal(xArg.Path)) Then + Exit Sub + End If + + Dim xStrAll As String = SaveBMS() + Dim xFileName As String = IIf(Not PathIsValid(FileName), + IIf(InitPath = "", My.Application.Info.DirectoryPath, InitPath), + ExcludeFileName(FileName)) & "\___TempBMS.bms" + My.Computer.FileSystem.WriteAllText(xFileName, xStrAll, False, TextEncoding) + + AddTempFileList(xFileName) + + System.Diagnostics.Process.Start(PrevCodeToReal(xArg.Path), PrevCodeToReal(xArg.aBegin)) + End Sub + + Private Sub TBStop_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBStop.Click, mnStop.Click + 'Dim xStr() As String = Split(pArgs(CurrentPlayer), vbCrLf) + Dim xArg As MainWindow.PlayerArguments = pArgs(CurrentPlayer) + + If Not File.Exists(PrevCodeToReal(xArg.Path)) Then + PlayerMissingPrompt() + xArg = pArgs(CurrentPlayer) + End If + + If Not File.Exists(PrevCodeToReal(xArg.Path)) Then + Exit Sub + End If + + System.Diagnostics.Process.Start(PrevCodeToReal(xArg.Path), PrevCodeToReal(xArg.aStop)) + End Sub + + Private Sub AddTempFileList(ByVal s As String) + Dim xAdd As Boolean = True + If pTempFileNames IsNot Nothing Then + For Each xStr1 As String In pTempFileNames + If xStr1 = s Then xAdd = False : Exit For + Next + End If + + If xAdd Then + ReDim Preserve pTempFileNames(UBound(pTempFileNames) + 1) + pTempFileNames(UBound(pTempFileNames)) = s + End If + End Sub + + Private Sub TBStatistics_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBStatistics.Click, mnStatistics.Click + SortByVPositionInsertion() + UpdatePairing() + + Dim data(6, 5) As Integer + For i As Integer = 1 To UBound(Notes) + With Notes(i) + Dim row As Integer = -1 + Select Case .ColumnIndex + Case niSCROLL : row = 0 + Case niBPM : row = 1 + Case niSTOP : row = 2 + Case niA1, niA2, niA3, niA4, niA5, niA6, niA7, niA8 : row = 3 + Case niD1, niD2, niD3, niD4, niD5, niD6, niD7, niD8 : row = 4 + Case Is >= niB : row = 5 + Case Else : row = 6 + End Select + + +StartCount: If Not NTInput Then + If Not .LongNote Then data(row, 0) += 1 + If .LongNote Then data(row, 1) += 1 + If .Value \ 10000 = LnObj Then data(row, 2) += 1 + If .Hidden Then data(row, 3) += 1 + If .HasError Then data(row, 4) += 1 + data(row, 5) += 1 + + Else + Dim noteUnit As Integer = 1 + If .Length = 0 Then data(row, 0) += 1 + If .Length <> 0 Then data(row, 1) += 2 : noteUnit = 2 + + If .Value \ 10000 = LnObj Then data(row, 2) += noteUnit + If .Hidden Then data(row, 3) += noteUnit + If .HasError Then data(row, 4) += noteUnit + data(row, 5) += noteUnit + + End If + + If row <> 6 Then row = 6 : GoTo StartCount + End With + Next + + Dim dStat As New dgStatistics(data) + dStat.ShowDialog() + End Sub + + ''' + ''' Remark: Pls sort and updatepairing before this process. + ''' + + Private Sub CalculateTotalPlayableNotes() + Dim xI1 As Integer + Dim xIAll As Integer = 0 + + If Not NTInput Then + For xI1 = 1 To UBound(Notes) + If Notes(xI1).ColumnIndex >= niA1 And Notes(xI1).ColumnIndex <= niD8 Then xIAll += 1 + Next + + Else + For xI1 = 1 To UBound(Notes) + If Notes(xI1).ColumnIndex >= niA1 And Notes(xI1).ColumnIndex <= niD8 Then + xIAll += 1 + If Notes(xI1).Length <> 0 Then xIAll += 1 + End If + Next + End If + + TBTotalValue.Text = xIAll * 7.605 / (0.01 * xIAll + 6.5) + TBStatistics.Text = xIAll + End Sub + + Public Function GetMouseVPosition(Optional snap As Boolean = True) + Dim panHeight = spMain(PanelFocus).Height + Dim panDisplacement = PanelVScroll(PanelFocus) + Dim vpos = (panHeight - panDisplacement * gxHeight - MouseMoveStatus.Y - 1) / gxHeight + If snap Then + Return SnapToGrid(vpos) + Else + Return vpos + End If + End Function + + Private Sub POStatusRefresh() + + If TBSelect.Checked Then + Dim xI1 As Integer = KMouseOver + If xI1 < 0 Then + + TempVPosition = GetMouseVPosition(gSnap) + + SelectedColumn = GetColumnAtX(MouseMoveStatus.X, PanelHScroll(PanelFocus)) + + Dim xMeasure As Integer = MeasureAtDisplacement(TempVPosition) + Dim xMLength As Double = MeasureLength(xMeasure) + Dim xVposMod As Double = TempVPosition - MeasureBottom(xMeasure) + Dim xGCD As Double = GCD(IIf(xVposMod = 0, xMLength, xVposMod), xMLength) + + FSP1.Text = (xVposMod * gDivide / 192).ToString & " / " & (xMLength * gDivide / 192).ToString & " " + FSP2.Text = xVposMod.ToString & " / " & xMLength & " " + FSP3.Text = CInt(xVposMod / xGCD).ToString & " / " & CInt(xMLength / xGCD).ToString & " " + FSP4.Text = TempVPosition.ToString() & " " + TimeStatusLabel.Text = GetTimeFromVPosition(TempVPosition).ToString("F4") + FSC.Text = nTitle(SelectedColumn) + FSW.Text = "" + FSM.Text = Add3Zeros(xMeasure) + FST.Text = "" + FSH.Text = "" + FSE.Text = "" + + Else + Dim xMeasure As Integer = MeasureAtDisplacement(Notes(xI1).VPosition) + Dim xMLength As Double = MeasureLength(xMeasure) + Dim xVposMod As Double = Notes(xI1).VPosition - MeasureBottom(xMeasure) + Dim xGCD As Double = GCD(IIf(xVposMod = 0, xMLength, xVposMod), xMLength) + + FSP1.Text = (xVposMod * gDivide / 192).ToString & " / " & (xMLength * gDivide / 192).ToString & " " + FSP2.Text = xVposMod.ToString & " / " & xMLength & " " + FSP3.Text = CInt(xVposMod / xGCD).ToString & " / " & CInt(xMLength / xGCD).ToString & " " + FSP4.Text = Notes(xI1).VPosition.ToString() & " " + TimeStatusLabel.Text = GetTimeFromVPosition(TempVPosition).ToString("F4") + FSC.Text = nTitle(Notes(xI1).ColumnIndex) + FSW.Text = IIf(IsColumnNumeric(Notes(xI1).ColumnIndex), + Notes(xI1).Value / 10000, + C10to36(Notes(xI1).Value \ 10000)) + FSM.Text = Add3Zeros(xMeasure) + FST.Text = IIf(NTInput, Strings.StatusBar.Length & " = " & Notes(xI1).Length, IIf(Notes(xI1).LongNote, Strings.StatusBar.LongNote, "")) + FSH.Text = IIf(Notes(xI1).Hidden, Strings.StatusBar.Hidden, "") + FSE.Text = IIf(Notes(xI1).HasError, Strings.StatusBar.Err, "") + + End If + + ElseIf TBWrite.Checked Then + If SelectedColumn < 0 Then Exit Sub + + Dim xMeasure As Integer = MeasureAtDisplacement(TempVPosition) + Dim xMLength As Double = MeasureLength(xMeasure) + Dim xVposMod As Double = TempVPosition - MeasureBottom(xMeasure) + Dim xGCD As Double = GCD(IIf(xVposMod = 0, xMLength, xVposMod), xMLength) + + FSP1.Text = (xVposMod * gDivide / 192).ToString & " / " & (xMLength * gDivide / 192).ToString & " " + FSP2.Text = xVposMod.ToString & " / " & xMLength & " " + FSP3.Text = CInt(xVposMod / xGCD).ToString & " / " & CInt(xMLength / xGCD).ToString & " " + FSP4.Text = TempVPosition.ToString() & " " + TimeStatusLabel.Text = GetTimeFromVPosition(TempVPosition).ToString("F4") + FSC.Text = nTitle(SelectedColumn) + FSW.Text = C10to36(LWAV.SelectedIndex + 1) + FSM.Text = Add3Zeros(xMeasure) + FST.Text = IIf(NTInput, TempLength, IIf(My.Computer.Keyboard.ShiftKeyDown, Strings.StatusBar.LongNote, "")) + FSH.Text = IIf(My.Computer.Keyboard.CtrlKeyDown, Strings.StatusBar.Hidden, "") + + ElseIf TBTimeSelect.Checked Then + FSSS.Text = vSelStart + FSSL.Text = vSelLength + FSSH.Text = vSelHalf + + End If + FStatus.Invalidate() + End Sub + + Private Function GetTimeFromVPosition(vpos As Double) As Double + Dim timing_notes = (From note In Notes + Where note.ColumnIndex = niBPM Or note.ColumnIndex = niSTOP + Group By Column = note.ColumnIndex + Into NoteGroups = Group).ToDictionary(Function(x) x.Column, Function(x) x.NoteGroups) + + Dim bpm_notes = timing_notes.Item(niBPM) + + Dim stop_notes As IEnumerable(Of Note) = Nothing + + If timing_notes.ContainsKey(niSTOP) Then + stop_notes = timing_notes.Item(niSTOP) + End If + + + Dim stop_contrib As Double + Dim bpm_contrib As Double + + For i = 0 To bpm_notes.Count() - 1 + ' az: sum bpm contribution first + Dim duration = 0.0 + Dim current_note = bpm_notes.ElementAt(i) + Dim notevpos = Math.Max(0, current_note.VPosition) + + If i + 1 <> bpm_notes.Count() Then + Dim next_note = bpm_notes.ElementAt(i + 1) + duration = next_note.VPosition - notevpos + Else + duration = vpos - notevpos + End If + + Dim current_bps = 60 / (current_note.Value / 10000) + bpm_contrib += current_bps * duration / 48 + + If stop_notes Is Nothing Then Continue For + + Dim stops = From stp In stop_notes + Where stp.VPosition >= notevpos And + stp.VPosition < notevpos + duration + + Dim stop_beats = stops.Sum(Function(x) x.Value / 10000.0) / 48 + stop_contrib += current_bps * stop_beats + + Next + + Return stop_contrib + bpm_contrib + End Function + + Private Sub POBStorm_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles POBStorm.Click + + End Sub + + Private Sub POBMirror_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles POBMirror.Click + Dim xI1 As Integer + Dim xI2 As Integer + Dim xUndo As UndoRedo.LinkedURCmd = Nothing + Dim xRedo As UndoRedo.LinkedURCmd = New UndoRedo.Void + Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo + 'xRedo &= sCmdKM(niA1, .VPosition, .Value, IIf(NTInput, .Length, .LongNote), .Hidden, RealColumnToEnabled(niA7) - RealColumnToEnabled(niA1), 0, True) & vbCrLf + 'xUndo &= sCmdKM(niA7, .VPosition, .Value, IIf(NTInput, .Length, .LongNote), .Hidden, RealColumnToEnabled(niA1) - RealColumnToEnabled(niA7), 0, True) & vbCrLf + + ' Array 0: Unmodified array + ' Array 1: Modified array based on range + ' Array R: Array 1 reversed + Dim xniArray0 = New Integer() {niA1, niA2, niA3, niA4, niA5, niA6, niA7, niA8, niD1, niD2, niD3, niD4, niD5, niD6, niD7, niD8} + ' Dim xniArray1 = Integer() ' xniArray0 + + ' New function: Declare an array to see the range of selected notes. B columns ignored. + + Dim xRangeL As Integer = niB ' Big number + Dim xRangeR As Integer = 0 ' Smol number + + ' Range finder + For xI1 = 1 To UBound(Notes) + If Not Notes(xI1).Selected Then Continue For + If xRangeL > Notes(xI1).ColumnIndex Then xRangeL = Notes(xI1).ColumnIndex + If xRangeR < Notes(xI1).ColumnIndex Then xRangeR = Notes(xI1).ColumnIndex + Next + + ' Modify xniArray based on range + ' Out of range + If xRangeL > niD8 Or xRangeR < niA1 Then GoTo DoNothing + + ' Semi-in Range + ' Cut off left side + If xRangeL < niA1 Then + xRangeL = 0 + GoTo MirrorSkip1 + End If + + For xI1 = 0 To xniArray0.Length + If xniArray0(xI1) = xRangeL Then + xRangeL = xI1 + Exit For + End If + Next + +MirrorSkip1: + ' Cut off right side + If xRangeR > niD8 Then + xRangeR = xniArray0.Length + GoTo MirrorSkip2 + End If + + For xI1 = 0 To xniArray0.Length + If xniArray0(xI1) = xRangeR Then + xRangeR = xI1 + 1 + Exit For + End If + Next + +MirrorSkip2: + + Dim xniArray1(xRangeR - xRangeL - 1) + For xI1 = 0 To xRangeR - xRangeL - 1 + xniArray1(xI1) = xniArray0(xI1 + xRangeL) + Next + + Dim xniArrayR = xniArray1.Reverse() + Dim xniArrayLen = xniArray1.Length + + Dim xCol As Integer + For xI1 = 1 To UBound(Notes) + If Not Notes(xI1).Selected Then Continue For + + xCol = Notes(xI1).ColumnIndex + ' MsgBox("Test" & "xCol: " & xCol & " xI1: " & xI1) + For xI2 = 0 To xniArrayLen - 1 + ' MsgBox("Test 2 xI2: " & xI2) + If xCol = xniArray1(xI2) Then + xCol = xniArrayR(xI2) + Exit For + End If + + Next + + Me.RedoMoveNote(Notes(xI1), xCol, Notes(xI1).VPosition, xUndo, xRedo) + Notes(xI1).ColumnIndex = xCol + Next + +DoNothing: + + AddUndo(xUndo, xBaseRedo.Next) + UpdatePairing() + RefreshPanelAll() + End Sub + + + Private Sub POBFlip_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles POBFlip.Click + Dim xI1 As Integer + Dim xI2 As Integer + Dim xUndo As UndoRedo.LinkedURCmd = Nothing + Dim xRedo As UndoRedo.LinkedURCmd = New UndoRedo.Void + Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo + + ' Array 1: Unmodified array + ' Array R: Flipped array + Dim xniArray1 = New Integer() {niA1, niA2, niA3, niA4, niA5, niA6, niA7, niA8, niD1, niD2, niD3, niD4, niD5, niD6, niD7, niD8} + Dim xniArrayR = New Integer() {niD8, niD1, niD2, niD3, niD4, niD5, niD6, niD7, niA2, niA3, niA4, niA5, niA6, niA7, niA8, niA1} + + Dim xniArrayLen = xniArray1.Length + + Dim xCol As Integer + For xI1 = 1 To UBound(Notes) + If Not Notes(xI1).Selected Then Continue For + + xCol = Notes(xI1).ColumnIndex + For xI2 = 0 To xniArrayLen - 1 + If xCol = xniArray1(xI2) Then + xCol = xniArrayR(xI2) + Exit For + End If + + Next + + Me.RedoMoveNote(Notes(xI1), xCol, Notes(xI1).VPosition, xUndo, xRedo) + Notes(xI1).ColumnIndex = xCol + Next + + AddUndo(xUndo, xBaseRedo.Next) + UpdatePairing() + RefreshPanelAll() + End Sub + + Private Sub POBRandom_Click(sender As Object, e As EventArgs) Handles POBRandom.Click + Dim xI1 As Integer + Dim xI2 As Integer + Dim xUndo As UndoRedo.LinkedURCmd = Nothing + Dim xRedo As UndoRedo.LinkedURCmd = New UndoRedo.Void + Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo + 'xRedo &= sCmdKM(niA1, .VPosition, .Value, IIf(NTInput, .Length, .LongNote), .Hidden, RealColumnToEnabled(niA7) - RealColumnToEnabled(niA1), 0, True) & vbCrLf + 'xUndo &= sCmdKM(niA7, .VPosition, .Value, IIf(NTInput, .Length, .LongNote), .Hidden, RealColumnToEnabled(niA1) - RealColumnToEnabled(niA7), 0, True) & vbCrLf + + ' Array 0: Unmodified array + ' Array 1: Modified array based on range + ' Array R: Array 1 reversed + Dim xniArray0 = New Integer() {niA1, niA2, niA3, niA4, niA5, niA6, niA7, niA8, niD1, niD2, niD3, niD4, niD5, niD6, niD7, niD8} + ' Dim xniArray1 = Integer() ' xniArray0 + + ' New function: Declare an array to see the range of selected notes. B columns ignored. + + Dim xRangeL As Integer = niB ' Big number + Dim xRangeR As Integer = 0 ' Smol number + + ' Range finder + For xI1 = 1 To UBound(Notes) + If Not Notes(xI1).Selected Then Continue For + If xRangeL > Notes(xI1).ColumnIndex Then xRangeL = Notes(xI1).ColumnIndex + If xRangeR < Notes(xI1).ColumnIndex Then xRangeR = Notes(xI1).ColumnIndex + Next + + ' Modify xniArray based on range + ' Out of range + If xRangeL > niD8 Or xRangeR < niA1 Then GoTo DoNothing + + ' Semi-in Range + ' Cut off left side + If xRangeL < niA1 Then + xRangeL = 0 + GoTo Skip1 + End If + + For xI1 = 0 To xniArray0.Length + If xniArray0(xI1) = xRangeL Then + xRangeL = xI1 + Exit For + End If + Next + +Skip1: + ' Cut off right side + If xRangeR > niD8 Then + xRangeR = xniArray0.Length + GoTo Skip2 + End If + + For xI1 = 0 To xniArray0.Length + If xniArray0(xI1) = xRangeR Then + xRangeR = xI1 + 1 + Exit For + End If + Next + +Skip2: + + Dim xniArray1(xRangeR - xRangeL - 1) + For xI1 = 0 To xRangeR - xRangeL - 1 + xniArray1(xI1) = xniArray0(xI1 + xRangeL) + Next + + Dim xniArrayLen = xniArray1.Length + ' xniArrayR: Randomized array + Dim xniArrayR = xniArray1.Clone() + Shuffle(xniArrayR, xniArrayLen) + + Dim xCol As Integer + For xI1 = 1 To UBound(Notes) + If Not Notes(xI1).Selected Then Continue For + + xCol = Notes(xI1).ColumnIndex + For xI2 = 0 To xniArrayLen - 1 + If xCol = xniArray1(xI2) Then + xCol = xniArrayR(xI2) + Exit For + End If + + Next + + Me.RedoMoveNote(Notes(xI1), xCol, Notes(xI1).VPosition, xUndo, xRedo) + Notes(xI1).ColumnIndex = xCol + Next + +DoNothing: + + AddUndo(xUndo, xBaseRedo.Next) + UpdatePairing() + RefreshPanelAll() + End Sub + + + Private Sub ValidateSelection() + If vSelStart < 0 Then vSelLength += vSelStart : vSelHalf += vSelStart : vSelStart = 0 + If vSelStart > GetMaxVPosition() - 1 Then vSelLength += vSelStart - GetMaxVPosition() + 1 : vSelHalf += vSelStart - GetMaxVPosition() + 1 : vSelStart = GetMaxVPosition() - 1 + If vSelStart + vSelLength < 0 Then vSelLength = -vSelStart + If vSelStart + vSelLength > GetMaxVPosition() - 1 Then vSelLength = GetMaxVPosition() - 1 - vSelStart + + If Math.Sign(vSelHalf) <> Math.Sign(vSelLength) Then vSelHalf = 0 + If Math.Abs(vSelHalf) > Math.Abs(vSelLength) Then vSelHalf = vSelLength + End Sub + + + + Private Sub TVCM_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TVCM.KeyDown + If e.KeyCode = Keys.Enter Then + TVCM.Text = Val(TVCM.Text) + If Val(TVCM.Text) <= 0 Then + MsgBox(Strings.Messages.NegativeFactorError, MsgBoxStyle.Critical, Strings.Messages.Err) + TVCM.Text = 1 + TVCM.Focus() + TVCM.SelectAll() + Else + BVCApply_Click(BVCApply, New System.EventArgs) + End If + End If + End Sub + + Private Sub TVCM_LostFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles TVCM.LostFocus + TVCM.Text = Val(TVCM.Text) + If Val(TVCM.Text) <= 0 Then + MsgBox(Strings.Messages.NegativeFactorError, MsgBoxStyle.Critical, Strings.Messages.Err) + TVCM.Text = 1 + TVCM.Focus() + TVCM.SelectAll() + End If + End Sub + + Private Sub TVCD_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TVCD.KeyDown + If e.KeyCode = Keys.Enter Then + TVCD.Text = Val(TVCD.Text) + If Val(TVCD.Text) <= 0 Then + MsgBox(Strings.Messages.NegativeDivisorError, MsgBoxStyle.Critical, Strings.Messages.Err) + TVCD.Text = 1 + TVCD.Focus() + TVCD.SelectAll() + Else + BVCApply_Click(BVCApply, New System.EventArgs) + End If + End If + End Sub + + Private Sub TVCD_LostFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles TVCD.LostFocus + TVCD.Text = Val(TVCD.Text) + If Val(TVCD.Text) <= 0 Then + MsgBox(Strings.Messages.NegativeDivisorError, MsgBoxStyle.Critical, Strings.Messages.Err) + TVCD.Text = 1 + TVCD.Focus() + TVCD.SelectAll() + End If + End Sub + + Private Sub TVCBPM_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TVCBPM.KeyDown + If e.KeyCode = Keys.Enter Then + TVCBPM.Text = Val(TVCBPM.Text) + If Val(TVCBPM.Text) <= 0 Then + MsgBox(Strings.Messages.NegativeDivisorError, MsgBoxStyle.Critical, Strings.Messages.Err) + TVCBPM.Text = Notes(0).Value / 10000 + TVCBPM.Focus() + TVCBPM.SelectAll() + Else + BVCCalculate_Click(BVCCalculate, New System.EventArgs) + End If + End If + End Sub + + Private Sub TVCBPM_LostFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles TVCBPM.LostFocus + TVCBPM.Text = Val(TVCBPM.Text) + If Val(TVCBPM.Text) <= 0 Then + MsgBox(Strings.Messages.NegativeDivisorError, MsgBoxStyle.Critical, Strings.Messages.Err) + TVCBPM.Text = Notes(0).Value / 10000 + TVCBPM.Focus() + TVCBPM.SelectAll() + End If + End Sub + + Private Function FindNoteIndex(note As Note) As Integer + Dim xI1 As Integer + If NTInput Then + For xI1 = 1 To UBound(Notes) + If Notes(xI1).equalsNT(note) Then Return xI1 + Next + Else + For xI1 = 1 To UBound(Notes) + If Notes(xI1).equalsBMSE(note) Then Return xI1 + Next + End If + Return xI1 + End Function + + + + + Private Function sIA() As Integer + Return IIf(sI > 98, 0, sI + 1) + End Function + + Private Function sIM() As Integer + Return IIf(sI < 1, 99, sI - 1) + End Function + + + + Private Sub TBUndo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBUndo.Click, mnUndo.Click + KMouseOver = -1 + 'KMouseDown = -1 + ReDim SelectedNotes(-1) + If sUndo(sI).ofType = UndoRedo.opNoOperation Then Exit Sub + PerformCommand(sUndo(sI)) + sI = sIM() + + TBUndo.Enabled = sUndo(sI).ofType <> UndoRedo.opNoOperation + TBRedo.Enabled = sRedo(sIA).ofType <> UndoRedo.opNoOperation + mnUndo.Enabled = sUndo(sI).ofType <> UndoRedo.opNoOperation + mnRedo.Enabled = sRedo(sIA).ofType <> UndoRedo.opNoOperation + End Sub + + Private Sub TBRedo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBRedo.Click, mnRedo.Click + KMouseOver = -1 + 'KMouseDown = -1 + ReDim SelectedNotes(-1) + If sRedo(sIA).ofType = UndoRedo.opNoOperation Then Exit Sub + PerformCommand(sRedo(sIA)) + sI = sIA() + + TBUndo.Enabled = sUndo(sI).ofType <> UndoRedo.opNoOperation + TBRedo.Enabled = sRedo(sIA).ofType <> UndoRedo.opNoOperation + mnUndo.Enabled = sUndo(sI).ofType <> UndoRedo.opNoOperation + mnRedo.Enabled = sRedo(sIA).ofType <> UndoRedo.opNoOperation + End Sub + + 'Undo appends before, Redo appends after. + 'After a sequence of Commands, + ' Undo will be the first one to execute, + ' Redo will be the last one to execute. + 'Remember to save the first Redo. + + 'In case where undo is Nothing: Dont worry. + 'In case where redo is Nothing: + ' If only one redo is in a sequence, put Nothing. + ' If several redo are in a sequence, + ' Create Void first. + ' Record its reference into a seperate copy. (xBaseRedo = xRedo) + ' Use this xRedo as the BaseRedo. + ' When calling AddUndo subroutine, use xBaseRedo.Next as cRedo. + + 'Dim xUndo As UndoRedo.LinkedURCmd = Nothing + 'Dim xRedo As UndoRedo.LinkedURCmd = Nothing + '... 'Me.RedoRemoveNote(K(xI1), True, xUndo, xRedo) + 'AddUndo(xUndo, xRedo) + + 'Dim xUndo As UndoRedo.LinkedURCmd = Nothing + 'Dim xRedo As New UndoRedo.Void + 'Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo + '... 'Me.RedoRemoveNote(K(xI1), True, xUndo, xRedo) + 'AddUndo(xUndo, xBaseRedo.Next) + + + + Private Sub TBAbout_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) + Dim Aboutboxx1 As New AboutBox1() + 'If My.Computer.FileSystem.FileExists(My.Application.Info.DirectoryPath & "\About.png") Then + Aboutboxx1.bBitmap = My.Resources.About0 + 'Aboutboxx1.SelectBitmap() + Aboutboxx1.ClientSize = New Size(1000, 500) + Aboutboxx1.ClickToCopy.Visible = True + Aboutboxx1.ShowDialog(Me) + 'Else + ' MsgBox(locale.Messages.cannotfind & " ""About.png""", MsgBoxStyle.Critical, locale.Messages.err) + 'End If + End Sub + + Private Sub TBOptions_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBVOptions.Click, mnVOptions.Click + + Dim xDiag As New OpVisual(vo, column, LWAV.Font) + xDiag.ShowDialog(Me) + UpdateColumnsX() + RefreshPanelAll() + End Sub + + + Private Sub AddToPOWAV(ByVal xPath() As String) + Dim xIndices(LWAV.SelectedIndices.Count - 1) As Integer + LWAV.SelectedIndices.CopyTo(xIndices, 0) + If xIndices.Length = 0 Then Exit Sub + + If xIndices.Length < xPath.Length Then + Dim i As Integer = xIndices.Length + Dim currWavIndex As Integer = xIndices(UBound(xIndices)) + 1 + ReDim Preserve xIndices(UBound(xPath)) + + Do While i < xIndices.Length And currWavIndex <= 1294 + Do While currWavIndex <= 1294 AndAlso hWAV(currWavIndex + 1) <> "" + currWavIndex += 1 + Loop + If currWavIndex > 1294 Then Exit Do + + xIndices(i) = currWavIndex + currWavIndex += 1 + i += 1 + Loop + + If currWavIndex > 1294 Then + ReDim Preserve xPath(i - 1) + ReDim Preserve xIndices(i - 1) + End If + End If + + 'Dim xI2 As Integer = 0 + For xI1 As Integer = 0 To UBound(xPath) + 'If xI2 > UBound(xIndices) Then Exit For + 'hWAV(xIndices(xI2) + 1) = GetFileName(xPath(xI1)) + 'LWAV.Items.Item(xIndices(xI2)) = C10to36(xIndices(xI2) + 1) & ": " & GetFileName(xPath(xI1)) + hWAV(xIndices(xI1) + 1) = GetFileName(xPath(xI1)) + LWAV.Items.Item(xIndices(xI1)) = C10to36(xIndices(xI1) + 1) & ": " & GetFileName(xPath(xI1)) + 'xI2 += 1 + Next + + LWAV.SelectedIndices.Clear() + For xI1 As Integer = 0 To IIf(UBound(xIndices) < UBound(xPath), UBound(xIndices), UBound(xPath)) + LWAV.SelectedIndices.Add(xIndices(xI1)) + Next + + If IsSaved Then SetIsSaved(False) + RefreshPanelAll() + End Sub + + Private Sub POWAV_DragDrop(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles POWAV.DragDrop + ReDim DDFileName(-1) + If Not e.Data.GetDataPresent(DataFormats.FileDrop) Then Return + + Dim xOrigPath() As String = CType(e.Data.GetData(DataFormats.FileDrop), String()) + Dim xPath() As String = FilterFileBySupported(xOrigPath, SupportedAudioExtension) + Array.Sort(xPath) + If xPath.Length = 0 Then + RefreshPanelAll() + Exit Sub + End If + + AddToPOWAV(xPath) + End Sub + + Private Sub POWAV_DragEnter(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles POWAV.DragEnter + If e.Data.GetDataPresent(DataFormats.FileDrop) Then + e.Effect = DragDropEffects.Copy + DDFileName = FilterFileBySupported(CType(e.Data.GetData(DataFormats.FileDrop), String()), SupportedAudioExtension) + Else + e.Effect = DragDropEffects.None + End If + RefreshPanelAll() + End Sub + + Private Sub POWAV_DragLeave(ByVal sender As Object, ByVal e As System.EventArgs) Handles POWAV.DragLeave + ReDim DDFileName(-1) + RefreshPanelAll() + End Sub + + Private Sub POWAV_Resize(ByVal sender As Object, ByVal e As System.EventArgs) Handles POWAV.Resize + LWAV.Height = sender.Height - 25 + End Sub + Private Sub POBeat_Resize(ByVal sender As Object, ByVal e As System.EventArgs) Handles POBeat.Resize + LBeat.Height = POBeat.Height - 25 + End Sub + Private Sub POExpansion_Resize(ByVal sender As Object, ByVal e As System.EventArgs) Handles POExpansion.Resize + TExpansion.Height = POExpansion.Height - 2 + End Sub + + Private Sub mn_DropDownClosed(ByVal sender As Object, ByVal e As System.EventArgs) + sender.ForeColor = Color.White + End Sub + Private Sub mn_DropDownOpened(ByVal sender As Object, ByVal e As System.EventArgs) + sender.ForeColor = Color.Black + End Sub + Private Sub mn_MouseEnter(ByVal sender As Object, ByVal e As System.EventArgs) + If sender.Pressed Then Return + sender.ForeColor = Color.Black + End Sub + Private Sub mn_MouseLeave(ByVal sender As Object, ByVal e As System.EventArgs) + If sender.Pressed Then Return + sender.ForeColor = Color.White + End Sub + + Private Sub TBPOptions_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBPOptions.Click, mnPOptions.Click + Dim xDOp As New OpPlayer(CurrentPlayer) + xDOp.ShowDialog(Me) + End Sub + + Private Sub THGenre_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles _ + THGenre.TextChanged, THTitle.TextChanged, THArtist.TextChanged, THPlayLevel.TextChanged, CHRank.SelectedIndexChanged, TExpansion.TextChanged, + THSubTitle.TextChanged, THSubArtist.TextChanged, THStageFile.TextChanged, THBanner.TextChanged, THBackBMP.TextChanged, + CHDifficulty.SelectedIndexChanged, THExRank.TextChanged, THTotal.TextChanged, THComment.TextChanged + If IsSaved Then SetIsSaved(False) + End Sub + + Private Sub CHLnObj_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CHLnObj.SelectedIndexChanged + If IsSaved Then SetIsSaved(False) + LnObj = CHLnObj.SelectedIndex + UpdatePairing() + RefreshPanelAll() + End Sub + + Private Sub ConvertBMSE2NT() + ReDim SelectedNotes(-1) + SortByVPositionInsertion() + + For i2 As Integer = 0 To UBound(Notes) + Notes(i2).Length = 0.0# + Next + + Dim i As Integer = 1 + Dim j As Integer = 0 + Dim xUbound As Integer = UBound(Notes) + + Do While i <= xUbound + If Not Notes(i).LongNote Then i += 1 : Continue Do + + For j = i + 1 To xUbound + If Notes(j).ColumnIndex <> Notes(i).ColumnIndex Then Continue For + + If Notes(j).LongNote Then + Notes(i).Length = Notes(j).VPosition - Notes(i).VPosition + For j2 As Integer = j To xUbound - 1 + Notes(j2) = Notes(j2 + 1) + Next + xUbound -= 1 + Exit For + + ElseIf Notes(j).Value \ 10000 = LnObj Then + Exit For + + End If + Next + + i += 1 + Loop + + ReDim Preserve Notes(xUbound) + + For i = 0 To xUbound + Notes(i).LongNote = False + Next + + SortByVPositionInsertion() + UpdatePairing() + CalculateTotalPlayableNotes() + End Sub + + Private Sub ConvertNT2BMSE() + ReDim SelectedNotes(-1) + Dim xK(0) As Note + xK(0) = Notes(0) + + For xI1 As Integer = 1 To UBound(Notes) + ReDim Preserve xK(UBound(xK) + 1) + With xK(UBound(xK)) + .ColumnIndex = Notes(xI1).ColumnIndex + .LongNote = Notes(xI1).Length > 0 + .Landmine = Notes(xI1).Landmine + .Value = Notes(xI1).Value + .VPosition = Notes(xI1).VPosition + .Selected = Notes(xI1).Selected + .Hidden = Notes(xI1).Hidden + End With + + If Notes(xI1).Length > 0 Then + ReDim Preserve xK(UBound(xK) + 1) + With xK(UBound(xK)) + .ColumnIndex = Notes(xI1).ColumnIndex + .LongNote = True + .Landmine = False + .Value = Notes(xI1).Value + .VPosition = Notes(xI1).VPosition + Notes(xI1).Length + .Selected = Notes(xI1).Selected + .Hidden = Notes(xI1).Hidden + End With + End If + Next + + Notes = xK + + SortByVPositionInsertion() + UpdatePairing() + CalculateTotalPlayableNotes() + End Sub + + Private Sub TBWavIncrease_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBWavIncrease.Click + Dim xUndo As UndoRedo.LinkedURCmd = Nothing + Dim xRedo As UndoRedo.LinkedURCmd = New UndoRedo.Void + Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo + + TBWavIncrease.Checked = Not sender.Checked + Me.RedoWavIncrease(TBWavIncrease.Checked, xUndo, xRedo) + AddUndo(xUndo, xBaseRedo.Next) + End Sub + + Private Sub TBNTInput_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBNTInput.Click, mnNTInput.Click + 'Dim xUndo As String = "NT_" & CInt(NTInput) & "_0" & vbCrLf & "KZ" & vbCrLf & sCmdKsAll(False) + 'Dim xRedo As String = "NT_" & CInt(Not NTInput) & "_1" + Dim xUndo As UndoRedo.LinkedURCmd = Nothing + Dim xRedo As UndoRedo.LinkedURCmd = New UndoRedo.Void + Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo + + Me.RedoRemoveNoteAll(False, xUndo, xRedo) + + NTInput = sender.Checked + + TBNTInput.Checked = NTInput + mnNTInput.Checked = NTInput + POBLong.Enabled = Not NTInput + POBLongShort.Enabled = Not NTInput + + bAdjustLength = False + bAdjustUpper = False + + Me.RedoNT(NTInput, False, xUndo, xRedo) + If NTInput Then + ConvertBMSE2NT() + Else + ConvertNT2BMSE() + End If + Me.RedoAddNoteAll(False, xUndo, xRedo) + + AddUndo(xUndo, xBaseRedo.Next) + RefreshPanelAll() + End Sub + + Private Sub THBPM_ValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles THBPM.ValueChanged + If Notes IsNot Nothing Then Notes(0).Value = THBPM.Value * 10000 : RefreshPanelAll() + If IsSaved Then SetIsSaved(False) + End Sub + + Private Sub TWPosition_ValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TWPosition.ValueChanged + wPosition = TWPosition.Value + TWPosition2.Value = IIf(wPosition > TWPosition2.Maximum, TWPosition2.Maximum, wPosition) + RefreshPanelAll() + End Sub + + Private Sub TWLeft_ValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TWLeft.ValueChanged + wLeft = TWLeft.Value + TWLeft2.Value = IIf(wLeft > TWLeft2.Maximum, TWLeft2.Maximum, wLeft) + RefreshPanelAll() + End Sub + + Private Sub TWWidth_ValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TWWidth.ValueChanged + wWidth = TWWidth.Value + TWWidth2.Value = IIf(wWidth > TWWidth2.Maximum, TWWidth2.Maximum, wWidth) + RefreshPanelAll() + End Sub + + Private Sub TWPrecision_ValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TWPrecision.ValueChanged + wPrecision = TWPrecision.Value + TWPrecision2.Value = IIf(wPrecision > TWPrecision2.Maximum, TWPrecision2.Maximum, wPrecision) + RefreshPanelAll() + End Sub + + Private Sub TWTransparency_ValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TWTransparency.ValueChanged + TWTransparency2.Value = TWTransparency.Value + vo.pBGMWav.Color = Color.FromArgb(TWTransparency.Value, vo.pBGMWav.Color) + RefreshPanelAll() + End Sub + + Private Sub TWSaturation_ValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TWSaturation.ValueChanged + Dim xColor As Color = vo.pBGMWav.Color + TWSaturation2.Value = TWSaturation.Value + vo.pBGMWav.Color = HSL2RGB(xColor.GetHue, TWSaturation.Value, xColor.GetBrightness * 1000, xColor.A) + RefreshPanelAll() + End Sub + + Private Sub TWPosition2_Scroll(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TWPosition2.Scroll + TWPosition.Value = TWPosition2.Value + End Sub + + Private Sub TWLeft2_Scroll(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TWLeft2.Scroll + TWLeft.Value = TWLeft2.Value + End Sub + + Private Sub TWWidth2_Scroll(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TWWidth2.Scroll + TWWidth.Value = TWWidth2.Value + End Sub + + Private Sub TWPrecision2_Scroll(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TWPrecision2.Scroll + TWPrecision.Value = TWPrecision2.Value + End Sub + + Private Sub TWTransparency2_Scroll(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TWTransparency2.Scroll + TWTransparency.Value = TWTransparency2.Value + End Sub + + Private Sub TWSaturation2_Scroll(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TWSaturation2.Scroll + TWSaturation.Value = TWSaturation2.Value + End Sub + + Private Sub TBLangDef_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBLangDef.Click + DispLang = "" + MsgBox(Strings.Messages.PreferencePostpone, MsgBoxStyle.Information) + End Sub + + Private Sub TBLangRefresh_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBLangRefresh.Click + For xI1 As Integer = cmnLanguage.Items.Count - 1 To 3 Step -1 + Try + cmnLanguage.Items.RemoveAt(xI1) + Catch ex As Exception + End Try + Next + + If Not Directory.Exists(My.Application.Info.DirectoryPath & "\Data") Then My.Computer.FileSystem.CreateDirectory(My.Application.Info.DirectoryPath & "\Data") + Dim xFileNames() As FileInfo = My.Computer.FileSystem.GetDirectoryInfo(My.Application.Info.DirectoryPath & "\Data").GetFiles("*.Lang.xml") + + For Each xStr As FileInfo In xFileNames + LoadLocaleXML(xStr) + Next + End Sub + + + Private Sub UpdateColumnsX() + column(0).Left = 0 + 'If col(0).Width = 0 Then col(0).Visible = False + + For xI1 As Integer = 1 To UBound(column) + column(xI1).Left = column(xI1 - 1).Left + IIf(column(xI1 - 1).isVisible, column(xI1 - 1).Width, 0) + 'If col(xI1).Width = 0 Then col(xI1).Visible = False + Next + HSL.Maximum = nLeft(gColumns) + column(niB).Width + HS.Maximum = nLeft(gColumns) + column(niB).Width + HSR.Maximum = nLeft(gColumns) + column(niB).Width + End Sub + + Private Sub CHPlayer_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CHPlayer.SelectedIndexChanged + If CHPlayer.SelectedIndex = -1 Then CHPlayer.SelectedIndex = 0 + + iPlayer = CHPlayer.SelectedIndex + Dim xGP2 As Boolean = iPlayer <> 0 + column(niD1).isVisible = xGP2 + column(niD2).isVisible = xGP2 + column(niD3).isVisible = xGP2 + column(niD4).isVisible = xGP2 + column(niD5).isVisible = xGP2 + column(niD6).isVisible = xGP2 + column(niD7).isVisible = xGP2 + column(niD8).isVisible = xGP2 + column(niS3).isVisible = xGP2 + + For xI1 As Integer = 1 To UBound(Notes) + Notes(xI1).Selected = Notes(xI1).Selected And nEnabled(Notes(xI1).ColumnIndex) + Next + 'AddUndo(xUndo, xRedo) + UpdateColumnsX() + + If IsInitializing Then Exit Sub + RefreshPanelAll() + End Sub + + Private Sub CGB_ValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CGB.ValueChanged + gColumns = niB + CGB.Value - 1 + UpdateColumnsX() + RefreshPanelAll() + End Sub + + Private Sub TBGOptions_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBGOptions.Click, mnGOptions.Click + Dim xTE As Integer + Select Case UCase(EncodingToString(TextEncoding)) ' az: wow seriously? is there really no better way? + Case "SYSTEM ANSI" : xTE = 0 + Case "LITTLE ENDIAN UTF16" : xTE = 1 + Case "ASCII" : xTE = 2 + Case "BIG ENDIAN UTF16" : xTE = 3 + Case "LITTLE ENDIAN UTF32" : xTE = 4 + Case "UTF7" : xTE = 5 + Case "UTF8" : xTE = 6 + Case "SJIS" : xTE = 7 + Case "EUC-KR" : xTE = 8 + Case Else : xTE = 0 + End Select + + Dim xDiag As New OpGeneral(gWheel, gPgUpDn, MiddleButtonMoveMethod, xTE, 192.0R / BMSGridLimit, + AutoSaveInterval, BeepWhileSaved, BPMx1296, STOPx1296, + AutoFocusMouseEnter, FirstClickDisabled, ClickStopPreview) + + If xDiag.ShowDialog() = Windows.Forms.DialogResult.OK Then + With xDiag + gWheel = .zWheel + gPgUpDn = .zPgUpDn + TextEncoding = .zEncoding + 'SortingMethod = .zSort + MiddleButtonMoveMethod = .zMiddle + AutoSaveInterval = .zAutoSave + BMSGridLimit = 192.0R / .zGridPartition + BeepWhileSaved = .cBeep.Checked + BPMx1296 = .cBpm1296.Checked + STOPx1296 = .cStop1296.Checked + AutoFocusMouseEnter = .cMEnterFocus.Checked + FirstClickDisabled = .cMClickFocus.Checked + ClickStopPreview = .cMStopPreview.Checked + ' KeyBindDP = .cMKeyBindDP.Checked + End With + If AutoSaveInterval Then AutoSaveTimer.Interval = AutoSaveInterval + AutoSaveTimer.Enabled = AutoSaveInterval + End If + End Sub + + Private Sub POBLong_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles POBLong.Click + If NTInput Then Exit Sub + + Dim xUndo As UndoRedo.LinkedURCmd = Nothing + Dim xRedo As UndoRedo.LinkedURCmd = New UndoRedo.Void + Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo + + For xI1 As Integer = 1 To UBound(Notes) + If Not Notes(xI1).Selected Then Continue For + + Me.RedoLongNoteModify(Notes(xI1), Notes(xI1).VPosition, True, xUndo, xRedo) + Notes(xI1).LongNote = True + Next + AddUndo(xUndo, xBaseRedo.Next) + SortByVPositionInsertion() + UpdatePairing() + RefreshPanelAll() + End Sub + + Private Sub POBNormal_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles POBShort.Click + Dim xUndo As UndoRedo.LinkedURCmd = Nothing + Dim xRedo As UndoRedo.LinkedURCmd = New UndoRedo.Void + Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo + + If Not NTInput Then + For xI1 As Integer = 1 To UBound(Notes) + If Not Notes(xI1).Selected Then Continue For + + Me.RedoLongNoteModify(Notes(xI1), Notes(xI1).VPosition, 0, xUndo, xRedo) + Notes(xI1).LongNote = False + Next + + Else + For xI1 As Integer = 1 To UBound(Notes) + If Not Notes(xI1).Selected Then Continue For + + Me.RedoLongNoteModify(Notes(xI1), Notes(xI1).VPosition, 0, xUndo, xRedo) + Notes(xI1).Length = 0 + Next + End If + + AddUndo(xUndo, xBaseRedo.Next) + SortByVPositionInsertion() + UpdatePairing() + RefreshPanelAll() + End Sub + + Private Sub POBNormalLong_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles POBLongShort.Click + If NTInput Then Exit Sub + + Dim xUndo As UndoRedo.LinkedURCmd = Nothing + Dim xRedo As UndoRedo.LinkedURCmd = New UndoRedo.Void + Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo + + For xI1 As Integer = 1 To UBound(Notes) + If Not Notes(xI1).Selected Then Continue For + + Me.RedoLongNoteModify(Notes(xI1), Notes(xI1).VPosition, Not Notes(xI1).LongNote, xUndo, xRedo) + Notes(xI1).LongNote = Not Notes(xI1).LongNote + Next + + AddUndo(xUndo, xBaseRedo.Next) + SortByVPositionInsertion() + UpdatePairing() + RefreshPanelAll() + End Sub + + Private Sub POBHidden_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles POBHidden.Click + Dim xUndo As UndoRedo.LinkedURCmd = Nothing + Dim xRedo As UndoRedo.LinkedURCmd = New UndoRedo.Void + Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo + + For xI1 As Integer = 1 To UBound(Notes) + If Not Notes(xI1).Selected Then Continue For + + Me.RedoHiddenNoteModify(Notes(xI1), True, True, xUndo, xRedo) + Notes(xI1).Hidden = True + Next + AddUndo(xUndo, xBaseRedo.Next) + SortByVPositionInsertion() + UpdatePairing() + RefreshPanelAll() + End Sub + + Private Sub POBVisible_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles POBVisible.Click + Dim xUndo As UndoRedo.LinkedURCmd = Nothing + Dim xRedo As UndoRedo.LinkedURCmd = New UndoRedo.Void + Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo + + For xI1 As Integer = 1 To UBound(Notes) + If Not Notes(xI1).Selected Then Continue For + + Me.RedoHiddenNoteModify(Notes(xI1), False, True, xUndo, xRedo) + Notes(xI1).Hidden = False + Next + AddUndo(xUndo, xBaseRedo.Next) + SortByVPositionInsertion() + UpdatePairing() + RefreshPanelAll() + End Sub + + Private Sub POBHiddenVisible_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles POBHiddenVisible.Click + Dim xUndo As UndoRedo.LinkedURCmd = Nothing + Dim xRedo As UndoRedo.LinkedURCmd = New UndoRedo.Void + Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo + + For xI1 As Integer = 1 To UBound(Notes) + If Not Notes(xI1).Selected Then Continue For + + Me.RedoHiddenNoteModify(Notes(xI1), Not Notes(xI1).Hidden, True, xUndo, xRedo) + Notes(xI1).Hidden = Not Notes(xI1).Hidden + Next + AddUndo(xUndo, xBaseRedo.Next) + SortByVPositionInsertion() + UpdatePairing() + RefreshPanelAll() + End Sub + + Private Sub POBModify_Click(ByVal sender As System.Object, ByVal e As EventArgs) Handles POBModify.Click + Dim xNum As Boolean = False + Dim xLbl As Boolean = False + Dim xI1 As Integer + + For xI1 = 1 To UBound(Notes) + If Notes(xI1).Selected AndAlso IsColumnNumeric(Notes(xI1).ColumnIndex) Then xNum = True : Exit For + Next + For xI1 = 1 To UBound(Notes) + If Notes(xI1).Selected AndAlso Not IsColumnNumeric(Notes(xI1).ColumnIndex) Then xLbl = True : Exit For + Next + If Not (xNum Or xLbl) Then Exit Sub + + If xNum Then + Dim xD1 As Double = Val(InputBox(Strings.Messages.PromptEnterNumeric, Text)) * 10000 + If Not xD1 = 0 Then + If xD1 <= 0 Then xD1 = 1 + + Dim xUndo As UndoRedo.LinkedURCmd = Nothing + Dim xRedo As UndoRedo.LinkedURCmd = New UndoRedo.Void + Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo + + For xI1 = 1 To UBound(Notes) + If Not IsColumnNumeric(Notes(xI1).ColumnIndex) Then Continue For + If Not Notes(xI1).Selected Then Continue For + + Me.RedoRelabelNote(Notes(xI1), xD1, xUndo, xRedo) + Notes(xI1).Value = xD1 + Next + AddUndo(xUndo, xBaseRedo.Next) + End If + End If + + If xLbl Then + Dim xStr As String = UCase(Trim(InputBox(Strings.Messages.PromptEnter, Me.Text))) + + If Len(xStr) = 0 Then GoTo Jump2 + If xStr = "00" Or xStr = "0" Then GoTo Jump1 + If Not Len(xStr) = 1 And Not Len(xStr) = 2 Then GoTo Jump1 + + Dim xI3 As Integer = Asc(Mid(xStr, 1, 1)) + If Not ((xI3 >= 48 And xI3 <= 57) Or (xI3 >= 65 And xI3 <= 90)) Then GoTo Jump1 + If Len(xStr) = 2 Then + Dim xI4 As Integer = Asc(Mid(xStr, 2, 1)) + If Not ((xI4 >= 48 And xI4 <= 57) Or (xI4 >= 65 And xI4 <= 90)) Then GoTo Jump1 + End If + Dim xVal As Integer = C36to10(xStr) * 10000 + + Dim xUndo As UndoRedo.LinkedURCmd = Nothing + Dim xRedo As UndoRedo.LinkedURCmd = New UndoRedo.Void + Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo + + For xI1 = 1 To UBound(Notes) + If IsColumnNumeric(Notes(xI1).ColumnIndex) Then Continue For + If Not Notes(xI1).Selected Then Continue For + + Me.RedoRelabelNote(Notes(xI1), xVal, xUndo, xRedo) + Notes(xI1).Value = xVal + Next + AddUndo(xUndo, xBaseRedo.Next) + GoTo Jump2 +Jump1: + MsgBox(Strings.Messages.InvalidLabel, MsgBoxStyle.Critical, Strings.Messages.Err) +Jump2: + End If + + RefreshPanelAll() + End Sub + + Private Sub TBMyO2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBMyO2.Click, mnMyO2.Click + Dim xDiag As New dgMyO2 + xDiag.Show() + End Sub + + + Private Sub TBFind_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBFind.Click, mnFind.Click + Dim xDiag As New diagFind(gColumns, Strings.Messages.Err, Strings.Messages.InvalidLabel) + xDiag.Show() + End Sub + + Private Function fdrCheck(ByVal xNote As Note) As Boolean + Return xNote.VPosition >= MeasureBottom(fdriMesL) And xNote.VPosition < MeasureBottom(fdriMesU) + MeasureLength(fdriMesU) AndAlso + IIf(IsColumnNumeric(xNote.ColumnIndex), + xNote.Value >= fdriValL And xNote.Value <= fdriValU, + xNote.Value >= fdriLblL And xNote.Value <= fdriLblU) AndAlso + Array.IndexOf(fdriCol, xNote.ColumnIndex - 1) <> -1 + ' lol Fixed + End Function + + Private Function fdrRangeS(ByVal xbLim1 As Boolean, ByVal xbLim2 As Boolean, ByVal xVal As Boolean) As Boolean + Return (Not xbLim1 And xbLim2 And xVal) Or (xbLim1 And Not xbLim2 And Not xVal) Or (xbLim1 And xbLim2) + End Function + + Public Sub fdrSelect(ByVal iRange As Integer, + ByVal xMesL As Integer, ByVal xMesU As Integer, + ByVal xLblL As String, ByVal xLblU As String, + ByVal xValL As Integer, ByVal xValU As Integer, + ByVal iCol() As Integer) + + fdriMesL = xMesL + fdriMesU = xMesU + fdriLblL = C36to10(xLblL) * 10000 + fdriLblU = C36to10(xLblU) * 10000 + fdriValL = xValL + fdriValU = xValU + fdriCol = iCol + + Dim xbSel As Boolean = iRange Mod 2 = 0 + Dim xbUnsel As Boolean = iRange Mod 3 = 0 + Dim xbShort As Boolean = iRange Mod 5 = 0 + Dim xbLong As Boolean = iRange Mod 7 = 0 + Dim xbHidden As Boolean = iRange Mod 11 = 0 + Dim xbVisible As Boolean = iRange Mod 13 = 0 + + Dim xSel(UBound(Notes)) As Boolean + For xI1 As Integer = 1 To UBound(Notes) + xSel(xI1) = Notes(xI1).Selected + Next + + 'Main process + For xI1 As Integer = 1 To UBound(Notes) + Dim bbba As Boolean = xbSel And xSel(xI1) + Dim bbbb As Boolean = xbUnsel And Not xSel(xI1) + Dim bbbc As Boolean = nEnabled(Notes(xI1).ColumnIndex) + Dim bbbd As Boolean = fdrRangeS(xbShort, xbLong, IIf(NTInput, Notes(xI1).Length, Notes(xI1).LongNote)) + Dim bbbe As Boolean = fdrRangeS(xbVisible, xbHidden, Notes(xI1).Hidden) + Dim bbbf As Boolean = fdrCheck(Notes(xI1)) + + If ((xbSel And xSel(xI1)) Or (xbUnsel And Not xSel(xI1))) AndAlso + nEnabled(Notes(xI1).ColumnIndex) AndAlso fdrRangeS(xbShort, xbLong, IIf(NTInput, Notes(xI1).Length, Notes(xI1).LongNote)) And fdrRangeS(xbVisible, xbHidden, Notes(xI1).Hidden) Then + Notes(xI1).Selected = fdrCheck(Notes(xI1)) + End If + Next + + RefreshPanelAll() + Beep() + End Sub + + Public Sub fdrUnselect(ByVal iRange As Integer, + ByVal xMesL As Integer, ByVal xMesU As Integer, + ByVal xLblL As String, ByVal xLblU As String, + ByVal xValL As Integer, ByVal xValU As Integer, + ByVal iCol() As Integer) + + fdriMesL = xMesL + fdriMesU = xMesU + fdriLblL = C36to10(xLblL) * 10000 + fdriLblU = C36to10(xLblU) * 10000 + fdriValL = xValL + fdriValU = xValU + fdriCol = iCol + + Dim xbSel As Boolean = iRange Mod 2 = 0 + Dim xbUnsel As Boolean = iRange Mod 3 = 0 + Dim xbShort As Boolean = iRange Mod 5 = 0 + Dim xbLong As Boolean = iRange Mod 7 = 0 + Dim xbHidden As Boolean = iRange Mod 11 = 0 + Dim xbVisible As Boolean = iRange Mod 13 = 0 + + Dim xSel(UBound(Notes)) As Boolean + For xI1 As Integer = 1 To UBound(Notes) + xSel(xI1) = Notes(xI1).Selected + Next + + 'Main process + For xI1 As Integer = 1 To UBound(Notes) + If ((xbSel And xSel(xI1)) Or (xbUnsel And Not xSel(xI1))) AndAlso + nEnabled(Notes(xI1).ColumnIndex) AndAlso fdrRangeS(xbShort, xbLong, IIf(NTInput, Notes(xI1).Length, Notes(xI1).LongNote)) And fdrRangeS(xbVisible, xbHidden, Notes(xI1).Hidden) Then + Notes(xI1).Selected = Not fdrCheck(Notes(xI1)) + End If + Next + + RefreshPanelAll() + Beep() + End Sub + + Public Sub fdrDelete(ByVal iRange As Integer, + ByVal xMesL As Integer, ByVal xMesU As Integer, + ByVal xLblL As String, ByVal xLblU As String, + ByVal xValL As Integer, ByVal xValU As Integer, + ByVal iCol() As Integer) + + fdriMesL = xMesL + fdriMesU = xMesU + fdriLblL = C36to10(xLblL) * 10000 + fdriLblU = C36to10(xLblU) * 10000 + fdriValL = xValL + fdriValU = xValU + fdriCol = iCol + + Dim xbSel As Boolean = iRange Mod 2 = 0 + Dim xbUnsel As Boolean = iRange Mod 3 = 0 + Dim xbShort As Boolean = iRange Mod 5 = 0 + Dim xbLong As Boolean = iRange Mod 7 = 0 + Dim xbHidden As Boolean = iRange Mod 11 = 0 + Dim xbVisible As Boolean = iRange Mod 13 = 0 + + Dim xUndo As UndoRedo.LinkedURCmd = Nothing + Dim xRedo As UndoRedo.LinkedURCmd = New UndoRedo.Void + Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo + + 'Main process + Dim xI1 As Integer = 1 + Do While xI1 <= UBound(Notes) + If ((xbSel And Notes(xI1).Selected) Or (xbUnsel And Not Notes(xI1).Selected)) AndAlso + fdrCheck(Notes(xI1)) AndAlso nEnabled(Notes(xI1).ColumnIndex) AndAlso fdrRangeS(xbShort, xbLong, IIf(NTInput, Notes(xI1).Length, Notes(xI1).LongNote)) And fdrRangeS(xbVisible, xbHidden, Notes(xI1).Hidden) Then + RedoRemoveNote(Notes(xI1), xUndo, xRedo) + RemoveNote(xI1, False) + Else + xI1 += 1 + End If + Loop + + AddUndo(xUndo, xBaseRedo.Next) + SortByVPositionInsertion() + UpdatePairing() + RefreshPanelAll() + CalculateTotalPlayableNotes() + Beep() + End Sub + + Public Sub fdrReplaceL(ByVal iRange As Integer, + ByVal xMesL As Integer, ByVal xMesU As Integer, + ByVal xLblL As String, ByVal xLblU As String, + ByVal xValL As Integer, ByVal xValU As Integer, + ByVal iCol() As Integer, ByVal xReplaceLbl As String) + + fdriMesL = xMesL + fdriMesU = xMesU + fdriLblL = C36to10(xLblL) * 10000 + fdriLblU = C36to10(xLblU) * 10000 + fdriValL = xValL + fdriValU = xValU + fdriCol = iCol + + Dim xbSel As Boolean = iRange Mod 2 = 0 + Dim xbUnsel As Boolean = iRange Mod 3 = 0 + Dim xbShort As Boolean = iRange Mod 5 = 0 + Dim xbLong As Boolean = iRange Mod 7 = 0 + Dim xbHidden As Boolean = iRange Mod 11 = 0 + Dim xbVisible As Boolean = iRange Mod 13 = 0 + + Dim xxLbl As Integer = C36to10(xReplaceLbl) * 10000 + + Dim xUndo As UndoRedo.LinkedURCmd = Nothing + Dim xRedo As UndoRedo.LinkedURCmd = New UndoRedo.Void + Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo + + 'Main process + For xI1 As Integer = 1 To UBound(Notes) + If ((xbSel And Notes(xI1).Selected) Or (xbUnsel And Not Notes(xI1).Selected)) AndAlso + fdrCheck(Notes(xI1)) AndAlso nEnabled(Notes(xI1).ColumnIndex) And Not IsColumnNumeric(Notes(xI1).ColumnIndex) AndAlso fdrRangeS(xbShort, xbLong, IIf(NTInput, Notes(xI1).Length, Notes(xI1).LongNote)) And fdrRangeS(xbVisible, xbHidden, Notes(xI1).Hidden) Then + 'xUndo &= sCmdKC(K(xI1).ColumnIndex, K(xI1).VPosition, xxLbl, IIf(NTInput, K(xI1).Length, K(xI1).LongNote), K(xI1).Hidden, 0, 0, K(xI1).Value, IIf(NTInput, K(xI1).Length, K(xI1).LongNote), K(xI1).Hidden, True) & vbCrLf + 'xRedo &= sCmdKC(K(xI1).ColumnIndex, K(xI1).VPosition, K(xI1).Value, IIf(NTInput, K(xI1).Length, K(xI1).LongNote), K(xI1).Hidden, 0, 0, xxLbl, IIf(NTInput, K(xI1).Length, K(xI1).LongNote), K(xI1).Hidden, True) & vbCrLf + Me.RedoRelabelNote(Notes(xI1), xxLbl, xUndo, xRedo) + Notes(xI1).Value = xxLbl + End If + Next + + AddUndo(xUndo, xBaseRedo.Next) + RefreshPanelAll() + Beep() + End Sub + + Public Sub fdrReplaceV(ByVal iRange As Integer, + ByVal xMesL As Integer, ByVal xMesU As Integer, + ByVal xLblL As String, ByVal xLblU As String, + ByVal xValL As Integer, ByVal xValU As Integer, + ByVal iCol() As Integer, ByVal xReplaceVal As Integer) + + fdriMesL = xMesL + fdriMesU = xMesU + fdriLblL = C36to10(xLblL) * 10000 + fdriLblU = C36to10(xLblU) * 10000 + fdriValL = xValL + fdriValU = xValU + fdriCol = iCol + + Dim xbSel As Boolean = iRange Mod 2 = 0 + Dim xbUnsel As Boolean = iRange Mod 3 = 0 + Dim xbShort As Boolean = iRange Mod 5 = 0 + Dim xbLong As Boolean = iRange Mod 7 = 0 + Dim xbHidden As Boolean = iRange Mod 11 = 0 + Dim xbVisible As Boolean = iRange Mod 13 = 0 + + Dim xUndo As UndoRedo.LinkedURCmd = Nothing + Dim xRedo As UndoRedo.LinkedURCmd = New UndoRedo.Void + Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo + + 'Main process + For xI1 As Integer = 1 To UBound(Notes) + If ((xbSel And Notes(xI1).Selected) Or (xbUnsel And Not Notes(xI1).Selected)) AndAlso + fdrCheck(Notes(xI1)) AndAlso nEnabled(Notes(xI1).ColumnIndex) And IsColumnNumeric(Notes(xI1).ColumnIndex) AndAlso fdrRangeS(xbShort, xbLong, IIf(NTInput, Notes(xI1).Length, Notes(xI1).LongNote)) And fdrRangeS(xbVisible, xbHidden, Notes(xI1).Hidden) Then + 'xUndo &= sCmdKC(K(xI1).ColumnIndex, K(xI1).VPosition, xReplaceVal, IIf(NTInput, K(xI1).Length, K(xI1).LongNote), K(xI1).Hidden, 0, 0, K(xI1).Value, IIf(NTInput, K(xI1).Length, K(xI1).LongNote), K(xI1).Hidden, True) & vbCrLf + 'xRedo &= sCmdKC(K(xI1).ColumnIndex, K(xI1).VPosition, K(xI1).Value, IIf(NTInput, K(xI1).Length, K(xI1).LongNote), K(xI1).Hidden, 0, 0, xReplaceVal, IIf(NTInput, K(xI1).Length, K(xI1).LongNote), K(xI1).Hidden, True) & vbCrLf + Me.RedoRelabelNote(Notes(xI1), xReplaceVal, xUndo, xRedo) + Notes(xI1).Value = xReplaceVal + End If + Next + + AddUndo(xUndo, xBaseRedo.Next) + RefreshPanelAll() + Beep() + End Sub + + Private Sub MInsert_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MInsert.Click + Dim xUndo As UndoRedo.LinkedURCmd = Nothing + Dim xRedo As UndoRedo.LinkedURCmd = New UndoRedo.Void + Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo + + Dim xMeasure As Integer = MeasureAtDisplacement(menuVPosition) + Dim xMLength As Double = MeasureLength(xMeasure) + Dim xVP As Double = MeasureBottom(xMeasure) + + If NTInput Then + Dim xI1 As Integer = 1 + Do While xI1 <= UBound(Notes) + If MeasureAtDisplacement(Notes(xI1).VPosition) >= 999 Then + Me.RedoRemoveNote(Notes(xI1), xUndo, xRedo) + RemoveNote(xI1, False) + Else + xI1 += 1 + End If + Loop + + Dim xdVP As Double + For xI1 = 1 To UBound(Notes) + If Notes(xI1).VPosition >= xVP And Notes(xI1).VPosition + Notes(xI1).Length <= MeasureBottom(999) Then + Me.RedoMoveNote(Notes(xI1), Notes(xI1).ColumnIndex, Notes(xI1).VPosition + xMLength, xUndo, xRedo) + Notes(xI1).VPosition += xMLength + + ElseIf Notes(xI1).VPosition >= xVP Then + xdVP = MeasureBottom(999) - 1 - Notes(xI1).VPosition - Notes(xI1).Length + Me.RedoLongNoteModify(Notes(xI1), Notes(xI1).VPosition + xMLength, Notes(xI1).Length + xdVP, xUndo, xRedo) + Notes(xI1).VPosition += xMLength + Notes(xI1).Length += xdVP + + ElseIf Notes(xI1).VPosition + Notes(xI1).Length >= xVP Then + xdVP = IIf(Notes(xI1).VPosition + Notes(xI1).Length > MeasureBottom(999) - 1, GetMaxVPosition() - 1 - Notes(xI1).VPosition - Notes(xI1).Length, xMLength) + Me.RedoLongNoteModify(Notes(xI1), Notes(xI1).VPosition, Notes(xI1).Length + xdVP, xUndo, xRedo) + Notes(xI1).Length += xdVP + End If + Next + + Else + Dim xI1 As Integer = 1 + Do While xI1 <= UBound(Notes) + If MeasureAtDisplacement(Notes(xI1).VPosition) >= 999 Then + Me.RedoRemoveNote(Notes(xI1), xUndo, xRedo) + RemoveNote(xI1, False) + Else + xI1 += 1 + End If + Loop + + For xI1 = 1 To UBound(Notes) + If Notes(xI1).VPosition >= xVP Then + Me.RedoMoveNote(Notes(xI1), Notes(xI1).ColumnIndex, Notes(xI1).VPosition + xMLength, xUndo, xRedo) + Notes(xI1).VPosition += xMLength + End If + Next + End If + + For xI1 As Integer = 999 To xMeasure + 1 Step -1 + MeasureLength(xI1) = MeasureLength(xI1 - 1) + Next + UpdateMeasureBottom() + + AddUndo(xUndo, xBaseRedo.Next) + UpdatePairing() + CalculateGreatestVPosition() + CalculateTotalPlayableNotes() + RefreshPanelAll() + End Sub + + Private Sub MRemove_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MRemove.Click + Dim xUndo As UndoRedo.LinkedURCmd = Nothing + Dim xRedo As UndoRedo.LinkedURCmd = New UndoRedo.Void + Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo + + Dim xMeasure As Integer = MeasureAtDisplacement(menuVPosition) + Dim xMLength As Double = MeasureLength(xMeasure) + Dim xVP As Double = MeasureBottom(xMeasure) + + If NTInput Then + Dim xI1 As Integer = 1 + Do While xI1 <= UBound(Notes) + If MeasureAtDisplacement(Notes(xI1).VPosition) = xMeasure And MeasureAtDisplacement(Notes(xI1).VPosition + Notes(xI1).Length) = xMeasure Then + Me.RedoRemoveNote(Notes(xI1), xUndo, xRedo) + RemoveNote(xI1, False) + Else + xI1 += 1 + End If + Loop + + Dim xdVP As Double + xVP = MeasureBottom(xMeasure) + For xI1 = 1 To UBound(Notes) + If Notes(xI1).VPosition >= xVP + xMLength Then + Me.RedoMoveNote(Notes(xI1), Notes(xI1).ColumnIndex, Notes(xI1).VPosition - xMLength, xUndo, xRedo) + Notes(xI1).VPosition -= xMLength + + ElseIf Notes(xI1).VPosition >= xVP Then + xdVP = xMLength + xVP - Notes(xI1).VPosition + Me.RedoLongNoteModify(Notes(xI1), Notes(xI1).VPosition + xdVP - xMLength, Notes(xI1).Length - xdVP, xUndo, xRedo) + Notes(xI1).VPosition += xdVP - xMLength + Notes(xI1).Length -= xdVP + + ElseIf Notes(xI1).VPosition + Notes(xI1).Length >= xVP Then + xdVP = IIf(Notes(xI1).VPosition + Notes(xI1).Length >= xVP + xMLength, xMLength, Notes(xI1).VPosition + Notes(xI1).Length - xVP + 1) + Me.RedoLongNoteModify(Notes(xI1), Notes(xI1).VPosition, Notes(xI1).Length - xdVP, xUndo, xRedo) + Notes(xI1).Length -= xdVP + End If + Next + + Else + Dim xI1 As Integer = 1 + Do While xI1 <= UBound(Notes) + If MeasureAtDisplacement(Notes(xI1).VPosition) = xMeasure Then + Me.RedoRemoveNote(Notes(xI1), xUndo, xRedo) + RemoveNote(xI1, False) + Else + xI1 += 1 + End If + Loop + + xVP = MeasureBottom(xMeasure) + For xI1 = 1 To UBound(Notes) + If Notes(xI1).VPosition >= xVP Then + Me.RedoMoveNote(Notes(xI1), Notes(xI1).ColumnIndex, Notes(xI1).VPosition - xMLength, xUndo, xRedo) + Notes(xI1).VPosition -= xMLength + End If + Next + End If + + For xI1 As Integer = 999 To xMeasure + 1 Step -1 + MeasureLength(xI1 - 1) = MeasureLength(xI1) + Next + UpdateMeasureBottom() + + AddUndo(xUndo, xBaseRedo.Next) + SortByVPositionInsertion() + UpdatePairing() + CalculateGreatestVPosition() + CalculateTotalPlayableNotes() + RefreshPanelAll() + End Sub + + Private Sub TBThemeDef_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBThemeDef.Click + Dim xTempFileName As String = My.Application.Info.DirectoryPath & "\____TempFile.Theme.xml" + My.Computer.FileSystem.WriteAllText(xTempFileName, My.Resources.O2Mania_Theme, False, System.Text.Encoding.Unicode) + LoadSettings(xTempFileName) + System.IO.File.Delete(xTempFileName) + + RefreshPanelAll() + End Sub + + Private Sub TBThemeSave_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBThemeSave.Click + Dim xDiag As New SaveFileDialog + xDiag.Filter = Strings.FileType.THEME_XML & "|*.Theme.xml" + xDiag.DefaultExt = "Theme.xml" + xDiag.InitialDirectory = My.Application.Info.DirectoryPath & "\Data" + If xDiag.ShowDialog = Windows.Forms.DialogResult.Cancel Then Exit Sub + + Me.SaveSettings(xDiag.FileName, True) + If BeepWhileSaved Then Beep() + TBThemeRefresh_Click(TBThemeRefresh, New System.EventArgs) + End Sub + + Private Sub TBThemeRefresh_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBThemeRefresh.Click + For xI1 As Integer = cmnTheme.Items.Count - 1 To 5 Step -1 + Try + cmnTheme.Items.RemoveAt(xI1) + Catch ex As Exception + End Try + Next + + If Not Directory.Exists(My.Application.Info.DirectoryPath & "\Data") Then My.Computer.FileSystem.CreateDirectory(My.Application.Info.DirectoryPath & "\Data") + Dim xFileNames() As FileInfo = My.Computer.FileSystem.GetDirectoryInfo(My.Application.Info.DirectoryPath & "\Data").GetFiles("*.Theme.xml") + For Each xStr As FileInfo In xFileNames + cmnTheme.Items.Add(xStr.Name, Nothing, AddressOf LoadTheme) + Next + End Sub + + Private Sub TBThemeLoadComptability_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBThemeLoadComptability.Click + Dim xDiag As New OpenFileDialog + xDiag.Filter = Strings.FileType.TH & "|*.th" + xDiag.DefaultExt = "th" + xDiag.InitialDirectory = My.Application.Info.DirectoryPath + If My.Computer.FileSystem.DirectoryExists(My.Application.Info.DirectoryPath & "\Theme") Then xDiag.InitialDirectory = My.Application.Info.DirectoryPath & "\Theme" + If xDiag.ShowDialog = Windows.Forms.DialogResult.Cancel Then Exit Sub + + Me.LoadThemeComptability(xDiag.FileName) + RefreshPanelAll() + End Sub + + ''' + ''' Will return Double.PositiveInfinity if canceled. + ''' + Private Function InputBoxDouble(ByVal Prompt As String, ByVal LBound As Double, ByVal UBound As Double, Optional ByVal Title As String = "", Optional ByVal DefaultResponse As String = "") As Double + Dim xStr As String = InputBox(Prompt, Title, DefaultResponse) + If xStr = "" Then Return Double.PositiveInfinity + + InputBoxDouble = Val(xStr) + If InputBoxDouble > UBound Then InputBoxDouble = UBound + If InputBoxDouble < LBound Then InputBoxDouble = LBound + End Function + + Private Sub FSSS_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles FSSS.Click + Dim xMax As Double = IIf(vSelLength > 0, GetMaxVPosition() - vSelLength, GetMaxVPosition) + Dim xMin As Double = IIf(vSelLength < 0, -vSelLength, 0) + Dim xDouble As Double = InputBoxDouble("Please enter a number between " & xMin & " and " & xMax & ".", xMin, xMax, , vSelStart) + If xDouble = Double.PositiveInfinity Then Return + + vSelStart = xDouble + ValidateSelection() + RefreshPanelAll() + POStatusRefresh() + End Sub + + Private Sub FSSL_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles FSSL.Click + Dim xMax As Double = GetMaxVPosition() - vSelStart + Dim xMin As Double = -vSelStart + Dim xDouble As Double = InputBoxDouble("Please enter a number between " & xMin & " and " & xMax & ".", xMin, xMax, , vSelLength) + If xDouble = Double.PositiveInfinity Then Return + + vSelLength = xDouble + ValidateSelection() + RefreshPanelAll() + POStatusRefresh() + End Sub + + Private Sub FSSH_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles FSSH.Click + Dim xMax As Double = IIf(vSelLength > 0, vSelLength, 0) + Dim xMin As Double = IIf(vSelLength > 0, 0, -vSelLength) + Dim xDouble As Double = InputBoxDouble("Please enter a number between " & xMin & " and " & xMax & ".", xMin, xMax, , vSelHalf) + If xDouble = Double.PositiveInfinity Then Return + + vSelHalf = xDouble + ValidateSelection() + RefreshPanelAll() + POStatusRefresh() + End Sub + + Private Sub BVCReverse_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BVCReverse.Click + vSelStart += vSelLength + vSelHalf -= vSelLength + vSelLength *= -1 + ValidateSelection() + RefreshPanelAll() + POStatusRefresh() + End Sub + + Private Sub AutoSaveTimer_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles AutoSaveTimer.Tick + Dim xTime As Date = Now + Dim xFileName As String + With xTime + xFileName = My.Application.Info.DirectoryPath & "\AutoSave_" & + .Year & "_" & .Month & "_" & .Day & "_" & .Hour & "_" & .Minute & "_" & .Second & "_" & .Millisecond & ".IBMSC" + End With + 'My.Computer.FileSystem.WriteAllText(xFileName, SaveiBMSC, False, System.Text.Encoding.Unicode) + SaveiBMSC(xFileName) + + On Error Resume Next + If PreviousAutoSavedFileName <> "" Then IO.File.Delete(PreviousAutoSavedFileName) + On Error GoTo 0 + + PreviousAutoSavedFileName = xFileName + End Sub + + Private Sub CWAVMultiSelect_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CWAVMultiSelect.CheckedChanged + WAVMultiSelect = CWAVMultiSelect.Checked + LWAV.SelectionMode = IIf(WAVMultiSelect, SelectionMode.MultiExtended, SelectionMode.One) + End Sub + + Private Sub CWAVChangeLabel_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CWAVChangeLabel.CheckedChanged + WAVChangeLabel = CWAVChangeLabel.Checked + End Sub + + Private Sub BWAVUp_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BWAVUp.Click + If LWAV.SelectedIndex = -1 Then Return + + Dim xUndo As UndoRedo.LinkedURCmd = Nothing + Dim xRedo As UndoRedo.LinkedURCmd = New UndoRedo.Void + Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo + + Dim xIndices(LWAV.SelectedIndices.Count - 1) As Integer + LWAV.SelectedIndices.CopyTo(xIndices, 0) + + Dim xS As Integer + For xS = 0 To 1294 + If Array.IndexOf(xIndices, xS) = -1 Then Exit For + Next + + Dim xStr As String = "" + Dim xIndex As Integer = -1 + For xI1 As Integer = xS To 1294 + xIndex = Array.IndexOf(xIndices, xI1) + If xIndex <> -1 Then + xStr = hWAV(xI1 + 1) + hWAV(xI1 + 1) = hWAV(xI1) + hWAV(xI1) = xStr + + LWAV.Items.Item(xI1) = C10to36(xI1 + 1) & ": " & hWAV(xI1 + 1) + LWAV.Items.Item(xI1 - 1) = C10to36(xI1) & ": " & hWAV(xI1) + + If Not WAVChangeLabel Then GoTo 1100 + + Dim xL1 As String = C10to36(xI1) + Dim xL2 As String = C10to36(xI1 + 1) + For xI2 As Integer = 1 To UBound(Notes) + If IsColumnNumeric(Notes(xI2).ColumnIndex) Then Continue For + + If C10to36(Notes(xI2).Value \ 10000) = xL1 Then + Me.RedoRelabelNote(Notes(xI2), xI1 * 10000 + 10000, xUndo, xRedo) + Notes(xI2).Value = xI1 * 10000 + 10000 + + ElseIf C10to36(Notes(xI2).Value \ 10000) = xL2 Then + Me.RedoRelabelNote(Notes(xI2), xI1 * 10000, xUndo, xRedo) + Notes(xI2).Value = xI1 * 10000 + + End If + Next + +1100: xIndices(xIndex) += -1 + End If + Next + + LWAV.SelectedIndices.Clear() + For xI1 As Integer = 0 To UBound(xIndices) + LWAV.SelectedIndices.Add(xIndices(xI1)) + Next + + AddUndo(xUndo, xBaseRedo.Next) + RefreshPanelAll() + POStatusRefresh() + End Sub + + Private Sub BWAVDown_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BWAVDown.Click + If LWAV.SelectedIndex = -1 Then Return + + Dim xUndo As UndoRedo.LinkedURCmd = Nothing + Dim xRedo As UndoRedo.LinkedURCmd = New UndoRedo.Void + Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo + + Dim xIndices(LWAV.SelectedIndices.Count - 1) As Integer + LWAV.SelectedIndices.CopyTo(xIndices, 0) + + Dim xS As Integer + For xS = 1294 To 0 Step -1 + If Array.IndexOf(xIndices, xS) = -1 Then Exit For + Next + + Dim xStr As String = "" + Dim xIndex As Integer = -1 + For xI1 As Integer = xS To 0 Step -1 + xIndex = Array.IndexOf(xIndices, xI1) + If xIndex <> -1 Then + xStr = hWAV(xI1 + 1) + hWAV(xI1 + 1) = hWAV(xI1 + 2) + hWAV(xI1 + 2) = xStr + + LWAV.Items.Item(xI1) = C10to36(xI1 + 1) & ": " & hWAV(xI1 + 1) + LWAV.Items.Item(xI1 + 1) = C10to36(xI1 + 2) & ": " & hWAV(xI1 + 2) + + If Not WAVChangeLabel Then GoTo 1100 + + Dim xL1 As String = C10to36(xI1 + 2) + Dim xL2 As String = C10to36(xI1 + 1) + For xI2 As Integer = 1 To UBound(Notes) + If IsColumnNumeric(Notes(xI2).ColumnIndex) Then Continue For + + If C10to36(Notes(xI2).Value \ 10000) = xL1 Then + Me.RedoRelabelNote(Notes(xI2), xI1 * 10000 + 10000, xUndo, xRedo) + Notes(xI2).Value = xI1 * 10000 + 10000 + + ElseIf C10to36(Notes(xI2).Value \ 10000) = xL2 Then + Me.RedoRelabelNote(Notes(xI2), xI1 * 10000 + 20000, xUndo, xRedo) + Notes(xI2).Value = xI1 * 10000 + 20000 + + End If + Next + +1100: xIndices(xIndex) += 1 + End If + Next + + LWAV.SelectedIndices.Clear() + For xI1 As Integer = 0 To UBound(xIndices) + LWAV.SelectedIndices.Add(xIndices(xI1)) + Next + + AddUndo(xUndo, xBaseRedo.Next) + RefreshPanelAll() + POStatusRefresh() + End Sub + + Private Sub BWAVBrowse_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BWAVBrowse.Click + Dim xDWAV As New OpenFileDialog + xDWAV.DefaultExt = "wav" + xDWAV.Filter = Strings.FileType._wave & "|*.wav;*.ogg;*.mp3|" & + Strings.FileType.WAV & "|*.wav|" & + Strings.FileType.OGG & "|*.ogg|" & + Strings.FileType.MP3 & "|*.mp3|" & + Strings.FileType._all & "|*.*" + xDWAV.InitialDirectory = IIf(ExcludeFileName(FileName) = "", InitPath, ExcludeFileName(FileName)) + xDWAV.Multiselect = WAVMultiSelect + + If xDWAV.ShowDialog = Windows.Forms.DialogResult.Cancel Then Exit Sub + InitPath = ExcludeFileName(xDWAV.FileName) + + AddToPOWAV(xDWAV.FileNames) + End Sub + + Private Sub BWAVRemove_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BWAVRemove.Click + Dim xIndices(LWAV.SelectedIndices.Count - 1) As Integer + LWAV.SelectedIndices.CopyTo(xIndices, 0) + For xI1 As Integer = 0 To UBound(xIndices) + hWAV(xIndices(xI1) + 1) = "" + LWAV.Items.Item(xIndices(xI1)) = C10to36(xIndices(xI1) + 1) & ": " + Next + + LWAV.SelectedIndices.Clear() + For xI1 As Integer = 0 To UBound(xIndices) + LWAV.SelectedIndices.Add(xIndices(xI1)) + Next + + If IsSaved Then SetIsSaved(False) + RefreshPanelAll() + POStatusRefresh() + End Sub + + Private Sub mnMain_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles mnMain.MouseDown ', TBMain.MouseDown ', pttl.MouseDown, pIsSaved.MouseDown + If e.Button = Windows.Forms.MouseButtons.Left Then + ReleaseCapture() + SendMessage(Me.Handle, &H112, &HF012, 0) + If e.Clicks = 2 Then + If Me.WindowState = FormWindowState.Maximized Then Me.WindowState = FormWindowState.Normal Else Me.WindowState = FormWindowState.Maximized + End If + ElseIf e.Button = Windows.Forms.MouseButtons.Right Then + 'mnSys.Show(sender, e.Location) + End If + End Sub + + Private Sub mnSelectAll_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnSelectAll.Click + If Not (PMainIn.Focused OrElse PMainInL.Focused Or PMainInR.Focused) Then Exit Sub + For xI1 As Integer = 1 To UBound(Notes) + Notes(xI1).Selected = nEnabled(Notes(xI1).ColumnIndex) + Next + If TBTimeSelect.Checked Then + CalculateGreatestVPosition() + vSelStart = 0 + vSelLength = MeasureBottom(MeasureAtDisplacement(GreatestVPosition)) + MeasureLength(MeasureAtDisplacement(GreatestVPosition)) + End If + RefreshPanelAll() + POStatusRefresh() + End Sub + + Private Sub mnDelete_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnDelete.Click + If Not (PMainIn.Focused OrElse PMainInL.Focused Or PMainInR.Focused) Then Exit Sub + + Dim xUndo As UndoRedo.LinkedURCmd = Nothing + Dim xRedo As UndoRedo.LinkedURCmd = New UndoRedo.Void + Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo + + Me.RedoRemoveNoteSelected(True, xUndo, xRedo) + RemoveNotes(True) + + AddUndo(xUndo, xBaseRedo.Next) + CalculateGreatestVPosition() + CalculateTotalPlayableNotes() + RefreshPanelAll() + POStatusRefresh() + End Sub + + Private Sub mnUpdate_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) + Process.Start("http://www.cs.mcgill.ca/~ryang6/iBMSC/") + End Sub + + Private Sub mnUpdateC_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) + Process.Start("http://bbs.rohome.net/thread-1074065-1-1.html") + End Sub + + Private Sub mnQuit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnQuit.Click + Close() + End Sub + + + Private Sub EnableDWM() + mnMain.BackColor = Color.Black + 'TBMain.BackColor = Color.FromArgb(64, 64, 64) + + For Each xmn As ToolStripMenuItem In mnMain.Items + xmn.ForeColor = Color.White + AddHandler xmn.DropDownClosed, AddressOf mn_DropDownClosed + AddHandler xmn.DropDownOpened, AddressOf mn_DropDownOpened + AddHandler xmn.MouseEnter, AddressOf mn_MouseEnter + AddHandler xmn.MouseLeave, AddressOf mn_MouseLeave + Next + End Sub + + Private Sub DisableDWM() + mnMain.BackColor = SystemColors.Control + 'TBMain.BackColor = SystemColors.Control + + For Each xmn As ToolStripMenuItem In mnMain.Items + xmn.ForeColor = SystemColors.ControlText + RemoveHandler xmn.DropDownClosed, AddressOf mn_DropDownClosed + RemoveHandler xmn.DropDownOpened, AddressOf mn_DropDownOpened + RemoveHandler xmn.MouseEnter, AddressOf mn_MouseEnter + RemoveHandler xmn.MouseLeave, AddressOf mn_MouseLeave + Next + End Sub + + Private Sub ttlIcon_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) + 'ttlIcon.Image = My.Resources.icon2_16 + 'mnSys.Show(ttlIcon, 0, ttlIcon.Height) + End Sub + Private Sub ttlIcon_MouseEnter(ByVal sender As Object, ByVal e As System.EventArgs) + 'ttlIcon.Image = My.Resources.icon2_16_highlight + End Sub + Private Sub ttlIcon_MouseLeave(ByVal sender As Object, ByVal e As System.EventArgs) + 'ttlIcon.Image = My.Resources.icon2_16 + End Sub + + Private Sub mnSMenu_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnSMenu.CheckedChanged + mnMain.Visible = mnSMenu.Checked + End Sub + Private Sub mnSTB_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnSTB.CheckedChanged + TBMain.Visible = mnSTB.Checked + End Sub + Private Sub mnSOP_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnSOP.CheckedChanged + POptions.Visible = mnSOP.Checked + End Sub + Private Sub mnSStatus_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnSStatus.CheckedChanged + pStatus.Visible = mnSStatus.Checked + End Sub + Private Sub mnSLSplitter_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnSLSplitter.CheckedChanged + SpL.Visible = mnSLSplitter.Checked + End Sub + Private Sub mnSRSplitter_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnSRSplitter.CheckedChanged + SpR.Visible = mnSRSplitter.Checked + End Sub + Private Sub CGShow_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CGShow.CheckedChanged + gShowGrid = CGShow.Checked + RefreshPanelAll() + End Sub + Private Sub CGShowS_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CGShowS.CheckedChanged + gShowSubGrid = CGShowS.Checked + RefreshPanelAll() + End Sub + Private Sub CGShowBG_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CGShowBG.CheckedChanged + gShowBG = CGShowBG.Checked + RefreshPanelAll() + End Sub + Private Sub CGShowM_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CGShowM.CheckedChanged + gShowMeasureNumber = CGShowM.Checked + RefreshPanelAll() + End Sub + Private Sub CGShowV_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CGShowV.CheckedChanged + gShowVerticalLine = CGShowV.Checked + RefreshPanelAll() + End Sub + Private Sub CGShowMB_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CGShowMB.CheckedChanged + gShowMeasureBar = CGShowMB.Checked + RefreshPanelAll() + End Sub + Private Sub CGShowC_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CGShowC.CheckedChanged + gShowC = CGShowC.Checked + RefreshPanelAll() + End Sub + Private Sub CGBLP_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CGBLP.CheckedChanged + gDisplayBGAColumn = CGBLP.Checked + + column(niBGA).isVisible = gDisplayBGAColumn + column(niLAYER).isVisible = gDisplayBGAColumn + column(niPOOR).isVisible = gDisplayBGAColumn + column(niS4).isVisible = gDisplayBGAColumn + + If IsInitializing Then Exit Sub + For xI1 As Integer = 1 To UBound(Notes) + Notes(xI1).Selected = Notes(xI1).Selected And nEnabled(Notes(xI1).ColumnIndex) + Next + 'AddUndo(xUndo, xRedo) + UpdateColumnsX() + RefreshPanelAll() + End Sub + Private Sub CGSCROLL_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CGSCROLL.CheckedChanged + gSCROLL = CGSCROLL.Checked + + column(niSCROLL).isVisible = gSCROLL + + If IsInitializing Then Exit Sub + For xI1 As Integer = 1 To UBound(Notes) + Notes(xI1).Selected = Notes(xI1).Selected And nEnabled(Notes(xI1).ColumnIndex) + Next + 'AddUndo(xUndo, xRedo) + UpdateColumnsX() + RefreshPanelAll() + End Sub + Private Sub CGSTOP_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CGSTOP.CheckedChanged + gSTOP = CGSTOP.Checked + + column(niSTOP).isVisible = gSTOP + + If IsInitializing Then Exit Sub + For xI1 As Integer = 1 To UBound(Notes) + Notes(xI1).Selected = Notes(xI1).Selected And nEnabled(Notes(xI1).ColumnIndex) + Next + 'AddUndo(xUndo, xRedo) + UpdateColumnsX() + RefreshPanelAll() + End Sub + Private Sub CGBPM_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CGBPM.CheckedChanged + 'Dim xUndo As UndoRedo.LinkedURCmd = Nothing + 'Dim xRedo As UndoRedo.LinkedURCmd = Nothing + 'Me.RedoChangeVisibleColumns(gBLP, gSTOP, iPlayer, gBLP, CGSTOP.Checked, iPlayer, xUndo, xRedo) + gBPM = CGBPM.Checked + + column(niBPM).isVisible = gBPM + + If IsInitializing Then Exit Sub + For xI1 As Integer = 1 To UBound(Notes) + Notes(xI1).Selected = Notes(xI1).Selected And nEnabled(Notes(xI1).ColumnIndex) + Next + 'AddUndo(xUndo, xRedo) + UpdateColumnsX() + RefreshPanelAll() + End Sub + + Private Sub CGDisableVertical_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CGDisableVertical.CheckedChanged + DisableVerticalMove = CGDisableVertical.Checked + End Sub + + Private Sub CBeatPreserve_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CBeatPreserve.Click, CBeatMeasure.Click, CBeatCut.Click, CBeatScale.Click + 'If Not sender.Checked Then Exit Sub + Dim xBeatList() As RadioButton = {CBeatPreserve, CBeatMeasure, CBeatCut, CBeatScale} + BeatChangeMode = Array.IndexOf(Of RadioButton)(xBeatList, sender) + 'For xI1 As Integer = 0 To mnBeat.Items.Count - 1 + 'If xI1 <> BeatChangeMode Then CType(mnBeat.Items(xI1), ToolStripMenuItem).Checked = False + 'Next + 'sender.Checked = True + End Sub + + + Private Sub tBeatValue_LostFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles tBeatValue.LostFocus + Dim a As Double + If Double.TryParse(tBeatValue.Text, a) Then + If a <= 0.0# Or a >= 1000.0# Then tBeatValue.BackColor = Color.FromArgb(&HFFFFC0C0) Else tBeatValue.BackColor = Nothing + + tBeatValue.Text = a + End If + End Sub + + + + Private Sub ApplyBeat(ByVal xRatio As Double, ByVal xDisplay As String) + SortByVPositionInsertion() + + Dim xUndo As UndoRedo.LinkedURCmd = Nothing + Dim xRedo As UndoRedo.LinkedURCmd = New UndoRedo.Void + Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo + + Me.RedoChangeMeasureLengthSelected(192 * xRatio, xUndo, xRedo) + + Dim xIndices(LBeat.SelectedIndices.Count - 1) As Integer + LBeat.SelectedIndices.CopyTo(xIndices, 0) + + + For Each xI1 As Integer In xIndices + Dim dLength As Double = xRatio * 192.0R - MeasureLength(xI1) + Dim dRatio As Double = xRatio * 192.0R / MeasureLength(xI1) + + Dim xBottom As Double = 0 + For xI2 As Integer = 0 To xI1 - 1 + xBottom += MeasureLength(xI2) + Next + Dim xUpBefore As Double = xBottom + MeasureLength(xI1) + Dim xUpAfter As Double = xUpBefore + dLength + + Select Case BeatChangeMode + Case 1 +case2: Dim xI0 As Integer + + If NTInput Then + For xI0 = 1 To UBound(Notes) + If Notes(xI0).VPosition >= xUpBefore Then Exit For + If Notes(xI0).VPosition + Notes(xI0).Length >= xUpBefore Then + Me.RedoLongNoteModify(Notes(xI0), Notes(xI0).VPosition, Notes(xI0).Length + dLength, xUndo, xRedo) + Notes(xI0).Length += dLength + End If + Next + Else + For xI0 = 1 To UBound(Notes) + If Notes(xI0).VPosition >= xUpBefore Then Exit For + Next + End If + + For xI9 As Integer = xI0 To UBound(Notes) + Me.RedoLongNoteModify(Notes(xI9), Notes(xI9).VPosition + dLength, Notes(xI9).Length, xUndo, xRedo) + Notes(xI9).VPosition += dLength + Next + + Case 2 + If dLength < 0 Then + If NTInput Then + Dim xI0 As Integer = 1 + Dim xU As Integer = UBound(Notes) + Do While xI0 <= xU + If Notes(xI0).VPosition < xUpAfter Then + If Notes(xI0).VPosition + Notes(xI0).Length >= xUpAfter And Notes(xI0).VPosition + Notes(xI0).Length < xUpBefore Then + Dim nLen As Double = xUpAfter - Notes(xI0).VPosition - 1.0R + Me.RedoLongNoteModify(Notes(xI0), Notes(xI0).VPosition, nLen, xUndo, xRedo) + Notes(xI0).Length = nLen + End If + ElseIf Notes(xI0).VPosition < xUpBefore Then + If Notes(xI0).VPosition + Notes(xI0).Length < xUpBefore Then + Me.RedoRemoveNote(Notes(xI0), xUndo, xRedo) + RemoveNote(xI0) + xI0 -= 1 + xU -= 1 + Else + Dim nLen As Double = Notes(xI0).Length - xUpBefore + Notes(xI0).VPosition + Me.RedoLongNoteModify(Notes(xI0), xUpBefore, nLen, xUndo, xRedo) + Notes(xI0).Length = nLen + Notes(xI0).VPosition = xUpBefore + End If + End If + xI0 += 1 + Loop + Else + Dim xI0 As Integer + Dim xI9 As Integer + For xI0 = 1 To UBound(Notes) + If Notes(xI0).VPosition >= xUpAfter Then Exit For + Next + For xI9 = xI0 To UBound(Notes) + If Notes(xI9).VPosition >= xUpBefore Then Exit For + Next + + For xI8 As Integer = xI0 To xI9 - 1 + Me.RedoRemoveNote(Notes(xI8), xUndo, xRedo) + Next + For xI8 As Integer = xI9 To UBound(Notes) + Notes(xI8 - xI9 + xI0) = Notes(xI8) + Next + ReDim Preserve Notes(UBound(Notes) - xI9 + xI0) + End If + End If + + GoTo case2 + + Case 3 + If NTInput Then + For xI0 As Integer = 1 To UBound(Notes) + If Notes(xI0).VPosition < xBottom Then + If Notes(xI0).VPosition + Notes(xI0).Length > xUpBefore Then + Me.RedoLongNoteModify(Notes(xI0), Notes(xI0).VPosition, Notes(xI0).Length + dLength, xUndo, xRedo) + Notes(xI0).Length += dLength + ElseIf Notes(xI0).VPosition + Notes(xI0).Length > xBottom Then + Dim nLen As Double = (Notes(xI0).Length + Notes(xI0).VPosition - xBottom) * dRatio + xBottom - Notes(xI0).VPosition + Me.RedoLongNoteModify(Notes(xI0), Notes(xI0).VPosition, nLen, xUndo, xRedo) + Notes(xI0).Length = nLen + End If + ElseIf Notes(xI0).VPosition < xUpBefore Then + If Notes(xI0).VPosition + Notes(xI0).Length > xUpBefore Then + Dim nLen As Double = (xUpBefore - Notes(xI0).VPosition) * dRatio + Notes(xI0).VPosition + Notes(xI0).Length - xUpBefore + Dim nVPos As Double = (Notes(xI0).VPosition - xBottom) * dRatio + xBottom + Me.RedoLongNoteModify(Notes(xI0), nVPos, nLen, xUndo, xRedo) + Notes(xI0).Length = nLen + Notes(xI0).VPosition = nVPos + Else + Dim nLen As Double = Notes(xI0).Length * dRatio + Dim nVPos As Double = (Notes(xI0).VPosition - xBottom) * dRatio + xBottom + Me.RedoLongNoteModify(Notes(xI0), nVPos, nLen, xUndo, xRedo) + Notes(xI0).Length = nLen + Notes(xI0).VPosition = nVPos + End If + Else + Me.RedoLongNoteModify(Notes(xI0), Notes(xI0).VPosition + dLength, Notes(xI0).Length, xUndo, xRedo) + Notes(xI0).VPosition += dLength + End If + Next + Else + Dim xI0 As Integer + Dim xI9 As Integer + For xI0 = 1 To UBound(Notes) + If Notes(xI0).VPosition >= xBottom Then Exit For + Next + For xI9 = xI0 To UBound(Notes) + If Notes(xI9).VPosition >= xUpBefore Then Exit For + Next + + For xI8 As Integer = xI0 To xI9 - 1 + Dim nVP As Double = (Notes(xI8).VPosition - xBottom) * dRatio + xBottom + Me.RedoLongNoteModify(Notes(xI0), nVP, Notes(xI0).Length, xUndo, xRedo) + Notes(xI8).VPosition = nVP + Next + + 'GoTo case2 + + For xI8 As Integer = xI9 To UBound(Notes) + Me.RedoLongNoteModify(Notes(xI8), Notes(xI8).VPosition + dLength, Notes(xI8).Length, xUndo, xRedo) + Notes(xI8).VPosition += dLength + Next + End If + + End Select + + MeasureLength(xI1) = xRatio * 192.0R + LBeat.Items(xI1) = Add3Zeros(xI1) & ": " & xDisplay + Next + UpdateMeasureBottom() + 'xUndo &= vbCrLf & xUndo2 + 'xRedo &= vbCrLf & xRedo2 + + LBeat.SelectedIndices.Clear() + For xI1 As Integer = 0 To UBound(xIndices) + LBeat.SelectedIndices.Add(xIndices(xI1)) + Next + + AddUndo(xUndo, xBaseRedo.Next) + SortByVPositionInsertion() + UpdatePairing() + CalculateTotalPlayableNotes() + CalculateGreatestVPosition() + RefreshPanelAll() + POStatusRefresh() + End Sub + + Private Sub BBeatApply_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BBeatApply.Click + Dim xxD As Integer = nBeatD.Value + Dim xxN As Integer = nBeatN.Value + Dim xxRatio As Double = xxN / xxD + + ApplyBeat(xxRatio, xxRatio & " ( " & xxN & " / " & xxD & " ) ") + End Sub + + Private Sub BBeatApplyV_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BBeatApplyV.Click + Dim a As Double + If Double.TryParse(tBeatValue.Text, a) Then + If a <= 0.0# Or a >= 1000.0# Then System.Media.SystemSounds.Hand.Play() : Exit Sub + + Dim xxD As Long = GetDenominator(a) + + ApplyBeat(a, a & IIf(xxD > 10000, "", " ( " & CLng(a * xxD) & " / " & xxD & " ) ")) + End If + End Sub + + + Private Sub BHStageFile_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BHStageFile.Click, BHBanner.Click, BHBackBMP.Click + Dim xDiag As New OpenFileDialog + xDiag.Filter = Strings.FileType._image & "|*.bmp;*.png;*.jpg;*.gif|" & + Strings.FileType._all & "|*.*" + xDiag.InitialDirectory = IIf(ExcludeFileName(FileName) = "", InitPath, ExcludeFileName(FileName)) + xDiag.DefaultExt = "png" + + If xDiag.ShowDialog = Windows.Forms.DialogResult.Cancel Then Exit Sub + InitPath = ExcludeFileName(xDiag.FileName) + + If [Object].ReferenceEquals(sender, BHStageFile) Then + THStageFile.Text = GetFileName(xDiag.FileName) + ElseIf [Object].ReferenceEquals(sender, BHBanner) Then + THBanner.Text = GetFileName(xDiag.FileName) + ElseIf [Object].ReferenceEquals(sender, BHBackBMP) Then + THBackBMP.Text = GetFileName(xDiag.FileName) + End If + End Sub + + Private Sub Switches_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles _ + POHeaderSwitch.CheckedChanged, + POGridSwitch.CheckedChanged, + POWaveFormSwitch.CheckedChanged, + POWAVSwitch.CheckedChanged, + POBeatSwitch.CheckedChanged, + POExpansionSwitch.CheckedChanged + + Try + Dim Source As CheckBox = CType(sender, CheckBox) + Dim Target As Panel = Nothing + + If Object.ReferenceEquals(sender, Nothing) Then : Exit Sub + ElseIf Object.ReferenceEquals(sender, POHeaderSwitch) Then : Target = POHeaderInner + ElseIf Object.ReferenceEquals(sender, POGridSwitch) Then : Target = POGridInner + ElseIf Object.ReferenceEquals(sender, POWaveFormSwitch) Then : Target = POWaveFormInner + ElseIf Object.ReferenceEquals(sender, POWAVSwitch) Then : Target = POWAVInner + ElseIf Object.ReferenceEquals(sender, POBeatSwitch) Then : Target = POBeatInner + ElseIf Object.ReferenceEquals(sender, POExpansionSwitch) Then : Target = POExpansionInner + End If + + If Source.Checked Then + Target.Visible = True + Else + Target.Visible = False + End If + + Catch ex As Exception + + End Try + End Sub + + Private Sub Expanders_CheckChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles _ + POHeaderExpander.CheckedChanged, + POGridExpander.CheckedChanged, + POWaveFormExpander.CheckedChanged, + POWAVExpander.CheckedChanged, + POBeatExpander.CheckedChanged + + Try + Dim Source As CheckBox = CType(sender, CheckBox) + Dim Target As Panel = Nothing + 'Dim TargetParent As Panel = Nothing + + If Object.ReferenceEquals(sender, Nothing) Then : Exit Sub + ElseIf Object.ReferenceEquals(sender, POHeaderExpander) Then : Target = POHeaderPart2 ' : TargetParent = POHeaderInner + ElseIf Object.ReferenceEquals(sender, POGridExpander) Then : Target = POGridPart2 ' : TargetParent = POGridInner + ElseIf Object.ReferenceEquals(sender, POWaveFormExpander) Then : Target = POWaveFormPart2 ' : TargetParent = POWaveFormInner + ElseIf Object.ReferenceEquals(sender, POWAVExpander) Then : Target = POWAVPart2 ' : TargetParent = POWaveFormInner + ElseIf Object.ReferenceEquals(sender, POBeatExpander) Then : Target = POBeatPart2 ' : TargetParent = POWaveFormInner + End If + + If Source.Checked Then + Target.Visible = True + 'Source.Image = My.Resources.Collapse + Else + Target.Visible = False + 'Source.Image = My.Resources.Expand + End If + + Catch ex As Exception + + End Try + + End Sub + + Private Sub VerticalResizer_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles POWAVResizer.MouseDown, POBeatResizer.MouseDown, POExpansionResizer.MouseDown + tempResize = e.Y + End Sub + + Private Sub HorizontalResizer_MouseDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles POptionsResizer.MouseDown, SpL.MouseDown, SpR.MouseDown + tempResize = e.X + End Sub + + Private Sub POResizer_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles POWAVResizer.MouseMove, POBeatResizer.MouseMove, POExpansionResizer.MouseMove + If e.Button <> Windows.Forms.MouseButtons.Left Then Exit Sub + If e.Y = tempResize Then Exit Sub + + Try + Dim Source As Button = CType(sender, Button) + Dim Target As Panel = Source.Parent + + Dim xHeight As Integer = Target.Height + e.Y - tempResize + If xHeight < 10 Then xHeight = 10 + Target.Height = xHeight + + Target.Refresh() + Catch ex As Exception + + End Try + End Sub + + Private Sub POptionsResizer_MouseMove(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles POptionsResizer.MouseMove + If e.Button <> Windows.Forms.MouseButtons.Left Then Exit Sub + If e.X = tempResize Then Exit Sub + + Try + Dim xWidth As Integer = POptionsScroll.Width - e.X + tempResize + If xWidth < 25 Then xWidth = 25 + POptionsScroll.Width = xWidth + + Me.Refresh() + Application.DoEvents() + Catch ex As Exception + + End Try + End Sub + + Private Sub SpR_MouseMove(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles SpR.MouseMove + If e.Button <> Windows.Forms.MouseButtons.Left Then Exit Sub + If e.X = tempResize Then Exit Sub + + Try + Dim xWidth As Integer = PMainR.Width - e.X + tempResize + If xWidth < 0 Then xWidth = 0 + PMainR.Width = xWidth + + Me.ToolStripContainer1.Refresh() + Application.DoEvents() + Catch ex As Exception + + End Try + End Sub + + Private Sub SpL_MouseMove(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles SpL.MouseMove + If e.Button <> Windows.Forms.MouseButtons.Left Then Exit Sub + If e.X = tempResize Then Exit Sub + + Try + Dim xWidth As Integer = PMainL.Width + e.X - tempResize + If xWidth < 0 Then xWidth = 0 + PMainL.Width = xWidth + + Me.ToolStripContainer1.Refresh() + Application.DoEvents() + Catch ex As Exception + + End Try + End Sub + + Private Sub mnGotoMeasure_Click(sender As Object, e As EventArgs) Handles mnGotoMeasure.Click + Dim s = InputBox(Strings.Messages.PromptEnterMeasure, "Enter Measure") + + Dim i As Integer + If Int32.TryParse(s, i) Then + If i < 0 Or i > 999 Then + Exit Sub + End If + + PanelVScroll(PanelFocus) = -MeasureBottom(i) + End If + End Sub + + ' Generic shuffle for basic type arrays + Public Function Shuffle(Of T)(items As T(), Len As Integer) + Dim temp As T + Dim j As Int32 + + For i As Int32 = items.Count - 1 To 0 Step -1 + ' Pick an item for position i. + j = Int(Len * Rnd()) + ' Swap + temp = items(i) + items(i) = items(j) + items(j) = temp + Next i + Return items + End Function + + Private Sub POBSRandom_Click(sender As Object, e As EventArgs) Handles POBSRandom.Click + Dim xI1 As Integer + Dim xI2 As Integer + Dim xUndo As UndoRedo.LinkedURCmd = Nothing + Dim xRedo As UndoRedo.LinkedURCmd = New UndoRedo.Void + Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo + 'xRedo &= sCmdKM(niA1, .VPosition, .Value, IIf(NTInput, .Length, .LongNote), .Hidden, RealColumnToEnabled(niA7) - RealColumnToEnabled(niA1), 0, True) & vbCrLf + 'xUndo &= sCmdKM(niA7, .VPosition, .Value, IIf(NTInput, .Length, .LongNote), .Hidden, RealColumnToEnabled(niA1) - RealColumnToEnabled(niA7), 0, True) & vbCrLf + + ' Array 0: Unmodified array + ' Array 1: Modified array based on range + ' Array R: Array 1 reversed + Dim xniArray0 = New Integer() {niA1, niA2, niA3, niA4, niA5, niA6, niA7, niA8, niD1, niD2, niD3, niD4, niD5, niD6, niD7, niD8} + ' Dim xniArray1 = Integer() ' xniArray0 + + ' New function: Declare an array to see the range of selected notes. B columns ignored. + + Dim xRangeL As Integer = niB ' Big number + Dim xRangeR As Integer = 0 ' Smol number + + ' Range finder + For xI1 = 1 To UBound(Notes) + If Not Notes(xI1).Selected Then Continue For + If xRangeL > Notes(xI1).ColumnIndex Then xRangeL = Notes(xI1).ColumnIndex + If xRangeR < Notes(xI1).ColumnIndex Then xRangeR = Notes(xI1).ColumnIndex + Next + + ' Modify xniArray based on range + ' Out of range + If xRangeL > niD8 Or xRangeR < niA1 Then GoTo DoNothing + + ' Semi-in Range + ' Cut off left side + If xRangeL < niA1 Then + xRangeL = 0 + GoTo Skip1 + End If + + For xI1 = 0 To xniArray0.Length + If xniArray0(xI1) = xRangeL Then + xRangeL = xI1 + Exit For + End If + Next + +Skip1: + ' Cut off right side + If xRangeR > niD8 Then + xRangeR = xniArray0.Length + GoTo Skip2 + End If + + For xI1 = 0 To xniArray0.Length + If xniArray0(xI1) = xRangeR Then + xRangeR = xI1 + 1 + Exit For + End If + Next + +Skip2: + + Dim xniArray1(xRangeR - xRangeL - 1) + For xI1 = 0 To xRangeR - xRangeL - 1 + xniArray1(xI1) = xniArray0(xI1 + xRangeL) + Next + + Dim xniArrayLen = xniArray1.Length + ' xniArrayR: Randomized array + Dim xniArrayR = xniArray1.Clone() + + Dim xCol As Integer + For xI1 = 1 To UBound(Notes) + If Not Notes(xI1).Selected Then Continue For + Shuffle(xniArrayR, xniArrayLen) + xCol = Notes(xI1).ColumnIndex + For xI2 = 0 To xniArrayLen - 1 + If xCol = xniArray1(xI2) Then + xCol = xniArrayR(xI2) + Exit For + End If + + Next + + Me.RedoMoveNote(Notes(xI1), xCol, Notes(xI1).VPosition, xUndo, xRedo) + Notes(xI1).ColumnIndex = xCol + Next + +DoNothing: + + AddUndo(xUndo, xBaseRedo.Next) + UpdatePairing() + RefreshPanelAll() + End Sub + +End Class From b40713fd59767df92976e7e8aedaee3c50e04911 Mon Sep 17 00:00:00 2001 From: psyk2642 <60137590+psyk2642@users.noreply.github.com> Date: Sun, 1 Nov 2020 12:57:05 +0800 Subject: [PATCH 008/257] Update README.md --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 12ba287b8..805cb569b 100644 --- a/README.md +++ b/README.md @@ -13,7 +13,8 @@ Changes in this fork * Fixed the search function such that notes on lane A8 and D8 are now searchable. * Fixed the mirror function such that notes between A1 and D8 are reflected locally. * Added Random and S-Random. For S-random, note overlapping can occur. - +* Fixed the Statistic Label not including notes between D1-D8. Statistic window still not fixed. +* Added a display for recommended #TOTAL. Check appveyor for automated builds. [![Build status](https://ci.appveyor.com/api/projects/status/m7iygj9sje2yqf43?svg=true)](https://ci.appveyor.com/project/zardoru/ibmsc) From df65047059b2cd444586a06d23c5dac642ea9f31 Mon Sep 17 00:00:00 2001 From: psyk2642 <60137590+psyk2642@users.noreply.github.com> Date: Sun, 1 Nov 2020 14:12:07 +0800 Subject: [PATCH 009/257] Total and #Total fixes Fixed the Statistic total number and added recommended #Total value. --- iBMSC/MainWindow.designer.vb | 24 ++++++++++++++++++++++++ iBMSC/MainWindow.vb | 5 +++-- 2 files changed, 27 insertions(+), 2 deletions(-) diff --git a/iBMSC/MainWindow.designer.vb b/iBMSC/MainWindow.designer.vb index 559355dce..ae9f0d3df 100644 --- a/iBMSC/MainWindow.designer.vb +++ b/iBMSC/MainWindow.designer.vb @@ -359,6 +359,8 @@ Partial Class MainWindow Me.HSL = New System.Windows.Forms.HScrollBar() Me.POptionsResizer = New System.Windows.Forms.Button() Me.ToolTipUniversal = New System.Windows.Forms.ToolTip(Me.components) + Me.ToolStrip1 = New System.Windows.Forms.ToolStrip() + Me.TBTotalValue = New System.Windows.Forms.ToolStripLabel() Me.cmnLanguage.SuspendLayout() Me.cmnTheme.SuspendLayout() Me.POptionsScroll.SuspendLayout() @@ -437,6 +439,7 @@ Partial Class MainWindow Me.PMain.SuspendLayout() Me.PMainR.SuspendLayout() Me.PMainL.SuspendLayout() + Me.ToolStrip1.SuspendLayout() Me.SuspendLayout() ' 'cmnLanguage @@ -3847,6 +3850,7 @@ Partial Class MainWindow ' 'ToolStripContainer1.TopToolStripPanel ' + Me.ToolStripContainer1.TopToolStripPanel.Controls.Add(Me.ToolStrip1) Me.ToolStripContainer1.TopToolStripPanel.Controls.Add(Me.mnMain) Me.ToolStripContainer1.TopToolStripPanel.Controls.Add(Me.TBMain) ' @@ -4048,6 +4052,22 @@ Partial Class MainWindow Me.POptionsResizer.TabStop = False Me.POptionsResizer.UseVisualStyleBackColor = True ' + 'ToolStrip1 + ' + Me.ToolStrip1.Dock = System.Windows.Forms.DockStyle.None + Me.ToolStrip1.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.TBTotalValue}) + Me.ToolStrip1.Location = New System.Drawing.Point(754, 23) + Me.ToolStrip1.Name = "ToolStrip1" + Me.ToolStrip1.Size = New System.Drawing.Size(56, 25) + Me.ToolStrip1.TabIndex = 0 + Me.ToolStrip1.Text = "ToolStrip1" + ' + 'TBTotalValue + ' + Me.TBTotalValue.Name = "TBTotalValue" + Me.TBTotalValue.Size = New System.Drawing.Size(13, 22) + Me.TBTotalValue.Text = "0" + ' 'MainWindow ' Me.AllowDrop = True @@ -4174,6 +4194,8 @@ Partial Class MainWindow Me.PMain.ResumeLayout(False) Me.PMainR.ResumeLayout(False) Me.PMainL.ResumeLayout(False) + Me.ToolStrip1.ResumeLayout(False) + Me.ToolStrip1.PerformLayout() Me.ResumeLayout(False) Me.PerformLayout() @@ -4516,4 +4538,6 @@ Partial Class MainWindow Friend WithEvents BConvertStop As ToolStripButton Friend WithEvents POBRandom As ToolStripMenuItem Friend WithEvents POBSRandom As ToolStripMenuItem + Friend WithEvents ToolStrip1 As ToolStrip + Friend WithEvents TBTotalValue As ToolStripLabel End Class diff --git a/iBMSC/MainWindow.vb b/iBMSC/MainWindow.vb index 1c9f525f0..f40669d14 100644 --- a/iBMSC/MainWindow.vb +++ b/iBMSC/MainWindow.vb @@ -2131,18 +2131,19 @@ StartCount: If Not NTInput Then If Not NTInput Then For xI1 = 1 To UBound(Notes) - If Notes(xI1).ColumnIndex >= niA1 And Notes(xI1).ColumnIndex <= niA8 Then xIAll += 1 + If Notes(xI1).ColumnIndex >= niA1 And Notes(xI1).ColumnIndex <= niD8 Then xIAll += 1 Next Else For xI1 = 1 To UBound(Notes) - If Notes(xI1).ColumnIndex >= niA1 And Notes(xI1).ColumnIndex <= niA8 Then + If Notes(xI1).ColumnIndex >= niA1 And Notes(xI1).ColumnIndex <= niD8 Then xIAll += 1 If Notes(xI1).Length <> 0 Then xIAll += 1 End If Next End If + TBTotalValue.Text = xIAll * 7.605 / (0.01 * xIAll + 6.5) TBStatistics.Text = xIAll End Sub From 33f6f289c4102273085ebb77ca0b4b1d45b1ecc5 Mon Sep 17 00:00:00 2001 From: psyk2642 <60137590+psyk2642@users.noreply.github.com> Date: Sun, 1 Nov 2020 14:13:13 +0800 Subject: [PATCH 010/257] Delete MainWindow.designer.vb --- MainWindow.designer.vb | 4543 ---------------------------------------- 1 file changed, 4543 deletions(-) delete mode 100644 MainWindow.designer.vb diff --git a/MainWindow.designer.vb b/MainWindow.designer.vb deleted file mode 100644 index ae9f0d3df..000000000 --- a/MainWindow.designer.vb +++ /dev/null @@ -1,4543 +0,0 @@ - -Partial Class MainWindow - Inherits System.Windows.Forms.Form - - 'Form 重写 Dispose,以清理组件列表。 - - Protected Overrides Sub Dispose(ByVal disposing As Boolean) - If disposing AndAlso components IsNot Nothing Then - components.Dispose() - End If - MyBase.Dispose(disposing) - End Sub - - 'Windows 窗体设计器所必需的 - Private components As System.ComponentModel.IContainer - - '注意: 以下过程是 Windows 窗体设计器所必需的 - '可以使用 Windows 窗体设计器修改它。 - '不要使用代码编辑器修改它。 - - Private Sub InitializeComponent() - Me.components = New System.ComponentModel.Container() - Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(MainWindow)) - Me.cmnLanguage = New System.Windows.Forms.ContextMenuStrip(Me.components) - Me.TBLangDef = New System.Windows.Forms.ToolStripMenuItem() - Me.TBLangRefresh = New System.Windows.Forms.ToolStripMenuItem() - Me.ToolStripSeparator9 = New System.Windows.Forms.ToolStripSeparator() - Me.TBLanguage = New System.Windows.Forms.ToolStripDropDownButton() - Me.mnLanguage = New System.Windows.Forms.ToolStripMenuItem() - Me.cmnTheme = New System.Windows.Forms.ContextMenuStrip(Me.components) - Me.TBThemeDef = New System.Windows.Forms.ToolStripMenuItem() - Me.TBThemeSave = New System.Windows.Forms.ToolStripMenuItem() - Me.TBThemeRefresh = New System.Windows.Forms.ToolStripMenuItem() - Me.TBThemeLoadComptability = New System.Windows.Forms.ToolStripMenuItem() - Me.ToolStripSeparator6 = New System.Windows.Forms.ToolStripSeparator() - Me.TBTheme = New System.Windows.Forms.ToolStripDropDownButton() - Me.mnTheme = New System.Windows.Forms.ToolStripMenuItem() - Me.POptionsScroll = New System.Windows.Forms.Panel() - Me.POptions = New System.Windows.Forms.Panel() - Me.POExpansion = New System.Windows.Forms.Panel() - Me.POExpansionInner = New System.Windows.Forms.Panel() - Me.TExpansion = New System.Windows.Forms.TextBox() - Me.POExpansionResizer = New System.Windows.Forms.Button() - Me.POExpansionSwitch = New System.Windows.Forms.CheckBox() - Me.POBeat = New System.Windows.Forms.Panel() - Me.POBeatInner = New System.Windows.Forms.TableLayoutPanel() - Me.POBeatExpander = New System.Windows.Forms.CheckBox() - Me.POBeatResizer = New System.Windows.Forms.Button() - Me.TableLayoutPanel7 = New System.Windows.Forms.TableLayoutPanel() - Me.nBeatD = New System.Windows.Forms.NumericUpDown() - Me.BBeatApplyV = New System.Windows.Forms.Button() - Me.nBeatN = New System.Windows.Forms.NumericUpDown() - Me.BBeatApply = New System.Windows.Forms.Button() - Me.Label7 = New System.Windows.Forms.Label() - Me.tBeatValue = New System.Windows.Forms.TextBox() - Me.LBeat = New System.Windows.Forms.ListBox() - Me.POBeatPart2 = New System.Windows.Forms.TableLayoutPanel() - Me.CBeatScale = New System.Windows.Forms.RadioButton() - Me.CBeatCut = New System.Windows.Forms.RadioButton() - Me.CBeatMeasure = New System.Windows.Forms.RadioButton() - Me.CBeatPreserve = New System.Windows.Forms.RadioButton() - Me.POBeatSwitch = New System.Windows.Forms.CheckBox() - Me.POWAV = New System.Windows.Forms.Panel() - Me.POWAVInner = New System.Windows.Forms.TableLayoutPanel() - Me.POWAVExpander = New System.Windows.Forms.CheckBox() - Me.LWAV = New System.Windows.Forms.ListBox() - Me.FlowLayoutPanel3 = New System.Windows.Forms.FlowLayoutPanel() - Me.BWAVUp = New System.Windows.Forms.Button() - Me.BWAVDown = New System.Windows.Forms.Button() - Me.BWAVBrowse = New System.Windows.Forms.Button() - Me.BWAVRemove = New System.Windows.Forms.Button() - Me.POWAVResizer = New System.Windows.Forms.Button() - Me.POWAVPart2 = New System.Windows.Forms.TableLayoutPanel() - Me.CWAVMultiSelect = New System.Windows.Forms.CheckBox() - Me.CWAVChangeLabel = New System.Windows.Forms.CheckBox() - Me.POWAVSwitch = New System.Windows.Forms.CheckBox() - Me.POWaveForm = New System.Windows.Forms.Panel() - Me.POWaveFormInner = New System.Windows.Forms.Panel() - Me.POWaveFormPart2 = New System.Windows.Forms.TableLayoutPanel() - Me.TWSaturation = New System.Windows.Forms.NumericUpDown() - Me.PictureBox2 = New System.Windows.Forms.PictureBox() - Me.TWTransparency = New System.Windows.Forms.NumericUpDown() - Me.PictureBox3 = New System.Windows.Forms.PictureBox() - Me.TWPrecision = New System.Windows.Forms.NumericUpDown() - Me.PictureBox4 = New System.Windows.Forms.PictureBox() - Me.TWWidth = New System.Windows.Forms.NumericUpDown() - Me.PictureBox5 = New System.Windows.Forms.PictureBox() - Me.TWLeft = New System.Windows.Forms.NumericUpDown() - Me.PictureBox6 = New System.Windows.Forms.PictureBox() - Me.TWSaturation2 = New System.Windows.Forms.TrackBar() - Me.TWLeft2 = New System.Windows.Forms.TrackBar() - Me.TWTransparency2 = New System.Windows.Forms.TrackBar() - Me.TWWidth2 = New System.Windows.Forms.TrackBar() - Me.TWPrecision2 = New System.Windows.Forms.TrackBar() - Me.POWaveFormExpander = New System.Windows.Forms.CheckBox() - Me.POWaveFormPart1 = New System.Windows.Forms.TableLayoutPanel() - Me.TableLayoutPanel1 = New System.Windows.Forms.TableLayoutPanel() - Me.FlowLayoutPanel1 = New System.Windows.Forms.FlowLayoutPanel() - Me.BWLoad = New System.Windows.Forms.Button() - Me.BWClear = New System.Windows.Forms.Button() - Me.BWLock = New System.Windows.Forms.CheckBox() - Me.TWFileName = New System.Windows.Forms.TextBox() - Me.TableLayoutPanel6 = New System.Windows.Forms.TableLayoutPanel() - Me.PictureBox1 = New System.Windows.Forms.PictureBox() - Me.TWPosition2 = New System.Windows.Forms.TrackBar() - Me.TWPosition = New System.Windows.Forms.NumericUpDown() - Me.POWaveFormSwitch = New System.Windows.Forms.CheckBox() - Me.POGrid = New System.Windows.Forms.Panel() - Me.POGridInner = New System.Windows.Forms.Panel() - Me.POGridPart2 = New System.Windows.Forms.TableLayoutPanel() - Me.TableLayoutPanel5 = New System.Windows.Forms.TableLayoutPanel() - Me.FlowLayoutPanel2 = New System.Windows.Forms.FlowLayoutPanel() - Me.cVSLockL = New System.Windows.Forms.CheckBox() - Me.cVSLock = New System.Windows.Forms.CheckBox() - Me.cVSLockR = New System.Windows.Forms.CheckBox() - Me.Label5 = New System.Windows.Forms.Label() - Me.TableLayoutPanel4 = New System.Windows.Forms.TableLayoutPanel() - Me.Label1 = New System.Windows.Forms.Label() - Me.CGB = New System.Windows.Forms.NumericUpDown() - Me.POGridExpander = New System.Windows.Forms.CheckBox() - Me.POGridPart1 = New System.Windows.Forms.TableLayoutPanel() - Me.TableLayoutPanel3 = New System.Windows.Forms.TableLayoutPanel() - Me.PictureBox9 = New System.Windows.Forms.PictureBox() - Me.CGHeight2 = New System.Windows.Forms.TrackBar() - Me.CGHeight = New System.Windows.Forms.NumericUpDown() - Me.PictureBox10 = New System.Windows.Forms.PictureBox() - Me.CGWidth2 = New System.Windows.Forms.TrackBar() - Me.CGWidth = New System.Windows.Forms.NumericUpDown() - Me.CGDisableVertical = New System.Windows.Forms.CheckBox() - Me.CGSnap = New System.Windows.Forms.CheckBox() - Me.TableLayoutPanel2 = New System.Windows.Forms.TableLayoutPanel() - Me.PictureBox7 = New System.Windows.Forms.PictureBox() - Me.CGDivide = New System.Windows.Forms.NumericUpDown() - Me.CGSub = New System.Windows.Forms.NumericUpDown() - Me.BGSlash = New System.Windows.Forms.Button() - Me.POGridSwitch = New System.Windows.Forms.CheckBox() - Me.POHeader = New System.Windows.Forms.Panel() - Me.POHeaderInner = New System.Windows.Forms.Panel() - Me.POHeaderPart2 = New System.Windows.Forms.TableLayoutPanel() - Me.CHDifficulty = New System.Windows.Forms.ComboBox() - Me.Label13 = New System.Windows.Forms.Label() - Me.THExRank = New System.Windows.Forms.TextBox() - Me.Label25 = New System.Windows.Forms.Label() - Me.CHLnObj = New System.Windows.Forms.ComboBox() - Me.Label23 = New System.Windows.Forms.Label() - Me.Label21 = New System.Windows.Forms.Label() - Me.THComment = New System.Windows.Forms.TextBox() - Me.Label24 = New System.Windows.Forms.Label() - Me.Label15 = New System.Windows.Forms.Label() - Me.THTotal = New System.Windows.Forms.TextBox() - Me.Label20 = New System.Windows.Forms.Label() - Me.BHStageFile = New System.Windows.Forms.Button() - Me.BHBanner = New System.Windows.Forms.Button() - Me.Label19 = New System.Windows.Forms.Label() - Me.BHBackBMP = New System.Windows.Forms.Button() - Me.Label17 = New System.Windows.Forms.Label() - Me.Label16 = New System.Windows.Forms.Label() - Me.Label12 = New System.Windows.Forms.Label() - Me.THBackBMP = New System.Windows.Forms.TextBox() - Me.Label11 = New System.Windows.Forms.Label() - Me.THBanner = New System.Windows.Forms.TextBox() - Me.THStageFile = New System.Windows.Forms.TextBox() - Me.THSubTitle = New System.Windows.Forms.TextBox() - Me.THSubArtist = New System.Windows.Forms.TextBox() - Me.POHeaderExpander = New System.Windows.Forms.CheckBox() - Me.POHeaderPart1 = New System.Windows.Forms.TableLayoutPanel() - Me.Label3 = New System.Windows.Forms.Label() - Me.THPlayLevel = New System.Windows.Forms.TextBox() - Me.CHRank = New System.Windows.Forms.ComboBox() - Me.Label10 = New System.Windows.Forms.Label() - Me.CHPlayer = New System.Windows.Forms.ComboBox() - Me.Label4 = New System.Windows.Forms.Label() - Me.THGenre = New System.Windows.Forms.TextBox() - Me.THBPM = New System.Windows.Forms.NumericUpDown() - Me.Label2 = New System.Windows.Forms.Label() - Me.THArtist = New System.Windows.Forms.TextBox() - Me.THTitle = New System.Windows.Forms.TextBox() - Me.Label9 = New System.Windows.Forms.Label() - Me.Label8 = New System.Windows.Forms.Label() - Me.Label6 = New System.Windows.Forms.Label() - Me.POHeaderSwitch = New System.Windows.Forms.CheckBox() - Me.Timer1 = New System.Windows.Forms.Timer(Me.components) - Me.Menu1 = New System.Windows.Forms.ContextMenuStrip(Me.components) - Me.MInsert = New System.Windows.Forms.ToolStripMenuItem() - Me.MRemove = New System.Windows.Forms.ToolStripMenuItem() - Me.AutoSaveTimer = New System.Windows.Forms.Timer(Me.components) - Me.mnMain = New System.Windows.Forms.MenuStrip() - Me.mnFile = New System.Windows.Forms.ToolStripMenuItem() - Me.mnNew = New System.Windows.Forms.ToolStripMenuItem() - Me.mnOpen = New System.Windows.Forms.ToolStripMenuItem() - Me.mnImportSM = New System.Windows.Forms.ToolStripMenuItem() - Me.mnImportIBMSC = New System.Windows.Forms.ToolStripMenuItem() - Me.ToolStripSeparator14 = New System.Windows.Forms.ToolStripSeparator() - Me.mnSave = New System.Windows.Forms.ToolStripMenuItem() - Me.mnSaveAs = New System.Windows.Forms.ToolStripMenuItem() - Me.mnExport = New System.Windows.Forms.ToolStripMenuItem() - Me.ToolStripSeparator15 = New System.Windows.Forms.ToolStripSeparator() - Me.mnOpenR0 = New System.Windows.Forms.ToolStripMenuItem() - Me.mnOpenR1 = New System.Windows.Forms.ToolStripMenuItem() - Me.mnOpenR2 = New System.Windows.Forms.ToolStripMenuItem() - Me.mnOpenR3 = New System.Windows.Forms.ToolStripMenuItem() - Me.mnOpenR4 = New System.Windows.Forms.ToolStripMenuItem() - Me.ToolStripSeparator16 = New System.Windows.Forms.ToolStripSeparator() - Me.mnQuit = New System.Windows.Forms.ToolStripMenuItem() - Me.mnEdit = New System.Windows.Forms.ToolStripMenuItem() - Me.mnUndo = New System.Windows.Forms.ToolStripMenuItem() - Me.mnRedo = New System.Windows.Forms.ToolStripMenuItem() - Me.ToolStripSeparator17 = New System.Windows.Forms.ToolStripSeparator() - Me.mnCut = New System.Windows.Forms.ToolStripMenuItem() - Me.mnCopy = New System.Windows.Forms.ToolStripMenuItem() - Me.mnPaste = New System.Windows.Forms.ToolStripMenuItem() - Me.mnDelete = New System.Windows.Forms.ToolStripMenuItem() - Me.mnSelectAll = New System.Windows.Forms.ToolStripMenuItem() - Me.mnGotoMeasure = New System.Windows.Forms.ToolStripMenuItem() - Me.ToolStripSeparator18 = New System.Windows.Forms.ToolStripSeparator() - Me.mnFind = New System.Windows.Forms.ToolStripMenuItem() - Me.mnStatistics = New System.Windows.Forms.ToolStripMenuItem() - Me.ToolStripSeparator19 = New System.Windows.Forms.ToolStripSeparator() - Me.mnTimeSelect = New System.Windows.Forms.ToolStripMenuItem() - Me.mnSelect = New System.Windows.Forms.ToolStripMenuItem() - Me.mnWrite = New System.Windows.Forms.ToolStripMenuItem() - Me.ToolStripSeparator23 = New System.Windows.Forms.ToolStripSeparator() - Me.mnMyO2 = New System.Windows.Forms.ToolStripMenuItem() - Me.mnSys = New System.Windows.Forms.ToolStripMenuItem() - Me.mnSMenu = New System.Windows.Forms.ToolStripMenuItem() - Me.mnSTB = New System.Windows.Forms.ToolStripMenuItem() - Me.mnSOP = New System.Windows.Forms.ToolStripMenuItem() - Me.mnSStatus = New System.Windows.Forms.ToolStripMenuItem() - Me.mnSLSplitter = New System.Windows.Forms.ToolStripMenuItem() - Me.mnSRSplitter = New System.Windows.Forms.ToolStripMenuItem() - Me.ToolStripSeparator21 = New System.Windows.Forms.ToolStripSeparator() - Me.CGShow = New System.Windows.Forms.ToolStripMenuItem() - Me.CGShowS = New System.Windows.Forms.ToolStripMenuItem() - Me.CGShowBG = New System.Windows.Forms.ToolStripMenuItem() - Me.CGShowM = New System.Windows.Forms.ToolStripMenuItem() - Me.CGShowMB = New System.Windows.Forms.ToolStripMenuItem() - Me.CGShowV = New System.Windows.Forms.ToolStripMenuItem() - Me.CGShowC = New System.Windows.Forms.ToolStripMenuItem() - Me.ToolStripSeparator22 = New System.Windows.Forms.ToolStripSeparator() - Me.CGBPM = New System.Windows.Forms.ToolStripMenuItem() - Me.CGSTOP = New System.Windows.Forms.ToolStripMenuItem() - Me.CGSCROLL = New System.Windows.Forms.ToolStripMenuItem() - Me.CGBLP = New System.Windows.Forms.ToolStripMenuItem() - Me.mnOptions = New System.Windows.Forms.ToolStripMenuItem() - Me.mnNTInput = New System.Windows.Forms.ToolStripMenuItem() - Me.mnErrorCheck = New System.Windows.Forms.ToolStripMenuItem() - Me.mnPreviewOnClick = New System.Windows.Forms.ToolStripMenuItem() - Me.mnShowFileName = New System.Windows.Forms.ToolStripMenuItem() - Me.ToolStripSeparator20 = New System.Windows.Forms.ToolStripSeparator() - Me.mnGOptions = New System.Windows.Forms.ToolStripMenuItem() - Me.mnVOptions = New System.Windows.Forms.ToolStripMenuItem() - Me.mnPOptions = New System.Windows.Forms.ToolStripMenuItem() - Me.mnConversion = New System.Windows.Forms.ToolStripMenuItem() - Me.cmnConversion = New System.Windows.Forms.ContextMenuStrip(Me.components) - Me.POBLong = New System.Windows.Forms.ToolStripMenuItem() - Me.POBShort = New System.Windows.Forms.ToolStripMenuItem() - Me.POBLongShort = New System.Windows.Forms.ToolStripMenuItem() - Me.ToolStripSeparator10 = New System.Windows.Forms.ToolStripSeparator() - Me.POBHidden = New System.Windows.Forms.ToolStripMenuItem() - Me.POBVisible = New System.Windows.Forms.ToolStripMenuItem() - Me.POBHiddenVisible = New System.Windows.Forms.ToolStripMenuItem() - Me.ToolStripSeparator11 = New System.Windows.Forms.ToolStripSeparator() - Me.POBModify = New System.Windows.Forms.ToolStripMenuItem() - Me.POBMirror = New System.Windows.Forms.ToolStripMenuItem() - Me.POBFlip = New System.Windows.Forms.ToolStripMenuItem() - Me.POBRandom = New System.Windows.Forms.ToolStripMenuItem() - Me.POBSRandom = New System.Windows.Forms.ToolStripMenuItem() - Me.mnPreview = New System.Windows.Forms.ToolStripMenuItem() - Me.mnPlayB = New System.Windows.Forms.ToolStripMenuItem() - Me.mnPlay = New System.Windows.Forms.ToolStripMenuItem() - Me.mnStop = New System.Windows.Forms.ToolStripMenuItem() - Me.POConvert = New System.Windows.Forms.ToolStripDropDownButton() - Me.TBMain = New System.Windows.Forms.ToolStrip() - Me.TBNew = New System.Windows.Forms.ToolStripButton() - Me.TBOpen = New System.Windows.Forms.ToolStripSplitButton() - Me.TBOpenR0 = New System.Windows.Forms.ToolStripMenuItem() - Me.TBOpenR1 = New System.Windows.Forms.ToolStripMenuItem() - Me.TBOpenR2 = New System.Windows.Forms.ToolStripMenuItem() - Me.TBOpenR3 = New System.Windows.Forms.ToolStripMenuItem() - Me.TBOpenR4 = New System.Windows.Forms.ToolStripMenuItem() - Me.ToolStripSeparator12 = New System.Windows.Forms.ToolStripSeparator() - Me.TBImportSM = New System.Windows.Forms.ToolStripMenuItem() - Me.TBImportIBMSC = New System.Windows.Forms.ToolStripMenuItem() - Me.TBSave = New System.Windows.Forms.ToolStripSplitButton() - Me.TBSaveAs = New System.Windows.Forms.ToolStripMenuItem() - Me.TBExport = New System.Windows.Forms.ToolStripMenuItem() - Me.ToolStripSeparator1 = New System.Windows.Forms.ToolStripSeparator() - Me.TBCut = New System.Windows.Forms.ToolStripButton() - Me.TBCopy = New System.Windows.Forms.ToolStripButton() - Me.TBPaste = New System.Windows.Forms.ToolStripButton() - Me.TBFind = New System.Windows.Forms.ToolStripButton() - Me.ToolStripSeparator24 = New System.Windows.Forms.ToolStripSeparator() - Me.TBStatistics = New System.Windows.Forms.ToolStripButton() - Me.TBMyO2 = New System.Windows.Forms.ToolStripButton() - Me.ToolStripSeparator4 = New System.Windows.Forms.ToolStripSeparator() - Me.TBErrorCheck = New System.Windows.Forms.ToolStripButton() - Me.TBPreviewOnClick = New System.Windows.Forms.ToolStripButton() - Me.TBShowFileName = New System.Windows.Forms.ToolStripButton() - Me.ToolStripSeparator8 = New System.Windows.Forms.ToolStripSeparator() - Me.TBNTInput = New System.Windows.Forms.ToolStripButton() - Me.TBWavIncrease = New System.Windows.Forms.ToolStripButton() - Me.ToolStripSeparator2 = New System.Windows.Forms.ToolStripSeparator() - Me.TBUndo = New System.Windows.Forms.ToolStripButton() - Me.TBRedo = New System.Windows.Forms.ToolStripButton() - Me.ToolStripSeparator5 = New System.Windows.Forms.ToolStripSeparator() - Me.TBTimeSelect = New System.Windows.Forms.ToolStripButton() - Me.TBSelect = New System.Windows.Forms.ToolStripButton() - Me.TBWrite = New System.Windows.Forms.ToolStripButton() - Me.ToolStripSeparator3 = New System.Windows.Forms.ToolStripSeparator() - Me.TBPlayB = New System.Windows.Forms.ToolStripButton() - Me.TBPlay = New System.Windows.Forms.ToolStripButton() - Me.TBStop = New System.Windows.Forms.ToolStripButton() - Me.TBPOptions = New System.Windows.Forms.ToolStripButton() - Me.ToolStripSeparator7 = New System.Windows.Forms.ToolStripSeparator() - Me.TBVOptions = New System.Windows.Forms.ToolStripButton() - Me.TBGOptions = New System.Windows.Forms.ToolStripButton() - Me.POBStorm = New System.Windows.Forms.ToolStripButton() - Me.pStatus = New System.Windows.Forms.Panel() - Me.FStatus2 = New System.Windows.Forms.StatusStrip() - Me.FSSS = New System.Windows.Forms.ToolStripButton() - Me.FSSL = New System.Windows.Forms.ToolStripButton() - Me.FSSH = New System.Windows.Forms.ToolStripButton() - Me.BVCReverse = New System.Windows.Forms.ToolStripButton() - Me.LblMultiply = New System.Windows.Forms.ToolStripStatusLabel() - Me.TVCM = New System.Windows.Forms.ToolStripTextBox() - Me.LblDivide = New System.Windows.Forms.ToolStripStatusLabel() - Me.TVCD = New System.Windows.Forms.ToolStripTextBox() - Me.BVCApply = New System.Windows.Forms.ToolStripButton() - Me.TVCBPM = New System.Windows.Forms.ToolStripTextBox() - Me.BVCCalculate = New System.Windows.Forms.ToolStripButton() - Me.BConvertStop = New System.Windows.Forms.ToolStripButton() - Me.FStatus = New System.Windows.Forms.StatusStrip() - Me.FSC = New System.Windows.Forms.ToolStripStatusLabel() - Me.FSW = New System.Windows.Forms.ToolStripStatusLabel() - Me.FSM = New System.Windows.Forms.ToolStripStatusLabel() - Me.FSP1 = New System.Windows.Forms.ToolStripStatusLabel() - Me.FSP3 = New System.Windows.Forms.ToolStripStatusLabel() - Me.FSP2 = New System.Windows.Forms.ToolStripStatusLabel() - Me.FSP4 = New System.Windows.Forms.ToolStripStatusLabel() - Me.TimeStatusLabel = New System.Windows.Forms.ToolStripStatusLabel() - Me.FST = New System.Windows.Forms.ToolStripStatusLabel() - Me.FSH = New System.Windows.Forms.ToolStripStatusLabel() - Me.FSE = New System.Windows.Forms.ToolStripStatusLabel() - Me.TimerMiddle = New System.Windows.Forms.Timer(Me.components) - Me.ToolStripContainer1 = New System.Windows.Forms.ToolStripContainer() - Me.PMain = New System.Windows.Forms.Panel() - Me.PMainIn = New System.Windows.Forms.Panel() - Me.MainPanelScroll = New System.Windows.Forms.VScrollBar() - Me.HS = New System.Windows.Forms.HScrollBar() - Me.SpR = New System.Windows.Forms.Button() - Me.SpL = New System.Windows.Forms.Button() - Me.PMainR = New System.Windows.Forms.Panel() - Me.PMainInR = New System.Windows.Forms.Panel() - Me.RightPanelScroll = New System.Windows.Forms.VScrollBar() - Me.HSR = New System.Windows.Forms.HScrollBar() - Me.PMainL = New System.Windows.Forms.Panel() - Me.PMainInL = New System.Windows.Forms.Panel() - Me.LeftPanelScroll = New System.Windows.Forms.VScrollBar() - Me.HSL = New System.Windows.Forms.HScrollBar() - Me.POptionsResizer = New System.Windows.Forms.Button() - Me.ToolTipUniversal = New System.Windows.Forms.ToolTip(Me.components) - Me.ToolStrip1 = New System.Windows.Forms.ToolStrip() - Me.TBTotalValue = New System.Windows.Forms.ToolStripLabel() - Me.cmnLanguage.SuspendLayout() - Me.cmnTheme.SuspendLayout() - Me.POptionsScroll.SuspendLayout() - Me.POptions.SuspendLayout() - Me.POExpansion.SuspendLayout() - Me.POExpansionInner.SuspendLayout() - Me.POBeat.SuspendLayout() - Me.POBeatInner.SuspendLayout() - Me.TableLayoutPanel7.SuspendLayout() - CType(Me.nBeatD, System.ComponentModel.ISupportInitialize).BeginInit() - CType(Me.nBeatN, System.ComponentModel.ISupportInitialize).BeginInit() - Me.POBeatPart2.SuspendLayout() - Me.POWAV.SuspendLayout() - Me.POWAVInner.SuspendLayout() - Me.FlowLayoutPanel3.SuspendLayout() - Me.POWAVPart2.SuspendLayout() - Me.POWaveForm.SuspendLayout() - Me.POWaveFormInner.SuspendLayout() - Me.POWaveFormPart2.SuspendLayout() - CType(Me.TWSaturation, System.ComponentModel.ISupportInitialize).BeginInit() - CType(Me.PictureBox2, System.ComponentModel.ISupportInitialize).BeginInit() - CType(Me.TWTransparency, System.ComponentModel.ISupportInitialize).BeginInit() - CType(Me.PictureBox3, System.ComponentModel.ISupportInitialize).BeginInit() - CType(Me.TWPrecision, System.ComponentModel.ISupportInitialize).BeginInit() - CType(Me.PictureBox4, System.ComponentModel.ISupportInitialize).BeginInit() - CType(Me.TWWidth, System.ComponentModel.ISupportInitialize).BeginInit() - CType(Me.PictureBox5, System.ComponentModel.ISupportInitialize).BeginInit() - CType(Me.TWLeft, System.ComponentModel.ISupportInitialize).BeginInit() - CType(Me.PictureBox6, System.ComponentModel.ISupportInitialize).BeginInit() - CType(Me.TWSaturation2, System.ComponentModel.ISupportInitialize).BeginInit() - CType(Me.TWLeft2, System.ComponentModel.ISupportInitialize).BeginInit() - CType(Me.TWTransparency2, System.ComponentModel.ISupportInitialize).BeginInit() - CType(Me.TWWidth2, System.ComponentModel.ISupportInitialize).BeginInit() - CType(Me.TWPrecision2, System.ComponentModel.ISupportInitialize).BeginInit() - Me.POWaveFormPart1.SuspendLayout() - Me.TableLayoutPanel1.SuspendLayout() - Me.FlowLayoutPanel1.SuspendLayout() - Me.TableLayoutPanel6.SuspendLayout() - CType(Me.PictureBox1, System.ComponentModel.ISupportInitialize).BeginInit() - CType(Me.TWPosition2, System.ComponentModel.ISupportInitialize).BeginInit() - CType(Me.TWPosition, System.ComponentModel.ISupportInitialize).BeginInit() - Me.POGrid.SuspendLayout() - Me.POGridInner.SuspendLayout() - Me.POGridPart2.SuspendLayout() - Me.TableLayoutPanel5.SuspendLayout() - Me.FlowLayoutPanel2.SuspendLayout() - Me.TableLayoutPanel4.SuspendLayout() - CType(Me.CGB, System.ComponentModel.ISupportInitialize).BeginInit() - Me.POGridPart1.SuspendLayout() - Me.TableLayoutPanel3.SuspendLayout() - CType(Me.PictureBox9, System.ComponentModel.ISupportInitialize).BeginInit() - CType(Me.CGHeight2, System.ComponentModel.ISupportInitialize).BeginInit() - CType(Me.CGHeight, System.ComponentModel.ISupportInitialize).BeginInit() - CType(Me.PictureBox10, System.ComponentModel.ISupportInitialize).BeginInit() - CType(Me.CGWidth2, System.ComponentModel.ISupportInitialize).BeginInit() - CType(Me.CGWidth, System.ComponentModel.ISupportInitialize).BeginInit() - Me.TableLayoutPanel2.SuspendLayout() - CType(Me.PictureBox7, System.ComponentModel.ISupportInitialize).BeginInit() - CType(Me.CGDivide, System.ComponentModel.ISupportInitialize).BeginInit() - CType(Me.CGSub, System.ComponentModel.ISupportInitialize).BeginInit() - Me.POHeader.SuspendLayout() - Me.POHeaderInner.SuspendLayout() - Me.POHeaderPart2.SuspendLayout() - Me.POHeaderPart1.SuspendLayout() - CType(Me.THBPM, System.ComponentModel.ISupportInitialize).BeginInit() - Me.Menu1.SuspendLayout() - Me.mnMain.SuspendLayout() - Me.cmnConversion.SuspendLayout() - Me.TBMain.SuspendLayout() - Me.pStatus.SuspendLayout() - Me.FStatus2.SuspendLayout() - Me.FStatus.SuspendLayout() - Me.ToolStripContainer1.ContentPanel.SuspendLayout() - Me.ToolStripContainer1.TopToolStripPanel.SuspendLayout() - Me.ToolStripContainer1.SuspendLayout() - Me.PMain.SuspendLayout() - Me.PMainR.SuspendLayout() - Me.PMainL.SuspendLayout() - Me.ToolStrip1.SuspendLayout() - Me.SuspendLayout() - ' - 'cmnLanguage - ' - Me.cmnLanguage.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.TBLangDef, Me.TBLangRefresh, Me.ToolStripSeparator9}) - Me.cmnLanguage.Name = "cmnLanguage" - Me.cmnLanguage.OwnerItem = Me.mnLanguage - Me.cmnLanguage.Size = New System.Drawing.Size(121, 54) - ' - 'TBLangDef - ' - Me.TBLangDef.Name = "TBLangDef" - Me.TBLangDef.Size = New System.Drawing.Size(120, 22) - Me.TBLangDef.Text = "(Default)" - ' - 'TBLangRefresh - ' - Me.TBLangRefresh.Image = Global.iBMSC.My.Resources.Resources.x16Refresh - Me.TBLangRefresh.Name = "TBLangRefresh" - Me.TBLangRefresh.Size = New System.Drawing.Size(120, 22) - Me.TBLangRefresh.Text = "Refresh" - ' - 'ToolStripSeparator9 - ' - Me.ToolStripSeparator9.Name = "ToolStripSeparator9" - Me.ToolStripSeparator9.Size = New System.Drawing.Size(117, 6) - ' - 'TBLanguage - ' - Me.TBLanguage.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image - Me.TBLanguage.DropDown = Me.cmnLanguage - Me.TBLanguage.Image = Global.iBMSC.My.Resources.Resources.x16Language - Me.TBLanguage.ImageTransparentColor = System.Drawing.Color.Magenta - Me.TBLanguage.Name = "TBLanguage" - Me.TBLanguage.Size = New System.Drawing.Size(29, 22) - Me.TBLanguage.Text = "Language" - ' - 'mnLanguage - ' - Me.mnLanguage.DropDown = Me.cmnLanguage - Me.mnLanguage.Image = Global.iBMSC.My.Resources.Resources.x16Language - Me.mnLanguage.Name = "mnLanguage" - Me.mnLanguage.Size = New System.Drawing.Size(228, 22) - Me.mnLanguage.Text = "&Language" - ' - 'cmnTheme - ' - Me.cmnTheme.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.TBThemeDef, Me.TBThemeSave, Me.TBThemeRefresh, Me.TBThemeLoadComptability, Me.ToolStripSeparator6}) - Me.cmnTheme.Name = "cmnLanguage" - Me.cmnTheme.OwnerItem = Me.mnTheme - Me.cmnTheme.Size = New System.Drawing.Size(246, 98) - ' - 'TBThemeDef - ' - Me.TBThemeDef.Name = "TBThemeDef" - Me.TBThemeDef.Size = New System.Drawing.Size(245, 22) - Me.TBThemeDef.Text = "(Default)" - ' - 'TBThemeSave - ' - Me.TBThemeSave.Image = Global.iBMSC.My.Resources.Resources.x16SaveAs - Me.TBThemeSave.Name = "TBThemeSave" - Me.TBThemeSave.Size = New System.Drawing.Size(245, 22) - Me.TBThemeSave.Text = "Save Theme" - ' - 'TBThemeRefresh - ' - Me.TBThemeRefresh.Image = Global.iBMSC.My.Resources.Resources.x16Refresh - Me.TBThemeRefresh.Name = "TBThemeRefresh" - Me.TBThemeRefresh.Size = New System.Drawing.Size(245, 22) - Me.TBThemeRefresh.Text = "Refresh" - ' - 'TBThemeLoadComptability - ' - Me.TBThemeLoadComptability.Name = "TBThemeLoadComptability" - Me.TBThemeLoadComptability.Size = New System.Drawing.Size(245, 22) - Me.TBThemeLoadComptability.Text = "Load Theme File from iBMSC 2.x" - ' - 'ToolStripSeparator6 - ' - Me.ToolStripSeparator6.Name = "ToolStripSeparator6" - Me.ToolStripSeparator6.Size = New System.Drawing.Size(242, 6) - ' - 'TBTheme - ' - Me.TBTheme.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image - Me.TBTheme.DropDown = Me.cmnTheme - Me.TBTheme.Image = Global.iBMSC.My.Resources.Resources.x16Theme - Me.TBTheme.ImageTransparentColor = System.Drawing.Color.Magenta - Me.TBTheme.Name = "TBTheme" - Me.TBTheme.Size = New System.Drawing.Size(29, 22) - Me.TBTheme.Text = "Theme" - ' - 'mnTheme - ' - Me.mnTheme.DropDown = Me.cmnTheme - Me.mnTheme.Image = Global.iBMSC.My.Resources.Resources.x16Theme - Me.mnTheme.Name = "mnTheme" - Me.mnTheme.Size = New System.Drawing.Size(228, 22) - Me.mnTheme.Text = "&Theme" - ' - 'POptionsScroll - ' - Me.POptionsScroll.AutoScroll = True - Me.POptionsScroll.Controls.Add(Me.POptions) - Me.POptionsScroll.Dock = System.Windows.Forms.DockStyle.Right - Me.POptionsScroll.Location = New System.Drawing.Point(958, 0) - Me.POptionsScroll.Name = "POptionsScroll" - Me.POptionsScroll.Size = New System.Drawing.Size(200, 781) - Me.POptionsScroll.TabIndex = 28 - ' - 'POptions - ' - Me.POptions.AutoSize = True - Me.POptions.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink - Me.POptions.Controls.Add(Me.POExpansion) - Me.POptions.Controls.Add(Me.POBeat) - Me.POptions.Controls.Add(Me.POWAV) - Me.POptions.Controls.Add(Me.POWaveForm) - Me.POptions.Controls.Add(Me.POGrid) - Me.POptions.Controls.Add(Me.POHeader) - Me.POptions.Dock = System.Windows.Forms.DockStyle.Top - Me.POptions.Location = New System.Drawing.Point(0, 0) - Me.POptions.Name = "POptions" - Me.POptions.Size = New System.Drawing.Size(183, 1722) - Me.POptions.TabIndex = 29 - ' - 'POExpansion - ' - Me.POExpansion.AutoSize = True - Me.POExpansion.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink - Me.POExpansion.Controls.Add(Me.POExpansionInner) - Me.POExpansion.Controls.Add(Me.POExpansionSwitch) - Me.POExpansion.Dock = System.Windows.Forms.DockStyle.Top - Me.POExpansion.Location = New System.Drawing.Point(0, 1452) - Me.POExpansion.Name = "POExpansion" - Me.POExpansion.Size = New System.Drawing.Size(183, 270) - Me.POExpansion.TabIndex = 6 - ' - 'POExpansionInner - ' - Me.POExpansionInner.Controls.Add(Me.TExpansion) - Me.POExpansionInner.Controls.Add(Me.POExpansionResizer) - Me.POExpansionInner.Dock = System.Windows.Forms.DockStyle.Top - Me.POExpansionInner.Font = New System.Drawing.Font("Consolas", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) - Me.POExpansionInner.Location = New System.Drawing.Point(0, 20) - Me.POExpansionInner.Name = "POExpansionInner" - Me.POExpansionInner.Size = New System.Drawing.Size(183, 250) - Me.POExpansionInner.TabIndex = 7 - Me.POExpansionInner.Visible = False - ' - 'TExpansion - ' - Me.TExpansion.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle - Me.TExpansion.Dock = System.Windows.Forms.DockStyle.Fill - Me.TExpansion.HideSelection = False - Me.TExpansion.Location = New System.Drawing.Point(0, 0) - Me.TExpansion.Multiline = True - Me.TExpansion.Name = "TExpansion" - Me.TExpansion.ScrollBars = System.Windows.Forms.ScrollBars.Vertical - Me.TExpansion.Size = New System.Drawing.Size(183, 245) - Me.TExpansion.TabIndex = 1002 - Me.TExpansion.WordWrap = False - ' - 'POExpansionResizer - ' - Me.POExpansionResizer.Dock = System.Windows.Forms.DockStyle.Bottom - Me.POExpansionResizer.FlatAppearance.BorderSize = 0 - Me.POExpansionResizer.FlatStyle = System.Windows.Forms.FlatStyle.Flat - Me.POExpansionResizer.Location = New System.Drawing.Point(0, 245) - Me.POExpansionResizer.Margin = New System.Windows.Forms.Padding(0) - Me.POExpansionResizer.Name = "POExpansionResizer" - Me.POExpansionResizer.Size = New System.Drawing.Size(183, 5) - Me.POExpansionResizer.TabIndex = 65 - Me.POExpansionResizer.TabStop = False - Me.POExpansionResizer.UseVisualStyleBackColor = True - ' - 'POExpansionSwitch - ' - Me.POExpansionSwitch.Appearance = System.Windows.Forms.Appearance.Button - Me.POExpansionSwitch.BackColor = System.Drawing.SystemColors.Control - Me.POExpansionSwitch.Cursor = System.Windows.Forms.Cursors.Hand - Me.POExpansionSwitch.Dock = System.Windows.Forms.DockStyle.Top - Me.POExpansionSwitch.Font = New System.Drawing.Font("Segoe UI", 9.0!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) - Me.POExpansionSwitch.Location = New System.Drawing.Point(0, 0) - Me.POExpansionSwitch.Name = "POExpansionSwitch" - Me.POExpansionSwitch.Size = New System.Drawing.Size(183, 20) - Me.POExpansionSwitch.TabIndex = 1001 - Me.POExpansionSwitch.TabStop = False - Me.POExpansionSwitch.Text = "Expansion Code" - Me.POExpansionSwitch.TextAlign = System.Drawing.ContentAlignment.MiddleCenter - Me.POExpansionSwitch.UseCompatibleTextRendering = True - Me.POExpansionSwitch.UseVisualStyleBackColor = False - ' - 'POBeat - ' - Me.POBeat.AutoSize = True - Me.POBeat.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink - Me.POBeat.Controls.Add(Me.POBeatInner) - Me.POBeat.Controls.Add(Me.POBeatSwitch) - Me.POBeat.Dock = System.Windows.Forms.DockStyle.Top - Me.POBeat.Location = New System.Drawing.Point(0, 1182) - Me.POBeat.Name = "POBeat" - Me.POBeat.Size = New System.Drawing.Size(183, 270) - Me.POBeat.TabIndex = 5 - ' - 'POBeatInner - ' - Me.POBeatInner.ColumnCount = 1 - Me.POBeatInner.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100.0!)) - Me.POBeatInner.Controls.Add(Me.POBeatExpander, 0, 1) - Me.POBeatInner.Controls.Add(Me.POBeatResizer, 0, 4) - Me.POBeatInner.Controls.Add(Me.TableLayoutPanel7, 0, 0) - Me.POBeatInner.Controls.Add(Me.LBeat, 0, 3) - Me.POBeatInner.Controls.Add(Me.POBeatPart2, 0, 2) - Me.POBeatInner.Dock = System.Windows.Forms.DockStyle.Top - Me.POBeatInner.Location = New System.Drawing.Point(0, 20) - Me.POBeatInner.Name = "POBeatInner" - Me.POBeatInner.RowCount = 5 - Me.POBeatInner.RowStyles.Add(New System.Windows.Forms.RowStyle()) - Me.POBeatInner.RowStyles.Add(New System.Windows.Forms.RowStyle()) - Me.POBeatInner.RowStyles.Add(New System.Windows.Forms.RowStyle()) - Me.POBeatInner.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100.0!)) - Me.POBeatInner.RowStyles.Add(New System.Windows.Forms.RowStyle()) - Me.POBeatInner.Size = New System.Drawing.Size(183, 250) - Me.POBeatInner.TabIndex = 6 - Me.POBeatInner.Visible = False - ' - 'POBeatExpander - ' - Me.POBeatExpander.Appearance = System.Windows.Forms.Appearance.Button - Me.POBeatExpander.AutoSize = True - Me.POBeatExpander.Cursor = System.Windows.Forms.Cursors.Hand - Me.POBeatExpander.Dock = System.Windows.Forms.DockStyle.Top - Me.POBeatExpander.FlatAppearance.BorderSize = 0 - Me.POBeatExpander.FlatStyle = System.Windows.Forms.FlatStyle.Popup - Me.POBeatExpander.Location = New System.Drawing.Point(0, 54) - Me.POBeatExpander.Margin = New System.Windows.Forms.Padding(0) - Me.POBeatExpander.Name = "POBeatExpander" - Me.POBeatExpander.Size = New System.Drawing.Size(183, 25) - Me.POBeatExpander.TabIndex = 901 - Me.POBeatExpander.TabStop = False - Me.POBeatExpander.Text = "Expand..." - Me.POBeatExpander.TextAlign = System.Drawing.ContentAlignment.MiddleCenter - Me.POBeatExpander.UseVisualStyleBackColor = False - ' - 'POBeatResizer - ' - Me.POBeatInner.SetColumnSpan(Me.POBeatResizer, 2) - Me.POBeatResizer.Dock = System.Windows.Forms.DockStyle.Top - Me.POBeatResizer.FlatAppearance.BorderSize = 0 - Me.POBeatResizer.FlatStyle = System.Windows.Forms.FlatStyle.Flat - Me.POBeatResizer.Location = New System.Drawing.Point(0, 245) - Me.POBeatResizer.Margin = New System.Windows.Forms.Padding(0) - Me.POBeatResizer.Name = "POBeatResizer" - Me.POBeatResizer.Size = New System.Drawing.Size(183, 5) - Me.POBeatResizer.TabIndex = 64 - Me.POBeatResizer.TabStop = False - Me.POBeatResizer.UseVisualStyleBackColor = True - ' - 'TableLayoutPanel7 - ' - Me.TableLayoutPanel7.AutoSize = True - Me.TableLayoutPanel7.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink - Me.TableLayoutPanel7.ColumnCount = 4 - Me.TableLayoutPanel7.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 30.0!)) - Me.TableLayoutPanel7.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle()) - Me.TableLayoutPanel7.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 30.0!)) - Me.TableLayoutPanel7.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 40.0!)) - Me.TableLayoutPanel7.Controls.Add(Me.nBeatD, 2, 0) - Me.TableLayoutPanel7.Controls.Add(Me.BBeatApplyV, 3, 1) - Me.TableLayoutPanel7.Controls.Add(Me.nBeatN, 0, 0) - Me.TableLayoutPanel7.Controls.Add(Me.BBeatApply, 3, 0) - Me.TableLayoutPanel7.Controls.Add(Me.Label7, 1, 0) - Me.TableLayoutPanel7.Controls.Add(Me.tBeatValue, 0, 1) - Me.TableLayoutPanel7.Dock = System.Windows.Forms.DockStyle.Fill - Me.TableLayoutPanel7.Location = New System.Drawing.Point(0, 0) - Me.TableLayoutPanel7.Margin = New System.Windows.Forms.Padding(0) - Me.TableLayoutPanel7.Name = "TableLayoutPanel7" - Me.TableLayoutPanel7.RowCount = 2 - Me.TableLayoutPanel7.RowStyles.Add(New System.Windows.Forms.RowStyle()) - Me.TableLayoutPanel7.RowStyles.Add(New System.Windows.Forms.RowStyle()) - Me.TableLayoutPanel7.Size = New System.Drawing.Size(183, 54) - Me.TableLayoutPanel7.TabIndex = 63 - ' - 'nBeatD - ' - Me.nBeatD.Dock = System.Windows.Forms.DockStyle.Fill - Me.nBeatD.Location = New System.Drawing.Point(66, 3) - Me.nBeatD.Maximum = New Decimal(New Integer() {10000, 0, 0, 0}) - Me.nBeatD.Minimum = New Decimal(New Integer() {1, 0, 0, 0}) - Me.nBeatD.Name = "nBeatD" - Me.nBeatD.Size = New System.Drawing.Size(45, 23) - Me.nBeatD.TabIndex = 803 - Me.nBeatD.Value = New Decimal(New Integer() {4, 0, 0, 0}) - ' - 'BBeatApplyV - ' - Me.BBeatApplyV.AutoSize = True - Me.BBeatApplyV.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink - Me.BBeatApplyV.Dock = System.Windows.Forms.DockStyle.Fill - Me.BBeatApplyV.Location = New System.Drawing.Point(114, 29) - Me.BBeatApplyV.Margin = New System.Windows.Forms.Padding(0, 0, 3, 0) - Me.BBeatApplyV.Name = "BBeatApplyV" - Me.BBeatApplyV.Size = New System.Drawing.Size(66, 25) - Me.BBeatApplyV.TabIndex = 806 - Me.BBeatApplyV.Text = "Apply" - Me.BBeatApplyV.UseVisualStyleBackColor = True - ' - 'nBeatN - ' - Me.nBeatN.Dock = System.Windows.Forms.DockStyle.Fill - Me.nBeatN.Location = New System.Drawing.Point(3, 3) - Me.nBeatN.Maximum = New Decimal(New Integer() {99999, 0, 0, 0}) - Me.nBeatN.Minimum = New Decimal(New Integer() {1, 0, 0, 0}) - Me.nBeatN.Name = "nBeatN" - Me.nBeatN.Size = New System.Drawing.Size(45, 23) - Me.nBeatN.TabIndex = 802 - Me.nBeatN.Value = New Decimal(New Integer() {4, 0, 0, 0}) - ' - 'BBeatApply - ' - Me.BBeatApply.AutoSize = True - Me.BBeatApply.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink - Me.BBeatApply.Dock = System.Windows.Forms.DockStyle.Fill - Me.BBeatApply.Location = New System.Drawing.Point(114, 2) - Me.BBeatApply.Margin = New System.Windows.Forms.Padding(0, 2, 3, 2) - Me.BBeatApply.Name = "BBeatApply" - Me.BBeatApply.Size = New System.Drawing.Size(66, 25) - Me.BBeatApply.TabIndex = 804 - Me.BBeatApply.Text = "Apply" - Me.BBeatApply.UseVisualStyleBackColor = True - ' - 'Label7 - ' - Me.Label7.Anchor = System.Windows.Forms.AnchorStyles.None - Me.Label7.AutoSize = True - Me.Label7.Location = New System.Drawing.Point(51, 7) - Me.Label7.Margin = New System.Windows.Forms.Padding(0) - Me.Label7.Name = "Label7" - Me.Label7.Size = New System.Drawing.Size(12, 15) - Me.Label7.TabIndex = 31 - Me.Label7.Text = "/" - Me.Label7.TextAlign = System.Drawing.ContentAlignment.MiddleCenter - ' - 'tBeatValue - ' - Me.TableLayoutPanel7.SetColumnSpan(Me.tBeatValue, 3) - Me.tBeatValue.Dock = System.Windows.Forms.DockStyle.Fill - Me.tBeatValue.Location = New System.Drawing.Point(3, 30) - Me.tBeatValue.Margin = New System.Windows.Forms.Padding(3, 1, 3, 0) - Me.tBeatValue.Name = "tBeatValue" - Me.tBeatValue.Size = New System.Drawing.Size(108, 23) - Me.tBeatValue.TabIndex = 805 - Me.tBeatValue.Text = "1" - ' - 'LBeat - ' - Me.LBeat.Dock = System.Windows.Forms.DockStyle.Fill - Me.LBeat.Font = New System.Drawing.Font("Consolas", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) - Me.LBeat.IntegralHeight = False - Me.LBeat.ItemHeight = 14 - Me.LBeat.Items.AddRange(New Object() {"000: 15.984375 (1023/64)"}) - Me.LBeat.Location = New System.Drawing.Point(3, 155) - Me.LBeat.Margin = New System.Windows.Forms.Padding(3, 0, 3, 0) - Me.LBeat.Name = "LBeat" - Me.LBeat.SelectionMode = System.Windows.Forms.SelectionMode.MultiExtended - Me.LBeat.Size = New System.Drawing.Size(177, 90) - Me.LBeat.TabIndex = 906 - ' - 'POBeatPart2 - ' - Me.POBeatPart2.AutoSize = True - Me.POBeatPart2.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink - Me.POBeatPart2.ColumnCount = 1 - Me.POBeatPart2.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100.0!)) - Me.POBeatPart2.Controls.Add(Me.CBeatScale, 0, 3) - Me.POBeatPart2.Controls.Add(Me.CBeatCut, 0, 2) - Me.POBeatPart2.Controls.Add(Me.CBeatMeasure, 0, 1) - Me.POBeatPart2.Controls.Add(Me.CBeatPreserve, 0, 0) - Me.POBeatPart2.Dock = System.Windows.Forms.DockStyle.Fill - Me.POBeatPart2.Location = New System.Drawing.Point(0, 79) - Me.POBeatPart2.Margin = New System.Windows.Forms.Padding(0) - Me.POBeatPart2.Name = "POBeatPart2" - Me.POBeatPart2.RowCount = 4 - Me.POBeatPart2.RowStyles.Add(New System.Windows.Forms.RowStyle()) - Me.POBeatPart2.RowStyles.Add(New System.Windows.Forms.RowStyle()) - Me.POBeatPart2.RowStyles.Add(New System.Windows.Forms.RowStyle()) - Me.POBeatPart2.RowStyles.Add(New System.Windows.Forms.RowStyle()) - Me.POBeatPart2.Size = New System.Drawing.Size(183, 76) - Me.POBeatPart2.TabIndex = 66 - Me.POBeatPart2.Visible = False - ' - 'CBeatScale - ' - Me.CBeatScale.AutoSize = True - Me.CBeatScale.Location = New System.Drawing.Point(3, 57) - Me.CBeatScale.Margin = New System.Windows.Forms.Padding(3, 0, 3, 0) - Me.CBeatScale.Name = "CBeatScale" - Me.CBeatScale.Size = New System.Drawing.Size(151, 19) - Me.CBeatScale.TabIndex = 905 - Me.CBeatScale.Text = "Scale to measure length" - Me.CBeatScale.UseVisualStyleBackColor = True - ' - 'CBeatCut - ' - Me.CBeatCut.AutoEllipsis = True - Me.CBeatCut.Dock = System.Windows.Forms.DockStyle.Fill - Me.CBeatCut.Location = New System.Drawing.Point(3, 38) - Me.CBeatCut.Margin = New System.Windows.Forms.Padding(3, 0, 3, 0) - Me.CBeatCut.Name = "CBeatCut" - Me.CBeatCut.Size = New System.Drawing.Size(177, 19) - Me.CBeatCut.TabIndex = 904 - Me.CBeatCut.Text = "Keep measure position and cut overflow" - Me.CBeatCut.UseVisualStyleBackColor = True - ' - 'CBeatMeasure - ' - Me.CBeatMeasure.AutoSize = True - Me.CBeatMeasure.Location = New System.Drawing.Point(3, 19) - Me.CBeatMeasure.Margin = New System.Windows.Forms.Padding(3, 0, 3, 0) - Me.CBeatMeasure.Name = "CBeatMeasure" - Me.CBeatMeasure.Size = New System.Drawing.Size(145, 19) - Me.CBeatMeasure.TabIndex = 903 - Me.CBeatMeasure.Text = "Keep measure position" - Me.CBeatMeasure.UseVisualStyleBackColor = True - ' - 'CBeatPreserve - ' - Me.CBeatPreserve.AutoSize = True - Me.CBeatPreserve.Checked = True - Me.CBeatPreserve.Location = New System.Drawing.Point(3, 0) - Me.CBeatPreserve.Margin = New System.Windows.Forms.Padding(3, 0, 3, 0) - Me.CBeatPreserve.Name = "CBeatPreserve" - Me.CBeatPreserve.Size = New System.Drawing.Size(145, 19) - Me.CBeatPreserve.TabIndex = 902 - Me.CBeatPreserve.TabStop = True - Me.CBeatPreserve.Text = "Keep absolute position" - Me.CBeatPreserve.UseVisualStyleBackColor = True - ' - 'POBeatSwitch - ' - Me.POBeatSwitch.Appearance = System.Windows.Forms.Appearance.Button - Me.POBeatSwitch.BackColor = System.Drawing.SystemColors.Control - Me.POBeatSwitch.Cursor = System.Windows.Forms.Cursors.Hand - Me.POBeatSwitch.Dock = System.Windows.Forms.DockStyle.Top - Me.POBeatSwitch.Font = New System.Drawing.Font("Segoe UI", 9.0!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) - Me.POBeatSwitch.Location = New System.Drawing.Point(0, 0) - Me.POBeatSwitch.Name = "POBeatSwitch" - Me.POBeatSwitch.Size = New System.Drawing.Size(183, 20) - Me.POBeatSwitch.TabIndex = 801 - Me.POBeatSwitch.TabStop = False - Me.POBeatSwitch.Text = "Beat" - Me.POBeatSwitch.TextAlign = System.Drawing.ContentAlignment.MiddleCenter - Me.POBeatSwitch.UseCompatibleTextRendering = True - Me.POBeatSwitch.UseVisualStyleBackColor = False - ' - 'POWAV - ' - Me.POWAV.AllowDrop = True - Me.POWAV.AutoSize = True - Me.POWAV.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink - Me.POWAV.Controls.Add(Me.POWAVInner) - Me.POWAV.Controls.Add(Me.POWAVSwitch) - Me.POWAV.Dock = System.Windows.Forms.DockStyle.Top - Me.POWAV.Location = New System.Drawing.Point(0, 912) - Me.POWAV.Name = "POWAV" - Me.POWAV.Size = New System.Drawing.Size(183, 270) - Me.POWAV.TabIndex = 4 - ' - 'POWAVInner - ' - Me.POWAVInner.ColumnCount = 1 - Me.POWAVInner.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100.0!)) - Me.POWAVInner.Controls.Add(Me.POWAVExpander, 0, 1) - Me.POWAVInner.Controls.Add(Me.LWAV, 0, 3) - Me.POWAVInner.Controls.Add(Me.FlowLayoutPanel3, 0, 0) - Me.POWAVInner.Controls.Add(Me.POWAVResizer, 0, 4) - Me.POWAVInner.Controls.Add(Me.POWAVPart2, 0, 2) - Me.POWAVInner.Dock = System.Windows.Forms.DockStyle.Top - Me.POWAVInner.Location = New System.Drawing.Point(0, 20) - Me.POWAVInner.Name = "POWAVInner" - Me.POWAVInner.RowCount = 5 - Me.POWAVInner.RowStyles.Add(New System.Windows.Forms.RowStyle()) - Me.POWAVInner.RowStyles.Add(New System.Windows.Forms.RowStyle()) - Me.POWAVInner.RowStyles.Add(New System.Windows.Forms.RowStyle()) - Me.POWAVInner.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100.0!)) - Me.POWAVInner.RowStyles.Add(New System.Windows.Forms.RowStyle()) - Me.POWAVInner.Size = New System.Drawing.Size(183, 250) - Me.POWAVInner.TabIndex = 5 - ' - 'POWAVExpander - ' - Me.POWAVExpander.Appearance = System.Windows.Forms.Appearance.Button - Me.POWAVExpander.AutoSize = True - Me.POWAVExpander.Cursor = System.Windows.Forms.Cursors.Hand - Me.POWAVExpander.Dock = System.Windows.Forms.DockStyle.Top - Me.POWAVExpander.FlatAppearance.BorderSize = 0 - Me.POWAVExpander.FlatStyle = System.Windows.Forms.FlatStyle.Popup - Me.POWAVExpander.Location = New System.Drawing.Point(0, 30) - Me.POWAVExpander.Margin = New System.Windows.Forms.Padding(0) - Me.POWAVExpander.Name = "POWAVExpander" - Me.POWAVExpander.Size = New System.Drawing.Size(183, 25) - Me.POWAVExpander.TabIndex = 701 - Me.POWAVExpander.TabStop = False - Me.POWAVExpander.Text = "Expand..." - Me.POWAVExpander.TextAlign = System.Drawing.ContentAlignment.MiddleCenter - Me.POWAVExpander.UseVisualStyleBackColor = False - ' - 'LWAV - ' - Me.LWAV.Dock = System.Windows.Forms.DockStyle.Fill - Me.LWAV.Font = New System.Drawing.Font("Consolas", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) - Me.LWAV.IntegralHeight = False - Me.LWAV.ItemHeight = 14 - Me.LWAV.Location = New System.Drawing.Point(3, 93) - Me.LWAV.Margin = New System.Windows.Forms.Padding(3, 0, 3, 0) - Me.LWAV.Name = "LWAV" - Me.LWAV.SelectionMode = System.Windows.Forms.SelectionMode.MultiExtended - Me.LWAV.Size = New System.Drawing.Size(177, 152) - Me.LWAV.TabIndex = 704 - ' - 'FlowLayoutPanel3 - ' - Me.FlowLayoutPanel3.AutoSize = True - Me.FlowLayoutPanel3.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink - Me.FlowLayoutPanel3.Controls.Add(Me.BWAVUp) - Me.FlowLayoutPanel3.Controls.Add(Me.BWAVDown) - Me.FlowLayoutPanel3.Controls.Add(Me.BWAVBrowse) - Me.FlowLayoutPanel3.Controls.Add(Me.BWAVRemove) - Me.FlowLayoutPanel3.Location = New System.Drawing.Point(3, 3) - Me.FlowLayoutPanel3.Name = "FlowLayoutPanel3" - Me.FlowLayoutPanel3.Size = New System.Drawing.Size(96, 24) - Me.FlowLayoutPanel3.TabIndex = 26 - Me.FlowLayoutPanel3.WrapContents = False - ' - 'BWAVUp - ' - Me.BWAVUp.Image = Global.iBMSC.My.Resources.Resources.x16Up - Me.BWAVUp.Location = New System.Drawing.Point(0, 0) - Me.BWAVUp.Margin = New System.Windows.Forms.Padding(0) - Me.BWAVUp.Name = "BWAVUp" - Me.BWAVUp.Size = New System.Drawing.Size(24, 24) - Me.BWAVUp.TabIndex = 602 - Me.ToolTipUniversal.SetToolTip(Me.BWAVUp, "Move Up") - Me.BWAVUp.UseVisualStyleBackColor = True - ' - 'BWAVDown - ' - Me.BWAVDown.Image = Global.iBMSC.My.Resources.Resources.x16Down - Me.BWAVDown.Location = New System.Drawing.Point(24, 0) - Me.BWAVDown.Margin = New System.Windows.Forms.Padding(0) - Me.BWAVDown.Name = "BWAVDown" - Me.BWAVDown.Size = New System.Drawing.Size(24, 24) - Me.BWAVDown.TabIndex = 603 - Me.ToolTipUniversal.SetToolTip(Me.BWAVDown, "Move Down") - Me.BWAVDown.UseVisualStyleBackColor = True - ' - 'BWAVBrowse - ' - Me.BWAVBrowse.Image = Global.iBMSC.My.Resources.Resources.x16PlayerBrowse - Me.BWAVBrowse.Location = New System.Drawing.Point(48, 0) - Me.BWAVBrowse.Margin = New System.Windows.Forms.Padding(0) - Me.BWAVBrowse.Name = "BWAVBrowse" - Me.BWAVBrowse.Size = New System.Drawing.Size(24, 24) - Me.BWAVBrowse.TabIndex = 604 - Me.ToolTipUniversal.SetToolTip(Me.BWAVBrowse, "Browse") - Me.BWAVBrowse.UseVisualStyleBackColor = True - ' - 'BWAVRemove - ' - Me.BWAVRemove.Image = Global.iBMSC.My.Resources.Resources.x16Remove - Me.BWAVRemove.Location = New System.Drawing.Point(72, 0) - Me.BWAVRemove.Margin = New System.Windows.Forms.Padding(0) - Me.BWAVRemove.Name = "BWAVRemove" - Me.BWAVRemove.Size = New System.Drawing.Size(24, 24) - Me.BWAVRemove.TabIndex = 605 - Me.ToolTipUniversal.SetToolTip(Me.BWAVRemove, "Remove") - Me.BWAVRemove.UseVisualStyleBackColor = True - ' - 'POWAVResizer - ' - Me.POWAVResizer.Dock = System.Windows.Forms.DockStyle.Top - Me.POWAVResizer.FlatAppearance.BorderSize = 0 - Me.POWAVResizer.FlatStyle = System.Windows.Forms.FlatStyle.Flat - Me.POWAVResizer.Location = New System.Drawing.Point(0, 245) - Me.POWAVResizer.Margin = New System.Windows.Forms.Padding(0) - Me.POWAVResizer.Name = "POWAVResizer" - Me.POWAVResizer.Size = New System.Drawing.Size(183, 5) - Me.POWAVResizer.TabIndex = 33 - Me.POWAVResizer.TabStop = False - Me.POWAVResizer.UseVisualStyleBackColor = True - ' - 'POWAVPart2 - ' - Me.POWAVPart2.AutoSize = True - Me.POWAVPart2.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink - Me.POWAVPart2.ColumnCount = 1 - Me.POWAVPart2.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100.0!)) - Me.POWAVPart2.Controls.Add(Me.CWAVMultiSelect, 0, 0) - Me.POWAVPart2.Controls.Add(Me.CWAVChangeLabel, 0, 1) - Me.POWAVPart2.Dock = System.Windows.Forms.DockStyle.Fill - Me.POWAVPart2.Location = New System.Drawing.Point(0, 55) - Me.POWAVPart2.Margin = New System.Windows.Forms.Padding(0) - Me.POWAVPart2.Name = "POWAVPart2" - Me.POWAVPart2.RowCount = 2 - Me.POWAVPart2.RowStyles.Add(New System.Windows.Forms.RowStyle()) - Me.POWAVPart2.RowStyles.Add(New System.Windows.Forms.RowStyle()) - Me.POWAVPart2.Size = New System.Drawing.Size(183, 38) - Me.POWAVPart2.TabIndex = 35 - Me.POWAVPart2.Visible = False - ' - 'CWAVMultiSelect - ' - Me.CWAVMultiSelect.AutoSize = True - Me.CWAVMultiSelect.Checked = True - Me.CWAVMultiSelect.CheckState = System.Windows.Forms.CheckState.Checked - Me.CWAVMultiSelect.Location = New System.Drawing.Point(3, 0) - Me.CWAVMultiSelect.Margin = New System.Windows.Forms.Padding(3, 0, 3, 0) - Me.CWAVMultiSelect.Name = "CWAVMultiSelect" - Me.CWAVMultiSelect.Size = New System.Drawing.Size(154, 19) - Me.CWAVMultiSelect.TabIndex = 702 - Me.CWAVMultiSelect.Text = "Allow Multiple Selection" - Me.CWAVMultiSelect.UseVisualStyleBackColor = True - ' - 'CWAVChangeLabel - ' - Me.CWAVChangeLabel.AutoSize = True - Me.CWAVChangeLabel.Checked = True - Me.CWAVChangeLabel.CheckState = System.Windows.Forms.CheckState.Checked - Me.CWAVChangeLabel.Location = New System.Drawing.Point(3, 19) - Me.CWAVChangeLabel.Margin = New System.Windows.Forms.Padding(3, 0, 3, 0) - Me.CWAVChangeLabel.Name = "CWAVChangeLabel" - Me.CWAVChangeLabel.Size = New System.Drawing.Size(155, 19) - Me.CWAVChangeLabel.TabIndex = 703 - Me.CWAVChangeLabel.Text = "Synchronize Note Labels" - Me.CWAVChangeLabel.UseVisualStyleBackColor = True - ' - 'POWAVSwitch - ' - Me.POWAVSwitch.Appearance = System.Windows.Forms.Appearance.Button - Me.POWAVSwitch.BackColor = System.Drawing.SystemColors.Control - Me.POWAVSwitch.Checked = True - Me.POWAVSwitch.CheckState = System.Windows.Forms.CheckState.Checked - Me.POWAVSwitch.Cursor = System.Windows.Forms.Cursors.Hand - Me.POWAVSwitch.Dock = System.Windows.Forms.DockStyle.Top - Me.POWAVSwitch.Font = New System.Drawing.Font("Segoe UI", 9.0!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) - Me.POWAVSwitch.Location = New System.Drawing.Point(0, 0) - Me.POWAVSwitch.Name = "POWAVSwitch" - Me.POWAVSwitch.Size = New System.Drawing.Size(183, 20) - Me.POWAVSwitch.TabIndex = 601 - Me.POWAVSwitch.TabStop = False - Me.POWAVSwitch.Text = "#WAV (Sounds List)" - Me.POWAVSwitch.TextAlign = System.Drawing.ContentAlignment.MiddleCenter - Me.POWAVSwitch.UseCompatibleTextRendering = True - Me.POWAVSwitch.UseVisualStyleBackColor = False - ' - 'POWaveForm - ' - Me.POWaveForm.AutoSize = True - Me.POWaveForm.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink - Me.POWaveForm.Controls.Add(Me.POWaveFormInner) - Me.POWaveForm.Controls.Add(Me.POWaveFormSwitch) - Me.POWaveForm.Dock = System.Windows.Forms.DockStyle.Top - Me.POWaveForm.Location = New System.Drawing.Point(0, 669) - Me.POWaveForm.Name = "POWaveForm" - Me.POWaveForm.Size = New System.Drawing.Size(183, 243) - Me.POWaveForm.TabIndex = 3 - ' - 'POWaveFormInner - ' - Me.POWaveFormInner.AutoSize = True - Me.POWaveFormInner.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink - Me.POWaveFormInner.Controls.Add(Me.POWaveFormPart2) - Me.POWaveFormInner.Controls.Add(Me.POWaveFormExpander) - Me.POWaveFormInner.Controls.Add(Me.POWaveFormPart1) - Me.POWaveFormInner.Dock = System.Windows.Forms.DockStyle.Top - Me.POWaveFormInner.Location = New System.Drawing.Point(0, 20) - Me.POWaveFormInner.Name = "POWaveFormInner" - Me.POWaveFormInner.Size = New System.Drawing.Size(183, 223) - Me.POWaveFormInner.TabIndex = 29 - Me.POWaveFormInner.Visible = False - ' - 'POWaveFormPart2 - ' - Me.POWaveFormPart2.AutoSize = True - Me.POWaveFormPart2.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink - Me.POWaveFormPart2.ColumnCount = 3 - Me.POWaveFormPart2.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle()) - Me.POWaveFormPart2.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 70.0!)) - Me.POWaveFormPart2.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 30.0!)) - Me.POWaveFormPart2.Controls.Add(Me.TWSaturation, 2, 4) - Me.POWaveFormPart2.Controls.Add(Me.PictureBox2, 0, 0) - Me.POWaveFormPart2.Controls.Add(Me.TWTransparency, 2, 3) - Me.POWaveFormPart2.Controls.Add(Me.PictureBox3, 0, 1) - Me.POWaveFormPart2.Controls.Add(Me.TWPrecision, 2, 2) - Me.POWaveFormPart2.Controls.Add(Me.PictureBox4, 0, 2) - Me.POWaveFormPart2.Controls.Add(Me.TWWidth, 2, 1) - Me.POWaveFormPart2.Controls.Add(Me.PictureBox5, 0, 3) - Me.POWaveFormPart2.Controls.Add(Me.TWLeft, 2, 0) - Me.POWaveFormPart2.Controls.Add(Me.PictureBox6, 0, 4) - Me.POWaveFormPart2.Controls.Add(Me.TWSaturation2, 1, 4) - Me.POWaveFormPart2.Controls.Add(Me.TWLeft2, 1, 0) - Me.POWaveFormPart2.Controls.Add(Me.TWTransparency2, 1, 3) - Me.POWaveFormPart2.Controls.Add(Me.TWWidth2, 1, 1) - Me.POWaveFormPart2.Controls.Add(Me.TWPrecision2, 1, 2) - Me.POWaveFormPart2.Dock = System.Windows.Forms.DockStyle.Top - Me.POWaveFormPart2.Location = New System.Drawing.Point(0, 83) - Me.POWaveFormPart2.Name = "POWaveFormPart2" - Me.POWaveFormPart2.RowCount = 5 - Me.POWaveFormPart2.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 28.0!)) - Me.POWaveFormPart2.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 28.0!)) - Me.POWaveFormPart2.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 28.0!)) - Me.POWaveFormPart2.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 28.0!)) - Me.POWaveFormPart2.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 28.0!)) - Me.POWaveFormPart2.Size = New System.Drawing.Size(183, 140) - Me.POWaveFormPart2.TabIndex = 5 - ' - 'TWSaturation - ' - Me.TWSaturation.Dock = System.Windows.Forms.DockStyle.Fill - Me.TWSaturation.Increment = New Decimal(New Integer() {50, 0, 0, 0}) - Me.TWSaturation.Location = New System.Drawing.Point(137, 112) - Me.TWSaturation.Margin = New System.Windows.Forms.Padding(0, 0, 3, 0) - Me.TWSaturation.Maximum = New Decimal(New Integer() {1000, 0, 0, 0}) - Me.TWSaturation.Name = "TWSaturation" - Me.TWSaturation.Size = New System.Drawing.Size(43, 23) - Me.TWSaturation.TabIndex = 511 - ' - 'PictureBox2 - ' - Me.PictureBox2.Image = Global.iBMSC.My.Resources.Resources.WAVLeft - Me.PictureBox2.Location = New System.Drawing.Point(3, 0) - Me.PictureBox2.Margin = New System.Windows.Forms.Padding(3, 0, 3, 0) - Me.PictureBox2.Name = "PictureBox2" - Me.PictureBox2.Size = New System.Drawing.Size(24, 24) - Me.PictureBox2.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize - Me.PictureBox2.TabIndex = 60 - Me.PictureBox2.TabStop = False - ' - 'TWTransparency - ' - Me.TWTransparency.Dock = System.Windows.Forms.DockStyle.Fill - Me.TWTransparency.Increment = New Decimal(New Integer() {10, 0, 0, 0}) - Me.TWTransparency.Location = New System.Drawing.Point(137, 84) - Me.TWTransparency.Margin = New System.Windows.Forms.Padding(0, 0, 3, 0) - Me.TWTransparency.Maximum = New Decimal(New Integer() {255, 0, 0, 0}) - Me.TWTransparency.Name = "TWTransparency" - Me.TWTransparency.Size = New System.Drawing.Size(43, 23) - Me.TWTransparency.TabIndex = 509 - Me.TWTransparency.Value = New Decimal(New Integer() {80, 0, 0, 0}) - ' - 'PictureBox3 - ' - Me.PictureBox3.Image = Global.iBMSC.My.Resources.Resources.WAVWidth - Me.PictureBox3.Location = New System.Drawing.Point(3, 28) - Me.PictureBox3.Margin = New System.Windows.Forms.Padding(3, 0, 3, 0) - Me.PictureBox3.Name = "PictureBox3" - Me.PictureBox3.Size = New System.Drawing.Size(24, 24) - Me.PictureBox3.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize - Me.PictureBox3.TabIndex = 61 - Me.PictureBox3.TabStop = False - ' - 'TWPrecision - ' - Me.TWPrecision.Dock = System.Windows.Forms.DockStyle.Fill - Me.TWPrecision.Location = New System.Drawing.Point(137, 56) - Me.TWPrecision.Margin = New System.Windows.Forms.Padding(0, 0, 3, 0) - Me.TWPrecision.Maximum = New Decimal(New Integer() {50, 0, 0, 0}) - Me.TWPrecision.Name = "TWPrecision" - Me.TWPrecision.Size = New System.Drawing.Size(43, 23) - Me.TWPrecision.TabIndex = 507 - Me.TWPrecision.Value = New Decimal(New Integer() {5, 0, 0, 0}) - ' - 'PictureBox4 - ' - Me.PictureBox4.Image = Global.iBMSC.My.Resources.Resources.WAVPrecision - Me.PictureBox4.Location = New System.Drawing.Point(3, 56) - Me.PictureBox4.Margin = New System.Windows.Forms.Padding(3, 0, 3, 0) - Me.PictureBox4.Name = "PictureBox4" - Me.PictureBox4.Size = New System.Drawing.Size(24, 24) - Me.PictureBox4.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize - Me.PictureBox4.TabIndex = 62 - Me.PictureBox4.TabStop = False - ' - 'TWWidth - ' - Me.TWWidth.Dock = System.Windows.Forms.DockStyle.Fill - Me.TWWidth.Increment = New Decimal(New Integer() {10, 0, 0, 0}) - Me.TWWidth.Location = New System.Drawing.Point(137, 28) - Me.TWWidth.Margin = New System.Windows.Forms.Padding(0, 0, 3, 0) - Me.TWWidth.Maximum = New Decimal(New Integer() {1000, 0, 0, 0}) - Me.TWWidth.Name = "TWWidth" - Me.TWWidth.Size = New System.Drawing.Size(43, 23) - Me.TWWidth.TabIndex = 505 - Me.TWWidth.Value = New Decimal(New Integer() {200, 0, 0, 0}) - ' - 'PictureBox5 - ' - Me.PictureBox5.Image = Global.iBMSC.My.Resources.Resources.WAVTransparency - Me.PictureBox5.Location = New System.Drawing.Point(3, 84) - Me.PictureBox5.Margin = New System.Windows.Forms.Padding(3, 0, 3, 0) - Me.PictureBox5.Name = "PictureBox5" - Me.PictureBox5.Size = New System.Drawing.Size(24, 24) - Me.PictureBox5.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize - Me.PictureBox5.TabIndex = 67 - Me.PictureBox5.TabStop = False - ' - 'TWLeft - ' - Me.TWLeft.Dock = System.Windows.Forms.DockStyle.Fill - Me.TWLeft.Increment = New Decimal(New Integer() {5, 0, 0, 0}) - Me.TWLeft.Location = New System.Drawing.Point(137, 0) - Me.TWLeft.Margin = New System.Windows.Forms.Padding(0, 0, 3, 0) - Me.TWLeft.Maximum = New Decimal(New Integer() {800, 0, 0, 0}) - Me.TWLeft.Name = "TWLeft" - Me.TWLeft.Size = New System.Drawing.Size(43, 23) - Me.TWLeft.TabIndex = 503 - Me.TWLeft.Value = New Decimal(New Integer() {50, 0, 0, 0}) - ' - 'PictureBox6 - ' - Me.PictureBox6.Image = Global.iBMSC.My.Resources.Resources.WAVSaturation - Me.PictureBox6.Location = New System.Drawing.Point(3, 112) - Me.PictureBox6.Margin = New System.Windows.Forms.Padding(3, 0, 3, 0) - Me.PictureBox6.Name = "PictureBox6" - Me.PictureBox6.Size = New System.Drawing.Size(24, 24) - Me.PictureBox6.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize - Me.PictureBox6.TabIndex = 66 - Me.PictureBox6.TabStop = False - ' - 'TWSaturation2 - ' - Me.TWSaturation2.Dock = System.Windows.Forms.DockStyle.Fill - Me.TWSaturation2.LargeChange = 200 - Me.TWSaturation2.Location = New System.Drawing.Point(30, 112) - Me.TWSaturation2.Margin = New System.Windows.Forms.Padding(0) - Me.TWSaturation2.Maximum = 1000 - Me.TWSaturation2.Name = "TWSaturation2" - Me.TWSaturation2.Size = New System.Drawing.Size(107, 28) - Me.TWSaturation2.SmallChange = 50 - Me.TWSaturation2.TabIndex = 510 - Me.TWSaturation2.TickFrequency = 200 - ' - 'TWLeft2 - ' - Me.TWLeft2.Dock = System.Windows.Forms.DockStyle.Fill - Me.TWLeft2.LargeChange = 50 - Me.TWLeft2.Location = New System.Drawing.Point(30, 0) - Me.TWLeft2.Margin = New System.Windows.Forms.Padding(0) - Me.TWLeft2.Maximum = 800 - Me.TWLeft2.Name = "TWLeft2" - Me.TWLeft2.Size = New System.Drawing.Size(107, 28) - Me.TWLeft2.SmallChange = 10 - Me.TWLeft2.TabIndex = 502 - Me.TWLeft2.TickFrequency = 100 - Me.TWLeft2.Value = 50 - ' - 'TWTransparency2 - ' - Me.TWTransparency2.Dock = System.Windows.Forms.DockStyle.Fill - Me.TWTransparency2.LargeChange = 64 - Me.TWTransparency2.Location = New System.Drawing.Point(30, 84) - Me.TWTransparency2.Margin = New System.Windows.Forms.Padding(0) - Me.TWTransparency2.Maximum = 255 - Me.TWTransparency2.Name = "TWTransparency2" - Me.TWTransparency2.Size = New System.Drawing.Size(107, 28) - Me.TWTransparency2.SmallChange = 8 - Me.TWTransparency2.TabIndex = 508 - Me.TWTransparency2.TickFrequency = 64 - Me.TWTransparency2.Value = 80 - ' - 'TWWidth2 - ' - Me.TWWidth2.Dock = System.Windows.Forms.DockStyle.Fill - Me.TWWidth2.LargeChange = 50 - Me.TWWidth2.Location = New System.Drawing.Point(30, 28) - Me.TWWidth2.Margin = New System.Windows.Forms.Padding(0) - Me.TWWidth2.Maximum = 1000 - Me.TWWidth2.Name = "TWWidth2" - Me.TWWidth2.Size = New System.Drawing.Size(107, 28) - Me.TWWidth2.SmallChange = 10 - Me.TWWidth2.TabIndex = 504 - Me.TWWidth2.TickFrequency = 100 - Me.TWWidth2.Value = 200 - ' - 'TWPrecision2 - ' - Me.TWPrecision2.Dock = System.Windows.Forms.DockStyle.Fill - Me.TWPrecision2.LargeChange = 4 - Me.TWPrecision2.Location = New System.Drawing.Point(30, 56) - Me.TWPrecision2.Margin = New System.Windows.Forms.Padding(0) - Me.TWPrecision2.Maximum = 50 - Me.TWPrecision2.Name = "TWPrecision2" - Me.TWPrecision2.Size = New System.Drawing.Size(107, 28) - Me.TWPrecision2.TabIndex = 506 - Me.TWPrecision2.TickFrequency = 5 - Me.TWPrecision2.Value = 5 - ' - 'POWaveFormExpander - ' - Me.POWaveFormExpander.Appearance = System.Windows.Forms.Appearance.Button - Me.POWaveFormExpander.AutoSize = True - Me.POWaveFormExpander.Cursor = System.Windows.Forms.Cursors.Hand - Me.POWaveFormExpander.Dock = System.Windows.Forms.DockStyle.Top - Me.POWaveFormExpander.FlatAppearance.BorderSize = 0 - Me.POWaveFormExpander.FlatStyle = System.Windows.Forms.FlatStyle.Popup - Me.POWaveFormExpander.Location = New System.Drawing.Point(0, 58) - Me.POWaveFormExpander.Margin = New System.Windows.Forms.Padding(0) - Me.POWaveFormExpander.Name = "POWaveFormExpander" - Me.POWaveFormExpander.Size = New System.Drawing.Size(183, 25) - Me.POWaveFormExpander.TabIndex = 501 - Me.POWaveFormExpander.TabStop = False - Me.POWaveFormExpander.Text = "Expand..." - Me.POWaveFormExpander.TextAlign = System.Drawing.ContentAlignment.MiddleCenter - Me.POWaveFormExpander.UseVisualStyleBackColor = False - ' - 'POWaveFormPart1 - ' - Me.POWaveFormPart1.AutoSize = True - Me.POWaveFormPart1.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink - Me.POWaveFormPart1.ColumnCount = 1 - Me.POWaveFormPart1.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100.0!)) - Me.POWaveFormPart1.Controls.Add(Me.TableLayoutPanel1, 0, 0) - Me.POWaveFormPart1.Controls.Add(Me.TableLayoutPanel6, 0, 1) - Me.POWaveFormPart1.Dock = System.Windows.Forms.DockStyle.Top - Me.POWaveFormPart1.Location = New System.Drawing.Point(0, 0) - Me.POWaveFormPart1.Name = "POWaveFormPart1" - Me.POWaveFormPart1.RowCount = 2 - Me.POWaveFormPart1.RowStyles.Add(New System.Windows.Forms.RowStyle()) - Me.POWaveFormPart1.RowStyles.Add(New System.Windows.Forms.RowStyle()) - Me.POWaveFormPart1.Size = New System.Drawing.Size(183, 58) - Me.POWaveFormPart1.TabIndex = 4 - ' - 'TableLayoutPanel1 - ' - Me.TableLayoutPanel1.AutoSize = True - Me.TableLayoutPanel1.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink - Me.TableLayoutPanel1.ColumnCount = 2 - Me.TableLayoutPanel1.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle()) - Me.TableLayoutPanel1.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100.0!)) - Me.TableLayoutPanel1.Controls.Add(Me.FlowLayoutPanel1, 0, 0) - Me.TableLayoutPanel1.Controls.Add(Me.TWFileName, 1, 0) - Me.TableLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Fill - Me.TableLayoutPanel1.Location = New System.Drawing.Point(0, 0) - Me.TableLayoutPanel1.Margin = New System.Windows.Forms.Padding(0) - Me.TableLayoutPanel1.Name = "TableLayoutPanel1" - Me.TableLayoutPanel1.RowCount = 1 - Me.TableLayoutPanel1.RowStyles.Add(New System.Windows.Forms.RowStyle()) - Me.TableLayoutPanel1.Size = New System.Drawing.Size(183, 30) - Me.TableLayoutPanel1.TabIndex = 0 - ' - 'FlowLayoutPanel1 - ' - Me.FlowLayoutPanel1.AutoSize = True - Me.FlowLayoutPanel1.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink - Me.FlowLayoutPanel1.Controls.Add(Me.BWLoad) - Me.FlowLayoutPanel1.Controls.Add(Me.BWClear) - Me.FlowLayoutPanel1.Controls.Add(Me.BWLock) - Me.FlowLayoutPanel1.Location = New System.Drawing.Point(3, 3) - Me.FlowLayoutPanel1.Name = "FlowLayoutPanel1" - Me.FlowLayoutPanel1.Size = New System.Drawing.Size(72, 24) - Me.FlowLayoutPanel1.TabIndex = 72 - Me.FlowLayoutPanel1.WrapContents = False - ' - 'BWLoad - ' - Me.BWLoad.Image = Global.iBMSC.My.Resources.Resources.x16Add - Me.BWLoad.Location = New System.Drawing.Point(0, 0) - Me.BWLoad.Margin = New System.Windows.Forms.Padding(0) - Me.BWLoad.Name = "BWLoad" - Me.BWLoad.Size = New System.Drawing.Size(24, 24) - Me.BWLoad.TabIndex = 402 - Me.ToolTipUniversal.SetToolTip(Me.BWLoad, "Load WaveForm") - Me.BWLoad.UseVisualStyleBackColor = True - ' - 'BWClear - ' - Me.BWClear.Image = Global.iBMSC.My.Resources.Resources.x16Remove - Me.BWClear.Location = New System.Drawing.Point(24, 0) - Me.BWClear.Margin = New System.Windows.Forms.Padding(0) - Me.BWClear.Name = "BWClear" - Me.BWClear.Size = New System.Drawing.Size(24, 24) - Me.BWClear.TabIndex = 403 - Me.ToolTipUniversal.SetToolTip(Me.BWClear, "Clear WaveForm") - Me.BWClear.UseVisualStyleBackColor = True - ' - 'BWLock - ' - Me.BWLock.Appearance = System.Windows.Forms.Appearance.Button - Me.BWLock.Checked = True - Me.BWLock.CheckState = System.Windows.Forms.CheckState.Checked - Me.BWLock.Image = Global.iBMSC.My.Resources.Resources.x16Lock - Me.BWLock.Location = New System.Drawing.Point(48, 0) - Me.BWLock.Margin = New System.Windows.Forms.Padding(0) - Me.BWLock.Name = "BWLock" - Me.BWLock.Size = New System.Drawing.Size(24, 24) - Me.BWLock.TabIndex = 404 - Me.ToolTipUniversal.SetToolTip(Me.BWLock, "Lock to BGM") - Me.BWLock.UseVisualStyleBackColor = True - ' - 'TWFileName - ' - Me.TWFileName.Dock = System.Windows.Forms.DockStyle.Fill - Me.TWFileName.Location = New System.Drawing.Point(81, 3) - Me.TWFileName.Name = "TWFileName" - Me.TWFileName.ReadOnly = True - Me.TWFileName.Size = New System.Drawing.Size(99, 23) - Me.TWFileName.TabIndex = 405 - Me.TWFileName.Text = "(None)" - ' - 'TableLayoutPanel6 - ' - Me.TableLayoutPanel6.AutoSize = True - Me.TableLayoutPanel6.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink - Me.TableLayoutPanel6.ColumnCount = 3 - Me.TableLayoutPanel6.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle()) - Me.TableLayoutPanel6.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 60.0!)) - Me.TableLayoutPanel6.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 40.0!)) - Me.TableLayoutPanel6.Controls.Add(Me.PictureBox1, 0, 0) - Me.TableLayoutPanel6.Controls.Add(Me.TWPosition2, 1, 0) - Me.TableLayoutPanel6.Controls.Add(Me.TWPosition, 2, 0) - Me.TableLayoutPanel6.Dock = System.Windows.Forms.DockStyle.Fill - Me.TableLayoutPanel6.Location = New System.Drawing.Point(0, 30) - Me.TableLayoutPanel6.Margin = New System.Windows.Forms.Padding(0) - Me.TableLayoutPanel6.Name = "TableLayoutPanel6" - Me.TableLayoutPanel6.RowCount = 1 - Me.TableLayoutPanel6.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 28.0!)) - Me.TableLayoutPanel6.Size = New System.Drawing.Size(183, 28) - Me.TableLayoutPanel6.TabIndex = 1 - ' - 'PictureBox1 - ' - Me.PictureBox1.Image = Global.iBMSC.My.Resources.Resources.WAVOffset - Me.PictureBox1.Location = New System.Drawing.Point(3, 0) - Me.PictureBox1.Margin = New System.Windows.Forms.Padding(3, 0, 3, 0) - Me.PictureBox1.Name = "PictureBox1" - Me.PictureBox1.Size = New System.Drawing.Size(24, 24) - Me.PictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize - Me.PictureBox1.TabIndex = 59 - Me.PictureBox1.TabStop = False - ' - 'TWPosition2 - ' - Me.TWPosition2.Dock = System.Windows.Forms.DockStyle.Fill - Me.TWPosition2.Enabled = False - Me.TWPosition2.LargeChange = 24 - Me.TWPosition2.Location = New System.Drawing.Point(30, 0) - Me.TWPosition2.Margin = New System.Windows.Forms.Padding(0) - Me.TWPosition2.Maximum = 960 - Me.TWPosition2.Name = "TWPosition2" - Me.TWPosition2.Size = New System.Drawing.Size(91, 28) - Me.TWPosition2.TabIndex = 406 - Me.TWPosition2.TickFrequency = 192 - ' - 'TWPosition - ' - Me.TWPosition.DecimalPlaces = 2 - Me.TWPosition.Dock = System.Windows.Forms.DockStyle.Fill - Me.TWPosition.Enabled = False - Me.TWPosition.Location = New System.Drawing.Point(121, 0) - Me.TWPosition.Margin = New System.Windows.Forms.Padding(0, 0, 3, 0) - Me.TWPosition.Maximum = New Decimal(New Integer() {192000, 0, 0, 0}) - Me.TWPosition.Name = "TWPosition" - Me.TWPosition.Size = New System.Drawing.Size(59, 23) - Me.TWPosition.TabIndex = 407 - ' - 'POWaveFormSwitch - ' - Me.POWaveFormSwitch.Appearance = System.Windows.Forms.Appearance.Button - Me.POWaveFormSwitch.BackColor = System.Drawing.SystemColors.Control - Me.POWaveFormSwitch.Cursor = System.Windows.Forms.Cursors.Hand - Me.POWaveFormSwitch.Dock = System.Windows.Forms.DockStyle.Top - Me.POWaveFormSwitch.Font = New System.Drawing.Font("Segoe UI", 9.0!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) - Me.POWaveFormSwitch.Location = New System.Drawing.Point(0, 0) - Me.POWaveFormSwitch.Name = "POWaveFormSwitch" - Me.POWaveFormSwitch.Size = New System.Drawing.Size(183, 20) - Me.POWaveFormSwitch.TabIndex = 401 - Me.POWaveFormSwitch.TabStop = False - Me.POWaveFormSwitch.Text = "WaveForm" - Me.POWaveFormSwitch.TextAlign = System.Drawing.ContentAlignment.MiddleCenter - Me.POWaveFormSwitch.UseCompatibleTextRendering = True - Me.POWaveFormSwitch.UseVisualStyleBackColor = False - ' - 'POGrid - ' - Me.POGrid.AutoSize = True - Me.POGrid.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink - Me.POGrid.Controls.Add(Me.POGridInner) - Me.POGrid.Controls.Add(Me.POGridSwitch) - Me.POGrid.Dock = System.Windows.Forms.DockStyle.Top - Me.POGrid.Location = New System.Drawing.Point(0, 439) - Me.POGrid.Name = "POGrid" - Me.POGrid.Size = New System.Drawing.Size(183, 230) - Me.POGrid.TabIndex = 2 - ' - 'POGridInner - ' - Me.POGridInner.AutoSize = True - Me.POGridInner.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink - Me.POGridInner.Controls.Add(Me.POGridPart2) - Me.POGridInner.Controls.Add(Me.POGridExpander) - Me.POGridInner.Controls.Add(Me.POGridPart1) - Me.POGridInner.Dock = System.Windows.Forms.DockStyle.Top - Me.POGridInner.Location = New System.Drawing.Point(0, 20) - Me.POGridInner.Name = "POGridInner" - Me.POGridInner.Size = New System.Drawing.Size(183, 210) - Me.POGridInner.TabIndex = 3 - ' - 'POGridPart2 - ' - Me.POGridPart2.AutoSize = True - Me.POGridPart2.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink - Me.POGridPart2.ColumnCount = 1 - Me.POGridPart2.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100.0!)) - Me.POGridPart2.Controls.Add(Me.TableLayoutPanel5, 0, 1) - Me.POGridPart2.Controls.Add(Me.TableLayoutPanel4, 0, 0) - Me.POGridPart2.Dock = System.Windows.Forms.DockStyle.Top - Me.POGridPart2.Location = New System.Drawing.Point(0, 152) - Me.POGridPart2.Name = "POGridPart2" - Me.POGridPart2.RowCount = 2 - Me.POGridPart2.RowStyles.Add(New System.Windows.Forms.RowStyle()) - Me.POGridPart2.RowStyles.Add(New System.Windows.Forms.RowStyle()) - Me.POGridPart2.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20.0!)) - Me.POGridPart2.Size = New System.Drawing.Size(183, 58) - Me.POGridPart2.TabIndex = 0 - ' - 'TableLayoutPanel5 - ' - Me.TableLayoutPanel5.AutoSize = True - Me.TableLayoutPanel5.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink - Me.TableLayoutPanel5.ColumnCount = 2 - Me.TableLayoutPanel5.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle()) - Me.TableLayoutPanel5.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100.0!)) - Me.TableLayoutPanel5.Controls.Add(Me.FlowLayoutPanel2, 1, 0) - Me.TableLayoutPanel5.Controls.Add(Me.Label5, 0, 0) - Me.TableLayoutPanel5.Dock = System.Windows.Forms.DockStyle.Fill - Me.TableLayoutPanel5.Location = New System.Drawing.Point(0, 29) - Me.TableLayoutPanel5.Margin = New System.Windows.Forms.Padding(0) - Me.TableLayoutPanel5.Name = "TableLayoutPanel5" - Me.TableLayoutPanel5.RowCount = 1 - Me.TableLayoutPanel5.RowStyles.Add(New System.Windows.Forms.RowStyle()) - Me.TableLayoutPanel5.Size = New System.Drawing.Size(183, 29) - Me.TableLayoutPanel5.TabIndex = 46 - ' - 'FlowLayoutPanel2 - ' - Me.FlowLayoutPanel2.AutoSize = True - Me.FlowLayoutPanel2.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink - Me.FlowLayoutPanel2.Controls.Add(Me.cVSLockL) - Me.FlowLayoutPanel2.Controls.Add(Me.cVSLock) - Me.FlowLayoutPanel2.Controls.Add(Me.cVSLockR) - Me.FlowLayoutPanel2.Location = New System.Drawing.Point(114, 3) - Me.FlowLayoutPanel2.Name = "FlowLayoutPanel2" - Me.FlowLayoutPanel2.Size = New System.Drawing.Size(66, 23) - Me.FlowLayoutPanel2.TabIndex = 72 - Me.FlowLayoutPanel2.WrapContents = False - ' - 'cVSLockL - ' - Me.cVSLockL.Appearance = System.Windows.Forms.Appearance.Button - Me.cVSLockL.FlatStyle = System.Windows.Forms.FlatStyle.Popup - Me.cVSLockL.Image = Global.iBMSC.My.Resources.Resources.x16Lock - Me.cVSLockL.Location = New System.Drawing.Point(0, 0) - Me.cVSLockL.Margin = New System.Windows.Forms.Padding(0) - Me.cVSLockL.Name = "cVSLockL" - Me.cVSLockL.Size = New System.Drawing.Size(23, 23) - Me.cVSLockL.TabIndex = 303 - Me.cVSLockL.Tag = "0" - Me.ToolTipUniversal.SetToolTip(Me.cVSLockL, "Lock Left Editing Panel") - ' - 'cVSLock - ' - Me.cVSLock.Appearance = System.Windows.Forms.Appearance.Button - Me.cVSLock.FlatStyle = System.Windows.Forms.FlatStyle.Popup - Me.cVSLock.Image = Global.iBMSC.My.Resources.Resources.x16Lock - Me.cVSLock.Location = New System.Drawing.Point(23, 0) - Me.cVSLock.Margin = New System.Windows.Forms.Padding(0) - Me.cVSLock.Name = "cVSLock" - Me.cVSLock.Size = New System.Drawing.Size(23, 23) - Me.cVSLock.TabIndex = 304 - Me.cVSLock.Tag = "1" - Me.ToolTipUniversal.SetToolTip(Me.cVSLock, "Lock Middle Editing Panel") - ' - 'cVSLockR - ' - Me.cVSLockR.Appearance = System.Windows.Forms.Appearance.Button - Me.cVSLockR.FlatStyle = System.Windows.Forms.FlatStyle.Popup - Me.cVSLockR.Image = Global.iBMSC.My.Resources.Resources.x16Lock - Me.cVSLockR.Location = New System.Drawing.Point(46, 0) - Me.cVSLockR.Margin = New System.Windows.Forms.Padding(0) - Me.cVSLockR.Name = "cVSLockR" - Me.cVSLockR.Size = New System.Drawing.Size(23, 23) - Me.cVSLockR.TabIndex = 305 - Me.cVSLockR.Tag = "2" - Me.ToolTipUniversal.SetToolTip(Me.cVSLockR, "Lock Right Editing Panel") - ' - 'Label5 - ' - Me.Label5.AutoSize = True - Me.Label5.Dock = System.Windows.Forms.DockStyle.Fill - Me.Label5.Location = New System.Drawing.Point(3, 0) - Me.Label5.Name = "Label5" - Me.Label5.Size = New System.Drawing.Size(105, 29) - Me.Label5.TabIndex = 303 - Me.Label5.Text = "Vertical Scroll Lock" - Me.Label5.TextAlign = System.Drawing.ContentAlignment.MiddleRight - ' - 'TableLayoutPanel4 - ' - Me.TableLayoutPanel4.AutoSize = True - Me.TableLayoutPanel4.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink - Me.TableLayoutPanel4.ColumnCount = 2 - Me.TableLayoutPanel4.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle()) - Me.TableLayoutPanel4.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100.0!)) - Me.TableLayoutPanel4.Controls.Add(Me.Label1, 0, 0) - Me.TableLayoutPanel4.Controls.Add(Me.CGB, 1, 0) - Me.TableLayoutPanel4.Dock = System.Windows.Forms.DockStyle.Fill - Me.TableLayoutPanel4.Location = New System.Drawing.Point(0, 0) - Me.TableLayoutPanel4.Margin = New System.Windows.Forms.Padding(0) - Me.TableLayoutPanel4.Name = "TableLayoutPanel4" - Me.TableLayoutPanel4.RowCount = 1 - Me.TableLayoutPanel4.RowStyles.Add(New System.Windows.Forms.RowStyle()) - Me.TableLayoutPanel4.Size = New System.Drawing.Size(183, 29) - Me.TableLayoutPanel4.TabIndex = 44 - ' - 'Label1 - ' - Me.Label1.AutoSize = True - Me.Label1.Dock = System.Windows.Forms.DockStyle.Fill - Me.Label1.Location = New System.Drawing.Point(3, 0) - Me.Label1.Name = "Label1" - Me.Label1.Size = New System.Drawing.Size(126, 29) - Me.Label1.TabIndex = 302 - Me.Label1.Text = "Number of B Columns" - Me.Label1.TextAlign = System.Drawing.ContentAlignment.MiddleRight - ' - 'CGB - ' - Me.CGB.Dock = System.Windows.Forms.DockStyle.Fill - Me.CGB.Location = New System.Drawing.Point(135, 3) - Me.CGB.Maximum = New Decimal(New Integer() {999, 0, 0, 0}) - Me.CGB.Minimum = New Decimal(New Integer() {1, 0, 0, 0}) - Me.CGB.Name = "CGB" - Me.CGB.Size = New System.Drawing.Size(45, 23) - Me.CGB.TabIndex = 302 - Me.CGB.Value = New Decimal(New Integer() {15, 0, 0, 0}) - ' - 'POGridExpander - ' - Me.POGridExpander.Appearance = System.Windows.Forms.Appearance.Button - Me.POGridExpander.AutoSize = True - Me.POGridExpander.Cursor = System.Windows.Forms.Cursors.Hand - Me.POGridExpander.Dock = System.Windows.Forms.DockStyle.Top - Me.POGridExpander.FlatAppearance.BorderSize = 0 - Me.POGridExpander.FlatStyle = System.Windows.Forms.FlatStyle.Popup - Me.POGridExpander.Location = New System.Drawing.Point(0, 127) - Me.POGridExpander.Margin = New System.Windows.Forms.Padding(0) - Me.POGridExpander.Name = "POGridExpander" - Me.POGridExpander.Size = New System.Drawing.Size(183, 25) - Me.POGridExpander.TabIndex = 301 - Me.POGridExpander.TabStop = False - Me.POGridExpander.Text = "Expand..." - Me.POGridExpander.TextAlign = System.Drawing.ContentAlignment.MiddleCenter - Me.POGridExpander.UseVisualStyleBackColor = False - ' - 'POGridPart1 - ' - Me.POGridPart1.AutoSize = True - Me.POGridPart1.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink - Me.POGridPart1.ColumnCount = 1 - Me.POGridPart1.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100.0!)) - Me.POGridPart1.Controls.Add(Me.TableLayoutPanel3, 0, 1) - Me.POGridPart1.Controls.Add(Me.CGDisableVertical, 0, 3) - Me.POGridPart1.Controls.Add(Me.CGSnap, 0, 2) - Me.POGridPart1.Controls.Add(Me.TableLayoutPanel2, 0, 0) - Me.POGridPart1.Dock = System.Windows.Forms.DockStyle.Top - Me.POGridPart1.Location = New System.Drawing.Point(0, 0) - Me.POGridPart1.Name = "POGridPart1" - Me.POGridPart1.RowCount = 4 - Me.POGridPart1.RowStyles.Add(New System.Windows.Forms.RowStyle()) - Me.POGridPart1.RowStyles.Add(New System.Windows.Forms.RowStyle()) - Me.POGridPart1.RowStyles.Add(New System.Windows.Forms.RowStyle()) - Me.POGridPart1.RowStyles.Add(New System.Windows.Forms.RowStyle()) - Me.POGridPart1.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20.0!)) - Me.POGridPart1.Size = New System.Drawing.Size(183, 127) - Me.POGridPart1.TabIndex = 11 - ' - 'TableLayoutPanel3 - ' - Me.TableLayoutPanel3.AutoSize = True - Me.TableLayoutPanel3.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink - Me.TableLayoutPanel3.ColumnCount = 3 - Me.TableLayoutPanel3.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle()) - Me.TableLayoutPanel3.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 70.0!)) - Me.TableLayoutPanel3.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 30.0!)) - Me.TableLayoutPanel3.Controls.Add(Me.PictureBox9, 0, 0) - Me.TableLayoutPanel3.Controls.Add(Me.CGHeight2, 1, 0) - Me.TableLayoutPanel3.Controls.Add(Me.CGHeight, 2, 0) - Me.TableLayoutPanel3.Controls.Add(Me.PictureBox10, 0, 1) - Me.TableLayoutPanel3.Controls.Add(Me.CGWidth2, 1, 1) - Me.TableLayoutPanel3.Controls.Add(Me.CGWidth, 2, 1) - Me.TableLayoutPanel3.Dock = System.Windows.Forms.DockStyle.Fill - Me.TableLayoutPanel3.Location = New System.Drawing.Point(0, 30) - Me.TableLayoutPanel3.Margin = New System.Windows.Forms.Padding(0) - Me.TableLayoutPanel3.Name = "TableLayoutPanel3" - Me.TableLayoutPanel3.RowCount = 2 - Me.TableLayoutPanel3.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 28.0!)) - Me.TableLayoutPanel3.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 28.0!)) - Me.TableLayoutPanel3.Size = New System.Drawing.Size(183, 56) - Me.TableLayoutPanel3.TabIndex = 12 - ' - 'PictureBox9 - ' - Me.PictureBox9.Image = Global.iBMSC.My.Resources.Resources.lgheight - Me.PictureBox9.Location = New System.Drawing.Point(3, 0) - Me.PictureBox9.Margin = New System.Windows.Forms.Padding(3, 0, 3, 0) - Me.PictureBox9.Name = "PictureBox9" - Me.PictureBox9.Size = New System.Drawing.Size(24, 24) - Me.PictureBox9.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize - Me.PictureBox9.TabIndex = 27 - Me.PictureBox9.TabStop = False - ' - 'CGHeight2 - ' - Me.CGHeight2.Dock = System.Windows.Forms.DockStyle.Fill - Me.CGHeight2.LargeChange = 4 - Me.CGHeight2.Location = New System.Drawing.Point(30, 0) - Me.CGHeight2.Margin = New System.Windows.Forms.Padding(0) - Me.CGHeight2.Maximum = 20 - Me.CGHeight2.Minimum = 1 - Me.CGHeight2.Name = "CGHeight2" - Me.CGHeight2.Size = New System.Drawing.Size(107, 28) - Me.CGHeight2.TabIndex = 205 - Me.CGHeight2.TickFrequency = 2 - Me.CGHeight2.Value = 4 - ' - 'CGHeight - ' - Me.CGHeight.DecimalPlaces = 2 - Me.CGHeight.Dock = System.Windows.Forms.DockStyle.Fill - Me.CGHeight.Increment = New Decimal(New Integer() {25, 0, 0, 131072}) - Me.CGHeight.Location = New System.Drawing.Point(137, 0) - Me.CGHeight.Margin = New System.Windows.Forms.Padding(0, 0, 3, 0) - Me.CGHeight.Maximum = New Decimal(New Integer() {99, 0, 0, 0}) - Me.CGHeight.Minimum = New Decimal(New Integer() {25, 0, 0, 131072}) - Me.CGHeight.Name = "CGHeight" - Me.CGHeight.Size = New System.Drawing.Size(43, 23) - Me.CGHeight.TabIndex = 206 - Me.CGHeight.Value = New Decimal(New Integer() {1, 0, 0, 0}) - ' - 'PictureBox10 - ' - Me.PictureBox10.Image = Global.iBMSC.My.Resources.Resources.lgwidth - Me.PictureBox10.Location = New System.Drawing.Point(3, 28) - Me.PictureBox10.Margin = New System.Windows.Forms.Padding(3, 0, 3, 0) - Me.PictureBox10.Name = "PictureBox10" - Me.PictureBox10.Size = New System.Drawing.Size(24, 24) - Me.PictureBox10.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize - Me.PictureBox10.TabIndex = 28 - Me.PictureBox10.TabStop = False - ' - 'CGWidth2 - ' - Me.CGWidth2.Dock = System.Windows.Forms.DockStyle.Fill - Me.CGWidth2.LargeChange = 4 - Me.CGWidth2.Location = New System.Drawing.Point(30, 28) - Me.CGWidth2.Margin = New System.Windows.Forms.Padding(0) - Me.CGWidth2.Maximum = 20 - Me.CGWidth2.Minimum = 1 - Me.CGWidth2.Name = "CGWidth2" - Me.CGWidth2.Size = New System.Drawing.Size(107, 28) - Me.CGWidth2.TabIndex = 207 - Me.CGWidth2.TickFrequency = 2 - Me.CGWidth2.Value = 4 - ' - 'CGWidth - ' - Me.CGWidth.DecimalPlaces = 2 - Me.CGWidth.Dock = System.Windows.Forms.DockStyle.Fill - Me.CGWidth.Increment = New Decimal(New Integer() {25, 0, 0, 131072}) - Me.CGWidth.Location = New System.Drawing.Point(137, 28) - Me.CGWidth.Margin = New System.Windows.Forms.Padding(0, 0, 3, 0) - Me.CGWidth.Maximum = New Decimal(New Integer() {99, 0, 0, 0}) - Me.CGWidth.Minimum = New Decimal(New Integer() {25, 0, 0, 131072}) - Me.CGWidth.Name = "CGWidth" - Me.CGWidth.Size = New System.Drawing.Size(43, 23) - Me.CGWidth.TabIndex = 208 - Me.CGWidth.Value = New Decimal(New Integer() {1, 0, 0, 0}) - ' - 'CGDisableVertical - ' - Me.CGDisableVertical.AutoSize = True - Me.CGDisableVertical.Location = New System.Drawing.Point(3, 108) - Me.CGDisableVertical.Margin = New System.Windows.Forms.Padding(3, 0, 3, 0) - Me.CGDisableVertical.Name = "CGDisableVertical" - Me.CGDisableVertical.Size = New System.Drawing.Size(162, 19) - Me.CGDisableVertical.TabIndex = 210 - Me.CGDisableVertical.Text = "Disable vertical moves (D)" - Me.CGDisableVertical.UseVisualStyleBackColor = True - ' - 'CGSnap - ' - Me.CGSnap.AutoSize = True - Me.CGSnap.Checked = True - Me.CGSnap.CheckState = System.Windows.Forms.CheckState.Checked - Me.CGSnap.Location = New System.Drawing.Point(3, 89) - Me.CGSnap.Margin = New System.Windows.Forms.Padding(3, 3, 3, 0) - Me.CGSnap.Name = "CGSnap" - Me.CGSnap.Size = New System.Drawing.Size(109, 19) - Me.CGSnap.TabIndex = 209 - Me.CGSnap.Text = "Snap to grid (G)" - Me.CGSnap.UseVisualStyleBackColor = True - ' - 'TableLayoutPanel2 - ' - Me.TableLayoutPanel2.AutoSize = True - Me.TableLayoutPanel2.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink - Me.TableLayoutPanel2.ColumnCount = 4 - Me.TableLayoutPanel2.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle()) - Me.TableLayoutPanel2.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50.0!)) - Me.TableLayoutPanel2.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50.0!)) - Me.TableLayoutPanel2.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle()) - Me.TableLayoutPanel2.Controls.Add(Me.PictureBox7, 0, 0) - Me.TableLayoutPanel2.Controls.Add(Me.CGDivide, 1, 0) - Me.TableLayoutPanel2.Controls.Add(Me.CGSub, 2, 0) - Me.TableLayoutPanel2.Controls.Add(Me.BGSlash, 3, 0) - Me.TableLayoutPanel2.Dock = System.Windows.Forms.DockStyle.Fill - Me.TableLayoutPanel2.Location = New System.Drawing.Point(0, 0) - Me.TableLayoutPanel2.Margin = New System.Windows.Forms.Padding(0) - Me.TableLayoutPanel2.Name = "TableLayoutPanel2" - Me.TableLayoutPanel2.RowCount = 1 - Me.TableLayoutPanel2.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100.0!)) - Me.TableLayoutPanel2.Size = New System.Drawing.Size(183, 30) - Me.TableLayoutPanel2.TabIndex = 11 - ' - 'PictureBox7 - ' - Me.PictureBox7.Anchor = System.Windows.Forms.AnchorStyles.None - Me.PictureBox7.Image = Global.iBMSC.My.Resources.Resources.lgpartition - Me.PictureBox7.Location = New System.Drawing.Point(3, 3) - Me.PictureBox7.Name = "PictureBox7" - Me.PictureBox7.Size = New System.Drawing.Size(24, 24) - Me.PictureBox7.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize - Me.PictureBox7.TabIndex = 25 - Me.PictureBox7.TabStop = False - ' - 'CGDivide - ' - Me.CGDivide.Dock = System.Windows.Forms.DockStyle.Fill - Me.CGDivide.Location = New System.Drawing.Point(33, 3) - Me.CGDivide.Maximum = New Decimal(New Integer() {1920, 0, 0, 0}) - Me.CGDivide.Minimum = New Decimal(New Integer() {1, 0, 0, 0}) - Me.CGDivide.Name = "CGDivide" - Me.CGDivide.Size = New System.Drawing.Size(58, 23) - Me.CGDivide.TabIndex = 202 - Me.CGDivide.Value = New Decimal(New Integer() {16, 0, 0, 0}) - ' - 'CGSub - ' - Me.CGSub.Dock = System.Windows.Forms.DockStyle.Fill - Me.CGSub.Location = New System.Drawing.Point(97, 3) - Me.CGSub.Maximum = New Decimal(New Integer() {1920, 0, 0, 0}) - Me.CGSub.Minimum = New Decimal(New Integer() {1, 0, 0, 0}) - Me.CGSub.Name = "CGSub" - Me.CGSub.Size = New System.Drawing.Size(58, 23) - Me.CGSub.TabIndex = 203 - Me.CGSub.Value = New Decimal(New Integer() {4, 0, 0, 0}) - ' - 'BGSlash - ' - Me.BGSlash.Anchor = System.Windows.Forms.AnchorStyles.None - Me.BGSlash.Image = Global.iBMSC.My.Resources.Resources.Shortcut - Me.BGSlash.Location = New System.Drawing.Point(158, 4) - Me.BGSlash.Margin = New System.Windows.Forms.Padding(0, 0, 3, 0) - Me.BGSlash.Name = "BGSlash" - Me.BGSlash.Size = New System.Drawing.Size(22, 22) - Me.BGSlash.TabIndex = 204 - Me.BGSlash.UseVisualStyleBackColor = True - ' - 'POGridSwitch - ' - Me.POGridSwitch.Appearance = System.Windows.Forms.Appearance.Button - Me.POGridSwitch.BackColor = System.Drawing.SystemColors.Control - Me.POGridSwitch.Checked = True - Me.POGridSwitch.CheckState = System.Windows.Forms.CheckState.Checked - Me.POGridSwitch.Cursor = System.Windows.Forms.Cursors.Hand - Me.POGridSwitch.Dock = System.Windows.Forms.DockStyle.Top - Me.POGridSwitch.Font = New System.Drawing.Font("Segoe UI", 9.0!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) - Me.POGridSwitch.Location = New System.Drawing.Point(0, 0) - Me.POGridSwitch.Name = "POGridSwitch" - Me.POGridSwitch.Size = New System.Drawing.Size(183, 20) - Me.POGridSwitch.TabIndex = 201 - Me.POGridSwitch.TabStop = False - Me.POGridSwitch.Text = "Grid" - Me.POGridSwitch.TextAlign = System.Drawing.ContentAlignment.MiddleCenter - Me.POGridSwitch.UseCompatibleTextRendering = True - Me.POGridSwitch.UseVisualStyleBackColor = False - ' - 'POHeader - ' - Me.POHeader.AutoSize = True - Me.POHeader.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink - Me.POHeader.Controls.Add(Me.POHeaderInner) - Me.POHeader.Controls.Add(Me.POHeaderSwitch) - Me.POHeader.Dock = System.Windows.Forms.DockStyle.Top - Me.POHeader.Location = New System.Drawing.Point(0, 0) - Me.POHeader.Name = "POHeader" - Me.POHeader.Size = New System.Drawing.Size(183, 439) - Me.POHeader.TabIndex = 1 - ' - 'POHeaderInner - ' - Me.POHeaderInner.AutoSize = True - Me.POHeaderInner.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink - Me.POHeaderInner.Controls.Add(Me.POHeaderPart2) - Me.POHeaderInner.Controls.Add(Me.POHeaderExpander) - Me.POHeaderInner.Controls.Add(Me.POHeaderPart1) - Me.POHeaderInner.Dock = System.Windows.Forms.DockStyle.Top - Me.POHeaderInner.Location = New System.Drawing.Point(0, 20) - Me.POHeaderInner.Name = "POHeaderInner" - Me.POHeaderInner.Size = New System.Drawing.Size(183, 419) - Me.POHeaderInner.TabIndex = 2 - ' - 'POHeaderPart2 - ' - Me.POHeaderPart2.AutoSize = True - Me.POHeaderPart2.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink - Me.POHeaderPart2.ColumnCount = 3 - Me.POHeaderPart2.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle()) - Me.POHeaderPart2.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100.0!)) - Me.POHeaderPart2.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle()) - Me.POHeaderPart2.Controls.Add(Me.CHDifficulty, 1, 5) - Me.POHeaderPart2.Controls.Add(Me.Label13, 2, 6) - Me.POHeaderPart2.Controls.Add(Me.THExRank, 1, 6) - Me.POHeaderPart2.Controls.Add(Me.Label25, 2, 7) - Me.POHeaderPart2.Controls.Add(Me.CHLnObj, 1, 9) - Me.POHeaderPart2.Controls.Add(Me.Label23, 0, 6) - Me.POHeaderPart2.Controls.Add(Me.Label21, 0, 5) - Me.POHeaderPart2.Controls.Add(Me.THComment, 1, 8) - Me.POHeaderPart2.Controls.Add(Me.Label24, 0, 9) - Me.POHeaderPart2.Controls.Add(Me.Label15, 0, 0) - Me.POHeaderPart2.Controls.Add(Me.THTotal, 1, 7) - Me.POHeaderPart2.Controls.Add(Me.Label20, 0, 7) - Me.POHeaderPart2.Controls.Add(Me.BHStageFile, 2, 2) - Me.POHeaderPart2.Controls.Add(Me.BHBanner, 2, 3) - Me.POHeaderPart2.Controls.Add(Me.Label19, 0, 8) - Me.POHeaderPart2.Controls.Add(Me.BHBackBMP, 2, 4) - Me.POHeaderPart2.Controls.Add(Me.Label17, 0, 1) - Me.POHeaderPart2.Controls.Add(Me.Label16, 0, 2) - Me.POHeaderPart2.Controls.Add(Me.Label12, 0, 3) - Me.POHeaderPart2.Controls.Add(Me.THBackBMP, 1, 4) - Me.POHeaderPart2.Controls.Add(Me.Label11, 0, 4) - Me.POHeaderPart2.Controls.Add(Me.THBanner, 1, 3) - Me.POHeaderPart2.Controls.Add(Me.THStageFile, 1, 2) - Me.POHeaderPart2.Controls.Add(Me.THSubTitle, 1, 0) - Me.POHeaderPart2.Controls.Add(Me.THSubArtist, 1, 1) - Me.POHeaderPart2.Dock = System.Windows.Forms.DockStyle.Top - Me.POHeaderPart2.Location = New System.Drawing.Point(0, 186) - Me.POHeaderPart2.Name = "POHeaderPart2" - Me.POHeaderPart2.RowCount = 10 - Me.POHeaderPart2.RowStyles.Add(New System.Windows.Forms.RowStyle()) - Me.POHeaderPart2.RowStyles.Add(New System.Windows.Forms.RowStyle()) - Me.POHeaderPart2.RowStyles.Add(New System.Windows.Forms.RowStyle()) - Me.POHeaderPart2.RowStyles.Add(New System.Windows.Forms.RowStyle()) - Me.POHeaderPart2.RowStyles.Add(New System.Windows.Forms.RowStyle()) - Me.POHeaderPart2.RowStyles.Add(New System.Windows.Forms.RowStyle()) - Me.POHeaderPart2.RowStyles.Add(New System.Windows.Forms.RowStyle()) - Me.POHeaderPart2.RowStyles.Add(New System.Windows.Forms.RowStyle()) - Me.POHeaderPart2.RowStyles.Add(New System.Windows.Forms.RowStyle()) - Me.POHeaderPart2.RowStyles.Add(New System.Windows.Forms.RowStyle()) - Me.POHeaderPart2.Size = New System.Drawing.Size(183, 233) - Me.POHeaderPart2.TabIndex = 27 - ' - 'CHDifficulty - ' - Me.POHeaderPart2.SetColumnSpan(Me.CHDifficulty, 2) - Me.CHDifficulty.Dock = System.Windows.Forms.DockStyle.Top - Me.CHDifficulty.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList - Me.CHDifficulty.FlatStyle = System.Windows.Forms.FlatStyle.System - Me.CHDifficulty.Items.AddRange(New Object() {"None", "1 - EZ / Beginner", "2 - NM / Normal", "3 - HD / Hyper", "4 - MX / Another", "5 - SC / Insane"}) - Me.CHDifficulty.Location = New System.Drawing.Point(67, 118) - Me.CHDifficulty.Margin = New System.Windows.Forms.Padding(0) - Me.CHDifficulty.Name = "CHDifficulty" - Me.CHDifficulty.Size = New System.Drawing.Size(116, 23) - Me.CHDifficulty.TabIndex = 110 - ' - 'Label13 - ' - Me.Label13.AutoSize = True - Me.Label13.Dock = System.Windows.Forms.DockStyle.Fill - Me.Label13.Location = New System.Drawing.Point(158, 141) - Me.Label13.Margin = New System.Windows.Forms.Padding(3, 0, 0, 0) - Me.Label13.Name = "Label13" - Me.Label13.Size = New System.Drawing.Size(25, 23) - Me.Label13.TabIndex = 63 - Me.Label13.Text = "(%)" - Me.Label13.TextAlign = System.Drawing.ContentAlignment.MiddleLeft - ' - 'THExRank - ' - Me.THExRank.Dock = System.Windows.Forms.DockStyle.Fill - Me.THExRank.Location = New System.Drawing.Point(67, 141) - Me.THExRank.Margin = New System.Windows.Forms.Padding(0) - Me.THExRank.Name = "THExRank" - Me.THExRank.Size = New System.Drawing.Size(88, 23) - Me.THExRank.TabIndex = 111 - ' - 'Label25 - ' - Me.Label25.AutoSize = True - Me.Label25.Dock = System.Windows.Forms.DockStyle.Fill - Me.Label25.Location = New System.Drawing.Point(158, 164) - Me.Label25.Margin = New System.Windows.Forms.Padding(3, 0, 0, 0) - Me.Label25.Name = "Label25" - Me.Label25.Size = New System.Drawing.Size(25, 23) - Me.Label25.TabIndex = 23 - Me.Label25.Text = "(%)" - Me.Label25.TextAlign = System.Drawing.ContentAlignment.MiddleLeft - ' - 'CHLnObj - ' - Me.POHeaderPart2.SetColumnSpan(Me.CHLnObj, 2) - Me.CHLnObj.Dock = System.Windows.Forms.DockStyle.Top - Me.CHLnObj.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList - Me.CHLnObj.FlatStyle = System.Windows.Forms.FlatStyle.System - Me.CHLnObj.Items.AddRange(New Object() {"None (#LnType 1)", "01", "02", "03", "04", "05", "06", "07", "08", "09", "0A", "0B", "0C", "0D", "0E", "0F", "0G", "0H", "0I", "0J", "0K", "0L", "0M", "0N", "0O", "0P", "0Q", "0R", "0S", "0T", "0U", "0V", "0W", "0X", "0Y", "0Z", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "1A", "1B", "1C", "1D", "1E", "1F", "1G", "1H", "1I", "1J", "1K", "1L", "1M", "1N", "1O", "1P", "1Q", "1R", "1S", "1T", "1U", "1V", "1W", "1X", "1Y", "1Z", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "2A", "2B", "2C", "2D", "2E", "2F", "2G", "2H", "2I", "2J", "2K", "2L", "2M", "2N", "2O", "2P", "2Q", "2R", "2S", "2T", "2U", "2V", "2W", "2X", "2Y", "2Z", "30", "31", "32", "33", "34", "35", "36", "37", "38", "39", "3A", "3B", "3C", "3D", "3E", "3F", "3G", "3H", "3I", "3J", "3K", "3L", "3M", "3N", "3O", "3P", "3Q", "3R", "3S", "3T", "3U", "3V", "3W", "3X", "3Y", "3Z", "40", "41", "42", "43", "44", "45", "46", "47", "48", "49", "4A", "4B", "4C", "4D", "4E", "4F", "4G", "4H", "4I", "4J", "4K", "4L", "4M", "4N", "4O", "4P", "4Q", "4R", "4S", "4T", "4U", "4V", "4W", "4X", "4Y", "4Z", "50", "51", "52", "53", "54", "55", "56", "57", "58", "59", "5A", "5B", "5C", "5D", "5E", "5F", "5G", "5H", "5I", "5J", "5K", "5L", "5M", "5N", "5O", "5P", "5Q", "5R", "5S", "5T", "5U", "5V", "5W", "5X", "5Y", "5Z", "60", "61", "62", "63", "64", "65", "66", "67", "68", "69", "6A", "6B", "6C", "6D", "6E", "6F", "6G", "6H", "6I", "6J", "6K", "6L", "6M", "6N", "6O", "6P", "6Q", "6R", "6S", "6T", "6U", "6V", "6W", "6X", "6Y", "6Z", "70", "71", "72", "73", "74", "75", "76", "77", "78", "79", "7A", "7B", "7C", "7D", "7E", "7F", "7G", "7H", "7I", "7J", "7K", "7L", "7M", "7N", "7O", "7P", "7Q", "7R", "7S", "7T", "7U", "7V", "7W", "7X", "7Y", "7Z", "80", "81", "82", "83", "84", "85", "86", "87", "88", "89", "8A", "8B", "8C", "8D", "8E", "8F", "8G", "8H", "8I", "8J", "8K", "8L", "8M", "8N", "8O", "8P", "8Q", "8R", "8S", "8T", "8U", "8V", "8W", "8X", "8Y", "8Z", "90", "91", "92", "93", "94", "95", "96", "97", "98", "99", "9A", "9B", "9C", "9D", "9E", "9F", "9G", "9H", "9I", "9J", "9K", "9L", "9M", "9N", "9O", "9P", "9Q", "9R", "9S", "9T", "9U", "9V", "9W", "9X", "9Y", "9Z", "A0", "A1", "A2", "A3", "A4", "A5", "A6", "A7", "A8", "A9", "AA", "AB", "AC", "AD", "AE", "AF", "AG", "AH", "AI", "AJ", "AK", "AL", "AM", "AN", "AO", "AP", "AQ", "AR", "AS", "AT", "AU", "AV", "AW", "AX", "AY", "AZ", "B0", "B1", "B2", "B3", "B4", "B5", "B6", "B7", "B8", "B9", "BA", "BB", "BC", "BD", "BE", "BF", "BG", "BH", "BI", "BJ", "BK", "BL", "BM", "BN", "BO", "BP", "BQ", "BR", "BS", "BT", "BU", "BV", "BW", "BX", "BY", "BZ", "C0", "C1", "C2", "C3", "C4", "C5", "C6", "C7", "C8", "C9", "CA", "CB", "CC", "CD", "CE", "CF", "CG", "CH", "CI", "CJ", "CK", "CL", "CM", "CN", "CO", "CP", "CQ", "CR", "CS", "CT", "CU", "CV", "CW", "CX", "CY", "CZ", "D0", "D1", "D2", "D3", "D4", "D5", "D6", "D7", "D8", "D9", "DA", "DB", "DC", "DD", "DE", "DF", "DG", "DH", "DI", "DJ", "DK", "DL", "DM", "DN", "DO", "DP", "DQ", "DR", "DS", "DT", "DU", "DV", "DW", "DX", "DY", "DZ", "E0", "E1", "E2", "E3", "E4", "E5", "E6", "E7", "E8", "E9", "EA", "EB", "EC", "ED", "EE", "EF", "EG", "EH", "EI", "EJ", "EK", "EL", "EM", "EN", "EO", "EP", "EQ", "ER", "ES", "ET", "EU", "EV", "EW", "EX", "EY", "EZ", "F0", "F1", "F2", "F3", "F4", "F5", "F6", "F7", "F8", "F9", "FA", "FB", "FC", "FD", "FE", "FF", "FG", "FH", "FI", "FJ", "FK", "FL", "FM", "FN", "FO", "FP", "FQ", "FR", "FS", "FT", "FU", "FV", "FW", "FX", "FY", "FZ", "G0", "G1", "G2", "G3", "G4", "G5", "G6", "G7", "G8", "G9", "GA", "GB", "GC", "GD", "GE", "GF", "GG", "GH", "GI", "GJ", "GK", "GL", "GM", "GN", "GO", "GP", "GQ", "GR", "GS", "GT", "GU", "GV", "GW", "GX", "GY", "GZ", "H0", "H1", "H2", "H3", "H4", "H5", "H6", "H7", "H8", "H9", "HA", "HB", "HC", "HD", "HE", "HF", "HG", "HH", "HI", "HJ", "HK", "HL", "HM", "HN", "HO", "HP", "HQ", "HR", "HS", "HT", "HU", "HV", "HW", "HX", "HY", "HZ", "I0", "I1", "I2", "I3", "I4", "I5", "I6", "I7", "I8", "I9", "IA", "IB", "IC", "ID", "IE", "IF", "IG", "IH", "II", "IJ", "IK", "IL", "IM", "IN", "IO", "IP", "IQ", "IR", "IS", "IT", "IU", "IV", "IW", "IX", "IY", "IZ", "J0", "J1", "J2", "J3", "J4", "J5", "J6", "J7", "J8", "J9", "JA", "JB", "JC", "JD", "JE", "JF", "JG", "JH", "JI", "JJ", "JK", "JL", "JM", "JN", "JO", "JP", "JQ", "JR", "JS", "JT", "JU", "JV", "JW", "JX", "JY", "JZ", "K0", "K1", "K2", "K3", "K4", "K5", "K6", "K7", "K8", "K9", "KA", "KB", "KC", "KD", "KE", "KF", "KG", "KH", "KI", "KJ", "KK", "KL", "KM", "KN", "KO", "KP", "KQ", "KR", "KS", "KT", "KU", "KV", "KW", "KX", "KY", "KZ", "L0", "L1", "L2", "L3", "L4", "L5", "L6", "L7", "L8", "L9", "LA", "LB", "LC", "LD", "LE", "LF", "LG", "LH", "LI", "LJ", "LK", "LL", "LM", "LN", "LO", "LP", "LQ", "LR", "LS", "LT", "LU", "LV", "LW", "LX", "LY", "LZ", "M0", "M1", "M2", "M3", "M4", "M5", "M6", "M7", "M8", "M9", "MA", "MB", "MC", "MD", "ME", "MF", "MG", "MH", "MI", "MJ", "MK", "ML", "MM", "MN", "MO", "MP", "MQ", "MR", "MS", "MT", "MU", "MV", "MW", "MX", "MY", "MZ", "N0", "N1", "N2", "N3", "N4", "N5", "N6", "N7", "N8", "N9", "NA", "NB", "NC", "ND", "NE", "NF", "NG", "NH", "NI", "NJ", "NK", "NL", "NM", "NN", "NO", "NP", "NQ", "NR", "NS", "NT", "NU", "NV", "NW", "NX", "NY", "NZ", "O0", "O1", "O2", "O3", "O4", "O5", "O6", "O7", "O8", "O9", "OA", "OB", "OC", "OD", "OE", "OF", "OG", "OH", "OI", "OJ", "OK", "OL", "OM", "ON", "OO", "OP", "OQ", "OR", "OS", "OT", "OU", "OV", "OW", "OX", "OY", "OZ", "P0", "P1", "P2", "P3", "P4", "P5", "P6", "P7", "P8", "P9", "PA", "PB", "PC", "PD", "PE", "PF", "PG", "PH", "PI", "PJ", "PK", "PL", "PM", "PN", "PO", "PP", "PQ", "PR", "PS", "PT", "PU", "PV", "PW", "PX", "PY", "PZ", "Q0", "Q1", "Q2", "Q3", "Q4", "Q5", "Q6", "Q7", "Q8", "Q9", "QA", "QB", "QC", "QD", "QE", "QF", "QG", "QH", "QI", "QJ", "QK", "QL", "QM", "QN", "QO", "QP", "QQ", "QR", "QS", "QT", "QU", "QV", "QW", "QX", "QY", "QZ", "R0", "R1", "R2", "R3", "R4", "R5", "R6", "R7", "R8", "R9", "RA", "RB", "RC", "RD", "RE", "RF", "RG", "RH", "RI", "RJ", "RK", "RL", "RM", "RN", "RO", "RP", "RQ", "RR", "RS", "RT", "RU", "RV", "RW", "RX", "RY", "RZ", "S0", "S1", "S2", "S3", "S4", "S5", "S6", "S7", "S8", "S9", "SA", "SB", "SC", "SD", "SE", "SF", "SG", "SH", "SI", "SJ", "SK", "SL", "SM", "SN", "SO", "SP", "SQ", "SR", "SS", "ST", "SU", "SV", "SW", "SX", "SY", "SZ", "T0", "T1", "T2", "T3", "T4", "T5", "T6", "T7", "T8", "T9", "TA", "TB", "TC", "TD", "TE", "TF", "TG", "TH", "TI", "TJ", "TK", "TL", "TM", "TN", "TO", "TP", "TQ", "TR", "TS", "TT", "TU", "TV", "TW", "TX", "TY", "TZ", "U0", "U1", "U2", "U3", "U4", "U5", "U6", "U7", "U8", "U9", "UA", "UB", "UC", "UD", "UE", "UF", "UG", "UH", "UI", "UJ", "UK", "UL", "UM", "UN", "UO", "UP", "UQ", "UR", "US", "UT", "UU", "UV", "UW", "UX", "UY", "UZ", "V0", "V1", "V2", "V3", "V4", "V5", "V6", "V7", "V8", "V9", "VA", "VB", "VC", "VD", "VE", "VF", "VG", "VH", "VI", "VJ", "VK", "VL", "VM", "VN", "VO", "VP", "VQ", "VR", "VS", "VT", "VU", "VV", "VW", "VX", "VY", "VZ", "W0", "W1", "W2", "W3", "W4", "W5", "W6", "W7", "W8", "W9", "WA", "WB", "WC", "WD", "WE", "WF", "WG", "WH", "WI", "WJ", "WK", "WL", "WM", "WN", "WO", "WP", "WQ", "WR", "WS", "WT", "WU", "WV", "WW", "WX", "WY", "WZ", "X0", "X1", "X2", "X3", "X4", "X5", "X6", "X7", "X8", "X9", "XA", "XB", "XC", "XD", "XE", "XF", "XG", "XH", "XI", "XJ", "XK", "XL", "XM", "XN", "XO", "XP", "XQ", "XR", "XS", "XT", "XU", "XV", "XW", "XX", "XY", "XZ", "Y0", "Y1", "Y2", "Y3", "Y4", "Y5", "Y6", "Y7", "Y8", "Y9", "YA", "YB", "YC", "YD", "YE", "YF", "YG", "YH", "YI", "YJ", "YK", "YL", "YM", "YN", "YO", "YP", "YQ", "YR", "YS", "YT", "YU", "YV", "YW", "YX", "YY", "YZ", "Z0", "Z1", "Z2", "Z3", "Z4", "Z5", "Z6", "Z7", "Z8", "Z9", "ZA", "ZB", "ZC", "ZD", "ZE", "ZF", "ZG", "ZH", "ZI", "ZJ", "ZK", "ZL", "ZM", "ZN", "ZO", "ZP", "ZQ", "ZR", "ZS", "ZT", "ZU", "ZV", "ZW", "ZX", "ZY", "ZZ"}) - Me.CHLnObj.Location = New System.Drawing.Point(67, 210) - Me.CHLnObj.Margin = New System.Windows.Forms.Padding(0) - Me.CHLnObj.Name = "CHLnObj" - Me.CHLnObj.Size = New System.Drawing.Size(116, 23) - Me.CHLnObj.TabIndex = 114 - ' - 'Label23 - ' - Me.Label23.Anchor = System.Windows.Forms.AnchorStyles.Right - Me.Label23.AutoSize = True - Me.Label23.Location = New System.Drawing.Point(19, 145) - Me.Label23.Name = "Label23" - Me.Label23.Size = New System.Drawing.Size(45, 15) - Me.Label23.TabIndex = 26 - Me.Label23.Text = "ExRank" - Me.Label23.TextAlign = System.Drawing.ContentAlignment.MiddleRight - ' - 'Label21 - ' - Me.Label21.Anchor = System.Windows.Forms.AnchorStyles.Right - Me.Label21.AutoSize = True - Me.Label21.Location = New System.Drawing.Point(9, 122) - Me.Label21.Name = "Label21" - Me.Label21.Size = New System.Drawing.Size(55, 15) - Me.Label21.TabIndex = 25 - Me.Label21.Text = "Difficulty" - Me.Label21.TextAlign = System.Drawing.ContentAlignment.MiddleRight - ' - 'THComment - ' - Me.POHeaderPart2.SetColumnSpan(Me.THComment, 2) - Me.THComment.Dock = System.Windows.Forms.DockStyle.Fill - Me.THComment.Location = New System.Drawing.Point(67, 187) - Me.THComment.Margin = New System.Windows.Forms.Padding(0) - Me.THComment.Name = "THComment" - Me.THComment.Size = New System.Drawing.Size(116, 23) - Me.THComment.TabIndex = 113 - ' - 'Label24 - ' - Me.Label24.Anchor = System.Windows.Forms.AnchorStyles.Right - Me.Label24.AutoSize = True - Me.Label24.Location = New System.Drawing.Point(25, 214) - Me.Label24.Name = "Label24" - Me.Label24.Size = New System.Drawing.Size(39, 15) - Me.Label24.TabIndex = 27 - Me.Label24.Text = "LnObj" - Me.Label24.TextAlign = System.Drawing.ContentAlignment.MiddleRight - ' - 'Label15 - ' - Me.Label15.Anchor = System.Windows.Forms.AnchorStyles.Right - Me.Label15.AutoSize = True - Me.Label15.Location = New System.Drawing.Point(15, 4) - Me.Label15.Name = "Label15" - Me.Label15.Size = New System.Drawing.Size(49, 15) - Me.Label15.TabIndex = 6 - Me.Label15.Text = "SubTitle" - Me.Label15.TextAlign = System.Drawing.ContentAlignment.MiddleRight - ' - 'THTotal - ' - Me.THTotal.Dock = System.Windows.Forms.DockStyle.Fill - Me.THTotal.Location = New System.Drawing.Point(67, 164) - Me.THTotal.Margin = New System.Windows.Forms.Padding(0) - Me.THTotal.Name = "THTotal" - Me.THTotal.Size = New System.Drawing.Size(88, 23) - Me.THTotal.TabIndex = 112 - ' - 'Label20 - ' - Me.Label20.Anchor = System.Windows.Forms.AnchorStyles.Right - Me.Label20.AutoSize = True - Me.Label20.Location = New System.Drawing.Point(32, 168) - Me.Label20.Name = "Label20" - Me.Label20.Size = New System.Drawing.Size(32, 15) - Me.Label20.TabIndex = 5 - Me.Label20.Text = "Total" - Me.Label20.TextAlign = System.Drawing.ContentAlignment.MiddleRight - ' - 'BHStageFile - ' - Me.BHStageFile.Dock = System.Windows.Forms.DockStyle.Fill - Me.BHStageFile.FlatStyle = System.Windows.Forms.FlatStyle.System - Me.BHStageFile.Location = New System.Drawing.Point(158, 46) - Me.BHStageFile.Margin = New System.Windows.Forms.Padding(3, 0, 0, 0) - Me.BHStageFile.Name = "BHStageFile" - Me.BHStageFile.Size = New System.Drawing.Size(25, 24) - Me.BHStageFile.TabIndex = 105 - Me.BHStageFile.Text = "..." - Me.BHStageFile.UseVisualStyleBackColor = True - ' - 'BHBanner - ' - Me.BHBanner.Dock = System.Windows.Forms.DockStyle.Fill - Me.BHBanner.FlatStyle = System.Windows.Forms.FlatStyle.System - Me.BHBanner.Location = New System.Drawing.Point(158, 70) - Me.BHBanner.Margin = New System.Windows.Forms.Padding(3, 0, 0, 0) - Me.BHBanner.Name = "BHBanner" - Me.BHBanner.Size = New System.Drawing.Size(25, 24) - Me.BHBanner.TabIndex = 107 - Me.BHBanner.Text = "..." - Me.BHBanner.UseVisualStyleBackColor = True - ' - 'Label19 - ' - Me.Label19.Anchor = System.Windows.Forms.AnchorStyles.Right - Me.Label19.AutoSize = True - Me.Label19.Location = New System.Drawing.Point(3, 191) - Me.Label19.Name = "Label19" - Me.Label19.Size = New System.Drawing.Size(61, 15) - Me.Label19.TabIndex = 13 - Me.Label19.Text = "Comment" - Me.Label19.TextAlign = System.Drawing.ContentAlignment.MiddleRight - ' - 'BHBackBMP - ' - Me.BHBackBMP.Dock = System.Windows.Forms.DockStyle.Fill - Me.BHBackBMP.FlatStyle = System.Windows.Forms.FlatStyle.System - Me.BHBackBMP.Location = New System.Drawing.Point(158, 94) - Me.BHBackBMP.Margin = New System.Windows.Forms.Padding(3, 0, 0, 0) - Me.BHBackBMP.Name = "BHBackBMP" - Me.BHBackBMP.Size = New System.Drawing.Size(25, 24) - Me.BHBackBMP.TabIndex = 109 - Me.BHBackBMP.Text = "..." - Me.BHBackBMP.UseVisualStyleBackColor = True - ' - 'Label17 - ' - Me.Label17.Anchor = System.Windows.Forms.AnchorStyles.Right - Me.Label17.AutoSize = True - Me.Label17.Location = New System.Drawing.Point(9, 27) - Me.Label17.Name = "Label17" - Me.Label17.Size = New System.Drawing.Size(55, 15) - Me.Label17.TabIndex = 7 - Me.Label17.Text = "SubArtist" - Me.Label17.TextAlign = System.Drawing.ContentAlignment.MiddleRight - ' - 'Label16 - ' - Me.Label16.Anchor = System.Windows.Forms.AnchorStyles.Right - Me.Label16.AutoSize = True - Me.Label16.Location = New System.Drawing.Point(7, 50) - Me.Label16.Name = "Label16" - Me.Label16.Size = New System.Drawing.Size(57, 15) - Me.Label16.TabIndex = 9 - Me.Label16.Text = "Stage File" - Me.Label16.TextAlign = System.Drawing.ContentAlignment.MiddleRight - ' - 'Label12 - ' - Me.Label12.Anchor = System.Windows.Forms.AnchorStyles.Right - Me.Label12.AutoSize = True - Me.Label12.Location = New System.Drawing.Point(20, 74) - Me.Label12.Name = "Label12" - Me.Label12.Size = New System.Drawing.Size(44, 15) - Me.Label12.TabIndex = 13 - Me.Label12.Text = "Banner" - Me.Label12.TextAlign = System.Drawing.ContentAlignment.MiddleRight - ' - 'THBackBMP - ' - Me.THBackBMP.Dock = System.Windows.Forms.DockStyle.Fill - Me.THBackBMP.Location = New System.Drawing.Point(67, 94) - Me.THBackBMP.Margin = New System.Windows.Forms.Padding(0) - Me.THBackBMP.Name = "THBackBMP" - Me.THBackBMP.Size = New System.Drawing.Size(88, 23) - Me.THBackBMP.TabIndex = 108 - ' - 'Label11 - ' - Me.Label11.Anchor = System.Windows.Forms.AnchorStyles.Right - Me.Label11.AutoSize = True - Me.Label11.Location = New System.Drawing.Point(4, 98) - Me.Label11.Name = "Label11" - Me.Label11.Size = New System.Drawing.Size(60, 15) - Me.Label11.TabIndex = 16 - Me.Label11.Text = "Back BMP" - Me.Label11.TextAlign = System.Drawing.ContentAlignment.MiddleRight - ' - 'THBanner - ' - Me.THBanner.Dock = System.Windows.Forms.DockStyle.Fill - Me.THBanner.Location = New System.Drawing.Point(67, 70) - Me.THBanner.Margin = New System.Windows.Forms.Padding(0) - Me.THBanner.Name = "THBanner" - Me.THBanner.Size = New System.Drawing.Size(88, 23) - Me.THBanner.TabIndex = 106 - ' - 'THStageFile - ' - Me.THStageFile.Dock = System.Windows.Forms.DockStyle.Fill - Me.THStageFile.Location = New System.Drawing.Point(67, 46) - Me.THStageFile.Margin = New System.Windows.Forms.Padding(0) - Me.THStageFile.Name = "THStageFile" - Me.THStageFile.Size = New System.Drawing.Size(88, 23) - Me.THStageFile.TabIndex = 104 - ' - 'THSubTitle - ' - Me.POHeaderPart2.SetColumnSpan(Me.THSubTitle, 2) - Me.THSubTitle.Dock = System.Windows.Forms.DockStyle.Fill - Me.THSubTitle.Location = New System.Drawing.Point(67, 0) - Me.THSubTitle.Margin = New System.Windows.Forms.Padding(0) - Me.THSubTitle.Name = "THSubTitle" - Me.THSubTitle.Size = New System.Drawing.Size(116, 23) - Me.THSubTitle.TabIndex = 102 - ' - 'THSubArtist - ' - Me.POHeaderPart2.SetColumnSpan(Me.THSubArtist, 2) - Me.THSubArtist.Dock = System.Windows.Forms.DockStyle.Fill - Me.THSubArtist.Location = New System.Drawing.Point(67, 23) - Me.THSubArtist.Margin = New System.Windows.Forms.Padding(0) - Me.THSubArtist.Name = "THSubArtist" - Me.THSubArtist.Size = New System.Drawing.Size(116, 23) - Me.THSubArtist.TabIndex = 103 - ' - 'POHeaderExpander - ' - Me.POHeaderExpander.Appearance = System.Windows.Forms.Appearance.Button - Me.POHeaderExpander.AutoSize = True - Me.POHeaderExpander.Cursor = System.Windows.Forms.Cursors.Hand - Me.POHeaderExpander.Dock = System.Windows.Forms.DockStyle.Top - Me.POHeaderExpander.FlatAppearance.BorderSize = 0 - Me.POHeaderExpander.FlatStyle = System.Windows.Forms.FlatStyle.Popup - Me.POHeaderExpander.Location = New System.Drawing.Point(0, 161) - Me.POHeaderExpander.Margin = New System.Windows.Forms.Padding(0) - Me.POHeaderExpander.Name = "POHeaderExpander" - Me.POHeaderExpander.Size = New System.Drawing.Size(183, 25) - Me.POHeaderExpander.TabIndex = 101 - Me.POHeaderExpander.TabStop = False - Me.POHeaderExpander.Text = "Expand..." - Me.POHeaderExpander.TextAlign = System.Drawing.ContentAlignment.MiddleCenter - Me.POHeaderExpander.UseVisualStyleBackColor = False - ' - 'POHeaderPart1 - ' - Me.POHeaderPart1.AutoSize = True - Me.POHeaderPart1.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink - Me.POHeaderPart1.ColumnCount = 2 - Me.POHeaderPart1.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle()) - Me.POHeaderPart1.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100.0!)) - Me.POHeaderPart1.Controls.Add(Me.Label3, 0, 0) - Me.POHeaderPart1.Controls.Add(Me.THPlayLevel, 1, 6) - Me.POHeaderPart1.Controls.Add(Me.CHRank, 1, 5) - Me.POHeaderPart1.Controls.Add(Me.Label10, 0, 5) - Me.POHeaderPart1.Controls.Add(Me.CHPlayer, 1, 4) - Me.POHeaderPart1.Controls.Add(Me.Label4, 0, 1) - Me.POHeaderPart1.Controls.Add(Me.THGenre, 1, 2) - Me.POHeaderPart1.Controls.Add(Me.THBPM, 1, 3) - Me.POHeaderPart1.Controls.Add(Me.Label2, 0, 2) - Me.POHeaderPart1.Controls.Add(Me.THArtist, 1, 1) - Me.POHeaderPart1.Controls.Add(Me.THTitle, 1, 0) - Me.POHeaderPart1.Controls.Add(Me.Label9, 0, 3) - Me.POHeaderPart1.Controls.Add(Me.Label8, 0, 4) - Me.POHeaderPart1.Controls.Add(Me.Label6, 0, 6) - Me.POHeaderPart1.Dock = System.Windows.Forms.DockStyle.Top - Me.POHeaderPart1.Location = New System.Drawing.Point(0, 0) - Me.POHeaderPart1.Name = "POHeaderPart1" - Me.POHeaderPart1.RowCount = 7 - Me.POHeaderPart1.RowStyles.Add(New System.Windows.Forms.RowStyle()) - Me.POHeaderPart1.RowStyles.Add(New System.Windows.Forms.RowStyle()) - Me.POHeaderPart1.RowStyles.Add(New System.Windows.Forms.RowStyle()) - Me.POHeaderPart1.RowStyles.Add(New System.Windows.Forms.RowStyle()) - Me.POHeaderPart1.RowStyles.Add(New System.Windows.Forms.RowStyle()) - Me.POHeaderPart1.RowStyles.Add(New System.Windows.Forms.RowStyle()) - Me.POHeaderPart1.RowStyles.Add(New System.Windows.Forms.RowStyle()) - Me.POHeaderPart1.Size = New System.Drawing.Size(183, 161) - Me.POHeaderPart1.TabIndex = 25 - ' - 'Label3 - ' - Me.Label3.Anchor = System.Windows.Forms.AnchorStyles.Right - Me.Label3.AutoSize = True - Me.Label3.Location = New System.Drawing.Point(33, 4) - Me.Label3.Name = "Label3" - Me.Label3.Size = New System.Drawing.Size(29, 15) - Me.Label3.TabIndex = 2 - Me.Label3.Text = "Title" - Me.Label3.TextAlign = System.Drawing.ContentAlignment.MiddleRight - ' - 'THPlayLevel - ' - Me.THPlayLevel.Dock = System.Windows.Forms.DockStyle.Fill - Me.THPlayLevel.Location = New System.Drawing.Point(65, 138) - Me.THPlayLevel.Margin = New System.Windows.Forms.Padding(0) - Me.THPlayLevel.Name = "THPlayLevel" - Me.THPlayLevel.Size = New System.Drawing.Size(118, 23) - Me.THPlayLevel.TabIndex = 8 - ' - 'CHRank - ' - Me.CHRank.Dock = System.Windows.Forms.DockStyle.Top - Me.CHRank.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList - Me.CHRank.FlatStyle = System.Windows.Forms.FlatStyle.System - Me.CHRank.Items.AddRange(New Object() {"0 - Very Hard", "1 - Hard", "2 - Normal", "3 - Easy", "4 - Very Easy"}) - Me.CHRank.Location = New System.Drawing.Point(65, 115) - Me.CHRank.Margin = New System.Windows.Forms.Padding(0) - Me.CHRank.Name = "CHRank" - Me.CHRank.Size = New System.Drawing.Size(118, 23) - Me.CHRank.TabIndex = 7 - ' - 'Label10 - ' - Me.Label10.Anchor = System.Windows.Forms.AnchorStyles.Right - Me.Label10.AutoSize = True - Me.Label10.Location = New System.Drawing.Point(19, 119) - Me.Label10.Name = "Label10" - Me.Label10.Size = New System.Drawing.Size(43, 15) - Me.Label10.TabIndex = 16 - Me.Label10.Text = "Rankgi" - Me.Label10.TextAlign = System.Drawing.ContentAlignment.MiddleRight - ' - 'CHPlayer - ' - Me.CHPlayer.Dock = System.Windows.Forms.DockStyle.Top - Me.CHPlayer.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList - Me.CHPlayer.FlatStyle = System.Windows.Forms.FlatStyle.System - Me.CHPlayer.Items.AddRange(New Object() {"1 - Single Play", "2 - Couple Play", "3 - Double Play"}) - Me.CHPlayer.Location = New System.Drawing.Point(65, 92) - Me.CHPlayer.Margin = New System.Windows.Forms.Padding(0) - Me.CHPlayer.Name = "CHPlayer" - Me.CHPlayer.Size = New System.Drawing.Size(118, 23) - Me.CHPlayer.TabIndex = 6 - ' - 'Label4 - ' - Me.Label4.Anchor = System.Windows.Forms.AnchorStyles.Right - Me.Label4.AutoSize = True - Me.Label4.Location = New System.Drawing.Point(27, 27) - Me.Label4.Name = "Label4" - Me.Label4.Size = New System.Drawing.Size(35, 15) - Me.Label4.TabIndex = 3 - Me.Label4.Text = "Artist" - Me.Label4.TextAlign = System.Drawing.ContentAlignment.MiddleRight - ' - 'THGenre - ' - Me.THGenre.Dock = System.Windows.Forms.DockStyle.Fill - Me.THGenre.Location = New System.Drawing.Point(65, 46) - Me.THGenre.Margin = New System.Windows.Forms.Padding(0) - Me.THGenre.Name = "THGenre" - Me.THGenre.Size = New System.Drawing.Size(118, 23) - Me.THGenre.TabIndex = 4 - ' - 'THBPM - ' - Me.THBPM.DecimalPlaces = 4 - Me.THBPM.Dock = System.Windows.Forms.DockStyle.Fill - Me.THBPM.Increment = New Decimal(New Integer() {10, 0, 0, 0}) - Me.THBPM.Location = New System.Drawing.Point(65, 69) - Me.THBPM.Margin = New System.Windows.Forms.Padding(0) - Me.THBPM.Maximum = New Decimal(New Integer() {655359999, 0, 0, 262144}) - Me.THBPM.Minimum = New Decimal(New Integer() {1, 0, 0, 262144}) - Me.THBPM.Name = "THBPM" - Me.THBPM.Size = New System.Drawing.Size(118, 23) - Me.THBPM.TabIndex = 5 - Me.THBPM.Value = New Decimal(New Integer() {120, 0, 0, 0}) - ' - 'Label2 - ' - Me.Label2.Anchor = System.Windows.Forms.AnchorStyles.Right - Me.Label2.AutoSize = True - Me.Label2.Location = New System.Drawing.Point(24, 50) - Me.Label2.Name = "Label2" - Me.Label2.Size = New System.Drawing.Size(38, 15) - Me.Label2.TabIndex = 4 - Me.Label2.Text = "Genre" - Me.Label2.TextAlign = System.Drawing.ContentAlignment.MiddleRight - ' - 'THArtist - ' - Me.THArtist.Dock = System.Windows.Forms.DockStyle.Fill - Me.THArtist.Location = New System.Drawing.Point(65, 23) - Me.THArtist.Margin = New System.Windows.Forms.Padding(0) - Me.THArtist.Name = "THArtist" - Me.THArtist.Size = New System.Drawing.Size(118, 23) - Me.THArtist.TabIndex = 3 - ' - 'THTitle - ' - Me.THTitle.Dock = System.Windows.Forms.DockStyle.Fill - Me.THTitle.Location = New System.Drawing.Point(65, 0) - Me.THTitle.Margin = New System.Windows.Forms.Padding(0) - Me.THTitle.Name = "THTitle" - Me.THTitle.Size = New System.Drawing.Size(118, 23) - Me.THTitle.TabIndex = 2 - ' - 'Label9 - ' - Me.Label9.Anchor = System.Windows.Forms.AnchorStyles.Right - Me.Label9.AutoSize = True - Me.Label9.Location = New System.Drawing.Point(30, 73) - Me.Label9.Name = "Label9" - Me.Label9.Size = New System.Drawing.Size(32, 15) - Me.Label9.TabIndex = 5 - Me.Label9.Text = "BPM" - Me.Label9.TextAlign = System.Drawing.ContentAlignment.MiddleRight - ' - 'Label8 - ' - Me.Label8.Anchor = System.Windows.Forms.AnchorStyles.Right - Me.Label8.AutoSize = True - Me.Label8.Location = New System.Drawing.Point(23, 96) - Me.Label8.Name = "Label8" - Me.Label8.Size = New System.Drawing.Size(39, 15) - Me.Label8.TabIndex = 13 - Me.Label8.Text = "Player" - Me.Label8.TextAlign = System.Drawing.ContentAlignment.MiddleRight - ' - 'Label6 - ' - Me.Label6.Anchor = System.Windows.Forms.AnchorStyles.Right - Me.Label6.AutoSize = True - Me.Label6.Location = New System.Drawing.Point(3, 142) - Me.Label6.Name = "Label6" - Me.Label6.Size = New System.Drawing.Size(59, 15) - Me.Label6.TabIndex = 8 - Me.Label6.Text = "Play Level" - Me.Label6.TextAlign = System.Drawing.ContentAlignment.MiddleRight - ' - 'POHeaderSwitch - ' - Me.POHeaderSwitch.Appearance = System.Windows.Forms.Appearance.Button - Me.POHeaderSwitch.BackColor = System.Drawing.SystemColors.Control - Me.POHeaderSwitch.Checked = True - Me.POHeaderSwitch.CheckState = System.Windows.Forms.CheckState.Checked - Me.POHeaderSwitch.Cursor = System.Windows.Forms.Cursors.Hand - Me.POHeaderSwitch.Dock = System.Windows.Forms.DockStyle.Top - Me.POHeaderSwitch.Font = New System.Drawing.Font("Segoe UI", 9.0!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) - Me.POHeaderSwitch.Location = New System.Drawing.Point(0, 0) - Me.POHeaderSwitch.Name = "POHeaderSwitch" - Me.POHeaderSwitch.Size = New System.Drawing.Size(183, 20) - Me.POHeaderSwitch.TabIndex = 1 - Me.POHeaderSwitch.TabStop = False - Me.POHeaderSwitch.Text = "Header" - Me.POHeaderSwitch.TextAlign = System.Drawing.ContentAlignment.MiddleCenter - Me.POHeaderSwitch.UseCompatibleTextRendering = True - Me.POHeaderSwitch.UseVisualStyleBackColor = False - ' - 'Timer1 - ' - Me.Timer1.Interval = 15 - ' - 'Menu1 - ' - Me.Menu1.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.MInsert, Me.MRemove}) - Me.Menu1.Name = "Menu1" - Me.Menu1.Size = New System.Drawing.Size(166, 48) - ' - 'MInsert - ' - Me.MInsert.Image = Global.iBMSC.My.Resources.Resources.x16Add - Me.MInsert.Name = "MInsert" - Me.MInsert.Size = New System.Drawing.Size(165, 22) - Me.MInsert.Text = "Insert Measure" - ' - 'MRemove - ' - Me.MRemove.Image = Global.iBMSC.My.Resources.Resources.x16Remove - Me.MRemove.Name = "MRemove" - Me.MRemove.Size = New System.Drawing.Size(165, 22) - Me.MRemove.Text = "Remove Measure" - ' - 'AutoSaveTimer - ' - Me.AutoSaveTimer.Enabled = True - Me.AutoSaveTimer.Interval = 300000 - ' - 'mnMain - ' - Me.mnMain.AccessibleRole = System.Windows.Forms.AccessibleRole.MenuBar - Me.mnMain.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch - Me.mnMain.Dock = System.Windows.Forms.DockStyle.None - Me.mnMain.GripMargin = New System.Windows.Forms.Padding(2) - Me.mnMain.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.mnFile, Me.mnEdit, Me.mnSys, Me.mnOptions, Me.mnConversion, Me.mnPreview}) - Me.mnMain.LayoutStyle = System.Windows.Forms.ToolStripLayoutStyle.Flow - Me.mnMain.Location = New System.Drawing.Point(0, 0) - Me.mnMain.Name = "mnMain" - Me.mnMain.Size = New System.Drawing.Size(952, 23) - Me.mnMain.TabIndex = 57 - ' - 'mnFile - ' - Me.mnFile.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.mnNew, Me.mnOpen, Me.mnImportSM, Me.mnImportIBMSC, Me.ToolStripSeparator14, Me.mnSave, Me.mnSaveAs, Me.mnExport, Me.ToolStripSeparator15, Me.mnOpenR0, Me.mnOpenR1, Me.mnOpenR2, Me.mnOpenR3, Me.mnOpenR4, Me.ToolStripSeparator16, Me.mnQuit}) - Me.mnFile.Name = "mnFile" - Me.mnFile.Size = New System.Drawing.Size(37, 19) - Me.mnFile.Text = "&File" - ' - 'mnNew - ' - Me.mnNew.Image = Global.iBMSC.My.Resources.Resources.x16New - Me.mnNew.Name = "mnNew" - Me.mnNew.ShortcutKeys = CType((System.Windows.Forms.Keys.Control Or System.Windows.Forms.Keys.N), System.Windows.Forms.Keys) - Me.mnNew.Size = New System.Drawing.Size(240, 22) - Me.mnNew.Text = "&New" - ' - 'mnOpen - ' - Me.mnOpen.Image = Global.iBMSC.My.Resources.Resources.x16Open - Me.mnOpen.Name = "mnOpen" - Me.mnOpen.ShortcutKeys = CType((System.Windows.Forms.Keys.Control Or System.Windows.Forms.Keys.O), System.Windows.Forms.Keys) - Me.mnOpen.Size = New System.Drawing.Size(240, 22) - Me.mnOpen.Text = "&Open" - ' - 'mnImportSM - ' - Me.mnImportSM.Image = Global.iBMSC.My.Resources.Resources.x16Import2 - Me.mnImportSM.Name = "mnImportSM" - Me.mnImportSM.Size = New System.Drawing.Size(240, 22) - Me.mnImportSM.Text = "Import from .S&M file" - ' - 'mnImportIBMSC - ' - Me.mnImportIBMSC.Image = Global.iBMSC.My.Resources.Resources.x16Import2 - Me.mnImportIBMSC.Name = "mnImportIBMSC" - Me.mnImportIBMSC.Size = New System.Drawing.Size(240, 22) - Me.mnImportIBMSC.Text = "Import from .&IBMSC file" - ' - 'ToolStripSeparator14 - ' - Me.ToolStripSeparator14.Name = "ToolStripSeparator14" - Me.ToolStripSeparator14.Size = New System.Drawing.Size(237, 6) - ' - 'mnSave - ' - Me.mnSave.Image = Global.iBMSC.My.Resources.Resources.x16Save - Me.mnSave.Name = "mnSave" - Me.mnSave.ShortcutKeys = CType((System.Windows.Forms.Keys.Control Or System.Windows.Forms.Keys.S), System.Windows.Forms.Keys) - Me.mnSave.Size = New System.Drawing.Size(240, 22) - Me.mnSave.Text = "&Save" - ' - 'mnSaveAs - ' - Me.mnSaveAs.Image = Global.iBMSC.My.Resources.Resources.x16SaveAs - Me.mnSaveAs.Name = "mnSaveAs" - Me.mnSaveAs.ShortcutKeys = CType(((System.Windows.Forms.Keys.Control Or System.Windows.Forms.Keys.Alt) _ - Or System.Windows.Forms.Keys.S), System.Windows.Forms.Keys) - Me.mnSaveAs.Size = New System.Drawing.Size(240, 22) - Me.mnSaveAs.Text = "Save &As..." - ' - 'mnExport - ' - Me.mnExport.Image = Global.iBMSC.My.Resources.Resources.x16Export - Me.mnExport.Name = "mnExport" - Me.mnExport.ShortcutKeys = CType(((System.Windows.Forms.Keys.Control Or System.Windows.Forms.Keys.Shift) _ - Or System.Windows.Forms.Keys.E), System.Windows.Forms.Keys) - Me.mnExport.Size = New System.Drawing.Size(240, 22) - Me.mnExport.Text = "&Export .IBMSC file" - ' - 'ToolStripSeparator15 - ' - Me.ToolStripSeparator15.Name = "ToolStripSeparator15" - Me.ToolStripSeparator15.Size = New System.Drawing.Size(237, 6) - ' - 'mnOpenR0 - ' - Me.mnOpenR0.Enabled = False - Me.mnOpenR0.Name = "mnOpenR0" - Me.mnOpenR0.ShortcutKeys = CType((System.Windows.Forms.Keys.Alt Or System.Windows.Forms.Keys.D1), System.Windows.Forms.Keys) - Me.mnOpenR0.Size = New System.Drawing.Size(240, 22) - Me.mnOpenR0.Tag = "0" - Me.mnOpenR0.Text = "Recent #0" - ' - 'mnOpenR1 - ' - Me.mnOpenR1.Enabled = False - Me.mnOpenR1.Name = "mnOpenR1" - Me.mnOpenR1.ShortcutKeys = CType((System.Windows.Forms.Keys.Alt Or System.Windows.Forms.Keys.D2), System.Windows.Forms.Keys) - Me.mnOpenR1.Size = New System.Drawing.Size(240, 22) - Me.mnOpenR1.Tag = "1" - Me.mnOpenR1.Text = "Recent #1" - ' - 'mnOpenR2 - ' - Me.mnOpenR2.Enabled = False - Me.mnOpenR2.Name = "mnOpenR2" - Me.mnOpenR2.ShortcutKeys = CType((System.Windows.Forms.Keys.Alt Or System.Windows.Forms.Keys.D3), System.Windows.Forms.Keys) - Me.mnOpenR2.Size = New System.Drawing.Size(240, 22) - Me.mnOpenR2.Tag = "2" - Me.mnOpenR2.Text = "Recent #2" - ' - 'mnOpenR3 - ' - Me.mnOpenR3.Enabled = False - Me.mnOpenR3.Name = "mnOpenR3" - Me.mnOpenR3.ShortcutKeys = CType((System.Windows.Forms.Keys.Alt Or System.Windows.Forms.Keys.D4), System.Windows.Forms.Keys) - Me.mnOpenR3.Size = New System.Drawing.Size(240, 22) - Me.mnOpenR3.Tag = "3" - Me.mnOpenR3.Text = "Recent #3" - ' - 'mnOpenR4 - ' - Me.mnOpenR4.Enabled = False - Me.mnOpenR4.Name = "mnOpenR4" - Me.mnOpenR4.ShortcutKeys = CType((System.Windows.Forms.Keys.Alt Or System.Windows.Forms.Keys.D5), System.Windows.Forms.Keys) - Me.mnOpenR4.Size = New System.Drawing.Size(240, 22) - Me.mnOpenR4.Tag = "4" - Me.mnOpenR4.Text = "Recent #4" - ' - 'ToolStripSeparator16 - ' - Me.ToolStripSeparator16.Name = "ToolStripSeparator16" - Me.ToolStripSeparator16.Size = New System.Drawing.Size(237, 6) - ' - 'mnQuit - ' - Me.mnQuit.Name = "mnQuit" - Me.mnQuit.Size = New System.Drawing.Size(240, 22) - Me.mnQuit.Text = "&Quit" - ' - 'mnEdit - ' - Me.mnEdit.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.mnUndo, Me.mnRedo, Me.ToolStripSeparator17, Me.mnCut, Me.mnCopy, Me.mnPaste, Me.mnDelete, Me.mnSelectAll, Me.mnGotoMeasure, Me.ToolStripSeparator18, Me.mnFind, Me.mnStatistics, Me.ToolStripSeparator19, Me.mnTimeSelect, Me.mnSelect, Me.mnWrite, Me.ToolStripSeparator23, Me.mnMyO2}) - Me.mnEdit.Name = "mnEdit" - Me.mnEdit.Size = New System.Drawing.Size(39, 19) - Me.mnEdit.Text = "&Edit" - ' - 'mnUndo - ' - Me.mnUndo.Enabled = False - Me.mnUndo.Image = Global.iBMSC.My.Resources.Resources.x16Undo - Me.mnUndo.Name = "mnUndo" - Me.mnUndo.ShortcutKeyDisplayString = "Ctrl+Z" - Me.mnUndo.Size = New System.Drawing.Size(233, 22) - Me.mnUndo.Text = "&Undo" - ' - 'mnRedo - ' - Me.mnRedo.Enabled = False - Me.mnRedo.Image = Global.iBMSC.My.Resources.Resources.x16Redo - Me.mnRedo.Name = "mnRedo" - Me.mnRedo.ShortcutKeyDisplayString = "Ctrl+Y" - Me.mnRedo.Size = New System.Drawing.Size(233, 22) - Me.mnRedo.Text = "&Redo" - ' - 'ToolStripSeparator17 - ' - Me.ToolStripSeparator17.Name = "ToolStripSeparator17" - Me.ToolStripSeparator17.Size = New System.Drawing.Size(230, 6) - ' - 'mnCut - ' - Me.mnCut.Image = Global.iBMSC.My.Resources.Resources.x16Cut - Me.mnCut.Name = "mnCut" - Me.mnCut.ShortcutKeyDisplayString = "Ctrl+X" - Me.mnCut.Size = New System.Drawing.Size(233, 22) - Me.mnCut.Text = "Cu&t" - ' - 'mnCopy - ' - Me.mnCopy.Image = Global.iBMSC.My.Resources.Resources.x16Copy - Me.mnCopy.Name = "mnCopy" - Me.mnCopy.ShortcutKeyDisplayString = "Ctrl+C" - Me.mnCopy.Size = New System.Drawing.Size(233, 22) - Me.mnCopy.Text = "&Copy" - ' - 'mnPaste - ' - Me.mnPaste.Image = Global.iBMSC.My.Resources.Resources.x16Paste - Me.mnPaste.Name = "mnPaste" - Me.mnPaste.ShortcutKeyDisplayString = "Ctrl+V" - Me.mnPaste.Size = New System.Drawing.Size(233, 22) - Me.mnPaste.Text = "&Paste" - ' - 'mnDelete - ' - Me.mnDelete.Image = Global.iBMSC.My.Resources.Resources.x16Remove - Me.mnDelete.Name = "mnDelete" - Me.mnDelete.ShortcutKeyDisplayString = "Del" - Me.mnDelete.Size = New System.Drawing.Size(233, 22) - Me.mnDelete.Text = "De&lete" - ' - 'mnSelectAll - ' - Me.mnSelectAll.Name = "mnSelectAll" - Me.mnSelectAll.ShortcutKeyDisplayString = "Ctrl+A" - Me.mnSelectAll.Size = New System.Drawing.Size(233, 22) - Me.mnSelectAll.Text = "Select &All" - ' - 'mnGotoMeasure - ' - Me.mnGotoMeasure.Name = "mnGotoMeasure" - Me.mnGotoMeasure.ShortcutKeys = CType((System.Windows.Forms.Keys.Control Or System.Windows.Forms.Keys.G), System.Windows.Forms.Keys) - Me.mnGotoMeasure.Size = New System.Drawing.Size(233, 22) - Me.mnGotoMeasure.Text = "Go To Measure..." - ' - 'ToolStripSeparator18 - ' - Me.ToolStripSeparator18.Name = "ToolStripSeparator18" - Me.ToolStripSeparator18.Size = New System.Drawing.Size(230, 6) - ' - 'mnFind - ' - Me.mnFind.Image = Global.iBMSC.My.Resources.Resources.x16Find - Me.mnFind.Name = "mnFind" - Me.mnFind.ShortcutKeyDisplayString = "Ctrl+F" - Me.mnFind.Size = New System.Drawing.Size(233, 22) - Me.mnFind.Text = "&Find / Delete / Replace" - ' - 'mnStatistics - ' - Me.mnStatistics.Image = Global.iBMSC.My.Resources.Resources.x16Statistics - Me.mnStatistics.Name = "mnStatistics" - Me.mnStatistics.ShortcutKeyDisplayString = "Ctrl+T" - Me.mnStatistics.Size = New System.Drawing.Size(233, 22) - Me.mnStatistics.Text = "St&atistics" - ' - 'ToolStripSeparator19 - ' - Me.ToolStripSeparator19.Name = "ToolStripSeparator19" - Me.ToolStripSeparator19.Size = New System.Drawing.Size(230, 6) - ' - 'mnTimeSelect - ' - Me.mnTimeSelect.CheckOnClick = True - Me.mnTimeSelect.Image = Global.iBMSC.My.Resources.Resources.x16TimeSelection - Me.mnTimeSelect.Name = "mnTimeSelect" - Me.mnTimeSelect.ShortcutKeys = System.Windows.Forms.Keys.F1 - Me.mnTimeSelect.Size = New System.Drawing.Size(233, 22) - Me.mnTimeSelect.Text = "T&ime Selection Tool" - ' - 'mnSelect - ' - Me.mnSelect.Checked = True - Me.mnSelect.CheckOnClick = True - Me.mnSelect.CheckState = System.Windows.Forms.CheckState.Checked - Me.mnSelect.Image = Global.iBMSC.My.Resources.Resources.x16Select - Me.mnSelect.Name = "mnSelect" - Me.mnSelect.ShortcutKeys = System.Windows.Forms.Keys.F2 - Me.mnSelect.Size = New System.Drawing.Size(233, 22) - Me.mnSelect.Text = "&Select Tool" - ' - 'mnWrite - ' - Me.mnWrite.CheckOnClick = True - Me.mnWrite.Image = Global.iBMSC.My.Resources.Resources.x16Pen - Me.mnWrite.Name = "mnWrite" - Me.mnWrite.ShortcutKeys = System.Windows.Forms.Keys.F3 - Me.mnWrite.Size = New System.Drawing.Size(233, 22) - Me.mnWrite.Text = "&Write Tool" - ' - 'ToolStripSeparator23 - ' - Me.ToolStripSeparator23.Name = "ToolStripSeparator23" - Me.ToolStripSeparator23.Size = New System.Drawing.Size(230, 6) - ' - 'mnMyO2 - ' - Me.mnMyO2.Image = Global.iBMSC.My.Resources.Resources.x16MyO2 - Me.mnMyO2.Name = "mnMyO2" - Me.mnMyO2.Size = New System.Drawing.Size(233, 22) - Me.mnMyO2.Text = "MyO2 ToolBox (Chinese Only)" - ' - 'mnSys - ' - Me.mnSys.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.mnSMenu, Me.mnSTB, Me.mnSOP, Me.mnSStatus, Me.mnSLSplitter, Me.mnSRSplitter, Me.ToolStripSeparator21, Me.CGShow, Me.CGShowS, Me.CGShowBG, Me.CGShowM, Me.CGShowMB, Me.CGShowV, Me.CGShowC, Me.ToolStripSeparator22, Me.CGBPM, Me.CGSTOP, Me.CGSCROLL, Me.CGBLP}) - Me.mnSys.Name = "mnSys" - Me.mnSys.Size = New System.Drawing.Size(44, 19) - Me.mnSys.Text = "&View" - ' - 'mnSMenu - ' - Me.mnSMenu.Checked = True - Me.mnSMenu.CheckOnClick = True - Me.mnSMenu.CheckState = System.Windows.Forms.CheckState.Checked - Me.mnSMenu.Name = "mnSMenu" - Me.mnSMenu.Size = New System.Drawing.Size(172, 22) - Me.mnSMenu.Text = "&Main Menu" - Me.mnSMenu.Visible = False - ' - 'mnSTB - ' - Me.mnSTB.Checked = True - Me.mnSTB.CheckOnClick = True - Me.mnSTB.CheckState = System.Windows.Forms.CheckState.Checked - Me.mnSTB.Name = "mnSTB" - Me.mnSTB.Size = New System.Drawing.Size(172, 22) - Me.mnSTB.Text = "&ToolBar" - ' - 'mnSOP - ' - Me.mnSOP.Checked = True - Me.mnSOP.CheckOnClick = True - Me.mnSOP.CheckState = System.Windows.Forms.CheckState.Checked - Me.mnSOP.Name = "mnSOP" - Me.mnSOP.Size = New System.Drawing.Size(172, 22) - Me.mnSOP.Text = "&Options Panel" - ' - 'mnSStatus - ' - Me.mnSStatus.Checked = True - Me.mnSStatus.CheckOnClick = True - Me.mnSStatus.CheckState = System.Windows.Forms.CheckState.Checked - Me.mnSStatus.Name = "mnSStatus" - Me.mnSStatus.Size = New System.Drawing.Size(172, 22) - Me.mnSStatus.Text = "&Status Bar" - ' - 'mnSLSplitter - ' - Me.mnSLSplitter.CheckOnClick = True - Me.mnSLSplitter.Name = "mnSLSplitter" - Me.mnSLSplitter.Size = New System.Drawing.Size(172, 22) - Me.mnSLSplitter.Text = "&Left Splitter" - ' - 'mnSRSplitter - ' - Me.mnSRSplitter.CheckOnClick = True - Me.mnSRSplitter.Name = "mnSRSplitter" - Me.mnSRSplitter.Size = New System.Drawing.Size(172, 22) - Me.mnSRSplitter.Text = "&Right Splitter" - ' - 'ToolStripSeparator21 - ' - Me.ToolStripSeparator21.Name = "ToolStripSeparator21" - Me.ToolStripSeparator21.Size = New System.Drawing.Size(169, 6) - ' - 'CGShow - ' - Me.CGShow.Checked = True - Me.CGShow.CheckOnClick = True - Me.CGShow.CheckState = System.Windows.Forms.CheckState.Checked - Me.CGShow.Name = "CGShow" - Me.CGShow.Size = New System.Drawing.Size(172, 22) - Me.CGShow.Text = "Grid" - ' - 'CGShowS - ' - Me.CGShowS.Checked = True - Me.CGShowS.CheckOnClick = True - Me.CGShowS.CheckState = System.Windows.Forms.CheckState.Checked - Me.CGShowS.Name = "CGShowS" - Me.CGShowS.Size = New System.Drawing.Size(172, 22) - Me.CGShowS.Text = "Sub" - ' - 'CGShowBG - ' - Me.CGShowBG.Checked = True - Me.CGShowBG.CheckOnClick = True - Me.CGShowBG.CheckState = System.Windows.Forms.CheckState.Checked - Me.CGShowBG.Name = "CGShowBG" - Me.CGShowBG.Size = New System.Drawing.Size(172, 22) - Me.CGShowBG.Text = "BackGround" - ' - 'CGShowM - ' - Me.CGShowM.Checked = True - Me.CGShowM.CheckOnClick = True - Me.CGShowM.CheckState = System.Windows.Forms.CheckState.Checked - Me.CGShowM.Name = "CGShowM" - Me.CGShowM.Size = New System.Drawing.Size(172, 22) - Me.CGShowM.Text = "Measure Index" - ' - 'CGShowMB - ' - Me.CGShowMB.Checked = True - Me.CGShowMB.CheckOnClick = True - Me.CGShowMB.CheckState = System.Windows.Forms.CheckState.Checked - Me.CGShowMB.Name = "CGShowMB" - Me.CGShowMB.Size = New System.Drawing.Size(172, 22) - Me.CGShowMB.Text = "Measure Line" - ' - 'CGShowV - ' - Me.CGShowV.Checked = True - Me.CGShowV.CheckOnClick = True - Me.CGShowV.CheckState = System.Windows.Forms.CheckState.Checked - Me.CGShowV.Name = "CGShowV" - Me.CGShowV.Size = New System.Drawing.Size(172, 22) - Me.CGShowV.Text = "Vertical Line" - ' - 'CGShowC - ' - Me.CGShowC.Checked = True - Me.CGShowC.CheckOnClick = True - Me.CGShowC.CheckState = System.Windows.Forms.CheckState.Checked - Me.CGShowC.Name = "CGShowC" - Me.CGShowC.Size = New System.Drawing.Size(172, 22) - Me.CGShowC.Text = "Column Caption" - ' - 'ToolStripSeparator22 - ' - Me.ToolStripSeparator22.Name = "ToolStripSeparator22" - Me.ToolStripSeparator22.Size = New System.Drawing.Size(169, 6) - ' - 'CGBPM - ' - Me.CGBPM.Checked = True - Me.CGBPM.CheckOnClick = True - Me.CGBPM.CheckState = System.Windows.Forms.CheckState.Checked - Me.CGBPM.Name = "CGBPM" - Me.CGBPM.Size = New System.Drawing.Size(172, 22) - Me.CGBPM.Text = "BPM" - ' - 'CGSTOP - ' - Me.CGSTOP.Checked = True - Me.CGSTOP.CheckOnClick = True - Me.CGSTOP.CheckState = System.Windows.Forms.CheckState.Checked - Me.CGSTOP.Name = "CGSTOP" - Me.CGSTOP.Size = New System.Drawing.Size(172, 22) - Me.CGSTOP.Text = "STOP" - ' - 'CGSCROLL - ' - Me.CGSCROLL.Checked = True - Me.CGSCROLL.CheckOnClick = True - Me.CGSCROLL.CheckState = System.Windows.Forms.CheckState.Checked - Me.CGSCROLL.Name = "CGSCROLL" - Me.CGSCROLL.Size = New System.Drawing.Size(172, 22) - Me.CGSCROLL.Text = "SCROLL" - ' - 'CGBLP - ' - Me.CGBLP.Checked = True - Me.CGBLP.CheckOnClick = True - Me.CGBLP.CheckState = System.Windows.Forms.CheckState.Checked - Me.CGBLP.Name = "CGBLP" - Me.CGBLP.Size = New System.Drawing.Size(172, 22) - Me.CGBLP.Text = "BGA / Layer / Poor" - ' - 'mnOptions - ' - Me.mnOptions.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.mnNTInput, Me.mnErrorCheck, Me.mnPreviewOnClick, Me.mnShowFileName, Me.ToolStripSeparator20, Me.mnGOptions, Me.mnVOptions, Me.mnPOptions, Me.mnLanguage, Me.mnTheme}) - Me.mnOptions.Name = "mnOptions" - Me.mnOptions.Size = New System.Drawing.Size(61, 19) - Me.mnOptions.Text = "&Options" - ' - 'mnNTInput - ' - Me.mnNTInput.Checked = True - Me.mnNTInput.CheckOnClick = True - Me.mnNTInput.CheckState = System.Windows.Forms.CheckState.Checked - Me.mnNTInput.Image = Global.iBMSC.My.Resources.Resources.x16NTInput - Me.mnNTInput.Name = "mnNTInput" - Me.mnNTInput.ShortcutKeys = System.Windows.Forms.Keys.F8 - Me.mnNTInput.Size = New System.Drawing.Size(228, 22) - Me.mnNTInput.Text = "L&N Input Style - NT/BMSE" - ' - 'mnErrorCheck - ' - Me.mnErrorCheck.Checked = True - Me.mnErrorCheck.CheckOnClick = True - Me.mnErrorCheck.CheckState = System.Windows.Forms.CheckState.Checked - Me.mnErrorCheck.Image = Global.iBMSC.My.Resources.Resources.x16CheckError - Me.mnErrorCheck.Name = "mnErrorCheck" - Me.mnErrorCheck.Size = New System.Drawing.Size(228, 22) - Me.mnErrorCheck.Text = "&Error Check" - ' - 'mnPreviewOnClick - ' - Me.mnPreviewOnClick.Checked = True - Me.mnPreviewOnClick.CheckOnClick = True - Me.mnPreviewOnClick.CheckState = System.Windows.Forms.CheckState.Checked - Me.mnPreviewOnClick.Image = Global.iBMSC.My.Resources.Resources.x16PreviewOnClick - Me.mnPreviewOnClick.Name = "mnPreviewOnClick" - Me.mnPreviewOnClick.Size = New System.Drawing.Size(228, 22) - Me.mnPreviewOnClick.Text = "Preview on &Click" - ' - 'mnShowFileName - ' - Me.mnShowFileName.CheckOnClick = True - Me.mnShowFileName.Image = Global.iBMSC.My.Resources.Resources.x16ShowFileNameN - Me.mnShowFileName.Name = "mnShowFileName" - Me.mnShowFileName.Size = New System.Drawing.Size(228, 22) - Me.mnShowFileName.Text = "Show &File Name on Notes" - ' - 'ToolStripSeparator20 - ' - Me.ToolStripSeparator20.Name = "ToolStripSeparator20" - Me.ToolStripSeparator20.Size = New System.Drawing.Size(225, 6) - ' - 'mnGOptions - ' - Me.mnGOptions.Image = Global.iBMSC.My.Resources.Resources.x16GeneralOptions - Me.mnGOptions.Name = "mnGOptions" - Me.mnGOptions.ShortcutKeys = System.Windows.Forms.Keys.F10 - Me.mnGOptions.Size = New System.Drawing.Size(228, 22) - Me.mnGOptions.Text = "&General Options" - ' - 'mnVOptions - ' - Me.mnVOptions.Image = Global.iBMSC.My.Resources.Resources.x16VisualOptions - Me.mnVOptions.Name = "mnVOptions" - Me.mnVOptions.ShortcutKeys = System.Windows.Forms.Keys.F12 - Me.mnVOptions.Size = New System.Drawing.Size(228, 22) - Me.mnVOptions.Text = "&Visual Options" - ' - 'mnPOptions - ' - Me.mnPOptions.Image = Global.iBMSC.My.Resources.Resources.x16PlayerOptions - Me.mnPOptions.Name = "mnPOptions" - Me.mnPOptions.ShortcutKeys = System.Windows.Forms.Keys.F9 - Me.mnPOptions.Size = New System.Drawing.Size(228, 22) - Me.mnPOptions.Text = "&Player Options" - ' - 'mnConversion - ' - Me.mnConversion.DropDown = Me.cmnConversion - Me.mnConversion.Name = "mnConversion" - Me.mnConversion.Size = New System.Drawing.Size(84, 19) - Me.mnConversion.Text = "&Conversions" - ' - 'cmnConversion - ' - Me.cmnConversion.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.POBLong, Me.POBShort, Me.POBLongShort, Me.ToolStripSeparator10, Me.POBHidden, Me.POBVisible, Me.POBHiddenVisible, Me.ToolStripSeparator11, Me.POBModify, Me.POBMirror, Me.POBFlip, Me.POBRandom, Me.POBSRandom}) - Me.cmnConversion.Name = "cmnLanguage" - Me.cmnConversion.OwnerItem = Me.POConvert - Me.cmnConversion.Size = New System.Drawing.Size(222, 258) - ' - 'POBLong - ' - Me.POBLong.Enabled = False - Me.POBLong.Image = Global.iBMSC.My.Resources.Resources.ConvertNotesL - Me.POBLong.Name = "POBLong" - Me.POBLong.Size = New System.Drawing.Size(221, 22) - Me.POBLong.Text = "→ &Long Note" - ' - 'POBShort - ' - Me.POBShort.Image = Global.iBMSC.My.Resources.Resources.ConvertNotesN - Me.POBShort.Name = "POBShort" - Me.POBShort.Size = New System.Drawing.Size(221, 22) - Me.POBShort.Text = "→ &Short Note" - ' - 'POBLongShort - ' - Me.POBLongShort.Enabled = False - Me.POBLongShort.Image = Global.iBMSC.My.Resources.Resources.ConvertNotes - Me.POBLongShort.Name = "POBLongShort" - Me.POBLongShort.Size = New System.Drawing.Size(221, 22) - Me.POBLongShort.Text = "Long Note ↔ Short Note" - ' - 'ToolStripSeparator10 - ' - Me.ToolStripSeparator10.Name = "ToolStripSeparator10" - Me.ToolStripSeparator10.Size = New System.Drawing.Size(218, 6) - ' - 'POBHidden - ' - Me.POBHidden.Image = Global.iBMSC.My.Resources.Resources.ConvertNotesH - Me.POBHidden.Name = "POBHidden" - Me.POBHidden.Size = New System.Drawing.Size(221, 22) - Me.POBHidden.Text = "→ &Hidden Note" - ' - 'POBVisible - ' - Me.POBVisible.Image = Global.iBMSC.My.Resources.Resources.ConvertNotesV - Me.POBVisible.Name = "POBVisible" - Me.POBVisible.Size = New System.Drawing.Size(221, 22) - Me.POBVisible.Text = "→ &Visible Note" - ' - 'POBHiddenVisible - ' - Me.POBHiddenVisible.Image = Global.iBMSC.My.Resources.Resources.ConvertNotesHV - Me.POBHiddenVisible.Name = "POBHiddenVisible" - Me.POBHiddenVisible.Size = New System.Drawing.Size(221, 22) - Me.POBHiddenVisible.Text = "Hidden Note ↔ Visible Note" - ' - 'ToolStripSeparator11 - ' - Me.ToolStripSeparator11.Name = "ToolStripSeparator11" - Me.ToolStripSeparator11.Size = New System.Drawing.Size(218, 6) - ' - 'POBModify - ' - Me.POBModify.Image = Global.iBMSC.My.Resources.Resources.x16ModifyLabel - Me.POBModify.Name = "POBModify" - Me.POBModify.Size = New System.Drawing.Size(221, 22) - Me.POBModify.Text = "Modify &Labels" - ' - 'POBMirror - ' - Me.POBMirror.Image = Global.iBMSC.My.Resources.Resources.x16Mirror - Me.POBMirror.Name = "POBMirror" - Me.POBMirror.Size = New System.Drawing.Size(221, 22) - Me.POBMirror.Text = "&Mirror" - ' - 'POBFlip - ' - Me.POBFlip.Image = Global.iBMSC.My.Resources.Resources.x16Flip - Me.POBFlip.Name = "POBFlip" - Me.POBFlip.Size = New System.Drawing.Size(221, 22) - Me.POBFlip.Text = "&Flip" - ' - 'POBRandom - ' - Me.POBRandom.Image = Global.iBMSC.My.Resources.Resources.x16Mirror - Me.POBRandom.Name = "POBRandom" - Me.POBRandom.Size = New System.Drawing.Size(221, 22) - Me.POBRandom.Text = "&Random" - ' - 'POBSRandom - ' - Me.POBSRandom.Image = Global.iBMSC.My.Resources.Resources.x16Mirror - Me.POBSRandom.Name = "POBSRandom" - Me.POBSRandom.Size = New System.Drawing.Size(221, 22) - Me.POBSRandom.Text = "S-R&andom" - ' - 'mnPreview - ' - Me.mnPreview.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.mnPlayB, Me.mnPlay, Me.mnStop}) - Me.mnPreview.Name = "mnPreview" - Me.mnPreview.Size = New System.Drawing.Size(60, 19) - Me.mnPreview.Text = "&Preview" - ' - 'mnPlayB - ' - Me.mnPlayB.Image = Global.iBMSC.My.Resources.Resources.x16PlayB - Me.mnPlayB.Name = "mnPlayB" - Me.mnPlayB.ShortcutKeys = System.Windows.Forms.Keys.F5 - Me.mnPlayB.Size = New System.Drawing.Size(201, 22) - Me.mnPlayB.Text = "Play from &beginning" - ' - 'mnPlay - ' - Me.mnPlay.Image = Global.iBMSC.My.Resources.Resources.x16Play - Me.mnPlay.Name = "mnPlay" - Me.mnPlay.ShortcutKeys = System.Windows.Forms.Keys.F6 - Me.mnPlay.Size = New System.Drawing.Size(201, 22) - Me.mnPlay.Text = "&Play from here" - ' - 'mnStop - ' - Me.mnStop.Image = Global.iBMSC.My.Resources.Resources.x16Stop - Me.mnStop.Name = "mnStop" - Me.mnStop.ShortcutKeys = System.Windows.Forms.Keys.F7 - Me.mnStop.Size = New System.Drawing.Size(201, 22) - Me.mnStop.Text = "&Stop" - ' - 'POConvert - ' - Me.POConvert.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image - Me.POConvert.DropDown = Me.cmnConversion - Me.POConvert.Image = Global.iBMSC.My.Resources.Resources.ConvertNotes - Me.POConvert.ImageTransparentColor = System.Drawing.Color.Magenta - Me.POConvert.Name = "POConvert" - Me.POConvert.Size = New System.Drawing.Size(29, 22) - Me.POConvert.Text = "Convert Notes" - ' - 'TBMain - ' - Me.TBMain.AccessibleRole = System.Windows.Forms.AccessibleRole.ToolBar - Me.TBMain.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch - Me.TBMain.Dock = System.Windows.Forms.DockStyle.None - Me.TBMain.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.TBNew, Me.TBOpen, Me.TBSave, Me.ToolStripSeparator1, Me.TBCut, Me.TBCopy, Me.TBPaste, Me.TBFind, Me.ToolStripSeparator24, Me.TBStatistics, Me.POConvert, Me.TBMyO2, Me.ToolStripSeparator4, Me.TBErrorCheck, Me.TBPreviewOnClick, Me.TBShowFileName, Me.ToolStripSeparator8, Me.TBNTInput, Me.TBWavIncrease, Me.ToolStripSeparator2, Me.TBUndo, Me.TBRedo, Me.ToolStripSeparator5, Me.TBTimeSelect, Me.TBSelect, Me.TBWrite, Me.ToolStripSeparator3, Me.TBPlayB, Me.TBPlay, Me.TBStop, Me.TBPOptions, Me.ToolStripSeparator7, Me.TBVOptions, Me.TBGOptions, Me.TBLanguage, Me.TBTheme, Me.POBStorm}) - Me.TBMain.Location = New System.Drawing.Point(3, 23) - Me.TBMain.Name = "TBMain" - Me.TBMain.Size = New System.Drawing.Size(751, 25) - Me.TBMain.TabIndex = 64 - Me.TBMain.Text = "Main Toolbar" - ' - 'TBNew - ' - Me.TBNew.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image - Me.TBNew.Image = Global.iBMSC.My.Resources.Resources.x16New - Me.TBNew.ImageTransparentColor = System.Drawing.Color.Transparent - Me.TBNew.Name = "TBNew" - Me.TBNew.Size = New System.Drawing.Size(23, 22) - Me.TBNew.Text = "New (Ctrl+N)" - ' - 'TBOpen - ' - Me.TBOpen.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image - Me.TBOpen.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.TBOpenR0, Me.TBOpenR1, Me.TBOpenR2, Me.TBOpenR3, Me.TBOpenR4, Me.ToolStripSeparator12, Me.TBImportSM, Me.TBImportIBMSC}) - Me.TBOpen.Image = Global.iBMSC.My.Resources.Resources.x16Open - Me.TBOpen.ImageTransparentColor = System.Drawing.Color.Magenta - Me.TBOpen.Name = "TBOpen" - Me.TBOpen.Size = New System.Drawing.Size(32, 22) - Me.TBOpen.Text = "Open (Ctrl+O)" - ' - 'TBOpenR0 - ' - Me.TBOpenR0.Enabled = False - Me.TBOpenR0.Name = "TBOpenR0" - Me.TBOpenR0.Size = New System.Drawing.Size(199, 22) - Me.TBOpenR0.Tag = "0" - Me.TBOpenR0.Text = "Recent #0" - ' - 'TBOpenR1 - ' - Me.TBOpenR1.Enabled = False - Me.TBOpenR1.Name = "TBOpenR1" - Me.TBOpenR1.Size = New System.Drawing.Size(199, 22) - Me.TBOpenR1.Tag = "1" - Me.TBOpenR1.Text = "Recent #1" - ' - 'TBOpenR2 - ' - Me.TBOpenR2.Enabled = False - Me.TBOpenR2.Name = "TBOpenR2" - Me.TBOpenR2.Size = New System.Drawing.Size(199, 22) - Me.TBOpenR2.Tag = "2" - Me.TBOpenR2.Text = "Recent #2" - ' - 'TBOpenR3 - ' - Me.TBOpenR3.Enabled = False - Me.TBOpenR3.Name = "TBOpenR3" - Me.TBOpenR3.Size = New System.Drawing.Size(199, 22) - Me.TBOpenR3.Tag = "3" - Me.TBOpenR3.Text = "Recent #3" - ' - 'TBOpenR4 - ' - Me.TBOpenR4.Enabled = False - Me.TBOpenR4.Name = "TBOpenR4" - Me.TBOpenR4.Size = New System.Drawing.Size(199, 22) - Me.TBOpenR4.Tag = "4" - Me.TBOpenR4.Text = "Recent #4" - ' - 'ToolStripSeparator12 - ' - Me.ToolStripSeparator12.Name = "ToolStripSeparator12" - Me.ToolStripSeparator12.Size = New System.Drawing.Size(196, 6) - ' - 'TBImportSM - ' - Me.TBImportSM.Image = Global.iBMSC.My.Resources.Resources.x16Import2 - Me.TBImportSM.Name = "TBImportSM" - Me.TBImportSM.Size = New System.Drawing.Size(199, 22) - Me.TBImportSM.Text = "Import from .SM file" - ' - 'TBImportIBMSC - ' - Me.TBImportIBMSC.Image = Global.iBMSC.My.Resources.Resources.x16Import2 - Me.TBImportIBMSC.Name = "TBImportIBMSC" - Me.TBImportIBMSC.Size = New System.Drawing.Size(199, 22) - Me.TBImportIBMSC.Text = "Import from .IBMSC file" - ' - 'TBSave - ' - Me.TBSave.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image - Me.TBSave.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.TBSaveAs, Me.TBExport}) - Me.TBSave.Image = Global.iBMSC.My.Resources.Resources.x16Save - Me.TBSave.ImageTransparentColor = System.Drawing.Color.Magenta - Me.TBSave.Name = "TBSave" - Me.TBSave.Size = New System.Drawing.Size(32, 22) - Me.TBSave.Text = "Save (Ctrl+S)" - ' - 'TBSaveAs - ' - Me.TBSaveAs.Image = Global.iBMSC.My.Resources.Resources.x16SaveAs - Me.TBSaveAs.Name = "TBSaveAs" - Me.TBSaveAs.Size = New System.Drawing.Size(168, 22) - Me.TBSaveAs.Text = "Save As..." - ' - 'TBExport - ' - Me.TBExport.Image = Global.iBMSC.My.Resources.Resources.x16Export - Me.TBExport.Name = "TBExport" - Me.TBExport.Size = New System.Drawing.Size(168, 22) - Me.TBExport.Text = "Export .IBMSC file" - ' - 'ToolStripSeparator1 - ' - Me.ToolStripSeparator1.Name = "ToolStripSeparator1" - Me.ToolStripSeparator1.Size = New System.Drawing.Size(6, 25) - ' - 'TBCut - ' - Me.TBCut.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image - Me.TBCut.Image = Global.iBMSC.My.Resources.Resources.x16Cut - Me.TBCut.ImageTransparentColor = System.Drawing.Color.Magenta - Me.TBCut.Name = "TBCut" - Me.TBCut.Size = New System.Drawing.Size(23, 22) - Me.TBCut.Text = "Cut (Ctrl+X)" - ' - 'TBCopy - ' - Me.TBCopy.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image - Me.TBCopy.Image = Global.iBMSC.My.Resources.Resources.x16Copy - Me.TBCopy.ImageTransparentColor = System.Drawing.Color.Magenta - Me.TBCopy.Name = "TBCopy" - Me.TBCopy.Size = New System.Drawing.Size(23, 22) - Me.TBCopy.Text = "Copy (Ctrl+C)" - ' - 'TBPaste - ' - Me.TBPaste.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image - Me.TBPaste.Image = Global.iBMSC.My.Resources.Resources.x16Paste - Me.TBPaste.ImageTransparentColor = System.Drawing.Color.Magenta - Me.TBPaste.Name = "TBPaste" - Me.TBPaste.Size = New System.Drawing.Size(23, 22) - Me.TBPaste.Text = "Paste (Ctrl+V)" - ' - 'TBFind - ' - Me.TBFind.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image - Me.TBFind.Image = Global.iBMSC.My.Resources.Resources.x16Find - Me.TBFind.ImageTransparentColor = System.Drawing.Color.Magenta - Me.TBFind.Name = "TBFind" - Me.TBFind.Size = New System.Drawing.Size(23, 22) - Me.TBFind.Text = "Find / Delete / Replace (Ctrl+F)" - ' - 'ToolStripSeparator24 - ' - Me.ToolStripSeparator24.Name = "ToolStripSeparator24" - Me.ToolStripSeparator24.Size = New System.Drawing.Size(6, 25) - ' - 'TBStatistics - ' - Me.TBStatistics.Font = New System.Drawing.Font("Segoe UI", 9.0!, System.Drawing.FontStyle.Bold) - Me.TBStatistics.Image = Global.iBMSC.My.Resources.Resources.x16Statistics - Me.TBStatistics.ImageTransparentColor = System.Drawing.Color.Magenta - Me.TBStatistics.Name = "TBStatistics" - Me.TBStatistics.Size = New System.Drawing.Size(34, 22) - Me.TBStatistics.Text = "0" - Me.TBStatistics.ToolTipText = "Statistics (Ctrl+T)" - ' - 'TBMyO2 - ' - Me.TBMyO2.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image - Me.TBMyO2.Image = Global.iBMSC.My.Resources.Resources.x16MyO2 - Me.TBMyO2.ImageTransparentColor = System.Drawing.Color.Magenta - Me.TBMyO2.Name = "TBMyO2" - Me.TBMyO2.Size = New System.Drawing.Size(23, 22) - Me.TBMyO2.Text = "MyO2 ToolBox (Chinese Only)" - ' - 'ToolStripSeparator4 - ' - Me.ToolStripSeparator4.Name = "ToolStripSeparator4" - Me.ToolStripSeparator4.Size = New System.Drawing.Size(6, 25) - ' - 'TBErrorCheck - ' - Me.TBErrorCheck.Checked = True - Me.TBErrorCheck.CheckOnClick = True - Me.TBErrorCheck.CheckState = System.Windows.Forms.CheckState.Checked - Me.TBErrorCheck.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image - Me.TBErrorCheck.Image = Global.iBMSC.My.Resources.Resources.x16CheckError - Me.TBErrorCheck.ImageTransparentColor = System.Drawing.Color.Magenta - Me.TBErrorCheck.Name = "TBErrorCheck" - Me.TBErrorCheck.Size = New System.Drawing.Size(23, 22) - Me.TBErrorCheck.Text = "Error Check" - ' - 'TBPreviewOnClick - ' - Me.TBPreviewOnClick.Checked = True - Me.TBPreviewOnClick.CheckOnClick = True - Me.TBPreviewOnClick.CheckState = System.Windows.Forms.CheckState.Checked - Me.TBPreviewOnClick.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image - Me.TBPreviewOnClick.Image = Global.iBMSC.My.Resources.Resources.x16PreviewOnClick - Me.TBPreviewOnClick.ImageTransparentColor = System.Drawing.Color.Magenta - Me.TBPreviewOnClick.Name = "TBPreviewOnClick" - Me.TBPreviewOnClick.Size = New System.Drawing.Size(23, 22) - Me.TBPreviewOnClick.Text = "Preview On Click" - ' - 'TBShowFileName - ' - Me.TBShowFileName.CheckOnClick = True - Me.TBShowFileName.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image - Me.TBShowFileName.Image = Global.iBMSC.My.Resources.Resources.x16ShowFileNameN - Me.TBShowFileName.ImageTransparentColor = System.Drawing.Color.Magenta - Me.TBShowFileName.Name = "TBShowFileName" - Me.TBShowFileName.Size = New System.Drawing.Size(23, 22) - Me.TBShowFileName.Text = "Show File Name on Notes" - ' - 'ToolStripSeparator8 - ' - Me.ToolStripSeparator8.Name = "ToolStripSeparator8" - Me.ToolStripSeparator8.Size = New System.Drawing.Size(6, 25) - ' - 'TBNTInput - ' - Me.TBNTInput.Checked = True - Me.TBNTInput.CheckOnClick = True - Me.TBNTInput.CheckState = System.Windows.Forms.CheckState.Checked - Me.TBNTInput.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image - Me.TBNTInput.Image = Global.iBMSC.My.Resources.Resources.x16NTInput - Me.TBNTInput.ImageTransparentColor = System.Drawing.Color.Magenta - Me.TBNTInput.Name = "TBNTInput" - Me.TBNTInput.Size = New System.Drawing.Size(23, 22) - Me.TBNTInput.Text = "LongNote Input Style - NoteTool/BMSE" - ' - 'TBWavIncrease - ' - Me.TBWavIncrease.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image - Me.TBWavIncrease.Image = CType(resources.GetObject("TBWavIncrease.Image"), System.Drawing.Image) - Me.TBWavIncrease.ImageTransparentColor = System.Drawing.Color.Magenta - Me.TBWavIncrease.Name = "TBWavIncrease" - Me.TBWavIncrease.Size = New System.Drawing.Size(23, 22) - Me.TBWavIncrease.Text = "Autoincrease WAV when writing" - ' - 'ToolStripSeparator2 - ' - Me.ToolStripSeparator2.Name = "ToolStripSeparator2" - Me.ToolStripSeparator2.Size = New System.Drawing.Size(6, 25) - ' - 'TBUndo - ' - Me.TBUndo.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image - Me.TBUndo.Enabled = False - Me.TBUndo.Image = Global.iBMSC.My.Resources.Resources.x16Undo - Me.TBUndo.ImageTransparentColor = System.Drawing.Color.Magenta - Me.TBUndo.Name = "TBUndo" - Me.TBUndo.Size = New System.Drawing.Size(23, 22) - Me.TBUndo.Text = "Undo (Ctrl+Z)" - ' - 'TBRedo - ' - Me.TBRedo.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image - Me.TBRedo.Enabled = False - Me.TBRedo.Image = Global.iBMSC.My.Resources.Resources.x16Redo - Me.TBRedo.ImageTransparentColor = System.Drawing.Color.Magenta - Me.TBRedo.Name = "TBRedo" - Me.TBRedo.Size = New System.Drawing.Size(23, 22) - Me.TBRedo.Text = "Redo (Ctrl+Y)" - ' - 'ToolStripSeparator5 - ' - Me.ToolStripSeparator5.Name = "ToolStripSeparator5" - Me.ToolStripSeparator5.Size = New System.Drawing.Size(6, 25) - ' - 'TBTimeSelect - ' - Me.TBTimeSelect.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image - Me.TBTimeSelect.Image = Global.iBMSC.My.Resources.Resources.x16TimeSelection - Me.TBTimeSelect.ImageTransparentColor = System.Drawing.Color.Magenta - Me.TBTimeSelect.Name = "TBTimeSelect" - Me.TBTimeSelect.Size = New System.Drawing.Size(23, 22) - Me.TBTimeSelect.Text = "Time Selection Tool (F1)" - ' - 'TBSelect - ' - Me.TBSelect.Checked = True - Me.TBSelect.CheckState = System.Windows.Forms.CheckState.Checked - Me.TBSelect.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image - Me.TBSelect.Image = Global.iBMSC.My.Resources.Resources.x16Select - Me.TBSelect.ImageTransparentColor = System.Drawing.Color.Magenta - Me.TBSelect.Name = "TBSelect" - Me.TBSelect.Size = New System.Drawing.Size(23, 22) - Me.TBSelect.Text = "Select Tool (F2)" - ' - 'TBWrite - ' - Me.TBWrite.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image - Me.TBWrite.Image = Global.iBMSC.My.Resources.Resources.x16Pen - Me.TBWrite.ImageTransparentColor = System.Drawing.Color.Magenta - Me.TBWrite.Name = "TBWrite" - Me.TBWrite.Size = New System.Drawing.Size(23, 22) - Me.TBWrite.Text = "Write Tool (F3)" - ' - 'ToolStripSeparator3 - ' - Me.ToolStripSeparator3.Name = "ToolStripSeparator3" - Me.ToolStripSeparator3.Size = New System.Drawing.Size(6, 25) - ' - 'TBPlayB - ' - Me.TBPlayB.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image - Me.TBPlayB.Image = Global.iBMSC.My.Resources.Resources.x16PlayB - Me.TBPlayB.ImageTransparentColor = System.Drawing.Color.Magenta - Me.TBPlayB.Name = "TBPlayB" - Me.TBPlayB.Size = New System.Drawing.Size(23, 22) - Me.TBPlayB.Text = "Play from beginning (F5)" - ' - 'TBPlay - ' - Me.TBPlay.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image - Me.TBPlay.Image = Global.iBMSC.My.Resources.Resources.x16Play - Me.TBPlay.ImageTransparentColor = System.Drawing.Color.Magenta - Me.TBPlay.Name = "TBPlay" - Me.TBPlay.Size = New System.Drawing.Size(23, 22) - Me.TBPlay.Text = "Play from here (F6)" - ' - 'TBStop - ' - Me.TBStop.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image - Me.TBStop.Image = Global.iBMSC.My.Resources.Resources.x16Stop - Me.TBStop.ImageTransparentColor = System.Drawing.Color.Magenta - Me.TBStop.Name = "TBStop" - Me.TBStop.Size = New System.Drawing.Size(23, 22) - Me.TBStop.Text = "Stop (F7)" - ' - 'TBPOptions - ' - Me.TBPOptions.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image - Me.TBPOptions.Image = Global.iBMSC.My.Resources.Resources.x16PlayerOptions - Me.TBPOptions.ImageTransparentColor = System.Drawing.Color.Magenta - Me.TBPOptions.Name = "TBPOptions" - Me.TBPOptions.Size = New System.Drawing.Size(23, 22) - Me.TBPOptions.Text = "Player Options (F9)" - ' - 'ToolStripSeparator7 - ' - Me.ToolStripSeparator7.Name = "ToolStripSeparator7" - Me.ToolStripSeparator7.Size = New System.Drawing.Size(6, 25) - ' - 'TBVOptions - ' - Me.TBVOptions.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image - Me.TBVOptions.Image = Global.iBMSC.My.Resources.Resources.x16VisualOptions - Me.TBVOptions.ImageTransparentColor = System.Drawing.Color.Magenta - Me.TBVOptions.Name = "TBVOptions" - Me.TBVOptions.Size = New System.Drawing.Size(23, 22) - Me.TBVOptions.Text = "Visual Options (F12)" - ' - 'TBGOptions - ' - Me.TBGOptions.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image - Me.TBGOptions.Image = Global.iBMSC.My.Resources.Resources.x16GeneralOptions - Me.TBGOptions.ImageTransparentColor = System.Drawing.Color.Magenta - Me.TBGOptions.Name = "TBGOptions" - Me.TBGOptions.Size = New System.Drawing.Size(23, 22) - Me.TBGOptions.Text = "General Options (F10)" - ' - 'POBStorm - ' - Me.POBStorm.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image - Me.POBStorm.Image = Global.iBMSC.My.Resources.Resources.x16Storm - Me.POBStorm.ImageTransparentColor = System.Drawing.Color.Magenta - Me.POBStorm.Name = "POBStorm" - Me.POBStorm.Size = New System.Drawing.Size(23, 22) - Me.POBStorm.Text = "Storm" - Me.POBStorm.Visible = False - ' - 'pStatus - ' - Me.pStatus.AutoSize = True - Me.pStatus.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink - Me.pStatus.Controls.Add(Me.FStatus2) - Me.pStatus.Controls.Add(Me.FStatus) - Me.pStatus.Dock = System.Windows.Forms.DockStyle.Bottom - Me.pStatus.Location = New System.Drawing.Point(0, 759) - Me.pStatus.Name = "pStatus" - Me.pStatus.Size = New System.Drawing.Size(952, 22) - Me.pStatus.TabIndex = 62 - ' - 'FStatus2 - ' - Me.FStatus2.AccessibleRole = System.Windows.Forms.AccessibleRole.StatusBar - Me.FStatus2.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.FSSS, Me.FSSL, Me.FSSH, Me.BVCReverse, Me.LblMultiply, Me.TVCM, Me.LblDivide, Me.TVCD, Me.BVCApply, Me.TVCBPM, Me.BVCCalculate, Me.BConvertStop}) - Me.FStatus2.Location = New System.Drawing.Point(0, 0) - Me.FStatus2.Name = "FStatus2" - Me.FStatus2.ShowItemToolTips = True - Me.FStatus2.Size = New System.Drawing.Size(876, 22) - Me.FStatus2.TabIndex = 0 - Me.FStatus2.Text = "Status" - Me.FStatus2.Visible = False - ' - 'FSSS - ' - Me.FSSS.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text - Me.FSSS.Font = New System.Drawing.Font("Segoe UI", 9.0!, System.Drawing.FontStyle.Bold) - Me.FSSS.ImageTransparentColor = System.Drawing.Color.Magenta - Me.FSSS.Name = "FSSS" - Me.FSSS.Size = New System.Drawing.Size(23, 20) - Me.FSSS.Text = "0" - Me.FSSS.ToolTipText = "Selection Start Position" - ' - 'FSSL - ' - Me.FSSL.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text - Me.FSSL.Font = New System.Drawing.Font("Segoe UI", 9.0!, System.Drawing.FontStyle.Bold) - Me.FSSL.ImageTransparentColor = System.Drawing.Color.Magenta - Me.FSSL.Name = "FSSL" - Me.FSSL.Size = New System.Drawing.Size(23, 20) - Me.FSSL.Text = "0" - Me.FSSL.ToolTipText = "Selection Length" - ' - 'FSSH - ' - Me.FSSH.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text - Me.FSSH.Font = New System.Drawing.Font("Segoe UI", 9.0!, System.Drawing.FontStyle.Bold) - Me.FSSH.ImageTransparentColor = System.Drawing.Color.Magenta - Me.FSSH.Name = "FSSH" - Me.FSSH.Size = New System.Drawing.Size(23, 20) - Me.FSSH.Text = "0" - Me.FSSH.ToolTipText = "Selection Split Position" - ' - 'BVCReverse - ' - Me.BVCReverse.BackColor = System.Drawing.Color.FromArgb(CType(CType(192, Byte), Integer), CType(CType(192, Byte), Integer), CType(CType(255, Byte), Integer)) - Me.BVCReverse.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text - Me.BVCReverse.ImageTransparentColor = System.Drawing.Color.Magenta - Me.BVCReverse.Name = "BVCReverse" - Me.BVCReverse.Size = New System.Drawing.Size(102, 20) - Me.BVCReverse.Text = "Reverse Selection" - ' - 'LblMultiply - ' - Me.LblMultiply.Name = "LblMultiply" - Me.LblMultiply.Size = New System.Drawing.Size(15, 17) - Me.LblMultiply.Text = "×" - ' - 'TVCM - ' - Me.TVCM.BackColor = System.Drawing.Color.FromArgb(CType(CType(255, Byte), Integer), CType(CType(192, Byte), Integer), CType(CType(192, Byte), Integer)) - Me.TVCM.BorderStyle = System.Windows.Forms.BorderStyle.None - Me.TVCM.Font = New System.Drawing.Font("Segoe UI", 9.0!, System.Drawing.FontStyle.Bold) - Me.TVCM.Name = "TVCM" - Me.TVCM.Size = New System.Drawing.Size(60, 22) - Me.TVCM.Text = "2" - Me.TVCM.TextBoxTextAlign = System.Windows.Forms.HorizontalAlignment.Center - ' - 'LblDivide - ' - Me.LblDivide.Name = "LblDivide" - Me.LblDivide.Size = New System.Drawing.Size(15, 17) - Me.LblDivide.Text = "÷" - ' - 'TVCD - ' - Me.TVCD.BackColor = System.Drawing.Color.FromArgb(CType(CType(255, Byte), Integer), CType(CType(192, Byte), Integer), CType(CType(192, Byte), Integer)) - Me.TVCD.BorderStyle = System.Windows.Forms.BorderStyle.None - Me.TVCD.Font = New System.Drawing.Font("Segoe UI", 9.0!, System.Drawing.FontStyle.Bold) - Me.TVCD.Name = "TVCD" - Me.TVCD.Size = New System.Drawing.Size(60, 22) - Me.TVCD.Text = "1" - Me.TVCD.TextBoxTextAlign = System.Windows.Forms.HorizontalAlignment.Center - ' - 'BVCApply - ' - Me.BVCApply.BackColor = System.Drawing.Color.FromArgb(CType(CType(192, Byte), Integer), CType(CType(192, Byte), Integer), CType(CType(255, Byte), Integer)) - Me.BVCApply.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text - Me.BVCApply.ImageTransparentColor = System.Drawing.Color.Magenta - Me.BVCApply.Name = "BVCApply" - Me.BVCApply.Size = New System.Drawing.Size(96, 20) - Me.BVCApply.Text = "Expand By Ratio" - Me.BVCApply.ToolTipText = "This will expand notes and selection by the ratio next to this button. Ignores ce" & - "nter bar." - ' - 'TVCBPM - ' - Me.TVCBPM.BackColor = System.Drawing.Color.FromArgb(CType(CType(255, Byte), Integer), CType(CType(192, Byte), Integer), CType(CType(192, Byte), Integer)) - Me.TVCBPM.BorderStyle = System.Windows.Forms.BorderStyle.None - Me.TVCBPM.Font = New System.Drawing.Font("Segoe UI", 9.0!, System.Drawing.FontStyle.Bold) - Me.TVCBPM.Name = "TVCBPM" - Me.TVCBPM.Size = New System.Drawing.Size(80, 22) - Me.TVCBPM.Text = "120" - Me.TVCBPM.TextBoxTextAlign = System.Windows.Forms.HorizontalAlignment.Center - ' - 'BVCCalculate - ' - Me.BVCCalculate.BackColor = System.Drawing.Color.FromArgb(CType(CType(192, Byte), Integer), CType(CType(192, Byte), Integer), CType(CType(255, Byte), Integer)) - Me.BVCCalculate.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text - Me.BVCCalculate.ImageTransparentColor = System.Drawing.Color.Magenta - Me.BVCCalculate.Name = "BVCCalculate" - Me.BVCCalculate.Size = New System.Drawing.Size(103, 20) - Me.BVCCalculate.Text = "Relocate By Value" - Me.BVCCalculate.ToolTipText = "This will move notes within the selection and preserve the selection, given the B" & - "PM value next to this button. Considers center bar." - ' - 'BConvertStop - ' - Me.BConvertStop.BackColor = System.Drawing.Color.FromArgb(CType(CType(192, Byte), Integer), CType(CType(192, Byte), Integer), CType(CType(255, Byte), Integer)) - Me.BConvertStop.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text - Me.BConvertStop.ImageTransparentColor = System.Drawing.Color.Magenta - Me.BConvertStop.Name = "BConvertStop" - Me.BConvertStop.Size = New System.Drawing.Size(115, 20) - Me.BConvertStop.Text = "Transform Into Stop" - Me.BConvertStop.ToolTipText = "This will move notes within the selection and preserve the selection, given the B" & - "PM value next to this button. Considers center bar." - ' - 'FStatus - ' - Me.FStatus.AccessibleRole = System.Windows.Forms.AccessibleRole.StatusBar - Me.FStatus.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.FSC, Me.FSW, Me.FSM, Me.FSP1, Me.FSP3, Me.FSP2, Me.FSP4, Me.TimeStatusLabel, Me.FST, Me.FSH, Me.FSE}) - Me.FStatus.Location = New System.Drawing.Point(0, 0) - Me.FStatus.Name = "FStatus" - Me.FStatus.ShowItemToolTips = True - Me.FStatus.Size = New System.Drawing.Size(952, 22) - Me.FStatus.SizingGrip = False - Me.FStatus.TabIndex = 62 - Me.FStatus.Text = "Status" - ' - 'FSC - ' - Me.FSC.AutoSize = False - Me.FSC.Name = "FSC" - Me.FSC.Size = New System.Drawing.Size(70, 17) - Me.FSC.Text = "BPM" - Me.FSC.ToolTipText = "Column Caption" - ' - 'FSW - ' - Me.FSW.AutoSize = False - Me.FSW.ForeColor = System.Drawing.Color.FromArgb(CType(CType(128, Byte), Integer), CType(CType(64, Byte), Integer), CType(CType(0, Byte), Integer)) - Me.FSW.Name = "FSW" - Me.FSW.Size = New System.Drawing.Size(40, 17) - Me.FSW.Text = "01" - Me.FSW.ToolTipText = "Note Index" - ' - 'FSM - ' - Me.FSM.AutoSize = False - Me.FSM.ForeColor = System.Drawing.Color.Teal - Me.FSM.Name = "FSM" - Me.FSM.Size = New System.Drawing.Size(40, 17) - Me.FSM.Text = "000" - Me.FSM.ToolTipText = "Measure Index" - ' - 'FSP1 - ' - Me.FSP1.AutoSize = False - Me.FSP1.Font = New System.Drawing.Font("Segoe UI", 9.0!, System.Drawing.FontStyle.Bold) - Me.FSP1.Name = "FSP1" - Me.FSP1.Size = New System.Drawing.Size(170, 17) - Me.FSP1.Text = "9.41176470588235 / 9999" - Me.FSP1.ToolTipText = "Grid Resolution" - ' - 'FSP3 - ' - Me.FSP3.AutoSize = False - Me.FSP3.Font = New System.Drawing.Font("Segoe UI", 9.0!, System.Drawing.FontStyle.Bold) - Me.FSP3.ForeColor = System.Drawing.Color.Maroon - Me.FSP3.Name = "FSP3" - Me.FSP3.Size = New System.Drawing.Size(85, 17) - Me.FSP3.Text = "9999 / 9999" - Me.FSP3.ToolTipText = "Reduced Resolution" - ' - 'FSP2 - ' - Me.FSP2.AutoSize = False - Me.FSP2.Font = New System.Drawing.Font("Segoe UI", 9.0!, System.Drawing.FontStyle.Bold) - Me.FSP2.ForeColor = System.Drawing.Color.Green - Me.FSP2.Name = "FSP2" - Me.FSP2.Size = New System.Drawing.Size(170, 17) - Me.FSP2.Text = "112.941176470588 / 9999" - Me.FSP2.ToolTipText = "Measure Resolution" - ' - 'FSP4 - ' - Me.FSP4.AutoSize = False - Me.FSP4.Name = "FSP4" - Me.FSP4.Size = New System.Drawing.Size(115, 17) - Me.FSP4.Text = "112.941176470588" - Me.FSP4.ToolTipText = "Absolute Position" - ' - 'TimeStatusLabel - ' - Me.TimeStatusLabel.Name = "TimeStatusLabel" - Me.TimeStatusLabel.Size = New System.Drawing.Size(55, 17) - Me.TimeStatusLabel.Text = "00:00:000" - ' - 'FST - ' - Me.FST.ForeColor = System.Drawing.Color.Olive - Me.FST.LinkColor = System.Drawing.Color.FromArgb(CType(CType(0, Byte), Integer), CType(CType(0, Byte), Integer), CType(CType(255, Byte), Integer)) - Me.FST.Name = "FST" - Me.FST.Size = New System.Drawing.Size(64, 17) - Me.FST.Text = "Length = 0" - ' - 'FSH - ' - Me.FSH.ForeColor = System.Drawing.Color.Blue - Me.FSH.Name = "FSH" - Me.FSH.Size = New System.Drawing.Size(46, 17) - Me.FSH.Text = "Hidden" - ' - 'FSE - ' - Me.FSE.ForeColor = System.Drawing.Color.Red - Me.FSE.Name = "FSE" - Me.FSE.Size = New System.Drawing.Size(32, 17) - Me.FSE.Text = "Error" - ' - 'TimerMiddle - ' - Me.TimerMiddle.Interval = 15 - ' - 'ToolStripContainer1 - ' - ' - 'ToolStripContainer1.ContentPanel - ' - Me.ToolStripContainer1.ContentPanel.Controls.Add(Me.PMain) - Me.ToolStripContainer1.ContentPanel.Controls.Add(Me.SpR) - Me.ToolStripContainer1.ContentPanel.Controls.Add(Me.SpL) - Me.ToolStripContainer1.ContentPanel.Controls.Add(Me.PMainR) - Me.ToolStripContainer1.ContentPanel.Controls.Add(Me.PMainL) - Me.ToolStripContainer1.ContentPanel.Size = New System.Drawing.Size(952, 711) - Me.ToolStripContainer1.Dock = System.Windows.Forms.DockStyle.Fill - Me.ToolStripContainer1.Location = New System.Drawing.Point(0, 0) - Me.ToolStripContainer1.Name = "ToolStripContainer1" - Me.ToolStripContainer1.Size = New System.Drawing.Size(952, 759) - Me.ToolStripContainer1.TabIndex = 65 - Me.ToolStripContainer1.Text = "ToolStripContainer1" - ' - 'ToolStripContainer1.TopToolStripPanel - ' - Me.ToolStripContainer1.TopToolStripPanel.Controls.Add(Me.ToolStrip1) - Me.ToolStripContainer1.TopToolStripPanel.Controls.Add(Me.mnMain) - Me.ToolStripContainer1.TopToolStripPanel.Controls.Add(Me.TBMain) - ' - 'PMain - ' - Me.PMain.BackColor = System.Drawing.Color.Black - Me.PMain.Controls.Add(Me.PMainIn) - Me.PMain.Controls.Add(Me.MainPanelScroll) - Me.PMain.Controls.Add(Me.HS) - Me.PMain.Dock = System.Windows.Forms.DockStyle.Fill - Me.PMain.Font = New System.Drawing.Font("Verdana", 9.0!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) - Me.PMain.ForeColor = System.Drawing.Color.White - Me.PMain.Location = New System.Drawing.Point(5, 0) - Me.PMain.Name = "PMain" - Me.PMain.Size = New System.Drawing.Size(942, 711) - Me.PMain.TabIndex = 58 - Me.PMain.Tag = "1" - ' - 'PMainIn - ' - Me.PMainIn.BackColor = System.Drawing.Color.Black - Me.PMainIn.Dock = System.Windows.Forms.DockStyle.Fill - Me.PMainIn.Font = New System.Drawing.Font("Verdana", 9.0!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) - Me.PMainIn.ForeColor = System.Drawing.Color.White - Me.PMainIn.Location = New System.Drawing.Point(0, 0) - Me.PMainIn.Name = "PMainIn" - Me.PMainIn.Size = New System.Drawing.Size(925, 694) - Me.PMainIn.TabIndex = 0 - Me.PMainIn.TabStop = True - Me.PMainIn.Tag = "1" - ' - 'MainPanelScroll - ' - Me.MainPanelScroll.AccessibleRole = System.Windows.Forms.AccessibleRole.ScrollBar - Me.MainPanelScroll.Dock = System.Windows.Forms.DockStyle.Right - Me.MainPanelScroll.LargeChange = 592 - Me.MainPanelScroll.Location = New System.Drawing.Point(925, 0) - Me.MainPanelScroll.Maximum = 591 - Me.MainPanelScroll.Minimum = -10000 - Me.MainPanelScroll.Name = "MainPanelScroll" - Me.MainPanelScroll.Size = New System.Drawing.Size(17, 694) - Me.MainPanelScroll.SmallChange = 12 - Me.MainPanelScroll.TabIndex = 2 - Me.MainPanelScroll.Tag = "1" - ' - 'HS - ' - Me.HS.AccessibleRole = System.Windows.Forms.AccessibleRole.ScrollBar - Me.HS.Dock = System.Windows.Forms.DockStyle.Bottom - Me.HS.LargeChange = 777 - Me.HS.Location = New System.Drawing.Point(0, 694) - Me.HS.Maximum = 1233 - Me.HS.Name = "HS" - Me.HS.Size = New System.Drawing.Size(942, 17) - Me.HS.TabIndex = 3 - Me.HS.Tag = "1" - ' - 'SpR - ' - Me.SpR.Dock = System.Windows.Forms.DockStyle.Right - Me.SpR.FlatAppearance.BorderSize = 0 - Me.SpR.FlatStyle = System.Windows.Forms.FlatStyle.Flat - Me.SpR.Location = New System.Drawing.Point(947, 0) - Me.SpR.Name = "SpR" - Me.SpR.Size = New System.Drawing.Size(5, 711) - Me.SpR.TabIndex = 59 - Me.SpR.TabStop = False - Me.SpR.UseVisualStyleBackColor = True - Me.SpR.Visible = False - ' - 'SpL - ' - Me.SpL.Dock = System.Windows.Forms.DockStyle.Left - Me.SpL.FlatAppearance.BorderSize = 0 - Me.SpL.FlatStyle = System.Windows.Forms.FlatStyle.Flat - Me.SpL.Location = New System.Drawing.Point(0, 0) - Me.SpL.Name = "SpL" - Me.SpL.Size = New System.Drawing.Size(5, 711) - Me.SpL.TabIndex = 60 - Me.SpL.TabStop = False - Me.SpL.UseVisualStyleBackColor = True - Me.SpL.Visible = False - ' - 'PMainR - ' - Me.PMainR.BackColor = System.Drawing.Color.Black - Me.PMainR.Controls.Add(Me.PMainInR) - Me.PMainR.Controls.Add(Me.RightPanelScroll) - Me.PMainR.Controls.Add(Me.HSR) - Me.PMainR.Dock = System.Windows.Forms.DockStyle.Right - Me.PMainR.Font = New System.Drawing.Font("Verdana", 9.0!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) - Me.PMainR.ForeColor = System.Drawing.Color.White - Me.PMainR.Location = New System.Drawing.Point(952, 0) - Me.PMainR.Name = "PMainR" - Me.PMainR.Size = New System.Drawing.Size(0, 711) - Me.PMainR.TabIndex = 56 - Me.PMainR.Tag = "2" - ' - 'PMainInR - ' - Me.PMainInR.BackColor = System.Drawing.Color.Black - Me.PMainInR.Dock = System.Windows.Forms.DockStyle.Fill - Me.PMainInR.Font = New System.Drawing.Font("Verdana", 9.0!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) - Me.PMainInR.ForeColor = System.Drawing.Color.White - Me.PMainInR.Location = New System.Drawing.Point(0, 0) - Me.PMainInR.Name = "PMainInR" - Me.PMainInR.Size = New System.Drawing.Size(0, 694) - Me.PMainInR.TabIndex = 0 - Me.PMainInR.TabStop = True - Me.PMainInR.Tag = "2" - ' - 'RightPanelScroll - ' - Me.RightPanelScroll.Dock = System.Windows.Forms.DockStyle.Right - Me.RightPanelScroll.LargeChange = 592 - Me.RightPanelScroll.Location = New System.Drawing.Point(-17, 0) - Me.RightPanelScroll.Maximum = 591 - Me.RightPanelScroll.Minimum = -10000 - Me.RightPanelScroll.Name = "RightPanelScroll" - Me.RightPanelScroll.Size = New System.Drawing.Size(17, 694) - Me.RightPanelScroll.SmallChange = 12 - Me.RightPanelScroll.TabIndex = 2 - Me.RightPanelScroll.Tag = "2" - ' - 'HSR - ' - Me.HSR.Dock = System.Windows.Forms.DockStyle.Bottom - Me.HSR.LargeChange = 777 - Me.HSR.Location = New System.Drawing.Point(0, 694) - Me.HSR.Maximum = 1233 - Me.HSR.Name = "HSR" - Me.HSR.Size = New System.Drawing.Size(0, 17) - Me.HSR.TabIndex = 3 - Me.HSR.Tag = "2" - ' - 'PMainL - ' - Me.PMainL.BackColor = System.Drawing.Color.Black - Me.PMainL.Controls.Add(Me.PMainInL) - Me.PMainL.Controls.Add(Me.LeftPanelScroll) - Me.PMainL.Controls.Add(Me.HSL) - Me.PMainL.Dock = System.Windows.Forms.DockStyle.Left - Me.PMainL.Font = New System.Drawing.Font("Verdana", 9.0!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) - Me.PMainL.ForeColor = System.Drawing.Color.White - Me.PMainL.Location = New System.Drawing.Point(0, 0) - Me.PMainL.Name = "PMainL" - Me.PMainL.Size = New System.Drawing.Size(0, 711) - Me.PMainL.TabIndex = 54 - Me.PMainL.Tag = "0" - ' - 'PMainInL - ' - Me.PMainInL.BackColor = System.Drawing.Color.Black - Me.PMainInL.Dock = System.Windows.Forms.DockStyle.Fill - Me.PMainInL.Font = New System.Drawing.Font("Verdana", 9.0!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) - Me.PMainInL.ForeColor = System.Drawing.Color.White - Me.PMainInL.Location = New System.Drawing.Point(0, 0) - Me.PMainInL.Name = "PMainInL" - Me.PMainInL.Size = New System.Drawing.Size(0, 694) - Me.PMainInL.TabIndex = 0 - Me.PMainInL.TabStop = True - Me.PMainInL.Tag = "0" - ' - 'LeftPanelScroll - ' - Me.LeftPanelScroll.Dock = System.Windows.Forms.DockStyle.Right - Me.LeftPanelScroll.LargeChange = 592 - Me.LeftPanelScroll.Location = New System.Drawing.Point(-17, 0) - Me.LeftPanelScroll.Maximum = 591 - Me.LeftPanelScroll.Minimum = -10000 - Me.LeftPanelScroll.Name = "LeftPanelScroll" - Me.LeftPanelScroll.Size = New System.Drawing.Size(17, 694) - Me.LeftPanelScroll.SmallChange = 12 - Me.LeftPanelScroll.TabIndex = 2 - Me.LeftPanelScroll.Tag = "0" - ' - 'HSL - ' - Me.HSL.Dock = System.Windows.Forms.DockStyle.Bottom - Me.HSL.LargeChange = 777 - Me.HSL.Location = New System.Drawing.Point(0, 694) - Me.HSL.Maximum = 1233 - Me.HSL.Name = "HSL" - Me.HSL.Size = New System.Drawing.Size(0, 17) - Me.HSL.TabIndex = 3 - Me.HSL.Tag = "0" - ' - 'POptionsResizer - ' - Me.POptionsResizer.AutoSize = True - Me.POptionsResizer.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink - Me.POptionsResizer.Dock = System.Windows.Forms.DockStyle.Right - Me.POptionsResizer.FlatAppearance.BorderSize = 0 - Me.POptionsResizer.FlatStyle = System.Windows.Forms.FlatStyle.Flat - Me.POptionsResizer.Location = New System.Drawing.Point(952, 0) - Me.POptionsResizer.Name = "POptionsResizer" - Me.POptionsResizer.Size = New System.Drawing.Size(6, 781) - Me.POptionsResizer.TabIndex = 67 - Me.POptionsResizer.TabStop = False - Me.POptionsResizer.UseVisualStyleBackColor = True - ' - 'ToolStrip1 - ' - Me.ToolStrip1.Dock = System.Windows.Forms.DockStyle.None - Me.ToolStrip1.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.TBTotalValue}) - Me.ToolStrip1.Location = New System.Drawing.Point(754, 23) - Me.ToolStrip1.Name = "ToolStrip1" - Me.ToolStrip1.Size = New System.Drawing.Size(56, 25) - Me.ToolStrip1.TabIndex = 0 - Me.ToolStrip1.Text = "ToolStrip1" - ' - 'TBTotalValue - ' - Me.TBTotalValue.Name = "TBTotalValue" - Me.TBTotalValue.Size = New System.Drawing.Size(13, 22) - Me.TBTotalValue.Text = "0" - ' - 'MainWindow - ' - Me.AllowDrop = True - Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None - Me.ClientSize = New System.Drawing.Size(1158, 781) - Me.Controls.Add(Me.ToolStripContainer1) - Me.Controls.Add(Me.pStatus) - Me.Controls.Add(Me.POptionsResizer) - Me.Controls.Add(Me.POptionsScroll) - Me.DoubleBuffered = True - Me.Font = New System.Drawing.Font("Segoe UI", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) - Me.Icon = CType(resources.GetObject("$this.Icon"), System.Drawing.Icon) - Me.KeyPreview = True - Me.MainMenuStrip = Me.mnMain - Me.Name = "MainWindow" - Me.cmnLanguage.ResumeLayout(False) - Me.cmnTheme.ResumeLayout(False) - Me.POptionsScroll.ResumeLayout(False) - Me.POptionsScroll.PerformLayout() - Me.POptions.ResumeLayout(False) - Me.POptions.PerformLayout() - Me.POExpansion.ResumeLayout(False) - Me.POExpansionInner.ResumeLayout(False) - Me.POExpansionInner.PerformLayout() - Me.POBeat.ResumeLayout(False) - Me.POBeatInner.ResumeLayout(False) - Me.POBeatInner.PerformLayout() - Me.TableLayoutPanel7.ResumeLayout(False) - Me.TableLayoutPanel7.PerformLayout() - CType(Me.nBeatD, System.ComponentModel.ISupportInitialize).EndInit() - CType(Me.nBeatN, System.ComponentModel.ISupportInitialize).EndInit() - Me.POBeatPart2.ResumeLayout(False) - Me.POBeatPart2.PerformLayout() - Me.POWAV.ResumeLayout(False) - Me.POWAVInner.ResumeLayout(False) - Me.POWAVInner.PerformLayout() - Me.FlowLayoutPanel3.ResumeLayout(False) - Me.POWAVPart2.ResumeLayout(False) - Me.POWAVPart2.PerformLayout() - Me.POWaveForm.ResumeLayout(False) - Me.POWaveForm.PerformLayout() - Me.POWaveFormInner.ResumeLayout(False) - Me.POWaveFormInner.PerformLayout() - Me.POWaveFormPart2.ResumeLayout(False) - Me.POWaveFormPart2.PerformLayout() - CType(Me.TWSaturation, System.ComponentModel.ISupportInitialize).EndInit() - CType(Me.PictureBox2, System.ComponentModel.ISupportInitialize).EndInit() - CType(Me.TWTransparency, System.ComponentModel.ISupportInitialize).EndInit() - CType(Me.PictureBox3, System.ComponentModel.ISupportInitialize).EndInit() - CType(Me.TWPrecision, System.ComponentModel.ISupportInitialize).EndInit() - CType(Me.PictureBox4, System.ComponentModel.ISupportInitialize).EndInit() - CType(Me.TWWidth, System.ComponentModel.ISupportInitialize).EndInit() - CType(Me.PictureBox5, System.ComponentModel.ISupportInitialize).EndInit() - CType(Me.TWLeft, System.ComponentModel.ISupportInitialize).EndInit() - CType(Me.PictureBox6, System.ComponentModel.ISupportInitialize).EndInit() - CType(Me.TWSaturation2, System.ComponentModel.ISupportInitialize).EndInit() - CType(Me.TWLeft2, System.ComponentModel.ISupportInitialize).EndInit() - CType(Me.TWTransparency2, System.ComponentModel.ISupportInitialize).EndInit() - CType(Me.TWWidth2, System.ComponentModel.ISupportInitialize).EndInit() - CType(Me.TWPrecision2, System.ComponentModel.ISupportInitialize).EndInit() - Me.POWaveFormPart1.ResumeLayout(False) - Me.POWaveFormPart1.PerformLayout() - Me.TableLayoutPanel1.ResumeLayout(False) - Me.TableLayoutPanel1.PerformLayout() - Me.FlowLayoutPanel1.ResumeLayout(False) - Me.TableLayoutPanel6.ResumeLayout(False) - Me.TableLayoutPanel6.PerformLayout() - CType(Me.PictureBox1, System.ComponentModel.ISupportInitialize).EndInit() - CType(Me.TWPosition2, System.ComponentModel.ISupportInitialize).EndInit() - CType(Me.TWPosition, System.ComponentModel.ISupportInitialize).EndInit() - Me.POGrid.ResumeLayout(False) - Me.POGrid.PerformLayout() - Me.POGridInner.ResumeLayout(False) - Me.POGridInner.PerformLayout() - Me.POGridPart2.ResumeLayout(False) - Me.POGridPart2.PerformLayout() - Me.TableLayoutPanel5.ResumeLayout(False) - Me.TableLayoutPanel5.PerformLayout() - Me.FlowLayoutPanel2.ResumeLayout(False) - Me.TableLayoutPanel4.ResumeLayout(False) - Me.TableLayoutPanel4.PerformLayout() - CType(Me.CGB, System.ComponentModel.ISupportInitialize).EndInit() - Me.POGridPart1.ResumeLayout(False) - Me.POGridPart1.PerformLayout() - Me.TableLayoutPanel3.ResumeLayout(False) - Me.TableLayoutPanel3.PerformLayout() - CType(Me.PictureBox9, System.ComponentModel.ISupportInitialize).EndInit() - CType(Me.CGHeight2, System.ComponentModel.ISupportInitialize).EndInit() - CType(Me.CGHeight, System.ComponentModel.ISupportInitialize).EndInit() - CType(Me.PictureBox10, System.ComponentModel.ISupportInitialize).EndInit() - CType(Me.CGWidth2, System.ComponentModel.ISupportInitialize).EndInit() - CType(Me.CGWidth, System.ComponentModel.ISupportInitialize).EndInit() - Me.TableLayoutPanel2.ResumeLayout(False) - Me.TableLayoutPanel2.PerformLayout() - CType(Me.PictureBox7, System.ComponentModel.ISupportInitialize).EndInit() - CType(Me.CGDivide, System.ComponentModel.ISupportInitialize).EndInit() - CType(Me.CGSub, System.ComponentModel.ISupportInitialize).EndInit() - Me.POHeader.ResumeLayout(False) - Me.POHeader.PerformLayout() - Me.POHeaderInner.ResumeLayout(False) - Me.POHeaderInner.PerformLayout() - Me.POHeaderPart2.ResumeLayout(False) - Me.POHeaderPart2.PerformLayout() - Me.POHeaderPart1.ResumeLayout(False) - Me.POHeaderPart1.PerformLayout() - CType(Me.THBPM, System.ComponentModel.ISupportInitialize).EndInit() - Me.Menu1.ResumeLayout(False) - Me.mnMain.ResumeLayout(False) - Me.mnMain.PerformLayout() - Me.cmnConversion.ResumeLayout(False) - Me.TBMain.ResumeLayout(False) - Me.TBMain.PerformLayout() - Me.pStatus.ResumeLayout(False) - Me.pStatus.PerformLayout() - Me.FStatus2.ResumeLayout(False) - Me.FStatus2.PerformLayout() - Me.FStatus.ResumeLayout(False) - Me.FStatus.PerformLayout() - Me.ToolStripContainer1.ContentPanel.ResumeLayout(False) - Me.ToolStripContainer1.TopToolStripPanel.ResumeLayout(False) - Me.ToolStripContainer1.TopToolStripPanel.PerformLayout() - Me.ToolStripContainer1.ResumeLayout(False) - Me.ToolStripContainer1.PerformLayout() - Me.PMain.ResumeLayout(False) - Me.PMainR.ResumeLayout(False) - Me.PMainL.ResumeLayout(False) - Me.ToolStrip1.ResumeLayout(False) - Me.ToolStrip1.PerformLayout() - Me.ResumeLayout(False) - Me.PerformLayout() - - End Sub - Friend WithEvents POptionsScroll As System.Windows.Forms.Panel - Friend WithEvents LWAV As System.Windows.Forms.ListBox - Friend WithEvents Timer1 As System.Windows.Forms.Timer - Friend WithEvents MInsert As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents MRemove As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents Menu1 As System.Windows.Forms.ContextMenuStrip - Friend WithEvents AutoSaveTimer As System.Windows.Forms.Timer - Friend WithEvents mnMain As System.Windows.Forms.MenuStrip - Friend WithEvents mnFile As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents mnNew As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents mnOpen As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents mnImportSM As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents mnImportIBMSC As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents ToolStripSeparator14 As System.Windows.Forms.ToolStripSeparator - Friend WithEvents mnSave As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents mnSaveAs As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents mnExport As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents ToolStripSeparator15 As System.Windows.Forms.ToolStripSeparator - Friend WithEvents mnOpenR0 As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents mnOpenR1 As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents mnOpenR2 As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents mnOpenR3 As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents mnOpenR4 As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents ToolStripSeparator16 As System.Windows.Forms.ToolStripSeparator - Friend WithEvents mnQuit As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents mnEdit As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents mnUndo As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents mnRedo As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents ToolStripSeparator17 As System.Windows.Forms.ToolStripSeparator - Friend WithEvents mnCut As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents mnCopy As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents mnPaste As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents ToolStripSeparator18 As System.Windows.Forms.ToolStripSeparator - Friend WithEvents mnFind As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents mnStatistics As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents mnDelete As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents mnSelectAll As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents mnMyO2 As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents ToolStripSeparator19 As System.Windows.Forms.ToolStripSeparator - Friend WithEvents mnOptions As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents mnPreview As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents mnPlayB As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents mnPlay As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents mnStop As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents mnTimeSelect As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents mnSelect As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents mnWrite As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents ToolStripSeparator23 As System.Windows.Forms.ToolStripSeparator - Friend WithEvents mnConversion As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents mnErrorCheck As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents mnPreviewOnClick As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents mnShowFileName As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents ToolStripSeparator20 As System.Windows.Forms.ToolStripSeparator - Friend WithEvents mnGOptions As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents mnVOptions As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents mnLanguage As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents mnTheme As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents cmnLanguage As System.Windows.Forms.ContextMenuStrip - Friend WithEvents TBLangDef As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents ToolStripSeparator9 As System.Windows.Forms.ToolStripSeparator - Friend WithEvents cmnTheme As System.Windows.Forms.ContextMenuStrip - Friend WithEvents TBThemeDef As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents TBThemeSave As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents TBThemeRefresh As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents ToolStripSeparator6 As System.Windows.Forms.ToolStripSeparator - Friend WithEvents cmnConversion As System.Windows.Forms.ContextMenuStrip - Friend WithEvents POBLong As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents POBShort As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents POBLongShort As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents ToolStripSeparator10 As System.Windows.Forms.ToolStripSeparator - Friend WithEvents POBHidden As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents POBVisible As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents POBHiddenVisible As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents ToolStripSeparator11 As System.Windows.Forms.ToolStripSeparator - Friend WithEvents POBMirror As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents POBFlip As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents POBModify As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents mnSys As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents mnSMenu As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents mnSTB As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents mnSOP As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents mnSStatus As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents mnSLSplitter As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents mnSRSplitter As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents mnNTInput As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents TBLangRefresh As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents CGSub As System.Windows.Forms.NumericUpDown - Friend WithEvents CGDivide As System.Windows.Forms.NumericUpDown - Friend WithEvents PictureBox7 As System.Windows.Forms.PictureBox - Friend WithEvents CGSnap As System.Windows.Forms.CheckBox - Friend WithEvents BWLock As System.Windows.Forms.CheckBox - Friend WithEvents TWSaturation As System.Windows.Forms.NumericUpDown - Friend WithEvents TWTransparency As System.Windows.Forms.NumericUpDown - Friend WithEvents TWPrecision As System.Windows.Forms.NumericUpDown - Friend WithEvents TWWidth As System.Windows.Forms.NumericUpDown - Friend WithEvents TWLeft As System.Windows.Forms.NumericUpDown - Friend WithEvents TWPosition As System.Windows.Forms.NumericUpDown - Friend WithEvents PictureBox5 As System.Windows.Forms.PictureBox - Friend WithEvents PictureBox6 As System.Windows.Forms.PictureBox - Friend WithEvents PictureBox4 As System.Windows.Forms.PictureBox - Friend WithEvents PictureBox3 As System.Windows.Forms.PictureBox - Friend WithEvents PictureBox2 As System.Windows.Forms.PictureBox - Friend WithEvents PictureBox1 As System.Windows.Forms.PictureBox - Friend WithEvents TWSaturation2 As System.Windows.Forms.TrackBar - Friend WithEvents TWTransparency2 As System.Windows.Forms.TrackBar - Friend WithEvents TWPrecision2 As System.Windows.Forms.TrackBar - Friend WithEvents TWWidth2 As System.Windows.Forms.TrackBar - Friend WithEvents TWLeft2 As System.Windows.Forms.TrackBar - Friend WithEvents TWPosition2 As System.Windows.Forms.TrackBar - Friend WithEvents TWFileName As System.Windows.Forms.TextBox - Friend WithEvents BWClear As System.Windows.Forms.Button - Friend WithEvents BWLoad As System.Windows.Forms.Button - Friend WithEvents TBMain As System.Windows.Forms.ToolStrip - Friend WithEvents TBNew As System.Windows.Forms.ToolStripButton - Friend WithEvents TBOpen As System.Windows.Forms.ToolStripSplitButton - Friend WithEvents TBOpenR0 As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents TBOpenR1 As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents TBOpenR2 As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents TBOpenR3 As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents TBOpenR4 As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents ToolStripSeparator12 As System.Windows.Forms.ToolStripSeparator - Friend WithEvents TBImportSM As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents TBImportIBMSC As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents TBSave As System.Windows.Forms.ToolStripSplitButton - Friend WithEvents TBSaveAs As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents TBExport As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents ToolStripSeparator1 As System.Windows.Forms.ToolStripSeparator - Friend WithEvents TBCut As System.Windows.Forms.ToolStripButton - Friend WithEvents TBCopy As System.Windows.Forms.ToolStripButton - Friend WithEvents TBPaste As System.Windows.Forms.ToolStripButton - Friend WithEvents TBFind As System.Windows.Forms.ToolStripButton - Friend WithEvents TBStatistics As System.Windows.Forms.ToolStripButton - Friend WithEvents pStatus As System.Windows.Forms.Panel - Friend WithEvents FStatus As System.Windows.Forms.StatusStrip - Friend WithEvents FSC As System.Windows.Forms.ToolStripStatusLabel - Friend WithEvents FSP1 As System.Windows.Forms.ToolStripStatusLabel - Friend WithEvents FSP2 As System.Windows.Forms.ToolStripStatusLabel - Friend WithEvents FSP3 As System.Windows.Forms.ToolStripStatusLabel - Friend WithEvents FSP4 As System.Windows.Forms.ToolStripStatusLabel - Friend WithEvents FST As System.Windows.Forms.ToolStripStatusLabel - Friend WithEvents FSH As System.Windows.Forms.ToolStripStatusLabel - Friend WithEvents FSE As System.Windows.Forms.ToolStripStatusLabel - Friend WithEvents FStatus2 As System.Windows.Forms.StatusStrip - Friend WithEvents BVCReverse As System.Windows.Forms.ToolStripButton - Friend WithEvents LblMultiply As System.Windows.Forms.ToolStripStatusLabel - Friend WithEvents TVCBPM As System.Windows.Forms.ToolStripTextBox - Friend WithEvents TVCM As System.Windows.Forms.ToolStripTextBox - Friend WithEvents LblDivide As System.Windows.Forms.ToolStripStatusLabel - Friend WithEvents TVCD As System.Windows.Forms.ToolStripTextBox - Friend WithEvents BVCApply As System.Windows.Forms.ToolStripButton - Friend WithEvents BVCCalculate As System.Windows.Forms.ToolStripButton - Friend WithEvents FSW As System.Windows.Forms.ToolStripStatusLabel - Friend WithEvents FSSS As System.Windows.Forms.ToolStripButton - Friend WithEvents FSSL As System.Windows.Forms.ToolStripButton - Friend WithEvents FSSH As System.Windows.Forms.ToolStripButton - Friend WithEvents TExpansion As System.Windows.Forms.TextBox - Friend WithEvents TimerMiddle As System.Windows.Forms.Timer - Friend WithEvents ToolStripSeparator21 As System.Windows.Forms.ToolStripSeparator - Friend WithEvents CGShow As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents CGShowS As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents CGShowBG As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents CGShowM As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents CGShowMB As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents CGShowV As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents CGShowC As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents ToolStripSeparator22 As System.Windows.Forms.ToolStripSeparator - Friend WithEvents CGBLP As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents CGSTOP As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents CGSCROLL As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents nBeatN As System.Windows.Forms.NumericUpDown - Friend WithEvents LBeat As System.Windows.Forms.ListBox - Friend WithEvents Label7 As System.Windows.Forms.Label - Friend WithEvents BBeatApply As System.Windows.Forms.Button - Friend WithEvents mnPOptions As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents ToolStripContainer1 As System.Windows.Forms.ToolStripContainer - Friend WithEvents PMain As System.Windows.Forms.Panel - Friend WithEvents PMainIn As System.Windows.Forms.Panel - Friend WithEvents MainPanelScroll As System.Windows.Forms.VScrollBar - Friend WithEvents HS As System.Windows.Forms.HScrollBar - Friend WithEvents PMainR As System.Windows.Forms.Panel - Friend WithEvents PMainInR As System.Windows.Forms.Panel - Friend WithEvents RightPanelScroll As System.Windows.Forms.VScrollBar - Friend WithEvents HSR As System.Windows.Forms.HScrollBar - Friend WithEvents PMainL As System.Windows.Forms.Panel - Friend WithEvents PMainInL As System.Windows.Forms.Panel - Friend WithEvents LeftPanelScroll As System.Windows.Forms.VScrollBar - Friend WithEvents HSL As System.Windows.Forms.HScrollBar - Friend WithEvents POConvert As System.Windows.Forms.ToolStripDropDownButton - Friend WithEvents TBLanguage As System.Windows.Forms.ToolStripDropDownButton - Friend WithEvents TBTheme As System.Windows.Forms.ToolStripDropDownButton - Friend WithEvents TBMyO2 As System.Windows.Forms.ToolStripButton - Friend WithEvents ToolStripSeparator4 As System.Windows.Forms.ToolStripSeparator - Friend WithEvents TBErrorCheck As System.Windows.Forms.ToolStripButton - Friend WithEvents TBPreviewOnClick As System.Windows.Forms.ToolStripButton - Friend WithEvents TBShowFileName As System.Windows.Forms.ToolStripButton - Friend WithEvents ToolStripSeparator2 As System.Windows.Forms.ToolStripSeparator - Friend WithEvents TBUndo As System.Windows.Forms.ToolStripButton - Friend WithEvents TBRedo As System.Windows.Forms.ToolStripButton - Friend WithEvents ToolStripSeparator5 As System.Windows.Forms.ToolStripSeparator - Friend WithEvents TBNTInput As System.Windows.Forms.ToolStripButton - Friend WithEvents TBTimeSelect As System.Windows.Forms.ToolStripButton - Friend WithEvents TBSelect As System.Windows.Forms.ToolStripButton - Friend WithEvents TBWrite As System.Windows.Forms.ToolStripButton - Friend WithEvents ToolStripSeparator3 As System.Windows.Forms.ToolStripSeparator - Friend WithEvents TBPlayB As System.Windows.Forms.ToolStripButton - Friend WithEvents TBPlay As System.Windows.Forms.ToolStripButton - Friend WithEvents TBStop As System.Windows.Forms.ToolStripButton - Friend WithEvents TBPOptions As System.Windows.Forms.ToolStripButton - Friend WithEvents ToolStripSeparator7 As System.Windows.Forms.ToolStripSeparator - Friend WithEvents TBVOptions As System.Windows.Forms.ToolStripButton - Friend WithEvents TBGOptions As System.Windows.Forms.ToolStripButton - Friend WithEvents POBStorm As System.Windows.Forms.ToolStripButton - Friend WithEvents POptions As System.Windows.Forms.Panel - Friend WithEvents POHeader As System.Windows.Forms.Panel - Friend WithEvents POHeaderSwitch As System.Windows.Forms.CheckBox - Friend WithEvents POGrid As System.Windows.Forms.Panel - Friend WithEvents POGridSwitch As System.Windows.Forms.CheckBox - Friend WithEvents POHeaderInner As System.Windows.Forms.Panel - Friend WithEvents POHeaderPart2 As System.Windows.Forms.TableLayoutPanel - Friend WithEvents THExRank As System.Windows.Forms.TextBox - Friend WithEvents Label25 As System.Windows.Forms.Label - Friend WithEvents CHLnObj As System.Windows.Forms.ComboBox - Friend WithEvents Label23 As System.Windows.Forms.Label - Friend WithEvents Label21 As System.Windows.Forms.Label - Friend WithEvents THComment As System.Windows.Forms.TextBox - Friend WithEvents Label24 As System.Windows.Forms.Label - Friend WithEvents Label15 As System.Windows.Forms.Label - Friend WithEvents THTotal As System.Windows.Forms.TextBox - Friend WithEvents Label20 As System.Windows.Forms.Label - Friend WithEvents BHStageFile As System.Windows.Forms.Button - Friend WithEvents BHBanner As System.Windows.Forms.Button - Friend WithEvents Label19 As System.Windows.Forms.Label - Friend WithEvents BHBackBMP As System.Windows.Forms.Button - Friend WithEvents Label17 As System.Windows.Forms.Label - Friend WithEvents Label16 As System.Windows.Forms.Label - Friend WithEvents Label12 As System.Windows.Forms.Label - Friend WithEvents THBackBMP As System.Windows.Forms.TextBox - Friend WithEvents Label11 As System.Windows.Forms.Label - Friend WithEvents THBanner As System.Windows.Forms.TextBox - Friend WithEvents THStageFile As System.Windows.Forms.TextBox - Friend WithEvents THSubTitle As System.Windows.Forms.TextBox - Friend WithEvents THSubArtist As System.Windows.Forms.TextBox - Friend WithEvents POHeaderExpander As System.Windows.Forms.CheckBox - Friend WithEvents POHeaderPart1 As System.Windows.Forms.TableLayoutPanel - Friend WithEvents Label3 As System.Windows.Forms.Label - Friend WithEvents THPlayLevel As System.Windows.Forms.TextBox - Friend WithEvents CHRank As System.Windows.Forms.ComboBox - Friend WithEvents Label10 As System.Windows.Forms.Label - Friend WithEvents CHPlayer As System.Windows.Forms.ComboBox - Friend WithEvents CHDifficulty As System.Windows.Forms.ComboBox - Friend WithEvents Label4 As System.Windows.Forms.Label - Friend WithEvents THGenre As System.Windows.Forms.TextBox - Friend WithEvents THBPM As System.Windows.Forms.NumericUpDown - Friend WithEvents Label2 As System.Windows.Forms.Label - Friend WithEvents THArtist As System.Windows.Forms.TextBox - Friend WithEvents THTitle As System.Windows.Forms.TextBox - Friend WithEvents Label9 As System.Windows.Forms.Label - Friend WithEvents Label8 As System.Windows.Forms.Label - Friend WithEvents Label6 As System.Windows.Forms.Label - Friend WithEvents POGridPart1 As System.Windows.Forms.TableLayoutPanel - Friend WithEvents TableLayoutPanel2 As System.Windows.Forms.TableLayoutPanel - Friend WithEvents POGridInner As System.Windows.Forms.Panel - Friend WithEvents POGridPart2 As System.Windows.Forms.TableLayoutPanel - Friend WithEvents TableLayoutPanel5 As System.Windows.Forms.TableLayoutPanel - Friend WithEvents cVSLockR As System.Windows.Forms.CheckBox - Friend WithEvents Label5 As System.Windows.Forms.Label - Friend WithEvents cVSLock As System.Windows.Forms.CheckBox - Friend WithEvents cVSLockL As System.Windows.Forms.CheckBox - Friend WithEvents CGDisableVertical As System.Windows.Forms.CheckBox - Friend WithEvents TableLayoutPanel4 As System.Windows.Forms.TableLayoutPanel - Friend WithEvents Label1 As System.Windows.Forms.Label - Friend WithEvents CGB As System.Windows.Forms.NumericUpDown - Friend WithEvents POGridExpander As System.Windows.Forms.CheckBox - Friend WithEvents TableLayoutPanel3 As System.Windows.Forms.TableLayoutPanel - Friend WithEvents PictureBox9 As System.Windows.Forms.PictureBox - Friend WithEvents CGHeight2 As System.Windows.Forms.TrackBar - Friend WithEvents CGHeight As System.Windows.Forms.NumericUpDown - Friend WithEvents PictureBox10 As System.Windows.Forms.PictureBox - Friend WithEvents CGWidth2 As System.Windows.Forms.TrackBar - Friend WithEvents CGWidth As System.Windows.Forms.NumericUpDown - Friend WithEvents POWaveForm As System.Windows.Forms.Panel - Friend WithEvents POWaveFormSwitch As System.Windows.Forms.CheckBox - Friend WithEvents POWaveFormInner As System.Windows.Forms.Panel - Friend WithEvents POWaveFormPart2 As System.Windows.Forms.TableLayoutPanel - Friend WithEvents POWaveFormExpander As System.Windows.Forms.CheckBox - Friend WithEvents POWaveFormPart1 As System.Windows.Forms.TableLayoutPanel - Friend WithEvents TableLayoutPanel1 As System.Windows.Forms.TableLayoutPanel - Friend WithEvents TableLayoutPanel6 As System.Windows.Forms.TableLayoutPanel - Friend WithEvents FlowLayoutPanel1 As System.Windows.Forms.FlowLayoutPanel - Friend WithEvents FlowLayoutPanel2 As System.Windows.Forms.FlowLayoutPanel - Friend WithEvents POWAV As System.Windows.Forms.Panel - Friend WithEvents POWAVInner As System.Windows.Forms.TableLayoutPanel - Friend WithEvents POWAVSwitch As System.Windows.Forms.CheckBox - Friend WithEvents POBeat As System.Windows.Forms.Panel - Friend WithEvents POBeatInner As System.Windows.Forms.TableLayoutPanel - Friend WithEvents POBeatSwitch As System.Windows.Forms.CheckBox - Friend WithEvents FlowLayoutPanel3 As System.Windows.Forms.FlowLayoutPanel - Friend WithEvents BWAVUp As System.Windows.Forms.Button - Friend WithEvents BWAVDown As System.Windows.Forms.Button - Friend WithEvents BWAVBrowse As System.Windows.Forms.Button - Friend WithEvents BWAVRemove As System.Windows.Forms.Button - Friend WithEvents POExpansion As System.Windows.Forms.Panel - Friend WithEvents POExpansionInner As System.Windows.Forms.Panel - Friend WithEvents POExpansionSwitch As System.Windows.Forms.CheckBox - Friend WithEvents POWAVResizer As System.Windows.Forms.Button - Friend WithEvents TableLayoutPanel7 As System.Windows.Forms.TableLayoutPanel - Friend WithEvents POExpansionResizer As System.Windows.Forms.Button - Friend WithEvents POBeatResizer As System.Windows.Forms.Button - Friend WithEvents POptionsResizer As System.Windows.Forms.Button - Friend WithEvents SpR As System.Windows.Forms.Button - Friend WithEvents SpL As System.Windows.Forms.Button - Friend WithEvents TBThemeLoadComptability As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents POWAVExpander As System.Windows.Forms.CheckBox - Friend WithEvents POWAVPart2 As System.Windows.Forms.TableLayoutPanel - Friend WithEvents CWAVMultiSelect As System.Windows.Forms.CheckBox - Friend WithEvents CWAVChangeLabel As System.Windows.Forms.CheckBox - Friend WithEvents nBeatD As System.Windows.Forms.NumericUpDown - Friend WithEvents BBeatApplyV As System.Windows.Forms.Button - Friend WithEvents tBeatValue As System.Windows.Forms.TextBox - Friend WithEvents POBeatExpander As System.Windows.Forms.CheckBox - Friend WithEvents POBeatPart2 As System.Windows.Forms.TableLayoutPanel - Friend WithEvents CBeatScale As System.Windows.Forms.RadioButton - Friend WithEvents CBeatCut As System.Windows.Forms.RadioButton - Friend WithEvents CBeatMeasure As System.Windows.Forms.RadioButton - Friend WithEvents CBeatPreserve As System.Windows.Forms.RadioButton - Friend WithEvents Label13 As System.Windows.Forms.Label - Friend WithEvents ToolTipUniversal As System.Windows.Forms.ToolTip - Friend WithEvents CGBPM As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents BGSlash As System.Windows.Forms.Button - Friend WithEvents FSM As System.Windows.Forms.ToolStripStatusLabel - Friend WithEvents mnGotoMeasure As ToolStripMenuItem - Friend WithEvents ToolStripSeparator24 As ToolStripSeparator - Friend WithEvents ToolStripSeparator8 As ToolStripSeparator - Friend WithEvents TBWavIncrease As ToolStripButton - Friend WithEvents TimeStatusLabel As ToolStripStatusLabel - Friend WithEvents BConvertStop As ToolStripButton - Friend WithEvents POBRandom As ToolStripMenuItem - Friend WithEvents POBSRandom As ToolStripMenuItem - Friend WithEvents ToolStrip1 As ToolStrip - Friend WithEvents TBTotalValue As ToolStripLabel -End Class From ec5bebd025aec64c6d44a61a1bd99a730e146cfa Mon Sep 17 00:00:00 2001 From: psyk2642 <60137590+psyk2642@users.noreply.github.com> Date: Sun, 1 Nov 2020 14:13:21 +0800 Subject: [PATCH 011/257] Delete MainWindow.vb --- MainWindow.vb | 4675 ------------------------------------------------- 1 file changed, 4675 deletions(-) delete mode 100644 MainWindow.vb diff --git a/MainWindow.vb b/MainWindow.vb deleted file mode 100644 index f40669d14..000000000 --- a/MainWindow.vb +++ /dev/null @@ -1,4675 +0,0 @@ -Imports System.Linq -Imports iBMSC.Editor - - -Public Class MainWindow - - - 'Public Structure MARGINS - ' Public Left As Integer - ' Public Right As Integer - ' Public Top As Integer - ' Public Bottom As Integer - 'End Structure - - ' _ - 'Public Shared Function DwmIsCompositionEnabled(ByRef en As Integer) As Integer - 'End Function - ' _ - 'Public Shared Function DwmExtendFrameIntoClientArea(ByVal hwnd As IntPtr, ByRef margin As MARGINS) As Integer - 'End Function - Public Declare Function SendMessage Lib "user32.dll" Alias "SendMessageA" (ByVal hwnd As IntPtr, ByVal wMsg As Integer, ByVal wParam As Integer, ByVal lParam As Integer) As Integer - Public Declare Function ReleaseCapture Lib "user32.dll" Alias "ReleaseCapture" () As Integer - - 'Private Declare Auto Function GetWindowLong Lib "user32" (ByVal hWnd As IntPtr, ByVal nIndex As Integer) As Integer - 'Private Declare Auto Function SetWindowLong Lib "user32" (ByVal hWnd As IntPtr, ByVal nIndex As Integer, ByVal dwNewLong As Integer) As Integer - 'Private Declare Function SetWindowPos Lib "user32.dll" (ByVal hWnd As IntPtr, ByVal hWndInsertAfter As IntPtr, ByVal x As Integer, ByVal y As Integer, ByVal cx As Integer, ByVal cy As Integer, ByVal wFlags As Integer) As Integer - ' _ - 'Private Shared Function SetWindowText(ByVal hwnd As IntPtr, ByVal lpString As String) As Boolean - 'End Function - - 'Private Const GWL_STYLE As Integer = -16 - 'Private Const WS_CAPTION As Integer = &HC00000 - 'Private Const SWP_NOSIZE As Integer = &H1 - 'Private Const SWP_NOMOVE As Integer = &H2 - 'Private Const SWP_NOZORDER As Integer = &H4 - 'Private Const SWP_NOACTIVATE As Integer = &H10 - 'Private Const SWP_FRAMECHANGED As Integer = &H20 - 'Private Const SWP_REFRESH As Integer = SWP_NOZORDER Or SWP_NOSIZE Or SWP_NOMOVE Or SWP_NOACTIVATE Or SWP_FRAMECHANGED - - - Dim MeasureLength(999) As Double - Dim MeasureBottom(999) As Double - - Public Function MeasureUpper(idx As Integer) As Double - Return MeasureBottom(idx) + MeasureLength(idx) - End Function - - - Dim Notes() As Note = {New Note(niBPM, -1, 1200000, 0, False)} - Dim mColumn(999) As Integer '0 = no column, 1 = 1 column, etc. - Dim GreatestVPosition As Double '+ 2000 = -VS.Minimum - - Dim VSValue As Integer = 0 'Store value before ValueChange event - Dim HSValue As Integer = 0 'Store value before ValueChange event - - 'Dim SortingMethod As Integer = 1 - Dim MiddleButtonMoveMethod As Integer = 0 - Dim TextEncoding As System.Text.Encoding = System.Text.Encoding.UTF8 - Dim DispLang As String = "" 'Display Language - Dim Recent() As String = {"", "", "", "", ""} - Dim NTInput As Boolean = True - Dim ShowFileName As Boolean = False - - Dim BeepWhileSaved As Boolean = True - Dim BPMx1296 As Boolean = False - Dim STOPx1296 As Boolean = False - - Dim IsInitializing As Boolean = True - Dim FirstMouseEnter As Boolean = True - - Dim WAVMultiSelect As Boolean = True - Dim WAVChangeLabel As Boolean = True - Dim BeatChangeMode As Integer = 0 - - 'Dim FloatTolerance As Double = 0.0001R - Dim BMSGridLimit As Double = 1.0R - - Dim LnObj As Integer = 0 '0 for none, 1-1295 for 01-ZZ - - 'IO - Dim FileName As String = "Untitled.bms" - 'Dim TitlePath As New Drawing2D.GraphicsPath - Dim InitPath As String = "" - Dim IsSaved As Boolean = True - - 'Variables for Drag/Drop - Dim DDFileName() As String = {} - Dim SupportedFileExtension() As String = {".bms", ".bme", ".bml", ".pms", ".txt", ".sm", ".ibmsc"} - Dim SupportedAudioExtension() As String = {".wav", ".mp3", ".ogg"} - - 'Variables for theme - 'Dim SaveTheme As Boolean = True - - 'Variables for undo/redo - Dim sUndo(99) As UndoRedo.LinkedURCmd - Dim sRedo(99) As UndoRedo.LinkedURCmd - Dim sI As Integer = 0 - - 'Variables for select tool - Dim DisableVerticalMove As Boolean = False - Dim KMouseOver As Integer = -1 'Mouse is on which note (for drawing green outline) - Dim LastMouseDownLocation As PointF = New Point(-1, -1) 'Mouse is clicked on which point (location for display) (for selection box) - Dim pMouseMove As PointF = New Point(-1, -1) 'Mouse is moved to which point (location for display) (for selection box) - 'Dim KMouseDown As Integer = -1 'Mouse is clicked on which note (for moving) - Dim deltaVPosition As Double = 0 'difference between mouse and VPosition of K - Dim bAdjustLength As Boolean 'If adjusting note length instead of moving it - Dim bAdjustUpper As Boolean 'true = Adjusting upper end, false = adjusting lower end - Dim bAdjustSingle As Boolean 'true if there is only one note to be adjusted - Dim tempY As Integer - Dim tempV As Integer - Dim tempX As Integer - Dim tempH As Integer - Dim MiddleButtonLocation As New Point(0, 0) - Dim MiddleButtonClicked As Boolean = False - Dim MouseMoveStatus As Point = New Point(0, 0) 'mouse is moved to which point (For Status Panel) - 'Dim uCol As Integer 'temp variables for undo, original enabled columnindex - 'Dim uVPos As Double 'temp variables for undo, original vposition - 'Dim uPairWithI As Double 'temp variables for undo, original note length - Dim uAdded As Boolean 'temp variables for undo, if undo command is added - 'Dim uNote As Note 'temp variables for undo, original note - Dim SelectedNotes(-1) As Note 'temp notes for undo - Dim ctrlPressed As Boolean = False 'Indicates if the CTRL key is pressed while mousedown - Dim DuplicatedSelectedNotes As Boolean = False 'Indicates if duplicate notes of select/unselect note - - 'Variables for write tool - Dim ShouldDrawTempNote As Boolean = False - Dim SelectedColumn As Integer = -1 - Dim TempVPosition As Double = -1.0# - Dim TempLength As Double = 0.0# - - 'Variables for post effects tool - Dim vSelStart As Double = 192.0# - Dim vSelLength As Double = 0.0# - Dim vSelHalf As Double = 0.0# - Dim vSelMouseOverLine As Integer = 0 '0 = nothing, 1 = start, 2 = half, 3 = end - Dim vSelAdjust As Boolean = False - Dim vSelK() As Note = {} - Dim vSelPStart As Double = 192.0# - Dim vSelPLength As Double = 0.0# - Dim vSelPHalf As Double = 0.0# - - 'Variables for Full-Screen Mode - Dim isFullScreen As Boolean = False - Dim previousWindowState As FormWindowState = FormWindowState.Normal - Dim previousWindowPosition As New Rectangle(0, 0, 0, 0) - - 'Variables misc - Dim menuVPosition As Double = 0.0# - Dim tempResize As Integer = 0 - - '----AutoSave Options - Dim PreviousAutoSavedFileName As String = "" - Dim AutoSaveInterval As Integer = 120000 - - '----ErrorCheck Options - Dim ErrorCheck As Boolean = True - - '----Header Options - Dim hWAV(1295) As String - Dim hBPM(1295) As Long 'x10000 - Dim hSTOP(1295) As Long - Dim hSCROLL(1295) As Long - - '----Grid Options - Dim gSnap As Boolean = True - Dim gShowGrid As Boolean = True 'Grid - Dim gShowSubGrid As Boolean = True 'Sub - Dim gShowBG As Boolean = True 'BG Color - Dim gShowMeasureNumber As Boolean = True 'Measure Label - Dim gShowVerticalLine As Boolean = True 'Vertical - Dim gShowMeasureBar As Boolean = True 'Measure Barline - Dim gShowC As Boolean = True 'Column Caption - Dim gDivide As Integer = 16 - Dim gSub As Integer = 4 - Dim gSlash As Integer = 192 - Dim gxHeight As Single = 1.0! - Dim gxWidth As Single = 1.0! - Dim gWheel As Integer = 96 - Dim gPgUpDn As Integer = 384 - - Dim gDisplayBGAColumn As Boolean = True - Dim gSCROLL As Boolean = True - Dim gSTOP As Boolean = True - Dim gBPM As Boolean = True - 'Dim gA8 As Boolean = False - Dim iPlayer As Integer = 0 - Dim gColumns As Integer = 46 - - '----Visual Options - Dim vo As New visualSettings() - - Public Sub setVO(ByVal xvo As visualSettings) - vo = xvo - End Sub - - '----Preview Options - Structure PlayerArguments - Public Path As String - Public aBegin As String - Public aHere As String - Public aStop As String - Public Sub New(ByVal xPath As String, ByVal xBegin As String, ByVal xHere As String, ByVal xStop As String) - Path = xPath - aBegin = xBegin - aHere = xHere - aStop = xStop - End Sub - End Structure - - Public pArgs() As PlayerArguments = {New PlayerArguments("\uBMplay.exe", - "-P -N0 """"", - "-P -N """"", - "-S"), - New PlayerArguments("\o2play.exe", - "-P -N0 """"", - "-P -N """"", - "-S")} - Public CurrentPlayer As Integer = 0 - Dim PreviewOnClick As Boolean = True - Dim PreviewErrorCheck As Boolean = False - Dim ClickStopPreview As Boolean = True - Dim pTempFileNames() As String = {} - - '----Split Panel Options - Dim PanelWidth() As Single = {0, 100, 0} - Dim PanelHScroll() As Integer = {0, 0, 0} - Dim PanelVScroll() As Integer = {0, 0, 0} - Dim spLock() As Boolean = {False, False, False} - Dim spDiff() As Integer = {0, 0, 0} - Dim PanelFocus As Integer = 1 '0 = Left, 1 = Middle, 2 = Right - Dim spMouseOver As Integer = 1 - - Dim AutoFocusMouseEnter As Boolean = False - Dim FirstClickDisabled As Boolean = True - Dim tempFirstMouseDown As Boolean = False - - Dim spMain() As Panel = {} - - '----Find Delete Replace Options - Dim fdriMesL As Integer - Dim fdriMesU As Integer - Dim fdriLblL As Integer - Dim fdriLblU As Integer - Dim fdriValL As Integer - Dim fdriValU As Integer - Dim fdriCol() As Integer - - - Public Sub New() - InitializeComponent() - Audio.Initialize() - End Sub - - ''' - ''' - ''' - ''' Original horizontal position. - ''' HS.Value - - - Private Function HorizontalPositiontoDisplay(ByVal xHPosition As Integer, ByVal xHSVal As Long) As Integer - Return CInt(xHPosition * gxWidth - xHSVal * gxWidth) - End Function - - ''' - ''' - ''' - ''' Original vertical position. - ''' VS.Value - ''' Height of the panel. (DisplayRectangle, but not ClipRectangle) - - - Private Function NoteRowToPanelHeight(ByVal xVPosition As Double, ByVal xVSVal As Long, ByVal xTHeight As Integer) As Integer - Return xTHeight - CInt((xVPosition + xVSVal) * gxHeight) - 1 - End Function - - Public Function MeasureAtDisplacement(ByVal xVPos As Double) As Integer - 'Return Math.Floor((xVPos + FloatTolerance) / 192) - 'Return Math.Floor(xVPos / 192) - Dim xI1 As Integer - For xI1 = 1 To 999 - If xVPos < MeasureBottom(xI1) Then Exit For - Next - Return xI1 - 1 - End Function - - Private Function GetMaxVPosition() As Double - Return MeasureUpper(999) - End Function - - Private Function SnapToGrid(ByVal xVPos As Double) As Double - Dim xOffset As Double = MeasureBottom(MeasureAtDisplacement(xVPos)) - Dim xRatio As Double = 192.0R / gDivide - Return Math.Floor((xVPos - xOffset) / xRatio) * xRatio + xOffset - End Function - - Private Sub CalculateGreatestVPosition() - 'If K Is Nothing Then Exit Sub - Dim xI1 As Integer - GreatestVPosition = 0 - - If NTInput Then - For xI1 = UBound(Notes) To 0 Step -1 - If Notes(xI1).VPosition + Notes(xI1).Length > GreatestVPosition Then GreatestVPosition = Notes(xI1).VPosition + Notes(xI1).Length - Next - Else - For xI1 = UBound(Notes) To 0 Step -1 - If Notes(xI1).VPosition > GreatestVPosition Then GreatestVPosition = Notes(xI1).VPosition - Next - End If - - Dim xI2 As Integer = -CInt(IIf(GreatestVPosition + 2000 > GetMaxVPosition(), GetMaxVPosition, GreatestVPosition + 2000)) - MainPanelScroll.Minimum = xI2 - LeftPanelScroll.Minimum = xI2 - RightPanelScroll.Minimum = xI2 - End Sub - - - Private Sub SortByVPositionInsertion() 'Insertion Sort - If UBound(Notes) <= 0 Then Exit Sub - Dim xNote As Note - Dim xI1 As Integer - Dim xI2 As Integer - For xI1 = 2 To UBound(Notes) - xNote = Notes(xI1) - For xI2 = xI1 - 1 To 1 Step -1 - If Notes(xI2).VPosition > xNote.VPosition Then - Notes(xI2 + 1) = Notes(xI2) - ' If KMouseDown = xI2 Then KMouseDown += 1 - If xI2 = 1 Then - Notes(xI2) = xNote - ' If KMouseDown = xI1 Then KMouseDown = xI2 - Exit For - End If - Else - Notes(xI2 + 1) = xNote - ' If KMouseDown = xI1 Then KMouseDown = xI2 + 1 - Exit For - End If - Next - Next - - End Sub - - Private Sub SortByVPositionQuick(ByVal xMin As Integer, ByVal xMax As Integer) 'Quick Sort - Dim xNote As Note - Dim iHi As Integer - Dim iLo As Integer - Dim xI1 As Integer - - ' If min >= max, the list contains 0 or 1 items so it is sorted. - If xMin >= xMax Then Exit Sub - - ' Pick the dividing value. - xI1 = CInt((xMax - xMin) / 2) + xMin - xNote = Notes(xI1) - - ' Swap it to the front. - Notes(xI1) = Notes(xMin) - - iLo = xMin - iHi = xMax - Do - ' Look down from hi for a value < med_value. - Do While Notes(iHi).VPosition >= xNote.VPosition - iHi = iHi - 1 - If iHi <= iLo Then Exit Do - Loop - If iHi <= iLo Then - Notes(iLo) = xNote - Exit Do - End If - - ' Swap the lo and hi values. - Notes(iLo) = Notes(iHi) - - ' Look up from lo for a value >= med_value. - iLo = iLo + 1 - Do While Notes(iLo).VPosition < xNote.VPosition - iLo = iLo + 1 - If iLo >= iHi Then Exit Do - Loop - If iLo >= iHi Then - iLo = iHi - Notes(iHi) = xNote - Exit Do - End If - - ' Swap the lo and hi values. - Notes(iHi) = Notes(iLo) - Loop - - ' Sort the two sublists. - SortByVPositionQuick(xMin, iLo - 1) - SortByVPositionQuick(iLo + 1, xMax) - End Sub - - Private Sub SortByVPositionQuick3(ByVal xMin As Integer, ByVal xMax As Integer) - Dim xxMin As Integer - Dim xxMax As Integer - Dim xxMid As Integer - Dim xNote As Note - Dim xNoteMid As Note - Dim xI1 As Integer - Dim xI2 As Integer - Dim xI3 As Integer - - 'If xMax = 0 Then - ' xMin = LBound(K1) - ' xMax = UBound(K1) - 'End If - xxMin = xMin - xxMax = xMax - xxMid = xMax - xMin + 1 - xI1 = CInt(Int(xxMid * Rnd())) + xMin - xI2 = CInt(Int(xxMid * Rnd())) + xMin - xI3 = CInt(Int(xxMid * Rnd())) + xMin - If Notes(xI1).VPosition <= Notes(xI2).VPosition And Notes(xI2).VPosition <= Notes(xI3).VPosition Then - xxMid = xI2 - Else - If Notes(xI2).VPosition <= Notes(xI1).VPosition And Notes(xI1).VPosition <= Notes(xI3).VPosition Then - xxMid = xI1 - Else - xxMid = xI3 - End If - End If - xNoteMid = Notes(xxMid) - Do - Do While Notes(xxMin).VPosition < xNoteMid.VPosition And xxMin < xMax - xxMin = xxMin + 1 - Loop - Do While xNoteMid.VPosition < Notes(xxMax).VPosition And xxMax > xMin - xxMax = xxMax - 1 - Loop - If xxMin <= xxMax Then - xNote = Notes(xxMin) - Notes(xxMin) = Notes(xxMax) - Notes(xxMax) = xNote - xxMin = xxMin + 1 - xxMax = xxMax - 1 - End If - Loop Until xxMin > xxMax - If xxMax - xMin < xMax - xxMin Then - If xMin < xxMax Then SortByVPositionQuick3(xMin, xxMax) - If xxMin < xMax Then SortByVPositionQuick3(xxMin, xMax) - Else - If xxMin < xMax Then SortByVPositionQuick3(xxMin, xMax) - If xMin < xxMax Then SortByVPositionQuick3(xMin, xxMax) - End If - End Sub - - - Private Sub UpdateMeasureBottom() - MeasureBottom(0) = 0.0# - For xI1 As Integer = 0 To 998 - MeasureBottom(xI1 + 1) = MeasureBottom(xI1) + MeasureLength(xI1) - Next - End Sub - - Private Function PathIsValid(ByVal sPath As String) As Boolean - Return File.Exists(sPath) Or Directory.Exists(sPath) - End Function - - Public Function PrevCodeToReal(ByVal InitStr As String) As String - Dim xFileName As String = IIf(Not PathIsValid(FileName), - IIf(InitPath = "", My.Application.Info.DirectoryPath, InitPath), - ExcludeFileName(FileName)) _ - & "\___TempBMS.bms" - Dim xMeasure As Integer = MeasureAtDisplacement(Math.Abs(PanelVScroll(PanelFocus))) - Dim xS1 As String = Replace(InitStr, "", My.Application.Info.DirectoryPath) - Dim xS2 As String = Replace(xS1, "", xMeasure) - Dim xS3 As String = Replace(xS2, "", xFileName) - Return xS3 - End Function - - Private Sub SetFileName(ByVal xFileName As String) - FileName = xFileName.Trim - InitPath = ExcludeFileName(FileName) - SetIsSaved(IsSaved) - End Sub - - Private Sub SetIsSaved(ByVal isSaved As Boolean) - 'pttl.Refresh() - 'pIsSaved.Visible = Not xBool - Dim xVersion As String = My.Application.Info.Version.Major & "." & My.Application.Info.Version.Minor & - IIf(My.Application.Info.Version.Build = 0, "", "." & My.Application.Info.Version.Build) - Text = IIf(isSaved, "", "*") & GetFileName(FileName) & " - " & My.Application.Info.Title & " " & xVersion - Me.IsSaved = isSaved - End Sub - - Private Sub PreviewNote(ByVal xFileLocation As String, ByVal bStop As Boolean) - If bStop Then - Audio.StopPlaying() - End If - Audio.Play(xFileLocation) - End Sub - - Private Sub AddNote(note As Note, - Optional ByVal xSelected As Boolean = False, - Optional ByVal OverWrite As Boolean = True, - Optional ByVal SortAndUpdatePairing As Boolean = True) - - If note.VPosition < 0 Or note.VPosition >= GetMaxVPosition() Then Exit Sub - - Dim xI1 As Integer = 1 - - If OverWrite Then - Do While xI1 <= UBound(Notes) - If Notes(xI1).VPosition = note.VPosition And - Notes(xI1).ColumnIndex = note.ColumnIndex Then - RemoveNote(xI1) - Else - xI1 += 1 - End If - Loop - End If - - ReDim Preserve Notes(UBound(Notes) + 1) - note.Selected = note.Selected And nEnabled(note.ColumnIndex) - Notes(UBound(Notes)) = note - - If SortAndUpdatePairing Then SortByVPositionInsertion() : UpdatePairing() - CalculateTotalPlayableNotes() - End Sub - - Private Sub RemoveNote(ByVal I As Integer, Optional ByVal SortAndUpdatePairing As Boolean = True) - KMouseOver = -1 - Dim xI2 As Integer - - If TBWavIncrease.Checked Then - If Notes(I).Value = LWAV.SelectedIndex * 10000 Then - DecreaseCurrentWav() - End If - End If - - For xI2 = I + 1 To UBound(Notes) - Notes(xI2 - 1) = Notes(xI2) - Next - ReDim Preserve Notes(UBound(Notes) - 1) - If SortAndUpdatePairing Then SortByVPositionInsertion() : UpdatePairing() - - End Sub - - Private Sub AddNotesFromClipboard(Optional ByVal xSelected As Boolean = True, Optional ByVal SortAndUpdatePairing As Boolean = True) - Dim xStrLine() As String = Split(Clipboard.GetText, vbCrLf) - - Dim xI1 As Integer - For xI1 = 0 To UBound(Notes) - Notes(xI1).Selected = False - Next - - Dim xVS As Long = PanelVScroll(PanelFocus) - Dim xTempVP As Double - Dim xKbu() As Note = Notes - - If xStrLine(0) = "iBMSC Clipboard Data" Then - If NTInput Then ReDim Preserve Notes(0) - - 'paste - Dim xStrSub() As String - For xI1 = 1 To UBound(xStrLine) - If xStrLine(xI1).Trim = "" Then Continue For - xStrSub = Split(xStrLine(xI1), " ") - xTempVP = Val(xStrSub(1)) + MeasureBottom(MeasureAtDisplacement(-xVS) + 1) - If UBound(xStrSub) = 5 And xTempVP >= 0 And xTempVP < GetMaxVPosition() Then - ReDim Preserve Notes(UBound(Notes) + 1) - With Notes(UBound(Notes)) - .ColumnIndex = Val(xStrSub(0)) - .VPosition = xTempVP - .Value = Val(xStrSub(2)) - .LongNote = CBool(Val(xStrSub(3))) - .Hidden = CBool(Val(xStrSub(4))) - .Landmine = CBool(Val(xStrSub(5))) - .Selected = xSelected - End With - End If - Next - - 'convert - If NTInput Then - ConvertBMSE2NT() - - For xI1 = 1 To UBound(Notes) - Notes(xI1 - 1) = Notes(xI1) - Next - ReDim Preserve Notes(UBound(Notes) - 1) - - Dim xKn() As Note = Notes - Notes = xKbu - - Dim xIStart As Integer = Notes.Length - ReDim Preserve Notes(UBound(Notes) + xKn.Length) - - For xI1 = xIStart To UBound(Notes) - Notes(xI1) = xKn(xI1 - xIStart) - Next - End If - - ElseIf xStrLine(0) = "iBMSC Clipboard Data xNT" Then - If Not NTInput Then ReDim Preserve Notes(0) - - 'paste - Dim xStrSub() As String - For xI1 = 1 To UBound(xStrLine) - If xStrLine(xI1).Trim = "" Then Continue For - xStrSub = Split(xStrLine(xI1), " ") - xTempVP = Val(xStrSub(1)) + MeasureBottom(MeasureAtDisplacement(-xVS) + 1) - If UBound(xStrSub) = 5 And xTempVP >= 0 And xTempVP < GetMaxVPosition() Then - ReDim Preserve Notes(UBound(Notes) + 1) - With Notes(UBound(Notes)) - .ColumnIndex = Val(xStrSub(0)) - .VPosition = xTempVP - .Value = Val(xStrSub(2)) - .Length = Val(xStrSub(3)) - .Hidden = CBool(Val(xStrSub(4))) - .Landmine = CBool(Val(xStrSub(5))) - .Selected = xSelected - End With - End If - Next - - 'convert - If Not NTInput Then - ConvertNT2BMSE() - - For xI1 = 1 To UBound(Notes) - Notes(xI1 - 1) = Notes(xI1) - Next - ReDim Preserve Notes(UBound(Notes) - 1) - - Dim xKn() As Note = Notes - Notes = xKbu - - Dim xIStart As Integer = Notes.Length - ReDim Preserve Notes(UBound(Notes) + xKn.Length) - - For xI1 = xIStart To UBound(Notes) - Notes(xI1) = xKn(xI1 - xIStart) - Next - End If - - ElseIf xStrLine(0) = "BMSE ClipBoard Object Data Format" Then - If NTInput Then ReDim Preserve Notes(0) - - 'paste - For xI1 = 1 To UBound(xStrLine) - ' zdr: holy crap this is obtuse - Dim posStr = Mid(xStrLine(xI1), 5, 7) - Dim vPos = Val(posStr) + MeasureBottom(MeasureAtDisplacement(-xVS) + 1) - - Dim bmsIdent = Mid(xStrLine(xI1), 1, 3) - Dim lineCol = BMSEChannelToColumnIndex(bmsIdent) - - Dim Value = Val(Mid(xStrLine(xI1), 12)) * 10000 - - Dim attribute = Mid(xStrLine(xI1), 4, 1) - - Dim validCol = Len(xStrLine(xI1)) > 11 And lineCol > 0 - Dim inRange = vPos >= 0 And vPos < GetMaxVPosition() - If validCol And inRange Then - ReDim Preserve Notes(UBound(Notes) + 1) - - With Notes(UBound(Notes)) - .ColumnIndex = lineCol - .VPosition = vPos - .Value = Value - .LongNote = attribute = "2" - .Hidden = attribute = "1" - .Selected = xSelected And nEnabled(.ColumnIndex) - End With - End If - Next - - 'convert - If NTInput Then - ConvertBMSE2NT() - - For xI1 = 1 To UBound(Notes) - Notes(xI1 - 1) = Notes(xI1) - Next - ReDim Preserve Notes(UBound(Notes) - 1) - - Dim xKn() As Note = Notes - Notes = xKbu - - Dim xIStart As Integer = Notes.Length - ReDim Preserve Notes(UBound(Notes) + xKn.Length) - - For xI1 = xIStart To UBound(Notes) - Notes(xI1) = xKn(xI1 - xIStart) - Next - End If - End If - - If SortAndUpdatePairing Then SortByVPositionInsertion() : UpdatePairing() - CalculateTotalPlayableNotes() - End Sub - - Private Sub CopyNotes(Optional ByVal Unselect As Boolean = True) - Dim xStrAll As String = "iBMSC Clipboard Data" & IIf(NTInput, " xNT", "") - Dim xI1 As Integer - Dim MinMeasure As Double = 999 - - For xI1 = 1 To UBound(Notes) - If Notes(xI1).Selected And MeasureAtDisplacement(Notes(xI1).VPosition) < MinMeasure Then MinMeasure = MeasureAtDisplacement(Notes(xI1).VPosition) - Next - MinMeasure = MeasureBottom(MinMeasure) - - If Not NTInput Then - For xI1 = 1 To UBound(Notes) - If Notes(xI1).Selected Then - xStrAll &= vbCrLf & Notes(xI1).ColumnIndex.ToString & " " & - (Notes(xI1).VPosition - MinMeasure).ToString & " " & - Notes(xI1).Value.ToString & " " & - CInt(Notes(xI1).LongNote).ToString & " " & - CInt(Notes(xI1).Hidden).ToString & " " & - CInt(Notes(xI1).Landmine).ToString - Notes(xI1).Selected = Not Unselect - End If - Next - - Else - For xI1 = 1 To UBound(Notes) - If Notes(xI1).Selected Then - xStrAll &= vbCrLf & Notes(xI1).ColumnIndex.ToString & " " & - (Notes(xI1).VPosition - MinMeasure).ToString & " " & - Notes(xI1).Value.ToString & " " & - Notes(xI1).Length.ToString & " " & - CInt(Notes(xI1).Hidden).ToString & " " & - CInt(Notes(xI1).Landmine).ToString - Notes(xI1).Selected = Not Unselect - End If - Next - End If - - Clipboard.SetText(xStrAll) - End Sub - - Private Sub RemoveNotes(Optional ByVal SortAndUpdatePairing As Boolean = True) - If UBound(Notes) = 0 Then Exit Sub - - KMouseOver = -1 - Dim xI1 As Integer = 1 - Dim xI2 As Integer - Do - If Notes(xI1).Selected Then - For xI2 = xI1 + 1 To UBound(Notes) - Notes(xI2 - 1) = Notes(xI2) - Next - ReDim Preserve Notes(UBound(Notes) - 1) - xI1 = 0 - End If - xI1 += 1 - Loop While xI1 < UBound(Notes) + 1 - If SortAndUpdatePairing Then SortByVPositionInsertion() : UpdatePairing() - CalculateTotalPlayableNotes() - End Sub - - Private Function EnabledColumnIndexToColumnArrayIndex(ByVal cEnabled As Integer) As Integer - Dim xI1 As Integer = 0 - Do - If xI1 >= gColumns Then Exit Do - If Not nEnabled(xI1) Then cEnabled += 1 - If xI1 >= cEnabled Then Exit Do - xI1 += 1 - Loop - Return cEnabled - End Function - - Private Function ColumnArrayIndexToEnabledColumnIndex(ByVal cReal As Integer) As Integer - Dim xI1 As Integer - For xI1 = 0 To cReal - 1 - If Not nEnabled(xI1) Then cReal -= 1 - Next - Return cReal - End Function - - Private Sub Form1_FormClosed(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosedEventArgs) Handles Me.FormClosed - If pTempFileNames IsNot Nothing Then - For Each xStr As String In pTempFileNames - IO.File.Delete(xStr) - Next - End If - If PreviousAutoSavedFileName <> "" Then IO.File.Delete(PreviousAutoSavedFileName) - End Sub - - Private Sub Form1_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing - If Not IsSaved Then - Dim xStr As String = Strings.Messages.SaveOnExit - If e.CloseReason = CloseReason.WindowsShutDown Then xStr = Strings.Messages.SaveOnExit1 - If e.CloseReason = CloseReason.TaskManagerClosing Then xStr = Strings.Messages.SaveOnExit2 - - Dim xResult As MsgBoxResult = MsgBox(xStr, MsgBoxStyle.YesNoCancel Or MsgBoxStyle.Question, Me.Text) - - If xResult = MsgBoxResult.Yes Then - If ExcludeFileName(FileName) = "" Then - Dim xDSave As New SaveFileDialog - xDSave.Filter = Strings.FileType._bms & "|*.bms;*.bme;*.bml;*.pms;*.txt|" & - Strings.FileType.BMS & "|*.bms|" & - Strings.FileType.BME & "|*.bme|" & - Strings.FileType.BML & "|*.bml|" & - Strings.FileType.PMS & "|*.pms|" & - Strings.FileType.TXT & "|*.txt|" & - Strings.FileType._all & "|*.*" - xDSave.DefaultExt = "bms" - xDSave.InitialDirectory = InitPath - - If xDSave.ShowDialog = Windows.Forms.DialogResult.Cancel Then e.Cancel = True : Exit Sub - SetFileName(xDSave.FileName) - End If - Dim xStrAll As String = SaveBMS() - My.Computer.FileSystem.WriteAllText(FileName, xStrAll, False, TextEncoding) - NewRecent(FileName) - If BeepWhileSaved Then Beep() - End If - - If xResult = MsgBoxResult.Cancel Then e.Cancel = True - End If - - If Not e.Cancel Then - 'If SaveTheme Then - ' My.Computer.FileSystem.WriteAllText(My.Application.Info.DirectoryPath & "\Skin.cff", SaveSkinCFF, False, System.Text.Encoding.Unicode) - 'Else - ' My.Computer.FileSystem.WriteAllText(My.Application.Info.DirectoryPath & "\Skin.cff", "", False, System.Text.Encoding.Unicode) - 'End If - ' - 'My.Computer.FileSystem.WriteAllText(My.Application.Info.DirectoryPath & "\PlayerArgs.cff", SavePlayerCFF, False, System.Text.Encoding.Unicode) - 'My.Computer.FileSystem.WriteAllText(My.Application.Info.DirectoryPath & "\Config.cff", SaveCFF, False, System.Text.Encoding.Unicode) - 'My.Computer.FileSystem.WriteAllText(My.Application.Info.DirectoryPath & "\PreConfig.cff", "", False, System.Text.Encoding.Unicode) - Me.SaveSettings(My.Application.Info.DirectoryPath & "\iBMSC.Settings.xml", False) - End If - End Sub - - Private Function FilterFileBySupported(ByVal xFile() As String, ByVal xFilter() As String) As String() - Dim xPath(-1) As String - For xI1 As Integer = 0 To UBound(xFile) - If My.Computer.FileSystem.FileExists(xFile(xI1)) And Array.IndexOf(xFilter, Path.GetExtension(xFile(xI1))) <> -1 Then - ReDim Preserve xPath(UBound(xPath) + 1) - xPath(UBound(xPath)) = xFile(xI1) - End If - - If My.Computer.FileSystem.DirectoryExists(xFile(xI1)) Then - Dim xFileNames() As FileInfo = My.Computer.FileSystem.GetDirectoryInfo(xFile(xI1)).GetFiles() - For Each xStr As FileInfo In xFileNames - If Array.IndexOf(xFilter, xStr.Extension) = -1 Then Continue For - ReDim Preserve xPath(UBound(xPath) + 1) - xPath(UBound(xPath)) = xStr.FullName - Next - End If - Next - - Return xPath - End Function - - Private Sub InitializeNewBMS() - 'ReDim K(0) - 'With K(0) - ' .ColumnIndex = niBPM - ' .VPosition = -1 - ' .LongNote = False - ' .Selected = False - ' .Value = 1200000 - 'End With - - THTitle.Text = "" - THArtist.Text = "" - THGenre.Text = "" - THBPM.Value = 120 - If CHPlayer.SelectedIndex = -1 Then CHPlayer.SelectedIndex = 0 - CHRank.SelectedIndex = 3 - THPlayLevel.Text = "" - THSubTitle.Text = "" - THSubArtist.Text = "" - THStageFile.Text = "" - THBanner.Text = "" - THBackBMP.Text = "" - CHDifficulty.SelectedIndex = 0 - THExRank.Text = "" - THTotal.Text = "" - THComment.Text = "" - 'THLnType.Text = "1" - CHLnObj.SelectedIndex = 0 - - TExpansion.Text = "" - - LBeat.Items.Clear() - For xI1 As Integer = 0 To 999 - MeasureLength(xI1) = 192.0R - MeasureBottom(xI1) = xI1 * 192.0R - LBeat.Items.Add(Add3Zeros(xI1) & ": 1 ( 4 / 4 )") - Next - End Sub - - Private Sub InitializeOpenBMS() - CHPlayer.SelectedIndex = 0 - 'THLnType.Text = "" - End Sub - - Private Sub Form1_DragEnter(ByVal sender As Object, ByVal e As DragEventArgs) Handles Me.DragEnter - If e.Data.GetDataPresent(DataFormats.FileDrop) Then - e.Effect = DragDropEffects.Copy - DDFileName = FilterFileBySupported(CType(e.Data.GetData(DataFormats.FileDrop), String()), SupportedFileExtension) - Else - e.Effect = DragDropEffects.None - End If - RefreshPanelAll() - End Sub - - Private Sub Form1_DragLeave(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.DragLeave - ReDim DDFileName(-1) - RefreshPanelAll() - End Sub - - Private Sub Form1_DragDrop(ByVal sender As Object, ByVal e As DragEventArgs) Handles Me.DragDrop - ReDim DDFileName(-1) - If Not e.Data.GetDataPresent(DataFormats.FileDrop) Then Return - - Dim xOrigPath() As String = CType(e.Data.GetData(DataFormats.FileDrop), String()) - Dim xPath() As String = FilterFileBySupported(xOrigPath, SupportedFileExtension) - If xPath.Length > 0 Then - Dim xProg As New fLoadFileProgress(xPath, IsSaved) - xProg.ShowDialog(Me) - End If - - RefreshPanelAll() - End Sub - - Private Sub setFullScreen(ByVal value As Boolean) - If value Then - If Me.WindowState = FormWindowState.Minimized Then Exit Sub - - Me.SuspendLayout() - previousWindowPosition.Location = Me.Location - previousWindowPosition.Size = Me.Size - previousWindowState = Me.WindowState - - Me.WindowState = FormWindowState.Normal - Me.FormBorderStyle = Windows.Forms.FormBorderStyle.None - Me.WindowState = FormWindowState.Maximized - ToolStripContainer1.TopToolStripPanelVisible = False - - Me.ResumeLayout() - isFullScreen = True - Else - Me.SuspendLayout() - Me.FormBorderStyle = Windows.Forms.FormBorderStyle.Sizable - ToolStripContainer1.TopToolStripPanelVisible = True - Me.WindowState = FormWindowState.Normal - - Me.WindowState = previousWindowState - If Me.WindowState = FormWindowState.Normal Then - Me.Location = previousWindowPosition.Location - Me.Size = previousWindowPosition.Size - End If - - Me.ResumeLayout() - isFullScreen = False - End If - End Sub - - Private Sub Form1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown - Select Case e.KeyCode - Case Keys.F11 - setFullScreen(Not isFullScreen) - End Select - End Sub - - Private Sub Form1_KeyUp(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyUp - RefreshPanelAll() - POStatusRefresh() - End Sub - - Friend Sub ReadFile(ByVal xPath As String) - Select Case LCase(Path.GetExtension(xPath)) - Case ".bms", ".bme", ".bml", ".pms", ".txt" - OpenBMS(My.Computer.FileSystem.ReadAllText(xPath, TextEncoding)) - ClearUndo() - NewRecent(xPath) - SetFileName(xPath) - SetIsSaved(True) - - Case ".sm" - If OpenSM(My.Computer.FileSystem.ReadAllText(xPath, TextEncoding)) Then Return - InitPath = ExcludeFileName(xPath) - ClearUndo() - SetFileName("Untitled.bms") - SetIsSaved(False) - - Case ".ibmsc" - OpeniBMSC(xPath) - InitPath = ExcludeFileName(xPath) - NewRecent(xPath) - SetFileName("Imported_" & GetFileName(xPath)) - SetIsSaved(False) - - End Select - End Sub - - - Public Function GCD(ByVal NumA As Double, ByVal NumB As Double) As Double - Dim xNMax As Double = NumA - Dim xNMin As Double = NumB - If NumA < NumB Then - xNMax = NumB - xNMin = NumA - End If - Do While xNMin >= BMSGridLimit - GCD = xNMax - Math.Floor(xNMax / xNMin) * xNMin - xNMax = xNMin - xNMin = GCD - Loop - GCD = xNMax - End Function - - Private Shared Function LoadCursorFromFile(ByVal fileName As String) As IntPtr - End Function - Public Shared Function ActuallyLoadCursor(ByVal path As String) As Cursor - Return New Cursor(LoadCursorFromFile(path)) - End Function - - Private Sub Unload() Handles MyBase.Disposed - Audio.Finalize() - End Sub - - Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load - 'On Error Resume Next - Me.TopMost = True - Me.SuspendLayout() - Me.Visible = False - - 'POBMP.Dispose() - 'POBGA.Dispose() - - 'Me.MaximizedBounds = Screen.GetWorkingArea(Me) - 'Me.Visible = False - SetFileName(FileName) - 'Me.ShowCaption = False - 'SetWindowText(Me.Handle.ToInt32, FileName) - - InitializeNewBMS() - 'nBeatD.SelectedIndex = 4 - - Try - Dim xTempFileName As String = RandomFileName(".cur") - My.Computer.FileSystem.WriteAllBytes(xTempFileName, My.Resources.CursorResizeDown, False) - Dim xDownCursor As Cursor = ActuallyLoadCursor(xTempFileName) - My.Computer.FileSystem.WriteAllBytes(xTempFileName, My.Resources.CursorResizeLeft, False) - Dim xLeftCursor As Cursor = ActuallyLoadCursor(xTempFileName) - My.Computer.FileSystem.WriteAllBytes(xTempFileName, My.Resources.CursorResizeRight, False) - Dim xRightCursor As Cursor = ActuallyLoadCursor(xTempFileName) - File.Delete(xTempFileName) - - POWAVResizer.Cursor = xDownCursor - POBeatResizer.Cursor = xDownCursor - POExpansionResizer.Cursor = xDownCursor - - POptionsResizer.Cursor = xLeftCursor - - SpL.Cursor = xRightCursor - SpR.Cursor = xLeftCursor - Catch ex As Exception - - End Try - - spMain = New Panel() {PMainInL, PMainIn, PMainInR} - - Dim xI1 As Integer - - sUndo(0) = New UndoRedo.NoOperation - sUndo(1) = New UndoRedo.NoOperation - sRedo(0) = New UndoRedo.NoOperation - sRedo(1) = New UndoRedo.NoOperation - sI = 0 - - LWAV.Items.Clear() - For xI1 = 1 To 1295 - LWAV.Items.Add(C10to36(xI1) & ":") - Next - LWAV.SelectedIndex = 0 - CHPlayer.SelectedIndex = 0 - - CalculateGreatestVPosition() - TBLangRefresh_Click(TBLangRefresh, Nothing) - TBThemeRefresh_Click(TBThemeRefresh, Nothing) - - POHeaderPart2.Visible = False - POGridPart2.Visible = False - POWaveFormPart2.Visible = False - - If My.Computer.FileSystem.FileExists(My.Application.Info.DirectoryPath & "\iBMSC.Settings.xml") Then - LoadSettings(My.Application.Info.DirectoryPath & "\iBMSC.Settings.xml") - 'Else - '---- Settings for first-time start-up --------------------------------------------------------------------------- - 'Me.LoadLocale(My.Application.Info.DirectoryPath & "\Data\chs.Lang.xml") - '----------------------------------------------------------------------------------------------------------------- - End If - 'On Error GoTo 0 - SetIsSaved(True) - - Dim xStr() As String = Environment.GetCommandLineArgs - 'Dim xStr() As String = {Application.ExecutablePath, "C:\Users\User\Desktop\yang run xuan\SoFtwArES\Games\O2Mania\music\SHOOT!\shoot! -NM-.bms"} - - If xStr.Length = 2 Then - ReadFile(xStr(1)) - If LCase(Path.GetExtension(xStr(1))) = ".ibmsc" AndAlso GetFileName(xStr(1)).StartsWith("AutoSave_", True, Nothing) Then GoTo 1000 - End If - - 'pIsSaved.Visible = Not IsSaved - IsInitializing = False - - If Process.GetProcessesByName(Process.GetCurrentProcess.ProcessName).Length > 1 Then GoTo 1000 - Dim xFiles() As FileInfo = My.Computer.FileSystem.GetDirectoryInfo(My.Application.Info.DirectoryPath).GetFiles("AutoSave_*.IBMSC") - If xFiles Is Nothing OrElse xFiles.Length = 0 Then GoTo 1000 - - 'Me.TopMost = True - If MsgBox(Replace(Strings.Messages.RestoreAutosavedFile, "{}", xFiles.Length), MsgBoxStyle.YesNo Or MsgBoxStyle.MsgBoxSetForeground) = MsgBoxResult.Yes Then - For Each xF As FileInfo In xFiles - 'MsgBox(xF.FullName) - System.Diagnostics.Process.Start(Application.ExecutablePath, """" & xF.FullName & """") - Next - End If - - For Each xF As FileInfo In xFiles - ReDim Preserve pTempFileNames(UBound(pTempFileNames) + 1) - pTempFileNames(UBound(pTempFileNames)) = xF.FullName - Next - -1000: - IsInitializing = False - POStatusRefresh() - Me.ResumeLayout() - - tempResize = Me.WindowState - Me.TopMost = False - Me.WindowState = tempResize - - Me.Visible = True - End Sub - - Private Sub UpdatePairing() - Dim i As Integer, j As Integer - - If NTInput Then - For i = 0 To UBound(Notes) - Notes(i).HasError = False - Notes(i).LNPair = 0 - If Notes(i).Length < 0 Then Notes(i).Length = 0 - Next - - For i = 1 To UBound(Notes) - If Notes(i).Length <> 0 Then - For j = i + 1 To UBound(Notes) - If Notes(j).VPosition > Notes(i).VPosition + Notes(i).Length Then Exit For - If Notes(j).ColumnIndex = Notes(i).ColumnIndex Then Notes(j).HasError = True - Next - Else - For j = i + 1 To UBound(Notes) - If Notes(j).VPosition > Notes(i).VPosition Then Exit For - If Notes(j).ColumnIndex = Notes(i).ColumnIndex Then Notes(j).HasError = True - Next - - If Notes(i).Value \ 10000 = LnObj AndAlso Not IsColumnNumeric(Notes(i).ColumnIndex) Then - For j = i - 1 To 1 Step -1 - If Notes(j).ColumnIndex <> Notes(i).ColumnIndex Then Continue For - If Notes(j).Hidden Then Continue For - - If Notes(j).Length <> 0 OrElse Notes(j).Value \ 10000 = LnObj Then - Notes(i).HasError = True - Else - Notes(i).LNPair = j - Notes(j).LNPair = i - End If - Exit For - Next - If j = 0 Then - Notes(i).HasError = True - End If - End If - End If - Next - - Else - For i = 0 To UBound(Notes) - Notes(i).HasError = False - Notes(i).LNPair = 0 - Next - - For i = 1 To UBound(Notes) - - If Notes(i).LongNote Then - 'LongNote: If overlapping a note, then error. - ' Else if already matched by a LongNote below, then match it. - ' Otherwise match anything above. - ' If ShortNote above then error on above. - ' If nothing above then error. - For j = i - 1 To 1 Step -1 - If Notes(j).ColumnIndex <> Notes(i).ColumnIndex Then Continue For - If Notes(j).VPosition = Notes(i).VPosition Then - Notes(i).HasError = True - GoTo EndSearch - ElseIf Notes(j).LongNote And Notes(j).LNPair = i Then - Notes(i).LNPair = j - GoTo EndSearch - Else - Exit For - End If - Next - - For j = i + 1 To UBound(Notes) - If Notes(j).ColumnIndex <> Notes(i).ColumnIndex Then Continue For - Notes(i).LNPair = j - Notes(j).LNPair = i - If Not Notes(j).LongNote AndAlso Notes(j).Value \ 10000 <> LnObj Then - Notes(j).HasError = True - End If - Exit For - Next - - If j = UBound(Notes) + 1 Then - Notes(i).HasError = True - End If -EndSearch: - - ElseIf Notes(i).Value \ 10000 = LnObj And - Not IsColumnNumeric(Notes(i).ColumnIndex) Then - 'LnObj: Match anything below. - ' If matching a LongNote not matching back, then error on below. - ' If overlapping a note, then error. - ' If mathcing a LnObj below, then error on below. - ' If nothing below, then error. - For j = i - 1 To 1 Step -1 - If Notes(i).ColumnIndex <> Notes(j).ColumnIndex Then Continue For - If Notes(j).LNPair <> 0 And Notes(j).LNPair <> i Then - Notes(j).HasError = True - End If - Notes(i).LNPair = j - Notes(j).LNPair = i - If Notes(i).VPosition = Notes(j).VPosition Then - Notes(i).HasError = True - End If - If Notes(j).Value \ 10000 = LnObj Then - Notes(j).HasError = True - End If - Exit For - Next - - If j = 0 Then - Notes(i).HasError = True - End If - - Else - 'ShortNote: If overlapping a note, then error. - For j = i - 1 To 1 Step -1 - If Notes(j).VPosition < Notes(i).VPosition Then Exit For - If Notes(j).ColumnIndex <> Notes(i).ColumnIndex Then Continue For - Notes(i).HasError = True - Exit For - Next - - End If - Next - - - End If - - Dim currentMS = 0.0# - Dim currentBPM = Notes(0).Value / 10000 - Dim currentBPMVPosition = 0.0# - For i = 1 To UBound(Notes) - If Notes(i).ColumnIndex = niBPM Then - currentMS += (Notes(i).VPosition - currentBPMVPosition) / currentBPM * 1250 - currentBPM = Notes(i).Value / 10000 - currentBPMVPosition = Notes(i).VPosition - End If - 'K(i).TimeOffset = currentMS + (K(i).VPosition - currentBPMVPosition) / currentBPM * 1250 - Next - End Sub - - - - Public Sub ExceptionSave(ByVal Path As String) - SaveiBMSC(Path) - End Sub - - ''' - ''' True if pressed cancel. False elsewise. - ''' - ''' True if pressed cancel. False elsewise. - - Private Function ClosingPopSave() As Boolean - If Not IsSaved Then - Dim xResult As MsgBoxResult = MsgBox(Strings.Messages.SaveOnExit, MsgBoxStyle.YesNoCancel Or MsgBoxStyle.Question, Me.Text) - - If xResult = MsgBoxResult.Yes Then - If ExcludeFileName(FileName) = "" Then - Dim xDSave As New SaveFileDialog - xDSave.Filter = Strings.FileType._bms & "|*.bms;*.bme;*.bml;*.pms;*.txt|" & - Strings.FileType.BMS & "|*.bms|" & - Strings.FileType.BME & "|*.bme|" & - Strings.FileType.BML & "|*.bml|" & - Strings.FileType.PMS & "|*.pms|" & - Strings.FileType.TXT & "|*.txt|" & - Strings.FileType._all & "|*.*" - xDSave.DefaultExt = "bms" - xDSave.InitialDirectory = InitPath - - If xDSave.ShowDialog = Windows.Forms.DialogResult.Cancel Then Return True - SetFileName(xDSave.FileName) - End If - Dim xStrAll As String = SaveBMS() - My.Computer.FileSystem.WriteAllText(FileName, xStrAll, False, TextEncoding) - NewRecent(FileName) - If BeepWhileSaved Then Beep() - End If - - If xResult = MsgBoxResult.Cancel Then Return True - End If - Return False - End Function - - Private Sub TBNew_Click(ByVal sender As System.Object, ByVal e As EventArgs) Handles TBNew.Click, mnNew.Click - - 'KMouseDown = -1 - ReDim SelectedNotes(-1) - KMouseOver = -1 - If ClosingPopSave() Then Exit Sub - - ClearUndo() - InitializeNewBMS() - - ReDim Notes(0) - ReDim mColumn(999) - ReDim hWAV(1295) - ReDim hBPM(1295) 'x10000 - ReDim hSTOP(1295) - ReDim hSCROLL(1295) - THGenre.Text = "" - THTitle.Text = "" - THArtist.Text = "" - THPlayLevel.Text = "" - - With Notes(0) - .ColumnIndex = niBPM - .VPosition = -1 - '.LongNote = False - '.Selected = False - .Value = 1200000 - End With - THBPM.Value = 120 - - LWAV.Items.Clear() - Dim xI1 As Integer - For xI1 = 1 To 1295 - LWAV.Items.Add(C10to36(xI1) & ": " & hWAV(xI1)) - Next - LWAV.SelectedIndex = 0 - - SetFileName("Untitled.bms") - SetIsSaved(True) - 'pIsSaved.Visible = Not IsSaved - - CalculateTotalPlayableNotes() - CalculateGreatestVPosition() - RefreshPanelAll() - POStatusRefresh() - End Sub - - Private Sub TBNewC_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) 'Handles TBNewC.Click - 'KMouseDown = -1 - ReDim SelectedNotes(-1) - KMouseOver = -1 - If ClosingPopSave() Then Exit Sub - - ClearUndo() - - ReDim Notes(0) - ReDim mColumn(999) - ReDim hWAV(1295) - ReDim hBPM(1295) 'x10000 - ReDim hSTOP(1295) - ReDim hSCROLL(1295) - THGenre.Text = "" - THTitle.Text = "" - THArtist.Text = "" - THPlayLevel.Text = "" - - With Notes(0) - .ColumnIndex = niBPM - .VPosition = -1 - '.LongNote = False - '.Selected = False - .Value = 1200000 - End With - THBPM.Value = 120 - - SetFileName("Untitled.bms") - SetIsSaved(True) - 'pIsSaved.Visible = Not IsSaved - - If MsgBox("Please copy your code to clipboard and click OK.", MsgBoxStyle.OkCancel, "Create from code") = MsgBoxResult.Cancel Then Exit Sub - OpenBMS(Clipboard.GetText) - End Sub - - Private Sub TBOpen_ButtonClick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBOpen.ButtonClick, mnOpen.Click - 'KMouseDown = -1 - ReDim SelectedNotes(-1) - KMouseOver = -1 - If ClosingPopSave() Then Exit Sub - - Dim xDOpen As New OpenFileDialog - xDOpen.Filter = Strings.FileType._bms & "|*.bms;*.bme;*.bml;*.pms;*.txt" - xDOpen.DefaultExt = "bms" - xDOpen.InitialDirectory = IIf(ExcludeFileName(FileName) = "", InitPath, ExcludeFileName(FileName)) - - If xDOpen.ShowDialog = Windows.Forms.DialogResult.Cancel Then Exit Sub - InitPath = ExcludeFileName(xDOpen.FileName) - OpenBMS(My.Computer.FileSystem.ReadAllText(xDOpen.FileName, TextEncoding)) - ClearUndo() - SetFileName(xDOpen.FileName) - NewRecent(FileName) - SetIsSaved(True) - 'pIsSaved.Visible = Not IsSaved - End Sub - - Private Sub TBImportIBMSC_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBImportIBMSC.Click, mnImportIBMSC.Click - 'KMouseDown = -1 - ReDim SelectedNotes(-1) - KMouseOver = -1 - If ClosingPopSave() Then Return - - Dim xDOpen As New OpenFileDialog - xDOpen.Filter = Strings.FileType.IBMSC & "|*.ibmsc" - xDOpen.DefaultExt = "ibmsc" - xDOpen.InitialDirectory = IIf(ExcludeFileName(FileName) = "", InitPath, ExcludeFileName(FileName)) - - If xDOpen.ShowDialog = Windows.Forms.DialogResult.Cancel Then Return - InitPath = ExcludeFileName(xDOpen.FileName) - SetFileName("Imported_" & GetFileName(xDOpen.FileName)) - OpeniBMSC(xDOpen.FileName) - NewRecent(xDOpen.FileName) - SetIsSaved(False) - 'pIsSaved.Visible = Not IsSaved - End Sub - - Private Sub TBImportSM_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBImportSM.Click, mnImportSM.Click - 'KMouseDown = -1 - ReDim SelectedNotes(-1) - KMouseOver = -1 - If ClosingPopSave() Then Exit Sub - - Dim xDOpen As New OpenFileDialog - xDOpen.Filter = Strings.FileType.SM & "|*.sm" - xDOpen.DefaultExt = "sm" - xDOpen.InitialDirectory = IIf(ExcludeFileName(FileName) = "", InitPath, ExcludeFileName(FileName)) - - If xDOpen.ShowDialog = Windows.Forms.DialogResult.Cancel Then Exit Sub - If OpenSM(My.Computer.FileSystem.ReadAllText(xDOpen.FileName, TextEncoding)) Then Exit Sub - InitPath = ExcludeFileName(xDOpen.FileName) - SetFileName("Untitled.bms") - ClearUndo() - SetIsSaved(False) - 'pIsSaved.Visible = Not IsSaved - End Sub - - Private Sub TBSave_ButtonClick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBSave.ButtonClick, mnSave.Click - 'KMouseDown = -1 - ReDim SelectedNotes(-1) - KMouseOver = -1 - - If ExcludeFileName(FileName) = "" Then - Dim xDSave As New SaveFileDialog - xDSave.Filter = Strings.FileType._bms & "|*.bms;*.bme;*.bml;*.pms;*.txt|" & - Strings.FileType.BMS & "|*.bms|" & - Strings.FileType.BME & "|*.bme|" & - Strings.FileType.BML & "|*.bml|" & - Strings.FileType.PMS & "|*.pms|" & - Strings.FileType.TXT & "|*.txt|" & - Strings.FileType._all & "|*.*" - xDSave.DefaultExt = "bms" - xDSave.InitialDirectory = InitPath - - If xDSave.ShowDialog = Windows.Forms.DialogResult.Cancel Then Exit Sub - InitPath = ExcludeFileName(xDSave.FileName) - SetFileName(xDSave.FileName) - End If - Dim xStrAll As String = SaveBMS() - My.Computer.FileSystem.WriteAllText(FileName, xStrAll, False, TextEncoding) - NewRecent(FileName) - SetFileName(FileName) - SetIsSaved(True) - 'pIsSaved.Visible = Not IsSaved - If BeepWhileSaved Then Beep() - End Sub - - Private Sub TBSaveAs_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBSaveAs.Click, mnSaveAs.Click - 'KMouseDown = -1 - ReDim SelectedNotes(-1) - KMouseOver = -1 - - Dim xDSave As New SaveFileDialog - xDSave.Filter = Strings.FileType._bms & "|*.bms;*.bme;*.bml;*.pms;*.txt|" & - Strings.FileType.BMS & "|*.bms|" & - Strings.FileType.BME & "|*.bme|" & - Strings.FileType.BML & "|*.bml|" & - Strings.FileType.PMS & "|*.pms|" & - Strings.FileType.TXT & "|*.txt|" & - Strings.FileType._all & "|*.*" - xDSave.DefaultExt = "bms" - xDSave.InitialDirectory = IIf(ExcludeFileName(FileName) = "", InitPath, ExcludeFileName(FileName)) - - If xDSave.ShowDialog = Windows.Forms.DialogResult.Cancel Then Exit Sub - InitPath = ExcludeFileName(xDSave.FileName) - SetFileName(xDSave.FileName) - Dim xStrAll As String = SaveBMS() - My.Computer.FileSystem.WriteAllText(FileName, xStrAll, False, TextEncoding) - NewRecent(FileName) - SetFileName(FileName) - SetIsSaved(True) - 'pIsSaved.Visible = Not IsSaved - If BeepWhileSaved Then Beep() - End Sub - - Private Sub TBExport_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBExport.Click, mnExport.Click - 'KMouseDown = -1 - ReDim SelectedNotes(-1) - KMouseOver = -1 - - Dim xDSave As New SaveFileDialog - xDSave.Filter = Strings.FileType.IBMSC & "|*.ibmsc" - xDSave.DefaultExt = "ibmsc" - xDSave.InitialDirectory = IIf(ExcludeFileName(FileName) = "", InitPath, ExcludeFileName(FileName)) - If xDSave.ShowDialog = Windows.Forms.DialogResult.Cancel Then Exit Sub - - SaveiBMSC(xDSave.FileName) - 'My.Computer.FileSystem.WriteAllText(xDSave.FileName, xStrAll, False, TextEncoding) - NewRecent(FileName) - If BeepWhileSaved Then Beep() - End Sub - - - - Private Sub VSGotFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles MainPanelScroll.GotFocus, LeftPanelScroll.GotFocus, RightPanelScroll.GotFocus - PanelFocus = sender.Tag - spMain(PanelFocus).Focus() - End Sub - - Private Sub VSValueChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles MainPanelScroll.ValueChanged, LeftPanelScroll.ValueChanged, RightPanelScroll.ValueChanged - Dim iI As Integer = sender.Tag - - ' az: We got a wheel event when we're zooming in/out - If My.Computer.Keyboard.CtrlKeyDown Then - sender.Value = VSValue ' Undo the scroll - Exit Sub - End If - - If iI = PanelFocus And Not LastMouseDownLocation = New Point(-1, -1) And Not VSValue = -1 Then LastMouseDownLocation.Y += (VSValue - sender.Value) * gxHeight - PanelVScroll(iI) = sender.Value - - If spLock((iI + 1) Mod 3) Then - Dim xVS As Integer = PanelVScroll(iI) + spDiff(iI) - If xVS > 0 Then xVS = 0 - If xVS < MainPanelScroll.Minimum Then xVS = MainPanelScroll.Minimum - Select Case iI - Case 0 : MainPanelScroll.Value = xVS - Case 1 : RightPanelScroll.Value = xVS - Case 2 : LeftPanelScroll.Value = xVS - End Select - End If - - If spLock((iI + 2) Mod 3) Then - Dim xVS As Integer = PanelVScroll(iI) - spDiff((iI + 2) Mod 3) - If xVS > 0 Then xVS = 0 - If xVS < MainPanelScroll.Minimum Then xVS = MainPanelScroll.Minimum - Select Case iI - Case 0 : RightPanelScroll.Value = xVS - Case 1 : LeftPanelScroll.Value = xVS - Case 2 : MainPanelScroll.Value = xVS - End Select - End If - - spDiff(iI) = PanelVScroll((iI + 1) Mod 3) - PanelVScroll(iI) - spDiff((iI + 2) Mod 3) = PanelVScroll(iI) - PanelVScroll((iI + 2) Mod 3) - - VSValue = sender.Value - RefreshPanel(iI, spMain(iI).DisplayRectangle) - End Sub - - Private Sub cVSLock_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cVSLockL.CheckedChanged, cVSLock.CheckedChanged, cVSLockR.CheckedChanged - Dim iI As Integer = sender.Tag - spLock(iI) = sender.Checked - If Not spLock(iI) Then Return - - spDiff(iI) = PanelVScroll((iI + 1) Mod 3) - PanelVScroll(iI) - spDiff((iI + 2) Mod 3) = PanelVScroll(iI) - PanelVScroll((iI + 2) Mod 3) - - 'POHeaderB.Text = spDiff(0) & "_" & spDiff(1) & "_" & spDiff(2) - End Sub - - Private Sub HSGotFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles HS.GotFocus, HSL.GotFocus, HSR.GotFocus - PanelFocus = sender.Tag - spMain(PanelFocus).Focus() - End Sub - - Private Sub HSValueChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles HS.ValueChanged, HSL.ValueChanged, HSR.ValueChanged - Dim iI As Integer = sender.Tag - If Not LastMouseDownLocation = New Point(-1, -1) And Not HSValue = -1 Then LastMouseDownLocation.X += (HSValue - sender.Value) * gxWidth - PanelHScroll(iI) = sender.Value - HSValue = sender.Value - RefreshPanel(iI, spMain(iI).DisplayRectangle) - End Sub - - Private Sub TBSelect_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBSelect.Click, mnSelect.Click - TBSelect.Checked = True - TBWrite.Checked = False - TBTimeSelect.Checked = False - mnSelect.Checked = True - mnWrite.Checked = False - mnTimeSelect.Checked = False - - FStatus2.Visible = False - FStatus.Visible = True - - ShouldDrawTempNote = False - SelectedColumn = -1 - TempVPosition = -1 - TempLength = 0 - - vSelStart = MeasureBottom(MeasureAtDisplacement(-PanelVScroll(PanelFocus)) + 1) - vSelLength = 0 - - RefreshPanelAll() - POStatusRefresh() - End Sub - - Private Sub TBWrite_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBWrite.Click, mnWrite.Click - TBSelect.Checked = False - TBWrite.Checked = True - TBTimeSelect.Checked = False - mnSelect.Checked = False - mnWrite.Checked = True - mnTimeSelect.Checked = False - - FStatus2.Visible = False - FStatus.Visible = True - - ShouldDrawTempNote = True - SelectedColumn = -1 - TempVPosition = -1 - TempLength = 0 - - vSelStart = MeasureBottom(MeasureAtDisplacement(-PanelVScroll(PanelFocus)) + 1) - vSelLength = 0 - - RefreshPanelAll() - POStatusRefresh() - End Sub - - Private Sub TBPostEffects_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBTimeSelect.Click, mnTimeSelect.Click - TBSelect.Checked = False - TBWrite.Checked = False - TBTimeSelect.Checked = True - mnSelect.Checked = False - mnWrite.Checked = False - mnTimeSelect.Checked = True - - FStatus.Visible = False - FStatus2.Visible = True - - vSelMouseOverLine = 0 - ShouldDrawTempNote = False - SelectedColumn = -1 - TempVPosition = -1 - TempLength = 0 - ValidateSelection() - - Dim xI1 As Integer - For xI1 = 0 To UBound(Notes) - Notes(xI1).Selected = False - Next - RefreshPanelAll() - POStatusRefresh() - End Sub - - Private Sub CGHeight_ValueChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles CGHeight.ValueChanged - gxHeight = CSng(CGHeight.Value) - CGHeight2.Value = IIf(CGHeight.Value * 4 < CGHeight2.Maximum, CDec(CGHeight.Value * 4), CGHeight2.Maximum) - RefreshPanelAll() - End Sub - - Private Sub CGHeight2_Scroll(ByVal sender As Object, ByVal e As System.EventArgs) Handles CGHeight2.Scroll - CGHeight.Value = CGHeight2.Value / 4 - End Sub - - Private Sub CGWidth_ValueChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles CGWidth.ValueChanged - gxWidth = CSng(CGWidth.Value) - CGWidth2.Value = IIf(CGWidth.Value * 4 < CGWidth2.Maximum, CDec(CGWidth.Value * 4), CGWidth2.Maximum) - - HS.LargeChange = PMainIn.Width / gxWidth - If HS.Value > HS.Maximum - HS.LargeChange + 1 Then HS.Value = HS.Maximum - HS.LargeChange + 1 - HSL.LargeChange = PMainInL.Width / gxWidth - If HSL.Value > HSL.Maximum - HSL.LargeChange + 1 Then HSL.Value = HSL.Maximum - HSL.LargeChange + 1 - HSR.LargeChange = PMainInR.Width / gxWidth - If HSR.Value > HSR.Maximum - HSR.LargeChange + 1 Then HSR.Value = HSR.Maximum - HSR.LargeChange + 1 - - RefreshPanelAll() - End Sub - - Private Sub CGWidth2_Scroll(ByVal sender As Object, ByVal e As System.EventArgs) Handles CGWidth2.Scroll - CGWidth.Value = CGWidth2.Value / 4 - End Sub - - Private Sub CGDivide_ValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CGDivide.ValueChanged - gDivide = CGDivide.Value - RefreshPanelAll() - End Sub - Private Sub CGSub_ValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CGSub.ValueChanged - gSub = CGSub.Value - RefreshPanelAll() - End Sub - Private Sub BGSlash_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BGSlash.Click - Dim xd As Integer = Val(InputBox(Strings.Messages.PromptSlashValue, , gSlash)) - If xd = 0 Then Exit Sub - If xd > CGDivide.Maximum Then xd = CGDivide.Maximum - If xd < CGDivide.Minimum Then xd = CGDivide.Minimum - gSlash = xd - End Sub - - - Private Sub CGSnap_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CGSnap.CheckedChanged - gSnap = CGSnap.Checked - RefreshPanelAll() - End Sub - - Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick - Dim xI1 As Integer - - Select Case PanelFocus - Case 0 - With LeftPanelScroll - xI1 = .Value + (tempY / 5) / gxHeight - If xI1 > 0 Then xI1 = 0 - If xI1 < .Minimum Then xI1 = .Minimum - .Value = xI1 - End With - With HSL - xI1 = .Value + (tempX / 10) / gxWidth - If xI1 > .Maximum - .LargeChange + 1 Then xI1 = .Maximum - .LargeChange + 1 - If xI1 < .Minimum Then xI1 = .Minimum - .Value = xI1 - End With - - Case 1 - With MainPanelScroll - xI1 = .Value + (tempY / 5) / gxHeight - If xI1 > 0 Then xI1 = 0 - If xI1 < .Minimum Then xI1 = .Minimum - .Value = xI1 - End With - With HS - xI1 = .Value + (tempX / 10) / gxWidth - If xI1 > .Maximum - .LargeChange + 1 Then xI1 = .Maximum - .LargeChange + 1 - If xI1 < .Minimum Then xI1 = .Minimum - .Value = xI1 - End With - - Case 2 - With RightPanelScroll - xI1 = .Value + (tempY / 5) / gxHeight - If xI1 > 0 Then xI1 = 0 - If xI1 < .Minimum Then xI1 = .Minimum - .Value = xI1 - End With - With HSR - xI1 = .Value + (tempX / 10) / gxWidth - If xI1 > .Maximum - .LargeChange + 1 Then xI1 = .Maximum - .LargeChange + 1 - If xI1 < .Minimum Then xI1 = .Minimum - .Value = xI1 - End With - End Select - - Dim xMEArgs As New System.Windows.Forms.MouseEventArgs(Windows.Forms.MouseButtons.Left, 0, MouseMoveStatus.X, MouseMoveStatus.Y, 0) - PMainInMouseMove(spMain(PanelFocus), xMEArgs) - - End Sub - - Private Sub TimerMiddle_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TimerMiddle.Tick - If Not MiddleButtonClicked Then TimerMiddle.Enabled = False : Return - - Dim xI1 As Integer - - Select Case PanelFocus - Case 0 - With LeftPanelScroll - xI1 = .Value + (Cursor.Position.Y - MiddleButtonLocation.Y) / 5 / gxHeight - If xI1 > 0 Then xI1 = 0 - If xI1 < .Minimum Then xI1 = .Minimum - .Value = xI1 - End With - With HSL - xI1 = .Value + (Cursor.Position.X - MiddleButtonLocation.X) / 5 / gxWidth - If xI1 > .Maximum - .LargeChange + 1 Then xI1 = .Maximum - .LargeChange + 1 - If xI1 < .Minimum Then xI1 = .Minimum - .Value = xI1 - End With - - Case 1 - With MainPanelScroll - xI1 = .Value + (Cursor.Position.Y - MiddleButtonLocation.Y) / 5 / gxHeight - If xI1 > 0 Then xI1 = 0 - If xI1 < .Minimum Then xI1 = .Minimum - .Value = xI1 - End With - With HS - xI1 = .Value + (Cursor.Position.X - MiddleButtonLocation.X) / 5 / gxWidth - If xI1 > .Maximum - .LargeChange + 1 Then xI1 = .Maximum - .LargeChange + 1 - If xI1 < .Minimum Then xI1 = .Minimum - .Value = xI1 - End With - - Case 2 - With RightPanelScroll - xI1 = .Value + (Cursor.Position.Y - MiddleButtonLocation.Y) / 5 / gxHeight - If xI1 > 0 Then xI1 = 0 - If xI1 < .Minimum Then xI1 = .Minimum - .Value = xI1 - End With - With HSR - xI1 = .Value + (Cursor.Position.X - MiddleButtonLocation.X) / 5 / gxWidth - If xI1 > .Maximum - .LargeChange + 1 Then xI1 = .Maximum - .LargeChange + 1 - If xI1 < .Minimum Then xI1 = .Minimum - .Value = xI1 - End With - End Select - - Dim xMEArgs As New System.Windows.Forms.MouseEventArgs(Windows.Forms.MouseButtons.Left, 0, MouseMoveStatus.X, MouseMoveStatus.Y, 0) - PMainInMouseMove(spMain(PanelFocus), xMEArgs) - End Sub - - Private Sub ValidateWavListView() - Try - Dim xRect As Rectangle = LWAV.GetItemRectangle(LWAV.SelectedIndex) - If xRect.Top + xRect.Height > LWAV.DisplayRectangle.Height Then SendMessage(LWAV.Handle, &H115, 1, 0) - Catch ex As Exception - End Try - End Sub - - Private Sub LWAV_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles LWAV.Click - If TBWrite.Checked Then FSW.Text = C10to36(LWAV.SelectedIndex + 1) - - PreviewNote("", True) - If Not PreviewOnClick Then Exit Sub - If hWAV(LWAV.SelectedIndex + 1) = "" Then Exit Sub - - Dim xFileLocation As String = IIf(ExcludeFileName(FileName) = "", InitPath, ExcludeFileName(FileName)) & "\" & hWAV(LWAV.SelectedIndex + 1) - PreviewNote(xFileLocation, False) - End Sub - - Private Sub LWAV_DoubleClick(ByVal sender As Object, ByVal e As System.EventArgs) Handles LWAV.DoubleClick - Dim xDWAV As New OpenFileDialog - xDWAV.DefaultExt = "wav" - xDWAV.Filter = Strings.FileType._wave & "|*.wav;*.ogg;*.mp3|" & - Strings.FileType.WAV & "|*.wav|" & - Strings.FileType.OGG & "|*.ogg|" & - Strings.FileType.MP3 & "|*.mp3|" & - Strings.FileType._all & "|*.*" - xDWAV.InitialDirectory = IIf(ExcludeFileName(FileName) = "", InitPath, ExcludeFileName(FileName)) - - If xDWAV.ShowDialog = Windows.Forms.DialogResult.Cancel Then Exit Sub - InitPath = ExcludeFileName(xDWAV.FileName) - hWAV(LWAV.SelectedIndex + 1) = GetFileName(xDWAV.FileName) - LWAV.Items.Item(LWAV.SelectedIndex) = C10to36(LWAV.SelectedIndex + 1) & ": " & GetFileName(xDWAV.FileName) - If IsSaved Then SetIsSaved(False) - End Sub - - Private Sub LWAV_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles LWAV.KeyDown - Select Case e.KeyCode - Case Keys.Delete - hWAV(LWAV.SelectedIndex + 1) = "" - LWAV.Items.Item(LWAV.SelectedIndex) = C10to36(LWAV.SelectedIndex + 1) & ": " - If IsSaved Then SetIsSaved(False) - End Select - End Sub - - Private Sub TBErrorCheck_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBErrorCheck.Click, mnErrorCheck.Click - ErrorCheck = sender.Checked - TBErrorCheck.Checked = ErrorCheck - mnErrorCheck.Checked = ErrorCheck - TBErrorCheck.Image = IIf(TBErrorCheck.Checked, My.Resources.x16CheckError, My.Resources.x16CheckErrorN) - mnErrorCheck.Image = IIf(TBErrorCheck.Checked, My.Resources.x16CheckError, My.Resources.x16CheckErrorN) - RefreshPanelAll() - End Sub - - Private Sub TBPreviewOnClick_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBPreviewOnClick.Click, mnPreviewOnClick.Click - PreviewNote("", True) - PreviewOnClick = sender.Checked - TBPreviewOnClick.Checked = PreviewOnClick - mnPreviewOnClick.Checked = PreviewOnClick - TBPreviewOnClick.Image = IIf(PreviewOnClick, My.Resources.x16PreviewOnClick, My.Resources.x16PreviewOnClickN) - mnPreviewOnClick.Image = IIf(PreviewOnClick, My.Resources.x16PreviewOnClick, My.Resources.x16PreviewOnClickN) - End Sub - - 'Private Sub TBPreviewErrorCheck_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) - ' PreviewErrorCheck = TBPreviewErrorCheck.Checked - ' TBPreviewErrorCheck.Image = IIf(PreviewErrorCheck, My.Resources.x16PreviewCheck, My.Resources.x16PreviewCheckN) - 'End Sub - - Private Sub TBShowFileName_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBShowFileName.Click, mnShowFileName.Click - ShowFileName = sender.Checked - TBShowFileName.Checked = ShowFileName - mnShowFileName.Checked = ShowFileName - TBShowFileName.Image = IIf(ShowFileName, My.Resources.x16ShowFileName, My.Resources.x16ShowFileNameN) - mnShowFileName.Image = IIf(ShowFileName, My.Resources.x16ShowFileName, My.Resources.x16ShowFileNameN) - RefreshPanelAll() - End Sub - - Private Sub TBCut_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBCut.Click, mnCut.Click - Dim xUndo As UndoRedo.LinkedURCmd = Nothing - Dim xRedo As UndoRedo.LinkedURCmd = New UndoRedo.Void - Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo - Me.RedoRemoveNoteSelected(True, xUndo, xRedo) - 'Dim xRedo As String = sCmdKDs() - 'Dim xUndo As String = sCmdKs(True) - - CopyNotes(False) - RemoveNotes(False) - AddUndo(xUndo, xBaseRedo.Next) - - SortByVPositionInsertion() - UpdatePairing() - CalculateTotalPlayableNotes() - RefreshPanelAll() - POStatusRefresh() - CalculateGreatestVPosition() - End Sub - - Private Sub TBCopy_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBCopy.Click, mnCopy.Click - CopyNotes() - RefreshPanelAll() - POStatusRefresh() - End Sub - - Private Sub TBPaste_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBPaste.Click, mnPaste.Click - AddNotesFromClipboard() - - Dim xUndo As UndoRedo.LinkedURCmd = Nothing - Dim xRedo As UndoRedo.LinkedURCmd = New UndoRedo.Void - Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo - Me.RedoAddNoteSelected(True, xUndo, xRedo) - AddUndo(xUndo, xBaseRedo.Next) - - 'AddUndo(sCmdKDs(), sCmdKs(True)) - - SortByVPositionInsertion() - UpdatePairing() - CalculateTotalPlayableNotes() - RefreshPanelAll() - POStatusRefresh() - CalculateGreatestVPosition() - End Sub - - 'Private Function pArgPath(ByVal I As Integer) - ' Return Mid(pArgs(I), 1, InStr(pArgs(I), vbCrLf) - 1) - 'End Function - - Private Function GetFileName(ByVal s As String) As String - Dim fslash As Integer = InStrRev(s, "/") - Dim bslash As Integer = InStrRev(s, "\") - Return Mid(s, IIf(fslash > bslash, fslash, bslash) + 1) - End Function - - Private Function ExcludeFileName(ByVal s As String) As String - Dim fslash As Integer = InStrRev(s, "/") - Dim bslash As Integer = InStrRev(s, "\") - If (bslash Or fslash) = 0 Then Return "" - Return Mid(s, 1, IIf(fslash > bslash, fslash, bslash) - 1) - End Function - - Private Sub PlayerMissingPrompt() - Dim xArg As MainWindow.PlayerArguments = pArgs(CurrentPlayer) - MsgBox(Strings.Messages.CannotFind.Replace("{}", PrevCodeToReal(xArg.Path)) & vbCrLf & - Strings.Messages.PleaseRespecifyPath, MsgBoxStyle.Critical, Strings.Messages.PlayerNotFound) - - Dim xDOpen As New OpenFileDialog - xDOpen.InitialDirectory = IIf(ExcludeFileName(PrevCodeToReal(xArg.Path)) = "", - My.Application.Info.DirectoryPath, - ExcludeFileName(PrevCodeToReal(xArg.Path))) - xDOpen.FileName = PrevCodeToReal(xArg.Path) - xDOpen.Filter = Strings.FileType.EXE & "|*.exe" - xDOpen.DefaultExt = "exe" - If xDOpen.ShowDialog = Windows.Forms.DialogResult.Cancel Then Exit Sub - - 'pArgs(CurrentPlayer) = Replace(xDOpen.FileName, My.Application.Info.DirectoryPath, "") & _ - ' Mid(pArgs(CurrentPlayer), InStr(pArgs(CurrentPlayer), vbCrLf)) - 'xStr = Split(pArgs(CurrentPlayer), vbCrLf) - pArgs(CurrentPlayer).Path = Replace(xDOpen.FileName, My.Application.Info.DirectoryPath, "") - xArg = pArgs(CurrentPlayer) - End Sub - - Private Sub TBPlay_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBPlay.Click, mnPlay.Click - 'Dim xStr() As String = Split(pArgs(CurrentPlayer), vbCrLf) - Dim xArg As MainWindow.PlayerArguments = pArgs(CurrentPlayer) - - If Not File.Exists(PrevCodeToReal(xArg.Path)) Then - PlayerMissingPrompt() - xArg = pArgs(CurrentPlayer) - End If - - ' az: Treat it like we cancelled the operation - If Not File.Exists(PrevCodeToReal(xArg.Path)) Then - Exit Sub - End If - - Dim xStrAll As String = SaveBMS() - Dim xFileName As String = IIf(Not PathIsValid(FileName), - IIf(InitPath = "", My.Application.Info.DirectoryPath, InitPath), - ExcludeFileName(FileName)) & "\___TempBMS.bms" - My.Computer.FileSystem.WriteAllText(xFileName, xStrAll, False, TextEncoding) - - AddTempFileList(xFileName) - System.Diagnostics.Process.Start(PrevCodeToReal(xArg.Path), PrevCodeToReal(xArg.aHere)) - End Sub - - Private Sub TBPlayB_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBPlayB.Click, mnPlayB.Click - 'Dim xStr() As String = Split(pArgs(CurrentPlayer), vbCrLf) - Dim xArg As MainWindow.PlayerArguments = pArgs(CurrentPlayer) - - If Not File.Exists(PrevCodeToReal(xArg.Path)) Then - PlayerMissingPrompt() - xArg = pArgs(CurrentPlayer) - End If - - If Not File.Exists(PrevCodeToReal(xArg.Path)) Then - Exit Sub - End If - - Dim xStrAll As String = SaveBMS() - Dim xFileName As String = IIf(Not PathIsValid(FileName), - IIf(InitPath = "", My.Application.Info.DirectoryPath, InitPath), - ExcludeFileName(FileName)) & "\___TempBMS.bms" - My.Computer.FileSystem.WriteAllText(xFileName, xStrAll, False, TextEncoding) - - AddTempFileList(xFileName) - - System.Diagnostics.Process.Start(PrevCodeToReal(xArg.Path), PrevCodeToReal(xArg.aBegin)) - End Sub - - Private Sub TBStop_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBStop.Click, mnStop.Click - 'Dim xStr() As String = Split(pArgs(CurrentPlayer), vbCrLf) - Dim xArg As MainWindow.PlayerArguments = pArgs(CurrentPlayer) - - If Not File.Exists(PrevCodeToReal(xArg.Path)) Then - PlayerMissingPrompt() - xArg = pArgs(CurrentPlayer) - End If - - If Not File.Exists(PrevCodeToReal(xArg.Path)) Then - Exit Sub - End If - - System.Diagnostics.Process.Start(PrevCodeToReal(xArg.Path), PrevCodeToReal(xArg.aStop)) - End Sub - - Private Sub AddTempFileList(ByVal s As String) - Dim xAdd As Boolean = True - If pTempFileNames IsNot Nothing Then - For Each xStr1 As String In pTempFileNames - If xStr1 = s Then xAdd = False : Exit For - Next - End If - - If xAdd Then - ReDim Preserve pTempFileNames(UBound(pTempFileNames) + 1) - pTempFileNames(UBound(pTempFileNames)) = s - End If - End Sub - - Private Sub TBStatistics_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBStatistics.Click, mnStatistics.Click - SortByVPositionInsertion() - UpdatePairing() - - Dim data(6, 5) As Integer - For i As Integer = 1 To UBound(Notes) - With Notes(i) - Dim row As Integer = -1 - Select Case .ColumnIndex - Case niSCROLL : row = 0 - Case niBPM : row = 1 - Case niSTOP : row = 2 - Case niA1, niA2, niA3, niA4, niA5, niA6, niA7, niA8 : row = 3 - Case niD1, niD2, niD3, niD4, niD5, niD6, niD7, niD8 : row = 4 - Case Is >= niB : row = 5 - Case Else : row = 6 - End Select - - -StartCount: If Not NTInput Then - If Not .LongNote Then data(row, 0) += 1 - If .LongNote Then data(row, 1) += 1 - If .Value \ 10000 = LnObj Then data(row, 2) += 1 - If .Hidden Then data(row, 3) += 1 - If .HasError Then data(row, 4) += 1 - data(row, 5) += 1 - - Else - Dim noteUnit As Integer = 1 - If .Length = 0 Then data(row, 0) += 1 - If .Length <> 0 Then data(row, 1) += 2 : noteUnit = 2 - - If .Value \ 10000 = LnObj Then data(row, 2) += noteUnit - If .Hidden Then data(row, 3) += noteUnit - If .HasError Then data(row, 4) += noteUnit - data(row, 5) += noteUnit - - End If - - If row <> 6 Then row = 6 : GoTo StartCount - End With - Next - - Dim dStat As New dgStatistics(data) - dStat.ShowDialog() - End Sub - - ''' - ''' Remark: Pls sort and updatepairing before this process. - ''' - - Private Sub CalculateTotalPlayableNotes() - Dim xI1 As Integer - Dim xIAll As Integer = 0 - - If Not NTInput Then - For xI1 = 1 To UBound(Notes) - If Notes(xI1).ColumnIndex >= niA1 And Notes(xI1).ColumnIndex <= niD8 Then xIAll += 1 - Next - - Else - For xI1 = 1 To UBound(Notes) - If Notes(xI1).ColumnIndex >= niA1 And Notes(xI1).ColumnIndex <= niD8 Then - xIAll += 1 - If Notes(xI1).Length <> 0 Then xIAll += 1 - End If - Next - End If - - TBTotalValue.Text = xIAll * 7.605 / (0.01 * xIAll + 6.5) - TBStatistics.Text = xIAll - End Sub - - Public Function GetMouseVPosition(Optional snap As Boolean = True) - Dim panHeight = spMain(PanelFocus).Height - Dim panDisplacement = PanelVScroll(PanelFocus) - Dim vpos = (panHeight - panDisplacement * gxHeight - MouseMoveStatus.Y - 1) / gxHeight - If snap Then - Return SnapToGrid(vpos) - Else - Return vpos - End If - End Function - - Private Sub POStatusRefresh() - - If TBSelect.Checked Then - Dim xI1 As Integer = KMouseOver - If xI1 < 0 Then - - TempVPosition = GetMouseVPosition(gSnap) - - SelectedColumn = GetColumnAtX(MouseMoveStatus.X, PanelHScroll(PanelFocus)) - - Dim xMeasure As Integer = MeasureAtDisplacement(TempVPosition) - Dim xMLength As Double = MeasureLength(xMeasure) - Dim xVposMod As Double = TempVPosition - MeasureBottom(xMeasure) - Dim xGCD As Double = GCD(IIf(xVposMod = 0, xMLength, xVposMod), xMLength) - - FSP1.Text = (xVposMod * gDivide / 192).ToString & " / " & (xMLength * gDivide / 192).ToString & " " - FSP2.Text = xVposMod.ToString & " / " & xMLength & " " - FSP3.Text = CInt(xVposMod / xGCD).ToString & " / " & CInt(xMLength / xGCD).ToString & " " - FSP4.Text = TempVPosition.ToString() & " " - TimeStatusLabel.Text = GetTimeFromVPosition(TempVPosition).ToString("F4") - FSC.Text = nTitle(SelectedColumn) - FSW.Text = "" - FSM.Text = Add3Zeros(xMeasure) - FST.Text = "" - FSH.Text = "" - FSE.Text = "" - - Else - Dim xMeasure As Integer = MeasureAtDisplacement(Notes(xI1).VPosition) - Dim xMLength As Double = MeasureLength(xMeasure) - Dim xVposMod As Double = Notes(xI1).VPosition - MeasureBottom(xMeasure) - Dim xGCD As Double = GCD(IIf(xVposMod = 0, xMLength, xVposMod), xMLength) - - FSP1.Text = (xVposMod * gDivide / 192).ToString & " / " & (xMLength * gDivide / 192).ToString & " " - FSP2.Text = xVposMod.ToString & " / " & xMLength & " " - FSP3.Text = CInt(xVposMod / xGCD).ToString & " / " & CInt(xMLength / xGCD).ToString & " " - FSP4.Text = Notes(xI1).VPosition.ToString() & " " - TimeStatusLabel.Text = GetTimeFromVPosition(TempVPosition).ToString("F4") - FSC.Text = nTitle(Notes(xI1).ColumnIndex) - FSW.Text = IIf(IsColumnNumeric(Notes(xI1).ColumnIndex), - Notes(xI1).Value / 10000, - C10to36(Notes(xI1).Value \ 10000)) - FSM.Text = Add3Zeros(xMeasure) - FST.Text = IIf(NTInput, Strings.StatusBar.Length & " = " & Notes(xI1).Length, IIf(Notes(xI1).LongNote, Strings.StatusBar.LongNote, "")) - FSH.Text = IIf(Notes(xI1).Hidden, Strings.StatusBar.Hidden, "") - FSE.Text = IIf(Notes(xI1).HasError, Strings.StatusBar.Err, "") - - End If - - ElseIf TBWrite.Checked Then - If SelectedColumn < 0 Then Exit Sub - - Dim xMeasure As Integer = MeasureAtDisplacement(TempVPosition) - Dim xMLength As Double = MeasureLength(xMeasure) - Dim xVposMod As Double = TempVPosition - MeasureBottom(xMeasure) - Dim xGCD As Double = GCD(IIf(xVposMod = 0, xMLength, xVposMod), xMLength) - - FSP1.Text = (xVposMod * gDivide / 192).ToString & " / " & (xMLength * gDivide / 192).ToString & " " - FSP2.Text = xVposMod.ToString & " / " & xMLength & " " - FSP3.Text = CInt(xVposMod / xGCD).ToString & " / " & CInt(xMLength / xGCD).ToString & " " - FSP4.Text = TempVPosition.ToString() & " " - TimeStatusLabel.Text = GetTimeFromVPosition(TempVPosition).ToString("F4") - FSC.Text = nTitle(SelectedColumn) - FSW.Text = C10to36(LWAV.SelectedIndex + 1) - FSM.Text = Add3Zeros(xMeasure) - FST.Text = IIf(NTInput, TempLength, IIf(My.Computer.Keyboard.ShiftKeyDown, Strings.StatusBar.LongNote, "")) - FSH.Text = IIf(My.Computer.Keyboard.CtrlKeyDown, Strings.StatusBar.Hidden, "") - - ElseIf TBTimeSelect.Checked Then - FSSS.Text = vSelStart - FSSL.Text = vSelLength - FSSH.Text = vSelHalf - - End If - FStatus.Invalidate() - End Sub - - Private Function GetTimeFromVPosition(vpos As Double) As Double - Dim timing_notes = (From note In Notes - Where note.ColumnIndex = niBPM Or note.ColumnIndex = niSTOP - Group By Column = note.ColumnIndex - Into NoteGroups = Group).ToDictionary(Function(x) x.Column, Function(x) x.NoteGroups) - - Dim bpm_notes = timing_notes.Item(niBPM) - - Dim stop_notes As IEnumerable(Of Note) = Nothing - - If timing_notes.ContainsKey(niSTOP) Then - stop_notes = timing_notes.Item(niSTOP) - End If - - - Dim stop_contrib As Double - Dim bpm_contrib As Double - - For i = 0 To bpm_notes.Count() - 1 - ' az: sum bpm contribution first - Dim duration = 0.0 - Dim current_note = bpm_notes.ElementAt(i) - Dim notevpos = Math.Max(0, current_note.VPosition) - - If i + 1 <> bpm_notes.Count() Then - Dim next_note = bpm_notes.ElementAt(i + 1) - duration = next_note.VPosition - notevpos - Else - duration = vpos - notevpos - End If - - Dim current_bps = 60 / (current_note.Value / 10000) - bpm_contrib += current_bps * duration / 48 - - If stop_notes Is Nothing Then Continue For - - Dim stops = From stp In stop_notes - Where stp.VPosition >= notevpos And - stp.VPosition < notevpos + duration - - Dim stop_beats = stops.Sum(Function(x) x.Value / 10000.0) / 48 - stop_contrib += current_bps * stop_beats - - Next - - Return stop_contrib + bpm_contrib - End Function - - Private Sub POBStorm_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles POBStorm.Click - - End Sub - - Private Sub POBMirror_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles POBMirror.Click - Dim xI1 As Integer - Dim xI2 As Integer - Dim xUndo As UndoRedo.LinkedURCmd = Nothing - Dim xRedo As UndoRedo.LinkedURCmd = New UndoRedo.Void - Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo - 'xRedo &= sCmdKM(niA1, .VPosition, .Value, IIf(NTInput, .Length, .LongNote), .Hidden, RealColumnToEnabled(niA7) - RealColumnToEnabled(niA1), 0, True) & vbCrLf - 'xUndo &= sCmdKM(niA7, .VPosition, .Value, IIf(NTInput, .Length, .LongNote), .Hidden, RealColumnToEnabled(niA1) - RealColumnToEnabled(niA7), 0, True) & vbCrLf - - ' Array 0: Unmodified array - ' Array 1: Modified array based on range - ' Array R: Array 1 reversed - Dim xniArray0 = New Integer() {niA1, niA2, niA3, niA4, niA5, niA6, niA7, niA8, niD1, niD2, niD3, niD4, niD5, niD6, niD7, niD8} - ' Dim xniArray1 = Integer() ' xniArray0 - - ' New function: Declare an array to see the range of selected notes. B columns ignored. - - Dim xRangeL As Integer = niB ' Big number - Dim xRangeR As Integer = 0 ' Smol number - - ' Range finder - For xI1 = 1 To UBound(Notes) - If Not Notes(xI1).Selected Then Continue For - If xRangeL > Notes(xI1).ColumnIndex Then xRangeL = Notes(xI1).ColumnIndex - If xRangeR < Notes(xI1).ColumnIndex Then xRangeR = Notes(xI1).ColumnIndex - Next - - ' Modify xniArray based on range - ' Out of range - If xRangeL > niD8 Or xRangeR < niA1 Then GoTo DoNothing - - ' Semi-in Range - ' Cut off left side - If xRangeL < niA1 Then - xRangeL = 0 - GoTo MirrorSkip1 - End If - - For xI1 = 0 To xniArray0.Length - If xniArray0(xI1) = xRangeL Then - xRangeL = xI1 - Exit For - End If - Next - -MirrorSkip1: - ' Cut off right side - If xRangeR > niD8 Then - xRangeR = xniArray0.Length - GoTo MirrorSkip2 - End If - - For xI1 = 0 To xniArray0.Length - If xniArray0(xI1) = xRangeR Then - xRangeR = xI1 + 1 - Exit For - End If - Next - -MirrorSkip2: - - Dim xniArray1(xRangeR - xRangeL - 1) - For xI1 = 0 To xRangeR - xRangeL - 1 - xniArray1(xI1) = xniArray0(xI1 + xRangeL) - Next - - Dim xniArrayR = xniArray1.Reverse() - Dim xniArrayLen = xniArray1.Length - - Dim xCol As Integer - For xI1 = 1 To UBound(Notes) - If Not Notes(xI1).Selected Then Continue For - - xCol = Notes(xI1).ColumnIndex - ' MsgBox("Test" & "xCol: " & xCol & " xI1: " & xI1) - For xI2 = 0 To xniArrayLen - 1 - ' MsgBox("Test 2 xI2: " & xI2) - If xCol = xniArray1(xI2) Then - xCol = xniArrayR(xI2) - Exit For - End If - - Next - - Me.RedoMoveNote(Notes(xI1), xCol, Notes(xI1).VPosition, xUndo, xRedo) - Notes(xI1).ColumnIndex = xCol - Next - -DoNothing: - - AddUndo(xUndo, xBaseRedo.Next) - UpdatePairing() - RefreshPanelAll() - End Sub - - - Private Sub POBFlip_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles POBFlip.Click - Dim xI1 As Integer - Dim xI2 As Integer - Dim xUndo As UndoRedo.LinkedURCmd = Nothing - Dim xRedo As UndoRedo.LinkedURCmd = New UndoRedo.Void - Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo - - ' Array 1: Unmodified array - ' Array R: Flipped array - Dim xniArray1 = New Integer() {niA1, niA2, niA3, niA4, niA5, niA6, niA7, niA8, niD1, niD2, niD3, niD4, niD5, niD6, niD7, niD8} - Dim xniArrayR = New Integer() {niD8, niD1, niD2, niD3, niD4, niD5, niD6, niD7, niA2, niA3, niA4, niA5, niA6, niA7, niA8, niA1} - - Dim xniArrayLen = xniArray1.Length - - Dim xCol As Integer - For xI1 = 1 To UBound(Notes) - If Not Notes(xI1).Selected Then Continue For - - xCol = Notes(xI1).ColumnIndex - For xI2 = 0 To xniArrayLen - 1 - If xCol = xniArray1(xI2) Then - xCol = xniArrayR(xI2) - Exit For - End If - - Next - - Me.RedoMoveNote(Notes(xI1), xCol, Notes(xI1).VPosition, xUndo, xRedo) - Notes(xI1).ColumnIndex = xCol - Next - - AddUndo(xUndo, xBaseRedo.Next) - UpdatePairing() - RefreshPanelAll() - End Sub - - Private Sub POBRandom_Click(sender As Object, e As EventArgs) Handles POBRandom.Click - Dim xI1 As Integer - Dim xI2 As Integer - Dim xUndo As UndoRedo.LinkedURCmd = Nothing - Dim xRedo As UndoRedo.LinkedURCmd = New UndoRedo.Void - Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo - 'xRedo &= sCmdKM(niA1, .VPosition, .Value, IIf(NTInput, .Length, .LongNote), .Hidden, RealColumnToEnabled(niA7) - RealColumnToEnabled(niA1), 0, True) & vbCrLf - 'xUndo &= sCmdKM(niA7, .VPosition, .Value, IIf(NTInput, .Length, .LongNote), .Hidden, RealColumnToEnabled(niA1) - RealColumnToEnabled(niA7), 0, True) & vbCrLf - - ' Array 0: Unmodified array - ' Array 1: Modified array based on range - ' Array R: Array 1 reversed - Dim xniArray0 = New Integer() {niA1, niA2, niA3, niA4, niA5, niA6, niA7, niA8, niD1, niD2, niD3, niD4, niD5, niD6, niD7, niD8} - ' Dim xniArray1 = Integer() ' xniArray0 - - ' New function: Declare an array to see the range of selected notes. B columns ignored. - - Dim xRangeL As Integer = niB ' Big number - Dim xRangeR As Integer = 0 ' Smol number - - ' Range finder - For xI1 = 1 To UBound(Notes) - If Not Notes(xI1).Selected Then Continue For - If xRangeL > Notes(xI1).ColumnIndex Then xRangeL = Notes(xI1).ColumnIndex - If xRangeR < Notes(xI1).ColumnIndex Then xRangeR = Notes(xI1).ColumnIndex - Next - - ' Modify xniArray based on range - ' Out of range - If xRangeL > niD8 Or xRangeR < niA1 Then GoTo DoNothing - - ' Semi-in Range - ' Cut off left side - If xRangeL < niA1 Then - xRangeL = 0 - GoTo Skip1 - End If - - For xI1 = 0 To xniArray0.Length - If xniArray0(xI1) = xRangeL Then - xRangeL = xI1 - Exit For - End If - Next - -Skip1: - ' Cut off right side - If xRangeR > niD8 Then - xRangeR = xniArray0.Length - GoTo Skip2 - End If - - For xI1 = 0 To xniArray0.Length - If xniArray0(xI1) = xRangeR Then - xRangeR = xI1 + 1 - Exit For - End If - Next - -Skip2: - - Dim xniArray1(xRangeR - xRangeL - 1) - For xI1 = 0 To xRangeR - xRangeL - 1 - xniArray1(xI1) = xniArray0(xI1 + xRangeL) - Next - - Dim xniArrayLen = xniArray1.Length - ' xniArrayR: Randomized array - Dim xniArrayR = xniArray1.Clone() - Shuffle(xniArrayR, xniArrayLen) - - Dim xCol As Integer - For xI1 = 1 To UBound(Notes) - If Not Notes(xI1).Selected Then Continue For - - xCol = Notes(xI1).ColumnIndex - For xI2 = 0 To xniArrayLen - 1 - If xCol = xniArray1(xI2) Then - xCol = xniArrayR(xI2) - Exit For - End If - - Next - - Me.RedoMoveNote(Notes(xI1), xCol, Notes(xI1).VPosition, xUndo, xRedo) - Notes(xI1).ColumnIndex = xCol - Next - -DoNothing: - - AddUndo(xUndo, xBaseRedo.Next) - UpdatePairing() - RefreshPanelAll() - End Sub - - - Private Sub ValidateSelection() - If vSelStart < 0 Then vSelLength += vSelStart : vSelHalf += vSelStart : vSelStart = 0 - If vSelStart > GetMaxVPosition() - 1 Then vSelLength += vSelStart - GetMaxVPosition() + 1 : vSelHalf += vSelStart - GetMaxVPosition() + 1 : vSelStart = GetMaxVPosition() - 1 - If vSelStart + vSelLength < 0 Then vSelLength = -vSelStart - If vSelStart + vSelLength > GetMaxVPosition() - 1 Then vSelLength = GetMaxVPosition() - 1 - vSelStart - - If Math.Sign(vSelHalf) <> Math.Sign(vSelLength) Then vSelHalf = 0 - If Math.Abs(vSelHalf) > Math.Abs(vSelLength) Then vSelHalf = vSelLength - End Sub - - - - Private Sub TVCM_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TVCM.KeyDown - If e.KeyCode = Keys.Enter Then - TVCM.Text = Val(TVCM.Text) - If Val(TVCM.Text) <= 0 Then - MsgBox(Strings.Messages.NegativeFactorError, MsgBoxStyle.Critical, Strings.Messages.Err) - TVCM.Text = 1 - TVCM.Focus() - TVCM.SelectAll() - Else - BVCApply_Click(BVCApply, New System.EventArgs) - End If - End If - End Sub - - Private Sub TVCM_LostFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles TVCM.LostFocus - TVCM.Text = Val(TVCM.Text) - If Val(TVCM.Text) <= 0 Then - MsgBox(Strings.Messages.NegativeFactorError, MsgBoxStyle.Critical, Strings.Messages.Err) - TVCM.Text = 1 - TVCM.Focus() - TVCM.SelectAll() - End If - End Sub - - Private Sub TVCD_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TVCD.KeyDown - If e.KeyCode = Keys.Enter Then - TVCD.Text = Val(TVCD.Text) - If Val(TVCD.Text) <= 0 Then - MsgBox(Strings.Messages.NegativeDivisorError, MsgBoxStyle.Critical, Strings.Messages.Err) - TVCD.Text = 1 - TVCD.Focus() - TVCD.SelectAll() - Else - BVCApply_Click(BVCApply, New System.EventArgs) - End If - End If - End Sub - - Private Sub TVCD_LostFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles TVCD.LostFocus - TVCD.Text = Val(TVCD.Text) - If Val(TVCD.Text) <= 0 Then - MsgBox(Strings.Messages.NegativeDivisorError, MsgBoxStyle.Critical, Strings.Messages.Err) - TVCD.Text = 1 - TVCD.Focus() - TVCD.SelectAll() - End If - End Sub - - Private Sub TVCBPM_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TVCBPM.KeyDown - If e.KeyCode = Keys.Enter Then - TVCBPM.Text = Val(TVCBPM.Text) - If Val(TVCBPM.Text) <= 0 Then - MsgBox(Strings.Messages.NegativeDivisorError, MsgBoxStyle.Critical, Strings.Messages.Err) - TVCBPM.Text = Notes(0).Value / 10000 - TVCBPM.Focus() - TVCBPM.SelectAll() - Else - BVCCalculate_Click(BVCCalculate, New System.EventArgs) - End If - End If - End Sub - - Private Sub TVCBPM_LostFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles TVCBPM.LostFocus - TVCBPM.Text = Val(TVCBPM.Text) - If Val(TVCBPM.Text) <= 0 Then - MsgBox(Strings.Messages.NegativeDivisorError, MsgBoxStyle.Critical, Strings.Messages.Err) - TVCBPM.Text = Notes(0).Value / 10000 - TVCBPM.Focus() - TVCBPM.SelectAll() - End If - End Sub - - Private Function FindNoteIndex(note As Note) As Integer - Dim xI1 As Integer - If NTInput Then - For xI1 = 1 To UBound(Notes) - If Notes(xI1).equalsNT(note) Then Return xI1 - Next - Else - For xI1 = 1 To UBound(Notes) - If Notes(xI1).equalsBMSE(note) Then Return xI1 - Next - End If - Return xI1 - End Function - - - - - Private Function sIA() As Integer - Return IIf(sI > 98, 0, sI + 1) - End Function - - Private Function sIM() As Integer - Return IIf(sI < 1, 99, sI - 1) - End Function - - - - Private Sub TBUndo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBUndo.Click, mnUndo.Click - KMouseOver = -1 - 'KMouseDown = -1 - ReDim SelectedNotes(-1) - If sUndo(sI).ofType = UndoRedo.opNoOperation Then Exit Sub - PerformCommand(sUndo(sI)) - sI = sIM() - - TBUndo.Enabled = sUndo(sI).ofType <> UndoRedo.opNoOperation - TBRedo.Enabled = sRedo(sIA).ofType <> UndoRedo.opNoOperation - mnUndo.Enabled = sUndo(sI).ofType <> UndoRedo.opNoOperation - mnRedo.Enabled = sRedo(sIA).ofType <> UndoRedo.opNoOperation - End Sub - - Private Sub TBRedo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBRedo.Click, mnRedo.Click - KMouseOver = -1 - 'KMouseDown = -1 - ReDim SelectedNotes(-1) - If sRedo(sIA).ofType = UndoRedo.opNoOperation Then Exit Sub - PerformCommand(sRedo(sIA)) - sI = sIA() - - TBUndo.Enabled = sUndo(sI).ofType <> UndoRedo.opNoOperation - TBRedo.Enabled = sRedo(sIA).ofType <> UndoRedo.opNoOperation - mnUndo.Enabled = sUndo(sI).ofType <> UndoRedo.opNoOperation - mnRedo.Enabled = sRedo(sIA).ofType <> UndoRedo.opNoOperation - End Sub - - 'Undo appends before, Redo appends after. - 'After a sequence of Commands, - ' Undo will be the first one to execute, - ' Redo will be the last one to execute. - 'Remember to save the first Redo. - - 'In case where undo is Nothing: Dont worry. - 'In case where redo is Nothing: - ' If only one redo is in a sequence, put Nothing. - ' If several redo are in a sequence, - ' Create Void first. - ' Record its reference into a seperate copy. (xBaseRedo = xRedo) - ' Use this xRedo as the BaseRedo. - ' When calling AddUndo subroutine, use xBaseRedo.Next as cRedo. - - 'Dim xUndo As UndoRedo.LinkedURCmd = Nothing - 'Dim xRedo As UndoRedo.LinkedURCmd = Nothing - '... 'Me.RedoRemoveNote(K(xI1), True, xUndo, xRedo) - 'AddUndo(xUndo, xRedo) - - 'Dim xUndo As UndoRedo.LinkedURCmd = Nothing - 'Dim xRedo As New UndoRedo.Void - 'Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo - '... 'Me.RedoRemoveNote(K(xI1), True, xUndo, xRedo) - 'AddUndo(xUndo, xBaseRedo.Next) - - - - Private Sub TBAbout_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) - Dim Aboutboxx1 As New AboutBox1() - 'If My.Computer.FileSystem.FileExists(My.Application.Info.DirectoryPath & "\About.png") Then - Aboutboxx1.bBitmap = My.Resources.About0 - 'Aboutboxx1.SelectBitmap() - Aboutboxx1.ClientSize = New Size(1000, 500) - Aboutboxx1.ClickToCopy.Visible = True - Aboutboxx1.ShowDialog(Me) - 'Else - ' MsgBox(locale.Messages.cannotfind & " ""About.png""", MsgBoxStyle.Critical, locale.Messages.err) - 'End If - End Sub - - Private Sub TBOptions_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBVOptions.Click, mnVOptions.Click - - Dim xDiag As New OpVisual(vo, column, LWAV.Font) - xDiag.ShowDialog(Me) - UpdateColumnsX() - RefreshPanelAll() - End Sub - - - Private Sub AddToPOWAV(ByVal xPath() As String) - Dim xIndices(LWAV.SelectedIndices.Count - 1) As Integer - LWAV.SelectedIndices.CopyTo(xIndices, 0) - If xIndices.Length = 0 Then Exit Sub - - If xIndices.Length < xPath.Length Then - Dim i As Integer = xIndices.Length - Dim currWavIndex As Integer = xIndices(UBound(xIndices)) + 1 - ReDim Preserve xIndices(UBound(xPath)) - - Do While i < xIndices.Length And currWavIndex <= 1294 - Do While currWavIndex <= 1294 AndAlso hWAV(currWavIndex + 1) <> "" - currWavIndex += 1 - Loop - If currWavIndex > 1294 Then Exit Do - - xIndices(i) = currWavIndex - currWavIndex += 1 - i += 1 - Loop - - If currWavIndex > 1294 Then - ReDim Preserve xPath(i - 1) - ReDim Preserve xIndices(i - 1) - End If - End If - - 'Dim xI2 As Integer = 0 - For xI1 As Integer = 0 To UBound(xPath) - 'If xI2 > UBound(xIndices) Then Exit For - 'hWAV(xIndices(xI2) + 1) = GetFileName(xPath(xI1)) - 'LWAV.Items.Item(xIndices(xI2)) = C10to36(xIndices(xI2) + 1) & ": " & GetFileName(xPath(xI1)) - hWAV(xIndices(xI1) + 1) = GetFileName(xPath(xI1)) - LWAV.Items.Item(xIndices(xI1)) = C10to36(xIndices(xI1) + 1) & ": " & GetFileName(xPath(xI1)) - 'xI2 += 1 - Next - - LWAV.SelectedIndices.Clear() - For xI1 As Integer = 0 To IIf(UBound(xIndices) < UBound(xPath), UBound(xIndices), UBound(xPath)) - LWAV.SelectedIndices.Add(xIndices(xI1)) - Next - - If IsSaved Then SetIsSaved(False) - RefreshPanelAll() - End Sub - - Private Sub POWAV_DragDrop(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles POWAV.DragDrop - ReDim DDFileName(-1) - If Not e.Data.GetDataPresent(DataFormats.FileDrop) Then Return - - Dim xOrigPath() As String = CType(e.Data.GetData(DataFormats.FileDrop), String()) - Dim xPath() As String = FilterFileBySupported(xOrigPath, SupportedAudioExtension) - Array.Sort(xPath) - If xPath.Length = 0 Then - RefreshPanelAll() - Exit Sub - End If - - AddToPOWAV(xPath) - End Sub - - Private Sub POWAV_DragEnter(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles POWAV.DragEnter - If e.Data.GetDataPresent(DataFormats.FileDrop) Then - e.Effect = DragDropEffects.Copy - DDFileName = FilterFileBySupported(CType(e.Data.GetData(DataFormats.FileDrop), String()), SupportedAudioExtension) - Else - e.Effect = DragDropEffects.None - End If - RefreshPanelAll() - End Sub - - Private Sub POWAV_DragLeave(ByVal sender As Object, ByVal e As System.EventArgs) Handles POWAV.DragLeave - ReDim DDFileName(-1) - RefreshPanelAll() - End Sub - - Private Sub POWAV_Resize(ByVal sender As Object, ByVal e As System.EventArgs) Handles POWAV.Resize - LWAV.Height = sender.Height - 25 - End Sub - Private Sub POBeat_Resize(ByVal sender As Object, ByVal e As System.EventArgs) Handles POBeat.Resize - LBeat.Height = POBeat.Height - 25 - End Sub - Private Sub POExpansion_Resize(ByVal sender As Object, ByVal e As System.EventArgs) Handles POExpansion.Resize - TExpansion.Height = POExpansion.Height - 2 - End Sub - - Private Sub mn_DropDownClosed(ByVal sender As Object, ByVal e As System.EventArgs) - sender.ForeColor = Color.White - End Sub - Private Sub mn_DropDownOpened(ByVal sender As Object, ByVal e As System.EventArgs) - sender.ForeColor = Color.Black - End Sub - Private Sub mn_MouseEnter(ByVal sender As Object, ByVal e As System.EventArgs) - If sender.Pressed Then Return - sender.ForeColor = Color.Black - End Sub - Private Sub mn_MouseLeave(ByVal sender As Object, ByVal e As System.EventArgs) - If sender.Pressed Then Return - sender.ForeColor = Color.White - End Sub - - Private Sub TBPOptions_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBPOptions.Click, mnPOptions.Click - Dim xDOp As New OpPlayer(CurrentPlayer) - xDOp.ShowDialog(Me) - End Sub - - Private Sub THGenre_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles _ - THGenre.TextChanged, THTitle.TextChanged, THArtist.TextChanged, THPlayLevel.TextChanged, CHRank.SelectedIndexChanged, TExpansion.TextChanged, - THSubTitle.TextChanged, THSubArtist.TextChanged, THStageFile.TextChanged, THBanner.TextChanged, THBackBMP.TextChanged, - CHDifficulty.SelectedIndexChanged, THExRank.TextChanged, THTotal.TextChanged, THComment.TextChanged - If IsSaved Then SetIsSaved(False) - End Sub - - Private Sub CHLnObj_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CHLnObj.SelectedIndexChanged - If IsSaved Then SetIsSaved(False) - LnObj = CHLnObj.SelectedIndex - UpdatePairing() - RefreshPanelAll() - End Sub - - Private Sub ConvertBMSE2NT() - ReDim SelectedNotes(-1) - SortByVPositionInsertion() - - For i2 As Integer = 0 To UBound(Notes) - Notes(i2).Length = 0.0# - Next - - Dim i As Integer = 1 - Dim j As Integer = 0 - Dim xUbound As Integer = UBound(Notes) - - Do While i <= xUbound - If Not Notes(i).LongNote Then i += 1 : Continue Do - - For j = i + 1 To xUbound - If Notes(j).ColumnIndex <> Notes(i).ColumnIndex Then Continue For - - If Notes(j).LongNote Then - Notes(i).Length = Notes(j).VPosition - Notes(i).VPosition - For j2 As Integer = j To xUbound - 1 - Notes(j2) = Notes(j2 + 1) - Next - xUbound -= 1 - Exit For - - ElseIf Notes(j).Value \ 10000 = LnObj Then - Exit For - - End If - Next - - i += 1 - Loop - - ReDim Preserve Notes(xUbound) - - For i = 0 To xUbound - Notes(i).LongNote = False - Next - - SortByVPositionInsertion() - UpdatePairing() - CalculateTotalPlayableNotes() - End Sub - - Private Sub ConvertNT2BMSE() - ReDim SelectedNotes(-1) - Dim xK(0) As Note - xK(0) = Notes(0) - - For xI1 As Integer = 1 To UBound(Notes) - ReDim Preserve xK(UBound(xK) + 1) - With xK(UBound(xK)) - .ColumnIndex = Notes(xI1).ColumnIndex - .LongNote = Notes(xI1).Length > 0 - .Landmine = Notes(xI1).Landmine - .Value = Notes(xI1).Value - .VPosition = Notes(xI1).VPosition - .Selected = Notes(xI1).Selected - .Hidden = Notes(xI1).Hidden - End With - - If Notes(xI1).Length > 0 Then - ReDim Preserve xK(UBound(xK) + 1) - With xK(UBound(xK)) - .ColumnIndex = Notes(xI1).ColumnIndex - .LongNote = True - .Landmine = False - .Value = Notes(xI1).Value - .VPosition = Notes(xI1).VPosition + Notes(xI1).Length - .Selected = Notes(xI1).Selected - .Hidden = Notes(xI1).Hidden - End With - End If - Next - - Notes = xK - - SortByVPositionInsertion() - UpdatePairing() - CalculateTotalPlayableNotes() - End Sub - - Private Sub TBWavIncrease_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBWavIncrease.Click - Dim xUndo As UndoRedo.LinkedURCmd = Nothing - Dim xRedo As UndoRedo.LinkedURCmd = New UndoRedo.Void - Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo - - TBWavIncrease.Checked = Not sender.Checked - Me.RedoWavIncrease(TBWavIncrease.Checked, xUndo, xRedo) - AddUndo(xUndo, xBaseRedo.Next) - End Sub - - Private Sub TBNTInput_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBNTInput.Click, mnNTInput.Click - 'Dim xUndo As String = "NT_" & CInt(NTInput) & "_0" & vbCrLf & "KZ" & vbCrLf & sCmdKsAll(False) - 'Dim xRedo As String = "NT_" & CInt(Not NTInput) & "_1" - Dim xUndo As UndoRedo.LinkedURCmd = Nothing - Dim xRedo As UndoRedo.LinkedURCmd = New UndoRedo.Void - Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo - - Me.RedoRemoveNoteAll(False, xUndo, xRedo) - - NTInput = sender.Checked - - TBNTInput.Checked = NTInput - mnNTInput.Checked = NTInput - POBLong.Enabled = Not NTInput - POBLongShort.Enabled = Not NTInput - - bAdjustLength = False - bAdjustUpper = False - - Me.RedoNT(NTInput, False, xUndo, xRedo) - If NTInput Then - ConvertBMSE2NT() - Else - ConvertNT2BMSE() - End If - Me.RedoAddNoteAll(False, xUndo, xRedo) - - AddUndo(xUndo, xBaseRedo.Next) - RefreshPanelAll() - End Sub - - Private Sub THBPM_ValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles THBPM.ValueChanged - If Notes IsNot Nothing Then Notes(0).Value = THBPM.Value * 10000 : RefreshPanelAll() - If IsSaved Then SetIsSaved(False) - End Sub - - Private Sub TWPosition_ValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TWPosition.ValueChanged - wPosition = TWPosition.Value - TWPosition2.Value = IIf(wPosition > TWPosition2.Maximum, TWPosition2.Maximum, wPosition) - RefreshPanelAll() - End Sub - - Private Sub TWLeft_ValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TWLeft.ValueChanged - wLeft = TWLeft.Value - TWLeft2.Value = IIf(wLeft > TWLeft2.Maximum, TWLeft2.Maximum, wLeft) - RefreshPanelAll() - End Sub - - Private Sub TWWidth_ValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TWWidth.ValueChanged - wWidth = TWWidth.Value - TWWidth2.Value = IIf(wWidth > TWWidth2.Maximum, TWWidth2.Maximum, wWidth) - RefreshPanelAll() - End Sub - - Private Sub TWPrecision_ValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TWPrecision.ValueChanged - wPrecision = TWPrecision.Value - TWPrecision2.Value = IIf(wPrecision > TWPrecision2.Maximum, TWPrecision2.Maximum, wPrecision) - RefreshPanelAll() - End Sub - - Private Sub TWTransparency_ValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TWTransparency.ValueChanged - TWTransparency2.Value = TWTransparency.Value - vo.pBGMWav.Color = Color.FromArgb(TWTransparency.Value, vo.pBGMWav.Color) - RefreshPanelAll() - End Sub - - Private Sub TWSaturation_ValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TWSaturation.ValueChanged - Dim xColor As Color = vo.pBGMWav.Color - TWSaturation2.Value = TWSaturation.Value - vo.pBGMWav.Color = HSL2RGB(xColor.GetHue, TWSaturation.Value, xColor.GetBrightness * 1000, xColor.A) - RefreshPanelAll() - End Sub - - Private Sub TWPosition2_Scroll(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TWPosition2.Scroll - TWPosition.Value = TWPosition2.Value - End Sub - - Private Sub TWLeft2_Scroll(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TWLeft2.Scroll - TWLeft.Value = TWLeft2.Value - End Sub - - Private Sub TWWidth2_Scroll(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TWWidth2.Scroll - TWWidth.Value = TWWidth2.Value - End Sub - - Private Sub TWPrecision2_Scroll(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TWPrecision2.Scroll - TWPrecision.Value = TWPrecision2.Value - End Sub - - Private Sub TWTransparency2_Scroll(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TWTransparency2.Scroll - TWTransparency.Value = TWTransparency2.Value - End Sub - - Private Sub TWSaturation2_Scroll(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TWSaturation2.Scroll - TWSaturation.Value = TWSaturation2.Value - End Sub - - Private Sub TBLangDef_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBLangDef.Click - DispLang = "" - MsgBox(Strings.Messages.PreferencePostpone, MsgBoxStyle.Information) - End Sub - - Private Sub TBLangRefresh_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBLangRefresh.Click - For xI1 As Integer = cmnLanguage.Items.Count - 1 To 3 Step -1 - Try - cmnLanguage.Items.RemoveAt(xI1) - Catch ex As Exception - End Try - Next - - If Not Directory.Exists(My.Application.Info.DirectoryPath & "\Data") Then My.Computer.FileSystem.CreateDirectory(My.Application.Info.DirectoryPath & "\Data") - Dim xFileNames() As FileInfo = My.Computer.FileSystem.GetDirectoryInfo(My.Application.Info.DirectoryPath & "\Data").GetFiles("*.Lang.xml") - - For Each xStr As FileInfo In xFileNames - LoadLocaleXML(xStr) - Next - End Sub - - - Private Sub UpdateColumnsX() - column(0).Left = 0 - 'If col(0).Width = 0 Then col(0).Visible = False - - For xI1 As Integer = 1 To UBound(column) - column(xI1).Left = column(xI1 - 1).Left + IIf(column(xI1 - 1).isVisible, column(xI1 - 1).Width, 0) - 'If col(xI1).Width = 0 Then col(xI1).Visible = False - Next - HSL.Maximum = nLeft(gColumns) + column(niB).Width - HS.Maximum = nLeft(gColumns) + column(niB).Width - HSR.Maximum = nLeft(gColumns) + column(niB).Width - End Sub - - Private Sub CHPlayer_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CHPlayer.SelectedIndexChanged - If CHPlayer.SelectedIndex = -1 Then CHPlayer.SelectedIndex = 0 - - iPlayer = CHPlayer.SelectedIndex - Dim xGP2 As Boolean = iPlayer <> 0 - column(niD1).isVisible = xGP2 - column(niD2).isVisible = xGP2 - column(niD3).isVisible = xGP2 - column(niD4).isVisible = xGP2 - column(niD5).isVisible = xGP2 - column(niD6).isVisible = xGP2 - column(niD7).isVisible = xGP2 - column(niD8).isVisible = xGP2 - column(niS3).isVisible = xGP2 - - For xI1 As Integer = 1 To UBound(Notes) - Notes(xI1).Selected = Notes(xI1).Selected And nEnabled(Notes(xI1).ColumnIndex) - Next - 'AddUndo(xUndo, xRedo) - UpdateColumnsX() - - If IsInitializing Then Exit Sub - RefreshPanelAll() - End Sub - - Private Sub CGB_ValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CGB.ValueChanged - gColumns = niB + CGB.Value - 1 - UpdateColumnsX() - RefreshPanelAll() - End Sub - - Private Sub TBGOptions_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBGOptions.Click, mnGOptions.Click - Dim xTE As Integer - Select Case UCase(EncodingToString(TextEncoding)) ' az: wow seriously? is there really no better way? - Case "SYSTEM ANSI" : xTE = 0 - Case "LITTLE ENDIAN UTF16" : xTE = 1 - Case "ASCII" : xTE = 2 - Case "BIG ENDIAN UTF16" : xTE = 3 - Case "LITTLE ENDIAN UTF32" : xTE = 4 - Case "UTF7" : xTE = 5 - Case "UTF8" : xTE = 6 - Case "SJIS" : xTE = 7 - Case "EUC-KR" : xTE = 8 - Case Else : xTE = 0 - End Select - - Dim xDiag As New OpGeneral(gWheel, gPgUpDn, MiddleButtonMoveMethod, xTE, 192.0R / BMSGridLimit, - AutoSaveInterval, BeepWhileSaved, BPMx1296, STOPx1296, - AutoFocusMouseEnter, FirstClickDisabled, ClickStopPreview) - - If xDiag.ShowDialog() = Windows.Forms.DialogResult.OK Then - With xDiag - gWheel = .zWheel - gPgUpDn = .zPgUpDn - TextEncoding = .zEncoding - 'SortingMethod = .zSort - MiddleButtonMoveMethod = .zMiddle - AutoSaveInterval = .zAutoSave - BMSGridLimit = 192.0R / .zGridPartition - BeepWhileSaved = .cBeep.Checked - BPMx1296 = .cBpm1296.Checked - STOPx1296 = .cStop1296.Checked - AutoFocusMouseEnter = .cMEnterFocus.Checked - FirstClickDisabled = .cMClickFocus.Checked - ClickStopPreview = .cMStopPreview.Checked - ' KeyBindDP = .cMKeyBindDP.Checked - End With - If AutoSaveInterval Then AutoSaveTimer.Interval = AutoSaveInterval - AutoSaveTimer.Enabled = AutoSaveInterval - End If - End Sub - - Private Sub POBLong_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles POBLong.Click - If NTInput Then Exit Sub - - Dim xUndo As UndoRedo.LinkedURCmd = Nothing - Dim xRedo As UndoRedo.LinkedURCmd = New UndoRedo.Void - Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo - - For xI1 As Integer = 1 To UBound(Notes) - If Not Notes(xI1).Selected Then Continue For - - Me.RedoLongNoteModify(Notes(xI1), Notes(xI1).VPosition, True, xUndo, xRedo) - Notes(xI1).LongNote = True - Next - AddUndo(xUndo, xBaseRedo.Next) - SortByVPositionInsertion() - UpdatePairing() - RefreshPanelAll() - End Sub - - Private Sub POBNormal_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles POBShort.Click - Dim xUndo As UndoRedo.LinkedURCmd = Nothing - Dim xRedo As UndoRedo.LinkedURCmd = New UndoRedo.Void - Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo - - If Not NTInput Then - For xI1 As Integer = 1 To UBound(Notes) - If Not Notes(xI1).Selected Then Continue For - - Me.RedoLongNoteModify(Notes(xI1), Notes(xI1).VPosition, 0, xUndo, xRedo) - Notes(xI1).LongNote = False - Next - - Else - For xI1 As Integer = 1 To UBound(Notes) - If Not Notes(xI1).Selected Then Continue For - - Me.RedoLongNoteModify(Notes(xI1), Notes(xI1).VPosition, 0, xUndo, xRedo) - Notes(xI1).Length = 0 - Next - End If - - AddUndo(xUndo, xBaseRedo.Next) - SortByVPositionInsertion() - UpdatePairing() - RefreshPanelAll() - End Sub - - Private Sub POBNormalLong_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles POBLongShort.Click - If NTInput Then Exit Sub - - Dim xUndo As UndoRedo.LinkedURCmd = Nothing - Dim xRedo As UndoRedo.LinkedURCmd = New UndoRedo.Void - Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo - - For xI1 As Integer = 1 To UBound(Notes) - If Not Notes(xI1).Selected Then Continue For - - Me.RedoLongNoteModify(Notes(xI1), Notes(xI1).VPosition, Not Notes(xI1).LongNote, xUndo, xRedo) - Notes(xI1).LongNote = Not Notes(xI1).LongNote - Next - - AddUndo(xUndo, xBaseRedo.Next) - SortByVPositionInsertion() - UpdatePairing() - RefreshPanelAll() - End Sub - - Private Sub POBHidden_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles POBHidden.Click - Dim xUndo As UndoRedo.LinkedURCmd = Nothing - Dim xRedo As UndoRedo.LinkedURCmd = New UndoRedo.Void - Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo - - For xI1 As Integer = 1 To UBound(Notes) - If Not Notes(xI1).Selected Then Continue For - - Me.RedoHiddenNoteModify(Notes(xI1), True, True, xUndo, xRedo) - Notes(xI1).Hidden = True - Next - AddUndo(xUndo, xBaseRedo.Next) - SortByVPositionInsertion() - UpdatePairing() - RefreshPanelAll() - End Sub - - Private Sub POBVisible_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles POBVisible.Click - Dim xUndo As UndoRedo.LinkedURCmd = Nothing - Dim xRedo As UndoRedo.LinkedURCmd = New UndoRedo.Void - Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo - - For xI1 As Integer = 1 To UBound(Notes) - If Not Notes(xI1).Selected Then Continue For - - Me.RedoHiddenNoteModify(Notes(xI1), False, True, xUndo, xRedo) - Notes(xI1).Hidden = False - Next - AddUndo(xUndo, xBaseRedo.Next) - SortByVPositionInsertion() - UpdatePairing() - RefreshPanelAll() - End Sub - - Private Sub POBHiddenVisible_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles POBHiddenVisible.Click - Dim xUndo As UndoRedo.LinkedURCmd = Nothing - Dim xRedo As UndoRedo.LinkedURCmd = New UndoRedo.Void - Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo - - For xI1 As Integer = 1 To UBound(Notes) - If Not Notes(xI1).Selected Then Continue For - - Me.RedoHiddenNoteModify(Notes(xI1), Not Notes(xI1).Hidden, True, xUndo, xRedo) - Notes(xI1).Hidden = Not Notes(xI1).Hidden - Next - AddUndo(xUndo, xBaseRedo.Next) - SortByVPositionInsertion() - UpdatePairing() - RefreshPanelAll() - End Sub - - Private Sub POBModify_Click(ByVal sender As System.Object, ByVal e As EventArgs) Handles POBModify.Click - Dim xNum As Boolean = False - Dim xLbl As Boolean = False - Dim xI1 As Integer - - For xI1 = 1 To UBound(Notes) - If Notes(xI1).Selected AndAlso IsColumnNumeric(Notes(xI1).ColumnIndex) Then xNum = True : Exit For - Next - For xI1 = 1 To UBound(Notes) - If Notes(xI1).Selected AndAlso Not IsColumnNumeric(Notes(xI1).ColumnIndex) Then xLbl = True : Exit For - Next - If Not (xNum Or xLbl) Then Exit Sub - - If xNum Then - Dim xD1 As Double = Val(InputBox(Strings.Messages.PromptEnterNumeric, Text)) * 10000 - If Not xD1 = 0 Then - If xD1 <= 0 Then xD1 = 1 - - Dim xUndo As UndoRedo.LinkedURCmd = Nothing - Dim xRedo As UndoRedo.LinkedURCmd = New UndoRedo.Void - Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo - - For xI1 = 1 To UBound(Notes) - If Not IsColumnNumeric(Notes(xI1).ColumnIndex) Then Continue For - If Not Notes(xI1).Selected Then Continue For - - Me.RedoRelabelNote(Notes(xI1), xD1, xUndo, xRedo) - Notes(xI1).Value = xD1 - Next - AddUndo(xUndo, xBaseRedo.Next) - End If - End If - - If xLbl Then - Dim xStr As String = UCase(Trim(InputBox(Strings.Messages.PromptEnter, Me.Text))) - - If Len(xStr) = 0 Then GoTo Jump2 - If xStr = "00" Or xStr = "0" Then GoTo Jump1 - If Not Len(xStr) = 1 And Not Len(xStr) = 2 Then GoTo Jump1 - - Dim xI3 As Integer = Asc(Mid(xStr, 1, 1)) - If Not ((xI3 >= 48 And xI3 <= 57) Or (xI3 >= 65 And xI3 <= 90)) Then GoTo Jump1 - If Len(xStr) = 2 Then - Dim xI4 As Integer = Asc(Mid(xStr, 2, 1)) - If Not ((xI4 >= 48 And xI4 <= 57) Or (xI4 >= 65 And xI4 <= 90)) Then GoTo Jump1 - End If - Dim xVal As Integer = C36to10(xStr) * 10000 - - Dim xUndo As UndoRedo.LinkedURCmd = Nothing - Dim xRedo As UndoRedo.LinkedURCmd = New UndoRedo.Void - Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo - - For xI1 = 1 To UBound(Notes) - If IsColumnNumeric(Notes(xI1).ColumnIndex) Then Continue For - If Not Notes(xI1).Selected Then Continue For - - Me.RedoRelabelNote(Notes(xI1), xVal, xUndo, xRedo) - Notes(xI1).Value = xVal - Next - AddUndo(xUndo, xBaseRedo.Next) - GoTo Jump2 -Jump1: - MsgBox(Strings.Messages.InvalidLabel, MsgBoxStyle.Critical, Strings.Messages.Err) -Jump2: - End If - - RefreshPanelAll() - End Sub - - Private Sub TBMyO2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBMyO2.Click, mnMyO2.Click - Dim xDiag As New dgMyO2 - xDiag.Show() - End Sub - - - Private Sub TBFind_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBFind.Click, mnFind.Click - Dim xDiag As New diagFind(gColumns, Strings.Messages.Err, Strings.Messages.InvalidLabel) - xDiag.Show() - End Sub - - Private Function fdrCheck(ByVal xNote As Note) As Boolean - Return xNote.VPosition >= MeasureBottom(fdriMesL) And xNote.VPosition < MeasureBottom(fdriMesU) + MeasureLength(fdriMesU) AndAlso - IIf(IsColumnNumeric(xNote.ColumnIndex), - xNote.Value >= fdriValL And xNote.Value <= fdriValU, - xNote.Value >= fdriLblL And xNote.Value <= fdriLblU) AndAlso - Array.IndexOf(fdriCol, xNote.ColumnIndex - 1) <> -1 - ' lol Fixed - End Function - - Private Function fdrRangeS(ByVal xbLim1 As Boolean, ByVal xbLim2 As Boolean, ByVal xVal As Boolean) As Boolean - Return (Not xbLim1 And xbLim2 And xVal) Or (xbLim1 And Not xbLim2 And Not xVal) Or (xbLim1 And xbLim2) - End Function - - Public Sub fdrSelect(ByVal iRange As Integer, - ByVal xMesL As Integer, ByVal xMesU As Integer, - ByVal xLblL As String, ByVal xLblU As String, - ByVal xValL As Integer, ByVal xValU As Integer, - ByVal iCol() As Integer) - - fdriMesL = xMesL - fdriMesU = xMesU - fdriLblL = C36to10(xLblL) * 10000 - fdriLblU = C36to10(xLblU) * 10000 - fdriValL = xValL - fdriValU = xValU - fdriCol = iCol - - Dim xbSel As Boolean = iRange Mod 2 = 0 - Dim xbUnsel As Boolean = iRange Mod 3 = 0 - Dim xbShort As Boolean = iRange Mod 5 = 0 - Dim xbLong As Boolean = iRange Mod 7 = 0 - Dim xbHidden As Boolean = iRange Mod 11 = 0 - Dim xbVisible As Boolean = iRange Mod 13 = 0 - - Dim xSel(UBound(Notes)) As Boolean - For xI1 As Integer = 1 To UBound(Notes) - xSel(xI1) = Notes(xI1).Selected - Next - - 'Main process - For xI1 As Integer = 1 To UBound(Notes) - Dim bbba As Boolean = xbSel And xSel(xI1) - Dim bbbb As Boolean = xbUnsel And Not xSel(xI1) - Dim bbbc As Boolean = nEnabled(Notes(xI1).ColumnIndex) - Dim bbbd As Boolean = fdrRangeS(xbShort, xbLong, IIf(NTInput, Notes(xI1).Length, Notes(xI1).LongNote)) - Dim bbbe As Boolean = fdrRangeS(xbVisible, xbHidden, Notes(xI1).Hidden) - Dim bbbf As Boolean = fdrCheck(Notes(xI1)) - - If ((xbSel And xSel(xI1)) Or (xbUnsel And Not xSel(xI1))) AndAlso - nEnabled(Notes(xI1).ColumnIndex) AndAlso fdrRangeS(xbShort, xbLong, IIf(NTInput, Notes(xI1).Length, Notes(xI1).LongNote)) And fdrRangeS(xbVisible, xbHidden, Notes(xI1).Hidden) Then - Notes(xI1).Selected = fdrCheck(Notes(xI1)) - End If - Next - - RefreshPanelAll() - Beep() - End Sub - - Public Sub fdrUnselect(ByVal iRange As Integer, - ByVal xMesL As Integer, ByVal xMesU As Integer, - ByVal xLblL As String, ByVal xLblU As String, - ByVal xValL As Integer, ByVal xValU As Integer, - ByVal iCol() As Integer) - - fdriMesL = xMesL - fdriMesU = xMesU - fdriLblL = C36to10(xLblL) * 10000 - fdriLblU = C36to10(xLblU) * 10000 - fdriValL = xValL - fdriValU = xValU - fdriCol = iCol - - Dim xbSel As Boolean = iRange Mod 2 = 0 - Dim xbUnsel As Boolean = iRange Mod 3 = 0 - Dim xbShort As Boolean = iRange Mod 5 = 0 - Dim xbLong As Boolean = iRange Mod 7 = 0 - Dim xbHidden As Boolean = iRange Mod 11 = 0 - Dim xbVisible As Boolean = iRange Mod 13 = 0 - - Dim xSel(UBound(Notes)) As Boolean - For xI1 As Integer = 1 To UBound(Notes) - xSel(xI1) = Notes(xI1).Selected - Next - - 'Main process - For xI1 As Integer = 1 To UBound(Notes) - If ((xbSel And xSel(xI1)) Or (xbUnsel And Not xSel(xI1))) AndAlso - nEnabled(Notes(xI1).ColumnIndex) AndAlso fdrRangeS(xbShort, xbLong, IIf(NTInput, Notes(xI1).Length, Notes(xI1).LongNote)) And fdrRangeS(xbVisible, xbHidden, Notes(xI1).Hidden) Then - Notes(xI1).Selected = Not fdrCheck(Notes(xI1)) - End If - Next - - RefreshPanelAll() - Beep() - End Sub - - Public Sub fdrDelete(ByVal iRange As Integer, - ByVal xMesL As Integer, ByVal xMesU As Integer, - ByVal xLblL As String, ByVal xLblU As String, - ByVal xValL As Integer, ByVal xValU As Integer, - ByVal iCol() As Integer) - - fdriMesL = xMesL - fdriMesU = xMesU - fdriLblL = C36to10(xLblL) * 10000 - fdriLblU = C36to10(xLblU) * 10000 - fdriValL = xValL - fdriValU = xValU - fdriCol = iCol - - Dim xbSel As Boolean = iRange Mod 2 = 0 - Dim xbUnsel As Boolean = iRange Mod 3 = 0 - Dim xbShort As Boolean = iRange Mod 5 = 0 - Dim xbLong As Boolean = iRange Mod 7 = 0 - Dim xbHidden As Boolean = iRange Mod 11 = 0 - Dim xbVisible As Boolean = iRange Mod 13 = 0 - - Dim xUndo As UndoRedo.LinkedURCmd = Nothing - Dim xRedo As UndoRedo.LinkedURCmd = New UndoRedo.Void - Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo - - 'Main process - Dim xI1 As Integer = 1 - Do While xI1 <= UBound(Notes) - If ((xbSel And Notes(xI1).Selected) Or (xbUnsel And Not Notes(xI1).Selected)) AndAlso - fdrCheck(Notes(xI1)) AndAlso nEnabled(Notes(xI1).ColumnIndex) AndAlso fdrRangeS(xbShort, xbLong, IIf(NTInput, Notes(xI1).Length, Notes(xI1).LongNote)) And fdrRangeS(xbVisible, xbHidden, Notes(xI1).Hidden) Then - RedoRemoveNote(Notes(xI1), xUndo, xRedo) - RemoveNote(xI1, False) - Else - xI1 += 1 - End If - Loop - - AddUndo(xUndo, xBaseRedo.Next) - SortByVPositionInsertion() - UpdatePairing() - RefreshPanelAll() - CalculateTotalPlayableNotes() - Beep() - End Sub - - Public Sub fdrReplaceL(ByVal iRange As Integer, - ByVal xMesL As Integer, ByVal xMesU As Integer, - ByVal xLblL As String, ByVal xLblU As String, - ByVal xValL As Integer, ByVal xValU As Integer, - ByVal iCol() As Integer, ByVal xReplaceLbl As String) - - fdriMesL = xMesL - fdriMesU = xMesU - fdriLblL = C36to10(xLblL) * 10000 - fdriLblU = C36to10(xLblU) * 10000 - fdriValL = xValL - fdriValU = xValU - fdriCol = iCol - - Dim xbSel As Boolean = iRange Mod 2 = 0 - Dim xbUnsel As Boolean = iRange Mod 3 = 0 - Dim xbShort As Boolean = iRange Mod 5 = 0 - Dim xbLong As Boolean = iRange Mod 7 = 0 - Dim xbHidden As Boolean = iRange Mod 11 = 0 - Dim xbVisible As Boolean = iRange Mod 13 = 0 - - Dim xxLbl As Integer = C36to10(xReplaceLbl) * 10000 - - Dim xUndo As UndoRedo.LinkedURCmd = Nothing - Dim xRedo As UndoRedo.LinkedURCmd = New UndoRedo.Void - Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo - - 'Main process - For xI1 As Integer = 1 To UBound(Notes) - If ((xbSel And Notes(xI1).Selected) Or (xbUnsel And Not Notes(xI1).Selected)) AndAlso - fdrCheck(Notes(xI1)) AndAlso nEnabled(Notes(xI1).ColumnIndex) And Not IsColumnNumeric(Notes(xI1).ColumnIndex) AndAlso fdrRangeS(xbShort, xbLong, IIf(NTInput, Notes(xI1).Length, Notes(xI1).LongNote)) And fdrRangeS(xbVisible, xbHidden, Notes(xI1).Hidden) Then - 'xUndo &= sCmdKC(K(xI1).ColumnIndex, K(xI1).VPosition, xxLbl, IIf(NTInput, K(xI1).Length, K(xI1).LongNote), K(xI1).Hidden, 0, 0, K(xI1).Value, IIf(NTInput, K(xI1).Length, K(xI1).LongNote), K(xI1).Hidden, True) & vbCrLf - 'xRedo &= sCmdKC(K(xI1).ColumnIndex, K(xI1).VPosition, K(xI1).Value, IIf(NTInput, K(xI1).Length, K(xI1).LongNote), K(xI1).Hidden, 0, 0, xxLbl, IIf(NTInput, K(xI1).Length, K(xI1).LongNote), K(xI1).Hidden, True) & vbCrLf - Me.RedoRelabelNote(Notes(xI1), xxLbl, xUndo, xRedo) - Notes(xI1).Value = xxLbl - End If - Next - - AddUndo(xUndo, xBaseRedo.Next) - RefreshPanelAll() - Beep() - End Sub - - Public Sub fdrReplaceV(ByVal iRange As Integer, - ByVal xMesL As Integer, ByVal xMesU As Integer, - ByVal xLblL As String, ByVal xLblU As String, - ByVal xValL As Integer, ByVal xValU As Integer, - ByVal iCol() As Integer, ByVal xReplaceVal As Integer) - - fdriMesL = xMesL - fdriMesU = xMesU - fdriLblL = C36to10(xLblL) * 10000 - fdriLblU = C36to10(xLblU) * 10000 - fdriValL = xValL - fdriValU = xValU - fdriCol = iCol - - Dim xbSel As Boolean = iRange Mod 2 = 0 - Dim xbUnsel As Boolean = iRange Mod 3 = 0 - Dim xbShort As Boolean = iRange Mod 5 = 0 - Dim xbLong As Boolean = iRange Mod 7 = 0 - Dim xbHidden As Boolean = iRange Mod 11 = 0 - Dim xbVisible As Boolean = iRange Mod 13 = 0 - - Dim xUndo As UndoRedo.LinkedURCmd = Nothing - Dim xRedo As UndoRedo.LinkedURCmd = New UndoRedo.Void - Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo - - 'Main process - For xI1 As Integer = 1 To UBound(Notes) - If ((xbSel And Notes(xI1).Selected) Or (xbUnsel And Not Notes(xI1).Selected)) AndAlso - fdrCheck(Notes(xI1)) AndAlso nEnabled(Notes(xI1).ColumnIndex) And IsColumnNumeric(Notes(xI1).ColumnIndex) AndAlso fdrRangeS(xbShort, xbLong, IIf(NTInput, Notes(xI1).Length, Notes(xI1).LongNote)) And fdrRangeS(xbVisible, xbHidden, Notes(xI1).Hidden) Then - 'xUndo &= sCmdKC(K(xI1).ColumnIndex, K(xI1).VPosition, xReplaceVal, IIf(NTInput, K(xI1).Length, K(xI1).LongNote), K(xI1).Hidden, 0, 0, K(xI1).Value, IIf(NTInput, K(xI1).Length, K(xI1).LongNote), K(xI1).Hidden, True) & vbCrLf - 'xRedo &= sCmdKC(K(xI1).ColumnIndex, K(xI1).VPosition, K(xI1).Value, IIf(NTInput, K(xI1).Length, K(xI1).LongNote), K(xI1).Hidden, 0, 0, xReplaceVal, IIf(NTInput, K(xI1).Length, K(xI1).LongNote), K(xI1).Hidden, True) & vbCrLf - Me.RedoRelabelNote(Notes(xI1), xReplaceVal, xUndo, xRedo) - Notes(xI1).Value = xReplaceVal - End If - Next - - AddUndo(xUndo, xBaseRedo.Next) - RefreshPanelAll() - Beep() - End Sub - - Private Sub MInsert_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MInsert.Click - Dim xUndo As UndoRedo.LinkedURCmd = Nothing - Dim xRedo As UndoRedo.LinkedURCmd = New UndoRedo.Void - Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo - - Dim xMeasure As Integer = MeasureAtDisplacement(menuVPosition) - Dim xMLength As Double = MeasureLength(xMeasure) - Dim xVP As Double = MeasureBottom(xMeasure) - - If NTInput Then - Dim xI1 As Integer = 1 - Do While xI1 <= UBound(Notes) - If MeasureAtDisplacement(Notes(xI1).VPosition) >= 999 Then - Me.RedoRemoveNote(Notes(xI1), xUndo, xRedo) - RemoveNote(xI1, False) - Else - xI1 += 1 - End If - Loop - - Dim xdVP As Double - For xI1 = 1 To UBound(Notes) - If Notes(xI1).VPosition >= xVP And Notes(xI1).VPosition + Notes(xI1).Length <= MeasureBottom(999) Then - Me.RedoMoveNote(Notes(xI1), Notes(xI1).ColumnIndex, Notes(xI1).VPosition + xMLength, xUndo, xRedo) - Notes(xI1).VPosition += xMLength - - ElseIf Notes(xI1).VPosition >= xVP Then - xdVP = MeasureBottom(999) - 1 - Notes(xI1).VPosition - Notes(xI1).Length - Me.RedoLongNoteModify(Notes(xI1), Notes(xI1).VPosition + xMLength, Notes(xI1).Length + xdVP, xUndo, xRedo) - Notes(xI1).VPosition += xMLength - Notes(xI1).Length += xdVP - - ElseIf Notes(xI1).VPosition + Notes(xI1).Length >= xVP Then - xdVP = IIf(Notes(xI1).VPosition + Notes(xI1).Length > MeasureBottom(999) - 1, GetMaxVPosition() - 1 - Notes(xI1).VPosition - Notes(xI1).Length, xMLength) - Me.RedoLongNoteModify(Notes(xI1), Notes(xI1).VPosition, Notes(xI1).Length + xdVP, xUndo, xRedo) - Notes(xI1).Length += xdVP - End If - Next - - Else - Dim xI1 As Integer = 1 - Do While xI1 <= UBound(Notes) - If MeasureAtDisplacement(Notes(xI1).VPosition) >= 999 Then - Me.RedoRemoveNote(Notes(xI1), xUndo, xRedo) - RemoveNote(xI1, False) - Else - xI1 += 1 - End If - Loop - - For xI1 = 1 To UBound(Notes) - If Notes(xI1).VPosition >= xVP Then - Me.RedoMoveNote(Notes(xI1), Notes(xI1).ColumnIndex, Notes(xI1).VPosition + xMLength, xUndo, xRedo) - Notes(xI1).VPosition += xMLength - End If - Next - End If - - For xI1 As Integer = 999 To xMeasure + 1 Step -1 - MeasureLength(xI1) = MeasureLength(xI1 - 1) - Next - UpdateMeasureBottom() - - AddUndo(xUndo, xBaseRedo.Next) - UpdatePairing() - CalculateGreatestVPosition() - CalculateTotalPlayableNotes() - RefreshPanelAll() - End Sub - - Private Sub MRemove_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MRemove.Click - Dim xUndo As UndoRedo.LinkedURCmd = Nothing - Dim xRedo As UndoRedo.LinkedURCmd = New UndoRedo.Void - Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo - - Dim xMeasure As Integer = MeasureAtDisplacement(menuVPosition) - Dim xMLength As Double = MeasureLength(xMeasure) - Dim xVP As Double = MeasureBottom(xMeasure) - - If NTInput Then - Dim xI1 As Integer = 1 - Do While xI1 <= UBound(Notes) - If MeasureAtDisplacement(Notes(xI1).VPosition) = xMeasure And MeasureAtDisplacement(Notes(xI1).VPosition + Notes(xI1).Length) = xMeasure Then - Me.RedoRemoveNote(Notes(xI1), xUndo, xRedo) - RemoveNote(xI1, False) - Else - xI1 += 1 - End If - Loop - - Dim xdVP As Double - xVP = MeasureBottom(xMeasure) - For xI1 = 1 To UBound(Notes) - If Notes(xI1).VPosition >= xVP + xMLength Then - Me.RedoMoveNote(Notes(xI1), Notes(xI1).ColumnIndex, Notes(xI1).VPosition - xMLength, xUndo, xRedo) - Notes(xI1).VPosition -= xMLength - - ElseIf Notes(xI1).VPosition >= xVP Then - xdVP = xMLength + xVP - Notes(xI1).VPosition - Me.RedoLongNoteModify(Notes(xI1), Notes(xI1).VPosition + xdVP - xMLength, Notes(xI1).Length - xdVP, xUndo, xRedo) - Notes(xI1).VPosition += xdVP - xMLength - Notes(xI1).Length -= xdVP - - ElseIf Notes(xI1).VPosition + Notes(xI1).Length >= xVP Then - xdVP = IIf(Notes(xI1).VPosition + Notes(xI1).Length >= xVP + xMLength, xMLength, Notes(xI1).VPosition + Notes(xI1).Length - xVP + 1) - Me.RedoLongNoteModify(Notes(xI1), Notes(xI1).VPosition, Notes(xI1).Length - xdVP, xUndo, xRedo) - Notes(xI1).Length -= xdVP - End If - Next - - Else - Dim xI1 As Integer = 1 - Do While xI1 <= UBound(Notes) - If MeasureAtDisplacement(Notes(xI1).VPosition) = xMeasure Then - Me.RedoRemoveNote(Notes(xI1), xUndo, xRedo) - RemoveNote(xI1, False) - Else - xI1 += 1 - End If - Loop - - xVP = MeasureBottom(xMeasure) - For xI1 = 1 To UBound(Notes) - If Notes(xI1).VPosition >= xVP Then - Me.RedoMoveNote(Notes(xI1), Notes(xI1).ColumnIndex, Notes(xI1).VPosition - xMLength, xUndo, xRedo) - Notes(xI1).VPosition -= xMLength - End If - Next - End If - - For xI1 As Integer = 999 To xMeasure + 1 Step -1 - MeasureLength(xI1 - 1) = MeasureLength(xI1) - Next - UpdateMeasureBottom() - - AddUndo(xUndo, xBaseRedo.Next) - SortByVPositionInsertion() - UpdatePairing() - CalculateGreatestVPosition() - CalculateTotalPlayableNotes() - RefreshPanelAll() - End Sub - - Private Sub TBThemeDef_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBThemeDef.Click - Dim xTempFileName As String = My.Application.Info.DirectoryPath & "\____TempFile.Theme.xml" - My.Computer.FileSystem.WriteAllText(xTempFileName, My.Resources.O2Mania_Theme, False, System.Text.Encoding.Unicode) - LoadSettings(xTempFileName) - System.IO.File.Delete(xTempFileName) - - RefreshPanelAll() - End Sub - - Private Sub TBThemeSave_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBThemeSave.Click - Dim xDiag As New SaveFileDialog - xDiag.Filter = Strings.FileType.THEME_XML & "|*.Theme.xml" - xDiag.DefaultExt = "Theme.xml" - xDiag.InitialDirectory = My.Application.Info.DirectoryPath & "\Data" - If xDiag.ShowDialog = Windows.Forms.DialogResult.Cancel Then Exit Sub - - Me.SaveSettings(xDiag.FileName, True) - If BeepWhileSaved Then Beep() - TBThemeRefresh_Click(TBThemeRefresh, New System.EventArgs) - End Sub - - Private Sub TBThemeRefresh_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBThemeRefresh.Click - For xI1 As Integer = cmnTheme.Items.Count - 1 To 5 Step -1 - Try - cmnTheme.Items.RemoveAt(xI1) - Catch ex As Exception - End Try - Next - - If Not Directory.Exists(My.Application.Info.DirectoryPath & "\Data") Then My.Computer.FileSystem.CreateDirectory(My.Application.Info.DirectoryPath & "\Data") - Dim xFileNames() As FileInfo = My.Computer.FileSystem.GetDirectoryInfo(My.Application.Info.DirectoryPath & "\Data").GetFiles("*.Theme.xml") - For Each xStr As FileInfo In xFileNames - cmnTheme.Items.Add(xStr.Name, Nothing, AddressOf LoadTheme) - Next - End Sub - - Private Sub TBThemeLoadComptability_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBThemeLoadComptability.Click - Dim xDiag As New OpenFileDialog - xDiag.Filter = Strings.FileType.TH & "|*.th" - xDiag.DefaultExt = "th" - xDiag.InitialDirectory = My.Application.Info.DirectoryPath - If My.Computer.FileSystem.DirectoryExists(My.Application.Info.DirectoryPath & "\Theme") Then xDiag.InitialDirectory = My.Application.Info.DirectoryPath & "\Theme" - If xDiag.ShowDialog = Windows.Forms.DialogResult.Cancel Then Exit Sub - - Me.LoadThemeComptability(xDiag.FileName) - RefreshPanelAll() - End Sub - - ''' - ''' Will return Double.PositiveInfinity if canceled. - ''' - Private Function InputBoxDouble(ByVal Prompt As String, ByVal LBound As Double, ByVal UBound As Double, Optional ByVal Title As String = "", Optional ByVal DefaultResponse As String = "") As Double - Dim xStr As String = InputBox(Prompt, Title, DefaultResponse) - If xStr = "" Then Return Double.PositiveInfinity - - InputBoxDouble = Val(xStr) - If InputBoxDouble > UBound Then InputBoxDouble = UBound - If InputBoxDouble < LBound Then InputBoxDouble = LBound - End Function - - Private Sub FSSS_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles FSSS.Click - Dim xMax As Double = IIf(vSelLength > 0, GetMaxVPosition() - vSelLength, GetMaxVPosition) - Dim xMin As Double = IIf(vSelLength < 0, -vSelLength, 0) - Dim xDouble As Double = InputBoxDouble("Please enter a number between " & xMin & " and " & xMax & ".", xMin, xMax, , vSelStart) - If xDouble = Double.PositiveInfinity Then Return - - vSelStart = xDouble - ValidateSelection() - RefreshPanelAll() - POStatusRefresh() - End Sub - - Private Sub FSSL_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles FSSL.Click - Dim xMax As Double = GetMaxVPosition() - vSelStart - Dim xMin As Double = -vSelStart - Dim xDouble As Double = InputBoxDouble("Please enter a number between " & xMin & " and " & xMax & ".", xMin, xMax, , vSelLength) - If xDouble = Double.PositiveInfinity Then Return - - vSelLength = xDouble - ValidateSelection() - RefreshPanelAll() - POStatusRefresh() - End Sub - - Private Sub FSSH_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles FSSH.Click - Dim xMax As Double = IIf(vSelLength > 0, vSelLength, 0) - Dim xMin As Double = IIf(vSelLength > 0, 0, -vSelLength) - Dim xDouble As Double = InputBoxDouble("Please enter a number between " & xMin & " and " & xMax & ".", xMin, xMax, , vSelHalf) - If xDouble = Double.PositiveInfinity Then Return - - vSelHalf = xDouble - ValidateSelection() - RefreshPanelAll() - POStatusRefresh() - End Sub - - Private Sub BVCReverse_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BVCReverse.Click - vSelStart += vSelLength - vSelHalf -= vSelLength - vSelLength *= -1 - ValidateSelection() - RefreshPanelAll() - POStatusRefresh() - End Sub - - Private Sub AutoSaveTimer_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles AutoSaveTimer.Tick - Dim xTime As Date = Now - Dim xFileName As String - With xTime - xFileName = My.Application.Info.DirectoryPath & "\AutoSave_" & - .Year & "_" & .Month & "_" & .Day & "_" & .Hour & "_" & .Minute & "_" & .Second & "_" & .Millisecond & ".IBMSC" - End With - 'My.Computer.FileSystem.WriteAllText(xFileName, SaveiBMSC, False, System.Text.Encoding.Unicode) - SaveiBMSC(xFileName) - - On Error Resume Next - If PreviousAutoSavedFileName <> "" Then IO.File.Delete(PreviousAutoSavedFileName) - On Error GoTo 0 - - PreviousAutoSavedFileName = xFileName - End Sub - - Private Sub CWAVMultiSelect_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CWAVMultiSelect.CheckedChanged - WAVMultiSelect = CWAVMultiSelect.Checked - LWAV.SelectionMode = IIf(WAVMultiSelect, SelectionMode.MultiExtended, SelectionMode.One) - End Sub - - Private Sub CWAVChangeLabel_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CWAVChangeLabel.CheckedChanged - WAVChangeLabel = CWAVChangeLabel.Checked - End Sub - - Private Sub BWAVUp_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BWAVUp.Click - If LWAV.SelectedIndex = -1 Then Return - - Dim xUndo As UndoRedo.LinkedURCmd = Nothing - Dim xRedo As UndoRedo.LinkedURCmd = New UndoRedo.Void - Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo - - Dim xIndices(LWAV.SelectedIndices.Count - 1) As Integer - LWAV.SelectedIndices.CopyTo(xIndices, 0) - - Dim xS As Integer - For xS = 0 To 1294 - If Array.IndexOf(xIndices, xS) = -1 Then Exit For - Next - - Dim xStr As String = "" - Dim xIndex As Integer = -1 - For xI1 As Integer = xS To 1294 - xIndex = Array.IndexOf(xIndices, xI1) - If xIndex <> -1 Then - xStr = hWAV(xI1 + 1) - hWAV(xI1 + 1) = hWAV(xI1) - hWAV(xI1) = xStr - - LWAV.Items.Item(xI1) = C10to36(xI1 + 1) & ": " & hWAV(xI1 + 1) - LWAV.Items.Item(xI1 - 1) = C10to36(xI1) & ": " & hWAV(xI1) - - If Not WAVChangeLabel Then GoTo 1100 - - Dim xL1 As String = C10to36(xI1) - Dim xL2 As String = C10to36(xI1 + 1) - For xI2 As Integer = 1 To UBound(Notes) - If IsColumnNumeric(Notes(xI2).ColumnIndex) Then Continue For - - If C10to36(Notes(xI2).Value \ 10000) = xL1 Then - Me.RedoRelabelNote(Notes(xI2), xI1 * 10000 + 10000, xUndo, xRedo) - Notes(xI2).Value = xI1 * 10000 + 10000 - - ElseIf C10to36(Notes(xI2).Value \ 10000) = xL2 Then - Me.RedoRelabelNote(Notes(xI2), xI1 * 10000, xUndo, xRedo) - Notes(xI2).Value = xI1 * 10000 - - End If - Next - -1100: xIndices(xIndex) += -1 - End If - Next - - LWAV.SelectedIndices.Clear() - For xI1 As Integer = 0 To UBound(xIndices) - LWAV.SelectedIndices.Add(xIndices(xI1)) - Next - - AddUndo(xUndo, xBaseRedo.Next) - RefreshPanelAll() - POStatusRefresh() - End Sub - - Private Sub BWAVDown_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BWAVDown.Click - If LWAV.SelectedIndex = -1 Then Return - - Dim xUndo As UndoRedo.LinkedURCmd = Nothing - Dim xRedo As UndoRedo.LinkedURCmd = New UndoRedo.Void - Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo - - Dim xIndices(LWAV.SelectedIndices.Count - 1) As Integer - LWAV.SelectedIndices.CopyTo(xIndices, 0) - - Dim xS As Integer - For xS = 1294 To 0 Step -1 - If Array.IndexOf(xIndices, xS) = -1 Then Exit For - Next - - Dim xStr As String = "" - Dim xIndex As Integer = -1 - For xI1 As Integer = xS To 0 Step -1 - xIndex = Array.IndexOf(xIndices, xI1) - If xIndex <> -1 Then - xStr = hWAV(xI1 + 1) - hWAV(xI1 + 1) = hWAV(xI1 + 2) - hWAV(xI1 + 2) = xStr - - LWAV.Items.Item(xI1) = C10to36(xI1 + 1) & ": " & hWAV(xI1 + 1) - LWAV.Items.Item(xI1 + 1) = C10to36(xI1 + 2) & ": " & hWAV(xI1 + 2) - - If Not WAVChangeLabel Then GoTo 1100 - - Dim xL1 As String = C10to36(xI1 + 2) - Dim xL2 As String = C10to36(xI1 + 1) - For xI2 As Integer = 1 To UBound(Notes) - If IsColumnNumeric(Notes(xI2).ColumnIndex) Then Continue For - - If C10to36(Notes(xI2).Value \ 10000) = xL1 Then - Me.RedoRelabelNote(Notes(xI2), xI1 * 10000 + 10000, xUndo, xRedo) - Notes(xI2).Value = xI1 * 10000 + 10000 - - ElseIf C10to36(Notes(xI2).Value \ 10000) = xL2 Then - Me.RedoRelabelNote(Notes(xI2), xI1 * 10000 + 20000, xUndo, xRedo) - Notes(xI2).Value = xI1 * 10000 + 20000 - - End If - Next - -1100: xIndices(xIndex) += 1 - End If - Next - - LWAV.SelectedIndices.Clear() - For xI1 As Integer = 0 To UBound(xIndices) - LWAV.SelectedIndices.Add(xIndices(xI1)) - Next - - AddUndo(xUndo, xBaseRedo.Next) - RefreshPanelAll() - POStatusRefresh() - End Sub - - Private Sub BWAVBrowse_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BWAVBrowse.Click - Dim xDWAV As New OpenFileDialog - xDWAV.DefaultExt = "wav" - xDWAV.Filter = Strings.FileType._wave & "|*.wav;*.ogg;*.mp3|" & - Strings.FileType.WAV & "|*.wav|" & - Strings.FileType.OGG & "|*.ogg|" & - Strings.FileType.MP3 & "|*.mp3|" & - Strings.FileType._all & "|*.*" - xDWAV.InitialDirectory = IIf(ExcludeFileName(FileName) = "", InitPath, ExcludeFileName(FileName)) - xDWAV.Multiselect = WAVMultiSelect - - If xDWAV.ShowDialog = Windows.Forms.DialogResult.Cancel Then Exit Sub - InitPath = ExcludeFileName(xDWAV.FileName) - - AddToPOWAV(xDWAV.FileNames) - End Sub - - Private Sub BWAVRemove_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BWAVRemove.Click - Dim xIndices(LWAV.SelectedIndices.Count - 1) As Integer - LWAV.SelectedIndices.CopyTo(xIndices, 0) - For xI1 As Integer = 0 To UBound(xIndices) - hWAV(xIndices(xI1) + 1) = "" - LWAV.Items.Item(xIndices(xI1)) = C10to36(xIndices(xI1) + 1) & ": " - Next - - LWAV.SelectedIndices.Clear() - For xI1 As Integer = 0 To UBound(xIndices) - LWAV.SelectedIndices.Add(xIndices(xI1)) - Next - - If IsSaved Then SetIsSaved(False) - RefreshPanelAll() - POStatusRefresh() - End Sub - - Private Sub mnMain_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles mnMain.MouseDown ', TBMain.MouseDown ', pttl.MouseDown, pIsSaved.MouseDown - If e.Button = Windows.Forms.MouseButtons.Left Then - ReleaseCapture() - SendMessage(Me.Handle, &H112, &HF012, 0) - If e.Clicks = 2 Then - If Me.WindowState = FormWindowState.Maximized Then Me.WindowState = FormWindowState.Normal Else Me.WindowState = FormWindowState.Maximized - End If - ElseIf e.Button = Windows.Forms.MouseButtons.Right Then - 'mnSys.Show(sender, e.Location) - End If - End Sub - - Private Sub mnSelectAll_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnSelectAll.Click - If Not (PMainIn.Focused OrElse PMainInL.Focused Or PMainInR.Focused) Then Exit Sub - For xI1 As Integer = 1 To UBound(Notes) - Notes(xI1).Selected = nEnabled(Notes(xI1).ColumnIndex) - Next - If TBTimeSelect.Checked Then - CalculateGreatestVPosition() - vSelStart = 0 - vSelLength = MeasureBottom(MeasureAtDisplacement(GreatestVPosition)) + MeasureLength(MeasureAtDisplacement(GreatestVPosition)) - End If - RefreshPanelAll() - POStatusRefresh() - End Sub - - Private Sub mnDelete_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnDelete.Click - If Not (PMainIn.Focused OrElse PMainInL.Focused Or PMainInR.Focused) Then Exit Sub - - Dim xUndo As UndoRedo.LinkedURCmd = Nothing - Dim xRedo As UndoRedo.LinkedURCmd = New UndoRedo.Void - Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo - - Me.RedoRemoveNoteSelected(True, xUndo, xRedo) - RemoveNotes(True) - - AddUndo(xUndo, xBaseRedo.Next) - CalculateGreatestVPosition() - CalculateTotalPlayableNotes() - RefreshPanelAll() - POStatusRefresh() - End Sub - - Private Sub mnUpdate_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) - Process.Start("http://www.cs.mcgill.ca/~ryang6/iBMSC/") - End Sub - - Private Sub mnUpdateC_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) - Process.Start("http://bbs.rohome.net/thread-1074065-1-1.html") - End Sub - - Private Sub mnQuit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnQuit.Click - Close() - End Sub - - - Private Sub EnableDWM() - mnMain.BackColor = Color.Black - 'TBMain.BackColor = Color.FromArgb(64, 64, 64) - - For Each xmn As ToolStripMenuItem In mnMain.Items - xmn.ForeColor = Color.White - AddHandler xmn.DropDownClosed, AddressOf mn_DropDownClosed - AddHandler xmn.DropDownOpened, AddressOf mn_DropDownOpened - AddHandler xmn.MouseEnter, AddressOf mn_MouseEnter - AddHandler xmn.MouseLeave, AddressOf mn_MouseLeave - Next - End Sub - - Private Sub DisableDWM() - mnMain.BackColor = SystemColors.Control - 'TBMain.BackColor = SystemColors.Control - - For Each xmn As ToolStripMenuItem In mnMain.Items - xmn.ForeColor = SystemColors.ControlText - RemoveHandler xmn.DropDownClosed, AddressOf mn_DropDownClosed - RemoveHandler xmn.DropDownOpened, AddressOf mn_DropDownOpened - RemoveHandler xmn.MouseEnter, AddressOf mn_MouseEnter - RemoveHandler xmn.MouseLeave, AddressOf mn_MouseLeave - Next - End Sub - - Private Sub ttlIcon_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) - 'ttlIcon.Image = My.Resources.icon2_16 - 'mnSys.Show(ttlIcon, 0, ttlIcon.Height) - End Sub - Private Sub ttlIcon_MouseEnter(ByVal sender As Object, ByVal e As System.EventArgs) - 'ttlIcon.Image = My.Resources.icon2_16_highlight - End Sub - Private Sub ttlIcon_MouseLeave(ByVal sender As Object, ByVal e As System.EventArgs) - 'ttlIcon.Image = My.Resources.icon2_16 - End Sub - - Private Sub mnSMenu_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnSMenu.CheckedChanged - mnMain.Visible = mnSMenu.Checked - End Sub - Private Sub mnSTB_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnSTB.CheckedChanged - TBMain.Visible = mnSTB.Checked - End Sub - Private Sub mnSOP_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnSOP.CheckedChanged - POptions.Visible = mnSOP.Checked - End Sub - Private Sub mnSStatus_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnSStatus.CheckedChanged - pStatus.Visible = mnSStatus.Checked - End Sub - Private Sub mnSLSplitter_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnSLSplitter.CheckedChanged - SpL.Visible = mnSLSplitter.Checked - End Sub - Private Sub mnSRSplitter_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnSRSplitter.CheckedChanged - SpR.Visible = mnSRSplitter.Checked - End Sub - Private Sub CGShow_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CGShow.CheckedChanged - gShowGrid = CGShow.Checked - RefreshPanelAll() - End Sub - Private Sub CGShowS_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CGShowS.CheckedChanged - gShowSubGrid = CGShowS.Checked - RefreshPanelAll() - End Sub - Private Sub CGShowBG_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CGShowBG.CheckedChanged - gShowBG = CGShowBG.Checked - RefreshPanelAll() - End Sub - Private Sub CGShowM_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CGShowM.CheckedChanged - gShowMeasureNumber = CGShowM.Checked - RefreshPanelAll() - End Sub - Private Sub CGShowV_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CGShowV.CheckedChanged - gShowVerticalLine = CGShowV.Checked - RefreshPanelAll() - End Sub - Private Sub CGShowMB_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CGShowMB.CheckedChanged - gShowMeasureBar = CGShowMB.Checked - RefreshPanelAll() - End Sub - Private Sub CGShowC_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CGShowC.CheckedChanged - gShowC = CGShowC.Checked - RefreshPanelAll() - End Sub - Private Sub CGBLP_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CGBLP.CheckedChanged - gDisplayBGAColumn = CGBLP.Checked - - column(niBGA).isVisible = gDisplayBGAColumn - column(niLAYER).isVisible = gDisplayBGAColumn - column(niPOOR).isVisible = gDisplayBGAColumn - column(niS4).isVisible = gDisplayBGAColumn - - If IsInitializing Then Exit Sub - For xI1 As Integer = 1 To UBound(Notes) - Notes(xI1).Selected = Notes(xI1).Selected And nEnabled(Notes(xI1).ColumnIndex) - Next - 'AddUndo(xUndo, xRedo) - UpdateColumnsX() - RefreshPanelAll() - End Sub - Private Sub CGSCROLL_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CGSCROLL.CheckedChanged - gSCROLL = CGSCROLL.Checked - - column(niSCROLL).isVisible = gSCROLL - - If IsInitializing Then Exit Sub - For xI1 As Integer = 1 To UBound(Notes) - Notes(xI1).Selected = Notes(xI1).Selected And nEnabled(Notes(xI1).ColumnIndex) - Next - 'AddUndo(xUndo, xRedo) - UpdateColumnsX() - RefreshPanelAll() - End Sub - Private Sub CGSTOP_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CGSTOP.CheckedChanged - gSTOP = CGSTOP.Checked - - column(niSTOP).isVisible = gSTOP - - If IsInitializing Then Exit Sub - For xI1 As Integer = 1 To UBound(Notes) - Notes(xI1).Selected = Notes(xI1).Selected And nEnabled(Notes(xI1).ColumnIndex) - Next - 'AddUndo(xUndo, xRedo) - UpdateColumnsX() - RefreshPanelAll() - End Sub - Private Sub CGBPM_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CGBPM.CheckedChanged - 'Dim xUndo As UndoRedo.LinkedURCmd = Nothing - 'Dim xRedo As UndoRedo.LinkedURCmd = Nothing - 'Me.RedoChangeVisibleColumns(gBLP, gSTOP, iPlayer, gBLP, CGSTOP.Checked, iPlayer, xUndo, xRedo) - gBPM = CGBPM.Checked - - column(niBPM).isVisible = gBPM - - If IsInitializing Then Exit Sub - For xI1 As Integer = 1 To UBound(Notes) - Notes(xI1).Selected = Notes(xI1).Selected And nEnabled(Notes(xI1).ColumnIndex) - Next - 'AddUndo(xUndo, xRedo) - UpdateColumnsX() - RefreshPanelAll() - End Sub - - Private Sub CGDisableVertical_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CGDisableVertical.CheckedChanged - DisableVerticalMove = CGDisableVertical.Checked - End Sub - - Private Sub CBeatPreserve_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CBeatPreserve.Click, CBeatMeasure.Click, CBeatCut.Click, CBeatScale.Click - 'If Not sender.Checked Then Exit Sub - Dim xBeatList() As RadioButton = {CBeatPreserve, CBeatMeasure, CBeatCut, CBeatScale} - BeatChangeMode = Array.IndexOf(Of RadioButton)(xBeatList, sender) - 'For xI1 As Integer = 0 To mnBeat.Items.Count - 1 - 'If xI1 <> BeatChangeMode Then CType(mnBeat.Items(xI1), ToolStripMenuItem).Checked = False - 'Next - 'sender.Checked = True - End Sub - - - Private Sub tBeatValue_LostFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles tBeatValue.LostFocus - Dim a As Double - If Double.TryParse(tBeatValue.Text, a) Then - If a <= 0.0# Or a >= 1000.0# Then tBeatValue.BackColor = Color.FromArgb(&HFFFFC0C0) Else tBeatValue.BackColor = Nothing - - tBeatValue.Text = a - End If - End Sub - - - - Private Sub ApplyBeat(ByVal xRatio As Double, ByVal xDisplay As String) - SortByVPositionInsertion() - - Dim xUndo As UndoRedo.LinkedURCmd = Nothing - Dim xRedo As UndoRedo.LinkedURCmd = New UndoRedo.Void - Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo - - Me.RedoChangeMeasureLengthSelected(192 * xRatio, xUndo, xRedo) - - Dim xIndices(LBeat.SelectedIndices.Count - 1) As Integer - LBeat.SelectedIndices.CopyTo(xIndices, 0) - - - For Each xI1 As Integer In xIndices - Dim dLength As Double = xRatio * 192.0R - MeasureLength(xI1) - Dim dRatio As Double = xRatio * 192.0R / MeasureLength(xI1) - - Dim xBottom As Double = 0 - For xI2 As Integer = 0 To xI1 - 1 - xBottom += MeasureLength(xI2) - Next - Dim xUpBefore As Double = xBottom + MeasureLength(xI1) - Dim xUpAfter As Double = xUpBefore + dLength - - Select Case BeatChangeMode - Case 1 -case2: Dim xI0 As Integer - - If NTInput Then - For xI0 = 1 To UBound(Notes) - If Notes(xI0).VPosition >= xUpBefore Then Exit For - If Notes(xI0).VPosition + Notes(xI0).Length >= xUpBefore Then - Me.RedoLongNoteModify(Notes(xI0), Notes(xI0).VPosition, Notes(xI0).Length + dLength, xUndo, xRedo) - Notes(xI0).Length += dLength - End If - Next - Else - For xI0 = 1 To UBound(Notes) - If Notes(xI0).VPosition >= xUpBefore Then Exit For - Next - End If - - For xI9 As Integer = xI0 To UBound(Notes) - Me.RedoLongNoteModify(Notes(xI9), Notes(xI9).VPosition + dLength, Notes(xI9).Length, xUndo, xRedo) - Notes(xI9).VPosition += dLength - Next - - Case 2 - If dLength < 0 Then - If NTInput Then - Dim xI0 As Integer = 1 - Dim xU As Integer = UBound(Notes) - Do While xI0 <= xU - If Notes(xI0).VPosition < xUpAfter Then - If Notes(xI0).VPosition + Notes(xI0).Length >= xUpAfter And Notes(xI0).VPosition + Notes(xI0).Length < xUpBefore Then - Dim nLen As Double = xUpAfter - Notes(xI0).VPosition - 1.0R - Me.RedoLongNoteModify(Notes(xI0), Notes(xI0).VPosition, nLen, xUndo, xRedo) - Notes(xI0).Length = nLen - End If - ElseIf Notes(xI0).VPosition < xUpBefore Then - If Notes(xI0).VPosition + Notes(xI0).Length < xUpBefore Then - Me.RedoRemoveNote(Notes(xI0), xUndo, xRedo) - RemoveNote(xI0) - xI0 -= 1 - xU -= 1 - Else - Dim nLen As Double = Notes(xI0).Length - xUpBefore + Notes(xI0).VPosition - Me.RedoLongNoteModify(Notes(xI0), xUpBefore, nLen, xUndo, xRedo) - Notes(xI0).Length = nLen - Notes(xI0).VPosition = xUpBefore - End If - End If - xI0 += 1 - Loop - Else - Dim xI0 As Integer - Dim xI9 As Integer - For xI0 = 1 To UBound(Notes) - If Notes(xI0).VPosition >= xUpAfter Then Exit For - Next - For xI9 = xI0 To UBound(Notes) - If Notes(xI9).VPosition >= xUpBefore Then Exit For - Next - - For xI8 As Integer = xI0 To xI9 - 1 - Me.RedoRemoveNote(Notes(xI8), xUndo, xRedo) - Next - For xI8 As Integer = xI9 To UBound(Notes) - Notes(xI8 - xI9 + xI0) = Notes(xI8) - Next - ReDim Preserve Notes(UBound(Notes) - xI9 + xI0) - End If - End If - - GoTo case2 - - Case 3 - If NTInput Then - For xI0 As Integer = 1 To UBound(Notes) - If Notes(xI0).VPosition < xBottom Then - If Notes(xI0).VPosition + Notes(xI0).Length > xUpBefore Then - Me.RedoLongNoteModify(Notes(xI0), Notes(xI0).VPosition, Notes(xI0).Length + dLength, xUndo, xRedo) - Notes(xI0).Length += dLength - ElseIf Notes(xI0).VPosition + Notes(xI0).Length > xBottom Then - Dim nLen As Double = (Notes(xI0).Length + Notes(xI0).VPosition - xBottom) * dRatio + xBottom - Notes(xI0).VPosition - Me.RedoLongNoteModify(Notes(xI0), Notes(xI0).VPosition, nLen, xUndo, xRedo) - Notes(xI0).Length = nLen - End If - ElseIf Notes(xI0).VPosition < xUpBefore Then - If Notes(xI0).VPosition + Notes(xI0).Length > xUpBefore Then - Dim nLen As Double = (xUpBefore - Notes(xI0).VPosition) * dRatio + Notes(xI0).VPosition + Notes(xI0).Length - xUpBefore - Dim nVPos As Double = (Notes(xI0).VPosition - xBottom) * dRatio + xBottom - Me.RedoLongNoteModify(Notes(xI0), nVPos, nLen, xUndo, xRedo) - Notes(xI0).Length = nLen - Notes(xI0).VPosition = nVPos - Else - Dim nLen As Double = Notes(xI0).Length * dRatio - Dim nVPos As Double = (Notes(xI0).VPosition - xBottom) * dRatio + xBottom - Me.RedoLongNoteModify(Notes(xI0), nVPos, nLen, xUndo, xRedo) - Notes(xI0).Length = nLen - Notes(xI0).VPosition = nVPos - End If - Else - Me.RedoLongNoteModify(Notes(xI0), Notes(xI0).VPosition + dLength, Notes(xI0).Length, xUndo, xRedo) - Notes(xI0).VPosition += dLength - End If - Next - Else - Dim xI0 As Integer - Dim xI9 As Integer - For xI0 = 1 To UBound(Notes) - If Notes(xI0).VPosition >= xBottom Then Exit For - Next - For xI9 = xI0 To UBound(Notes) - If Notes(xI9).VPosition >= xUpBefore Then Exit For - Next - - For xI8 As Integer = xI0 To xI9 - 1 - Dim nVP As Double = (Notes(xI8).VPosition - xBottom) * dRatio + xBottom - Me.RedoLongNoteModify(Notes(xI0), nVP, Notes(xI0).Length, xUndo, xRedo) - Notes(xI8).VPosition = nVP - Next - - 'GoTo case2 - - For xI8 As Integer = xI9 To UBound(Notes) - Me.RedoLongNoteModify(Notes(xI8), Notes(xI8).VPosition + dLength, Notes(xI8).Length, xUndo, xRedo) - Notes(xI8).VPosition += dLength - Next - End If - - End Select - - MeasureLength(xI1) = xRatio * 192.0R - LBeat.Items(xI1) = Add3Zeros(xI1) & ": " & xDisplay - Next - UpdateMeasureBottom() - 'xUndo &= vbCrLf & xUndo2 - 'xRedo &= vbCrLf & xRedo2 - - LBeat.SelectedIndices.Clear() - For xI1 As Integer = 0 To UBound(xIndices) - LBeat.SelectedIndices.Add(xIndices(xI1)) - Next - - AddUndo(xUndo, xBaseRedo.Next) - SortByVPositionInsertion() - UpdatePairing() - CalculateTotalPlayableNotes() - CalculateGreatestVPosition() - RefreshPanelAll() - POStatusRefresh() - End Sub - - Private Sub BBeatApply_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BBeatApply.Click - Dim xxD As Integer = nBeatD.Value - Dim xxN As Integer = nBeatN.Value - Dim xxRatio As Double = xxN / xxD - - ApplyBeat(xxRatio, xxRatio & " ( " & xxN & " / " & xxD & " ) ") - End Sub - - Private Sub BBeatApplyV_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BBeatApplyV.Click - Dim a As Double - If Double.TryParse(tBeatValue.Text, a) Then - If a <= 0.0# Or a >= 1000.0# Then System.Media.SystemSounds.Hand.Play() : Exit Sub - - Dim xxD As Long = GetDenominator(a) - - ApplyBeat(a, a & IIf(xxD > 10000, "", " ( " & CLng(a * xxD) & " / " & xxD & " ) ")) - End If - End Sub - - - Private Sub BHStageFile_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BHStageFile.Click, BHBanner.Click, BHBackBMP.Click - Dim xDiag As New OpenFileDialog - xDiag.Filter = Strings.FileType._image & "|*.bmp;*.png;*.jpg;*.gif|" & - Strings.FileType._all & "|*.*" - xDiag.InitialDirectory = IIf(ExcludeFileName(FileName) = "", InitPath, ExcludeFileName(FileName)) - xDiag.DefaultExt = "png" - - If xDiag.ShowDialog = Windows.Forms.DialogResult.Cancel Then Exit Sub - InitPath = ExcludeFileName(xDiag.FileName) - - If [Object].ReferenceEquals(sender, BHStageFile) Then - THStageFile.Text = GetFileName(xDiag.FileName) - ElseIf [Object].ReferenceEquals(sender, BHBanner) Then - THBanner.Text = GetFileName(xDiag.FileName) - ElseIf [Object].ReferenceEquals(sender, BHBackBMP) Then - THBackBMP.Text = GetFileName(xDiag.FileName) - End If - End Sub - - Private Sub Switches_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles _ - POHeaderSwitch.CheckedChanged, - POGridSwitch.CheckedChanged, - POWaveFormSwitch.CheckedChanged, - POWAVSwitch.CheckedChanged, - POBeatSwitch.CheckedChanged, - POExpansionSwitch.CheckedChanged - - Try - Dim Source As CheckBox = CType(sender, CheckBox) - Dim Target As Panel = Nothing - - If Object.ReferenceEquals(sender, Nothing) Then : Exit Sub - ElseIf Object.ReferenceEquals(sender, POHeaderSwitch) Then : Target = POHeaderInner - ElseIf Object.ReferenceEquals(sender, POGridSwitch) Then : Target = POGridInner - ElseIf Object.ReferenceEquals(sender, POWaveFormSwitch) Then : Target = POWaveFormInner - ElseIf Object.ReferenceEquals(sender, POWAVSwitch) Then : Target = POWAVInner - ElseIf Object.ReferenceEquals(sender, POBeatSwitch) Then : Target = POBeatInner - ElseIf Object.ReferenceEquals(sender, POExpansionSwitch) Then : Target = POExpansionInner - End If - - If Source.Checked Then - Target.Visible = True - Else - Target.Visible = False - End If - - Catch ex As Exception - - End Try - End Sub - - Private Sub Expanders_CheckChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles _ - POHeaderExpander.CheckedChanged, - POGridExpander.CheckedChanged, - POWaveFormExpander.CheckedChanged, - POWAVExpander.CheckedChanged, - POBeatExpander.CheckedChanged - - Try - Dim Source As CheckBox = CType(sender, CheckBox) - Dim Target As Panel = Nothing - 'Dim TargetParent As Panel = Nothing - - If Object.ReferenceEquals(sender, Nothing) Then : Exit Sub - ElseIf Object.ReferenceEquals(sender, POHeaderExpander) Then : Target = POHeaderPart2 ' : TargetParent = POHeaderInner - ElseIf Object.ReferenceEquals(sender, POGridExpander) Then : Target = POGridPart2 ' : TargetParent = POGridInner - ElseIf Object.ReferenceEquals(sender, POWaveFormExpander) Then : Target = POWaveFormPart2 ' : TargetParent = POWaveFormInner - ElseIf Object.ReferenceEquals(sender, POWAVExpander) Then : Target = POWAVPart2 ' : TargetParent = POWaveFormInner - ElseIf Object.ReferenceEquals(sender, POBeatExpander) Then : Target = POBeatPart2 ' : TargetParent = POWaveFormInner - End If - - If Source.Checked Then - Target.Visible = True - 'Source.Image = My.Resources.Collapse - Else - Target.Visible = False - 'Source.Image = My.Resources.Expand - End If - - Catch ex As Exception - - End Try - - End Sub - - Private Sub VerticalResizer_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles POWAVResizer.MouseDown, POBeatResizer.MouseDown, POExpansionResizer.MouseDown - tempResize = e.Y - End Sub - - Private Sub HorizontalResizer_MouseDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles POptionsResizer.MouseDown, SpL.MouseDown, SpR.MouseDown - tempResize = e.X - End Sub - - Private Sub POResizer_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles POWAVResizer.MouseMove, POBeatResizer.MouseMove, POExpansionResizer.MouseMove - If e.Button <> Windows.Forms.MouseButtons.Left Then Exit Sub - If e.Y = tempResize Then Exit Sub - - Try - Dim Source As Button = CType(sender, Button) - Dim Target As Panel = Source.Parent - - Dim xHeight As Integer = Target.Height + e.Y - tempResize - If xHeight < 10 Then xHeight = 10 - Target.Height = xHeight - - Target.Refresh() - Catch ex As Exception - - End Try - End Sub - - Private Sub POptionsResizer_MouseMove(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles POptionsResizer.MouseMove - If e.Button <> Windows.Forms.MouseButtons.Left Then Exit Sub - If e.X = tempResize Then Exit Sub - - Try - Dim xWidth As Integer = POptionsScroll.Width - e.X + tempResize - If xWidth < 25 Then xWidth = 25 - POptionsScroll.Width = xWidth - - Me.Refresh() - Application.DoEvents() - Catch ex As Exception - - End Try - End Sub - - Private Sub SpR_MouseMove(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles SpR.MouseMove - If e.Button <> Windows.Forms.MouseButtons.Left Then Exit Sub - If e.X = tempResize Then Exit Sub - - Try - Dim xWidth As Integer = PMainR.Width - e.X + tempResize - If xWidth < 0 Then xWidth = 0 - PMainR.Width = xWidth - - Me.ToolStripContainer1.Refresh() - Application.DoEvents() - Catch ex As Exception - - End Try - End Sub - - Private Sub SpL_MouseMove(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles SpL.MouseMove - If e.Button <> Windows.Forms.MouseButtons.Left Then Exit Sub - If e.X = tempResize Then Exit Sub - - Try - Dim xWidth As Integer = PMainL.Width + e.X - tempResize - If xWidth < 0 Then xWidth = 0 - PMainL.Width = xWidth - - Me.ToolStripContainer1.Refresh() - Application.DoEvents() - Catch ex As Exception - - End Try - End Sub - - Private Sub mnGotoMeasure_Click(sender As Object, e As EventArgs) Handles mnGotoMeasure.Click - Dim s = InputBox(Strings.Messages.PromptEnterMeasure, "Enter Measure") - - Dim i As Integer - If Int32.TryParse(s, i) Then - If i < 0 Or i > 999 Then - Exit Sub - End If - - PanelVScroll(PanelFocus) = -MeasureBottom(i) - End If - End Sub - - ' Generic shuffle for basic type arrays - Public Function Shuffle(Of T)(items As T(), Len As Integer) - Dim temp As T - Dim j As Int32 - - For i As Int32 = items.Count - 1 To 0 Step -1 - ' Pick an item for position i. - j = Int(Len * Rnd()) - ' Swap - temp = items(i) - items(i) = items(j) - items(j) = temp - Next i - Return items - End Function - - Private Sub POBSRandom_Click(sender As Object, e As EventArgs) Handles POBSRandom.Click - Dim xI1 As Integer - Dim xI2 As Integer - Dim xUndo As UndoRedo.LinkedURCmd = Nothing - Dim xRedo As UndoRedo.LinkedURCmd = New UndoRedo.Void - Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo - 'xRedo &= sCmdKM(niA1, .VPosition, .Value, IIf(NTInput, .Length, .LongNote), .Hidden, RealColumnToEnabled(niA7) - RealColumnToEnabled(niA1), 0, True) & vbCrLf - 'xUndo &= sCmdKM(niA7, .VPosition, .Value, IIf(NTInput, .Length, .LongNote), .Hidden, RealColumnToEnabled(niA1) - RealColumnToEnabled(niA7), 0, True) & vbCrLf - - ' Array 0: Unmodified array - ' Array 1: Modified array based on range - ' Array R: Array 1 reversed - Dim xniArray0 = New Integer() {niA1, niA2, niA3, niA4, niA5, niA6, niA7, niA8, niD1, niD2, niD3, niD4, niD5, niD6, niD7, niD8} - ' Dim xniArray1 = Integer() ' xniArray0 - - ' New function: Declare an array to see the range of selected notes. B columns ignored. - - Dim xRangeL As Integer = niB ' Big number - Dim xRangeR As Integer = 0 ' Smol number - - ' Range finder - For xI1 = 1 To UBound(Notes) - If Not Notes(xI1).Selected Then Continue For - If xRangeL > Notes(xI1).ColumnIndex Then xRangeL = Notes(xI1).ColumnIndex - If xRangeR < Notes(xI1).ColumnIndex Then xRangeR = Notes(xI1).ColumnIndex - Next - - ' Modify xniArray based on range - ' Out of range - If xRangeL > niD8 Or xRangeR < niA1 Then GoTo DoNothing - - ' Semi-in Range - ' Cut off left side - If xRangeL < niA1 Then - xRangeL = 0 - GoTo Skip1 - End If - - For xI1 = 0 To xniArray0.Length - If xniArray0(xI1) = xRangeL Then - xRangeL = xI1 - Exit For - End If - Next - -Skip1: - ' Cut off right side - If xRangeR > niD8 Then - xRangeR = xniArray0.Length - GoTo Skip2 - End If - - For xI1 = 0 To xniArray0.Length - If xniArray0(xI1) = xRangeR Then - xRangeR = xI1 + 1 - Exit For - End If - Next - -Skip2: - - Dim xniArray1(xRangeR - xRangeL - 1) - For xI1 = 0 To xRangeR - xRangeL - 1 - xniArray1(xI1) = xniArray0(xI1 + xRangeL) - Next - - Dim xniArrayLen = xniArray1.Length - ' xniArrayR: Randomized array - Dim xniArrayR = xniArray1.Clone() - - Dim xCol As Integer - For xI1 = 1 To UBound(Notes) - If Not Notes(xI1).Selected Then Continue For - Shuffle(xniArrayR, xniArrayLen) - xCol = Notes(xI1).ColumnIndex - For xI2 = 0 To xniArrayLen - 1 - If xCol = xniArray1(xI2) Then - xCol = xniArrayR(xI2) - Exit For - End If - - Next - - Me.RedoMoveNote(Notes(xI1), xCol, Notes(xI1).VPosition, xUndo, xRedo) - Notes(xI1).ColumnIndex = xCol - Next - -DoNothing: - - AddUndo(xUndo, xBaseRedo.Next) - UpdatePairing() - RefreshPanelAll() - End Sub - -End Class From a9e3b641d4e12d3d580f7165b9d957e3a23424d9 Mon Sep 17 00:00:00 2001 From: psyk2642 <60137590+psyk2642@users.noreply.github.com> Date: Wed, 4 Nov 2020 20:09:37 +0800 Subject: [PATCH 012/257] Saving "Disable Vertical Moves" Saves the option of disabling vertical moves when you exit the program. --- iBMSC/EditorPersistent.vb | 24 ++++-------------------- 1 file changed, 4 insertions(+), 20 deletions(-) diff --git a/iBMSC/EditorPersistent.vb b/iBMSC/EditorPersistent.vb index 4c18501b4..89ae7c8de 100644 --- a/iBMSC/EditorPersistent.vb +++ b/iBMSC/EditorPersistent.vb @@ -111,6 +111,7 @@ Partial Public Class MainWindow .WriteStartElement("Grid") .WriteAttributeString("gSnap", gSnap) + .WriteAttributeString("xmlDisableVertical", DisableVerticalMove) .WriteAttributeString("gWheel", gWheel) .WriteAttributeString("gPgUpDn", gPgUpDn) .WriteAttributeString("gShow", gShowGrid) @@ -418,6 +419,7 @@ Partial Public Class MainWindow If eGrid IsNot Nothing Then With eGrid XMLLoadAttribute(.GetAttribute("gSnap"), CGSnap.Checked) + XMLLoadAttribute(.GetAttribute("xmlDisableVertical"), CGDisableVertical.Checked) XMLLoadAttribute(.GetAttribute("gWheel"), gWheel) XMLLoadAttribute(.GetAttribute("gPgUpDn"), gPgUpDn) XMLLoadAttribute(.GetAttribute("gShow"), CGShow.Checked) @@ -618,7 +620,7 @@ EndOfSub: xChildNode = xChildNode.PreviousSibling Loop - Dim mList() As Object = {LWAV, LBMP, LBeat, TExpansion} + Dim mList() As Object = {LWAV, LBeat, TExpansion} For Each c As Object In mList Try c.font = fMono @@ -815,6 +817,7 @@ EndOfSub: XMLLoadLocaleMenu(eConvert.Item("HiddenVisible"), POBHiddenVisible.Text) XMLLoadLocaleMenu(eConvert.Item("Relabel"), POBModify.Text) XMLLoadLocaleMenu(eConvert.Item("Mirror"), POBMirror.Text) + XMLLoadLocaleMenu(eConvert.Item("Flip"), POBFlip.Text) End If Dim eWAV As XmlElement = eSubMenu.Item("WAV") @@ -907,21 +910,12 @@ EndOfSub: Dim eWAV As XmlElement = eOptionsPanel.Item("WAV") If eWAV IsNot Nothing Then XMLLoadLocale(eWAV.Item("Title"), POWAVSwitch.Text) - XMLLoadLocaleToolTipUniversal(eWAV.Item("MoveUp"), BBMPUp) - XMLLoadLocaleToolTipUniversal(eWAV.Item("MoveDown"), BBMPDown) - XMLLoadLocaleToolTipUniversal(eWAV.Item("Browse"), BBMPBrowse) - XMLLoadLocaleToolTipUniversal(eWAV.Item("Remove"), BBMPRemove) XMLLoadLocaleToolTipUniversal(eWAV.Item("MoveUp"), BWAVUp) XMLLoadLocaleToolTipUniversal(eWAV.Item("MoveDown"), BWAVDown) XMLLoadLocaleToolTipUniversal(eWAV.Item("Browse"), BWAVBrowse) XMLLoadLocaleToolTipUniversal(eWAV.Item("Remove"), BWAVRemove) End If - Dim eBMP As XmlElement = eOptionsPanel.Item("BMP") - If eBMP IsNot Nothing Then - XMLLoadLocale(eBMP.Item("Title"), POBMPSwitch.Text) - End If - XMLLoadLocale(eOptionsPanel.Item("Beat"), POBeatSwitch.Text) XMLLoadLocale(eOptionsPanel.Item("Beat.Apply"), BBeatApply.Text) XMLLoadLocale(eOptionsPanel.Item("Beat.Apply"), BBeatApplyV.Text) @@ -982,16 +976,6 @@ EndOfSub: XMLLoadLocale(eFileType.Item("MP3"), Strings.FileType.MP3) XMLLoadLocale(eFileType.Item("MID"), Strings.FileType.MID) XMLLoadLocale(eFileType.Item("_image"), Strings.FileType._image) - XMLLoadLocale(eFileType.Item("_movie"), Strings.FileType._movie) - XMLLoadLocale(eFileType.Item("BMP"), Strings.FileType.BMP) - XMLLoadLocale(eFileType.Item("PNG"), Strings.FileType.PNG) - XMLLoadLocale(eFileType.Item("JPG"), Strings.FileType.JPG) - XMLLoadLocale(eFileType.Item("GIF"), Strings.FileType.GIF) - XMLLoadLocale(eFileType.Item("MPG"), Strings.FileType.MPG) - XMLLoadLocale(eFileType.Item("AVI"), Strings.FileType.AVI) - XMLLoadLocale(eFileType.Item("MP4"), Strings.FileType.MP4) - XMLLoadLocale(eFileType.Item("WMV"), Strings.FileType.WMV) - XMLLoadLocale(eFileType.Item("WEBM"), Strings.FileType.WEBM) XMLLoadLocale(eFileType.Item("EXE"), Strings.FileType.EXE) End If From acf6fb933571d7edd662ed2767f526dc5c48c40f Mon Sep 17 00:00:00 2001 From: psyk2642 <60137590+psyk2642@users.noreply.github.com> Date: Wed, 4 Nov 2020 20:13:17 +0800 Subject: [PATCH 013/257] =?UTF-8?q?=5F=5F=5FTempBMS.bms=20=20=E2=86=92=20?= =?UTF-8?q?=5F=5F=5FTempBMS.bmsc?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Changed the TempBMS extension so you no longer see the pesky doppelganger in your favorite BMS player. Will make the extension configurable in the future maybe. --- iBMSC/MainWindow.vb | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/iBMSC/MainWindow.vb b/iBMSC/MainWindow.vb index f40669d14..8c9f6db7b 100644 --- a/iBMSC/MainWindow.vb +++ b/iBMSC/MainWindow.vb @@ -465,7 +465,7 @@ Public Class MainWindow Dim xFileName As String = IIf(Not PathIsValid(FileName), IIf(InitPath = "", My.Application.Info.DirectoryPath, InitPath), ExcludeFileName(FileName)) _ - & "\___TempBMS.bms" + & "\___TempBMS.bmsc" Dim xMeasure As Integer = MeasureAtDisplacement(Math.Abs(PanelVScroll(PanelFocus))) Dim xS1 As String = Replace(InitStr, "", My.Application.Info.DirectoryPath) Dim xS2 As String = Replace(xS1, "", xMeasure) @@ -1731,6 +1731,8 @@ EndSearch: RefreshPanelAll() End Sub + + Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick Dim xI1 As Integer @@ -2013,7 +2015,7 @@ EndSearch: Dim xStrAll As String = SaveBMS() Dim xFileName As String = IIf(Not PathIsValid(FileName), IIf(InitPath = "", My.Application.Info.DirectoryPath, InitPath), - ExcludeFileName(FileName)) & "\___TempBMS.bms" + ExcludeFileName(FileName)) & "\___TempBMS.bmsc" My.Computer.FileSystem.WriteAllText(xFileName, xStrAll, False, TextEncoding) AddTempFileList(xFileName) @@ -2036,7 +2038,7 @@ EndSearch: Dim xStrAll As String = SaveBMS() Dim xFileName As String = IIf(Not PathIsValid(FileName), IIf(InitPath = "", My.Application.Info.DirectoryPath, InitPath), - ExcludeFileName(FileName)) & "\___TempBMS.bms" + ExcludeFileName(FileName)) & "\___TempBMS.bmsc" My.Computer.FileSystem.WriteAllText(xFileName, xStrAll, False, TextEncoding) AddTempFileList(xFileName) From 1442f86196f5e2413a3d08d73daa79c923d60a7a Mon Sep 17 00:00:00 2001 From: psyk2642 <60137590+psyk2642@users.noreply.github.com> Date: Wed, 4 Nov 2020 20:14:55 +0800 Subject: [PATCH 014/257] Update README.md --- README.md | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 805cb569b..b7dd8c2dc 100644 --- a/README.md +++ b/README.md @@ -15,6 +15,5 @@ Changes in this fork * Added Random and S-Random. For S-random, note overlapping can occur. * Fixed the Statistic Label not including notes between D1-D8. Statistic window still not fixed. * Added a display for recommended #TOTAL. - -Check appveyor for automated builds. -[![Build status](https://ci.appveyor.com/api/projects/status/m7iygj9sje2yqf43?svg=true)](https://ci.appveyor.com/project/zardoru/ibmsc) +* The application now saves the option "Disable Vertical Moves". +* Changed the temporary bms file extension from .bms to .bmsc. From 4f51140963ac6c37ce412f2ab6d86b629543f144 Mon Sep 17 00:00:00 2001 From: psyk2642 <60137590+psyk2642@users.noreply.github.com> Date: Wed, 4 Nov 2020 20:46:24 +0800 Subject: [PATCH 015/257] Toolbar note count * Fixed the total note count on the toolbar * Allows selecting all file types when opening files --- iBMSC/MainWindow.vb | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/iBMSC/MainWindow.vb b/iBMSC/MainWindow.vb index 8c9f6db7b..2dad72412 100644 --- a/iBMSC/MainWindow.vb +++ b/iBMSC/MainWindow.vb @@ -1408,7 +1408,13 @@ EndSearch: If ClosingPopSave() Then Exit Sub Dim xDOpen As New OpenFileDialog - xDOpen.Filter = Strings.FileType._bms & "|*.bms;*.bme;*.bml;*.pms;*.txt" + xDOpen.Filter = Strings.FileType._bms & "|*.bms;*.bme;*.bml;*.pms;*.txt|" & + Strings.FileType.BMS & "|*.bms|" & + Strings.FileType.BME & "|*.bme|" & + Strings.FileType.BML & "|*.bml|" & + Strings.FileType.PMS & "|*.pms|" & + Strings.FileType.TXT & "|*.txt|" & + Strings.FileType._all & "|*.*" xDOpen.DefaultExt = "bms" xDOpen.InitialDirectory = IIf(ExcludeFileName(FileName) = "", InitPath, ExcludeFileName(FileName)) @@ -2139,8 +2145,8 @@ StartCount: If Not NTInput Then Else For xI1 = 1 To UBound(Notes) If Notes(xI1).ColumnIndex >= niA1 And Notes(xI1).ColumnIndex <= niD8 Then - xIAll += 1 - If Notes(xI1).Length <> 0 Then xIAll += 1 + If Not (Notes(xI1).LongNote Or Notes(xI1).Hidden Or Notes(xI1).Landmine Or Notes(xI1).Hidden Or Notes(xI1).Value \ 10000 = LnObj) Then xIAll += 1 + ' If Notes(xI1).Length <> 0 Then xIAll += 1 End If Next End If From 66756ef131460700fca5966a291d35b1944342a7 Mon Sep 17 00:00:00 2001 From: psyk2642 <60137590+psyk2642@users.noreply.github.com> Date: Wed, 4 Nov 2020 20:46:47 +0800 Subject: [PATCH 016/257] Update README.md --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index b7dd8c2dc..0d89e5dff 100644 --- a/README.md +++ b/README.md @@ -17,3 +17,5 @@ Changes in this fork * Added a display for recommended #TOTAL. * The application now saves the option "Disable Vertical Moves". * Changed the temporary bms file extension from .bms to .bmsc. +* Allows selecting all file types when opening files +* Fixed the total note count on the toolbar From e5dac22aa396d7f70c86008744cd5b69045dc723 Mon Sep 17 00:00:00 2001 From: psyk2642 <60137590+psyk2642@users.noreply.github.com> Date: Thu, 5 Nov 2020 21:09:27 +0800 Subject: [PATCH 017/257] Advanced Statistics (part 1) Added a window for advanced statistics (shows A1-A8 and D1-D8 individually). --- iBMSC/MainWindow.vb | 98 ++++++- iBMSC/Strings.vb | 36 ++- iBMSC/iBMSC.vbproj | 625 ++++++++++++++++++++++---------------------- 3 files changed, 434 insertions(+), 325 deletions(-) diff --git a/iBMSC/MainWindow.vb b/iBMSC/MainWindow.vb index 2dad72412..bcb441d86 100644 --- a/iBMSC/MainWindow.vb +++ b/iBMSC/MainWindow.vb @@ -2091,13 +2091,13 @@ EndSearch: With Notes(i) Dim row As Integer = -1 Select Case .ColumnIndex - Case niSCROLL : row = 0 - Case niBPM : row = 1 - Case niSTOP : row = 2 - Case niA1, niA2, niA3, niA4, niA5, niA6, niA7, niA8 : row = 3 - Case niD1, niD2, niD3, niD4, niD5, niD6, niD7, niD8 : row = 4 - Case Is >= niB : row = 5 - Case Else : row = 6 + ' Case niSCROLL : row = 0 + Case niBPM : row = 0 + Case niSTOP : row = 1 + Case niA1, niA2, niA3, niA4, niA5, niA6, niA7, niA8 : row = 2 + Case niD1, niD2, niD3, niD4, niD5, niD6, niD7, niD8 : row = 3 + Case Is >= niB : row = 4 + Case Else : row = 5 End Select @@ -2125,7 +2125,89 @@ StartCount: If Not NTInput Then End With Next - Dim dStat As New dgStatistics(data) + Dim dStat As New dgStatisticsLegacy(data) + dStat.ShowDialog() + End Sub + + Private Sub TBStatisticsAdvanced_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnStatisticsAdvanced.Click + SortByVPositionInsertion() + UpdatePairing() + Dim rows = 26 - 2 ' TableLayoutPanel1.RowCount doesn't work + Dim cols = 8 - 2 ' Size of tables including names sub 2 + Dim Labels As New Strings.fStatistics() + Dim rowLabels = {Labels.lSCROLL, Labels.lBPM, Labels.lSTOP, Labels.lA1, Labels.lA2, Labels.lA3, Labels.lA4, Labels.lA5, Labels.lA6, Labels.lA7, Labels.lA8, Labels.lD1, Labels.lD2, Labels.lD3, Labels.lD4, Labels.lD5, Labels.lD6, Labels.lD7, Labels.lD8, Labels.lA, Labels.lD, Labels.lBGA, Labels.lBGM, Labels.lNotes, Labels.lTotal} + Dim colLabels = {Labels.lShort, Labels.lLong, Labels.lLnObj, Labels.lHidden, Labels.lLandmines, Labels.lErrors, Labels.lTotal} + Dim data(rows, cols) As Integer + + For i As Integer = 1 To UBound(Notes) + With Notes(i) + Dim row As Integer + Select Case .ColumnIndex + Case niSCROLL : row = 1 - 1 + Case niBPM : row = 2 - 1 + Case niSTOP : row = 3 - 1 + Case niA1 : row = 4 - 1 + Case niA2 : row = 5 - 1 + Case niA3 : row = 6 - 1 + Case niA4 : row = 7 - 1 + Case niA5 : row = 8 - 1 + Case niA6 : row = 9 - 1 + Case niA7 : row = 10 - 1 + Case niA8 : row = 11 - 1 + Case niD1 : row = 12 - 1 + Case niD2 : row = 13 - 1 + Case niD3 : row = 14 - 1 + Case niD4 : row = 15 - 1 + Case niD5 : row = 16 - 1 + Case niD6 : row = 17 - 1 + Case niD7 : row = 18 - 1 + Case niD8 : row = 19 - 1 + Case Is >= niB : row = 23 - 1 + Case Else : row = 22 - 1 + End Select + + +StartCount: If Not NTInput Then + If Not (.LongNote Or .Hidden Or .Landmine Or .Hidden Or .Value \ 10000 = LnObj) Then data(row, 0) += 1 + If .LongNote Then data(row, 1) += 1 + If .Value \ 10000 = LnObj Then data(row, 2) += 1 + If .Hidden Then data(row, 3) += 1 + If .Landmine Then data(row, 4) += 1 + If .HasError Then data(row, 5) += 1 + + Else + If Not (.LongNote Or .Hidden Or .Landmine Or .Hidden Or .Value \ 10000 = LnObj) Then data(row, 0) += 1 + If .Length <> 0 Then data(row, 1) += 1 + If .Value \ 10000 = LnObj Then data(row, 2) += 1 + If .Hidden Then data(row, 3) += 1 + If .Landmine Then data(row, 4) += 1 + If .HasError Then data(row, 5) += 1 + + End If + + End With + Next + + ' Calculate Total notes on column and row + For r As Integer = 0 To rows - 1 + For c As Integer = 0 To cols - 1 + data(r, cols) += data(r, c) ' Total in row + + ' Ignore rows "A1-A8" and "D1-D8" + Select Case r + Case 19 To 20 : Continue For + Case Else : data(rows, c) += data(r, c) ' Total in column + End Select + + Select Case r + Case 3 To 10 : data(19, c) += data(r, c) : data(23, c) += data(r, c) + Case 11 To 18 : data(20, c) += data(r, c) : data(23, c) += data(r, c) + End Select + Next + Next + data(rows, cols) = UBound(Notes) + ' Change to the whole table cause more convenient + Dim dStat As New dgStatistics(data, rowLabels, colLabels) dStat.ShowDialog() End Sub diff --git a/iBMSC/Strings.vb b/iBMSC/Strings.vb index bafeb4620..7b69a0e91 100644 --- a/iBMSC/Strings.vb +++ b/iBMSC/Strings.vb @@ -68,16 +68,6 @@ Public Class Strings Public Shared MID As String = "MIDI (*.mid)" Public Shared _image As String = "Supported Image Format (*.png, *.bmp, *.jpg, *.gif)" - Public Shared _movie As String = "Supported Movie Format (*.mpg, *.avi, *.mp4, *.wmv, *.webm)" - Public Shared BMP As String = "Windows bitmap image (*.bmp)" - Public Shared PNG As String = "Portable Network Graphic (*.png)" - Public Shared JPG As String = "Joint Photographic Experts Group (*.jpg)" - Public Shared GIF As String = "Graphics Interchange Format (*.gif)" - Public Shared MPG As String = "Moving Picture Experts Group (*.mpg)" - Public Shared AVI As String = "Audio Video Interleave (*.avi)" - Public Shared MP4 As String = "MPEG phase 4 (*.mp4)" - Public Shared WMV As String = "Windows Media Video (*.wmv)" - Public Shared WEBM As String = "WebM (*.webm)" Public Shared EXE As String = "Executable file (*.exe)" End Class @@ -88,14 +78,37 @@ Public Class Strings Public Shared lSTOP As String = "STOP" Public Shared lSCROLL As String = "SCROLL" Public Shared lA As String = "A1-A8" - Public Shared lD As String = "D1-D8" + Public Shared lA1 As String = "A1" + Public Shared lA2 As String = "A2" + Public Shared lA3 As String = "A3" + Public Shared lA4 As String = "A4" + Public Shared lA5 As String = "A5" + Public Shared lA6 As String = "A6" + Public Shared lA7 As String = "A7" + Public Shared lA8 As String = "A8" + Public Shared lD As String = "D1-D8" + Public Shared lD1 As String = "D1" + Public Shared lD2 As String = "D2" + Public Shared lD3 As String = "D3" + Public Shared lD4 As String = "D4" + Public Shared lD5 As String = "D5" + Public Shared lD6 As String = "D6" + Public Shared lD7 As String = "D7" + Public Shared lD8 As String = "D8" + Public Shared lBGA As String = "BGA" Public Shared lBGM As String = "BGM" + Public Shared lNotes As String = "Notes" Public Shared lTotal As String = "Total" Public Shared lShort As String = "Short" Public Shared lLong As String = "Long" Public Shared lLnObj As String = "LnObj" Public Shared lHidden As String = "Hidden" + Public Shared lLandmines As String = "Landmines" Public Shared lErrors As String = "Errors" + Public Shared recTotal As String = "" + ' Public Shared recTotal As String = "Recommended #Total:" + Public Shared recTotalValue As String = "" + ' Public Shared recTotalValue As String = "500" End Class Public Class fopPlayer @@ -175,6 +188,7 @@ Public Class Strings Public Shared AutoSave As String = "AutoSave" Public Shared minutes As String = "minutes" Public Shared StopPreviewOnClick As String = "Stop preview if clicked on the editing panel" + Public Shared ModeDP As String = "DP Mode keybinding" End Class Public Class fFind diff --git a/iBMSC/iBMSC.vbproj b/iBMSC/iBMSC.vbproj index 0a72e5412..4d22959a7 100644 --- a/iBMSC/iBMSC.vbproj +++ b/iBMSC/iBMSC.vbproj @@ -1,313 +1,326 @@ - - - - - Debug - AnyCPU - {35281D99-2A97-4AA0-AC1E-6CDC78999A3D} - WinExe - iBMSC.My.MyApplication - iBMSC - μBMSC - 512 - WindowsForms - v4.0 - false - - publish\ - true - Disk - false - Foreground - 7 - Days - false - false - true - 0 - 1.0.0.%2a - false - true - - - x86 - true - full - true - true - bin\Debug\ - μBMSC.xml - 41999,42016,42017,42018,42019,42020,42021,42022,42032,42036 - - - AnyCPU - pdbonly - false - true - true - bin\Release\ - μBMSC.xml - 41999,42016,42017,42018,42019,42020,42021,42022,42032,42036 - - - On - - - Binary - - - Off - - - On - - - Icon.ico - - - My Project\app.manifest - - - - ..\packages\CSCore.1.2.1.1\lib\net35-client\CSCore.dll - - - ..\packages\NVorbis.0.8.5.0\lib\NVorbis.dll - - - - - - - - - - - - - - - - - - - - - - - - - - - Form - - - - AboutBox1.vb - - - Form - - - - ColorPicker.vb - - - Form - - - dgImportSM.vb - - - Form - - - dgMyO2.vb - - - Form - - - dgStatistics.vb - - - Form - - - diagFind.vb - - - Form - - - fLoadFileProgress.vb - - - Form - - - SplashScreen1.vb - - - Form - - - Form - - - Form - - - Form - - - - MainWindow.vb - - - Form - - - Form - - - Form - - - Form - - - Form - - - - Form - - - - - - - True - Application.myapp - - - True - True - Resources.resx - - - True - Settings.settings - True - - - OpGeneral.vb - - - Form - - - OpPlayer.vb - - - Form - - - OpVisual.vb - - - Form - - - - - Form - - - - - - AboutBox1.vb - - - ColorPicker.vb - - - dgImportSM.vb - - - dgMyO2.vb - - - dgMyO2.vb - - - dgStatistics.vb - - - diagFind.vb - - - fLoadFileProgress.vb - - - SplashScreen1.vb - - - MainWindow.vb - - - VbMyResourcesResXFileCodeGenerator - Resources.Designer.vb - My.Resources - Designer - - - OpGeneral.vb - - - OpPlayer.vb - - - OpVisual.vb - - - - - - - MyApplicationCodeGenerator - Application.Designer.vb - - - SettingsSingleFileGenerator - My - Settings.Designer.vb - - - - - - False - .NET Framework 3.5 SP1 Client Profile - false - - - False - .NET Framework 3.5 SP1 - true - - - - - - + + + + + Debug + AnyCPU + {35281D99-2A97-4AA0-AC1E-6CDC78999A3D} + WinExe + iBMSC.My.MyApplication + iBMSC + pBMSC + 512 + WindowsForms + v4.6.1 + false + + publish\ + true + Disk + false + Foreground + 7 + Days + false + false + true + 0 + 1.0.0.%2a + false + true + + + AnyCPU + true + full + true + true + bin\Debug\ + pBMSC.xml + 41999,42016,42017,42018,42019,42020,42021,42022,42032,42036 + false + + + AnyCPU + pdbonly + false + true + true + bin\Release\ + pBMSC.xml + 41999,42016,42017,42018,42019,42020,42021,42022,42032,42036 + false + + + On + + + Binary + + + Off + + + On + + + Icon.ico + + + My Project\app.manifest + + + + ..\packages\CSCore.1.2.1.1\lib\net35-client\CSCore.dll + + + ..\packages\NVorbis.0.8.5.0\lib\NVorbis.dll + + + + + + + + + + + + + + + + + + + + + + + + + + + Form + + + + Component1.vb + + + Component + + + + Form + + + AboutBox1.vb + + + Form + + + + ColorPicker.vb + + + Form + + + dgImportSM.vb + + + Form + + + dgMyO2.vb + + + Form + + + dgStatistics.vb + + + Form + + + diagFind.vb + + + Form + + + fLoadFileProgress.vb + + + Form + + + SplashScreen1.vb + + + Form + + + Form + + + Form + + + Form + + + + MainWindow.vb + + + Form + + + Form + + + Form + + + Form + + + Form + + + + Form + + + + + + + True + Application.myapp + True + + + True + True + Resources.resx + + + True + Settings.settings + True + + + OpGeneral.vb + + + Form + + + OpPlayer.vb + + + Form + + + OpVisual.vb + + + Form + + + + + Form + + + + + + AboutBox1.vb + + + ColorPicker.vb + + + dgImportSM.vb + + + dgMyO2.vb + + + dgMyO2.vb + + + dgStatistics.vb + + + diagFind.vb + + + fLoadFileProgress.vb + + + SplashScreen1.vb + + + MainWindow.vb + + + VbMyResourcesResXFileCodeGenerator + Resources.Designer.vb + My.Resources + Designer + + + OpGeneral.vb + + + OpPlayer.vb + + + OpVisual.vb + + + + + + + MyApplicationCodeGenerator + Application.Designer.vb + + + SettingsSingleFileGenerator + My + Settings.Designer.vb + + + + + + False + .NET Framework 3.5 SP1 Client Profile + false + + + False + .NET Framework 3.5 SP1 + true + + + + + + + --> \ No newline at end of file From b604bcaf6108904b5038b67f588457db8b21f441 Mon Sep 17 00:00:00 2001 From: psyk2642 <60137590+psyk2642@users.noreply.github.com> Date: Thu, 5 Nov 2020 21:10:15 +0800 Subject: [PATCH 018/257] Advanced Statistics (Part 2) --- iBMSC/Dialogs/dgStatistics.Designer.vb | 425 +++++-------------- iBMSC/Dialogs/dgStatistics.vb | 141 +++--- iBMSC/Dialogs/dgStatisticsLegacy.Designer.vb | 290 +++++++++++++ iBMSC/Dialogs/dgStatisticsLegacy.vb | 50 +++ 4 files changed, 547 insertions(+), 359 deletions(-) create mode 100644 iBMSC/Dialogs/dgStatisticsLegacy.Designer.vb create mode 100644 iBMSC/Dialogs/dgStatisticsLegacy.vb diff --git a/iBMSC/Dialogs/dgStatistics.Designer.vb b/iBMSC/Dialogs/dgStatistics.Designer.vb index ddb2cece4..1541ed3c2 100644 --- a/iBMSC/Dialogs/dgStatistics.Designer.vb +++ b/iBMSC/Dialogs/dgStatistics.Designer.vb @@ -1,308 +1,117 @@ - _ -Partial Class dgStatistics - Inherits System.Windows.Forms.Form - - 'Form 重写 Dispose,以清理组件列表。 - _ - Protected Overrides Sub Dispose(ByVal disposing As Boolean) - Try - If disposing AndAlso components IsNot Nothing Then - components.Dispose() - End If - Finally - MyBase.Dispose(disposing) - End Try - End Sub - - 'Windows 窗体设计器所必需的 - Private components As System.ComponentModel.IContainer - - '注意: 以下过程是 Windows 窗体设计器所必需的 - '可以使用 Windows 窗体设计器修改它。 - '不要使用代码编辑器修改它。 - _ - Private Sub InitializeComponent() - Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(dgStatistics)) - Me.OK_Button = New System.Windows.Forms.Button - Me.lIcon = New System.Windows.Forms.Label - Me.TableLayoutPanel1 = New System.Windows.Forms.TableLayoutPanel - Me.Label2 = New System.Windows.Forms.Label - Me.Label16 = New System.Windows.Forms.Label - Me.Label1 = New System.Windows.Forms.Label - Me.Label6 = New System.Windows.Forms.Label - Me.Label7 = New System.Windows.Forms.Label - Me.Label8 = New System.Windows.Forms.Label - Me.Label9 = New System.Windows.Forms.Label - Me.Label10 = New System.Windows.Forms.Label - Me.Label11 = New System.Windows.Forms.Label - Me.Label12 = New System.Windows.Forms.Label - Me.Label13 = New System.Windows.Forms.Label - Me.Label14 = New System.Windows.Forms.Label - Me.Label15 = New System.Windows.Forms.Label - Me.TableLayoutPanel1.SuspendLayout() - Me.SuspendLayout() - ' - 'OK_Button - ' - Me.OK_Button.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) - Me.OK_Button.DialogResult = System.Windows.Forms.DialogResult.Cancel - Me.OK_Button.FlatStyle = System.Windows.Forms.FlatStyle.System - Me.OK_Button.Location = New System.Drawing.Point(381, 212) - Me.OK_Button.Name = "OK_Button" - Me.OK_Button.Size = New System.Drawing.Size(78, 27) - Me.OK_Button.TabIndex = 0 - Me.OK_Button.Text = "OK" - ' - 'lIcon - ' - Me.lIcon.Image = Global.iBMSC.My.Resources.Resources.Statistics3 - Me.lIcon.Location = New System.Drawing.Point(12, 9) - Me.lIcon.Name = "lIcon" - Me.lIcon.Size = New System.Drawing.Size(42, 42) - Me.lIcon.TabIndex = 1 - ' - 'TableLayoutPanel1 - ' - Me.TableLayoutPanel1.ColumnCount = 8 - Me.TableLayoutPanel1.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle) - Me.TableLayoutPanel1.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 16.66667!)) - Me.TableLayoutPanel1.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 16.66667!)) - Me.TableLayoutPanel1.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 16.66667!)) - Me.TableLayoutPanel1.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 16.66667!)) - Me.TableLayoutPanel1.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 16.66667!)) - Me.TableLayoutPanel1.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 16.66667!)) - Me.TableLayoutPanel1.Controls.Add(Me.Label2, 5, 0) - Me.TableLayoutPanel1.Controls.Add(Me.Label16, 4, 0) - Me.TableLayoutPanel1.Controls.Add(Me.Label1, 0, 7) - Me.TableLayoutPanel1.Controls.Add(Me.Label6, 0, 1) - Me.TableLayoutPanel1.Controls.Add(Me.Label7, 0, 2) - Me.TableLayoutPanel1.Controls.Add(Me.Label8, 0, 3) - Me.TableLayoutPanel1.Controls.Add(Me.Label9, 0, 4) - Me.TableLayoutPanel1.Controls.Add(Me.Label10, 0, 5) - Me.TableLayoutPanel1.Controls.Add(Me.Label11, 0, 6) - Me.TableLayoutPanel1.Controls.Add(Me.Label12, 1, 0) - Me.TableLayoutPanel1.Controls.Add(Me.Label13, 2, 0) - Me.TableLayoutPanel1.Controls.Add(Me.Label14, 3, 0) - Me.TableLayoutPanel1.Controls.Add(Me.Label15, 4, 0) - Me.TableLayoutPanel1.Location = New System.Drawing.Point(64, 12) - Me.TableLayoutPanel1.Name = "TableLayoutPanel1" - Me.TableLayoutPanel1.RowCount = 7 - Me.TableLayoutPanel1.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 25.0!)) - Me.TableLayoutPanel1.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 16.66667!)) - Me.TableLayoutPanel1.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 16.66667!)) - Me.TableLayoutPanel1.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 16.66667!)) - Me.TableLayoutPanel1.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 16.66667!)) - Me.TableLayoutPanel1.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 16.66667!)) - Me.TableLayoutPanel1.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 16.66667!)) - Me.TableLayoutPanel1.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 16.66667!)) - Me.TableLayoutPanel1.Size = New System.Drawing.Size(387, 188) - Me.TableLayoutPanel1.TabIndex = 12 - ' - 'Label2 - ' - Me.Label2.AutoSize = True - Me.Label2.Dock = System.Windows.Forms.DockStyle.Fill - Me.Label2.Location = New System.Drawing.Point(330, 0) - Me.Label2.Margin = New System.Windows.Forms.Padding(0) - Me.Label2.Name = "Label2" - Me.Label2.Size = New System.Drawing.Size(57, 25) - Me.Label2.TabIndex = 16 - Me.Label2.Text = "Total" - Me.Label2.TextAlign = System.Drawing.ContentAlignment.MiddleCenter - ' - 'Label16 - ' - Me.Label16.AutoSize = True - Me.Label16.Dock = System.Windows.Forms.DockStyle.Fill - Me.Label16.Location = New System.Drawing.Point(274, 0) - Me.Label16.Margin = New System.Windows.Forms.Padding(0) - Me.Label16.Name = "Label16" - Me.Label16.Size = New System.Drawing.Size(56, 25) - Me.Label16.TabIndex = 15 - Me.Label16.Text = "Errors" - Me.Label16.TextAlign = System.Drawing.ContentAlignment.MiddleCenter - ' - 'Label1 - ' - Me.Label1.AutoSize = True - Me.Label1.BackColor = System.Drawing.Color.FromArgb(CType(CType(16, Byte), Integer), CType(CType(0, Byte), Integer), CType(CType(0, Byte), Integer), CType(CType(0, Byte), Integer)) - Me.Label1.Dock = System.Windows.Forms.DockStyle.Fill - Me.Label1.Location = New System.Drawing.Point(0, 163) - Me.Label1.Margin = New System.Windows.Forms.Padding(0) - Me.Label1.Name = "Label1" - Me.Label1.Padding = New System.Windows.Forms.Padding(10, 0, 0, 0) - Me.Label1.Size = New System.Drawing.Size(50, 24) - Me.Label1.TabIndex = 14 - Me.Label1.Text = "Total" - Me.Label1.TextAlign = System.Drawing.ContentAlignment.MiddleRight - ' - 'Label6 - ' - Me.Label6.AutoSize = True - Me.Label6.BackColor = System.Drawing.Color.FromArgb(CType(CType(16, Byte), Integer), CType(CType(0, Byte), Integer), CType(CType(0, Byte), Integer), CType(CType(0, Byte), Integer)) - Me.Label6.Dock = System.Windows.Forms.DockStyle.Fill - Me.Label6.Location = New System.Drawing.Point(0, 25) - Me.Label6.Margin = New System.Windows.Forms.Padding(0) - Me.Label6.Name = "Label6" - Me.Label6.Padding = New System.Windows.Forms.Padding(10, 0, 0, 0) - Me.Label6.Size = New System.Drawing.Size(50, 23) - Me.Label6.TabIndex = 13 - Me.Label6.Text = "BPM" - Me.Label6.TextAlign = System.Drawing.ContentAlignment.MiddleRight - ' - 'Label7 - ' - Me.Label7.AutoSize = True - Me.Label7.Dock = System.Windows.Forms.DockStyle.Fill - Me.Label7.Location = New System.Drawing.Point(0, 48) - Me.Label7.Margin = New System.Windows.Forms.Padding(0) - Me.Label7.Name = "Label7" - Me.Label7.Padding = New System.Windows.Forms.Padding(10, 0, 0, 0) - Me.Label7.Size = New System.Drawing.Size(50, 23) - Me.Label7.TabIndex = 13 - Me.Label7.Text = "STOP" - Me.Label7.TextAlign = System.Drawing.ContentAlignment.MiddleRight - ' - 'Label8 - ' - Me.Label8.AutoSize = True - Me.Label8.BackColor = System.Drawing.Color.FromArgb(CType(CType(16, Byte), Integer), CType(CType(0, Byte), Integer), CType(CType(0, Byte), Integer), CType(CType(0, Byte), Integer)) - Me.Label8.Dock = System.Windows.Forms.DockStyle.Fill - Me.Label8.Location = New System.Drawing.Point(0, 71) - Me.Label8.Margin = New System.Windows.Forms.Padding(0) - Me.Label8.Name = "Label8" - Me.Label8.Padding = New System.Windows.Forms.Padding(10, 0, 0, 0) - Me.Label8.Size = New System.Drawing.Size(50, 23) - Me.Label8.TabIndex = 13 - Me.Label8.Text = "SCROLL" - Me.Label8.TextAlign = System.Drawing.ContentAlignment.MiddleRight - ' - 'Label9 - ' - Me.Label9.AutoSize = True - Me.Label9.Dock = System.Windows.Forms.DockStyle.Fill - Me.Label9.Location = New System.Drawing.Point(0, 94) - Me.Label9.Margin = New System.Windows.Forms.Padding(0) - Me.Label9.Name = "Label9" - Me.Label9.Padding = New System.Windows.Forms.Padding(10, 0, 0, 0) - Me.Label9.Size = New System.Drawing.Size(50, 23) - Me.Label9.TabIndex = 13 - Me.Label9.Text = "A1-A8" - Me.Label9.TextAlign = System.Drawing.ContentAlignment.MiddleRight - ' - 'Label10 - ' - Me.Label10.AutoSize = True - Me.Label10.BackColor = System.Drawing.Color.FromArgb(CType(CType(16, Byte), Integer), CType(CType(0, Byte), Integer), CType(CType(0, Byte), Integer), CType(CType(0, Byte), Integer)) - Me.Label10.Dock = System.Windows.Forms.DockStyle.Fill - Me.Label10.Location = New System.Drawing.Point(0, 117) - Me.Label10.Margin = New System.Windows.Forms.Padding(0) - Me.Label10.Name = "Label10" - Me.Label10.Padding = New System.Windows.Forms.Padding(10, 0, 0, 0) - Me.Label10.Size = New System.Drawing.Size(50, 23) - Me.Label10.TabIndex = 13 - Me.Label10.Text = "D1-D8" - Me.Label10.TextAlign = System.Drawing.ContentAlignment.MiddleRight - ' - 'Label11 - ' - Me.Label11.AutoSize = True - Me.Label11.Dock = System.Windows.Forms.DockStyle.Fill - Me.Label11.Location = New System.Drawing.Point(0, 140) - Me.Label11.Margin = New System.Windows.Forms.Padding(0) - Me.Label11.Name = "Label11" - Me.Label11.Padding = New System.Windows.Forms.Padding(10, 0, 0, 0) - Me.Label11.Size = New System.Drawing.Size(50, 23) - Me.Label11.TabIndex = 13 - Me.Label11.Text = "BGM" - Me.Label11.TextAlign = System.Drawing.ContentAlignment.MiddleRight - ' - 'Label12 - ' - Me.Label12.AutoSize = True - Me.Label12.Dock = System.Windows.Forms.DockStyle.Fill - Me.Label12.Location = New System.Drawing.Point(50, 0) - Me.Label12.Margin = New System.Windows.Forms.Padding(0) - Me.Label12.Name = "Label12" - Me.Label12.Size = New System.Drawing.Size(56, 25) - Me.Label12.TabIndex = 13 - Me.Label12.Text = "Short" - Me.Label12.TextAlign = System.Drawing.ContentAlignment.MiddleCenter - ' - 'Label13 - ' - Me.Label13.AutoSize = True - Me.Label13.Dock = System.Windows.Forms.DockStyle.Fill - Me.Label13.Location = New System.Drawing.Point(106, 0) - Me.Label13.Margin = New System.Windows.Forms.Padding(0) - Me.Label13.Name = "Label13" - Me.Label13.Size = New System.Drawing.Size(56, 25) - Me.Label13.TabIndex = 13 - Me.Label13.Text = "Long" - Me.Label13.TextAlign = System.Drawing.ContentAlignment.MiddleCenter - ' - 'Label14 - ' - Me.Label14.AutoSize = True - Me.Label14.Dock = System.Windows.Forms.DockStyle.Fill - Me.Label14.Location = New System.Drawing.Point(162, 0) - Me.Label14.Margin = New System.Windows.Forms.Padding(0) - Me.Label14.Name = "Label14" - Me.Label14.Size = New System.Drawing.Size(56, 25) - Me.Label14.TabIndex = 13 - Me.Label14.Text = "LnObj" - Me.Label14.TextAlign = System.Drawing.ContentAlignment.MiddleCenter - ' - 'Label15 - ' - Me.Label15.AutoSize = True - Me.Label15.Dock = System.Windows.Forms.DockStyle.Fill - Me.Label15.Location = New System.Drawing.Point(218, 0) - Me.Label15.Margin = New System.Windows.Forms.Padding(0) - Me.Label15.Name = "Label15" - Me.Label15.Size = New System.Drawing.Size(56, 25) - Me.Label15.TabIndex = 13 - Me.Label15.Text = "Hidden" - Me.Label15.TextAlign = System.Drawing.ContentAlignment.MiddleCenter - ' - 'dgStatistics - ' - Me.AcceptButton = Me.OK_Button - Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None - Me.CancelButton = Me.OK_Button - Me.ClientSize = New System.Drawing.Size(482, 254) - Me.Controls.Add(Me.TableLayoutPanel1) - Me.Controls.Add(Me.lIcon) - Me.Controls.Add(Me.OK_Button) - Me.Font = New System.Drawing.Font("Segoe UI", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) - Me.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle - Me.Icon = CType(resources.GetObject("$this.Icon"), System.Drawing.Icon) - Me.MaximizeBox = False - Me.MinimizeBox = False - Me.Name = "dgStatistics" - Me.ShowInTaskbar = False - Me.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent - Me.Text = "Statistics" - Me.TableLayoutPanel1.ResumeLayout(False) - Me.TableLayoutPanel1.PerformLayout() - Me.ResumeLayout(False) - - End Sub - Friend WithEvents OK_Button As System.Windows.Forms.Button - Friend WithEvents lIcon As System.Windows.Forms.Label - Friend WithEvents TableLayoutPanel1 As System.Windows.Forms.TableLayoutPanel - Friend WithEvents Label6 As System.Windows.Forms.Label - Friend WithEvents Label16 As System.Windows.Forms.Label - Friend WithEvents Label1 As System.Windows.Forms.Label - Friend WithEvents Label7 As System.Windows.Forms.Label - Friend WithEvents Label8 As System.Windows.Forms.Label - Friend WithEvents Label9 As System.Windows.Forms.Label - Friend WithEvents Label10 As System.Windows.Forms.Label - Friend WithEvents Label11 As System.Windows.Forms.Label - Friend WithEvents Label12 As System.Windows.Forms.Label - Friend WithEvents Label13 As System.Windows.Forms.Label - Friend WithEvents Label14 As System.Windows.Forms.Label - Friend WithEvents Label15 As System.Windows.Forms.Label - Friend WithEvents Label2 As System.Windows.Forms.Label - -End Class + +Partial Class dgStatistics + Inherits System.Windows.Forms.Form + + 'Form 重写 Dispose,以清理组件列表。 + + Protected Overrides Sub Dispose(ByVal disposing As Boolean) + Try + If disposing AndAlso components IsNot Nothing Then + components.Dispose() + End If + Finally + MyBase.Dispose(disposing) + End Try + End Sub + + 'Windows 窗体设计器所必需的 + Private components As System.ComponentModel.IContainer + + '注意: 以下过程是 Windows 窗体设计器所必需的 + '可以使用 Windows 窗体设计器修改它。 + '不要使用代码编辑器修改它。 + + Private Sub InitializeComponent() + Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(dgStatistics)) + Me.OK_Button = New System.Windows.Forms.Button() + Me.lIcon = New System.Windows.Forms.Label() + Me.TableLayoutPanel1 = New System.Windows.Forms.TableLayoutPanel() + Me.SuspendLayout() + ' + 'OK_Button + ' + Me.OK_Button.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) + Me.OK_Button.DialogResult = System.Windows.Forms.DialogResult.Cancel + Me.OK_Button.FlatStyle = System.Windows.Forms.FlatStyle.System + Me.OK_Button.Location = New System.Drawing.Point(483, 569) + Me.OK_Button.Name = "OK_Button" + Me.OK_Button.Size = New System.Drawing.Size(78, 27) + Me.OK_Button.TabIndex = 0 + Me.OK_Button.Text = "OK" + ' + 'lIcon + ' + Me.lIcon.Image = Global.iBMSC.My.Resources.Resources.Statistics3 + Me.lIcon.Location = New System.Drawing.Point(12, 9) + Me.lIcon.Name = "lIcon" + Me.lIcon.Size = New System.Drawing.Size(42, 42) + Me.lIcon.TabIndex = 1 + ' + 'TableLayoutPanel1 + ' + Me.TableLayoutPanel1.ColumnCount = 8 + Me.TableLayoutPanel1.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle()) + Me.TableLayoutPanel1.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 14.28571!)) + Me.TableLayoutPanel1.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 14.28571!)) + Me.TableLayoutPanel1.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 14.28571!)) + Me.TableLayoutPanel1.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 14.28571!)) + Me.TableLayoutPanel1.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 14.28571!)) + Me.TableLayoutPanel1.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 14.28571!)) + Me.TableLayoutPanel1.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 14.28571!)) + Me.TableLayoutPanel1.Location = New System.Drawing.Point(64, 12) + Me.TableLayoutPanel1.Name = "TableLayoutPanel1" + Me.TableLayoutPanel1.RowCount = 26 + Me.TableLayoutPanel1.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 4.215852!)) + Me.TableLayoutPanel1.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 4.215852!)) + Me.TableLayoutPanel1.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 4.215852!)) + Me.TableLayoutPanel1.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 4.215852!)) + Me.TableLayoutPanel1.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 4.215852!)) + Me.TableLayoutPanel1.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 4.215852!)) + Me.TableLayoutPanel1.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 4.215852!)) + Me.TableLayoutPanel1.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 4.215852!)) + Me.TableLayoutPanel1.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 4.215852!)) + Me.TableLayoutPanel1.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 4.215852!)) + Me.TableLayoutPanel1.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 4.215852!)) + Me.TableLayoutPanel1.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 4.215852!)) + Me.TableLayoutPanel1.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 4.215852!)) + Me.TableLayoutPanel1.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 4.215852!)) + Me.TableLayoutPanel1.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 4.215852!)) + Me.TableLayoutPanel1.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 4.215852!)) + Me.TableLayoutPanel1.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 4.215852!)) + Me.TableLayoutPanel1.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 4.215852!)) + Me.TableLayoutPanel1.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 4.215852!)) + Me.TableLayoutPanel1.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 4.215852!)) + Me.TableLayoutPanel1.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 4.215852!)) + Me.TableLayoutPanel1.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 4.215852!)) + Me.TableLayoutPanel1.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 4.215852!)) + Me.TableLayoutPanel1.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 3.035414!)) + Me.TableLayoutPanel1.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20.0!)) + Me.TableLayoutPanel1.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20.0!)) + Me.TableLayoutPanel1.Size = New System.Drawing.Size(480, 540) + Me.TableLayoutPanel1.TabIndex = 12 + ' + 'dgStatistics + ' + Me.AcceptButton = Me.OK_Button + Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None + Me.CancelButton = Me.OK_Button + Me.ClientSize = New System.Drawing.Size(584, 611) + Me.Controls.Add(Me.TableLayoutPanel1) + Me.Controls.Add(Me.lIcon) + Me.Controls.Add(Me.OK_Button) + Me.Font = New System.Drawing.Font("Segoe UI", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle + Me.Icon = CType(resources.GetObject("$this.Icon"), System.Drawing.Icon) + Me.MaximizeBox = False + Me.MinimizeBox = False + Me.Name = "dgStatistics" + Me.ShowInTaskbar = False + Me.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent + Me.Text = "Statistics" + Me.ResumeLayout(False) + + End Sub + Friend WithEvents OK_Button As System.Windows.Forms.Button + Friend WithEvents lIcon As System.Windows.Forms.Label + Friend WithEvents TableLayoutPanel1 As System.Windows.Forms.TableLayoutPanel +End Class diff --git a/iBMSC/Dialogs/dgStatistics.vb b/iBMSC/Dialogs/dgStatistics.vb index 98e3b4704..ba3b5b563 100644 --- a/iBMSC/Dialogs/dgStatistics.vb +++ b/iBMSC/Dialogs/dgStatistics.vb @@ -1,51 +1,90 @@ -Imports System.Windows.Forms - -Public Class dgStatistics - - Private Sub OK_Button_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OK_Button.Click - Me.DialogResult = System.Windows.Forms.DialogResult.OK - Me.Close() - End Sub - - Private Sub Cancel_Button_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) - Me.DialogResult = System.Windows.Forms.DialogResult.Cancel - Me.Close() - End Sub - - Private Sub dgStatistics_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load - Me.Font = MainWindow.Font - - Me.Text = Strings.fStatistics.Title - Label6.Text = Strings.fStatistics.lBPM - Label7.Text = Strings.fStatistics.lSTOP - Label8.Text = Strings.fStatistics.lSCROLL - Label9.Text = Strings.fStatistics.lA - Label10.Text = Strings.fStatistics.lD - Label11.Text = Strings.fStatistics.lBGM - Label1.Text = Strings.fStatistics.lTotal - Label12.Text = Strings.fStatistics.lShort - Label13.Text = Strings.fStatistics.lLong - Label14.Text = Strings.fStatistics.lLnObj - Label15.Text = Strings.fStatistics.lHidden - Label16.Text = Strings.fStatistics.lErrors - Label2.Text = Strings.fStatistics.lTotal - OK_Button.Text = Strings.OK - End Sub - - Public Sub New(ByVal data(,) As Integer) - InitializeComponent() - - For row As Integer = 0 To 6 - For col As Integer = 0 To 5 - Dim xLabel As New Label - xLabel.Dock = DockStyle.Fill - xLabel.TextAlign = ContentAlignment.MiddleCenter - xLabel.Margin = New Padding(0) - xLabel.Font = New Font(Me.Font, FontStyle.Bold) - If data(row, col) <> 0 Then xLabel.Text = data(row, col) - If row Mod 2 = 0 Then xLabel.BackColor = Color.FromArgb(&H10000000) - TableLayoutPanel1.Controls.Add(xLabel, col + 1, row + 1) - Next - Next - End Sub -End Class +Imports System.Windows.Forms + +Public Class dgStatistics + + Private Sub OK_Button_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OK_Button.Click + Me.DialogResult = System.Windows.Forms.DialogResult.OK + Me.Close() + End Sub + + Private Sub Cancel_Button_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) + Me.DialogResult = System.Windows.Forms.DialogResult.Cancel + Me.Close() + End Sub + + Private Sub dgStatistics_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load + Me.Font = MainWindow.Font + + ' Me.Text = Strings.fStatistics.Title + ' LRow1.Text = Strings.fStatistics.lSCROLL + ' LRow2.Text = Strings.fStatistics.lBPM + ' LRow3.Text = Strings.fStatistics.lSTOP + ' LRow4.Text = Strings.fStatistics.lA1 + ' LRow5.Text = Strings.fStatistics.lA2 + ' LRow6.Text = Strings.fStatistics.lA3 + ' LRow7.Text = Strings.fStatistics.lA4 + ' LRow8.Text = Strings.fStatistics.lA5 + ' LRow9.Text = Strings.fStatistics.lA6 + ' LRow10.Text = Strings.fStatistics.lA7 + ' LRow11.Text = Strings.fStatistics.lA8 + ' LRow12.Text = Strings.fStatistics.lD1 + ' LRow13.Text = Strings.fStatistics.lD2 + ' LRow14.Text = Strings.fStatistics.lD3 + ' LRow15.Text = Strings.fStatistics.lD4 + ' LRow16.Text = Strings.fStatistics.lD5 + ' LRow17.Text = Strings.fStatistics.lD6 + ' LRow18.Text = Strings.fStatistics.lD7 + ' LRow19.Text = Strings.fStatistics.lD8 + ' LRow20.Text = Strings.fStatistics.lA + ' LRow21.Text = Strings.fStatistics.lD + ' LRow22.Text = Strings.fStatistics.lBGM + ' LRow23.Text = Strings.fStatistics.lNotes + ' LRowTotal.Text = Strings.fStatistics.lTotal + ' LColumn1.Text = Strings.fStatistics.lShort + ' LColumn2.Text = Strings.fStatistics.lLong + ' LColumn3.Text = Strings.fStatistics.lLnObj + ' LColumn4.Text = Strings.fStatistics.lHidden + ' LColumn5.Text = Strings.fStatistics.lLandmines + ' LColumn6.Text = Strings.fStatistics.lErrors + ' LColumnTotal.Text = Strings.fStatistics.lTotal + OK_Button.Text = Strings.OK + ' StTotalText.Text = Strings.fStatistics.recTotal + ' StTotalValue.Text = Strings.fStatistics.recTotalValue + End Sub + + Public Sub New(ByVal data(,) As Integer, ByVal LRows() As String, ByVal LCols() As String) + InitializeComponent() + + For row As Integer = 1 To TableLayoutPanel1.RowCount - 1 + Dim xLabel As New Label + xLabel.Dock = DockStyle.Fill + xLabel.TextAlign = ContentAlignment.MiddleRight + xLabel.Margin = New Padding(0) + xLabel.Text = LRows(row - 1) + If row Mod 2 = 1 Then xLabel.BackColor = Color.FromArgb(&H10000000) + TableLayoutPanel1.Controls.Add(xLabel, 0, row) + Next + For col As Integer = 1 To TableLayoutPanel1.ColumnCount - 1 + Dim xLabel As New Label + xLabel.Dock = DockStyle.Fill + xLabel.TextAlign = ContentAlignment.MiddleCenter + xLabel.Margin = New Padding(0) + xLabel.Text = LCols(col - 1) + TableLayoutPanel1.Controls.Add(xLabel, col, 0) + Next + + For row As Integer = 1 To TableLayoutPanel1.RowCount - 1 + For col As Integer = 1 To TableLayoutPanel1.ColumnCount - 1 + Dim xLabel As New Label + xLabel.Dock = DockStyle.Fill + xLabel.TextAlign = ContentAlignment.MiddleCenter + xLabel.Margin = New Padding(0) + xLabel.Font = New Font(Me.Font, FontStyle.Bold) + If data(row - 1, col - 1) <> 0 Then xLabel.Text = data(row - 1, col - 1) + If row Mod 2 = 1 Then xLabel.BackColor = Color.FromArgb(&H10000000) + TableLayoutPanel1.Controls.Add(xLabel, col, row) + Next + Next + End Sub + +End Class diff --git a/iBMSC/Dialogs/dgStatisticsLegacy.Designer.vb b/iBMSC/Dialogs/dgStatisticsLegacy.Designer.vb new file mode 100644 index 000000000..f61584e5a --- /dev/null +++ b/iBMSC/Dialogs/dgStatisticsLegacy.Designer.vb @@ -0,0 +1,290 @@ + +Partial Class dgStatisticsLegacy + Inherits System.Windows.Forms.Form + + 'Form 重写 Dispose,以清理组件列表。 + + Protected Overrides Sub Dispose(ByVal disposing As Boolean) + Try + If disposing AndAlso components IsNot Nothing Then + components.Dispose() + End If + Finally + MyBase.Dispose(disposing) + End Try + End Sub + + 'Windows 窗体设计器所必需的 + Private components As System.ComponentModel.IContainer + + '注意: 以下过程是 Windows 窗体设计器所必需的 + '可以使用 Windows 窗体设计器修改它。 + '不要使用代码编辑器修改它。 + + Private Sub InitializeComponent() + Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(dgStatistics)) + Me.OK_Button = New System.Windows.Forms.Button + Me.lIcon = New System.Windows.Forms.Label + Me.TableLayoutPanel1 = New System.Windows.Forms.TableLayoutPanel + Me.Label2 = New System.Windows.Forms.Label + Me.Label15 = New System.Windows.Forms.Label + Me.Label1 = New System.Windows.Forms.Label + Me.Label6 = New System.Windows.Forms.Label + Me.Label7 = New System.Windows.Forms.Label + Me.Label8 = New System.Windows.Forms.Label + Me.Label9 = New System.Windows.Forms.Label + Me.Label10 = New System.Windows.Forms.Label + Me.Label11 = New System.Windows.Forms.Label + Me.Label12 = New System.Windows.Forms.Label + Me.Label13 = New System.Windows.Forms.Label + Me.Label14 = New System.Windows.Forms.Label + Me.TableLayoutPanel1.SuspendLayout() + Me.SuspendLayout() + ' + 'OK_Button + ' + Me.OK_Button.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) + Me.OK_Button.DialogResult = System.Windows.Forms.DialogResult.Cancel + Me.OK_Button.FlatStyle = System.Windows.Forms.FlatStyle.System + Me.OK_Button.Location = New System.Drawing.Point(381, 188) + Me.OK_Button.Name = "OK_Button" + Me.OK_Button.Size = New System.Drawing.Size(78, 27) + Me.OK_Button.TabIndex = 0 + Me.OK_Button.Text = "OK" + ' + 'lIcon + ' + Me.lIcon.Image = Global.iBMSC.My.Resources.Resources.Statistics3 + Me.lIcon.Location = New System.Drawing.Point(12, 9) + Me.lIcon.Name = "lIcon" + Me.lIcon.Size = New System.Drawing.Size(42, 42) + Me.lIcon.TabIndex = 1 + ' + 'TableLayoutPanel1 + ' + Me.TableLayoutPanel1.ColumnCount = 7 + Me.TableLayoutPanel1.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle) + Me.TableLayoutPanel1.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 16.66667!)) + Me.TableLayoutPanel1.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 16.66667!)) + Me.TableLayoutPanel1.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 16.66667!)) + Me.TableLayoutPanel1.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 16.66667!)) + Me.TableLayoutPanel1.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 16.66667!)) + Me.TableLayoutPanel1.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 16.66667!)) + Me.TableLayoutPanel1.Controls.Add(Me.Label2, 5, 0) + Me.TableLayoutPanel1.Controls.Add(Me.Label15, 4, 0) + Me.TableLayoutPanel1.Controls.Add(Me.Label1, 0, 6) + Me.TableLayoutPanel1.Controls.Add(Me.Label6, 0, 1) + Me.TableLayoutPanel1.Controls.Add(Me.Label7, 0, 2) + Me.TableLayoutPanel1.Controls.Add(Me.Label8, 0, 3) + Me.TableLayoutPanel1.Controls.Add(Me.Label9, 0, 4) + Me.TableLayoutPanel1.Controls.Add(Me.Label10, 0, 5) + Me.TableLayoutPanel1.Controls.Add(Me.Label11, 1, 0) + Me.TableLayoutPanel1.Controls.Add(Me.Label12, 2, 0) + Me.TableLayoutPanel1.Controls.Add(Me.Label13, 3, 0) + Me.TableLayoutPanel1.Controls.Add(Me.Label14, 4, 0) + Me.TableLayoutPanel1.Location = New System.Drawing.Point(64, 12) + Me.TableLayoutPanel1.Name = "TableLayoutPanel1" + Me.TableLayoutPanel1.RowCount = 7 + Me.TableLayoutPanel1.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 25.0!)) + Me.TableLayoutPanel1.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 16.66667!)) + Me.TableLayoutPanel1.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 16.66667!)) + Me.TableLayoutPanel1.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 16.66667!)) + Me.TableLayoutPanel1.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 16.66667!)) + Me.TableLayoutPanel1.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 16.66667!)) + Me.TableLayoutPanel1.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 16.66667!)) + Me.TableLayoutPanel1.Size = New System.Drawing.Size(387, 164) + Me.TableLayoutPanel1.TabIndex = 12 + ' + 'Label2 + ' + Me.Label2.AutoSize = True + Me.Label2.Dock = System.Windows.Forms.DockStyle.Fill + Me.Label2.Location = New System.Drawing.Point(330, 0) + Me.Label2.Margin = New System.Windows.Forms.Padding(0) + Me.Label2.Name = "Label2" + Me.Label2.Size = New System.Drawing.Size(57, 25) + Me.Label2.TabIndex = 16 + Me.Label2.Text = "Total" + Me.Label2.TextAlign = System.Drawing.ContentAlignment.MiddleCenter + ' + 'Label15 + ' + Me.Label15.AutoSize = True + Me.Label15.Dock = System.Windows.Forms.DockStyle.Fill + Me.Label15.Location = New System.Drawing.Point(274, 0) + Me.Label15.Margin = New System.Windows.Forms.Padding(0) + Me.Label15.Name = "Label15" + Me.Label15.Size = New System.Drawing.Size(56, 25) + Me.Label15.TabIndex = 15 + Me.Label15.Text = "Errors" + Me.Label15.TextAlign = System.Drawing.ContentAlignment.MiddleCenter + ' + 'Label1 + ' + Me.Label1.AutoSize = True + Me.Label1.Dock = System.Windows.Forms.DockStyle.Fill + Me.Label1.Location = New System.Drawing.Point(0, 140) + Me.Label1.Margin = New System.Windows.Forms.Padding(0) + Me.Label1.Name = "Label1" + Me.Label1.Padding = New System.Windows.Forms.Padding(10, 0, 0, 0) + Me.Label1.Size = New System.Drawing.Size(50, 24) + Me.Label1.TabIndex = 14 + Me.Label1.Text = "Total" + Me.Label1.TextAlign = System.Drawing.ContentAlignment.MiddleRight + ' + 'Label6 + ' + Me.Label6.AutoSize = True + Me.Label6.BackColor = System.Drawing.Color.FromArgb(CType(CType(16, Byte), Integer), CType(CType(0, Byte), Integer), CType(CType(0, Byte), Integer), CType(CType(0, Byte), Integer)) + Me.Label6.Dock = System.Windows.Forms.DockStyle.Fill + Me.Label6.Location = New System.Drawing.Point(0, 25) + Me.Label6.Margin = New System.Windows.Forms.Padding(0) + Me.Label6.Name = "Label6" + Me.Label6.Padding = New System.Windows.Forms.Padding(10, 0, 0, 0) + Me.Label6.Size = New System.Drawing.Size(50, 23) + Me.Label6.TabIndex = 13 + Me.Label6.Text = "BPM" + Me.Label6.TextAlign = System.Drawing.ContentAlignment.MiddleRight + ' + 'Label7 + ' + Me.Label7.AutoSize = True + Me.Label7.Dock = System.Windows.Forms.DockStyle.Fill + Me.Label7.Location = New System.Drawing.Point(0, 48) + Me.Label7.Margin = New System.Windows.Forms.Padding(0) + Me.Label7.Name = "Label7" + Me.Label7.Padding = New System.Windows.Forms.Padding(10, 0, 0, 0) + Me.Label7.Size = New System.Drawing.Size(50, 23) + Me.Label7.TabIndex = 13 + Me.Label7.Text = "STOP" + Me.Label7.TextAlign = System.Drawing.ContentAlignment.MiddleRight + ' + 'Label8 + ' + Me.Label8.AutoSize = True + Me.Label8.BackColor = System.Drawing.Color.FromArgb(CType(CType(16, Byte), Integer), CType(CType(0, Byte), Integer), CType(CType(0, Byte), Integer), CType(CType(0, Byte), Integer)) + Me.Label8.Dock = System.Windows.Forms.DockStyle.Fill + Me.Label8.Location = New System.Drawing.Point(0, 71) + Me.Label8.Margin = New System.Windows.Forms.Padding(0) + Me.Label8.Name = "Label8" + Me.Label8.Padding = New System.Windows.Forms.Padding(10, 0, 0, 0) + Me.Label8.Size = New System.Drawing.Size(50, 23) + Me.Label8.TabIndex = 13 + Me.Label8.Text = "A1-A8" + Me.Label8.TextAlign = System.Drawing.ContentAlignment.MiddleRight + ' + 'Label9 + ' + Me.Label9.AutoSize = True + Me.Label9.Dock = System.Windows.Forms.DockStyle.Fill + Me.Label9.Location = New System.Drawing.Point(0, 94) + Me.Label9.Margin = New System.Windows.Forms.Padding(0) + Me.Label9.Name = "Label9" + Me.Label9.Padding = New System.Windows.Forms.Padding(10, 0, 0, 0) + Me.Label9.Size = New System.Drawing.Size(50, 23) + Me.Label9.TabIndex = 13 + Me.Label9.Text = "D1-D8" + Me.Label9.TextAlign = System.Drawing.ContentAlignment.MiddleRight + ' + 'Label10 + ' + Me.Label10.AutoSize = True + Me.Label10.BackColor = System.Drawing.Color.FromArgb(CType(CType(16, Byte), Integer), CType(CType(0, Byte), Integer), CType(CType(0, Byte), Integer), CType(CType(0, Byte), Integer)) + Me.Label10.Dock = System.Windows.Forms.DockStyle.Fill + Me.Label10.Location = New System.Drawing.Point(0, 117) + Me.Label10.Margin = New System.Windows.Forms.Padding(0) + Me.Label10.Name = "Label10" + Me.Label10.Padding = New System.Windows.Forms.Padding(10, 0, 0, 0) + Me.Label10.Size = New System.Drawing.Size(50, 23) + Me.Label10.TabIndex = 13 + Me.Label10.Text = "BGM" + Me.Label10.TextAlign = System.Drawing.ContentAlignment.MiddleRight + ' + 'Label11 + ' + Me.Label11.AutoSize = True + Me.Label11.Dock = System.Windows.Forms.DockStyle.Fill + Me.Label11.Location = New System.Drawing.Point(50, 0) + Me.Label11.Margin = New System.Windows.Forms.Padding(0) + Me.Label11.Name = "Label11" + Me.Label11.Size = New System.Drawing.Size(56, 25) + Me.Label11.TabIndex = 13 + Me.Label11.Text = "Short" + Me.Label11.TextAlign = System.Drawing.ContentAlignment.MiddleCenter + ' + 'Label12 + ' + Me.Label12.AutoSize = True + Me.Label12.Dock = System.Windows.Forms.DockStyle.Fill + Me.Label12.Location = New System.Drawing.Point(106, 0) + Me.Label12.Margin = New System.Windows.Forms.Padding(0) + Me.Label12.Name = "Label12" + Me.Label12.Size = New System.Drawing.Size(56, 25) + Me.Label12.TabIndex = 13 + Me.Label12.Text = "Long" + Me.Label12.TextAlign = System.Drawing.ContentAlignment.MiddleCenter + ' + 'Label13 + ' + Me.Label13.AutoSize = True + Me.Label13.Dock = System.Windows.Forms.DockStyle.Fill + Me.Label13.Location = New System.Drawing.Point(162, 0) + Me.Label13.Margin = New System.Windows.Forms.Padding(0) + Me.Label13.Name = "Label13" + Me.Label13.Size = New System.Drawing.Size(56, 25) + Me.Label13.TabIndex = 13 + Me.Label13.Text = "LnObj" + Me.Label13.TextAlign = System.Drawing.ContentAlignment.MiddleCenter + ' + 'Label14 + ' + Me.Label14.AutoSize = True + Me.Label14.Dock = System.Windows.Forms.DockStyle.Fill + Me.Label14.Location = New System.Drawing.Point(218, 0) + Me.Label14.Margin = New System.Windows.Forms.Padding(0) + Me.Label14.Name = "Label14" + Me.Label14.Size = New System.Drawing.Size(56, 25) + Me.Label14.TabIndex = 13 + Me.Label14.Text = "Hidden" + Me.Label14.TextAlign = System.Drawing.ContentAlignment.MiddleCenter + ' + 'dgStatisticsLegacy + ' + Me.AcceptButton = Me.OK_Button + Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None + Me.CancelButton = Me.OK_Button + Me.ClientSize = New System.Drawing.Size(482, 230) + Me.Controls.Add(Me.TableLayoutPanel1) + Me.Controls.Add(Me.lIcon) + Me.Controls.Add(Me.OK_Button) + Me.Font = New System.Drawing.Font("Segoe UI", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle + Me.Icon = CType(resources.GetObject("$this.Icon"), System.Drawing.Icon) + Me.MaximizeBox = False + Me.MinimizeBox = False + Me.Name = "dgStatisticsLegacy" + Me.ShowInTaskbar = False + Me.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent + Me.Text = "Statistics (Legacy)" + Me.TableLayoutPanel1.ResumeLayout(False) + Me.TableLayoutPanel1.PerformLayout() + Me.ResumeLayout(False) + + End Sub + Friend WithEvents OK_Button As System.Windows.Forms.Button + Friend WithEvents lIcon As System.Windows.Forms.Label + Friend WithEvents TableLayoutPanel1 As System.Windows.Forms.TableLayoutPanel + Friend WithEvents Label6 As System.Windows.Forms.Label + Friend WithEvents Label15 As System.Windows.Forms.Label + Friend WithEvents Label1 As System.Windows.Forms.Label + Friend WithEvents Label7 As System.Windows.Forms.Label + Friend WithEvents Label8 As System.Windows.Forms.Label + Friend WithEvents Label9 As System.Windows.Forms.Label + Friend WithEvents Label10 As System.Windows.Forms.Label + Friend WithEvents Label11 As System.Windows.Forms.Label + Friend WithEvents Label12 As System.Windows.Forms.Label + Friend WithEvents Label13 As System.Windows.Forms.Label + Friend WithEvents Label14 As System.Windows.Forms.Label + Friend WithEvents Label2 As System.Windows.Forms.Label + +End Class diff --git a/iBMSC/Dialogs/dgStatisticsLegacy.vb b/iBMSC/Dialogs/dgStatisticsLegacy.vb new file mode 100644 index 000000000..3e964f6db --- /dev/null +++ b/iBMSC/Dialogs/dgStatisticsLegacy.vb @@ -0,0 +1,50 @@ +Imports System.Windows.Forms + +Public Class dgStatisticsLegacy + + Private Sub OK_Button_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OK_Button.Click + Me.DialogResult = System.Windows.Forms.DialogResult.OK + Me.Close() + End Sub + + Private Sub Cancel_Button_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) + Me.DialogResult = System.Windows.Forms.DialogResult.Cancel + Me.Close() + End Sub + + Private Sub dgStatistics_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load + Me.Font = MainWindow.Font + + Me.Text = Strings.fStatistics.Title + Label6.Text = Strings.fStatistics.lBPM + Label7.Text = Strings.fStatistics.lSTOP + Label8.Text = Strings.fStatistics.lA + Label9.Text = Strings.fStatistics.lD + Label10.Text = Strings.fStatistics.lBGM + Label1.Text = Strings.fStatistics.lTotal + Label11.Text = Strings.fStatistics.lShort + Label12.Text = Strings.fStatistics.lLong + Label13.Text = Strings.fStatistics.lLnObj + Label14.Text = Strings.fStatistics.lHidden + Label15.Text = Strings.fStatistics.lErrors + Label2.Text = Strings.fStatistics.lTotal + OK_Button.Text = Strings.OK + End Sub + + Public Sub New(ByVal data(,) As Integer) + InitializeComponent() + + For row As Integer = 0 To 5 + For col As Integer = 0 To 5 + Dim xLabel As New Label + xLabel.Dock = DockStyle.Fill + xLabel.TextAlign = ContentAlignment.MiddleCenter + xLabel.Margin = New Padding(0) + xLabel.Font = New Font(Me.Font, FontStyle.Bold) + If data(row, col) <> 0 Then xLabel.Text = data(row, col) + If row Mod 2 = 0 Then xLabel.BackColor = Color.FromArgb(&H10000000) + TableLayoutPanel1.Controls.Add(xLabel, col + 1, row + 1) + Next + Next + End Sub +End Class From 56154ee54a9bc2ed27df5eb3ab13e404eb948819 Mon Sep 17 00:00:00 2001 From: psyk2642 <60137590+psyk2642@users.noreply.github.com> Date: Thu, 5 Nov 2020 21:10:40 +0800 Subject: [PATCH 019/257] Update README.md --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 0d89e5dff..0d4e6d180 100644 --- a/README.md +++ b/README.md @@ -19,3 +19,4 @@ Changes in this fork * Changed the temporary bms file extension from .bms to .bmsc. * Allows selecting all file types when opening files * Fixed the total note count on the toolbar +* Added advanced statistics (Ctrl+Shift+T) From cd2a3b606657804d1598b683742b6ab50b12ebe5 Mon Sep 17 00:00:00 2001 From: psyk2642 <60137590+psyk2642@users.noreply.github.com> Date: Fri, 6 Nov 2020 06:59:21 +0800 Subject: [PATCH 020/257] Advanced Statistics (part 3) --- iBMSC/iBMSC.vbproj | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/iBMSC/iBMSC.vbproj b/iBMSC/iBMSC.vbproj index 4d22959a7..a0c701522 100644 --- a/iBMSC/iBMSC.vbproj +++ b/iBMSC/iBMSC.vbproj @@ -110,8 +110,9 @@ Component - - + + + Form @@ -314,6 +315,8 @@ + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 497, 2 - - - 625, 2 - - - 1240, 2 - - - 87, 2 - - - 176, 2 - - - 266, 2 - - - 400, 47 - - - 737, 2 - - - 839, 2 - - - - - iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 - YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAhgSURBVFhHvZZ7UNNXFsd/PAK6bmvXrTuzXVuoWFBUBCSA - IEYQVMKC8pKHYqvdWndXx2pFrdVNq2B5yCPI+2XA8EoCCRBeARIDqEAtIkpZRRFrqyQ8dLXWP2j97v2F - FDYFO+DO9Mx85je5+d1zvufce8/9UbQJAikDBYdlqOBQhpqB39I4HEo/a7/lvLMcC9MCzlsLtcO/ndGZ - n+WYmMZ+tDQs5oD1GXHUykNNyZYhdV+8vqaCM+utjJUUQ/sq5dXwO4mHRO+5R7Ue3KsIlXpYV6GPdRJ9 - uIkJpfpYXzanSvv69IwuO5157H7r5IRD9qjmOqMth9nfkmJZcjHN4sOWZEvrulirOfS7JPho/dMC1P/A - n5LGH4rgJmSAxTGZRV7Xo+dMywIpyqAshvlpTZILrosCcafi3dHbVUFDvZX+d66WuCuqoxZHCo6+Ye1R - pjda9/QcEkc+ROzwDh0ShndBRkS4lTDwyhvUHynWDPdTc5rV9vZsJ1Vv5Y7nI+0HoW7dhz5ZGC4XekIa - ZdXLP7w4gp0968eaxzycHt6JU0MhOsQOv6cR4FrMADWLMqEWUcZa19Oz+pg/uTelWFT11wQ9HGzfD1X7 - XnRXhqEp96+oSlyL4qPM745/9ubzqm+Sfl1AIQPGr1JmRAK9DNO3Wo7xImXyO+F99f7f9Ct2olu6Hcpc - H5znsfFvZQiuybagku8KoZCUvNXvhQLWFrykgJIAaraSa+Z0vXTjhStCbzSdHQt+ReqLh727MHJjF3rP - h6I6fSMyBBsQ1eOLyIGgyQLOEQHGLyGAtpZoi1eqohYniSNWPKg544obTaGa4KrWbRi8uA2qi2G4pQhF - XYEnuGnO+OL65skC8oxeXgBtxZ/82Zl/aHFS0Wf2D7sbg/Do1m6oL2yDujEY6voQqBTb0FMegJq8jUgV - ueNUm5eOABZvTIAJS3MUp29smbGQVav3E91kAvNm48RJE9QWuaOvZRsGLoRBLQuGShyAofItUNWG4lZt - CCQprkjKZ+HUTT9Eq8Ige0oE5BphdZYhVmcYwjmdkMqAUzLhDAOruIQEBtYkvirVhp0w0mSe1TzJA33O - ax7mQno7HgL+VtSkuONOM1kCZRgGJYFQ8X2hLvTDQOkW3CS/a/meSMhwQsRlb4gec1FL5tM+XkT900I4 - njYizUrTJyaalYdY75n0cS6iB3ciQhWqIVLhibR8VzTw2bghDSRVCIW6wA/qbB8M5m6GqiwIPcV+qEh3 - Q5LIDZ+1eeLEQMj4/F8Spd6Bmu/z4RBrBBLyNZ1m5U4EVPwnG58/CMEn933G+ddX6xEfz4SMtwF3G7dC - RTJXZ2/CQJIXhtLJsygQt6RBEKe6IibDEce+9tSZ/79wHgSh6gkPDtEaAX8hTDQrWoDkUSaO3w9E+Lfs - Cfo24mibGxLzV6OCNKRblUFQi8mGTPWBOsFL8xwoDEBPiR+q+RsRm7MKR5pddH1o+fQ7f1SSKttHaQSY - ECY26jqx/rOyhxk4cs8X++6un0S4zBmn0xwgI2t+Q+gPFclcnTImYpAWIyQiBP4ojF+PKIEfDneG4qPb - bB0fh+5tQjmpsv0pjQBTgq4A0UgaPr7rjX/0uU7J/nYXRMXZQEp2fz85CapCIiKZVCCOjeE0L3ybH4zm - ogMoLohFgjAW4R1BuvP72SgjVWZGTiGA3OfPBMMp+PjOZuzp2zA1vSSTekfE5DmigrsWN0nWQ6ItGErx - wl2uHzqz9qJRkg25vA4yZT240igcbnlvfP6BOz4QjaSDedJ4CgFlRMBQKgTDv06m6gT+WctERNwK1JE1 - v1kaiHu8YFzJ3At5HhfyegW+7LiGjo4rKC2TIK86B+d6UlCsGptfOpIJuxMaAbp7YH0ZaUQC/Z/Wlhhg - bZEBWAUEvgHW5BN4BnA5awiXHEMUDp7Bzm4W3m+xRQTXCkXRHrggOAB5eY4m+NXOq2hrbYe88TxaWi6h - WFiE8FO74RFhqsmcDm7xN4aShNQ9BbRpm8NcAv0nrZAu0zh2WYajfDUX7/Y4I/C6NXZKFuNznhdEBYlQ - Khvw1ZVutF5qQ0vzRSgUzZDK5BBn5kC0++/fZ7u68w7Oneuv9Uv7/wNh0keLnrY50Mro8oxBLhYTFjXL - LsNwNF+VgK3djvDtWqbh/SYvJBZyoWhqRtfVa2hsUKBRrkQDeRbk5EF69Dg6Q0Mhd3FRiZYty0ywsLBY - QFGziV/dTjgdW5luOJo3EI+ga0x4dy7R4HfZFh+c3wSu5DTKy6W4RMpf1SAHP4eHhkNH0BW2Hf2+vuhh - s3HRxaW/2NIym2dmtlLrcma2MpUxenYgDgFdtmB3mI/j/eVS7KkLBa8iF2USMUSZ2RCGH0aTfwA6PTzw - NaGLcIHFQsXy5feFy5d/wKEoI+JyZhWwTSYCHsTB/6oNPDve0SGgg4mMy/E4Fh2OnD37flR4+0Du5AQ5 - kwmFoyPkhAaCjFBhaxudbGpqIiAfw1rX0zPbMy8W4Nu5Atl348CONEeWm5tIymQ+UTo5o87ODmTtIbaz - e15rbw+xjQ0EVlacjIUL55KzOLMK2HDHBIReWwW/TmsdgrscQC+PfeRsHJs/b7vIcqmgzsHhgZQIEBAB - 5ba2EK9Y8axo2bLW/KVL6dMws+C02SQyRvMHEsEjG3EqzqmSYH9yNv1FtIi7aJFN0ZIlIrGl5aMqknkp - yZwEb8tbsmRThrn561qXMzPnhDkSxwij5/R9Tl+p9K1GXyx0b/9Fk1nAmj//9wXm5quFVlYHSdkzi62s - YkjmwWSMDj7z7H82bbN6jTBVs/q5ydD/a5pM1oIF89Lefts+xczsTYGlJb3z/2+j1U9uVhPQ4+NNhhw3 - fTowveMnbzqK+i+0KibWP70jiwAAAABJRU5ErkJggg== - - - - 1022, 2 - - - 931, 2 - - - 1120, 2 - - - 65 - - - - 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 - AgYBAQMiCgo4NxISyQ4EBFkCAAAMAAAABAAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAA - AwAAAAMAAAAEAAAABQMCAQMbFA4IdVc6xIdkRvVfQi3fKR0UtAEAADcDAwMEAAECBwAAABMAAAEMAAAA - BQAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAYCAQUAAAArAAAAWAAAAGMAAABlOBIT1BUGBrkBAAB3AAAAagAAAGYAAABkAAAAYwAAAGMAAABjAAAA - YwAAAGMAAABjAAAAYwAAAGQAAAB4AAAAigAAAHkHBgR8nXla9qOCY/+igmT+lm5V+gEAAIMAAABjAwkQ - fwURH7UAAQGkAAAAiwAAAHEAAABkAAAAYwAAAGMAAABjAAAAYwAAAGMAAABiAAAAUwAAACIAAAADAAAA - AAkCAg4HAgILDQUEBg0FBFcjDgrPIw4K7SENCu4cCwjvVTAp+TsXGPsaCQj1GAkH8xkKCPAeDAnvIg4K - 7iMOCu4jDgruIw4K7iIOCu4iDgruIg4K7iIOCu9QTk34T09P+jAtLPc0JRz3t5R0/reXdf+xknL/clE9 - /B8NCfAiDgruG0x99zCE0P8ne739F1+M+hYPEvQiDgrvIw4K7h8NCe4eDQnuIQ4K7iIOCu4hDgrtFQkG - 2AIAAJkAAAA2AAAAAiAJCXILAwNAGAsISEIbFPJGHRX+XSog/lEiGv9PLSX+uaWY/pR6i/+YdH3+gmBj - /0MiIf46GRT+Wykf/mMrIf9kLSP+ZCsh/mQtIv9jLCH+Yish/lYrI/+CgYH+hoaG/oeHh/+Hblz+y6uL - /suqiP/EooP+SzAk/jIUD/8+GRP+NHSv/0GK1P49hc7+O5DO/z8iI/5aJRv+WSQa/0ssHf4wGxP+LRMO - /zwYEv5LHxb+OBcR/yANCu4CAACPAAAAGEQWFsYVBgZ+SyIbzU0fF/9UJyD+cj0y/mY4Mv+dpq3+rXGL - /pt2i/+hjqf+mrDL/7mYpf5PLSv+lnFr/raLgv+3jIP+tomB/raIgP+0hn3+s4V8/n5kX/+jo6P+oKCg - /pKSkv+ce2P+17GW/taxk//Al33+YFtX/mhlZP8/QEb+Rpbe/1Sb5/5PluH+OYK2/3ZMRf6XYFX+jVlO - /6B4Vf6jfFr+kWpO/2E9LP5lKR7+aywf/zcWEf4TCAbMAAAAOkAVFUw/FxbZPhsY+V04LP9TPjf/RyQg - /2lHQ/+astb/h3OC/5iOof+Jdob/mnKK/6FliP98Wl3/pJaR/8e5s//HubP/0MG6/9rJwv/gz8f/3s3E - /4SAf//AwMD/u7u7/52al/+8j3n/2KqY/9isl/+kfmr/d3d2/4aGhv9PdZP/ZK3w/2Wu+f9lqvH/LmiL - /01EQv9qWlf/f2RX/62LbP+piGf/pIVm/5FwXf+LWE7/djAj/00fF/8jDwrnAAAARToaGgNbMTG8wKad - /smiov+SrLv+fVt1/kMiG/+Lr7T+o8nq/s647P/Swuf+o5W1/5Jlg/5vT03+OR4O/j0fD/86Hg7+OCIM - /kQuDP9TOw/+VDwQ/ouJh//Ozs7+y8vL/qeUjP/Hlo/+15+X/tekmv+QcWb+oKCg/qOjo/9Gg7D+csf5 - /27C/v5iufP+RGB0/4CAgP53dnX+eV5J/8Cigv69nXv+uZd5/3xnWf61o5/+eTgr/1MhGP4mEAvpAAAA - RikUFR1ySE3emoeZ/qBvfP+Hh4r+kcPJ/ks3Ov9XSlP+fazH/rek1/+wsJv+yLjd/6ybpv6zlbf+rois - /rOJtP+wj6H+i36C/jkdFv8zIAj+QDAU/rOzs//Q0ND+0NDQ/o+Ce/+wqaL+ycXF/sKbmv+gjYj+v7+/ - /q2vsP9KpdD+c9/+/3HY/v5Rsd7+a3B1/5CQkP6FhYX+nn5k/9Swj/7QrYz+upJ1/0dBO/5UTk3+Qyci - /0AaE/4mEAzpAAAARjQXGG+klKz/q4il/6CRov/i2vH/jc3y/1U6Qv+GRmr/UCcp/56mpv/Lzqn/wLy+ - /8Oy1f/Eptr/xKjd/8Ck4P+1hbn/uIGe/7Snr/9IKB3/XlFB/8jIyP/R0dH/z8/P/2JXQ/9+YCn/nIpl - /4V9dv/Jycj/zs7O/5qstP9szdn/etnh/3Tp9v9Mpb7/nJyc/6+vr/+PjIj/v5V7/9evlv/XsZX/nHlk - /3BwcP+IiIj/gYGB/zIXEv8mEAzpAAAARlo4O66st9L+pneY/rykyv/PveP+ubzq/l1IT/+QUXf+eDpX - /oiKef+1uJj+tq23/56PpP6TiJr+iHyS/oFxi/99bIv+eVl6/oVpff+CcXX+UkI9/q6trP/FxcX+vLy8 - /m1UJf+PYhT+d1UX/qysq//Q0ND+0NDQ/omJhf+If2j+6ODf/5iytP5yrLv+wsLC/8XFxf6Zhnv+z5+R - /9inmP7VqZj+hGlb/5OTk/6VlZX+e3h4/0AaE/4mEAzpAAAARm1FSoyyeaH/rG+b/8y13f+hmob/s7eN - /5egm/9zRFv/cUFl/11sfP9dhJv/TYSw/0WLv/9Ckcv/Q5bS/0WY0v9IlM3/T4y//1OAq/9ggp//TVVn - /0BCRP9rZVr/cl49/5FnHf+ichz/h2w8/7m5uf/Gxsb/0dHR/2BcV/8lGwz/LCUd/zQvJ/+8vb3/z8/P - /87Ozv+mg3v/u5ya/8aXk//RmZH/hndx/7W1tf+zs7P/al1a/00gF/8mEAvpAAAARl83QCCMXW3qsnOj - /r2Yv/++rrv+rbSA/pmij/9Ogqz+K4fP/iGa7f8XmvH+F5z1/xee9/4Xn/j+F5/4/heg+P8Xn/j+F5/4 - /hee9/8XnfX+KKL0/kas8f9Unc3+YH+N/k9OQP9EMhH+RjQW/pORjv/m5ub+srGx/jo2MP8aFA3+HhcP - /1VUUv7Ozs7+0dHR/8jIyP47NjP+qayr/83R0f6kgnz+tLGv/8rKyv7AwMD+Wz45/1MiGP4mEAvpAAAA - RkEiJgIrDQ14kWxv/NzG2/+/qcL+comp/iOK1f8Wlu7+F531/hig+v8Yovz+GKP8/xmi/P4co/v+IKT6 - /iKl+v8hpPn+HqP5/hqi+v8Yofr+F6H7/heh+v8Xn/n+G5/2/kOs8/9mncT+JkZd/gsOD/8pKCj+Dw0K - /h8WCf8xIgz+OikP/4qHg/7CwsL+wcHB/7a2tf4zKBb+MiYW/y8nH/59fHv+0NDQ/9DQ0P6trKz+ZDsz - /1YjGf4mEAvpAAAARiANDRtbLS3ZzK68/s2+2f9djMP+F5Dl/hab8/8Yofr+GKP9/hyk/P8vqvv+SLL5 - /1259/5qvPX+cr/0/njB8/96wvP+d8Hz/nG/9P9ku/X+ULT2/jeq9/8go/j+F6H6/heh+v8doPf+Z7ry - /hk6U/8DAwP+BAMD/gUFBP8JBwb+BgUG/xIREP66urr+urq6/21tbf4NCgr+CggI/xEQEP6xsbH+0dHR - /9HR0f6PjY3+fEpA/1gkGv4nEAzpAAAARjEVFYDDnKL/287k/2KUzP8Vkef/F5z1/xii/P8bpP3/MKv7 - /1C1+P9ctfP/XrLt/12t6P9ZpuD/VZ/W/1Wb0P9andH/ZabY/3m24/+Mw+v/nc7x/5nP8/+Ex/T/Yrr1 - /y6m9v8Xnvf/IJ3x/zdjg/8OCgb/FxEL/xkTDP8XEQv/GBMO/xcTDv8dFxD/GxYP/yMbD/8nHhH/JB0S - /y4rJ/+vr6//ycnJ/8TExP+KgYD/kltQ/1gkGv8nEAzpAAAARnlpbdvRrbP+kbHZ/hWO5P8Wm/T+GKL8 - /h2l/f80rPr+Qqz0/jOe6f8wjtL+SHuT/1djVv5bSjL+UD4f/lJAHf9ZRB3+ZU8k/n9qOP9ra1H+Yn2C - /mKSr/97tN7+oM7w/ozI8v89pu/+FZPr/iZxpf9IMg7+WT8U/k03Ff9FMhL+VjsS/1I5EP5NNRL+RTET - /044Ev5RORP+VjwW/1c/GP5pWDv+ta+m/392af61nZj+n2Va/1klG/4mEAzpAAAARpWChv2rhY/+JIrY - /haY8P8Yofr+G6T9/iin+f8rofH+GY3h/kt/nv+dglL+r4dH/6p/Pv6pfjn+oHYy/qyAPP+ofzr+u5RX - /rWLS/+ugkL+solK/q2ERf+cg1X+e46Q/mWbwv9OoN7+FIbb/hx5vf9rVC7+n3g7/qZ7Pf+uhEn+rYNF - /6R7Pv6shVL+poFL/5l3Qv6CXib+aEsV/2BJGP5PPRP+QDIQ/0UzFP6zmZL+n2dc/1gkGv4mEAzpAAAA - RpqDhftki7f/FJDn/xee9/8Yo/3/GaL6/xub8v8ajd//Z3eC/6OAW//Fn2z/x6Bu/8KbZv/KpXn/xKBx - /8qnd//Ipnf/zq2F/9Wzi//RrYL/wJpm/8qibv/Mp3j/wpxq/72ccP+RlpH/P4a8/xV0wf+QfWH/yqZ9 - /7+dcf+KfFz/dnFU/2xyWf+AbUr/v5dl/7qXZv+slVH/z7Zb/+fLaP/rzWj/5spo/8awXv+Th2T/bEU5 - /1QiGf8nEAzpAAAARnJhaNIhjNv+Fpfv/hii+/8Xovz+FZ31/hWQ5v93k6L+xKBx/seea//MoWz+v5VW - /8efaf7DnWj+vplo/sGfdv+tjWL+podd/pt9UP+piFz+vppp/sypef+fm3r+col4/nGJeP9mdV7+uJdq - /pOVif+6mGf+yqV0/oeqi/8Twcf+Gdjg/zLk6/5hoZn+p4li/8WpUP7hwE/+7MpW/+3LWv7ry1/+6spb - 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 - /0AzHv5NfSz+juuS/kHsSP89rDv+RTYO/muCQf+457b+aO1t/kvrUv9QiU/+NScO/kCckv9k6O3+AOjx - /gPr8/8A7vf+AOXu/iyuqv+aysP+ke7y/xzl7f4A7PX+AO/4/wDm7/4fbmz+kIJK/+raof7iwlP+275Y - /6SSS/7Os1X+58VS/+bEUv7bvFD+VE4lmk2k6xQ7ldvufMLy/z+w+v8Yovz/F5z0/ztfdf9OPR//UDcK - /5yLgv/r5O7/0LzX/3doZP9IShT/huGJ/1HqV/9H5k7/M0Mg/z8sDf9UaDD/kvGV/0fxTv9L6FH/RFUj - /0tqR/985On/K+jv/wDt9v8A7PX/AODp/0mLdv+QhWL/i9DM/7709v9g7PH/Gufv/wDe5v8YgoP/Oy8b - /7ite//t4LL/5Mx3/+PGYf/kx2P/5stu/+HJcP+6oUH3KScPXEeg5wE5luCmfr7t/ma99/8ao/v+F5/5 - /jaS0P84MSD+TDQJ/mJLJf+hkIj+kX95/2RSPf5CLwv+Z7Rg/nfqe/9A7Ej+TtRT/kF0N/89ijH+SulQ - /kbuTf885UP+PXsu/kU4G/9awsP+ku7x/j/o7/8T4en+Bc3U/lFPN/9lTjj+XFdA/2Kqqf617fD+oO3w - /xLP1/4XgID+NCYY/0g2Gf6Cc0H+uq56/9DDjP7j1Jj+0rh1/5RxPP43IBHpAAAARgAAAABPouU/WaXf - /IPG9P81rPn/GKL7/x2e9P9DY3X/QCwJ/1w+C/9rUy//kIOD/4yDgP9BMxv/S3Em/6Dro/9R5Vf/SOhO - /0XmS/9P5VX/Z+ls/3Lpdv851j//VXYn/21OH/9Pfmb/kOHl/4Hj5/8p0Nf/J4mE/z0xJP9LPS//SDko - /0E4Kf8mW1n/JW5v/yVhX/8qOjT/LyUb/zMnGv82KBf/LyMS/zYqG//czMP/soJ3/10oH/8nEAzpAAAA - RgAAAABlnM0EU5XM7ZDH7/9sv/b+HKP6/heg+v81n+b+Njs4/ks2E/+ZhYD+zL3S/8i20P6PgXz+YU0d - /n3Edf+u6rD+kOOS/o7fjv+B1H/+fMd1/mKvU/9ZeTH+Y0sh/m9UJ/9kTSX+gI9z/l1yYf9SVT3+VUcz - /lxLN/9SRDP+XU08/z41Lv4zLSj+MSsn/zQuJ/46MSf+RTUl/0Y2I/5ENST+LSYc/y8mHP7cy8j+sYB3 - /10pH/4oEAzpAAAARgAAAAAAAAAArKm16lyk3P+SzPP+TLP4/hii+/8Xn/j+R5nQ/i4vK/9dUUb+uq+1 - /7Wns/5+bl/+YEwr/l9aMP9caTP+YGIy/mRaL/9mVi7+bFgy/nhfNv9xWTD+ZE4r/mROK/9nUCv+oYNe - /oBrVP9aSTb+T0U5/lJHPf9aTkH+Z1lG/2VZSv5dUUT+S0M8/0hAOv5IQTr+TEI4/1dINf5XRzP+PzYq - /zQpHv7cy8f+sH91/18qIP4nEAzpAAAARgAAAAAAAAAAyq2o6n+gw/+Fvun/icn0/zar+P8Yofv/GJ73 - /06Yyv80Nzf/SkI4/2FYTf9jWU3/Y1lM/2VZS/9mWkn/a1tE/29dQP9uXUL/bF1I/3RlT/9uYk7/Y1lN - /2VaTv9oXU7/l4Nu/4d6bf9kWUz/XFVM/1JMRf9VTkj/XldQ/2BZUf9nXFH/bGFS/21hUv9hWlH/YlhP - /2lcS/9rXEj/Ukc5/zsuH//czMj/s4N6/14pH/8nEAzpAAAARgAAAAAAAAAAzK2o6s62sv9dj7/+msvu - /oLH9f8wqfj+GKH6/hif9/9KoNv+QlBZ/0VAOv5lXlb+cGpj/nJrZf9wa2X+cWtk/nNtY/95b2H+fHBd - /nlvY/95cGL+eG9j/nhvY/98cmP+m4pz/qOTgf9tY1n+UVdZ/i9cfv9LSUX+bmlj/3BqZf54b2X+hXZh - /52MdP53bmb+dW5m/3pwZv5+cWD+YlhO/z8xIv7g0c7+sYF4/18rIf4nEAzpAAAARgAAAAAAAAAAza+p - 6ta7tv+XcW7+Q3yv/qHP8P+Cx/X+NKr4/hih+v8Xn/j+N6Xv/1R9mf5AREX+V1RP/nJuav98eXb+gX56 - /oB9ev+AfXr+gH57/oOAfP+Ggn3+i4N6/pKHc/+bim3+lYRp/oJ+d/9Qe5n+XKje/jiY3v9NU1f+g355 - /4aBff6HgXz+i4R7/5SJe/6MhHv+h4J8/4eCff6LhX7+cWtl/zwxJ/7f0Mz+s4N6/1woHv4oEAzpAAAA - RgAAAAAAAAAAzrCr6ta8t/+aaF7/Riwp/0aFtP+iz/D/i8r0/0Ww9/8Zofr/F6H6/xuf9v9FpOT/VH6c - /0pVXf9QUFD/ZWNg/3Vzb/9/e3j/hIB8/4WAev+BfHP/d3Fp/2dmY/9WbHj/Onyo/yCR4P8YmvH/H5/0 - /2O58v9PY3L/j4yK/5uYlf+dmZX/npqV/6Cblf+jnZf/oJuW/6CcmP+fm5f/g356/z80K//g0c3/tIZ9 - /10oHv8nEAzpAAAARgAAAAAAAAAAz7Gs6ta8t/+baF7+RCAU/mpkVf9kncn+lsfr/pvQ9P9lvPb+KKb4 - /xih+v4XoPr+F572/jGl8/9DnNr+SYm2/k58nP9QdpL+TnWQ/kt4mP9Afqn+NYjD/ieW4v8YmfD+F5v0 - /hef+P8Yovv+GKH6/hua8P9JcY/+nJmX/7Wyr/60sq7+tbGu/7Wxrv61sq/+t7Ow/7i0sf64tbH+mJOP - /0o+Mv7h09D+tIZ9/14pIP4nEAzpAAAARgAAAAAAAAAA0bWv6tnBvf+dbGP+RB8T/m9kUP/MyMD+hq/P - /niz4f+q1fP+isr1/1a29/4opvn+GKH6/hih+/8XoPr+F5/4/hed9v8XnPX+Fpz0/hec9f8Xnfb+F573 - /hig+f8Yofv+GKL8/h+l/P8hpPr+F531/hWS6f81d6j+paSj/8nHxv7JyMb+ysjG/8vJx/7Mycf+zcrH - /87LyP7Oy8j+pqOf/0o/NP7h08/+tYd+/14pH/4oEAzpAAAARgAAAAAAAAAA0rex6tnBvP+camH/Qx4T - /21iTf/Y0sf/5uLa/8LS3P9rqdr/jMDo/6nV9P+LyvX/ab72/0Ow+P8qp/n/HaP6/xii+/8Yovv/GKL8 - /xii/P8Zovz/HaT7/yio+/86rvr/Ubb5/2G69v9LrvH/GZHm/xKE2f9Rlsz/0dHR/9zc2//d3Nv/3dzb - /97d3P/e3dz/397c/+De3f/f3dv/paCb/05AL//i08//tIV8/10pIP8nEAzpAAAARgAAAAAAAAAA07iz - 6tvEwP+hcmj+QR0T/l1ROv/Nw7D+7eni/vHu6f/u7er+rszj/2mo2/5+uOT+otDx/p7R9P+Ny/T+fsX1 - /nDA9v9nvff+Y7z3/mW89/9qvvf+b7/2/nG/9P9uu/L+ZLTt/kuk5f8vkdv+U5/a/q7N5v/n6er+7Ovq - /+zr6v7s6+r+7Ovq/+zr6v7s7Ov+7ezr/+vq6f7a2NX+e3Jo/1A6IP7Zw77+rHlw/10pH/4nEAzpAAAA - RgAAAAAAAAAA1by36t3Hw/+8lY3+Rx4W/jIhEP9cU0L+g31x/oyHfv+NiH/+jId+/4mGf/5qe4X+QHKZ - /kuMv/9lp9r+ebfm/oS/6v+Iwu3+iMPt/oC/7P9vten+X6vk/kmd3f85jMv+NXms/k10kP97goP+j4qA - /pmTi/+WkYv+i4aB/4qGgf6IhYL+h4WD/4eFg/6HhYL+iIWD/4WCgP5ybWf+RTgm/2VENP63i4P+mltP - /14qIP4nEAzoAAAARQAAAAAAAAAA3cjE6eHOyv/WvLf/kWFY/0QbFP86GRH/PB4U/z0fFf8+HxX/PR4V - /zwfFv87HhX/Oh0U/zsgGv89Kir/OzhF/zdFXv80TW3/NU9w/zNPcP81SWb/OT5Q/z0xNf8+JB7/PB8V - /zsdE/86HBP/ORwT/zsdFf9AIxv/Oh4W/zYbE/82GhP/NRoT/zQaFP80GRT/MxkT/zMZE/80GBD/Rx4U - /307Lv+fZFn/kEw//1soHv8qEQ3kAQAANAAAAAAAAAAA7uTiz+vg3f/cxsH+1724/rmRif+cbGP+lWNZ - /pZlW/+UYVf+k2BW/5NfVf6TYFb+kV1T/pFcUv+PWlD+kFtR/o1YTv+NWE3+i1ZL/otVSv+KVEn+iFJH - /ohRRv+HT0X+hU1D/oVOQv+DS0D+gko+/oJKP/+BRzz+fkQ5/31DOP5+Qzj+fEI3/3k/NP55PjL+dzww - /3Y7L/52Oi7+gUA0/5NRRP6UUkX+i0c6/0keFv4pEQyzCwQDEAAAAAAAAAAA8+3sVfLq6Pzt4uD+49LO - /tzGwv/aw77+28XA/trCvf/Xvrn+1ru2/9W6tf7StrH+0rWv/tCzrf/Or6n+zKym/s2tp//KqKL+yKag - /seknv/Fopv+wp2W/sGbk/+/mJD+vpeP/ruRif+6kIf+uIyE/reKgf+0hn3+soN6/7B/df6ufXP+q3hu - /6l0af6ncWf+omle/6NqYP6fZFj+nmJW/5tdUP6PTD/+Zy4j/1AkHOwaCwg1GAkHAQAAAAAAAAAAAAAA - APXv7lnx6efa49LP+tzHwvrbxcH628S/+tjAvPrawr762cG9+te+ufrVvLf61bu2+tS6tPrUubT60rax - +tG0rvrPsKv6zrCq+s2vqfrMraf6za2o+sqpo/rJqKL6x6We+siln/rEoJn6xKCZ+sOel/rBnJT6v5iQ - +sCakvq9lIz6u5KJ+rqQiPq5job6uIyD+raIf/q0hn36s4R7+rB/dvqjcmj3jmBXwkspIzM2GhUBAAAA - AP4f/8H//wAA+AAAAAAHAADgAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAIAAAAAAAAAAwAAAAAAAAADAAAAAAAAAAMAAAAAAAAAAwAAA - AAAAAADAAAAAAAAAAMAAAAAAAAAAwAAAAAAAAADAAAAAAAAAAMAAAAAAAAAAwAAAAAAAAADAAAAAAAAA - AMAAAAAAAAAAwAAAAAAAAADgAAAAAAEAACgAAAAgAAAAQAAAAAEAIAAAAAAAgBAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwICGAHAgIfAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAACkeFD4bEwyJAQEATwMCAQ0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAwEACQAAADUCAABEKw4Org0EBIkAAABLAAAARgAAAEQAAABEAAAA - RAAAAEQAAABEAAAARwAAAF4DAgFRZ1A6vqaBYf+KZ031AQAAYAEFCVICCA6CAAAAZQAAAEsAAABEAAAA - RAAAAEQAAABEAAAAPAAAABAAAAAACwMDIAkDAw4hDgqgLBIN8CcQDPRTNy75Ty0v+y4WFfceDAn1KhEN - 9C4TDvQuEw70LhMO9C0SDfQ2JCH1ZWVl/EdFRPmgf2L9u5p5/4JiTP4mEAv1JT9f+DOEzv4mc6r8IhMV - 9i0SDfQiDgr0JA8L9CkRDPQhDgrpBgIBmQAAABQxDw+pLxUQkUsfF/9sNiv/a05I/7WOmP+ghp7/pJ+z - /4BbYP94T0j/pXBm/6ZxZv+kbmT/pG5j/4NsZ/+bm5v/hH14/8uliP/TsJH/dV9S/1RGQ/89bZ7/TpXh - /z6Jx/91RDz/h01B/4tmR/90Ujz/WC0g/2EoHf8qEQ30AQAAVUEWFmdbODLxfWph/1g+Pv92YG7/lKKu - /6iYtP+cg5v/oW2H/3FbUf+aiXz/oY+A/7Ofif+6pIv/mZaV/8HBwf+kkIX/1qeY/9Gjkf9+dXD/hYWG - /1Gg4P9msvr/RX6o/2FZWP9xW0//sJBw/6uLa/+YfG//gUAz/0UcFP4IAwJ0MBYXQqmLlv+ec33/kKu7 - /044Nv97pcH/vK3N/76xzP+qlKT/gV10/4pfd/9yYWP/MhwO/zwrDv+2trb/z8/P/5qFff/Ou7r/vJCK - /6urq/+EnKz/bND2/3PQ+/9Re5P/i4uL/5J+bv/PrYv/wJt8/1tTTf9dQDr/PxkT/wkDAnVlREqooo+t - /7iowP+yz/P/akJU/2gzRf+kqpX/zMjC/8Cr0f+9pND/s5fL/6t6n/+eipL/WUc6/8HBwf/Ly8v/alQt - /450Qv+inpr/zs7O/4CosP+d0tX/dNrn/4iWnv+ysrL/q4l1/9eulv+riHP/fn5+/4SDg/80FhH/CQQD - dYRgbr+reqT/wanQ/7Kxnv98bnL/fkZt/25+gf9ri6f/V4Ws/0+EsP9Pg6//Unii/15wkP9QVmL/c3Ny - /4uAbf+PZh3/i2gp/729vf/Pz8//XVRG/2FYT/9mcnL/y8zM/7i2tf++kor/0J2W/5yAdv+tra3/g3x6 - /0IbFP8JAwJ1VjA3QaBvivbEpMX/q6eQ/2aWq/8oiNL/HJzy/xee9v8YoPn/F6D6/xeg+f8XoPn/F5/4 - /x+h9v85pu7/SI66/1hqbP82Lhz/gX9+/5GQjv80Kx3/LB8N/4iHhf/Q0ND/mZiX/2RgWf+Oioj/uKyq - /8vLy/94Y1//SB0V/wkDAnUrERI/mHJ49sK72P87jtP/Fpny/xih+v8epfz/NKz6/0my+P9XtvX/X7j1 - /1239f9StPb/Qa/3/yim+f8Yofr/HqL4/1aq4/8OHir/AwMD/wkHBv8RDQn/Xlxc/7+/v/9gXlz/GRML - /zw4Nf/Ozs7/zc3N/3FQSf9LHhb/CQQCdWlERLvVy+H/N5HZ/xec9P8ao/z/M6z7/06w8/9Np+f/UpXF - /019o/9Hdpj/VoGf/3iju/97tNz/kMjv/4DF9P85qfX/G5vy/ytLX/8jGQv/IBgN/yUbDv8rIA//KR8Q - /zElEf8xJRP/TUY7/8/Pz/+1tLT/kWVc/0wfF/8JBAN1nX+C+WWZy/8WmPD/GaP8/ymn+f8omur/TIWl - /5B+VP+Xby7/kWkp/5xzLv+kfDn/pHk3/6N+Qv+If1//hJui/3Ot2P8ikOD/LWOG/4lmLf+SbDP/lG41 - /4pnM/+JaTv/f18u/2lKFv9hSBj/T0Ag/2lVQP+qenH/Sx4W/wkEAnWNhpL2GY7i/xig+v8Yofr/GZXq - /26Gkv+4lGz/yaNz/8unev/NqX3/zqt+/82thf/PrIH/xKBu/8umdP+2lGn/noZj/3GMmv9MfaD/wJxv - /5ecev9ikoD/bJKC/6WFWf+6mln/0bVW/+rLYv/pymL/y7Nd/4RpTf9EHBT/CQQCdTNhjsMYmO//GaP8 - /xWb8/9Ohab/qIlg/6OCWv+yj1X/hoJE/3iGQv90l1D/ZphI/2ORSf9xbD//jIle/yO+wf88z9T/i3pM - /6uCQv+0jFD/ap58/yjc4/8L5e3/bYlp/9i5Tf/szF//6tJ9/+rXlP/u1Hn/6Mlg/1E8I/8JBAN1JYTN - zimk9f8Yovv/F5Dj/4p+a//KuM3/0cLT/3x/NP9D3Un/Q+9L/2DuZv+A7YT/Xu1k/1HmVv9ZgU3/NNzj - /wHi6/9wbT7/jmgo/2VVJP+DYyX/etnW/xrp8P86taL/28Nn/8iqRf+LaCL/a04Y/8Ozev/wz1//oIg+ - /wgDAnUhjt7pNqv4/xih+/8edrP/qJBz/97Q4//fy+f/nJBk/2/kcv9D8Er/c7FO/6enXv+w2Zj/Vu9c - /1C8TP9d1dX/BuLr/3aLbP96qor/KNjf/3WEcf+FuKL/U+vx/xPX2//CtHP/sJJI/6t8O/+BYSP/zK5K - /+/MWv+rkT3/CAMCdSmR3/E+rvn/GKH6/x5klP9/ZTf/0sPH/+DN6P9yXED/c8ls/0btTf9Lcy3/Vj8X - /1KAMf9W7Vz/O7M7/0ukoP8e4+r/LW9g/zh7Z/8X3+f/Jra4/0NQRf9o5+z/AuTt/0BcTP96Z0D/sZVC - /+bFVv/sy1z/38BX/2xMI/8JBAN1NZfg6key+P8Yofv/HGWZ/1FEMP+fkpL/4tHp/3Fmbv9RkFD/We5f - /0XQTP82bzj/Nrc9/0LtSv8dZyL/F1lc/z7k6/8QiIz/KoGB/x/g6P8D4uv/J19f/1LAw/8X6fH/FXV3 - /4NyMf/px1T/7s9m/9fBef+9lXX/TSEZ/wkEA3VAm+PMWLf2/xii+/8febj/VEUr/3toU//j1en/opOi - /0FgJv907Hj/TvFV/3/ug/9g7Wb/P95H/yImGf8oODL/T9/l/xHGy/8toJ3/G+Ts/yTm7v8K09r/Hamt - /xnu9/8PqKz/p5ZQ/+nIV/+SgDr/jH10/7ychf96ZT3/CAUDgjyY4pZvvfP/HqX8/yCX5/9COyz/VkIg - /9fK2P/OvNT/ST8Y/3jfev9B6Uj/SF0m/5m8hf9z7nj/Ub1W/zEvGv9avrz/Debv/wjf5v8E5/D/XsK+ - /3nr7/8N5+//Ae/4/wrR2P95cET/5s97/8WrTf+OfUj/2LtX/+PCUv9rYTC3QZzlSWy16/85rfr/F573 - /ztZaP9QORD/qZqT/9TF2f9pV0f/baxe/1HrWP9Ckz3/Oi8Q/3DLa/9F70z/RYw1/0yCbf9d6u//Auv0 - /wDg6f9keF3/hqWT/6nt8P9V6/H/Bdbe/zQxIv+qnXD/5tWU/+fRgv/lznv/x69Z/zszFIVPo+gGVaTi - 3mi99v8Yovv/MJDQ/z4vEv9eQhP/e2tb/2RXR/9KZSb/f+mD/0bpTf9L2FD/Vuhb/1bmXP9Fly//WlAs - /4TY2P9q4uj/F62u/0E0Jf9KOyr/P11W/1GXmP8ffn//Lygf/zkqGP9IOhr/h3hX/8Shgv9RJhr/CQQD - dQAAAABrm8ifhcLu/zuu+f8YoPj/Pm6L/08+If/FuMn/xbXL/19NJf9+sW3/hMF4/36zbP92pF//ZIpB - /2NTJf9pUCb/fXZU/19kUP9TSDT/V0g3/11OPP9HPjT/OTIt/zkyK/9DNyr/Szso/zswIf9oXFT/wJqS - /08iGv8KBAN1AAAAAL6qq5xyptP/h8j0/yWl+v8gofb/QGV8/1ZNRv9zaF//YlVE/2RWQv9nVz//a1k6 - /2xbQP94ZUj/ZlhD/2VYRP+Kdl3/emxc/1xSR/9SS0T/X1ZN/2NaUP9kWU7/YVdM/1xTSv9mV0X/U0g6 - /21fVf/DnZb/TyIa/wkEAnUAAAAAzK6onLytsf9wpND/fcX1/yKk+f8govf/Rn2i/0lIRf9pZF3/dW9p - /3Rvav91cGj/e3Jl/3tzaf99dGn/gndm/5aGb/+OgXL/TmVz/y5bfP9sZmH/d3Fr/4N4aP+Qg3H/eXJs - /351a/9uZVr/cmVa/8Odlv9PIhr/CgQDdQAAAADOsKucz7Gs/1A6P/91q9T/hMf1/yyo+P8YoPn/OZzf - /0xwif9WWl3/bGpn/316d/+EgX3/hYF8/4B6c/91c2z/W3qJ/zKKx/87qfP/VprK/3x5dv+Wko//mJSP - /56Xj/+alZD/mpWR/4eCfv9yZl7/xKCZ/04iGf8KBAN1AAAAANCzrZzSta//VCYa/3Z7df9+s9z/mM7z - /1C09/8dovr/F5/5/yyj8v83k9H/PIW3/zyBsP84hLj/LY3P/x+Z7P8Xnfb/GKH6/xih+v8hlOP/hIWF - /7q3tf+6t7T/u7i1/725tv++urf/p6Of/3puZf/FoZr/TyIa/wkEA3UAAAAA0raxnNK2sP9TJhr/jYNx - /9vb1v+Tvdz/i8Hp/4/M9f9Vtvf/MKr5/x2j+v8Yofv/GKH6/xih+/8ao/v/Jaf7/zqu+v9Ns/f/Iprt - /xWH2v+qtb7/19fW/9jX1v/Z2Nf/29nX/9za2P+3tLD/fW9k/8Whmv9PIhr/CgQDdQAAAADUubSc1765 - /1YpH/9sX0n/0szC/9/c1v/AzNP/ga3P/3q04f+Qx+//kMz0/33E9f9xwPX/cL/1/3O/9P9vu/D/VKnn - /0ea1/9qo8z/ws/Y/9vZ1//a2df/2tnY/9rZ2P/a2dj/1tTT/4iAdv99ZFL/toqB/08iGv8JBAN1AAAA - ANvGwZzdx8P/lWtj/zobEf9CKyH/SDIo/0gyKP9HMij/RDIt/zU7S/88U3D/SWqN/1B0mf9IcJb/PmCD - /zNIYv89Oj//RzMp/0cyJ/9MNy7/STQs/0MuKP9CLij/QS4p/0AtKf8+Kyb/PSEX/4ZMQP+ZWU3/TiIa - /wsEA2oAAAAA7uTieerd2//aw77/vZiQ/6yDe/+rgHj/qHx0/6d6cf+meXD/o3Vs/6Jzaf+gcWj/n29m - /5xsYv+bamH/mWZc/5dkWv+VYVb/k15U/5FcUf+OV0z/jFVK/4tSR/+HTkP/hUo//4NHO/+HSDz/lVNG - /4hFOP9EHBXwDgUEJAAAAAD07ewI8+3sp+nb2PjeycX83MbC/NvEwPzZwb382MC7/NW7tvzVurX807ex - /NG0rvzNr6j8za6o/MuqpPzIpqD8x6Sd/MWhmvzBnJT8wJqS/L2Vjfy7kor8uI2E/LWHfvyzhHv8sH92 - /K58c/yncmj8hlNJ4UQjHUsAAAAA+f+H/8AAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAACAAAAAgAAA - AIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAAEoAAAAEAAAACAAAAABACAAAAAAAEAEAAAAAAAAAAAA - AAAAAAAAAAAAGxsbYyoqKsgrKyvKKysryisrK8orKyvKKioqyioqKsoqKirKKioqyikpKcopKSnKKCgo - yigoKMogICDCAwMDQISEhPajnpX/sqmY/6+nl/+tpJX/qqKT/6qhkv+poJD/p56O/6Kai/+dloj/mpOF - /5iQgv+hmYr/kpKR/x4eHrGTk5P9d10v/35YEv9nTx3/U084/1BOOf9VRiT/X0IP/3FOEP92UhD/eVQR - /31XEf9+VxL/aEoU/6KZiv8lJSW4l5eX/XBpVf9ZlbL/ULL0/2C7+P9mvvf/Ybv3/1ao3v9fg4//SjkY - /zYnDv8sIA7/KR8Q/x0XDv+GhYL/JSUluJeeo/1Fndn/Vrj5/2ievf9RZ3L/cXdv/5uej/+Xsrv/bLjs - /x80Qv8ZEwv/HxcM/yIaD/8SDgr/hYSD/yYmJrh0pcn9TLT5/26ctP+gfUf/knhA/5GFSf+QfUT/goVY - /2qKdv+ShGf/XJV+/0iId/+4nEP/4MZq/8KtYf8nJiG4ZK3g/Uqv8v+nlHX/q6ug/0zkUf9nylD/X+Ne - /023jf8xsaT/e5l1/3eZe/8b1tn/wKlR/4VmLv/avWD/XVInuG+15v1KpuP/o39G/728uv9ZzFX/dqRS - /2LRU/9Yp17/LcHA/0W7r/8/qqL/K9zh/4eUav/VtU//2sJt/zQxJbiHut/9T7Lz/zMqHP+joZ7/Y6hk - /1DPVf9d3WH/IEMk/yrN1P8VzdP/Mtng/xHY3/9CmYT/0rdY/6+jfP9zZzbPnrvR/Wm/+P9AXGX/c2JH - /3aGYf9L1E//SaZE/0HCQf9UnZH/G93j/1FcRv9QtrP/JnRw/39ySv/KuXv/XlYzv7S5vP2Bttv/Uqvm - /05OQv+Ge2b/Ynk5/2p7O/9jXib/cFw6/05HMP9SQS7/LSMa/zMnHP8yJRb/npuY/ycnJ7i7u7v9W2Nl - /4vE6v9Vrej/Tmdx/1ZJMf9nVTn/X1A5/21mV/9Kc4z/UWd0/2BWSf9aUEb/Vkk5/5+cmf8nJye4v7+/ - /XFnVv+dn5n/mMLg/3bE9/9Ys+//TJ/W/0yj3f9UtfX/XLn2/1aJrf+WkIj/lo+J/4R+eP+in5v/Jycn - uMLCwv16c2b/29TJ/9fTyv+9ztn/sNDn/5/L6/+YyOr/ncfl/7DK3v/Lzc7/0M7N/9LQzf+2sq7/pqKe - /ycnJ7jS0tL9XFdP/4eDfP+JhYD/hYOA/4WDgP+Fg3//hoR//4iFf/+KhoH/iYaD/4SCgP+DgYD/aGNd - /5eVkv8nJye07+/vstTU1P3Gxsb9w8PD/b+/v/27u7v9uLi4/bS0tP2wsLD9q6ur/aenp/2ioqL9nZ2d - /Zqamv2Li4v0KSkpTgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAA= - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 497, 2 + + + 625, 2 + + + 1240, 2 + + + 87, 2 + + + 176, 2 + + + 266, 2 + + + 400, 47 + + + 737, 2 + + + 839, 2 + + + + + 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 + Rf0PWT8lOy+O4O4AAAAASUVORK5CYII= + + + + 1022, 2 + + + 931, 2 + + + 1022, 2 + + + 931, 2 + + + 1120, 2 + + + 497, 47 + + + 1240, 2 + + + 65 + + + + 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 + AgYBAQMiCgo4NxISyQ4EBFkCAAAMAAAABAAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAA + AwAAAAMAAAAEAAAABQMCAQMbFA4IdVc6xIdkRvVfQi3fKR0UtAEAADcDAwMEAAECBwAAABMAAAEMAAAA + BQAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAYCAQUAAAArAAAAWAAAAGMAAABlOBIT1BUGBrkBAAB3AAAAagAAAGYAAABkAAAAYwAAAGMAAABjAAAA + YwAAAGMAAABjAAAAYwAAAGQAAAB4AAAAigAAAHkHBgR8nXla9qOCY/+igmT+lm5V+gEAAIMAAABjAwkQ + fwURH7UAAQGkAAAAiwAAAHEAAABkAAAAYwAAAGMAAABjAAAAYwAAAGMAAABiAAAAUwAAACIAAAADAAAA + AAkCAg4HAgILDQUEBg0FBFcjDgrPIw4K7SENCu4cCwjvVTAp+TsXGPsaCQj1GAkH8xkKCPAeDAnvIg4K + 7iMOCu4jDgruIw4K7iIOCu4iDgruIg4K7iIOCu9QTk34T09P+jAtLPc0JRz3t5R0/reXdf+xknL/clE9 + /B8NCfAiDgruG0x99zCE0P8ne739F1+M+hYPEvQiDgrvIw4K7h8NCe4eDQnuIQ4K7iIOCu4hDgrtFQkG + 2AIAAJkAAAA2AAAAAiAJCXILAwNAGAsISEIbFPJGHRX+XSog/lEiGv9PLSX+uaWY/pR6i/+YdH3+gmBj + /0MiIf46GRT+Wykf/mMrIf9kLSP+ZCsh/mQtIv9jLCH+Yish/lYrI/+CgYH+hoaG/oeHh/+Hblz+y6uL + /suqiP/EooP+SzAk/jIUD/8+GRP+NHSv/0GK1P49hc7+O5DO/z8iI/5aJRv+WSQa/0ssHf4wGxP+LRMO + /zwYEv5LHxb+OBcR/yANCu4CAACPAAAAGEQWFsYVBgZ+SyIbzU0fF/9UJyD+cj0y/mY4Mv+dpq3+rXGL + /pt2i/+hjqf+mrDL/7mYpf5PLSv+lnFr/raLgv+3jIP+tomB/raIgP+0hn3+s4V8/n5kX/+jo6P+oKCg + /pKSkv+ce2P+17GW/taxk//Al33+YFtX/mhlZP8/QEb+Rpbe/1Sb5/5PluH+OYK2/3ZMRf6XYFX+jVlO + /6B4Vf6jfFr+kWpO/2E9LP5lKR7+aywf/zcWEf4TCAbMAAAAOkAVFUw/FxbZPhsY+V04LP9TPjf/RyQg + /2lHQ/+astb/h3OC/5iOof+Jdob/mnKK/6FliP98Wl3/pJaR/8e5s//HubP/0MG6/9rJwv/gz8f/3s3E + /4SAf//AwMD/u7u7/52al/+8j3n/2KqY/9isl/+kfmr/d3d2/4aGhv9PdZP/ZK3w/2Wu+f9lqvH/LmiL + /01EQv9qWlf/f2RX/62LbP+piGf/pIVm/5FwXf+LWE7/djAj/00fF/8jDwrnAAAARToaGgNbMTG8wKad + /smiov+SrLv+fVt1/kMiG/+Lr7T+o8nq/s647P/Swuf+o5W1/5Jlg/5vT03+OR4O/j0fD/86Hg7+OCIM + /kQuDP9TOw/+VDwQ/ouJh//Ozs7+y8vL/qeUjP/Hlo/+15+X/tekmv+QcWb+oKCg/qOjo/9Gg7D+csf5 + /27C/v5iufP+RGB0/4CAgP53dnX+eV5J/8Cigv69nXv+uZd5/3xnWf61o5/+eTgr/1MhGP4mEAvpAAAA + RikUFR1ySE3emoeZ/qBvfP+Hh4r+kcPJ/ks3Ov9XSlP+fazH/rek1/+wsJv+yLjd/6ybpv6zlbf+rois + /rOJtP+wj6H+i36C/jkdFv8zIAj+QDAU/rOzs//Q0ND+0NDQ/o+Ce/+wqaL+ycXF/sKbmv+gjYj+v7+/ + /q2vsP9KpdD+c9/+/3HY/v5Rsd7+a3B1/5CQkP6FhYX+nn5k/9Swj/7QrYz+upJ1/0dBO/5UTk3+Qyci + /0AaE/4mEAzpAAAARjQXGG+klKz/q4il/6CRov/i2vH/jc3y/1U6Qv+GRmr/UCcp/56mpv/Lzqn/wLy+ + /8Oy1f/Eptr/xKjd/8Ck4P+1hbn/uIGe/7Snr/9IKB3/XlFB/8jIyP/R0dH/z8/P/2JXQ/9+YCn/nIpl + /4V9dv/Jycj/zs7O/5qstP9szdn/etnh/3Tp9v9Mpb7/nJyc/6+vr/+PjIj/v5V7/9evlv/XsZX/nHlk + /3BwcP+IiIj/gYGB/zIXEv8mEAzpAAAARlo4O66st9L+pneY/rykyv/PveP+ubzq/l1IT/+QUXf+eDpX + /oiKef+1uJj+tq23/56PpP6TiJr+iHyS/oFxi/99bIv+eVl6/oVpff+CcXX+UkI9/q6trP/FxcX+vLy8 + /m1UJf+PYhT+d1UX/qysq//Q0ND+0NDQ/omJhf+If2j+6ODf/5iytP5yrLv+wsLC/8XFxf6Zhnv+z5+R + /9inmP7VqZj+hGlb/5OTk/6VlZX+e3h4/0AaE/4mEAzpAAAARm1FSoyyeaH/rG+b/8y13f+hmob/s7eN + /5egm/9zRFv/cUFl/11sfP9dhJv/TYSw/0WLv/9Ckcv/Q5bS/0WY0v9IlM3/T4y//1OAq/9ggp//TVVn + /0BCRP9rZVr/cl49/5FnHf+ichz/h2w8/7m5uf/Gxsb/0dHR/2BcV/8lGwz/LCUd/zQvJ/+8vb3/z8/P + /87Ozv+mg3v/u5ya/8aXk//RmZH/hndx/7W1tf+zs7P/al1a/00gF/8mEAvpAAAARl83QCCMXW3qsnOj + /r2Yv/++rrv+rbSA/pmij/9Ogqz+K4fP/iGa7f8XmvH+F5z1/xee9/4Xn/j+F5/4/heg+P8Xn/j+F5/4 + /hee9/8XnfX+KKL0/kas8f9Unc3+YH+N/k9OQP9EMhH+RjQW/pORjv/m5ub+srGx/jo2MP8aFA3+HhcP + /1VUUv7Ozs7+0dHR/8jIyP47NjP+qayr/83R0f6kgnz+tLGv/8rKyv7AwMD+Wz45/1MiGP4mEAvpAAAA + RkEiJgIrDQ14kWxv/NzG2/+/qcL+comp/iOK1f8Wlu7+F531/hig+v8Yovz+GKP8/xmi/P4co/v+IKT6 + /iKl+v8hpPn+HqP5/hqi+v8Yofr+F6H7/heh+v8Xn/n+G5/2/kOs8/9mncT+JkZd/gsOD/8pKCj+Dw0K + /h8WCf8xIgz+OikP/4qHg/7CwsL+wcHB/7a2tf4zKBb+MiYW/y8nH/59fHv+0NDQ/9DQ0P6trKz+ZDsz + /1YjGf4mEAvpAAAARiANDRtbLS3ZzK68/s2+2f9djMP+F5Dl/hab8/8Yofr+GKP9/hyk/P8vqvv+SLL5 + /1259/5qvPX+cr/0/njB8/96wvP+d8Hz/nG/9P9ku/X+ULT2/jeq9/8go/j+F6H6/heh+v8doPf+Z7ry + /hk6U/8DAwP+BAMD/gUFBP8JBwb+BgUG/xIREP66urr+urq6/21tbf4NCgr+CggI/xEQEP6xsbH+0dHR + /9HR0f6PjY3+fEpA/1gkGv4nEAzpAAAARjEVFYDDnKL/287k/2KUzP8Vkef/F5z1/xii/P8bpP3/MKv7 + /1C1+P9ctfP/XrLt/12t6P9ZpuD/VZ/W/1Wb0P9andH/ZabY/3m24/+Mw+v/nc7x/5nP8/+Ex/T/Yrr1 + /y6m9v8Xnvf/IJ3x/zdjg/8OCgb/FxEL/xkTDP8XEQv/GBMO/xcTDv8dFxD/GxYP/yMbD/8nHhH/JB0S + /y4rJ/+vr6//ycnJ/8TExP+KgYD/kltQ/1gkGv8nEAzpAAAARnlpbdvRrbP+kbHZ/hWO5P8Wm/T+GKL8 + /h2l/f80rPr+Qqz0/jOe6f8wjtL+SHuT/1djVv5bSjL+UD4f/lJAHf9ZRB3+ZU8k/n9qOP9ra1H+Yn2C + /mKSr/97tN7+oM7w/ozI8v89pu/+FZPr/iZxpf9IMg7+WT8U/k03Ff9FMhL+VjsS/1I5EP5NNRL+RTET + /044Ev5RORP+VjwW/1c/GP5pWDv+ta+m/392af61nZj+n2Va/1klG/4mEAzpAAAARpWChv2rhY/+JIrY + /haY8P8Yofr+G6T9/iin+f8rofH+GY3h/kt/nv+dglL+r4dH/6p/Pv6pfjn+oHYy/qyAPP+ofzr+u5RX + /rWLS/+ugkL+solK/q2ERf+cg1X+e46Q/mWbwv9OoN7+FIbb/hx5vf9rVC7+n3g7/qZ7Pf+uhEn+rYNF + /6R7Pv6shVL+poFL/5l3Qv6CXib+aEsV/2BJGP5PPRP+QDIQ/0UzFP6zmZL+n2dc/1gkGv4mEAzpAAAA + RpqDhftki7f/FJDn/xee9/8Yo/3/GaL6/xub8v8ajd//Z3eC/6OAW//Fn2z/x6Bu/8KbZv/KpXn/xKBx + /8qnd//Ipnf/zq2F/9Wzi//RrYL/wJpm/8qibv/Mp3j/wpxq/72ccP+RlpH/P4a8/xV0wf+QfWH/yqZ9 + /7+dcf+KfFz/dnFU/2xyWf+AbUr/v5dl/7qXZv+slVH/z7Zb/+fLaP/rzWj/5spo/8awXv+Th2T/bEU5 + /1QiGf8nEAzpAAAARnJhaNIhjNv+Fpfv/hii+/8Xovz+FZ31/hWQ5v93k6L+xKBx/seea//MoWz+v5VW + /8efaf7DnWj+vplo/sGfdv+tjWL+podd/pt9UP+piFz+vppp/sypef+fm3r+col4/nGJeP9mdV7+uJdq + /pOVif+6mGf+yqV0/oeqi/8Twcf+Gdjg/zLk6/5hoZn+p4li/8WpUP7hwE/+7MpW/+3LWv7ry1/+6spb + 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 + /0AzHv5NfSz+juuS/kHsSP89rDv+RTYO/muCQf+457b+aO1t/kvrUv9QiU/+NScO/kCckv9k6O3+AOjx + /gPr8/8A7vf+AOXu/iyuqv+aysP+ke7y/xzl7f4A7PX+AO/4/wDm7/4fbmz+kIJK/+raof7iwlP+275Y + /6SSS/7Os1X+58VS/+bEUv7bvFD+VE4lmk2k6xQ7ldvufMLy/z+w+v8Yovz/F5z0/ztfdf9OPR//UDcK + /5yLgv/r5O7/0LzX/3doZP9IShT/huGJ/1HqV/9H5k7/M0Mg/z8sDf9UaDD/kvGV/0fxTv9L6FH/RFUj + /0tqR/985On/K+jv/wDt9v8A7PX/AODp/0mLdv+QhWL/i9DM/7709v9g7PH/Gufv/wDe5v8YgoP/Oy8b + /7ite//t4LL/5Mx3/+PGYf/kx2P/5stu/+HJcP+6oUH3KScPXEeg5wE5luCmfr7t/ma99/8ao/v+F5/5 + /jaS0P84MSD+TDQJ/mJLJf+hkIj+kX95/2RSPf5CLwv+Z7Rg/nfqe/9A7Ej+TtRT/kF0N/89ijH+SulQ + /kbuTf885UP+PXsu/kU4G/9awsP+ku7x/j/o7/8T4en+Bc3U/lFPN/9lTjj+XFdA/2Kqqf617fD+oO3w + /xLP1/4XgID+NCYY/0g2Gf6Cc0H+uq56/9DDjP7j1Jj+0rh1/5RxPP43IBHpAAAARgAAAABPouU/WaXf + /IPG9P81rPn/GKL7/x2e9P9DY3X/QCwJ/1w+C/9rUy//kIOD/4yDgP9BMxv/S3Em/6Dro/9R5Vf/SOhO + /0XmS/9P5VX/Z+ls/3Lpdv851j//VXYn/21OH/9Pfmb/kOHl/4Hj5/8p0Nf/J4mE/z0xJP9LPS//SDko + /0E4Kf8mW1n/JW5v/yVhX/8qOjT/LyUb/zMnGv82KBf/LyMS/zYqG//czMP/soJ3/10oH/8nEAzpAAAA + RgAAAABlnM0EU5XM7ZDH7/9sv/b+HKP6/heg+v81n+b+Njs4/ks2E/+ZhYD+zL3S/8i20P6PgXz+YU0d + /n3Edf+u6rD+kOOS/o7fjv+B1H/+fMd1/mKvU/9ZeTH+Y0sh/m9UJ/9kTSX+gI9z/l1yYf9SVT3+VUcz + /lxLN/9SRDP+XU08/z41Lv4zLSj+MSsn/zQuJ/46MSf+RTUl/0Y2I/5ENST+LSYc/y8mHP7cy8j+sYB3 + /10pH/4oEAzpAAAARgAAAAAAAAAArKm16lyk3P+SzPP+TLP4/hii+/8Xn/j+R5nQ/i4vK/9dUUb+uq+1 + /7Wns/5+bl/+YEwr/l9aMP9caTP+YGIy/mRaL/9mVi7+bFgy/nhfNv9xWTD+ZE4r/mROK/9nUCv+oYNe + /oBrVP9aSTb+T0U5/lJHPf9aTkH+Z1lG/2VZSv5dUUT+S0M8/0hAOv5IQTr+TEI4/1dINf5XRzP+PzYq + /zQpHv7cy8f+sH91/18qIP4nEAzpAAAARgAAAAAAAAAAyq2o6n+gw/+Fvun/icn0/zar+P8Yofv/GJ73 + /06Yyv80Nzf/SkI4/2FYTf9jWU3/Y1lM/2VZS/9mWkn/a1tE/29dQP9uXUL/bF1I/3RlT/9uYk7/Y1lN + /2VaTv9oXU7/l4Nu/4d6bf9kWUz/XFVM/1JMRf9VTkj/XldQ/2BZUf9nXFH/bGFS/21hUv9hWlH/YlhP + /2lcS/9rXEj/Ukc5/zsuH//czMj/s4N6/14pH/8nEAzpAAAARgAAAAAAAAAAzK2o6s62sv9dj7/+msvu + /oLH9f8wqfj+GKH6/hif9/9KoNv+QlBZ/0VAOv5lXlb+cGpj/nJrZf9wa2X+cWtk/nNtY/95b2H+fHBd + /nlvY/95cGL+eG9j/nhvY/98cmP+m4pz/qOTgf9tY1n+UVdZ/i9cfv9LSUX+bmlj/3BqZf54b2X+hXZh + /52MdP53bmb+dW5m/3pwZv5+cWD+YlhO/z8xIv7g0c7+sYF4/18rIf4nEAzpAAAARgAAAAAAAAAAza+p + 6ta7tv+XcW7+Q3yv/qHP8P+Cx/X+NKr4/hih+v8Xn/j+N6Xv/1R9mf5AREX+V1RP/nJuav98eXb+gX56 + /oB9ev+AfXr+gH57/oOAfP+Ggn3+i4N6/pKHc/+bim3+lYRp/oJ+d/9Qe5n+XKje/jiY3v9NU1f+g355 + /4aBff6HgXz+i4R7/5SJe/6MhHv+h4J8/4eCff6LhX7+cWtl/zwxJ/7f0Mz+s4N6/1woHv4oEAzpAAAA + RgAAAAAAAAAAzrCr6ta8t/+aaF7/Riwp/0aFtP+iz/D/i8r0/0Ww9/8Zofr/F6H6/xuf9v9FpOT/VH6c + /0pVXf9QUFD/ZWNg/3Vzb/9/e3j/hIB8/4WAev+BfHP/d3Fp/2dmY/9WbHj/Onyo/yCR4P8YmvH/H5/0 + /2O58v9PY3L/j4yK/5uYlf+dmZX/npqV/6Cblf+jnZf/oJuW/6CcmP+fm5f/g356/z80K//g0c3/tIZ9 + /10oHv8nEAzpAAAARgAAAAAAAAAAz7Gs6ta8t/+baF7+RCAU/mpkVf9kncn+lsfr/pvQ9P9lvPb+KKb4 + /xih+v4XoPr+F572/jGl8/9DnNr+SYm2/k58nP9QdpL+TnWQ/kt4mP9Afqn+NYjD/ieW4v8YmfD+F5v0 + /hef+P8Yovv+GKH6/hua8P9JcY/+nJmX/7Wyr/60sq7+tbGu/7Wxrv61sq/+t7Ow/7i0sf64tbH+mJOP + /0o+Mv7h09D+tIZ9/14pIP4nEAzpAAAARgAAAAAAAAAA0bWv6tnBvf+dbGP+RB8T/m9kUP/MyMD+hq/P + /niz4f+q1fP+isr1/1a29/4opvn+GKH6/hih+/8XoPr+F5/4/hed9v8XnPX+Fpz0/hec9f8Xnfb+F573 + /hig+f8Yofv+GKL8/h+l/P8hpPr+F531/hWS6f81d6j+paSj/8nHxv7JyMb+ysjG/8vJx/7Mycf+zcrH + /87LyP7Oy8j+pqOf/0o/NP7h08/+tYd+/14pH/4oEAzpAAAARgAAAAAAAAAA0rex6tnBvP+camH/Qx4T + /21iTf/Y0sf/5uLa/8LS3P9rqdr/jMDo/6nV9P+LyvX/ab72/0Ow+P8qp/n/HaP6/xii+/8Yovv/GKL8 + /xii/P8Zovz/HaT7/yio+/86rvr/Ubb5/2G69v9LrvH/GZHm/xKE2f9Rlsz/0dHR/9zc2//d3Nv/3dzb + /97d3P/e3dz/397c/+De3f/f3dv/paCb/05AL//i08//tIV8/10pIP8nEAzpAAAARgAAAAAAAAAA07iz + 6tvEwP+hcmj+QR0T/l1ROv/Nw7D+7eni/vHu6f/u7er+rszj/2mo2/5+uOT+otDx/p7R9P+Ny/T+fsX1 + /nDA9v9nvff+Y7z3/mW89/9qvvf+b7/2/nG/9P9uu/L+ZLTt/kuk5f8vkdv+U5/a/q7N5v/n6er+7Ovq + /+zr6v7s6+r+7Ovq/+zr6v7s7Ov+7ezr/+vq6f7a2NX+e3Jo/1A6IP7Zw77+rHlw/10pH/4nEAzpAAAA + RgAAAAAAAAAA1by36t3Hw/+8lY3+Rx4W/jIhEP9cU0L+g31x/oyHfv+NiH/+jId+/4mGf/5qe4X+QHKZ + /kuMv/9lp9r+ebfm/oS/6v+Iwu3+iMPt/oC/7P9vten+X6vk/kmd3f85jMv+NXms/k10kP97goP+j4qA + /pmTi/+WkYv+i4aB/4qGgf6IhYL+h4WD/4eFg/6HhYL+iIWD/4WCgP5ybWf+RTgm/2VENP63i4P+mltP + /14qIP4nEAzoAAAARQAAAAAAAAAA3cjE6eHOyv/WvLf/kWFY/0QbFP86GRH/PB4U/z0fFf8+HxX/PR4V + /zwfFv87HhX/Oh0U/zsgGv89Kir/OzhF/zdFXv80TW3/NU9w/zNPcP81SWb/OT5Q/z0xNf8+JB7/PB8V + /zsdE/86HBP/ORwT/zsdFf9AIxv/Oh4W/zYbE/82GhP/NRoT/zQaFP80GRT/MxkT/zMZE/80GBD/Rx4U + /307Lv+fZFn/kEw//1soHv8qEQ3kAQAANAAAAAAAAAAA7uTiz+vg3f/cxsH+1724/rmRif+cbGP+lWNZ + /pZlW/+UYVf+k2BW/5NfVf6TYFb+kV1T/pFcUv+PWlD+kFtR/o1YTv+NWE3+i1ZL/otVSv+KVEn+iFJH + /ohRRv+HT0X+hU1D/oVOQv+DS0D+gko+/oJKP/+BRzz+fkQ5/31DOP5+Qzj+fEI3/3k/NP55PjL+dzww + /3Y7L/52Oi7+gUA0/5NRRP6UUkX+i0c6/0keFv4pEQyzCwQDEAAAAAAAAAAA8+3sVfLq6Pzt4uD+49LO + /tzGwv/aw77+28XA/trCvf/Xvrn+1ru2/9W6tf7StrH+0rWv/tCzrf/Or6n+zKym/s2tp//KqKL+yKag + /seknv/Fopv+wp2W/sGbk/+/mJD+vpeP/ruRif+6kIf+uIyE/reKgf+0hn3+soN6/7B/df6ufXP+q3hu + /6l0af6ncWf+omle/6NqYP6fZFj+nmJW/5tdUP6PTD/+Zy4j/1AkHOwaCwg1GAkHAQAAAAAAAAAAAAAA + APXv7lnx6efa49LP+tzHwvrbxcH628S/+tjAvPrawr762cG9+te+ufrVvLf61bu2+tS6tPrUubT60rax + +tG0rvrPsKv6zrCq+s2vqfrMraf6za2o+sqpo/rJqKL6x6We+siln/rEoJn6xKCZ+sOel/rBnJT6v5iQ + +sCakvq9lIz6u5KJ+rqQiPq5job6uIyD+raIf/q0hn36s4R7+rB/dvqjcmj3jmBXwkspIzM2GhUBAAAA + AP4f/8H//wAA+AAAAAAHAADgAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAIAAAAAAAAAAwAAAAAAAAADAAAAAAAAAAMAAAAAAAAAAwAAA + AAAAAADAAAAAAAAAAMAAAAAAAAAAwAAAAAAAAADAAAAAAAAAAMAAAAAAAAAAwAAAAAAAAADAAAAAAAAA + AMAAAAAAAAAAwAAAAAAAAADgAAAAAAEAACgAAAAgAAAAQAAAAAEAIAAAAAAAgBAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwICGAHAgIfAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAACkeFD4bEwyJAQEATwMCAQ0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAwEACQAAADUCAABEKw4Org0EBIkAAABLAAAARgAAAEQAAABEAAAA + RAAAAEQAAABEAAAARwAAAF4DAgFRZ1A6vqaBYf+KZ031AQAAYAEFCVICCA6CAAAAZQAAAEsAAABEAAAA + RAAAAEQAAABEAAAAPAAAABAAAAAACwMDIAkDAw4hDgqgLBIN8CcQDPRTNy75Ty0v+y4WFfceDAn1KhEN + 9C4TDvQuEw70LhMO9C0SDfQ2JCH1ZWVl/EdFRPmgf2L9u5p5/4JiTP4mEAv1JT9f+DOEzv4mc6r8IhMV + 9i0SDfQiDgr0JA8L9CkRDPQhDgrpBgIBmQAAABQxDw+pLxUQkUsfF/9sNiv/a05I/7WOmP+ghp7/pJ+z + /4BbYP94T0j/pXBm/6ZxZv+kbmT/pG5j/4NsZ/+bm5v/hH14/8uliP/TsJH/dV9S/1RGQ/89bZ7/TpXh + /z6Jx/91RDz/h01B/4tmR/90Ujz/WC0g/2EoHf8qEQ30AQAAVUEWFmdbODLxfWph/1g+Pv92YG7/lKKu + /6iYtP+cg5v/oW2H/3FbUf+aiXz/oY+A/7Ofif+6pIv/mZaV/8HBwf+kkIX/1qeY/9Gjkf9+dXD/hYWG + /1Gg4P9msvr/RX6o/2FZWP9xW0//sJBw/6uLa/+YfG//gUAz/0UcFP4IAwJ0MBYXQqmLlv+ec33/kKu7 + /044Nv97pcH/vK3N/76xzP+qlKT/gV10/4pfd/9yYWP/MhwO/zwrDv+2trb/z8/P/5qFff/Ou7r/vJCK + /6urq/+EnKz/bND2/3PQ+/9Re5P/i4uL/5J+bv/PrYv/wJt8/1tTTf9dQDr/PxkT/wkDAnVlREqooo+t + /7iowP+yz/P/akJU/2gzRf+kqpX/zMjC/8Cr0f+9pND/s5fL/6t6n/+eipL/WUc6/8HBwf/Ly8v/alQt + /450Qv+inpr/zs7O/4CosP+d0tX/dNrn/4iWnv+ysrL/q4l1/9eulv+riHP/fn5+/4SDg/80FhH/CQQD + dYRgbr+reqT/wanQ/7Kxnv98bnL/fkZt/25+gf9ri6f/V4Ws/0+EsP9Pg6//Unii/15wkP9QVmL/c3Ny + /4uAbf+PZh3/i2gp/729vf/Pz8//XVRG/2FYT/9mcnL/y8zM/7i2tf++kor/0J2W/5yAdv+tra3/g3x6 + /0IbFP8JAwJ1VjA3QaBvivbEpMX/q6eQ/2aWq/8oiNL/HJzy/xee9v8YoPn/F6D6/xeg+f8XoPn/F5/4 + /x+h9v85pu7/SI66/1hqbP82Lhz/gX9+/5GQjv80Kx3/LB8N/4iHhf/Q0ND/mZiX/2RgWf+Oioj/uKyq + /8vLy/94Y1//SB0V/wkDAnUrERI/mHJ49sK72P87jtP/Fpny/xih+v8epfz/NKz6/0my+P9XtvX/X7j1 + /1239f9StPb/Qa/3/yim+f8Yofr/HqL4/1aq4/8OHir/AwMD/wkHBv8RDQn/Xlxc/7+/v/9gXlz/GRML + /zw4Nf/Ozs7/zc3N/3FQSf9LHhb/CQQCdWlERLvVy+H/N5HZ/xec9P8ao/z/M6z7/06w8/9Np+f/UpXF + /019o/9Hdpj/VoGf/3iju/97tNz/kMjv/4DF9P85qfX/G5vy/ytLX/8jGQv/IBgN/yUbDv8rIA//KR8Q + /zElEf8xJRP/TUY7/8/Pz/+1tLT/kWVc/0wfF/8JBAN1nX+C+WWZy/8WmPD/GaP8/ymn+f8omur/TIWl + /5B+VP+Xby7/kWkp/5xzLv+kfDn/pHk3/6N+Qv+If1//hJui/3Ot2P8ikOD/LWOG/4lmLf+SbDP/lG41 + /4pnM/+JaTv/f18u/2lKFv9hSBj/T0Ag/2lVQP+qenH/Sx4W/wkEAnWNhpL2GY7i/xig+v8Yofr/GZXq + /26Gkv+4lGz/yaNz/8unev/NqX3/zqt+/82thf/PrIH/xKBu/8umdP+2lGn/noZj/3GMmv9MfaD/wJxv + /5ecev9ikoD/bJKC/6WFWf+6mln/0bVW/+rLYv/pymL/y7Nd/4RpTf9EHBT/CQQCdTNhjsMYmO//GaP8 + /xWb8/9Ohab/qIlg/6OCWv+yj1X/hoJE/3iGQv90l1D/ZphI/2ORSf9xbD//jIle/yO+wf88z9T/i3pM + /6uCQv+0jFD/ap58/yjc4/8L5e3/bYlp/9i5Tf/szF//6tJ9/+rXlP/u1Hn/6Mlg/1E8I/8JBAN1JYTN + zimk9f8Yovv/F5Dj/4p+a//KuM3/0cLT/3x/NP9D3Un/Q+9L/2DuZv+A7YT/Xu1k/1HmVv9ZgU3/NNzj + /wHi6/9wbT7/jmgo/2VVJP+DYyX/etnW/xrp8P86taL/28Nn/8iqRf+LaCL/a04Y/8Ozev/wz1//oIg+ + /wgDAnUhjt7pNqv4/xih+/8edrP/qJBz/97Q4//fy+f/nJBk/2/kcv9D8Er/c7FO/6enXv+w2Zj/Vu9c + /1C8TP9d1dX/BuLr/3aLbP96qor/KNjf/3WEcf+FuKL/U+vx/xPX2//CtHP/sJJI/6t8O/+BYSP/zK5K + /+/MWv+rkT3/CAMCdSmR3/E+rvn/GKH6/x5klP9/ZTf/0sPH/+DN6P9yXED/c8ls/0btTf9Lcy3/Vj8X + /1KAMf9W7Vz/O7M7/0ukoP8e4+r/LW9g/zh7Z/8X3+f/Jra4/0NQRf9o5+z/AuTt/0BcTP96Z0D/sZVC + /+bFVv/sy1z/38BX/2xMI/8JBAN1NZfg6key+P8Yofv/HGWZ/1FEMP+fkpL/4tHp/3Fmbv9RkFD/We5f + /0XQTP82bzj/Nrc9/0LtSv8dZyL/F1lc/z7k6/8QiIz/KoGB/x/g6P8D4uv/J19f/1LAw/8X6fH/FXV3 + /4NyMf/px1T/7s9m/9fBef+9lXX/TSEZ/wkEA3VAm+PMWLf2/xii+/8febj/VEUr/3toU//j1en/opOi + /0FgJv907Hj/TvFV/3/ug/9g7Wb/P95H/yImGf8oODL/T9/l/xHGy/8toJ3/G+Ts/yTm7v8K09r/Hamt + /xnu9/8PqKz/p5ZQ/+nIV/+SgDr/jH10/7ychf96ZT3/CAUDgjyY4pZvvfP/HqX8/yCX5/9COyz/VkIg + /9fK2P/OvNT/ST8Y/3jfev9B6Uj/SF0m/5m8hf9z7nj/Ub1W/zEvGv9avrz/Debv/wjf5v8E5/D/XsK+ + /3nr7/8N5+//Ae/4/wrR2P95cET/5s97/8WrTf+OfUj/2LtX/+PCUv9rYTC3QZzlSWy16/85rfr/F573 + /ztZaP9QORD/qZqT/9TF2f9pV0f/baxe/1HrWP9Ckz3/Oi8Q/3DLa/9F70z/RYw1/0yCbf9d6u//Auv0 + /wDg6f9keF3/hqWT/6nt8P9V6/H/Bdbe/zQxIv+qnXD/5tWU/+fRgv/lznv/x69Z/zszFIVPo+gGVaTi + 3mi99v8Yovv/MJDQ/z4vEv9eQhP/e2tb/2RXR/9KZSb/f+mD/0bpTf9L2FD/Vuhb/1bmXP9Fly//WlAs + /4TY2P9q4uj/F62u/0E0Jf9KOyr/P11W/1GXmP8ffn//Lygf/zkqGP9IOhr/h3hX/8Shgv9RJhr/CQQD + dQAAAABrm8ifhcLu/zuu+f8YoPj/Pm6L/08+If/FuMn/xbXL/19NJf9+sW3/hMF4/36zbP92pF//ZIpB + /2NTJf9pUCb/fXZU/19kUP9TSDT/V0g3/11OPP9HPjT/OTIt/zkyK/9DNyr/Szso/zswIf9oXFT/wJqS + /08iGv8KBAN1AAAAAL6qq5xyptP/h8j0/yWl+v8gofb/QGV8/1ZNRv9zaF//YlVE/2RWQv9nVz//a1k6 + /2xbQP94ZUj/ZlhD/2VYRP+Kdl3/emxc/1xSR/9SS0T/X1ZN/2NaUP9kWU7/YVdM/1xTSv9mV0X/U0g6 + /21fVf/DnZb/TyIa/wkEAnUAAAAAzK6onLytsf9wpND/fcX1/yKk+f8govf/Rn2i/0lIRf9pZF3/dW9p + /3Rvav91cGj/e3Jl/3tzaf99dGn/gndm/5aGb/+OgXL/TmVz/y5bfP9sZmH/d3Fr/4N4aP+Qg3H/eXJs + /351a/9uZVr/cmVa/8Odlv9PIhr/CgQDdQAAAADOsKucz7Gs/1A6P/91q9T/hMf1/yyo+P8YoPn/OZzf + /0xwif9WWl3/bGpn/316d/+EgX3/hYF8/4B6c/91c2z/W3qJ/zKKx/87qfP/VprK/3x5dv+Wko//mJSP + /56Xj/+alZD/mpWR/4eCfv9yZl7/xKCZ/04iGf8KBAN1AAAAANCzrZzSta//VCYa/3Z7df9+s9z/mM7z + /1C09/8dovr/F5/5/yyj8v83k9H/PIW3/zyBsP84hLj/LY3P/x+Z7P8Xnfb/GKH6/xih+v8hlOP/hIWF + /7q3tf+6t7T/u7i1/725tv++urf/p6Of/3puZf/FoZr/TyIa/wkEA3UAAAAA0raxnNK2sP9TJhr/jYNx + /9vb1v+Tvdz/i8Hp/4/M9f9Vtvf/MKr5/x2j+v8Yofv/GKH6/xih+/8ao/v/Jaf7/zqu+v9Ns/f/Iprt + /xWH2v+qtb7/19fW/9jX1v/Z2Nf/29nX/9za2P+3tLD/fW9k/8Whmv9PIhr/CgQDdQAAAADUubSc1765 + /1YpH/9sX0n/0szC/9/c1v/AzNP/ga3P/3q04f+Qx+//kMz0/33E9f9xwPX/cL/1/3O/9P9vu/D/VKnn + /0ea1/9qo8z/ws/Y/9vZ1//a2df/2tnY/9rZ2P/a2dj/1tTT/4iAdv99ZFL/toqB/08iGv8JBAN1AAAA + ANvGwZzdx8P/lWtj/zobEf9CKyH/SDIo/0gyKP9HMij/RDIt/zU7S/88U3D/SWqN/1B0mf9IcJb/PmCD + /zNIYv89Oj//RzMp/0cyJ/9MNy7/STQs/0MuKP9CLij/QS4p/0AtKf8+Kyb/PSEX/4ZMQP+ZWU3/TiIa + /wsEA2oAAAAA7uTieerd2//aw77/vZiQ/6yDe/+rgHj/qHx0/6d6cf+meXD/o3Vs/6Jzaf+gcWj/n29m + /5xsYv+bamH/mWZc/5dkWv+VYVb/k15U/5FcUf+OV0z/jFVK/4tSR/+HTkP/hUo//4NHO/+HSDz/lVNG + /4hFOP9EHBXwDgUEJAAAAAD07ewI8+3sp+nb2PjeycX83MbC/NvEwPzZwb382MC7/NW7tvzVurX807ex + /NG0rvzNr6j8za6o/MuqpPzIpqD8x6Sd/MWhmvzBnJT8wJqS/L2Vjfy7kor8uI2E/LWHfvyzhHv8sH92 + /K58c/yncmj8hlNJ4UQjHUsAAAAA+f+H/8AAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAACAAAAAgAAA + AIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAAEoAAAAEAAAACAAAAABACAAAAAAAEAEAAAAAAAAAAAA + AAAAAAAAAAAAGxsbYyoqKsgrKyvKKysryisrK8orKyvKKioqyioqKsoqKirKKioqyikpKcopKSnKKCgo + yigoKMogICDCAwMDQISEhPajnpX/sqmY/6+nl/+tpJX/qqKT/6qhkv+poJD/p56O/6Kai/+dloj/mpOF + /5iQgv+hmYr/kpKR/x4eHrGTk5P9d10v/35YEv9nTx3/U084/1BOOf9VRiT/X0IP/3FOEP92UhD/eVQR + /31XEf9+VxL/aEoU/6KZiv8lJSW4l5eX/XBpVf9ZlbL/ULL0/2C7+P9mvvf/Ybv3/1ao3v9fg4//SjkY + /zYnDv8sIA7/KR8Q/x0XDv+GhYL/JSUluJeeo/1Fndn/Vrj5/2ievf9RZ3L/cXdv/5uej/+Xsrv/bLjs + /x80Qv8ZEwv/HxcM/yIaD/8SDgr/hYSD/yYmJrh0pcn9TLT5/26ctP+gfUf/knhA/5GFSf+QfUT/goVY + /2qKdv+ShGf/XJV+/0iId/+4nEP/4MZq/8KtYf8nJiG4ZK3g/Uqv8v+nlHX/q6ug/0zkUf9nylD/X+Ne + /023jf8xsaT/e5l1/3eZe/8b1tn/wKlR/4VmLv/avWD/XVInuG+15v1KpuP/o39G/728uv9ZzFX/dqRS + /2LRU/9Yp17/LcHA/0W7r/8/qqL/K9zh/4eUav/VtU//2sJt/zQxJbiHut/9T7Lz/zMqHP+joZ7/Y6hk + /1DPVf9d3WH/IEMk/yrN1P8VzdP/Mtng/xHY3/9CmYT/0rdY/6+jfP9zZzbPnrvR/Wm/+P9AXGX/c2JH + /3aGYf9L1E//SaZE/0HCQf9UnZH/G93j/1FcRv9QtrP/JnRw/39ySv/KuXv/XlYzv7S5vP2Bttv/Uqvm + /05OQv+Ge2b/Ynk5/2p7O/9jXib/cFw6/05HMP9SQS7/LSMa/zMnHP8yJRb/npuY/ycnJ7i7u7v9W2Nl + /4vE6v9Vrej/Tmdx/1ZJMf9nVTn/X1A5/21mV/9Kc4z/UWd0/2BWSf9aUEb/Vkk5/5+cmf8nJye4v7+/ + /XFnVv+dn5n/mMLg/3bE9/9Ys+//TJ/W/0yj3f9UtfX/XLn2/1aJrf+WkIj/lo+J/4R+eP+in5v/Jycn + uMLCwv16c2b/29TJ/9fTyv+9ztn/sNDn/5/L6/+YyOr/ncfl/7DK3v/Lzc7/0M7N/9LQzf+2sq7/pqKe + /ycnJ7jS0tL9XFdP/4eDfP+JhYD/hYOA/4WDgP+Fg3//hoR//4iFf/+KhoH/iYaD/4SCgP+DgYD/aGNd + /5eVkv8nJye07+/vstTU1P3Gxsb9w8PD/b+/v/27u7v9uLi4/bS0tP2wsLD9q6ur/aenp/2ioqL9nZ2d + /Zqamv2Li4v0KSkpTgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAA= + + \ No newline at end of file From 45828aca45a1c826fe12cf820e180443630414b0 Mon Sep 17 00:00:00 2001 From: psyk2642 <60137590+psyk2642@users.noreply.github.com> Date: Fri, 11 Mar 2022 19:59:35 +0800 Subject: [PATCH 041/257] #Random Support + Miscellaneous - Revised GoToMeasure, now you can go to decimal measures - Added mBMplay as the default player (with proper arguments) for new users. For old users, you can click the "Restore Default" button - Prevents notes in the expansion field from being shown - Supports nested #Random editing (only the main and expansion data field are supported). Further testing required. I must thank whoever laid down the foundation with Expansion Code --- Audio.vb | 131 + ChartIO.vb | 1291 +++++++ MainWindow.designer.vb | 4577 ++++++++++++++++++++++++ MainWindow.resx | 2484 +++++++++++++ MainWindow.vb | 5017 +++++++++++++++++++++++++++ Option Windows/OpExpand.Designer.vb | 93 + Option Windows/OpExpand.resx | 120 + Option Windows/OpExpand.vb | 110 + Option Windows/OpPlayer.vb | 213 ++ app.config | 23 + iBMSC.vbproj | 356 ++ packages.config | 5 + 12 files changed, 14420 insertions(+) create mode 100644 Audio.vb create mode 100644 ChartIO.vb create mode 100644 MainWindow.designer.vb create mode 100644 MainWindow.resx create mode 100644 MainWindow.vb create mode 100644 Option Windows/OpExpand.Designer.vb create mode 100644 Option Windows/OpExpand.resx create mode 100644 Option Windows/OpExpand.vb create mode 100644 Option Windows/OpPlayer.vb create mode 100644 app.config create mode 100644 iBMSC.vbproj create mode 100644 packages.config diff --git a/Audio.vb b/Audio.vb new file mode 100644 index 000000000..2a42b0a0b --- /dev/null +++ b/Audio.vb @@ -0,0 +1,131 @@ +Imports NVorbis +Imports CSCore +Imports CSCore.Codecs +Imports CSCore.SoundOut + +Module Audio + Dim Output As WasapiOut + Dim Source As IWaveSource + + Public Sub Initialize() + Output = New WasapiOut() + CodecFactory.Instance.Register("ogg", New CodecFactoryEntry(Function(s) + Return New NVorbisSource(s).ToWaveSource() + End Function, ".ogg")) + End Sub + + Public Sub Finalize() + Output.Stop() + Output.Dispose() + Output = Nothing + End Sub + + Public Function CheckFilename(ByVal filename As String) As String + If File.Exists(filename) Then + Return filename + End If + Dim ext = Path.GetExtension(filename) + If String.Compare(ext, ".ogg") = 0 Then + Dim wpath = Path.ChangeExtension(filename, ".wav") + Return IIf(File.Exists(wpath), wpath, filename) + End If + If String.Compare(ext, ".wav") = 0 Then + Dim opath = Path.ChangeExtension(filename, ".ogg") + Return IIf(File.Exists(opath), opath, filename) + End If + Return filename + End Function + + Public Sub Play(ByVal filename As String) + If Source IsNot Nothing Then + Output.Stop() + Source.Dispose() + Source = Nothing + End If + + If filename Is "" Then + Return + End If + + Dim fn = CheckFilename(filename) + + ' P: How to catch without crashing + Try + Source = CodecFactory.Instance.GetCodec(fn) + Output.Initialize(Source) + Output.Play() + Catch ex As Exception + MsgBox("Error: " + ex.Message) + Exit Sub + End Try + End Sub + + Public Sub StopPlaying() + Output.Stop() + End Sub +End Module + +Class NVorbisSource + Implements CSCore.ISampleSource + Dim _stream As Stream + Dim _vorbisReader As VorbisReader + Dim _waveFormat As WaveFormat + Dim _disposed As Boolean + + Public Sub New(stream As Stream) + If stream Is Nothing Or Not stream.CanRead Then + Throw New ArgumentException("stream") + End If + _stream = stream + _vorbisReader = New VorbisReader(stream, Nothing) + _waveFormat = New WaveFormat(_vorbisReader.SampleRate, 32, _vorbisReader.Channels, AudioEncoding.IeeeFloat) + End Sub + + Public ReadOnly Property CanSeek As Boolean Implements IAudioSource.CanSeek + Get + Return _stream.CanSeek + End Get + End Property + + Public ReadOnly Property WaveFormat As WaveFormat Implements IAudioSource.WaveFormat + Get + Return _waveFormat + End Get + End Property + + Public ReadOnly Property Length As Long Implements IAudioSource.Length + Get + Return IIf(CanSeek, _vorbisReader.TotalTime.TotalSeconds * _waveFormat.SampleRate * _waveFormat.Channels, 0) + End Get + End Property + + Public Property Position As Long Implements IAudioSource.Position + Get + Return IIf(CanSeek, _vorbisReader.DecodedTime.TotalSeconds * _vorbisReader.SampleRate * _vorbisReader.Channels, 0) + End Get + Set(value As Long) + If Not CanSeek Then + Throw New InvalidOperationException("Can't seek this stream.") + End If + If value < 0 Or value >= Length Then + Throw New ArgumentOutOfRangeException("value") + End If + _vorbisReader.DecodedTime = TimeSpan.FromSeconds(value / _vorbisReader.SampleRate / _vorbisReader.Channels) + End Set + End Property + + + Public Function Read(buffer As Single(), offset As Integer, count As Integer) As Integer Implements ISampleSource.Read + Return _vorbisReader.ReadSamples(buffer, offset, count) + End Function + + Public Sub Dispose() Implements IDisposable.Dispose + If Not _disposed Then + '_vorbisReader.Dispose() + Else + 'Throw New ObjectDisposedException("NVorbisSource") + End If + _disposed = True + End Sub + +End Class diff --git a/ChartIO.vb b/ChartIO.vb new file mode 100644 index 000000000..943579527 --- /dev/null +++ b/ChartIO.vb @@ -0,0 +1,1291 @@ +Imports iBMSC.Editor + +Partial Public Class MainWindow + Private Sub OpenBMS(ByVal xStrAll As String) + KMouseOver = -1 + + 'Line feed validation: will remove some empty lines + xStrAll = Replace(Replace(Replace(xStrAll, vbLf, vbCr), vbCr & vbCr, vbCr), vbCr, vbCrLf) + + Dim xStrLine() As String = Split(xStrAll, vbCrLf, , CompareMethod.Text) + Dim xStrLine2(xStrLine.Length) As String ' Create a second array which removes expansion codes from the second for loop + Dim xI1 As Integer + Dim sLine As String + Dim xExpansion As String = "" + ReDim Notes(0) + ReDim mColumn(999) + ReDim hWAV(1295) + ReDim hBPM(1295) 'x10000 + ReDim hSTOP(1295) + ReDim hSCROLL(1295) + Me.InitializeNewBMS() + Me.InitializeOpenBMS() + + With Notes(0) + .ColumnIndex = niBPM + .VPosition = -1 + '.LongNote = False + '.Selected = False + .Value = 1200000 + End With + + 'old list below, not sure what this means + 'random, setRandom 0 + 'endRandom 0 + 'if +1 + 'else 0 + 'endif -1 + 'switch, setSwitch +1 + 'case, skip, def 0 + 'endSw -1 + + 'P: I'm gonna do what's called a pro gamer move + + Dim xStack As Integer = 0 + Dim nLine As Integer = -1 + + For Each sLine In xStrLine + Dim sLineTrim As String = sLine.Trim + If xStack > 0 Then GoTo Expansion + + + If sLineTrim.StartsWith("#") And Mid(sLineTrim, 5, 3) = "02:" Then + Dim xIndex As Integer = Val(Mid(sLineTrim, 2, 3)) + Dim xRatio As Double = Val(Mid(sLineTrim, 8)) + Dim xxD As Long = GetDenominator(xRatio) + MeasureLength(xIndex) = xRatio * 192.0R + LBeat.Items(xIndex) = Add3Zeros(xIndex) & ": " & xRatio & IIf(xxD > 10000, "", " ( " & CLng(xRatio * xxD) & " / " & xxD & " ) ") + GoTo AddToxStrLine2 + + ElseIf SWIC(sLineTrim, "#WAV") Then + hWAV(C36to10(Mid(sLineTrim, Len("#WAV") + 1, 2))) = Mid(sLineTrim, Len("#WAV") + 4) + GoTo AddToxStrLine2 + + ElseIf SWIC(sLineTrim, "#BPM") And Not Mid(sLineTrim, Len("#BPM") + 1, 1).Trim = "" Then 'If BPM## + ' zdr: No limits on BPM editing.. they don't make much sense. + hBPM(C36to10(Mid(sLineTrim, Len("#BPM") + 1, 2))) = Val(Mid(sLineTrim, Len("#BPM") + 4)) * 10000 + GoTo AddToxStrLine2 + + 'No limits on STOPs either. + ElseIf SWIC(sLineTrim, "#STOP") Then + hSTOP(C36to10(Mid(sLineTrim, Len("#STOP") + 1, 2))) = Val(Mid(sLineTrim, Len("#STOP") + 4)) * 10000 + GoTo AddToxStrLine2 + + ElseIf SWIC(sLineTrim, "#SCROLL") Then + hSCROLL(C36to10(Mid(sLineTrim, Len("#SCROLL") + 1, 2))) = Val(Mid(sLineTrim, Len("#SCROLL") + 4)) * 10000 + GoTo AddToxStrLine2 + + ElseIf SWIC(sLineTrim, "#TITLE") Then + THTitle.Text = Mid(sLineTrim, Len("#TITLE") + 1).Trim + GoTo AddToxStrLine2 + + ElseIf SWIC(sLineTrim, "#ARTIST") Then + THArtist.Text = Mid(sLineTrim, Len("#ARTIST") + 1).Trim + GoTo AddToxStrLine2 + + ElseIf SWIC(sLineTrim, "#GENRE") Then + THGenre.Text = Mid(sLineTrim, Len("#GENRE") + 1).Trim + GoTo AddToxStrLine2 + + ElseIf SWIC(sLineTrim, "#BPM") Then 'If BPM #### + Notes(0).Value = Val(Mid(sLineTrim, Len("#BPM") + 1).Trim) * 10000 + THBPM.Value = Notes(0).Value / 10000 + GoTo AddToxStrLine2 + + ElseIf SWIC(sLineTrim, "#PLAYER") Then + Dim xInt As Integer = Val(Mid(sLineTrim, Len("#PLAYER") + 1).Trim) + If xInt >= 1 And xInt <= 4 Then _ + CHPlayer.SelectedIndex = xInt - 1 + GoTo AddToxStrLine2 + + ElseIf SWIC(sLineTrim, "#RANK") Then + Dim xInt As Integer = Val(Mid(sLineTrim, Len("#RANK") + 1).Trim) + If xInt >= 0 And xInt <= 4 Then _ + CHRank.SelectedIndex = xInt + GoTo AddToxStrLine2 + + ElseIf SWIC(sLineTrim, "#PLAYLEVEL") Then + THPlayLevel.Text = Mid(sLineTrim, Len("#PLAYLEVEL") + 1).Trim + GoTo AddToxStrLine2 + + ElseIf SWIC(sLineTrim, "#SUBTITLE") Then + THSubTitle.Text = Mid(sLineTrim, Len("#SUBTITLE") + 1).Trim + GoTo AddToxStrLine2 + + ElseIf SWIC(sLineTrim, "#SUBARTIST") Then + THSubArtist.Text = Mid(sLineTrim, Len("#SUBARTIST") + 1).Trim + GoTo AddToxStrLine2 + + ElseIf SWIC(sLineTrim, "#STAGEFILE") Then + THStageFile.Text = Mid(sLineTrim, Len("#STAGEFILE") + 1).Trim + GoTo AddToxStrLine2 + + ElseIf SWIC(sLineTrim, "#BANNER") Then + THBanner.Text = Mid(sLineTrim, Len("#BANNER") + 1).Trim + GoTo AddToxStrLine2 + + ElseIf SWIC(sLineTrim, "#BACKBMP") Then + THBackBMP.Text = Mid(sLineTrim, Len("#BACKBMP") + 1).Trim + GoTo AddToxStrLine2 + + ElseIf SWIC(sLineTrim, "#DIFFICULTY") Then + Try + CHDifficulty.SelectedIndex = Integer.Parse(Mid(sLineTrim, Len("#DIFFICULTY") + 1).Trim) + Catch ex As Exception + End Try + GoTo AddToxStrLine2 + + ElseIf SWIC(sLineTrim, "#DEFEXRANK") Then + THExRank.Text = Mid(sLineTrim, Len("#DEFEXRANK") + 1).Trim + GoTo AddToxStrLine2 + + ElseIf SWIC(sLineTrim, "#TOTAL") Then + Dim xStr As String = Mid(sLineTrim, Len("#TOTAL") + 1).Trim + 'If xStr.EndsWith("%") Then xStr = Mid(xStr, 1, Len(xStr) - 1) + THTotal.Text = xStr + GoTo AddToxStrLine2 + + ElseIf SWIC(sLineTrim, "#COMMENT") Then + Dim xStr As String = Mid(sLineTrim, Len("#COMMENT") + 1).Trim + If xStr.StartsWith("""") Then xStr = Mid(xStr, 2) + If xStr.EndsWith("""") Then xStr = Mid(xStr, 1, Len(xStr) - 1) + THComment.Text = xStr + GoTo AddToxStrLine2 + + ElseIf SWIC(sLineTrim, "#LNTYPE") Then + 'THLnType.Text = Mid(sLineTrim, Len("#LNTYPE") + 1).Trim + If Val(Mid(sLineTrim, Len("#LNTYPE") + 1).Trim) = 1 Then CHLnObj.SelectedIndex = 0 + GoTo AddToxStrLine2 + + ElseIf SWIC(sLineTrim, "#LNOBJ") Then + Dim xValue As Integer = C36to10(Mid(sLineTrim, Len("#LNOBJ") + 1).Trim) + CHLnObj.SelectedIndex = xValue + GoTo AddToxStrLine2 + + 'TODO: LNOBJ value validation + + 'ElseIf SWIC(sLineTrim,"#LNTYPE") Then + ' CAdLNTYPE.Checked = True + ' If Mid(sLineTrim, 9) = "" Or Mid(sLineTrim, 9) = "1" Or Mid(sLineTrim, 9) = "01" Then CAdLNTYPEb.Text = "1" + ' CAdLNTYPEb.Text = Mid(sLineTrim, 9) + + ElseIf sLineTrim.StartsWith("#") And Mid(sLineTrim, 7, 1) = ":" Then 'If the line contains Ks + Dim xIdentifier As String = Mid(sLineTrim, 5, 2) + If BMSChannelToColumn(xIdentifier) = 0 Then GoTo AddExpansion + + ' If does not belong to expansion code, execute below +AddToxStrLine2: nLine += 1 + xStrLine2(nLine) = sLineTrim + + Else +Expansion: If SWIC(sLineTrim, "#IF") Or SWIC(sLineTrim, "#SWITCH") Or SWIC(sLineTrim, "#SETSWITCH") Then + xStack += 1 : GoTo AddExpansion + ElseIf SWIC(sLineTrim, "#ENDIF") Or SWIC(sLineTrim, "#ENDSW") Then + xStack -= 1 : GoTo AddExpansion + + ElseIf sLineTrim.StartsWith("#") Then +AddExpansion: xExpansion &= sLine & vbCrLf + + End If + + End If + Next + + UpdateMeasureBottom() + + ReDim Preserve xStrLine2(nLine) + + ' BPM must be updated before loading notes, do not combine loops + For Each sLineTrim In xStrLine2 + + If Not (sLineTrim.StartsWith("#") And Mid(sLineTrim, 7, 1) = ":") Then Continue For 'If the line contains Ks ' P: The hell is a K + + ' >> Measure = Mid(sLine, 2, 3) + ' >> Column Identifier = Mid(sLine, 5, 2) + ' >> K = Mid(sLine, xI1, 2) + Dim xMeasure As Integer = Val(Mid(sLineTrim, 2, 3)) + Dim Channel As String = Mid(sLineTrim, 5, 2) + If BMSChannelToColumn(Channel) = 0 Then Continue For + + If Channel = "01" Then mColumn(xMeasure) += 1 'If the identifier is 01 then add a B column in that measure + For xI1 = 8 To Len(sLineTrim) - 1 Step 2 'For all Ks within that line ( - 1 can be ommitted ) + If Mid(sLineTrim, xI1, 2) = "00" Then Continue For 'If the K is not 00 + + ReDim Preserve Notes(Notes.Length) + + With Notes(UBound(Notes)) + .ColumnIndex = BMSChannelToColumn(Channel) + + IIf(Channel = "01", 1, 0) * (mColumn(xMeasure) - 1) + .LongNote = IsChannelLongNote(Channel) + .Hidden = IsChannelHidden(Channel) + .Landmine = IsChannelLandmine(Channel) + .Selected = False + .VPosition = MeasureBottom(xMeasure) + MeasureLength(xMeasure) * (xI1 / 2 - 4) / ((Len(sLineTrim) - 7) / 2) + .Value = C36to10(Mid(sLineTrim, xI1, 2)) * 10000 + + If Channel = "03" Then .Value = Convert.ToInt32(Mid(sLineTrim, xI1, 2), 16) * 10000 + If Channel = "08" Then .Value = hBPM(C36to10(Mid(sLineTrim, xI1, 2))) + If Channel = "09" Then .Value = hSTOP(C36to10(Mid(sLineTrim, xI1, 2))) + If Channel = "SC" Then .Value = hSCROLL(C36to10(Mid(sLineTrim, xI1, 2))) + End With + + Next + Next + + If NTInput Then ConvertBMSE2NT() + + LWAV.Visible = False + LWAV.Items.Clear() + For xI1 = 1 To 1295 + LWAV.Items.Add(C10to36(xI1) & ": " & hWAV(xI1)) + Next + LWAV.SelectedIndex = 0 + LWAV.Visible = True + + TExpansion.Text = xExpansion + + SortByVPositionQuick(0, UBound(Notes)) + UpdatePairing() + CalculateTotalPlayableNotes() + CalculateGreatestVPosition() + RefreshPanelAll() + POStatusRefresh() + End Sub + + ReadOnly BMSChannelList() As String = {"01", "03", "04", "06", "07", "08", "09", + "11", "12", "13", "14", "15", "16", "18", "19", + "21", "22", "23", "24", "25", "26", "28", "29", + "31", "32", "33", "34", "35", "36", "38", "39", + "41", "42", "43", "44", "45", "46", "48", "49", + "51", "52", "53", "54", "55", "56", "58", "59", + "61", "62", "63", "64", "65", "66", "68", "69", + "D1", "D2", "D3", "D4", "D5", "D6", "D8", "D9", + "E1", "E2", "E3", "E4", "E5", "E6", "E8", "E9", + "SC"} + ' 71 through 89 are reserved + '"71", "72", "73", "74", "75", "76", "78", "79", + '"81", "82", "83", "84", "85", "86", "88", "89", + + Private Function SWIC(str As String, strHash As String) As Boolean ' StartsWith, IgnoreCase + Return str.StartsWith(strHash, StringComparison.CurrentCultureIgnoreCase) + End Function + + Private Function SaveBMS() As String + CalculateGreatestVPosition() + SortByVPositionInsertion() + UpdatePairing() + Dim MeasureIndex As Integer + Dim hasOverlapping As Boolean = False + 'Dim xStrAll As String = "" 'for all + Dim xStrMeasure(MeasureAtDisplacement(GreatestVPosition) + 1) As String + + ' We regenerate these when traversing the bms event list. + ReDim hBPM(0) + ReDim hSTOP(0) + ReDim hSCROLL(0) + + Dim xNTInput As Boolean = NTInput + Dim xKBackUp() As Note = Notes + If xNTInput Then + NTInput = False + ConvertNT2BMSE() + End If + + Dim tempNote As Note 'Temp K + + Dim xprevNotes(-1) As Note 'Notes too close to the next measure + + For MeasureIndex = 0 To MeasureAtDisplacement(GreatestVPosition) + 1 'For xI1 in each measure + xStrMeasure(MeasureIndex) = vbCrLf + + Dim consistentDecimalStr = WriteDecimalWithDot(MeasureLength(MeasureIndex) / 192.0R) + + ' Handle fractional measure + If MeasureLength(MeasureIndex) <> 192.0R Then xStrMeasure(MeasureIndex) &= "#" & Add3Zeros(MeasureIndex) & "02:" & consistentDecimalStr & vbCrLf + + ' Get note count in current measure + Dim LowerLimit As Integer = Nothing + Dim UpperLimit As Integer = Nothing + GetMeasureLimits(MeasureIndex, LowerLimit, UpperLimit) + + If UpperLimit - LowerLimit = 0 Then Continue For 'If there is no K in the current measure then end this loop + + ' Get notes from this measure + Dim xUPrevText As Integer = UBound(xprevNotes) + Dim NotesInMeasure(UpperLimit - LowerLimit + xUPrevText) As Note + + ' Copy notes from previous array + For i = 0 To xUPrevText + NotesInMeasure(i) = xprevNotes(i) + Next + + ' Copy notes in current measure + For i = LowerLimit To UpperLimit - 1 + NotesInMeasure(i - LowerLimit + xprevNotes.Length) = Notes(i) + Next + + ' Find greatest column. + ' Since background tracks have the highest column values + ' this - niB will yield the number of B columns. + Dim GreatestColumn = 0 + For Each tempNote In NotesInMeasure + GreatestColumn = Math.Max(tempNote.ColumnIndex, GreatestColumn) + Next + + ReDim xprevNotes(-1) + xStrMeasure(MeasureIndex) &= GenerateBackgroundTracks(MeasureIndex, hasOverlapping, NotesInMeasure, GreatestColumn, xprevNotes) + xStrMeasure(MeasureIndex) &= GenerateKeyTracks(MeasureIndex, hasOverlapping, NotesInMeasure, xprevNotes) + Next + + ' Warn about 255 limit if neccesary. + If hasOverlapping Then MsgBox(Strings.Messages.SaveWarning & vbCrLf & + Strings.Messages.NoteOverlapError & vbCrLf & + Strings.Messages.SavedFileWillContainErrors, MsgBoxStyle.Exclamation) + If UBound(hBPM) > IIf(BPMx1296, 1295, 255) Then MsgBox(Strings.Messages.SaveWarning & vbCrLf & + Strings.Messages.BPMOverflowError & UBound(hBPM) & " > " & IIf(BPMx1296, 1295, 255) & vbCrLf & + Strings.Messages.SavedFileWillContainErrors, MsgBoxStyle.Exclamation) + If UBound(hSTOP) > IIf(STOPx1296, 1295, 255) Then MsgBox(Strings.Messages.SaveWarning & vbCrLf & + Strings.Messages.STOPOverflowError & UBound(hSTOP) & " > " & IIf(STOPx1296, 1295, 255) & vbCrLf & + Strings.Messages.SavedFileWillContainErrors, MsgBoxStyle.Exclamation) + If UBound(hSCROLL) > 1295 Then MsgBox(Strings.Messages.SaveWarning & vbCrLf & + Strings.Messages.SCROLLOverflowError & UBound(hSCROLL) & " > " & 1295 & vbCrLf & + Strings.Messages.SavedFileWillContainErrors, MsgBoxStyle.Exclamation) + + ' Add expansion text + Dim xStrExp As String = vbCrLf & "*---------------------- EXPANSION FIELD" & vbCrLf & TExpansion.Text & vbCrLf & vbCrLf + If TExpansion.Text = "" Then xStrExp = "" + + ' Output main data field. + Dim xStrMain As String = "*---------------------- MAIN DATA FIELD" & vbCrLf & vbCrLf & Join(xStrMeasure, "") & vbCrLf + + If xNTInput Then + Notes = xKBackUp + NTInput = True + End If + + ' Generate headers now, since we have the unique BPM/STOP/etc declarations. + Dim xStrHeader As String = GenerateHeaderMeta() + xStrHeader &= GenerateHeaderIndexedData() + + Dim xStrAll As String = xStrHeader & vbCrLf & xStrExp & vbCrLf & xStrMain + Return xStrAll + End Function + + Private Function SaveRandomBMS() As String + ' Straight up copied and pasted from SaveBMS. Optimization will be later. + CalculateGreatestVPosition() + SortByVPositionInsertion() + UpdatePairing() + Dim MeasureIndex As Integer + Dim hasOverlapping As Boolean = False + 'Dim xStrAll As String = "" 'for all + Dim xStrMeasure(MeasureAtDisplacement(GreatestVPosition) + 1) As String + + ' We regenerate these when traversing the bms event list. + ReDim hBPM(0) + ReDim hSTOP(0) + ReDim hSCROLL(0) + + Dim xNTInput As Boolean = NTInput + Dim xKBackUp() As Note = Notes + If xNTInput Then + NTInput = False + ConvertNT2BMSE() + End If + + Dim tempNote As Note 'Temp K + + Dim xprevNotes(-1) As Note 'Notes too close to the next measure + + For MeasureIndex = 0 To MeasureAtDisplacement(GreatestVPosition) + 1 'For xI1 in each measure + xStrMeasure(MeasureIndex) = vbCrLf + + Dim consistentDecimalStr = WriteDecimalWithDot(MeasureLength(MeasureIndex) / 192.0R) + + ' Handle fractional measure + If MeasureLength(MeasureIndex) <> 192.0R Then xStrMeasure(MeasureIndex) &= "#" & Add3Zeros(MeasureIndex) & "02:" & consistentDecimalStr & vbCrLf + + ' Get note count in current measure + Dim LowerLimit As Integer = Nothing + Dim UpperLimit As Integer = Nothing + GetMeasureLimits(MeasureIndex, LowerLimit, UpperLimit) + + If UpperLimit - LowerLimit = 0 Then Continue For 'If there is no K in the current measure then end this loop + + ' Get notes from this measure + Dim xUPrevText As Integer = UBound(xprevNotes) + Dim NotesInMeasure(UpperLimit - LowerLimit + xUPrevText) As Note + + ' Copy notes from previous array + For i = 0 To xUPrevText + NotesInMeasure(i) = xprevNotes(i) + Next + + ' Copy notes in current measure + For i = LowerLimit To UpperLimit - 1 + NotesInMeasure(i - LowerLimit + xprevNotes.Length) = Notes(i) + Next + + ' Find greatest column. + ' Since background tracks have the highest column values + ' this - niB will yield the number of B columns. + Dim GreatestColumn = 0 + For Each tempNote In NotesInMeasure + GreatestColumn = Math.Max(tempNote.ColumnIndex, GreatestColumn) + Next + + ReDim xprevNotes(-1) + xStrMeasure(MeasureIndex) &= GenerateBackgroundTracks(MeasureIndex, hasOverlapping, NotesInMeasure, GreatestColumn, xprevNotes) + xStrMeasure(MeasureIndex) &= GenerateKeyTracks(MeasureIndex, hasOverlapping, NotesInMeasure, xprevNotes) + Next + + ' Warn about 255 limit if neccesary. + If hasOverlapping Then MsgBox(Strings.Messages.SaveWarning & vbCrLf & + Strings.Messages.NoteOverlapError & vbCrLf & + Strings.Messages.SavedFileWillContainErrors, MsgBoxStyle.Exclamation) + If UBound(hBPM) > IIf(BPMx1296, 1295, 255) Then MsgBox(Strings.Messages.SaveWarning & vbCrLf & + Strings.Messages.BPMOverflowError & UBound(hBPM) & " > " & IIf(BPMx1296, 1295, 255) & vbCrLf & + Strings.Messages.SavedFileWillContainErrors, MsgBoxStyle.Exclamation) + If UBound(hSTOP) > IIf(STOPx1296, 1295, 255) Then MsgBox(Strings.Messages.SaveWarning & vbCrLf & + Strings.Messages.STOPOverflowError & UBound(hSTOP) & " > " & IIf(STOPx1296, 1295, 255) & vbCrLf & + Strings.Messages.SavedFileWillContainErrors, MsgBoxStyle.Exclamation) + If UBound(hSCROLL) > 1295 Then MsgBox(Strings.Messages.SaveWarning & vbCrLf & + Strings.Messages.SCROLLOverflowError & UBound(hSCROLL) & " > " & 1295 & vbCrLf & + Strings.Messages.SavedFileWillContainErrors, MsgBoxStyle.Exclamation) + + ' Add expansion text + Dim xStrExp As String = vbCrLf & TExpansion.Text & vbCrLf & vbCrLf + If TExpansion.Text = "" Then xStrExp = "" + + ' Output main data field. + Dim xStrMain As String = vbCrLf & Join(xStrMeasure, "") & vbCrLf + + If xNTInput Then + Notes = xKBackUp + NTInput = True + End If + + Dim xStrAll As String = xStrExp & vbCrLf & xStrMain & vbCrLf & "*---------------------- RANDOM DATA FIELD" + Return xStrAll + End Function + + Private Function GenerateHeaderMeta() As String + Dim xStrHeader As String = vbCrLf & "*---------------------- HEADER FIELD" & vbCrLf & vbCrLf + xStrHeader &= "#PLAYER " & (CHPlayer.SelectedIndex + 1) & vbCrLf + xStrHeader &= "#GENRE " & THGenre.Text & vbCrLf + xStrHeader &= "#TITLE " & THTitle.Text & vbCrLf + xStrHeader &= "#ARTIST " & THArtist.Text & vbCrLf + xStrHeader &= "#BPM " & WriteDecimalWithDot(Notes(0).Value / 10000) & vbCrLf + xStrHeader &= "#PLAYLEVEL " & THPlayLevel.Text & vbCrLf + xStrHeader &= "#RANK " & CHRank.SelectedIndex & vbCrLf + xStrHeader &= vbCrLf + If THSubTitle.Text <> "" Then xStrHeader &= "#SUBTITLE " & THSubTitle.Text & vbCrLf + If THSubArtist.Text <> "" Then xStrHeader &= "#SUBARTIST " & THSubArtist.Text & vbCrLf + If THStageFile.Text <> "" Then xStrHeader &= "#STAGEFILE " & THStageFile.Text & vbCrLf + If THBanner.Text <> "" Then xStrHeader &= "#BANNER " & THBanner.Text & vbCrLf + If THBackBMP.Text <> "" Then xStrHeader &= "#BACKBMP " & THBackBMP.Text & vbCrLf + xStrHeader &= vbCrLf + If CHDifficulty.SelectedIndex Then xStrHeader &= "#DIFFICULTY " & CHDifficulty.SelectedIndex & vbCrLf + If THExRank.Text <> "" Then xStrHeader &= "#DEFEXRANK " & THExRank.Text & vbCrLf + If THTotal.Text <> "" Then xStrHeader &= "#TOTAL " & THTotal.Text & vbCrLf + If THComment.Text <> "" Then xStrHeader &= "#COMMENT """ & THComment.Text & """" & vbCrLf + 'If THLnType.Text <> "" Then xStrHeader &= "#LNTYPE " & THLnType.Text & vbCrLf + If CHLnObj.SelectedIndex > 0 Then xStrHeader &= "#LNOBJ " & C10to36(CHLnObj.SelectedIndex) & vbCrLf _ + Else xStrHeader &= "#LNTYPE 1" & vbCrLf + xStrHeader &= vbCrLf + Return xStrHeader + End Function + + Private Function GenerateHeaderIndexedData() As String + Dim xStrHeader As String = "" + + For i = 1 To UBound(hWAV) + If Not hWAV(i) = "" Then xStrHeader &= "#WAV" & C10to36(i) & + " " & hWAV(i) & vbCrLf + Next + For i = 1 To UBound(hBPM) + xStrHeader &= "#BPM" & + IIf(BPMx1296, C10to36(i), Mid("0" & Hex(i), Len(Hex(i)))) & + " " & WriteDecimalWithDot(hBPM(i) / 10000) & vbCrLf + Next + For i = 1 To UBound(hSTOP) + xStrHeader &= "#STOP" & + IIf(STOPx1296, C10to36(i), Mid("0" & Hex(i), Len(Hex(i)))) & + " " & WriteDecimalWithDot(hSTOP(i) / 10000) & vbCrLf + Next + For i = 1 To UBound(hSCROLL) + xStrHeader &= "#SCROLL" & + C10to36(i) & " " & WriteDecimalWithDot(hSCROLL(i) / 10000) & vbCrLf + Next + + Return xStrHeader + End Function + + Private Sub GetMeasureLimits(MeasureIndex As Integer, ByRef LowerLimit As Integer, ByRef UpperLimit As Integer) + Dim NoteCount = UBound(Notes) + LowerLimit = 0 + + For i = 1 To NoteCount 'Collect Ks in the same measure + If MeasureAtDisplacement(Notes(i).VPosition) >= MeasureIndex Then + LowerLimit = i + Exit For + End If 'Lower limit found + Next + + UpperLimit = 0 + + For i = LowerLimit To NoteCount + If MeasureAtDisplacement(Notes(i).VPosition) > MeasureIndex Then + UpperLimit = i + Exit For 'Upper limit found + End If + Next + + If UpperLimit < LowerLimit Then UpperLimit = NoteCount + 1 + End Sub + + Private Function GenerateKeyTracks(MeasureIndex As Integer, ByRef hasOverlapping As Boolean, NotesInMeasure() As Note, ByRef xprevNotes() As Note) As String + Dim CurrentBMSChannel As String + Dim Ret As String = "" + + For Each CurrentBMSChannel In BMSChannelList 'Start rendering other notes + Dim relativeMeasurePos(-1) 'Ks in the same column + Dim NoteStrings(-1) 'Ks in the same column + + ' Background tracks take care of this. + If CurrentBMSChannel = "01" Then Continue For + + + For NoteIndex = 0 To UBound(NotesInMeasure) 'Find Ks in the same column (xI4 is TK index) + + Dim currentNote As Note = NotesInMeasure(NoteIndex) + If GetBMSChannelBy(currentNote) = CurrentBMSChannel Then + + ReDim Preserve relativeMeasurePos(UBound(relativeMeasurePos) + 1) + ReDim Preserve NoteStrings(UBound(NoteStrings) + 1) + relativeMeasurePos(UBound(relativeMeasurePos)) = currentNote.VPosition - MeasureBottom(MeasureAtDisplacement(currentNote.VPosition)) + If relativeMeasurePos(UBound(relativeMeasurePos)) < 0 Then relativeMeasurePos(UBound(relativeMeasurePos)) = 0 + + If CurrentBMSChannel = "03" Then 'If integer bpm + NoteStrings(UBound(NoteStrings)) = Mid("0" & Hex(currentNote.Value \ 10000), Len(Hex(currentNote.Value \ 10000))) + ElseIf CurrentBMSChannel = "08" Then 'If bpm requires declaration + Dim BpmIndex + For BpmIndex = 1 To UBound(hBPM) ' find BPM value in existing array + If currentNote.Value = hBPM(BpmIndex) Then Exit For + Next + If BpmIndex > UBound(hBPM) Then ' Didn't find it, add it + ReDim Preserve hBPM(UBound(hBPM) + 1) + hBPM(UBound(hBPM)) = currentNote.Value + End If + NoteStrings(UBound(NoteStrings)) = IIf(BPMx1296, C10to36(BpmIndex), Mid("0" & Hex(BpmIndex), Len(Hex(BpmIndex)))) + ElseIf CurrentBMSChannel = "09" Then 'If STOP + Dim StopIndex + For StopIndex = 1 To UBound(hSTOP) ' find STOP value in existing array + If currentNote.Value = hSTOP(StopIndex) Then Exit For + Next + + If StopIndex > UBound(hSTOP) Then ' Didn't find it, add it + ReDim Preserve hSTOP(UBound(hSTOP) + 1) + hSTOP(UBound(hSTOP)) = currentNote.Value + End If + NoteStrings(UBound(NoteStrings)) = IIf(STOPx1296, C10to36(StopIndex), Mid("0" & Hex(StopIndex), Len(Hex(StopIndex)))) + ElseIf CurrentBMSChannel = "SC" Then 'If SCROLL + Dim ScrollIndex + For ScrollIndex = 1 To UBound(hSCROLL) ' find SCROLL value in existing array + If currentNote.Value = hSCROLL(ScrollIndex) Then Exit For + Next + + If ScrollIndex > UBound(hSCROLL) Then ' Didn't find it, add it + ReDim Preserve hSCROLL(UBound(hSCROLL) + 1) + hSCROLL(UBound(hSCROLL)) = currentNote.Value + End If + NoteStrings(UBound(NoteStrings)) = C10to36(ScrollIndex) + Else + NoteStrings(UBound(NoteStrings)) = C10to36(currentNote.Value \ 10000) + End If + End If + Next + + If relativeMeasurePos.Length = 0 Then Continue For + + Dim xGCD As Double = MeasureLength(MeasureIndex) + For i = 0 To UBound(relativeMeasurePos) 'find greatest common divisor + If relativeMeasurePos(i) > 0 Then xGCD = GCD(xGCD, relativeMeasurePos(i)) + Next + + Dim xStrKey() As String + ReDim xStrKey(CInt(MeasureLength(MeasureIndex) / xGCD) - 1) + For i = 0 To UBound(xStrKey) 'assign 00 to all keys + xStrKey(i) = "00" + Next + + For i = 0 To UBound(relativeMeasurePos) 'assign K texts + If CInt(relativeMeasurePos(i) / xGCD) > UBound(xStrKey) Then + ReDim Preserve xprevNotes(UBound(xprevNotes) + 1) + With xprevNotes(UBound(xprevNotes)) + .ColumnIndex = BMSChannelToColumn(BMSChannelList(CurrentBMSChannel)) + .LongNote = IsChannelLongNote(BMSChannelList(CurrentBMSChannel)) + .Hidden = IsChannelHidden(BMSChannelList(CurrentBMSChannel)) + .VPosition = MeasureBottom(MeasureIndex) + .Value = C36to10(NoteStrings(i)) + End With + If BMSChannelList(CurrentBMSChannel) = "08" Then _ + xprevNotes(UBound(xprevNotes)).Value = IIf(BPMx1296, hBPM(C36to10(NoteStrings(i))), hBPM(Convert.ToInt32(NoteStrings(i), 16))) + If BMSChannelList(CurrentBMSChannel) = "09" Then _ + xprevNotes(UBound(xprevNotes)).Value = IIf(STOPx1296, hSTOP(C36to10(NoteStrings(i))), hSTOP(Convert.ToInt32(NoteStrings(i), 16))) + If BMSChannelList(CurrentBMSChannel) = "SC" Then _ + xprevNotes(UBound(xprevNotes)).Value = hSCROLL(C36to10(NoteStrings(i))) + Continue For + End If + If xStrKey(CInt(relativeMeasurePos(i) / xGCD)) <> "00" Then + hasOverlapping = True + End If + + xStrKey(CInt(relativeMeasurePos(i) / xGCD)) = NoteStrings(i) + Next + + Ret &= "#" & Add3Zeros(MeasureIndex) & CurrentBMSChannel & ":" & Join(xStrKey, "") & vbCrLf + Next + + Return Ret + End Function + + Private Function GenerateBackgroundTracks(MeasureIndex As Integer, ByRef hasOverlapping As Boolean, NotesInMeasure() As Note, GreatestColumn As Integer, ByRef xprevNotes() As Note) As String + Dim relativeNotePositions() As Double 'Ks in the same column + Dim noteStrings() As String 'Ks in the same column + Dim Ret As String = "" + + For ColIndex = niB To GreatestColumn 'Start rendering B notes (xI3 is columnindex) + ReDim relativeNotePositions(-1) 'Ks in the same column + ReDim noteStrings(-1) 'Ks in the same column + + For I = 0 To UBound(NotesInMeasure) 'Find Ks in the same column (xI4 is TK index) + If NotesInMeasure(I).ColumnIndex = ColIndex Then + + ReDim Preserve relativeNotePositions(UBound(relativeNotePositions) + 1) + ReDim Preserve noteStrings(UBound(noteStrings) + 1) + + relativeNotePositions(UBound(relativeNotePositions)) = NotesInMeasure(I).VPosition - MeasureBottom(MeasureAtDisplacement(NotesInMeasure(I).VPosition)) + If relativeNotePositions(UBound(relativeNotePositions)) < 0 Then relativeNotePositions(UBound(relativeNotePositions)) = 0 + + noteStrings(UBound(noteStrings)) = C10to36(NotesInMeasure(I).Value \ 10000) + End If + Next + + Dim xGCD As Double = MeasureLength(MeasureIndex) + For i = 0 To UBound(relativeNotePositions) 'find greatest common divisor + If relativeNotePositions(i) > 0 Then xGCD = GCD(xGCD, relativeNotePositions(i)) + Next + + Dim xStrKey(CInt(MeasureLength(MeasureIndex) / xGCD) - 1) As String + For i = 0 To UBound(xStrKey) 'assign 00 to all keys + xStrKey(i) = "00" + Next + + For i = 0 To UBound(relativeNotePositions) 'assign K texts + If CInt(relativeNotePositions(i) / xGCD) > UBound(xStrKey) Then + + ReDim Preserve xprevNotes(UBound(xprevNotes) + 1) + + With xprevNotes(UBound(xprevNotes)) + .ColumnIndex = ColIndex + .VPosition = MeasureBottom(MeasureIndex) + .Value = C36to10(noteStrings(i)) + End With + + Continue For + End If + If xStrKey(CInt(relativeNotePositions(i) / xGCD)) <> "00" Then hasOverlapping = True + xStrKey(CInt(relativeNotePositions(i) / xGCD)) = noteStrings(i) + Next + + Ret &= "#" & Add3Zeros(MeasureIndex) & "01:" & Join(xStrKey, "") & vbCrLf + Next + + Return Ret + End Function + + Private Function OpenSM(ByVal xStrAll As String) As Boolean + KMouseOver = -1 + + Dim xStrLine() As String = Split(xStrAll, vbCrLf) + 'Remove comments starting with "//" + For xI1 As Integer = 0 To UBound(xStrLine) + If xStrLine(xI1).Contains("//") Then xStrLine(xI1) = Mid(xStrLine(xI1), 1, InStr(xStrLine(xI1), "//") - 1) + Next + + xStrAll = Join(xStrLine, "") + xStrLine = Split(xStrAll, ";") + + Dim iDiff As Integer = 0 + Dim iCurrentDiff As Integer = 0 + Dim xTempSplit() As String = Split(xStrAll, "#NOTES:") + Dim xTempStr() As String = {} + If xTempSplit.Length > 2 Then + ReDim Preserve xTempStr(UBound(xTempSplit) - 1) + For xI1 As Integer = 1 To UBound(xTempSplit) + xTempSplit(xI1) = Mid(xTempSplit(xI1), InStr(xTempSplit(xI1), ":") + 1) + xTempSplit(xI1) = Mid(xTempSplit(xI1), InStr(xTempSplit(xI1), ":") + 1).Trim + xTempStr(xI1 - 1) = Mid(xTempSplit(xI1), 1, InStr(xTempSplit(xI1), ":") - 1) + xTempSplit(xI1) = Mid(xTempSplit(xI1), InStr(xTempSplit(xI1), ":") + 1).Trim + xTempStr(xI1 - 1) &= " : " & Mid(xTempSplit(xI1), 1, InStr(xTempSplit(xI1), ":") - 1) + Next + + Dim xDiag As New dgImportSM(xTempStr) + If xDiag.ShowDialog() = Windows.Forms.DialogResult.Cancel Then Return True + iDiff = xDiag.iResult + End If + + Dim sL As String + ReDim Notes(0) + ReDim mColumn(999) + ReDim hWAV(1295) + ReDim hBPM(1295) 'x10000 + ReDim hSTOP(1295) + ReDim hSCROLL(1295) + Me.InitializeNewBMS() + + With Notes(0) + .ColumnIndex = niBPM + .VPosition = -1 + '.LongNote = False + '.Selected = False + .Value = 1200000 + End With + + For Each sL In xStrLine + If UCase(sL).StartsWith("#TITLE:") Then + THTitle.Text = Mid(sL, Len("#TITLE:") + 1) + + ElseIf UCase(sL).StartsWith("#SUBTITLE:") Then + If Not UCase(sL).EndsWith("#SUBTITLE:") Then THTitle.Text &= " " & Mid(sL, Len("#SUBTITLE:") + 1) + + ElseIf UCase(sL).StartsWith("#ARTIST:") Then + THArtist.Text = Mid(sL, Len("#ARTIST:") + 1) + + ElseIf UCase(sL).StartsWith("#GENRE:") Then + THGenre.Text = Mid(sL, Len("#GENRE:") + 1) + + ElseIf UCase(sL).StartsWith("#BPMS:") Then + Dim xLine As String = Mid(sL, Len("#BPMS:") + 1) + Dim xItem() As String = Split(xLine, ",") + + Dim xVal1 As Double + Dim xVal2 As Double + + For xI1 As Integer = 0 To UBound(xItem) + xVal1 = Mid(xItem(xI1), 1, InStr(xItem(xI1), "=") - 1) + xVal2 = Mid(xItem(xI1), InStr(xItem(xI1), "=") + 1) + + If xVal1 <> 0 Then + ReDim Preserve Notes(Notes.Length) + With Notes(UBound(Notes)) + .ColumnIndex = niBPM + '.LongNote = False + '.Hidden = False + '.Selected = False + .VPosition = xVal1 * 48 + .Value = xVal2 * 10000 + End With + Else + Notes(0).Value = xVal2 * 10000 + End If + Next + + ElseIf UCase(sL).StartsWith("#NOTES:") Then + If iCurrentDiff <> iDiff Then iCurrentDiff += 1 : GoTo Jump1 + + iCurrentDiff += 1 + Dim xLine As String = Mid(sL, Len("#NOTES:") + 1) + Dim xItem() As String = Split(xLine, ":") + For xI1 As Integer = 0 To UBound(xItem) + xItem(xI1) = xItem(xI1).Trim + Next + + If xItem.Length <> 6 Then GoTo Jump1 + + THPlayLevel.Text = xItem(3) + + Dim xM() As String = Split(xItem(5), ",") + For xI1 As Integer = 0 To UBound(xM) + xM(xI1) = xM(xI1).Trim + Next + + For xI1 As Integer = 0 To UBound(xM) + For xI2 As Integer = 0 To Len(xM(xI1)) - 1 Step 4 + If xM(xI1)(xI2) <> "0" Then + ReDim Preserve Notes(Notes.Length) + With Notes(UBound(Notes)) + .ColumnIndex = niA1 + .LongNote = xM(xI1)(xI2) = "2" Or xM(xI1)(xI2) = "3" + '.Hidden = False + '.Selected = False + .VPosition = (192 \ (Len(xM(xI1)) \ 4)) * xI2 \ 4 + xI1 * 192 + .Value = 10000 + End With + End If + If xM(xI1)(xI2 + 1) <> "0" Then + ReDim Preserve Notes(Notes.Length) + With Notes(UBound(Notes)) + .ColumnIndex = niA2 + .LongNote = xM(xI1)(xI2 + 1) = "2" Or xM(xI1)(xI2 + 1) = "3" + '.Hidden = False + '.Selected = False + .VPosition = (192 \ (Len(xM(xI1)) \ 4)) * xI2 \ 4 + xI1 * 192 + .Value = 10000 + End With + End If + If xM(xI1)(xI2 + 2) <> "0" Then + ReDim Preserve Notes(Notes.Length) + With Notes(UBound(Notes)) + .ColumnIndex = niA3 + .LongNote = xM(xI1)(xI2 + 2) = "2" Or xM(xI1)(xI2 + 2) = "3" + '.Hidden = False + '.Selected = False + .VPosition = (192 \ (Len(xM(xI1)) \ 4)) * xI2 \ 4 + xI1 * 192 + .Value = 10000 + End With + End If + If xM(xI1)(xI2 + 3) <> "0" Then + ReDim Preserve Notes(Notes.Length) + With Notes(UBound(Notes)) + .ColumnIndex = niA4 + .LongNote = xM(xI1)(xI2 + 3) = "2" Or xM(xI1)(xI2 + 3) = "3" + '.Hidden = False + '.Selected = False + .VPosition = (192 \ (Len(xM(xI1)) \ 4)) * xI2 \ 4 + xI1 * 192 + .Value = 10000 + End With + End If + Next + Next +Jump1: + End If + Next + + If NTInput Then ConvertBMSE2NT() + + LWAV.Visible = False + LWAV.Items.Clear() + For xI1 As Integer = 1 To 1295 + LWAV.Items.Add(C10to36(xI1) & ": " & hWAV(xI1)) + Next + LWAV.SelectedIndex = 0 + LWAV.Visible = True + + THBPM.Value = Notes(0).Value / 10000 + SortByVPositionQuick(0, UBound(Notes)) + UpdatePairing() + CalculateTotalPlayableNotes() + CalculateGreatestVPosition() + RefreshPanelAll() + POStatusRefresh() + Return False + End Function + + ''' Do not clear Undo. + Private Sub OpeniBMSC(ByVal Path As String) + KMouseOver = -1 + + Dim br As New BinaryReader(New FileStream(Path, FileMode.Open, FileAccess.Read), System.Text.Encoding.Unicode) + + If br.ReadInt32 <> &H534D4269 Then GoTo EndOfSub + If br.ReadByte <> CByte(&H43) Then GoTo EndOfSub + Dim xMajor As Integer = br.ReadByte + Dim xMinor As Integer = br.ReadByte + Dim xBuild As Integer = br.ReadByte + + ClearUndo() + ReDim Notes(0) + ReDim mColumn(999) + ReDim hWAV(1295) + Me.InitializeNewBMS() + Me.InitializeOpenBMS() + + With Notes(0) + .ColumnIndex = niBPM + .VPosition = -1 + '.LongNote = False + '.Selected = False + .Value = 1200000 + End With + + Do Until br.BaseStream.Position >= br.BaseStream.Length + Dim BlockID As Integer = br.ReadInt32() + + Select Case BlockID + + Case &H66657250 'Preferences + Dim xPref As Integer = br.ReadInt32 + + NTInput = xPref And &H1 + TBNTInput.Checked = NTInput + mnNTInput.Checked = NTInput + POBLong.Enabled = Not NTInput + POBLongShort.Enabled = Not NTInput + + ErrorCheck = xPref And &H2 + TBErrorCheck.Checked = ErrorCheck + TBErrorCheck_Click(TBErrorCheck, New System.EventArgs) + + PreviewOnClick = xPref And &H4 + TBPreviewOnClick.Checked = PreviewOnClick + TBPreviewOnClick_Click(TBPreviewOnClick, New System.EventArgs) + + ShowFileName = xPref And &H8 + TBShowFileName.Checked = ShowFileName + TBShowFileName_Click(TBShowFileName, New System.EventArgs) + + mnSMenu.Checked = xPref And &H100 + mnSTB.Checked = xPref And &H200 + mnSOP.Checked = xPref And &H400 + mnSStatus.Checked = xPref And &H800 + mnSLSplitter.Checked = xPref And &H1000 + mnSRSplitter.Checked = xPref And &H2000 + + CGShow.Checked = xPref And &H4000 + CGShowS.Checked = xPref And &H8000 + CGShowBG.Checked = xPref And &H10000 + CGShowM.Checked = xPref And &H20000 + CGShowMB.Checked = xPref And &H40000 + CGShowV.Checked = xPref And &H80000 + CGShowC.Checked = xPref And &H100000 + CGBLP.Checked = xPref And &H200000 + CGSTOP.Checked = xPref And &H400000 + CGSCROLL.Checked = xPref And &H20000000 + CGBPM.Checked = xPref And &H800000 + + CGSnap.Checked = xPref And &H1000000 + CGDisableVertical.Checked = xPref And &H2000000 + cVSLockL.Checked = xPref And &H4000000 + cVSLock.Checked = xPref And &H8000000 + cVSLockR.Checked = xPref And &H10000000 + + CGDivide.Value = br.ReadInt32 + CGSub.Value = br.ReadInt32 + gSlash = br.ReadInt32 + CGHeight.Value = br.ReadSingle + CGWidth.Value = br.ReadSingle + CGB.Value = br.ReadInt32 + + Case &H64616548 'Header + THTitle.Text = br.ReadString + THArtist.Text = br.ReadString + THGenre.Text = br.ReadString + Notes(0).Value = br.ReadInt64 + Dim xPlayerRank As Integer = br.ReadByte + THPlayLevel.Text = br.ReadString + + CHPlayer.SelectedIndex = xPlayerRank And &HF + CHRank.SelectedIndex = xPlayerRank >> 4 + + THSubTitle.Text = br.ReadString + THSubArtist.Text = br.ReadString + 'THMaker.Text = br.ReadString + THStageFile.Text = br.ReadString + THBanner.Text = br.ReadString + THBackBMP.Text = br.ReadString + 'THMidiFile.Text = br.ReadString + CHDifficulty.SelectedIndex = br.ReadByte + THExRank.Text = br.ReadString + THTotal.Text = br.ReadString + 'THVolWAV.Text = br.ReadString + THComment.Text = br.ReadString + 'THLnType.Text = br.ReadString + CHLnObj.SelectedIndex = br.ReadInt16 + + Case &H564157 'WAV List + Dim xWAVOptions As Integer = br.ReadByte + WAVMultiSelect = xWAVOptions And &H1 + CWAVMultiSelect.Checked = WAVMultiSelect + CWAVMultiSelect_CheckedChanged(CWAVMultiSelect, New EventArgs) + WAVChangeLabel = xWAVOptions And &H2 + CWAVChangeLabel.Checked = WAVChangeLabel + CWAVChangeLabel_CheckedChanged(CWAVChangeLabel, New EventArgs) + + Dim xWAVCount As Integer = br.ReadInt32 + For xxi As Integer = 1 To xWAVCount + Dim xI As Integer = br.ReadInt16 + hWAV(xI) = br.ReadString + Next + + Case &H74616542 'Beat + nBeatN.Value = br.ReadInt16 + nBeatD.Value = br.ReadInt16 + 'nBeatD.SelectedIndex = br.ReadByte + + Dim xBeatChangeMode As Integer = br.ReadByte + Dim xBeatChangeList As RadioButton() = {CBeatPreserve, CBeatMeasure, CBeatCut, CBeatScale} + xBeatChangeList(xBeatChangeMode).Checked = True + CBeatPreserve_Click(xBeatChangeList(xBeatChangeMode), New System.EventArgs) + + Dim xBeatCount As Integer = br.ReadInt32 + For xxi As Integer = 1 To xBeatCount + Dim xIndex As Integer = br.ReadInt16 + MeasureLength(xIndex) = br.ReadDouble + Dim xRatio As Double = MeasureLength(xIndex) / 192.0R + Dim xxD As Long = GetDenominator(xRatio) + LBeat.Items(xIndex) = Add3Zeros(xIndex) & ": " & xRatio & IIf(xxD > 10000, "", " ( " & CLng(xRatio * xxD) & " / " & xxD & " ) ") + Next + + Case &H6E707845 'Expansion Code + TExpansion.Text = br.ReadString + + Case &H65746F4E 'Note + Dim xNoteUbound As Integer = br.ReadInt32 + ReDim Preserve Notes(xNoteUbound) + For i As Integer = 1 To UBound(Notes) + Notes(i).FromBinReader(br) + Next + + Case &H6F646E55 'Undo / Redo Commands + Dim URCount As Integer = br.ReadInt32 'Should be 100 + sI = br.ReadInt32 + + For xI As Integer = 0 To 99 + Dim xUndoCount As Integer = br.ReadInt32 + Dim xBaseUndo As New UndoRedo.Void + Dim xIteratorUndo As UndoRedo.LinkedURCmd = xBaseUndo + + For xxj As Integer = 1 To xUndoCount + Dim xByteLen As Integer = br.ReadInt32 + Dim xByte() As Byte = br.ReadBytes(xByteLen) + xIteratorUndo.Next = UndoRedo.fromBytes(xByte) + xIteratorUndo = xIteratorUndo.Next + Next + + sUndo(xI) = xBaseUndo.Next + + Dim xRedoCount As Integer = br.ReadInt32 + Dim xBaseRedo As New UndoRedo.Void + Dim xIteratorRedo As UndoRedo.LinkedURCmd = xBaseRedo + For xxj As Integer = 1 To xRedoCount + Dim xByteLen As Integer = br.ReadInt32 + Dim xByte() As Byte = br.ReadBytes(xByteLen) + xIteratorRedo.Next = UndoRedo.fromBytes(xByte) + xIteratorRedo = xIteratorRedo.Next + Next + sRedo(xI) = xBaseRedo.Next + Next + + End Select + Loop + +EndOfSub: + br.Close() + + TBUndo.Enabled = sUndo(sI).ofType <> UndoRedo.opNoOperation + TBRedo.Enabled = sRedo(sIA).ofType <> UndoRedo.opNoOperation + mnUndo.Enabled = sUndo(sI).ofType <> UndoRedo.opNoOperation + mnRedo.Enabled = sRedo(sIA).ofType <> UndoRedo.opNoOperation + + LWAV.Visible = False + LWAV.Items.Clear() + For xI1 As Integer = 1 To 1295 + LWAV.Items.Add(C10to36(xI1) & ": " & hWAV(xI1)) + Next + LWAV.SelectedIndex = 0 + LWAV.Visible = True + + THBPM.Value = Notes(0).Value / 10000 + SortByVPositionQuick(0, UBound(Notes)) + UpdatePairing() + UpdateMeasureBottom() + CalculateTotalPlayableNotes() + CalculateGreatestVPosition() + RefreshPanelAll() + POStatusRefresh() + End Sub + + Private Sub SaveiBMSC(ByVal Path As String) + CalculateGreatestVPosition() + SortByVPositionInsertion() + UpdatePairing() + + Try + + Dim bw As New BinaryWriter(New IO.FileStream(Path, FileMode.Create), System.Text.Encoding.Unicode) + + 'bw.Write("iBMSC".ToCharArray) + bw.Write(&H534D4269) + bw.Write(CByte(&H43)) + bw.Write(CByte(My.Application.Info.Version.Major)) + bw.Write(CByte(My.Application.Info.Version.Minor)) + bw.Write(CByte(My.Application.Info.Version.Build)) + + 'Preferences + 'bw.Write("Pref".ToCharArray) + bw.Write(&H66657250) + Dim xPref As Integer = 0 + If NTInput Then xPref = xPref Or &H1 + If ErrorCheck Then xPref = xPref Or &H2 + If PreviewOnClick Then xPref = xPref Or &H4 + If ShowFileName Then xPref = xPref Or &H8 + If mnSMenu.Checked Then xPref = xPref Or &H100 + If mnSTB.Checked Then xPref = xPref Or &H200 + If mnSOP.Checked Then xPref = xPref Or &H400 + If mnSStatus.Checked Then xPref = xPref Or &H800 + If mnSLSplitter.Checked Then xPref = xPref Or &H1000 + If mnSRSplitter.Checked Then xPref = xPref Or &H2000 + If gShowGrid Then xPref = xPref Or &H4000 + If gShowSubGrid Then xPref = xPref Or &H8000 + If gShowBG Then xPref = xPref Or &H10000 + If gShowMeasureNumber Then xPref = xPref Or &H20000 + If gShowMeasureBar Then xPref = xPref Or &H40000 + If gShowVerticalLine Then xPref = xPref Or &H80000 + If gShowC Then xPref = xPref Or &H100000 + If gDisplayBGAColumn Then xPref = xPref Or &H200000 + If gSTOP Then xPref = xPref Or &H400000 + If gBPM Then xPref = xPref Or &H800000 + If gSCROLL Then xPref = xPref Or &H20000000 + If gSnap Then xPref = xPref Or &H1000000 + If DisableVerticalMove Then xPref = xPref Or &H2000000 + If spLock(0) Then xPref = xPref Or &H4000000 + If spLock(1) Then xPref = xPref Or &H8000000 + If spLock(2) Then xPref = xPref Or &H10000000 + bw.Write(xPref) + bw.Write(BitConverter.GetBytes(gDivide)) + bw.Write(BitConverter.GetBytes(gSub)) + bw.Write(BitConverter.GetBytes(gSlash)) + bw.Write(BitConverter.GetBytes(gxHeight)) + bw.Write(BitConverter.GetBytes(gxWidth)) + bw.Write(BitConverter.GetBytes(gColumns)) + + 'Header + 'bw.Write("Head".ToCharArray) + bw.Write(&H64616548) + bw.Write(THTitle.Text) + bw.Write(THArtist.Text) + bw.Write(THGenre.Text) + bw.Write(Notes(0).Value) + Dim xPlayer As Integer = CHPlayer.SelectedIndex + Dim xRank As Integer = CHRank.SelectedIndex << 4 + bw.Write(CByte(xPlayer Or xRank)) + bw.Write(THPlayLevel.Text) + + bw.Write(THSubTitle.Text) + bw.Write(THSubArtist.Text) + 'bw.Write(THMaker.Text) + bw.Write(THStageFile.Text) + bw.Write(THBanner.Text) + bw.Write(THBackBMP.Text) + 'bw.Write(THMidiFile.Text) + bw.Write(CByte(CHDifficulty.SelectedIndex)) + bw.Write(THExRank.Text) + bw.Write(THTotal.Text) + 'bw.Write(THVolWAV.Text) + bw.Write(THComment.Text) + 'bw.Write(THLnType.Text) + bw.Write(CShort(CHLnObj.SelectedIndex)) + + 'Wav List + 'bw.Write(("WAV" & vbNullChar).ToCharArray) + bw.Write(&H564157) + + Dim xWAVOptions As Integer = 0 + If WAVMultiSelect Then xWAVOptions = xWAVOptions Or &H1 + If WAVChangeLabel Then xWAVOptions = xWAVOptions Or &H2 + bw.Write(CByte(xWAVOptions)) + + Dim xWAVCount As Integer = 0 + For i As Integer = 1 To UBound(hWAV) + If hWAV(i) <> "" Then xWAVCount += 1 + Next + bw.Write(xWAVCount) + + For i As Integer = 1 To UBound(hWAV) + If hWAV(i) = "" Then Continue For + bw.Write(CShort(i)) + bw.Write(hWAV(i)) + Next + + 'Beat + 'bw.Write("Beat".ToCharArray) + bw.Write(&H74616542) + 'Dim xNumerator As Short = nBeatN.Value + 'Dim xDenominator As Short = nBeatD.Value + 'Dim xBeatChangeMode As Byte = BeatChangeMode + bw.Write(CShort(nBeatN.Value)) + bw.Write(CShort(nBeatD.Value)) + bw.Write(CByte(BeatChangeMode)) + + Dim xBeatCount As Integer = 0 + For i As Integer = 0 To UBound(MeasureLength) + If MeasureLength(i) <> 192.0R Then xBeatCount += 1 + Next + bw.Write(xBeatCount) + + For i As Integer = 0 To UBound(MeasureLength) + If MeasureLength(i) = 192.0R Then Continue For + bw.Write(CShort(i)) + bw.Write(MeasureLength(i)) + Next + + 'Expansion Code + 'bw.Write("Expn".ToCharArray) + bw.Write(&H6E707845) + bw.Write(TExpansion.Text) + + 'Note + 'bw.Write("Note".ToCharArray) + bw.Write(&H65746F4E) + bw.Write(UBound(Notes)) + For i As Integer = 1 To UBound(Notes) + Notes(i).WriteBinWriter(bw) + Next + + 'Undo / Redo Commands + 'bw.Write("Undo".ToCharArray) + bw.Write(&H6F646E55) + bw.Write(100) + bw.Write(sI) + + For i As Integer = 0 To 99 + 'UndoCommandsCount + Dim countUndo As Integer = 0 + Dim pUndo As UndoRedo.LinkedURCmd = sUndo(i) + While pUndo IsNot Nothing + countUndo += 1 + pUndo = pUndo.Next + End While + bw.Write(countUndo) + + 'UndoCommands + pUndo = sUndo(i) + For xxi As Integer = 1 To countUndo + Dim bUndo() As Byte = pUndo.toBytes + bw.Write(bUndo.Length) 'Length + bw.Write(bUndo) 'Command + pUndo = pUndo.Next + Next + + 'RedoCommandsCount + Dim countRedo As Integer = 0 + Dim pRedo As UndoRedo.LinkedURCmd = sRedo(i) + While pRedo IsNot Nothing + countRedo += 1 + pRedo = pRedo.Next + End While + bw.Write(countRedo) + + 'RedoCommands + pRedo = sRedo(i) + For xxi As Integer = 1 To countRedo + Dim bRedo() As Byte = pRedo.toBytes + bw.Write(bRedo.Length) + bw.Write(bRedo) + pRedo = pRedo.Next + Next + Next + + bw.Close() + + Catch ex As Exception + + MsgBox(ex.Message) + + End Try + + End Sub + +End Class diff --git a/MainWindow.designer.vb b/MainWindow.designer.vb new file mode 100644 index 000000000..9127b201a --- /dev/null +++ b/MainWindow.designer.vb @@ -0,0 +1,4577 @@ + +Partial Class MainWindow + Inherits System.Windows.Forms.Form + + 'Form 重写 Dispose,以清理组件列表。 + + Protected Overrides Sub Dispose(ByVal disposing As Boolean) + If disposing AndAlso components IsNot Nothing Then + components.Dispose() + End If + MyBase.Dispose(disposing) + End Sub + + 'Windows 窗体设计器所必需的 + Private components As System.ComponentModel.IContainer + + '注意: 以下过程是 Windows 窗体设计器所必需的 + '可以使用 Windows 窗体设计器修改它。 + '不要使用代码编辑器修改它。 + + Private Sub InitializeComponent() + Me.components = New System.ComponentModel.Container() + Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(MainWindow)) + Me.cmnLanguage = New System.Windows.Forms.ContextMenuStrip(Me.components) + Me.TBLangDef = New System.Windows.Forms.ToolStripMenuItem() + Me.TBLangRefresh = New System.Windows.Forms.ToolStripMenuItem() + Me.ToolStripSeparator9 = New System.Windows.Forms.ToolStripSeparator() + Me.TBLanguage = New System.Windows.Forms.ToolStripDropDownButton() + Me.mnLanguage = New System.Windows.Forms.ToolStripMenuItem() + Me.cmnTheme = New System.Windows.Forms.ContextMenuStrip(Me.components) + Me.TBThemeDef = New System.Windows.Forms.ToolStripMenuItem() + Me.TBThemeSave = New System.Windows.Forms.ToolStripMenuItem() + Me.TBThemeRefresh = New System.Windows.Forms.ToolStripMenuItem() + Me.TBThemeLoadComptability = New System.Windows.Forms.ToolStripMenuItem() + Me.ToolStripSeparator6 = New System.Windows.Forms.ToolStripSeparator() + Me.mnTheme = New System.Windows.Forms.ToolStripMenuItem() + Me.TBTheme = New System.Windows.Forms.ToolStripDropDownButton() + Me.Timer1 = New System.Windows.Forms.Timer(Me.components) + Me.Menu1 = New System.Windows.Forms.ContextMenuStrip(Me.components) + Me.MInsert = New System.Windows.Forms.ToolStripMenuItem() + Me.MRemove = New System.Windows.Forms.ToolStripMenuItem() + Me.AutoSaveTimer = New System.Windows.Forms.Timer(Me.components) + Me.mnMain = New System.Windows.Forms.MenuStrip() + Me.mnFile = New System.Windows.Forms.ToolStripMenuItem() + Me.mnNew = New System.Windows.Forms.ToolStripMenuItem() + Me.mnOpen = New System.Windows.Forms.ToolStripMenuItem() + Me.mnImportSM = New System.Windows.Forms.ToolStripMenuItem() + Me.mnImportIBMSC = New System.Windows.Forms.ToolStripMenuItem() + Me.ToolStripSeparator14 = New System.Windows.Forms.ToolStripSeparator() + Me.mnSave = New System.Windows.Forms.ToolStripMenuItem() + Me.mnSaveAs = New System.Windows.Forms.ToolStripMenuItem() + Me.mnExport = New System.Windows.Forms.ToolStripMenuItem() + Me.ToolStripSeparator15 = New System.Windows.Forms.ToolStripSeparator() + Me.mnOpenR0 = New System.Windows.Forms.ToolStripMenuItem() + Me.mnOpenR1 = New System.Windows.Forms.ToolStripMenuItem() + Me.mnOpenR2 = New System.Windows.Forms.ToolStripMenuItem() + Me.mnOpenR3 = New System.Windows.Forms.ToolStripMenuItem() + Me.mnOpenR4 = New System.Windows.Forms.ToolStripMenuItem() + Me.ToolStripSeparator16 = New System.Windows.Forms.ToolStripSeparator() + Me.mnQuit = New System.Windows.Forms.ToolStripMenuItem() + Me.mnEdit = New System.Windows.Forms.ToolStripMenuItem() + Me.mnUndo = New System.Windows.Forms.ToolStripMenuItem() + Me.mnRedo = New System.Windows.Forms.ToolStripMenuItem() + Me.ToolStripSeparator17 = New System.Windows.Forms.ToolStripSeparator() + Me.mnCut = New System.Windows.Forms.ToolStripMenuItem() + Me.mnCopy = New System.Windows.Forms.ToolStripMenuItem() + Me.mnPaste = New System.Windows.Forms.ToolStripMenuItem() + Me.mnDelete = New System.Windows.Forms.ToolStripMenuItem() + Me.mnSelectAll = New System.Windows.Forms.ToolStripMenuItem() + Me.mnGotoMeasure = New System.Windows.Forms.ToolStripMenuItem() + Me.ToolStripSeparator18 = New System.Windows.Forms.ToolStripSeparator() + Me.mnFind = New System.Windows.Forms.ToolStripMenuItem() + Me.mnStatistics = New System.Windows.Forms.ToolStripMenuItem() + Me.mnStatisticsAdvanced = New System.Windows.Forms.ToolStripMenuItem() + Me.ToolStripSeparator19 = New System.Windows.Forms.ToolStripSeparator() + Me.mnTimeSelect = New System.Windows.Forms.ToolStripMenuItem() + Me.mnSelect = New System.Windows.Forms.ToolStripMenuItem() + Me.mnWrite = New System.Windows.Forms.ToolStripMenuItem() + Me.ToolStripSeparator23 = New System.Windows.Forms.ToolStripSeparator() + Me.mnMyO2 = New System.Windows.Forms.ToolStripMenuItem() + Me.mnSys = New System.Windows.Forms.ToolStripMenuItem() + Me.mnSMenu = New System.Windows.Forms.ToolStripMenuItem() + Me.mnSTB = New System.Windows.Forms.ToolStripMenuItem() + Me.mnSOP = New System.Windows.Forms.ToolStripMenuItem() + Me.mnSStatus = New System.Windows.Forms.ToolStripMenuItem() + Me.mnSLSplitter = New System.Windows.Forms.ToolStripMenuItem() + Me.mnSRSplitter = New System.Windows.Forms.ToolStripMenuItem() + Me.ToolStripSeparator21 = New System.Windows.Forms.ToolStripSeparator() + Me.CGShow = New System.Windows.Forms.ToolStripMenuItem() + Me.CGShowS = New System.Windows.Forms.ToolStripMenuItem() + Me.CGShowBG = New System.Windows.Forms.ToolStripMenuItem() + Me.CGShowM = New System.Windows.Forms.ToolStripMenuItem() + Me.CGShowMB = New System.Windows.Forms.ToolStripMenuItem() + Me.CGShowV = New System.Windows.Forms.ToolStripMenuItem() + Me.CGShowC = New System.Windows.Forms.ToolStripMenuItem() + Me.ToolStripSeparator22 = New System.Windows.Forms.ToolStripSeparator() + Me.CGBPM = New System.Windows.Forms.ToolStripMenuItem() + Me.CGSTOP = New System.Windows.Forms.ToolStripMenuItem() + Me.CGSCROLL = New System.Windows.Forms.ToolStripMenuItem() + Me.CGBLP = New System.Windows.Forms.ToolStripMenuItem() + Me.mnOptions = New System.Windows.Forms.ToolStripMenuItem() + Me.mnNTInput = New System.Windows.Forms.ToolStripMenuItem() + Me.mnErrorCheck = New System.Windows.Forms.ToolStripMenuItem() + Me.mnPreviewOnClick = New System.Windows.Forms.ToolStripMenuItem() + Me.mnShowFileName = New System.Windows.Forms.ToolStripMenuItem() + Me.ToolStripSeparator20 = New System.Windows.Forms.ToolStripSeparator() + Me.mnGOptions = New System.Windows.Forms.ToolStripMenuItem() + Me.mnVOptions = New System.Windows.Forms.ToolStripMenuItem() + Me.mnVCOptions = New System.Windows.Forms.ToolStripMenuItem() + Me.mnPOptions = New System.Windows.Forms.ToolStripMenuItem() + Me.mnConversion = New System.Windows.Forms.ToolStripMenuItem() + Me.cmnConversion = New System.Windows.Forms.ContextMenuStrip(Me.components) + Me.POBLong = New System.Windows.Forms.ToolStripMenuItem() + Me.POBShort = New System.Windows.Forms.ToolStripMenuItem() + Me.POBLongShort = New System.Windows.Forms.ToolStripMenuItem() + Me.ToolStripSeparator10 = New System.Windows.Forms.ToolStripSeparator() + Me.POBHidden = New System.Windows.Forms.ToolStripMenuItem() + Me.POBVisible = New System.Windows.Forms.ToolStripMenuItem() + Me.POBHiddenVisible = New System.Windows.Forms.ToolStripMenuItem() + Me.ToolStripSeparator11 = New System.Windows.Forms.ToolStripSeparator() + Me.POBModify = New System.Windows.Forms.ToolStripMenuItem() + Me.POBMirror = New System.Windows.Forms.ToolStripMenuItem() + Me.POBFlip = New System.Windows.Forms.ToolStripMenuItem() + Me.POBRandom = New System.Windows.Forms.ToolStripMenuItem() + Me.POBSRandom = New System.Windows.Forms.ToolStripMenuItem() + Me.POBSort = New System.Windows.Forms.ToolStripMenuItem() + Me.mnPreview = New System.Windows.Forms.ToolStripMenuItem() + Me.mnPlayB = New System.Windows.Forms.ToolStripMenuItem() + Me.mnPlay = New System.Windows.Forms.ToolStripMenuItem() + Me.mnStop = New System.Windows.Forms.ToolStripMenuItem() + Me.POConvert = New System.Windows.Forms.ToolStripDropDownButton() + Me.TBMain = New System.Windows.Forms.ToolStrip() + Me.TBNew = New System.Windows.Forms.ToolStripButton() + Me.TBOpen = New System.Windows.Forms.ToolStripSplitButton() + Me.TBOpenR0 = New System.Windows.Forms.ToolStripMenuItem() + Me.TBOpenR1 = New System.Windows.Forms.ToolStripMenuItem() + Me.TBOpenR2 = New System.Windows.Forms.ToolStripMenuItem() + Me.TBOpenR3 = New System.Windows.Forms.ToolStripMenuItem() + Me.TBOpenR4 = New System.Windows.Forms.ToolStripMenuItem() + Me.ToolStripSeparator12 = New System.Windows.Forms.ToolStripSeparator() + Me.TBImportSM = New System.Windows.Forms.ToolStripMenuItem() + Me.TBImportIBMSC = New System.Windows.Forms.ToolStripMenuItem() + Me.TBSave = New System.Windows.Forms.ToolStripSplitButton() + Me.TBSaveAs = New System.Windows.Forms.ToolStripMenuItem() + Me.TBExport = New System.Windows.Forms.ToolStripMenuItem() + Me.ToolStripSeparator1 = New System.Windows.Forms.ToolStripSeparator() + Me.TBCut = New System.Windows.Forms.ToolStripButton() + Me.TBCopy = New System.Windows.Forms.ToolStripButton() + Me.TBPaste = New System.Windows.Forms.ToolStripButton() + Me.TBFind = New System.Windows.Forms.ToolStripButton() + Me.ToolStripSeparator24 = New System.Windows.Forms.ToolStripSeparator() + Me.TBStatistics = New System.Windows.Forms.ToolStripButton() + Me.TBMyO2 = New System.Windows.Forms.ToolStripButton() + Me.ToolStripSeparator4 = New System.Windows.Forms.ToolStripSeparator() + Me.TBErrorCheck = New System.Windows.Forms.ToolStripButton() + Me.TBPreviewOnClick = New System.Windows.Forms.ToolStripButton() + Me.TBShowFileName = New System.Windows.Forms.ToolStripButton() + Me.ToolStripSeparator8 = New System.Windows.Forms.ToolStripSeparator() + Me.TBNTInput = New System.Windows.Forms.ToolStripButton() + Me.TBWavIncrease = New System.Windows.Forms.ToolStripButton() + Me.ToolStripSeparator2 = New System.Windows.Forms.ToolStripSeparator() + Me.TBUndo = New System.Windows.Forms.ToolStripButton() + Me.TBRedo = New System.Windows.Forms.ToolStripButton() + Me.ToolStripSeparator5 = New System.Windows.Forms.ToolStripSeparator() + Me.TBTimeSelect = New System.Windows.Forms.ToolStripButton() + Me.TBSelect = New System.Windows.Forms.ToolStripButton() + Me.TBWrite = New System.Windows.Forms.ToolStripButton() + Me.ToolStripSeparator3 = New System.Windows.Forms.ToolStripSeparator() + Me.TBPlayB = New System.Windows.Forms.ToolStripButton() + Me.TBPlay = New System.Windows.Forms.ToolStripButton() + Me.TBStop = New System.Windows.Forms.ToolStripButton() + Me.TBPOptions = New System.Windows.Forms.ToolStripButton() + Me.ToolStripSeparator7 = New System.Windows.Forms.ToolStripSeparator() + Me.TBVOptions = New System.Windows.Forms.ToolStripButton() + Me.TBGOptions = New System.Windows.Forms.ToolStripButton() + Me.POBStorm = New System.Windows.Forms.ToolStripButton() + Me.pStatus = New System.Windows.Forms.Panel() + Me.FStatus2 = New System.Windows.Forms.StatusStrip() + Me.FSSS = New System.Windows.Forms.ToolStripButton() + Me.FSSL = New System.Windows.Forms.ToolStripButton() + Me.FSSH = New System.Windows.Forms.ToolStripButton() + Me.BVCReverse = New System.Windows.Forms.ToolStripButton() + Me.LblMultiply = New System.Windows.Forms.ToolStripStatusLabel() + Me.TVCM = New System.Windows.Forms.ToolStripTextBox() + Me.LblDivide = New System.Windows.Forms.ToolStripStatusLabel() + Me.TVCD = New System.Windows.Forms.ToolStripTextBox() + Me.BVCApply = New System.Windows.Forms.ToolStripButton() + Me.TVCBPM = New System.Windows.Forms.ToolStripTextBox() + Me.BVCCalculate = New System.Windows.Forms.ToolStripButton() + Me.BConvertStop = New System.Windows.Forms.ToolStripButton() + Me.FStatus = New System.Windows.Forms.StatusStrip() + Me.FSC = New System.Windows.Forms.ToolStripStatusLabel() + Me.FSW = New System.Windows.Forms.ToolStripStatusLabel() + Me.FSM = New System.Windows.Forms.ToolStripStatusLabel() + Me.FSP1 = New System.Windows.Forms.ToolStripStatusLabel() + Me.FSP3 = New System.Windows.Forms.ToolStripStatusLabel() + Me.FSP2 = New System.Windows.Forms.ToolStripStatusLabel() + Me.FSP4 = New System.Windows.Forms.ToolStripStatusLabel() + Me.TimeStatusLabel = New System.Windows.Forms.ToolStripStatusLabel() + Me.FST = New System.Windows.Forms.ToolStripStatusLabel() + Me.FSH = New System.Windows.Forms.ToolStripStatusLabel() + Me.FSE = New System.Windows.Forms.ToolStripStatusLabel() + Me.TimerMiddle = New System.Windows.Forms.Timer(Me.components) + Me.ToolStripContainer1 = New System.Windows.Forms.ToolStripContainer() + Me.PMain = New System.Windows.Forms.Panel() + Me.PMainIn = New System.Windows.Forms.Panel() + Me.MainPanelScroll = New System.Windows.Forms.VScrollBar() + Me.HS = New System.Windows.Forms.HScrollBar() + Me.SpR = New System.Windows.Forms.Button() + Me.SpL = New System.Windows.Forms.Button() + Me.PMainR = New System.Windows.Forms.Panel() + Me.PMainInR = New System.Windows.Forms.Panel() + Me.RightPanelScroll = New System.Windows.Forms.VScrollBar() + Me.HSR = New System.Windows.Forms.HScrollBar() + Me.PMainL = New System.Windows.Forms.Panel() + Me.PMainInL = New System.Windows.Forms.Panel() + Me.LeftPanelScroll = New System.Windows.Forms.VScrollBar() + Me.HSL = New System.Windows.Forms.HScrollBar() + Me.POptionsResizer = New System.Windows.Forms.Button() + Me.ToolTipUniversal = New System.Windows.Forms.ToolTip(Me.components) + Me.cVSLockR = New System.Windows.Forms.CheckBox() + Me.cVSLock = New System.Windows.Forms.CheckBox() + Me.cVSLockL = New System.Windows.Forms.CheckBox() + Me.BWLock = New System.Windows.Forms.CheckBox() + Me.BWClear = New System.Windows.Forms.Button() + Me.BWLoad = New System.Windows.Forms.Button() + Me.BWAVRemove = New System.Windows.Forms.Button() + Me.BWAVBrowse = New System.Windows.Forms.Button() + Me.BWAVDown = New System.Windows.Forms.Button() + Me.BWAVUp = New System.Windows.Forms.Button() + Me.POptions = New System.Windows.Forms.Panel() + Me.POExpansion = New System.Windows.Forms.Panel() + Me.POExpansionInner = New System.Windows.Forms.Panel() + Me.ECSelectSection = New System.Windows.Forms.Button() + Me.TExpansion = New System.Windows.Forms.TextBox() + Me.POExpansionResizer = New System.Windows.Forms.Button() + Me.POExpansionSwitch = New System.Windows.Forms.CheckBox() + Me.POBeat = New System.Windows.Forms.Panel() + Me.POBeatInner = New System.Windows.Forms.TableLayoutPanel() + Me.POBeatExpander = New System.Windows.Forms.CheckBox() + Me.POBeatResizer = New System.Windows.Forms.Button() + Me.TableLayoutPanel7 = New System.Windows.Forms.TableLayoutPanel() + Me.nBeatD = New System.Windows.Forms.NumericUpDown() + Me.BBeatApplyV = New System.Windows.Forms.Button() + Me.nBeatN = New System.Windows.Forms.NumericUpDown() + Me.BBeatApply = New System.Windows.Forms.Button() + Me.Label7 = New System.Windows.Forms.Label() + Me.tBeatValue = New System.Windows.Forms.TextBox() + Me.LBeat = New System.Windows.Forms.ListBox() + Me.POBeatPart2 = New System.Windows.Forms.TableLayoutPanel() + Me.CBeatScale = New System.Windows.Forms.RadioButton() + Me.CBeatCut = New System.Windows.Forms.RadioButton() + Me.CBeatMeasure = New System.Windows.Forms.RadioButton() + Me.CBeatPreserve = New System.Windows.Forms.RadioButton() + Me.POBeatSwitch = New System.Windows.Forms.CheckBox() + Me.POWAV = New System.Windows.Forms.Panel() + Me.POWAVInner = New System.Windows.Forms.TableLayoutPanel() + Me.POWAVExpander = New System.Windows.Forms.CheckBox() + Me.LWAV = New System.Windows.Forms.ListBox() + Me.FlowLayoutPanel3 = New System.Windows.Forms.FlowLayoutPanel() + Me.POWAVResizer = New System.Windows.Forms.Button() + Me.POWAVPart2 = New System.Windows.Forms.TableLayoutPanel() + Me.CWAVMultiSelect = New System.Windows.Forms.CheckBox() + Me.CWAVChangeLabel = New System.Windows.Forms.CheckBox() + Me.POWAVSwitch = New System.Windows.Forms.CheckBox() + Me.POWaveForm = New System.Windows.Forms.Panel() + Me.POWaveFormInner = New System.Windows.Forms.Panel() + Me.POWaveFormPart2 = New System.Windows.Forms.TableLayoutPanel() + Me.TWSaturation = New System.Windows.Forms.NumericUpDown() + Me.PictureBox2 = New System.Windows.Forms.PictureBox() + Me.TWTransparency = New System.Windows.Forms.NumericUpDown() + Me.PictureBox3 = New System.Windows.Forms.PictureBox() + Me.TWPrecision = New System.Windows.Forms.NumericUpDown() + Me.PictureBox4 = New System.Windows.Forms.PictureBox() + Me.TWWidth = New System.Windows.Forms.NumericUpDown() + Me.PictureBox5 = New System.Windows.Forms.PictureBox() + Me.TWLeft = New System.Windows.Forms.NumericUpDown() + Me.PictureBox6 = New System.Windows.Forms.PictureBox() + Me.TWSaturation2 = New System.Windows.Forms.TrackBar() + Me.TWLeft2 = New System.Windows.Forms.TrackBar() + Me.TWTransparency2 = New System.Windows.Forms.TrackBar() + Me.TWWidth2 = New System.Windows.Forms.TrackBar() + Me.TWPrecision2 = New System.Windows.Forms.TrackBar() + Me.POWaveFormExpander = New System.Windows.Forms.CheckBox() + Me.POWaveFormPart1 = New System.Windows.Forms.TableLayoutPanel() + Me.TableLayoutPanel1 = New System.Windows.Forms.TableLayoutPanel() + Me.FlowLayoutPanel1 = New System.Windows.Forms.FlowLayoutPanel() + Me.TWFileName = New System.Windows.Forms.TextBox() + Me.TableLayoutPanel6 = New System.Windows.Forms.TableLayoutPanel() + Me.PictureBox1 = New System.Windows.Forms.PictureBox() + Me.TWPosition2 = New System.Windows.Forms.TrackBar() + Me.TWPosition = New System.Windows.Forms.NumericUpDown() + Me.POWaveFormSwitch = New System.Windows.Forms.CheckBox() + Me.POGrid = New System.Windows.Forms.Panel() + Me.POGridInner = New System.Windows.Forms.Panel() + Me.POGridPart2 = New System.Windows.Forms.TableLayoutPanel() + Me.TableLayoutPanel5 = New System.Windows.Forms.TableLayoutPanel() + Me.FlowLayoutPanel2 = New System.Windows.Forms.FlowLayoutPanel() + Me.Label5 = New System.Windows.Forms.Label() + Me.TableLayoutPanel4 = New System.Windows.Forms.TableLayoutPanel() + Me.Label1 = New System.Windows.Forms.Label() + Me.CGB = New System.Windows.Forms.NumericUpDown() + Me.POGridExpander = New System.Windows.Forms.CheckBox() + Me.POGridPart1 = New System.Windows.Forms.TableLayoutPanel() + Me.TableLayoutPanel3 = New System.Windows.Forms.TableLayoutPanel() + Me.PictureBox9 = New System.Windows.Forms.PictureBox() + Me.CGHeight2 = New System.Windows.Forms.TrackBar() + Me.CGHeight = New System.Windows.Forms.NumericUpDown() + Me.PictureBox10 = New System.Windows.Forms.PictureBox() + Me.CGWidth2 = New System.Windows.Forms.TrackBar() + Me.CGWidth = New System.Windows.Forms.NumericUpDown() + Me.CGDisableVertical = New System.Windows.Forms.CheckBox() + Me.CGSnap = New System.Windows.Forms.CheckBox() + Me.TableLayoutPanel2 = New System.Windows.Forms.TableLayoutPanel() + Me.PictureBox7 = New System.Windows.Forms.PictureBox() + Me.CGDivide = New System.Windows.Forms.NumericUpDown() + Me.CGSub = New System.Windows.Forms.NumericUpDown() + Me.BGSlash = New System.Windows.Forms.Button() + Me.POGridSwitch = New System.Windows.Forms.CheckBox() + Me.POHeader = New System.Windows.Forms.Panel() + Me.POHeaderInner = New System.Windows.Forms.Panel() + Me.POHeaderPart2 = New System.Windows.Forms.TableLayoutPanel() + Me.CHDifficulty = New System.Windows.Forms.ComboBox() + Me.Label13 = New System.Windows.Forms.Label() + Me.THExRank = New System.Windows.Forms.TextBox() + Me.Label25 = New System.Windows.Forms.Label() + Me.CHLnObj = New System.Windows.Forms.ComboBox() + Me.Label23 = New System.Windows.Forms.Label() + Me.Label21 = New System.Windows.Forms.Label() + Me.THComment = New System.Windows.Forms.TextBox() + Me.Label24 = New System.Windows.Forms.Label() + Me.Label15 = New System.Windows.Forms.Label() + Me.THTotal = New System.Windows.Forms.TextBox() + Me.Label20 = New System.Windows.Forms.Label() + Me.BHStageFile = New System.Windows.Forms.Button() + Me.BHBanner = New System.Windows.Forms.Button() + Me.Label19 = New System.Windows.Forms.Label() + Me.BHBackBMP = New System.Windows.Forms.Button() + Me.Label17 = New System.Windows.Forms.Label() + Me.Label16 = New System.Windows.Forms.Label() + Me.Label12 = New System.Windows.Forms.Label() + Me.THBackBMP = New System.Windows.Forms.TextBox() + Me.Label11 = New System.Windows.Forms.Label() + Me.THBanner = New System.Windows.Forms.TextBox() + Me.THStageFile = New System.Windows.Forms.TextBox() + Me.THSubTitle = New System.Windows.Forms.TextBox() + Me.THSubArtist = New System.Windows.Forms.TextBox() + Me.POHeaderExpander = New System.Windows.Forms.CheckBox() + Me.POHeaderPart1 = New System.Windows.Forms.TableLayoutPanel() + Me.Label3 = New System.Windows.Forms.Label() + Me.THPlayLevel = New System.Windows.Forms.TextBox() + Me.CHRank = New System.Windows.Forms.ComboBox() + Me.Label10 = New System.Windows.Forms.Label() + Me.CHPlayer = New System.Windows.Forms.ComboBox() + Me.Label4 = New System.Windows.Forms.Label() + Me.THGenre = New System.Windows.Forms.TextBox() + Me.THBPM = New System.Windows.Forms.NumericUpDown() + Me.Label2 = New System.Windows.Forms.Label() + Me.THArtist = New System.Windows.Forms.TextBox() + Me.THTitle = New System.Windows.Forms.TextBox() + Me.Label9 = New System.Windows.Forms.Label() + Me.Label8 = New System.Windows.Forms.Label() + Me.Label6 = New System.Windows.Forms.Label() + Me.POHeaderSwitch = New System.Windows.Forms.CheckBox() + Me.POptionsScroll = New System.Windows.Forms.Panel() + Me.TBTotalValue = New System.Windows.Forms.ToolStripLabel() + Me.cmnLanguage.SuspendLayout() + Me.cmnTheme.SuspendLayout() + Me.Menu1.SuspendLayout() + Me.mnMain.SuspendLayout() + Me.cmnConversion.SuspendLayout() + Me.TBMain.SuspendLayout() + Me.pStatus.SuspendLayout() + Me.FStatus2.SuspendLayout() + Me.FStatus.SuspendLayout() + Me.ToolStripContainer1.ContentPanel.SuspendLayout() + Me.ToolStripContainer1.TopToolStripPanel.SuspendLayout() + Me.ToolStripContainer1.SuspendLayout() + Me.PMain.SuspendLayout() + Me.PMainR.SuspendLayout() + Me.PMainL.SuspendLayout() + Me.POptions.SuspendLayout() + Me.POExpansion.SuspendLayout() + Me.POExpansionInner.SuspendLayout() + Me.POBeat.SuspendLayout() + Me.POBeatInner.SuspendLayout() + Me.TableLayoutPanel7.SuspendLayout() + CType(Me.nBeatD, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.nBeatN, System.ComponentModel.ISupportInitialize).BeginInit() + Me.POBeatPart2.SuspendLayout() + Me.POWAV.SuspendLayout() + Me.POWAVInner.SuspendLayout() + Me.FlowLayoutPanel3.SuspendLayout() + Me.POWAVPart2.SuspendLayout() + Me.POWaveForm.SuspendLayout() + Me.POWaveFormInner.SuspendLayout() + Me.POWaveFormPart2.SuspendLayout() + CType(Me.TWSaturation, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.PictureBox2, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.TWTransparency, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.PictureBox3, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.TWPrecision, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.PictureBox4, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.TWWidth, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.PictureBox5, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.TWLeft, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.PictureBox6, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.TWSaturation2, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.TWLeft2, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.TWTransparency2, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.TWWidth2, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.TWPrecision2, System.ComponentModel.ISupportInitialize).BeginInit() + Me.POWaveFormPart1.SuspendLayout() + Me.TableLayoutPanel1.SuspendLayout() + Me.FlowLayoutPanel1.SuspendLayout() + Me.TableLayoutPanel6.SuspendLayout() + CType(Me.PictureBox1, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.TWPosition2, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.TWPosition, System.ComponentModel.ISupportInitialize).BeginInit() + Me.POGrid.SuspendLayout() + Me.POGridInner.SuspendLayout() + Me.POGridPart2.SuspendLayout() + Me.TableLayoutPanel5.SuspendLayout() + Me.FlowLayoutPanel2.SuspendLayout() + Me.TableLayoutPanel4.SuspendLayout() + CType(Me.CGB, System.ComponentModel.ISupportInitialize).BeginInit() + Me.POGridPart1.SuspendLayout() + Me.TableLayoutPanel3.SuspendLayout() + CType(Me.PictureBox9, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.CGHeight2, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.CGHeight, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.PictureBox10, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.CGWidth2, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.CGWidth, System.ComponentModel.ISupportInitialize).BeginInit() + Me.TableLayoutPanel2.SuspendLayout() + CType(Me.PictureBox7, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.CGDivide, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.CGSub, System.ComponentModel.ISupportInitialize).BeginInit() + Me.POHeader.SuspendLayout() + Me.POHeaderInner.SuspendLayout() + Me.POHeaderPart2.SuspendLayout() + Me.POHeaderPart1.SuspendLayout() + CType(Me.THBPM, System.ComponentModel.ISupportInitialize).BeginInit() + Me.POptionsScroll.SuspendLayout() + Me.SuspendLayout() + ' + 'cmnLanguage + ' + Me.cmnLanguage.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.TBLangDef, Me.TBLangRefresh, Me.ToolStripSeparator9}) + Me.cmnLanguage.Name = "cmnLanguage" + Me.cmnLanguage.OwnerItem = Me.mnLanguage + Me.cmnLanguage.Size = New System.Drawing.Size(121, 54) + ' + 'TBLangDef + ' + Me.TBLangDef.Name = "TBLangDef" + Me.TBLangDef.Size = New System.Drawing.Size(120, 22) + Me.TBLangDef.Text = "(Default)" + ' + 'TBLangRefresh + ' + Me.TBLangRefresh.Image = Global.iBMSC.My.Resources.Resources.x16Refresh + Me.TBLangRefresh.Name = "TBLangRefresh" + Me.TBLangRefresh.Size = New System.Drawing.Size(120, 22) + Me.TBLangRefresh.Text = "Refresh" + ' + 'ToolStripSeparator9 + ' + Me.ToolStripSeparator9.Name = "ToolStripSeparator9" + Me.ToolStripSeparator9.Size = New System.Drawing.Size(117, 6) + ' + 'TBLanguage + ' + Me.TBLanguage.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image + Me.TBLanguage.DropDown = Me.cmnLanguage + Me.TBLanguage.Image = Global.iBMSC.My.Resources.Resources.x16Language + Me.TBLanguage.ImageTransparentColor = System.Drawing.Color.Magenta + Me.TBLanguage.Name = "TBLanguage" + Me.TBLanguage.Size = New System.Drawing.Size(29, 22) + Me.TBLanguage.Text = "Language" + ' + 'mnLanguage + ' + Me.mnLanguage.DropDown = Me.cmnLanguage + Me.mnLanguage.Image = Global.iBMSC.My.Resources.Resources.x16Language + Me.mnLanguage.Name = "mnLanguage" + Me.mnLanguage.Size = New System.Drawing.Size(253, 22) + Me.mnLanguage.Text = "&Language" + ' + 'cmnTheme + ' + Me.cmnTheme.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.TBThemeDef, Me.TBThemeSave, Me.TBThemeRefresh, Me.TBThemeLoadComptability, Me.ToolStripSeparator6}) + Me.cmnTheme.Name = "cmnLanguage" + Me.cmnTheme.OwnerItem = Me.TBTheme + Me.cmnTheme.Size = New System.Drawing.Size(246, 98) + ' + 'TBThemeDef + ' + Me.TBThemeDef.Name = "TBThemeDef" + Me.TBThemeDef.Size = New System.Drawing.Size(245, 22) + Me.TBThemeDef.Text = "(Default)" + ' + 'TBThemeSave + ' + Me.TBThemeSave.Image = Global.iBMSC.My.Resources.Resources.x16SaveAs + Me.TBThemeSave.Name = "TBThemeSave" + Me.TBThemeSave.Size = New System.Drawing.Size(245, 22) + Me.TBThemeSave.Text = "Save Theme" + ' + 'TBThemeRefresh + ' + Me.TBThemeRefresh.Image = Global.iBMSC.My.Resources.Resources.x16Refresh + Me.TBThemeRefresh.Name = "TBThemeRefresh" + Me.TBThemeRefresh.Size = New System.Drawing.Size(245, 22) + Me.TBThemeRefresh.Text = "Refresh" + ' + 'TBThemeLoadComptability + ' + Me.TBThemeLoadComptability.Name = "TBThemeLoadComptability" + Me.TBThemeLoadComptability.Size = New System.Drawing.Size(245, 22) + Me.TBThemeLoadComptability.Text = "Load Theme File from iBMSC 2.x" + ' + 'ToolStripSeparator6 + ' + Me.ToolStripSeparator6.Name = "ToolStripSeparator6" + Me.ToolStripSeparator6.Size = New System.Drawing.Size(242, 6) + ' + 'mnTheme + ' + Me.mnTheme.DropDown = Me.cmnTheme + Me.mnTheme.Image = Global.iBMSC.My.Resources.Resources.x16Theme + Me.mnTheme.Name = "mnTheme" + Me.mnTheme.Size = New System.Drawing.Size(253, 22) + Me.mnTheme.Text = "&Theme" + ' + 'TBTheme + ' + Me.TBTheme.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image + Me.TBTheme.DropDown = Me.cmnTheme + Me.TBTheme.Image = Global.iBMSC.My.Resources.Resources.x16Theme + Me.TBTheme.ImageTransparentColor = System.Drawing.Color.Magenta + Me.TBTheme.Name = "TBTheme" + Me.TBTheme.Size = New System.Drawing.Size(29, 22) + Me.TBTheme.Text = "Theme" + ' + 'Timer1 + ' + Me.Timer1.Interval = 15 + ' + 'Menu1 + ' + Me.Menu1.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.MInsert, Me.MRemove}) + Me.Menu1.Name = "Menu1" + Me.Menu1.Size = New System.Drawing.Size(166, 48) + ' + 'MInsert + ' + Me.MInsert.Image = Global.iBMSC.My.Resources.Resources.x16Add + Me.MInsert.Name = "MInsert" + Me.MInsert.Size = New System.Drawing.Size(165, 22) + Me.MInsert.Text = "Insert Measure" + ' + 'MRemove + ' + Me.MRemove.Image = Global.iBMSC.My.Resources.Resources.x16Remove + Me.MRemove.Name = "MRemove" + Me.MRemove.Size = New System.Drawing.Size(165, 22) + Me.MRemove.Text = "Remove Measure" + ' + 'AutoSaveTimer + ' + Me.AutoSaveTimer.Enabled = True + Me.AutoSaveTimer.Interval = 300000 + ' + 'mnMain + ' + Me.mnMain.AccessibleRole = System.Windows.Forms.AccessibleRole.MenuBar + Me.mnMain.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch + Me.mnMain.Dock = System.Windows.Forms.DockStyle.None + Me.mnMain.GripMargin = New System.Windows.Forms.Padding(2) + Me.mnMain.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.mnFile, Me.mnEdit, Me.mnSys, Me.mnOptions, Me.mnConversion, Me.mnPreview}) + Me.mnMain.LayoutStyle = System.Windows.Forms.ToolStripLayoutStyle.Flow + Me.mnMain.Location = New System.Drawing.Point(0, 0) + Me.mnMain.Name = "mnMain" + Me.mnMain.Size = New System.Drawing.Size(952, 23) + Me.mnMain.TabIndex = 57 + ' + 'mnFile + ' + Me.mnFile.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.mnNew, Me.mnOpen, Me.mnImportSM, Me.mnImportIBMSC, Me.ToolStripSeparator14, Me.mnSave, Me.mnSaveAs, Me.mnExport, Me.ToolStripSeparator15, Me.mnOpenR0, Me.mnOpenR1, Me.mnOpenR2, Me.mnOpenR3, Me.mnOpenR4, Me.ToolStripSeparator16, Me.mnQuit}) + Me.mnFile.Name = "mnFile" + Me.mnFile.Size = New System.Drawing.Size(37, 19) + Me.mnFile.Text = "&File" + ' + 'mnNew + ' + Me.mnNew.Image = Global.iBMSC.My.Resources.Resources.x16New + Me.mnNew.Name = "mnNew" + Me.mnNew.ShortcutKeys = CType((System.Windows.Forms.Keys.Control Or System.Windows.Forms.Keys.N), System.Windows.Forms.Keys) + Me.mnNew.Size = New System.Drawing.Size(240, 22) + Me.mnNew.Text = "&New" + ' + 'mnOpen + ' + Me.mnOpen.Image = Global.iBMSC.My.Resources.Resources.x16Open + Me.mnOpen.Name = "mnOpen" + Me.mnOpen.ShortcutKeys = CType((System.Windows.Forms.Keys.Control Or System.Windows.Forms.Keys.O), System.Windows.Forms.Keys) + Me.mnOpen.Size = New System.Drawing.Size(240, 22) + Me.mnOpen.Text = "&Open" + ' + 'mnImportSM + ' + Me.mnImportSM.Image = Global.iBMSC.My.Resources.Resources.x16Import2 + Me.mnImportSM.Name = "mnImportSM" + Me.mnImportSM.Size = New System.Drawing.Size(240, 22) + Me.mnImportSM.Text = "Import from .S&M file" + ' + 'mnImportIBMSC + ' + Me.mnImportIBMSC.Image = Global.iBMSC.My.Resources.Resources.x16Import2 + Me.mnImportIBMSC.Name = "mnImportIBMSC" + Me.mnImportIBMSC.Size = New System.Drawing.Size(240, 22) + Me.mnImportIBMSC.Text = "Import from .&IBMSC file" + ' + 'ToolStripSeparator14 + ' + Me.ToolStripSeparator14.Name = "ToolStripSeparator14" + Me.ToolStripSeparator14.Size = New System.Drawing.Size(237, 6) + ' + 'mnSave + ' + Me.mnSave.Image = Global.iBMSC.My.Resources.Resources.x16Save + Me.mnSave.Name = "mnSave" + Me.mnSave.ShortcutKeys = CType((System.Windows.Forms.Keys.Control Or System.Windows.Forms.Keys.S), System.Windows.Forms.Keys) + Me.mnSave.Size = New System.Drawing.Size(240, 22) + Me.mnSave.Text = "&Save" + ' + 'mnSaveAs + ' + Me.mnSaveAs.Image = Global.iBMSC.My.Resources.Resources.x16SaveAs + Me.mnSaveAs.Name = "mnSaveAs" + Me.mnSaveAs.ShortcutKeys = CType(((System.Windows.Forms.Keys.Control Or System.Windows.Forms.Keys.Alt) _ + Or System.Windows.Forms.Keys.S), System.Windows.Forms.Keys) + Me.mnSaveAs.Size = New System.Drawing.Size(240, 22) + Me.mnSaveAs.Text = "Save &As..." + ' + 'mnExport + ' + Me.mnExport.Image = Global.iBMSC.My.Resources.Resources.x16Export + Me.mnExport.Name = "mnExport" + Me.mnExport.ShortcutKeys = CType(((System.Windows.Forms.Keys.Control Or System.Windows.Forms.Keys.Shift) _ + Or System.Windows.Forms.Keys.E), System.Windows.Forms.Keys) + Me.mnExport.Size = New System.Drawing.Size(240, 22) + Me.mnExport.Text = "&Export .IBMSC file" + ' + 'ToolStripSeparator15 + ' + Me.ToolStripSeparator15.Name = "ToolStripSeparator15" + Me.ToolStripSeparator15.Size = New System.Drawing.Size(237, 6) + ' + 'mnOpenR0 + ' + Me.mnOpenR0.Enabled = False + Me.mnOpenR0.Name = "mnOpenR0" + Me.mnOpenR0.ShortcutKeys = CType((System.Windows.Forms.Keys.Alt Or System.Windows.Forms.Keys.D1), System.Windows.Forms.Keys) + Me.mnOpenR0.Size = New System.Drawing.Size(240, 22) + Me.mnOpenR0.Tag = "0" + Me.mnOpenR0.Text = "Recent #0" + ' + 'mnOpenR1 + ' + Me.mnOpenR1.Enabled = False + Me.mnOpenR1.Name = "mnOpenR1" + Me.mnOpenR1.ShortcutKeys = CType((System.Windows.Forms.Keys.Alt Or System.Windows.Forms.Keys.D2), System.Windows.Forms.Keys) + Me.mnOpenR1.Size = New System.Drawing.Size(240, 22) + Me.mnOpenR1.Tag = "1" + Me.mnOpenR1.Text = "Recent #1" + ' + 'mnOpenR2 + ' + Me.mnOpenR2.Enabled = False + Me.mnOpenR2.Name = "mnOpenR2" + Me.mnOpenR2.ShortcutKeys = CType((System.Windows.Forms.Keys.Alt Or System.Windows.Forms.Keys.D3), System.Windows.Forms.Keys) + Me.mnOpenR2.Size = New System.Drawing.Size(240, 22) + Me.mnOpenR2.Tag = "2" + Me.mnOpenR2.Text = "Recent #2" + ' + 'mnOpenR3 + ' + Me.mnOpenR3.Enabled = False + Me.mnOpenR3.Name = "mnOpenR3" + Me.mnOpenR3.ShortcutKeys = CType((System.Windows.Forms.Keys.Alt Or System.Windows.Forms.Keys.D4), System.Windows.Forms.Keys) + Me.mnOpenR3.Size = New System.Drawing.Size(240, 22) + Me.mnOpenR3.Tag = "3" + Me.mnOpenR3.Text = "Recent #3" + ' + 'mnOpenR4 + ' + Me.mnOpenR4.Enabled = False + Me.mnOpenR4.Name = "mnOpenR4" + Me.mnOpenR4.ShortcutKeys = CType((System.Windows.Forms.Keys.Alt Or System.Windows.Forms.Keys.D5), System.Windows.Forms.Keys) + Me.mnOpenR4.Size = New System.Drawing.Size(240, 22) + Me.mnOpenR4.Tag = "4" + Me.mnOpenR4.Text = "Recent #4" + ' + 'ToolStripSeparator16 + ' + Me.ToolStripSeparator16.Name = "ToolStripSeparator16" + Me.ToolStripSeparator16.Size = New System.Drawing.Size(237, 6) + ' + 'mnQuit + ' + Me.mnQuit.Name = "mnQuit" + Me.mnQuit.Size = New System.Drawing.Size(240, 22) + Me.mnQuit.Text = "&Quit" + ' + 'mnEdit + ' + Me.mnEdit.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.mnUndo, Me.mnRedo, Me.ToolStripSeparator17, Me.mnCut, Me.mnCopy, Me.mnPaste, Me.mnDelete, Me.mnSelectAll, Me.mnGotoMeasure, Me.ToolStripSeparator18, Me.mnFind, Me.mnStatistics, Me.mnStatisticsAdvanced, Me.ToolStripSeparator19, Me.mnTimeSelect, Me.mnSelect, Me.mnWrite, Me.ToolStripSeparator23, Me.mnMyO2}) + Me.mnEdit.Name = "mnEdit" + Me.mnEdit.Size = New System.Drawing.Size(39, 19) + Me.mnEdit.Text = "&Edit" + ' + 'mnUndo + ' + Me.mnUndo.Enabled = False + Me.mnUndo.Image = Global.iBMSC.My.Resources.Resources.x16Undo + Me.mnUndo.Name = "mnUndo" + Me.mnUndo.ShortcutKeyDisplayString = "Ctrl+Z" + Me.mnUndo.Size = New System.Drawing.Size(256, 22) + Me.mnUndo.Text = "&Undo" + ' + 'mnRedo + ' + Me.mnRedo.Enabled = False + Me.mnRedo.Image = Global.iBMSC.My.Resources.Resources.x16Redo + Me.mnRedo.Name = "mnRedo" + Me.mnRedo.ShortcutKeyDisplayString = "Ctrl+Y" + Me.mnRedo.Size = New System.Drawing.Size(256, 22) + Me.mnRedo.Text = "&Redo" + ' + 'ToolStripSeparator17 + ' + Me.ToolStripSeparator17.Name = "ToolStripSeparator17" + Me.ToolStripSeparator17.Size = New System.Drawing.Size(253, 6) + ' + 'mnCut + ' + Me.mnCut.Image = Global.iBMSC.My.Resources.Resources.x16Cut + Me.mnCut.Name = "mnCut" + Me.mnCut.ShortcutKeyDisplayString = "Ctrl+X" + Me.mnCut.Size = New System.Drawing.Size(256, 22) + Me.mnCut.Text = "Cu&t" + ' + 'mnCopy + ' + Me.mnCopy.Image = Global.iBMSC.My.Resources.Resources.x16Copy + Me.mnCopy.Name = "mnCopy" + Me.mnCopy.ShortcutKeyDisplayString = "Ctrl+C" + Me.mnCopy.Size = New System.Drawing.Size(256, 22) + Me.mnCopy.Text = "&Copy" + ' + 'mnPaste + ' + Me.mnPaste.Image = Global.iBMSC.My.Resources.Resources.x16Paste + Me.mnPaste.Name = "mnPaste" + Me.mnPaste.ShortcutKeyDisplayString = "Ctrl+V" + Me.mnPaste.Size = New System.Drawing.Size(256, 22) + Me.mnPaste.Text = "&Paste" + ' + 'mnDelete + ' + Me.mnDelete.Image = Global.iBMSC.My.Resources.Resources.x16Remove + Me.mnDelete.Name = "mnDelete" + Me.mnDelete.ShortcutKeyDisplayString = "Del" + Me.mnDelete.Size = New System.Drawing.Size(256, 22) + Me.mnDelete.Text = "De&lete" + ' + 'mnSelectAll + ' + Me.mnSelectAll.Name = "mnSelectAll" + Me.mnSelectAll.ShortcutKeyDisplayString = "Ctrl+A" + Me.mnSelectAll.Size = New System.Drawing.Size(256, 22) + Me.mnSelectAll.Text = "Select &All" + ' + 'mnGotoMeasure + ' + Me.mnGotoMeasure.Name = "mnGotoMeasure" + Me.mnGotoMeasure.ShortcutKeys = CType((System.Windows.Forms.Keys.Control Or System.Windows.Forms.Keys.G), System.Windows.Forms.Keys) + Me.mnGotoMeasure.Size = New System.Drawing.Size(256, 22) + Me.mnGotoMeasure.Text = "Go To Measure..." + ' + 'ToolStripSeparator18 + ' + Me.ToolStripSeparator18.Name = "ToolStripSeparator18" + Me.ToolStripSeparator18.Size = New System.Drawing.Size(253, 6) + ' + 'mnFind + ' + Me.mnFind.Image = Global.iBMSC.My.Resources.Resources.x16Find + Me.mnFind.Name = "mnFind" + Me.mnFind.ShortcutKeys = CType((System.Windows.Forms.Keys.Control Or System.Windows.Forms.Keys.F), System.Windows.Forms.Keys) + Me.mnFind.Size = New System.Drawing.Size(256, 22) + Me.mnFind.Text = "&Find / Delete / Replace" + ' + 'mnStatistics + ' + Me.mnStatistics.Image = Global.iBMSC.My.Resources.Resources.x16Statistics + Me.mnStatistics.Name = "mnStatistics" + Me.mnStatistics.ShortcutKeys = CType((System.Windows.Forms.Keys.Control Or System.Windows.Forms.Keys.T), System.Windows.Forms.Keys) + Me.mnStatistics.Size = New System.Drawing.Size(256, 22) + Me.mnStatistics.Text = "St&atistics" + ' + 'mnStatisticsAdvanced + ' + Me.mnStatisticsAdvanced.Image = Global.iBMSC.My.Resources.Resources.x16Statistics + Me.mnStatisticsAdvanced.Name = "mnStatisticsAdvanced" + Me.mnStatisticsAdvanced.ShortcutKeys = CType(((System.Windows.Forms.Keys.Control Or System.Windows.Forms.Keys.Shift) _ + Or System.Windows.Forms.Keys.T), System.Windows.Forms.Keys) + Me.mnStatisticsAdvanced.Size = New System.Drawing.Size(256, 22) + Me.mnStatisticsAdvanced.Text = "Statistics (Ad&vanced)" + ' + 'ToolStripSeparator19 + ' + Me.ToolStripSeparator19.Name = "ToolStripSeparator19" + Me.ToolStripSeparator19.Size = New System.Drawing.Size(253, 6) + ' + 'mnTimeSelect + ' + Me.mnTimeSelect.CheckOnClick = True + Me.mnTimeSelect.Image = Global.iBMSC.My.Resources.Resources.x16TimeSelection + Me.mnTimeSelect.Name = "mnTimeSelect" + Me.mnTimeSelect.ShortcutKeys = System.Windows.Forms.Keys.F1 + Me.mnTimeSelect.Size = New System.Drawing.Size(256, 22) + Me.mnTimeSelect.Text = "T&ime Selection Tool" + ' + 'mnSelect + ' + Me.mnSelect.Checked = True + Me.mnSelect.CheckOnClick = True + Me.mnSelect.CheckState = System.Windows.Forms.CheckState.Checked + Me.mnSelect.Image = Global.iBMSC.My.Resources.Resources.x16Select + Me.mnSelect.Name = "mnSelect" + Me.mnSelect.ShortcutKeys = System.Windows.Forms.Keys.F2 + Me.mnSelect.Size = New System.Drawing.Size(256, 22) + Me.mnSelect.Text = "&Select Tool" + ' + 'mnWrite + ' + Me.mnWrite.CheckOnClick = True + Me.mnWrite.Image = Global.iBMSC.My.Resources.Resources.x16Pen + Me.mnWrite.Name = "mnWrite" + Me.mnWrite.ShortcutKeys = System.Windows.Forms.Keys.F3 + Me.mnWrite.Size = New System.Drawing.Size(256, 22) + Me.mnWrite.Text = "&Write Tool" + ' + 'ToolStripSeparator23 + ' + Me.ToolStripSeparator23.Name = "ToolStripSeparator23" + Me.ToolStripSeparator23.Size = New System.Drawing.Size(253, 6) + ' + 'mnMyO2 + ' + Me.mnMyO2.Image = Global.iBMSC.My.Resources.Resources.x16MyO2 + Me.mnMyO2.Name = "mnMyO2" + Me.mnMyO2.Size = New System.Drawing.Size(256, 22) + Me.mnMyO2.Text = "MyO2 ToolBox (Chinese Only)" + ' + 'mnSys + ' + Me.mnSys.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.mnSMenu, Me.mnSTB, Me.mnSOP, Me.mnSStatus, Me.mnSLSplitter, Me.mnSRSplitter, Me.ToolStripSeparator21, Me.CGShow, Me.CGShowS, Me.CGShowBG, Me.CGShowM, Me.CGShowMB, Me.CGShowV, Me.CGShowC, Me.ToolStripSeparator22, Me.CGBPM, Me.CGSTOP, Me.CGSCROLL, Me.CGBLP}) + Me.mnSys.Name = "mnSys" + Me.mnSys.Size = New System.Drawing.Size(44, 19) + Me.mnSys.Text = "&View" + ' + 'mnSMenu + ' + Me.mnSMenu.Checked = True + Me.mnSMenu.CheckOnClick = True + Me.mnSMenu.CheckState = System.Windows.Forms.CheckState.Checked + Me.mnSMenu.Name = "mnSMenu" + Me.mnSMenu.Size = New System.Drawing.Size(210, 22) + Me.mnSMenu.Text = "&Main Menu" + Me.mnSMenu.Visible = False + ' + 'mnSTB + ' + Me.mnSTB.Checked = True + Me.mnSTB.CheckOnClick = True + Me.mnSTB.CheckState = System.Windows.Forms.CheckState.Checked + Me.mnSTB.Name = "mnSTB" + Me.mnSTB.Size = New System.Drawing.Size(210, 22) + Me.mnSTB.Text = "&ToolBar" + ' + 'mnSOP + ' + Me.mnSOP.Checked = True + Me.mnSOP.CheckOnClick = True + Me.mnSOP.CheckState = System.Windows.Forms.CheckState.Checked + Me.mnSOP.Name = "mnSOP" + Me.mnSOP.Size = New System.Drawing.Size(210, 22) + Me.mnSOP.Text = "&Options Panel" + ' + 'mnSStatus + ' + Me.mnSStatus.Checked = True + Me.mnSStatus.CheckOnClick = True + Me.mnSStatus.CheckState = System.Windows.Forms.CheckState.Checked + Me.mnSStatus.Name = "mnSStatus" + Me.mnSStatus.Size = New System.Drawing.Size(210, 22) + Me.mnSStatus.Text = "&Status Bar" + ' + 'mnSLSplitter + ' + Me.mnSLSplitter.CheckOnClick = True + Me.mnSLSplitter.Name = "mnSLSplitter" + Me.mnSLSplitter.ShortcutKeys = CType((System.Windows.Forms.Keys.Alt Or System.Windows.Forms.Keys.Left), System.Windows.Forms.Keys) + Me.mnSLSplitter.Size = New System.Drawing.Size(210, 22) + Me.mnSLSplitter.Text = "&Left Splitter" + ' + 'mnSRSplitter + ' + Me.mnSRSplitter.CheckOnClick = True + Me.mnSRSplitter.Name = "mnSRSplitter" + Me.mnSRSplitter.ShortcutKeys = CType((System.Windows.Forms.Keys.Alt Or System.Windows.Forms.Keys.Right), System.Windows.Forms.Keys) + Me.mnSRSplitter.Size = New System.Drawing.Size(210, 22) + Me.mnSRSplitter.Text = "&Right Splitter" + ' + 'ToolStripSeparator21 + ' + Me.ToolStripSeparator21.Name = "ToolStripSeparator21" + Me.ToolStripSeparator21.Size = New System.Drawing.Size(207, 6) + ' + 'CGShow + ' + Me.CGShow.Checked = True + Me.CGShow.CheckOnClick = True + Me.CGShow.CheckState = System.Windows.Forms.CheckState.Checked + Me.CGShow.Name = "CGShow" + Me.CGShow.Size = New System.Drawing.Size(210, 22) + Me.CGShow.Text = "Grid" + ' + 'CGShowS + ' + Me.CGShowS.Checked = True + Me.CGShowS.CheckOnClick = True + Me.CGShowS.CheckState = System.Windows.Forms.CheckState.Checked + Me.CGShowS.Name = "CGShowS" + Me.CGShowS.Size = New System.Drawing.Size(210, 22) + Me.CGShowS.Text = "Sub" + ' + 'CGShowBG + ' + Me.CGShowBG.Checked = True + Me.CGShowBG.CheckOnClick = True + Me.CGShowBG.CheckState = System.Windows.Forms.CheckState.Checked + Me.CGShowBG.Name = "CGShowBG" + Me.CGShowBG.Size = New System.Drawing.Size(210, 22) + Me.CGShowBG.Text = "BackGround" + ' + 'CGShowM + ' + Me.CGShowM.Checked = True + Me.CGShowM.CheckOnClick = True + Me.CGShowM.CheckState = System.Windows.Forms.CheckState.Checked + Me.CGShowM.Name = "CGShowM" + Me.CGShowM.Size = New System.Drawing.Size(210, 22) + Me.CGShowM.Text = "Measure Index" + ' + 'CGShowMB + ' + Me.CGShowMB.Checked = True + Me.CGShowMB.CheckOnClick = True + Me.CGShowMB.CheckState = System.Windows.Forms.CheckState.Checked + Me.CGShowMB.Name = "CGShowMB" + Me.CGShowMB.Size = New System.Drawing.Size(210, 22) + Me.CGShowMB.Text = "Measure Line" + ' + 'CGShowV + ' + Me.CGShowV.Checked = True + Me.CGShowV.CheckOnClick = True + Me.CGShowV.CheckState = System.Windows.Forms.CheckState.Checked + Me.CGShowV.Name = "CGShowV" + Me.CGShowV.Size = New System.Drawing.Size(210, 22) + Me.CGShowV.Text = "Vertical Line" + ' + 'CGShowC + ' + Me.CGShowC.Checked = True + Me.CGShowC.CheckOnClick = True + Me.CGShowC.CheckState = System.Windows.Forms.CheckState.Checked + Me.CGShowC.Name = "CGShowC" + Me.CGShowC.Size = New System.Drawing.Size(210, 22) + Me.CGShowC.Text = "Column Caption" + ' + 'ToolStripSeparator22 + ' + Me.ToolStripSeparator22.Name = "ToolStripSeparator22" + Me.ToolStripSeparator22.Size = New System.Drawing.Size(207, 6) + ' + 'CGBPM + ' + Me.CGBPM.Checked = True + Me.CGBPM.CheckOnClick = True + Me.CGBPM.CheckState = System.Windows.Forms.CheckState.Checked + Me.CGBPM.Name = "CGBPM" + Me.CGBPM.ShortcutKeys = CType((System.Windows.Forms.Keys.Alt Or System.Windows.Forms.Keys.B), System.Windows.Forms.Keys) + Me.CGBPM.Size = New System.Drawing.Size(210, 22) + Me.CGBPM.Text = "BPM" + ' + 'CGSTOP + ' + Me.CGSTOP.Checked = True + Me.CGSTOP.CheckOnClick = True + Me.CGSTOP.CheckState = System.Windows.Forms.CheckState.Checked + Me.CGSTOP.Name = "CGSTOP" + Me.CGSTOP.ShortcutKeys = CType((System.Windows.Forms.Keys.Alt Or System.Windows.Forms.Keys.S), System.Windows.Forms.Keys) + Me.CGSTOP.Size = New System.Drawing.Size(210, 22) + Me.CGSTOP.Text = "STOP" + ' + 'CGSCROLL + ' + Me.CGSCROLL.Checked = True + Me.CGSCROLL.CheckOnClick = True + Me.CGSCROLL.CheckState = System.Windows.Forms.CheckState.Checked + Me.CGSCROLL.Name = "CGSCROLL" + Me.CGSCROLL.ShortcutKeys = CType((System.Windows.Forms.Keys.Alt Or System.Windows.Forms.Keys.C), System.Windows.Forms.Keys) + Me.CGSCROLL.Size = New System.Drawing.Size(210, 22) + Me.CGSCROLL.Text = "SCROLL" + ' + 'CGBLP + ' + Me.CGBLP.Checked = True + Me.CGBLP.CheckOnClick = True + Me.CGBLP.CheckState = System.Windows.Forms.CheckState.Checked + Me.CGBLP.Name = "CGBLP" + Me.CGBLP.ShortcutKeys = CType((System.Windows.Forms.Keys.Alt Or System.Windows.Forms.Keys.G), System.Windows.Forms.Keys) + Me.CGBLP.Size = New System.Drawing.Size(210, 22) + Me.CGBLP.Text = "BGA / Layer / Poor" + ' + 'mnOptions + ' + Me.mnOptions.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.mnNTInput, Me.mnErrorCheck, Me.mnPreviewOnClick, Me.mnShowFileName, Me.ToolStripSeparator20, Me.mnGOptions, Me.mnVOptions, Me.mnVCOptions, Me.mnPOptions, Me.mnLanguage, Me.mnTheme}) + Me.mnOptions.Name = "mnOptions" + Me.mnOptions.Size = New System.Drawing.Size(61, 19) + Me.mnOptions.Text = "&Options" + ' + 'mnNTInput + ' + Me.mnNTInput.Checked = True + Me.mnNTInput.CheckOnClick = True + Me.mnNTInput.CheckState = System.Windows.Forms.CheckState.Checked + Me.mnNTInput.Image = Global.iBMSC.My.Resources.Resources.x16NTInput + Me.mnNTInput.Name = "mnNTInput" + Me.mnNTInput.ShortcutKeys = System.Windows.Forms.Keys.F8 + Me.mnNTInput.Size = New System.Drawing.Size(253, 22) + Me.mnNTInput.Text = "L&N Input Style - NT/BMSE" + ' + 'mnErrorCheck + ' + Me.mnErrorCheck.Checked = True + Me.mnErrorCheck.CheckOnClick = True + Me.mnErrorCheck.CheckState = System.Windows.Forms.CheckState.Checked + Me.mnErrorCheck.Image = Global.iBMSC.My.Resources.Resources.x16CheckError + Me.mnErrorCheck.Name = "mnErrorCheck" + Me.mnErrorCheck.Size = New System.Drawing.Size(253, 22) + Me.mnErrorCheck.Text = "&Error Check" + ' + 'mnPreviewOnClick + ' + Me.mnPreviewOnClick.Checked = True + Me.mnPreviewOnClick.CheckOnClick = True + Me.mnPreviewOnClick.CheckState = System.Windows.Forms.CheckState.Checked + Me.mnPreviewOnClick.Image = Global.iBMSC.My.Resources.Resources.x16PreviewOnClick + Me.mnPreviewOnClick.Name = "mnPreviewOnClick" + Me.mnPreviewOnClick.Size = New System.Drawing.Size(253, 22) + Me.mnPreviewOnClick.Text = "Preview on &Click" + ' + 'mnShowFileName + ' + Me.mnShowFileName.CheckOnClick = True + Me.mnShowFileName.Image = Global.iBMSC.My.Resources.Resources.x16ShowFileNameN + Me.mnShowFileName.Name = "mnShowFileName" + Me.mnShowFileName.Size = New System.Drawing.Size(253, 22) + Me.mnShowFileName.Text = "Show &File Name on Notes" + ' + 'ToolStripSeparator20 + ' + Me.ToolStripSeparator20.Name = "ToolStripSeparator20" + Me.ToolStripSeparator20.Size = New System.Drawing.Size(250, 6) + ' + 'mnGOptions + ' + Me.mnGOptions.Image = Global.iBMSC.My.Resources.Resources.x16GeneralOptions + Me.mnGOptions.Name = "mnGOptions" + Me.mnGOptions.ShortcutKeys = System.Windows.Forms.Keys.F10 + Me.mnGOptions.Size = New System.Drawing.Size(253, 22) + Me.mnGOptions.Text = "&General Options" + ' + 'mnVOptions + ' + Me.mnVOptions.Image = Global.iBMSC.My.Resources.Resources.x16VisualOptions + Me.mnVOptions.Name = "mnVOptions" + Me.mnVOptions.ShortcutKeys = System.Windows.Forms.Keys.F12 + Me.mnVOptions.Size = New System.Drawing.Size(253, 22) + Me.mnVOptions.Text = "&Visual Options" + ' + 'mnVCOptions + ' + Me.mnVCOptions.Image = Global.iBMSC.My.Resources.Resources.x16VisualOptions + Me.mnVCOptions.Name = "mnVCOptions" + Me.mnVCOptions.ShortcutKeys = CType((System.Windows.Forms.Keys.Shift Or System.Windows.Forms.Keys.F12), System.Windows.Forms.Keys) + Me.mnVCOptions.Size = New System.Drawing.Size(253, 22) + Me.mnVCOptions.Text = "C&olor Override Options" + ' + 'mnPOptions + ' + Me.mnPOptions.Image = Global.iBMSC.My.Resources.Resources.x16PlayerOptions + Me.mnPOptions.Name = "mnPOptions" + Me.mnPOptions.ShortcutKeys = System.Windows.Forms.Keys.F9 + Me.mnPOptions.Size = New System.Drawing.Size(253, 22) + Me.mnPOptions.Text = "&Player Options" + ' + 'mnConversion + ' + Me.mnConversion.DropDown = Me.cmnConversion + Me.mnConversion.Name = "mnConversion" + Me.mnConversion.Size = New System.Drawing.Size(84, 19) + Me.mnConversion.Text = "&Conversions" + ' + 'cmnConversion + ' + Me.cmnConversion.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.POBLong, Me.POBShort, Me.POBLongShort, Me.ToolStripSeparator10, Me.POBHidden, Me.POBVisible, Me.POBHiddenVisible, Me.ToolStripSeparator11, Me.POBModify, Me.POBMirror, Me.POBFlip, Me.POBRandom, Me.POBSRandom, Me.POBSort}) + Me.cmnConversion.Name = "cmnLanguage" + Me.cmnConversion.OwnerItem = Me.POConvert + Me.cmnConversion.Size = New System.Drawing.Size(222, 280) + ' + 'POBLong + ' + Me.POBLong.Enabled = False + Me.POBLong.Image = Global.iBMSC.My.Resources.Resources.ConvertNotesL + Me.POBLong.Name = "POBLong" + Me.POBLong.Size = New System.Drawing.Size(221, 22) + Me.POBLong.Text = "→ &Long Note" + ' + 'POBShort + ' + Me.POBShort.Image = Global.iBMSC.My.Resources.Resources.ConvertNotesN + Me.POBShort.Name = "POBShort" + Me.POBShort.Size = New System.Drawing.Size(221, 22) + Me.POBShort.Text = "→ &Short Note" + ' + 'POBLongShort + ' + Me.POBLongShort.Enabled = False + Me.POBLongShort.Image = Global.iBMSC.My.Resources.Resources.ConvertNotes + Me.POBLongShort.Name = "POBLongShort" + Me.POBLongShort.Size = New System.Drawing.Size(221, 22) + Me.POBLongShort.Text = "Long Note ↔ Short Note" + ' + 'ToolStripSeparator10 + ' + Me.ToolStripSeparator10.Name = "ToolStripSeparator10" + Me.ToolStripSeparator10.Size = New System.Drawing.Size(218, 6) + ' + 'POBHidden + ' + Me.POBHidden.Image = Global.iBMSC.My.Resources.Resources.ConvertNotesH + Me.POBHidden.Name = "POBHidden" + Me.POBHidden.Size = New System.Drawing.Size(221, 22) + Me.POBHidden.Text = "→ &Hidden Note" + ' + 'POBVisible + ' + Me.POBVisible.Image = Global.iBMSC.My.Resources.Resources.ConvertNotesV + Me.POBVisible.Name = "POBVisible" + Me.POBVisible.Size = New System.Drawing.Size(221, 22) + Me.POBVisible.Text = "→ &Visible Note" + ' + 'POBHiddenVisible + ' + Me.POBHiddenVisible.Image = Global.iBMSC.My.Resources.Resources.ConvertNotesHV + Me.POBHiddenVisible.Name = "POBHiddenVisible" + Me.POBHiddenVisible.Size = New System.Drawing.Size(221, 22) + Me.POBHiddenVisible.Text = "Hidden Note ↔ Visible Note" + ' + 'ToolStripSeparator11 + ' + Me.ToolStripSeparator11.Name = "ToolStripSeparator11" + Me.ToolStripSeparator11.Size = New System.Drawing.Size(218, 6) + ' + 'POBModify + ' + Me.POBModify.Image = Global.iBMSC.My.Resources.Resources.x16ModifyLabel + Me.POBModify.Name = "POBModify" + Me.POBModify.Size = New System.Drawing.Size(221, 22) + Me.POBModify.Text = "Modify &Labels" + ' + 'POBMirror + ' + Me.POBMirror.Image = Global.iBMSC.My.Resources.Resources.x16Mirror + Me.POBMirror.Name = "POBMirror" + Me.POBMirror.Size = New System.Drawing.Size(221, 22) + Me.POBMirror.Text = "&Mirror" + ' + 'POBFlip + ' + Me.POBFlip.Image = Global.iBMSC.My.Resources.Resources.x16Flip + Me.POBFlip.Name = "POBFlip" + Me.POBFlip.Size = New System.Drawing.Size(221, 22) + Me.POBFlip.Text = "&Flip" + ' + 'POBRandom + ' + Me.POBRandom.Image = Global.iBMSC.My.Resources.Resources.x16Mirror + Me.POBRandom.Name = "POBRandom" + Me.POBRandom.Size = New System.Drawing.Size(221, 22) + Me.POBRandom.Text = "&Random" + ' + 'POBSRandom + ' + Me.POBSRandom.Image = Global.iBMSC.My.Resources.Resources.x16Mirror + Me.POBSRandom.Name = "POBSRandom" + Me.POBSRandom.Size = New System.Drawing.Size(221, 22) + Me.POBSRandom.Text = "S-R&andom" + ' + 'POBSort + ' + Me.POBSort.Image = Global.iBMSC.My.Resources.Resources.lgwidth + Me.POBSort.Name = "POBSort" + Me.POBSort.Size = New System.Drawing.Size(221, 22) + Me.POBSort.Text = "S&ort" + ' + 'mnPreview + ' + Me.mnPreview.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.mnPlayB, Me.mnPlay, Me.mnStop}) + Me.mnPreview.Name = "mnPreview" + Me.mnPreview.Size = New System.Drawing.Size(60, 19) + Me.mnPreview.Text = "&Preview" + ' + 'mnPlayB + ' + Me.mnPlayB.Image = Global.iBMSC.My.Resources.Resources.x16PlayB + Me.mnPlayB.Name = "mnPlayB" + Me.mnPlayB.ShortcutKeys = System.Windows.Forms.Keys.F5 + Me.mnPlayB.Size = New System.Drawing.Size(201, 22) + Me.mnPlayB.Text = "Play from &beginning" + ' + 'mnPlay + ' + Me.mnPlay.Image = Global.iBMSC.My.Resources.Resources.x16Play + Me.mnPlay.Name = "mnPlay" + Me.mnPlay.ShortcutKeys = System.Windows.Forms.Keys.F6 + Me.mnPlay.Size = New System.Drawing.Size(201, 22) + Me.mnPlay.Text = "&Play from here" + ' + 'mnStop + ' + Me.mnStop.Image = Global.iBMSC.My.Resources.Resources.x16Stop + Me.mnStop.Name = "mnStop" + Me.mnStop.ShortcutKeys = System.Windows.Forms.Keys.F7 + Me.mnStop.Size = New System.Drawing.Size(201, 22) + Me.mnStop.Text = "&Stop" + ' + 'POConvert + ' + Me.POConvert.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image + Me.POConvert.DropDown = Me.cmnConversion + Me.POConvert.Image = Global.iBMSC.My.Resources.Resources.ConvertNotes + Me.POConvert.ImageTransparentColor = System.Drawing.Color.Magenta + Me.POConvert.Name = "POConvert" + Me.POConvert.Size = New System.Drawing.Size(29, 22) + Me.POConvert.Text = "Convert Notes" + ' + 'TBMain + ' + Me.TBMain.AccessibleRole = System.Windows.Forms.AccessibleRole.ToolBar + Me.TBMain.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch + Me.TBMain.Dock = System.Windows.Forms.DockStyle.None + Me.TBMain.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.TBNew, Me.TBOpen, Me.TBSave, Me.ToolStripSeparator1, Me.TBCut, Me.TBCopy, Me.TBPaste, Me.TBFind, Me.ToolStripSeparator24, Me.TBStatistics, Me.POConvert, Me.TBMyO2, Me.ToolStripSeparator4, Me.TBErrorCheck, Me.TBPreviewOnClick, Me.TBShowFileName, Me.ToolStripSeparator8, Me.TBNTInput, Me.TBWavIncrease, Me.ToolStripSeparator2, Me.TBUndo, Me.TBRedo, Me.ToolStripSeparator5, Me.TBTimeSelect, Me.TBSelect, Me.TBWrite, Me.ToolStripSeparator3, Me.TBPlayB, Me.TBPlay, Me.TBStop, Me.TBPOptions, Me.ToolStripSeparator7, Me.TBVOptions, Me.TBGOptions, Me.TBLanguage, Me.TBTheme, Me.POBStorm, Me.TBTotalValue}) + Me.TBMain.Location = New System.Drawing.Point(3, 23) + Me.TBMain.Name = "TBMain" + Me.TBMain.Size = New System.Drawing.Size(764, 25) + Me.TBMain.TabIndex = 64 + Me.TBMain.Text = "Main Toolbar" + ' + 'TBNew + ' + Me.TBNew.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image + Me.TBNew.Image = Global.iBMSC.My.Resources.Resources.x16New + Me.TBNew.ImageTransparentColor = System.Drawing.Color.Transparent + Me.TBNew.Name = "TBNew" + Me.TBNew.Size = New System.Drawing.Size(23, 22) + Me.TBNew.Text = "New (Ctrl+N)" + ' + 'TBOpen + ' + Me.TBOpen.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image + Me.TBOpen.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.TBOpenR0, Me.TBOpenR1, Me.TBOpenR2, Me.TBOpenR3, Me.TBOpenR4, Me.ToolStripSeparator12, Me.TBImportSM, Me.TBImportIBMSC}) + Me.TBOpen.Image = Global.iBMSC.My.Resources.Resources.x16Open + Me.TBOpen.ImageTransparentColor = System.Drawing.Color.Magenta + Me.TBOpen.Name = "TBOpen" + Me.TBOpen.Size = New System.Drawing.Size(32, 22) + Me.TBOpen.Text = "Open (Ctrl+O)" + ' + 'TBOpenR0 + ' + Me.TBOpenR0.Enabled = False + Me.TBOpenR0.Name = "TBOpenR0" + Me.TBOpenR0.Size = New System.Drawing.Size(199, 22) + Me.TBOpenR0.Tag = "0" + Me.TBOpenR0.Text = "Recent #0" + ' + 'TBOpenR1 + ' + Me.TBOpenR1.Enabled = False + Me.TBOpenR1.Name = "TBOpenR1" + Me.TBOpenR1.Size = New System.Drawing.Size(199, 22) + Me.TBOpenR1.Tag = "1" + Me.TBOpenR1.Text = "Recent #1" + ' + 'TBOpenR2 + ' + Me.TBOpenR2.Enabled = False + Me.TBOpenR2.Name = "TBOpenR2" + Me.TBOpenR2.Size = New System.Drawing.Size(199, 22) + Me.TBOpenR2.Tag = "2" + Me.TBOpenR2.Text = "Recent #2" + ' + 'TBOpenR3 + ' + Me.TBOpenR3.Enabled = False + Me.TBOpenR3.Name = "TBOpenR3" + Me.TBOpenR3.Size = New System.Drawing.Size(199, 22) + Me.TBOpenR3.Tag = "3" + Me.TBOpenR3.Text = "Recent #3" + ' + 'TBOpenR4 + ' + Me.TBOpenR4.Enabled = False + Me.TBOpenR4.Name = "TBOpenR4" + Me.TBOpenR4.Size = New System.Drawing.Size(199, 22) + Me.TBOpenR4.Tag = "4" + Me.TBOpenR4.Text = "Recent #4" + ' + 'ToolStripSeparator12 + ' + Me.ToolStripSeparator12.Name = "ToolStripSeparator12" + Me.ToolStripSeparator12.Size = New System.Drawing.Size(196, 6) + ' + 'TBImportSM + ' + Me.TBImportSM.Image = Global.iBMSC.My.Resources.Resources.x16Import2 + Me.TBImportSM.Name = "TBImportSM" + Me.TBImportSM.Size = New System.Drawing.Size(199, 22) + Me.TBImportSM.Text = "Import from .SM file" + ' + 'TBImportIBMSC + ' + Me.TBImportIBMSC.Image = Global.iBMSC.My.Resources.Resources.x16Import2 + Me.TBImportIBMSC.Name = "TBImportIBMSC" + Me.TBImportIBMSC.Size = New System.Drawing.Size(199, 22) + Me.TBImportIBMSC.Text = "Import from .IBMSC file" + ' + 'TBSave + ' + Me.TBSave.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image + Me.TBSave.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.TBSaveAs, Me.TBExport}) + Me.TBSave.Image = Global.iBMSC.My.Resources.Resources.x16Save + Me.TBSave.ImageTransparentColor = System.Drawing.Color.Magenta + Me.TBSave.Name = "TBSave" + Me.TBSave.Size = New System.Drawing.Size(32, 22) + Me.TBSave.Text = "Save (Ctrl+S)" + ' + 'TBSaveAs + ' + Me.TBSaveAs.Image = Global.iBMSC.My.Resources.Resources.x16SaveAs + Me.TBSaveAs.Name = "TBSaveAs" + Me.TBSaveAs.Size = New System.Drawing.Size(168, 22) + Me.TBSaveAs.Text = "Save As..." + ' + 'TBExport + ' + Me.TBExport.Image = Global.iBMSC.My.Resources.Resources.x16Export + Me.TBExport.Name = "TBExport" + Me.TBExport.Size = New System.Drawing.Size(168, 22) + Me.TBExport.Text = "Export .IBMSC file" + ' + 'ToolStripSeparator1 + ' + Me.ToolStripSeparator1.Name = "ToolStripSeparator1" + Me.ToolStripSeparator1.Size = New System.Drawing.Size(6, 25) + ' + 'TBCut + ' + Me.TBCut.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image + Me.TBCut.Image = Global.iBMSC.My.Resources.Resources.x16Cut + Me.TBCut.ImageTransparentColor = System.Drawing.Color.Magenta + Me.TBCut.Name = "TBCut" + Me.TBCut.Size = New System.Drawing.Size(23, 22) + Me.TBCut.Text = "Cut (Ctrl+X)" + ' + 'TBCopy + ' + Me.TBCopy.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image + Me.TBCopy.Image = Global.iBMSC.My.Resources.Resources.x16Copy + Me.TBCopy.ImageTransparentColor = System.Drawing.Color.Magenta + Me.TBCopy.Name = "TBCopy" + Me.TBCopy.Size = New System.Drawing.Size(23, 22) + Me.TBCopy.Text = "Copy (Ctrl+C)" + ' + 'TBPaste + ' + Me.TBPaste.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image + Me.TBPaste.Image = Global.iBMSC.My.Resources.Resources.x16Paste + Me.TBPaste.ImageTransparentColor = System.Drawing.Color.Magenta + Me.TBPaste.Name = "TBPaste" + Me.TBPaste.Size = New System.Drawing.Size(23, 22) + Me.TBPaste.Text = "Paste (Ctrl+V)" + ' + 'TBFind + ' + Me.TBFind.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image + Me.TBFind.Image = Global.iBMSC.My.Resources.Resources.x16Find + Me.TBFind.ImageTransparentColor = System.Drawing.Color.Magenta + Me.TBFind.Name = "TBFind" + Me.TBFind.Size = New System.Drawing.Size(23, 22) + Me.TBFind.Text = "Find / Delete / Replace (Ctrl+F)" + ' + 'ToolStripSeparator24 + ' + Me.ToolStripSeparator24.Name = "ToolStripSeparator24" + Me.ToolStripSeparator24.Size = New System.Drawing.Size(6, 25) + ' + 'TBStatistics + ' + Me.TBStatistics.Font = New System.Drawing.Font("Segoe UI", 9.0!, System.Drawing.FontStyle.Bold) + Me.TBStatistics.Image = Global.iBMSC.My.Resources.Resources.x16Statistics + Me.TBStatistics.ImageTransparentColor = System.Drawing.Color.Magenta + Me.TBStatistics.Name = "TBStatistics" + Me.TBStatistics.Size = New System.Drawing.Size(34, 22) + Me.TBStatistics.Text = "0" + Me.TBStatistics.ToolTipText = "Statistics (Ctrl+T)" + ' + 'TBMyO2 + ' + Me.TBMyO2.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image + Me.TBMyO2.Image = Global.iBMSC.My.Resources.Resources.x16MyO2 + Me.TBMyO2.ImageTransparentColor = System.Drawing.Color.Magenta + Me.TBMyO2.Name = "TBMyO2" + Me.TBMyO2.Size = New System.Drawing.Size(23, 22) + Me.TBMyO2.Text = "MyO2 ToolBox (Chinese Only)" + ' + 'ToolStripSeparator4 + ' + Me.ToolStripSeparator4.Name = "ToolStripSeparator4" + Me.ToolStripSeparator4.Size = New System.Drawing.Size(6, 25) + ' + 'TBErrorCheck + ' + Me.TBErrorCheck.Checked = True + Me.TBErrorCheck.CheckOnClick = True + Me.TBErrorCheck.CheckState = System.Windows.Forms.CheckState.Checked + Me.TBErrorCheck.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image + Me.TBErrorCheck.Image = Global.iBMSC.My.Resources.Resources.x16CheckError + Me.TBErrorCheck.ImageTransparentColor = System.Drawing.Color.Magenta + Me.TBErrorCheck.Name = "TBErrorCheck" + Me.TBErrorCheck.Size = New System.Drawing.Size(23, 22) + Me.TBErrorCheck.Text = "Error Check" + ' + 'TBPreviewOnClick + ' + Me.TBPreviewOnClick.Checked = True + Me.TBPreviewOnClick.CheckOnClick = True + Me.TBPreviewOnClick.CheckState = System.Windows.Forms.CheckState.Checked + Me.TBPreviewOnClick.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image + Me.TBPreviewOnClick.Image = Global.iBMSC.My.Resources.Resources.x16PreviewOnClick + Me.TBPreviewOnClick.ImageTransparentColor = System.Drawing.Color.Magenta + Me.TBPreviewOnClick.Name = "TBPreviewOnClick" + Me.TBPreviewOnClick.Size = New System.Drawing.Size(23, 22) + Me.TBPreviewOnClick.Text = "Preview On Click" + ' + 'TBShowFileName + ' + Me.TBShowFileName.CheckOnClick = True + Me.TBShowFileName.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image + Me.TBShowFileName.Image = Global.iBMSC.My.Resources.Resources.x16ShowFileNameN + Me.TBShowFileName.ImageTransparentColor = System.Drawing.Color.Magenta + Me.TBShowFileName.Name = "TBShowFileName" + Me.TBShowFileName.Size = New System.Drawing.Size(23, 22) + Me.TBShowFileName.Text = "Show File Name on Notes" + ' + 'ToolStripSeparator8 + ' + Me.ToolStripSeparator8.Name = "ToolStripSeparator8" + Me.ToolStripSeparator8.Size = New System.Drawing.Size(6, 25) + ' + 'TBNTInput + ' + Me.TBNTInput.Checked = True + Me.TBNTInput.CheckOnClick = True + Me.TBNTInput.CheckState = System.Windows.Forms.CheckState.Checked + Me.TBNTInput.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image + Me.TBNTInput.Image = Global.iBMSC.My.Resources.Resources.x16NTInput + Me.TBNTInput.ImageTransparentColor = System.Drawing.Color.Magenta + Me.TBNTInput.Name = "TBNTInput" + Me.TBNTInput.Size = New System.Drawing.Size(23, 22) + Me.TBNTInput.Text = "LongNote Input Style - NoteTool/BMSE" + ' + 'TBWavIncrease + ' + Me.TBWavIncrease.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image + Me.TBWavIncrease.Image = CType(resources.GetObject("TBWavIncrease.Image"), System.Drawing.Image) + Me.TBWavIncrease.ImageTransparentColor = System.Drawing.Color.Magenta + Me.TBWavIncrease.Name = "TBWavIncrease" + Me.TBWavIncrease.Size = New System.Drawing.Size(23, 22) + Me.TBWavIncrease.Text = "Autoincrease WAV when writing" + ' + 'ToolStripSeparator2 + ' + Me.ToolStripSeparator2.Name = "ToolStripSeparator2" + Me.ToolStripSeparator2.Size = New System.Drawing.Size(6, 25) + ' + 'TBUndo + ' + Me.TBUndo.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image + Me.TBUndo.Enabled = False + Me.TBUndo.Image = Global.iBMSC.My.Resources.Resources.x16Undo + Me.TBUndo.ImageTransparentColor = System.Drawing.Color.Magenta + Me.TBUndo.Name = "TBUndo" + Me.TBUndo.Size = New System.Drawing.Size(23, 22) + Me.TBUndo.Text = "Undo (Ctrl+Z)" + ' + 'TBRedo + ' + Me.TBRedo.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image + Me.TBRedo.Enabled = False + Me.TBRedo.Image = Global.iBMSC.My.Resources.Resources.x16Redo + Me.TBRedo.ImageTransparentColor = System.Drawing.Color.Magenta + Me.TBRedo.Name = "TBRedo" + Me.TBRedo.Size = New System.Drawing.Size(23, 22) + Me.TBRedo.Text = "Redo (Ctrl+Y)" + ' + 'ToolStripSeparator5 + ' + Me.ToolStripSeparator5.Name = "ToolStripSeparator5" + Me.ToolStripSeparator5.Size = New System.Drawing.Size(6, 25) + ' + 'TBTimeSelect + ' + Me.TBTimeSelect.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image + Me.TBTimeSelect.Image = Global.iBMSC.My.Resources.Resources.x16TimeSelection + Me.TBTimeSelect.ImageTransparentColor = System.Drawing.Color.Magenta + Me.TBTimeSelect.Name = "TBTimeSelect" + Me.TBTimeSelect.Size = New System.Drawing.Size(23, 22) + Me.TBTimeSelect.Text = "Time Selection Tool (F1)" + ' + 'TBSelect + ' + Me.TBSelect.Checked = True + Me.TBSelect.CheckState = System.Windows.Forms.CheckState.Checked + Me.TBSelect.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image + Me.TBSelect.Image = Global.iBMSC.My.Resources.Resources.x16Select + Me.TBSelect.ImageTransparentColor = System.Drawing.Color.Magenta + Me.TBSelect.Name = "TBSelect" + Me.TBSelect.Size = New System.Drawing.Size(23, 22) + Me.TBSelect.Text = "Select Tool (F2)" + ' + 'TBWrite + ' + Me.TBWrite.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image + Me.TBWrite.Image = Global.iBMSC.My.Resources.Resources.x16Pen + Me.TBWrite.ImageTransparentColor = System.Drawing.Color.Magenta + Me.TBWrite.Name = "TBWrite" + Me.TBWrite.Size = New System.Drawing.Size(23, 22) + Me.TBWrite.Text = "Write Tool (F3)" + ' + 'ToolStripSeparator3 + ' + Me.ToolStripSeparator3.Name = "ToolStripSeparator3" + Me.ToolStripSeparator3.Size = New System.Drawing.Size(6, 25) + ' + 'TBPlayB + ' + Me.TBPlayB.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image + Me.TBPlayB.Image = Global.iBMSC.My.Resources.Resources.x16PlayB + Me.TBPlayB.ImageTransparentColor = System.Drawing.Color.Magenta + Me.TBPlayB.Name = "TBPlayB" + Me.TBPlayB.Size = New System.Drawing.Size(23, 22) + Me.TBPlayB.Text = "Play from beginning (F5)" + ' + 'TBPlay + ' + Me.TBPlay.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image + Me.TBPlay.Image = Global.iBMSC.My.Resources.Resources.x16Play + Me.TBPlay.ImageTransparentColor = System.Drawing.Color.Magenta + Me.TBPlay.Name = "TBPlay" + Me.TBPlay.Size = New System.Drawing.Size(23, 22) + Me.TBPlay.Text = "Play from here (F6)" + ' + 'TBStop + ' + Me.TBStop.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image + Me.TBStop.Image = Global.iBMSC.My.Resources.Resources.x16Stop + Me.TBStop.ImageTransparentColor = System.Drawing.Color.Magenta + Me.TBStop.Name = "TBStop" + Me.TBStop.Size = New System.Drawing.Size(23, 22) + Me.TBStop.Text = "Stop (F7)" + ' + 'TBPOptions + ' + Me.TBPOptions.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image + Me.TBPOptions.Image = Global.iBMSC.My.Resources.Resources.x16PlayerOptions + Me.TBPOptions.ImageTransparentColor = System.Drawing.Color.Magenta + Me.TBPOptions.Name = "TBPOptions" + Me.TBPOptions.Size = New System.Drawing.Size(23, 22) + Me.TBPOptions.Text = "Player Options (F9)" + ' + 'ToolStripSeparator7 + ' + Me.ToolStripSeparator7.Name = "ToolStripSeparator7" + Me.ToolStripSeparator7.Size = New System.Drawing.Size(6, 25) + ' + 'TBVOptions + ' + Me.TBVOptions.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image + Me.TBVOptions.Image = Global.iBMSC.My.Resources.Resources.x16VisualOptions + Me.TBVOptions.ImageTransparentColor = System.Drawing.Color.Magenta + Me.TBVOptions.Name = "TBVOptions" + Me.TBVOptions.Size = New System.Drawing.Size(23, 22) + Me.TBVOptions.Text = "Visual Options (F12)" + ' + 'TBGOptions + ' + Me.TBGOptions.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image + Me.TBGOptions.Image = Global.iBMSC.My.Resources.Resources.x16GeneralOptions + Me.TBGOptions.ImageTransparentColor = System.Drawing.Color.Magenta + Me.TBGOptions.Name = "TBGOptions" + Me.TBGOptions.Size = New System.Drawing.Size(23, 22) + Me.TBGOptions.Text = "General Options (F10)" + ' + 'POBStorm + ' + Me.POBStorm.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image + Me.POBStorm.Image = Global.iBMSC.My.Resources.Resources.x16Storm + Me.POBStorm.ImageTransparentColor = System.Drawing.Color.Magenta + Me.POBStorm.Name = "POBStorm" + Me.POBStorm.Size = New System.Drawing.Size(23, 22) + Me.POBStorm.Text = "Storm" + Me.POBStorm.Visible = False + ' + 'pStatus + ' + Me.pStatus.AutoSize = True + Me.pStatus.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink + Me.pStatus.Controls.Add(Me.FStatus2) + Me.pStatus.Controls.Add(Me.FStatus) + Me.pStatus.Dock = System.Windows.Forms.DockStyle.Bottom + Me.pStatus.Location = New System.Drawing.Point(0, 759) + Me.pStatus.Name = "pStatus" + Me.pStatus.Size = New System.Drawing.Size(952, 22) + Me.pStatus.TabIndex = 62 + ' + 'FStatus2 + ' + Me.FStatus2.AccessibleRole = System.Windows.Forms.AccessibleRole.StatusBar + Me.FStatus2.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.FSSS, Me.FSSL, Me.FSSH, Me.BVCReverse, Me.LblMultiply, Me.TVCM, Me.LblDivide, Me.TVCD, Me.BVCApply, Me.TVCBPM, Me.BVCCalculate, Me.BConvertStop}) + Me.FStatus2.Location = New System.Drawing.Point(0, 0) + Me.FStatus2.Name = "FStatus2" + Me.FStatus2.ShowItemToolTips = True + Me.FStatus2.Size = New System.Drawing.Size(952, 22) + Me.FStatus2.TabIndex = 0 + Me.FStatus2.Text = "Status" + Me.FStatus2.Visible = False + ' + 'FSSS + ' + Me.FSSS.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text + Me.FSSS.Font = New System.Drawing.Font("Segoe UI", 9.0!, System.Drawing.FontStyle.Bold) + Me.FSSS.ImageTransparentColor = System.Drawing.Color.Magenta + Me.FSSS.Name = "FSSS" + Me.FSSS.Size = New System.Drawing.Size(23, 20) + Me.FSSS.Text = "0" + Me.FSSS.ToolTipText = "Selection Start Position" + ' + 'FSSL + ' + Me.FSSL.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text + Me.FSSL.Font = New System.Drawing.Font("Segoe UI", 9.0!, System.Drawing.FontStyle.Bold) + Me.FSSL.ImageTransparentColor = System.Drawing.Color.Magenta + Me.FSSL.Name = "FSSL" + Me.FSSL.Size = New System.Drawing.Size(23, 20) + Me.FSSL.Text = "0" + Me.FSSL.ToolTipText = "Selection Length" + ' + 'FSSH + ' + Me.FSSH.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text + Me.FSSH.Font = New System.Drawing.Font("Segoe UI", 9.0!, System.Drawing.FontStyle.Bold) + Me.FSSH.ImageTransparentColor = System.Drawing.Color.Magenta + Me.FSSH.Name = "FSSH" + Me.FSSH.Size = New System.Drawing.Size(23, 20) + Me.FSSH.Text = "0" + Me.FSSH.ToolTipText = "Selection Split Position" + ' + 'BVCReverse + ' + Me.BVCReverse.BackColor = System.Drawing.Color.FromArgb(CType(CType(192, Byte), Integer), CType(CType(192, Byte), Integer), CType(CType(255, Byte), Integer)) + Me.BVCReverse.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text + Me.BVCReverse.ImageTransparentColor = System.Drawing.Color.Magenta + Me.BVCReverse.Name = "BVCReverse" + Me.BVCReverse.Size = New System.Drawing.Size(102, 20) + Me.BVCReverse.Text = "Reverse Selection" + ' + 'LblMultiply + ' + Me.LblMultiply.Name = "LblMultiply" + Me.LblMultiply.Size = New System.Drawing.Size(15, 17) + Me.LblMultiply.Text = "×" + ' + 'TVCM + ' + Me.TVCM.BackColor = System.Drawing.Color.FromArgb(CType(CType(255, Byte), Integer), CType(CType(192, Byte), Integer), CType(CType(192, Byte), Integer)) + Me.TVCM.BorderStyle = System.Windows.Forms.BorderStyle.None + Me.TVCM.Font = New System.Drawing.Font("Segoe UI", 9.0!, System.Drawing.FontStyle.Bold) + Me.TVCM.Name = "TVCM" + Me.TVCM.Size = New System.Drawing.Size(60, 22) + Me.TVCM.Text = "2" + Me.TVCM.TextBoxTextAlign = System.Windows.Forms.HorizontalAlignment.Center + ' + 'LblDivide + ' + Me.LblDivide.Name = "LblDivide" + Me.LblDivide.Size = New System.Drawing.Size(15, 17) + Me.LblDivide.Text = "÷" + ' + 'TVCD + ' + Me.TVCD.BackColor = System.Drawing.Color.FromArgb(CType(CType(255, Byte), Integer), CType(CType(192, Byte), Integer), CType(CType(192, Byte), Integer)) + Me.TVCD.BorderStyle = System.Windows.Forms.BorderStyle.None + Me.TVCD.Font = New System.Drawing.Font("Segoe UI", 9.0!, System.Drawing.FontStyle.Bold) + Me.TVCD.Name = "TVCD" + Me.TVCD.Size = New System.Drawing.Size(60, 22) + Me.TVCD.Text = "1" + Me.TVCD.TextBoxTextAlign = System.Windows.Forms.HorizontalAlignment.Center + ' + 'BVCApply + ' + Me.BVCApply.BackColor = System.Drawing.Color.FromArgb(CType(CType(192, Byte), Integer), CType(CType(192, Byte), Integer), CType(CType(255, Byte), Integer)) + Me.BVCApply.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text + Me.BVCApply.ImageTransparentColor = System.Drawing.Color.Magenta + Me.BVCApply.Name = "BVCApply" + Me.BVCApply.Size = New System.Drawing.Size(96, 20) + Me.BVCApply.Text = "Expand By Ratio" + Me.BVCApply.ToolTipText = "This will expand notes and selection by the ratio next to this button. Ignores ce" & + "nter bar." + ' + 'TVCBPM + ' + Me.TVCBPM.BackColor = System.Drawing.Color.FromArgb(CType(CType(255, Byte), Integer), CType(CType(192, Byte), Integer), CType(CType(192, Byte), Integer)) + Me.TVCBPM.BorderStyle = System.Windows.Forms.BorderStyle.None + Me.TVCBPM.Font = New System.Drawing.Font("Segoe UI", 9.0!, System.Drawing.FontStyle.Bold) + Me.TVCBPM.Name = "TVCBPM" + Me.TVCBPM.Size = New System.Drawing.Size(80, 22) + Me.TVCBPM.Text = "120" + Me.TVCBPM.TextBoxTextAlign = System.Windows.Forms.HorizontalAlignment.Center + ' + 'BVCCalculate + ' + Me.BVCCalculate.BackColor = System.Drawing.Color.FromArgb(CType(CType(192, Byte), Integer), CType(CType(192, Byte), Integer), CType(CType(255, Byte), Integer)) + Me.BVCCalculate.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text + Me.BVCCalculate.ImageTransparentColor = System.Drawing.Color.Magenta + Me.BVCCalculate.Name = "BVCCalculate" + Me.BVCCalculate.Size = New System.Drawing.Size(103, 20) + Me.BVCCalculate.Text = "Relocate By Value" + Me.BVCCalculate.ToolTipText = "This will move notes within the selection and preserve the selection, given the B" & + "PM value next to this button. Considers center bar." + ' + 'BConvertStop + ' + Me.BConvertStop.BackColor = System.Drawing.Color.FromArgb(CType(CType(192, Byte), Integer), CType(CType(192, Byte), Integer), CType(CType(255, Byte), Integer)) + Me.BConvertStop.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text + Me.BConvertStop.ImageTransparentColor = System.Drawing.Color.Magenta + Me.BConvertStop.Name = "BConvertStop" + Me.BConvertStop.Size = New System.Drawing.Size(115, 20) + Me.BConvertStop.Text = "Transform Into Stop" + Me.BConvertStop.ToolTipText = "This will move notes within the selection and preserve the selection, given the B" & + "PM value next to this button. Considers center bar." + ' + 'FStatus + ' + Me.FStatus.AccessibleRole = System.Windows.Forms.AccessibleRole.StatusBar + Me.FStatus.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.FSC, Me.FSW, Me.FSM, Me.FSP1, Me.FSP3, Me.FSP2, Me.FSP4, Me.TimeStatusLabel, Me.FST, Me.FSH, Me.FSE}) + Me.FStatus.Location = New System.Drawing.Point(0, 0) + Me.FStatus.Name = "FStatus" + Me.FStatus.ShowItemToolTips = True + Me.FStatus.Size = New System.Drawing.Size(952, 22) + Me.FStatus.SizingGrip = False + Me.FStatus.TabIndex = 62 + Me.FStatus.Text = "Status" + ' + 'FSC + ' + Me.FSC.AutoSize = False + Me.FSC.Name = "FSC" + Me.FSC.Size = New System.Drawing.Size(70, 17) + Me.FSC.Text = "BPM" + Me.FSC.ToolTipText = "Column Caption" + ' + 'FSW + ' + Me.FSW.AutoSize = False + Me.FSW.ForeColor = System.Drawing.Color.FromArgb(CType(CType(128, Byte), Integer), CType(CType(64, Byte), Integer), CType(CType(0, Byte), Integer)) + Me.FSW.Name = "FSW" + Me.FSW.Size = New System.Drawing.Size(40, 17) + Me.FSW.Text = "01" + Me.FSW.ToolTipText = "Note Index" + ' + 'FSM + ' + Me.FSM.AutoSize = False + Me.FSM.ForeColor = System.Drawing.Color.Teal + Me.FSM.Name = "FSM" + Me.FSM.Size = New System.Drawing.Size(40, 17) + Me.FSM.Text = "000" + Me.FSM.ToolTipText = "Measure Index" + ' + 'FSP1 + ' + Me.FSP1.AutoSize = False + Me.FSP1.Font = New System.Drawing.Font("Segoe UI", 9.0!, System.Drawing.FontStyle.Bold) + Me.FSP1.Name = "FSP1" + Me.FSP1.Size = New System.Drawing.Size(170, 17) + Me.FSP1.Text = "9.41176470588235 / 9999" + Me.FSP1.ToolTipText = "Grid Resolution" + ' + 'FSP3 + ' + Me.FSP3.AutoSize = False + Me.FSP3.Font = New System.Drawing.Font("Segoe UI", 9.0!, System.Drawing.FontStyle.Bold) + Me.FSP3.ForeColor = System.Drawing.Color.Maroon + Me.FSP3.Name = "FSP3" + Me.FSP3.Size = New System.Drawing.Size(85, 17) + Me.FSP3.Text = "9999 / 9999" + Me.FSP3.ToolTipText = "Reduced Resolution" + ' + 'FSP2 + ' + Me.FSP2.AutoSize = False + Me.FSP2.Font = New System.Drawing.Font("Segoe UI", 9.0!, System.Drawing.FontStyle.Bold) + Me.FSP2.ForeColor = System.Drawing.Color.Green + Me.FSP2.Name = "FSP2" + Me.FSP2.Size = New System.Drawing.Size(170, 17) + Me.FSP2.Text = "112.941176470588 / 9999" + Me.FSP2.ToolTipText = "Measure Resolution" + ' + 'FSP4 + ' + Me.FSP4.AutoSize = False + Me.FSP4.Name = "FSP4" + Me.FSP4.Size = New System.Drawing.Size(115, 17) + Me.FSP4.Text = "112.941176470588" + Me.FSP4.ToolTipText = "Absolute Position" + ' + 'TimeStatusLabel + ' + Me.TimeStatusLabel.Name = "TimeStatusLabel" + Me.TimeStatusLabel.Size = New System.Drawing.Size(55, 17) + Me.TimeStatusLabel.Text = "00:00:000" + ' + 'FST + ' + Me.FST.ForeColor = System.Drawing.Color.Olive + Me.FST.LinkColor = System.Drawing.Color.FromArgb(CType(CType(0, Byte), Integer), CType(CType(0, Byte), Integer), CType(CType(255, Byte), Integer)) + Me.FST.Name = "FST" + Me.FST.Size = New System.Drawing.Size(64, 17) + Me.FST.Text = "Length = 0" + ' + 'FSH + ' + Me.FSH.ForeColor = System.Drawing.Color.Blue + Me.FSH.Name = "FSH" + Me.FSH.Size = New System.Drawing.Size(46, 17) + Me.FSH.Text = "Hidden" + ' + 'FSE + ' + Me.FSE.ForeColor = System.Drawing.Color.Red + Me.FSE.Name = "FSE" + Me.FSE.Size = New System.Drawing.Size(32, 17) + Me.FSE.Text = "Error" + ' + 'TimerMiddle + ' + Me.TimerMiddle.Interval = 15 + ' + 'ToolStripContainer1 + ' + ' + 'ToolStripContainer1.ContentPanel + ' + Me.ToolStripContainer1.ContentPanel.Controls.Add(Me.PMain) + Me.ToolStripContainer1.ContentPanel.Controls.Add(Me.SpR) + Me.ToolStripContainer1.ContentPanel.Controls.Add(Me.SpL) + Me.ToolStripContainer1.ContentPanel.Controls.Add(Me.PMainR) + Me.ToolStripContainer1.ContentPanel.Controls.Add(Me.PMainL) + Me.ToolStripContainer1.ContentPanel.Size = New System.Drawing.Size(952, 711) + Me.ToolStripContainer1.Dock = System.Windows.Forms.DockStyle.Fill + Me.ToolStripContainer1.Location = New System.Drawing.Point(0, 0) + Me.ToolStripContainer1.Name = "ToolStripContainer1" + Me.ToolStripContainer1.Size = New System.Drawing.Size(952, 759) + Me.ToolStripContainer1.TabIndex = 65 + Me.ToolStripContainer1.Text = "ToolStripContainer1" + ' + 'ToolStripContainer1.TopToolStripPanel + ' + Me.ToolStripContainer1.TopToolStripPanel.Controls.Add(Me.mnMain) + Me.ToolStripContainer1.TopToolStripPanel.Controls.Add(Me.TBMain) + ' + 'PMain + ' + Me.PMain.BackColor = System.Drawing.Color.Black + Me.PMain.Controls.Add(Me.PMainIn) + Me.PMain.Controls.Add(Me.MainPanelScroll) + Me.PMain.Controls.Add(Me.HS) + Me.PMain.Dock = System.Windows.Forms.DockStyle.Fill + Me.PMain.Font = New System.Drawing.Font("Verdana", 9.0!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.PMain.ForeColor = System.Drawing.Color.White + Me.PMain.Location = New System.Drawing.Point(5, 0) + Me.PMain.Name = "PMain" + Me.PMain.Size = New System.Drawing.Size(942, 711) + Me.PMain.TabIndex = 58 + Me.PMain.Tag = "1" + ' + 'PMainIn + ' + Me.PMainIn.BackColor = System.Drawing.Color.Black + Me.PMainIn.Dock = System.Windows.Forms.DockStyle.Fill + Me.PMainIn.Font = New System.Drawing.Font("Verdana", 9.0!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.PMainIn.ForeColor = System.Drawing.Color.White + Me.PMainIn.Location = New System.Drawing.Point(0, 0) + Me.PMainIn.Name = "PMainIn" + Me.PMainIn.Size = New System.Drawing.Size(925, 694) + Me.PMainIn.TabIndex = 0 + Me.PMainIn.TabStop = True + Me.PMainIn.Tag = "1" + ' + 'MainPanelScroll + ' + Me.MainPanelScroll.AccessibleRole = System.Windows.Forms.AccessibleRole.ScrollBar + Me.MainPanelScroll.Dock = System.Windows.Forms.DockStyle.Right + Me.MainPanelScroll.LargeChange = 592 + Me.MainPanelScroll.Location = New System.Drawing.Point(925, 0) + Me.MainPanelScroll.Maximum = 591 + Me.MainPanelScroll.Minimum = -10000 + Me.MainPanelScroll.Name = "MainPanelScroll" + Me.MainPanelScroll.Size = New System.Drawing.Size(17, 694) + Me.MainPanelScroll.SmallChange = 12 + Me.MainPanelScroll.TabIndex = 2 + Me.MainPanelScroll.Tag = "1" + ' + 'HS + ' + Me.HS.AccessibleRole = System.Windows.Forms.AccessibleRole.ScrollBar + Me.HS.Dock = System.Windows.Forms.DockStyle.Bottom + Me.HS.LargeChange = 777 + Me.HS.Location = New System.Drawing.Point(0, 694) + Me.HS.Maximum = 1233 + Me.HS.Name = "HS" + Me.HS.Size = New System.Drawing.Size(942, 17) + Me.HS.TabIndex = 3 + Me.HS.Tag = "1" + ' + 'SpR + ' + Me.SpR.Dock = System.Windows.Forms.DockStyle.Right + Me.SpR.FlatAppearance.BorderSize = 0 + Me.SpR.FlatStyle = System.Windows.Forms.FlatStyle.Flat + Me.SpR.Location = New System.Drawing.Point(947, 0) + Me.SpR.Name = "SpR" + Me.SpR.Size = New System.Drawing.Size(5, 711) + Me.SpR.TabIndex = 59 + Me.SpR.TabStop = False + Me.SpR.UseVisualStyleBackColor = True + Me.SpR.Visible = False + ' + 'SpL + ' + Me.SpL.Dock = System.Windows.Forms.DockStyle.Left + Me.SpL.FlatAppearance.BorderSize = 0 + Me.SpL.FlatStyle = System.Windows.Forms.FlatStyle.Flat + Me.SpL.Location = New System.Drawing.Point(0, 0) + Me.SpL.Name = "SpL" + Me.SpL.Size = New System.Drawing.Size(5, 711) + Me.SpL.TabIndex = 60 + Me.SpL.TabStop = False + Me.SpL.UseVisualStyleBackColor = True + Me.SpL.Visible = False + ' + 'PMainR + ' + Me.PMainR.BackColor = System.Drawing.Color.Black + Me.PMainR.Controls.Add(Me.PMainInR) + Me.PMainR.Controls.Add(Me.RightPanelScroll) + Me.PMainR.Controls.Add(Me.HSR) + Me.PMainR.Dock = System.Windows.Forms.DockStyle.Right + Me.PMainR.Font = New System.Drawing.Font("Verdana", 9.0!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.PMainR.ForeColor = System.Drawing.Color.White + Me.PMainR.Location = New System.Drawing.Point(952, 0) + Me.PMainR.Name = "PMainR" + Me.PMainR.Size = New System.Drawing.Size(0, 711) + Me.PMainR.TabIndex = 56 + Me.PMainR.Tag = "2" + ' + 'PMainInR + ' + Me.PMainInR.BackColor = System.Drawing.Color.Black + Me.PMainInR.Dock = System.Windows.Forms.DockStyle.Fill + Me.PMainInR.Font = New System.Drawing.Font("Verdana", 9.0!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.PMainInR.ForeColor = System.Drawing.Color.White + Me.PMainInR.Location = New System.Drawing.Point(0, 0) + Me.PMainInR.Name = "PMainInR" + Me.PMainInR.Size = New System.Drawing.Size(0, 694) + Me.PMainInR.TabIndex = 0 + Me.PMainInR.TabStop = True + Me.PMainInR.Tag = "2" + ' + 'RightPanelScroll + ' + Me.RightPanelScroll.Dock = System.Windows.Forms.DockStyle.Right + Me.RightPanelScroll.LargeChange = 592 + Me.RightPanelScroll.Location = New System.Drawing.Point(-17, 0) + Me.RightPanelScroll.Maximum = 591 + Me.RightPanelScroll.Minimum = -10000 + Me.RightPanelScroll.Name = "RightPanelScroll" + Me.RightPanelScroll.Size = New System.Drawing.Size(17, 694) + Me.RightPanelScroll.SmallChange = 12 + Me.RightPanelScroll.TabIndex = 2 + Me.RightPanelScroll.Tag = "2" + ' + 'HSR + ' + Me.HSR.Dock = System.Windows.Forms.DockStyle.Bottom + Me.HSR.LargeChange = 777 + Me.HSR.Location = New System.Drawing.Point(0, 694) + Me.HSR.Maximum = 1233 + Me.HSR.Name = "HSR" + Me.HSR.Size = New System.Drawing.Size(0, 17) + Me.HSR.TabIndex = 3 + Me.HSR.Tag = "2" + ' + 'PMainL + ' + Me.PMainL.BackColor = System.Drawing.Color.Black + Me.PMainL.Controls.Add(Me.PMainInL) + Me.PMainL.Controls.Add(Me.LeftPanelScroll) + Me.PMainL.Controls.Add(Me.HSL) + Me.PMainL.Dock = System.Windows.Forms.DockStyle.Left + Me.PMainL.Font = New System.Drawing.Font("Verdana", 9.0!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.PMainL.ForeColor = System.Drawing.Color.White + Me.PMainL.Location = New System.Drawing.Point(0, 0) + Me.PMainL.Name = "PMainL" + Me.PMainL.Size = New System.Drawing.Size(0, 711) + Me.PMainL.TabIndex = 54 + Me.PMainL.Tag = "0" + ' + 'PMainInL + ' + Me.PMainInL.BackColor = System.Drawing.Color.Black + Me.PMainInL.Dock = System.Windows.Forms.DockStyle.Fill + Me.PMainInL.Font = New System.Drawing.Font("Verdana", 9.0!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.PMainInL.ForeColor = System.Drawing.Color.White + Me.PMainInL.Location = New System.Drawing.Point(0, 0) + Me.PMainInL.Name = "PMainInL" + Me.PMainInL.Size = New System.Drawing.Size(0, 694) + Me.PMainInL.TabIndex = 0 + Me.PMainInL.TabStop = True + Me.PMainInL.Tag = "0" + ' + 'LeftPanelScroll + ' + Me.LeftPanelScroll.Dock = System.Windows.Forms.DockStyle.Right + Me.LeftPanelScroll.LargeChange = 592 + Me.LeftPanelScroll.Location = New System.Drawing.Point(-17, 0) + Me.LeftPanelScroll.Maximum = 591 + Me.LeftPanelScroll.Minimum = -10000 + Me.LeftPanelScroll.Name = "LeftPanelScroll" + Me.LeftPanelScroll.Size = New System.Drawing.Size(17, 694) + Me.LeftPanelScroll.SmallChange = 12 + Me.LeftPanelScroll.TabIndex = 2 + Me.LeftPanelScroll.Tag = "0" + ' + 'HSL + ' + Me.HSL.Dock = System.Windows.Forms.DockStyle.Bottom + Me.HSL.LargeChange = 777 + Me.HSL.Location = New System.Drawing.Point(0, 694) + Me.HSL.Maximum = 1233 + Me.HSL.Name = "HSL" + Me.HSL.Size = New System.Drawing.Size(0, 17) + Me.HSL.TabIndex = 3 + Me.HSL.Tag = "0" + ' + 'POptionsResizer + ' + Me.POptionsResizer.AutoSize = True + Me.POptionsResizer.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink + Me.POptionsResizer.Dock = System.Windows.Forms.DockStyle.Right + Me.POptionsResizer.FlatAppearance.BorderSize = 0 + Me.POptionsResizer.FlatStyle = System.Windows.Forms.FlatStyle.Flat + Me.POptionsResizer.Location = New System.Drawing.Point(952, 0) + Me.POptionsResizer.Name = "POptionsResizer" + Me.POptionsResizer.Size = New System.Drawing.Size(6, 781) + Me.POptionsResizer.TabIndex = 67 + Me.POptionsResizer.TabStop = False + Me.POptionsResizer.UseVisualStyleBackColor = True + ' + 'cVSLockR + ' + Me.cVSLockR.Appearance = System.Windows.Forms.Appearance.Button + Me.cVSLockR.FlatStyle = System.Windows.Forms.FlatStyle.Popup + Me.cVSLockR.Image = Global.iBMSC.My.Resources.Resources.x16Lock + Me.cVSLockR.Location = New System.Drawing.Point(46, 0) + Me.cVSLockR.Margin = New System.Windows.Forms.Padding(0) + Me.cVSLockR.Name = "cVSLockR" + Me.cVSLockR.Size = New System.Drawing.Size(23, 23) + Me.cVSLockR.TabIndex = 305 + Me.cVSLockR.Tag = "2" + Me.ToolTipUniversal.SetToolTip(Me.cVSLockR, "Lock Right Editing Panel") + ' + 'cVSLock + ' + Me.cVSLock.Appearance = System.Windows.Forms.Appearance.Button + Me.cVSLock.FlatStyle = System.Windows.Forms.FlatStyle.Popup + Me.cVSLock.Image = Global.iBMSC.My.Resources.Resources.x16Lock + Me.cVSLock.Location = New System.Drawing.Point(23, 0) + Me.cVSLock.Margin = New System.Windows.Forms.Padding(0) + Me.cVSLock.Name = "cVSLock" + Me.cVSLock.Size = New System.Drawing.Size(23, 23) + Me.cVSLock.TabIndex = 304 + Me.cVSLock.Tag = "1" + Me.ToolTipUniversal.SetToolTip(Me.cVSLock, "Lock Middle Editing Panel") + ' + 'cVSLockL + ' + Me.cVSLockL.Appearance = System.Windows.Forms.Appearance.Button + Me.cVSLockL.FlatStyle = System.Windows.Forms.FlatStyle.Popup + Me.cVSLockL.Image = Global.iBMSC.My.Resources.Resources.x16Lock + Me.cVSLockL.Location = New System.Drawing.Point(0, 0) + Me.cVSLockL.Margin = New System.Windows.Forms.Padding(0) + Me.cVSLockL.Name = "cVSLockL" + Me.cVSLockL.Size = New System.Drawing.Size(23, 23) + Me.cVSLockL.TabIndex = 303 + Me.cVSLockL.Tag = "0" + Me.ToolTipUniversal.SetToolTip(Me.cVSLockL, "Lock Left Editing Panel") + ' + 'BWLock + ' + Me.BWLock.Appearance = System.Windows.Forms.Appearance.Button + Me.BWLock.Checked = True + Me.BWLock.CheckState = System.Windows.Forms.CheckState.Checked + Me.BWLock.Image = Global.iBMSC.My.Resources.Resources.x16Lock + Me.BWLock.Location = New System.Drawing.Point(48, 0) + Me.BWLock.Margin = New System.Windows.Forms.Padding(0) + Me.BWLock.Name = "BWLock" + Me.BWLock.Size = New System.Drawing.Size(24, 24) + Me.BWLock.TabIndex = 404 + Me.ToolTipUniversal.SetToolTip(Me.BWLock, "Lock to BGM") + Me.BWLock.UseVisualStyleBackColor = True + ' + 'BWClear + ' + Me.BWClear.Image = Global.iBMSC.My.Resources.Resources.x16Remove + Me.BWClear.Location = New System.Drawing.Point(24, 0) + Me.BWClear.Margin = New System.Windows.Forms.Padding(0) + Me.BWClear.Name = "BWClear" + Me.BWClear.Size = New System.Drawing.Size(24, 24) + Me.BWClear.TabIndex = 403 + Me.ToolTipUniversal.SetToolTip(Me.BWClear, "Clear WaveForm") + Me.BWClear.UseVisualStyleBackColor = True + ' + 'BWLoad + ' + Me.BWLoad.Image = Global.iBMSC.My.Resources.Resources.x16Add + Me.BWLoad.Location = New System.Drawing.Point(0, 0) + Me.BWLoad.Margin = New System.Windows.Forms.Padding(0) + Me.BWLoad.Name = "BWLoad" + Me.BWLoad.Size = New System.Drawing.Size(24, 24) + Me.BWLoad.TabIndex = 402 + Me.ToolTipUniversal.SetToolTip(Me.BWLoad, "Load WaveForm") + Me.BWLoad.UseVisualStyleBackColor = True + ' + 'BWAVRemove + ' + Me.BWAVRemove.Image = Global.iBMSC.My.Resources.Resources.x16Remove + Me.BWAVRemove.Location = New System.Drawing.Point(72, 0) + Me.BWAVRemove.Margin = New System.Windows.Forms.Padding(0) + Me.BWAVRemove.Name = "BWAVRemove" + Me.BWAVRemove.Size = New System.Drawing.Size(24, 24) + Me.BWAVRemove.TabIndex = 605 + Me.ToolTipUniversal.SetToolTip(Me.BWAVRemove, "Remove") + Me.BWAVRemove.UseVisualStyleBackColor = True + ' + 'BWAVBrowse + ' + Me.BWAVBrowse.Image = Global.iBMSC.My.Resources.Resources.x16PlayerBrowse + Me.BWAVBrowse.Location = New System.Drawing.Point(48, 0) + Me.BWAVBrowse.Margin = New System.Windows.Forms.Padding(0) + Me.BWAVBrowse.Name = "BWAVBrowse" + Me.BWAVBrowse.Size = New System.Drawing.Size(24, 24) + Me.BWAVBrowse.TabIndex = 604 + Me.ToolTipUniversal.SetToolTip(Me.BWAVBrowse, "Browse") + Me.BWAVBrowse.UseVisualStyleBackColor = True + ' + 'BWAVDown + ' + Me.BWAVDown.Image = Global.iBMSC.My.Resources.Resources.x16Down + Me.BWAVDown.Location = New System.Drawing.Point(24, 0) + Me.BWAVDown.Margin = New System.Windows.Forms.Padding(0) + Me.BWAVDown.Name = "BWAVDown" + Me.BWAVDown.Size = New System.Drawing.Size(24, 24) + Me.BWAVDown.TabIndex = 603 + Me.ToolTipUniversal.SetToolTip(Me.BWAVDown, "Move Down") + Me.BWAVDown.UseVisualStyleBackColor = True + ' + 'BWAVUp + ' + Me.BWAVUp.Image = Global.iBMSC.My.Resources.Resources.x16Up + Me.BWAVUp.Location = New System.Drawing.Point(0, 0) + Me.BWAVUp.Margin = New System.Windows.Forms.Padding(0) + Me.BWAVUp.Name = "BWAVUp" + Me.BWAVUp.Size = New System.Drawing.Size(24, 24) + Me.BWAVUp.TabIndex = 602 + Me.ToolTipUniversal.SetToolTip(Me.BWAVUp, "Move Up") + Me.BWAVUp.UseVisualStyleBackColor = True + ' + 'POptions + ' + Me.POptions.AutoSize = True + Me.POptions.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink + Me.POptions.Controls.Add(Me.POExpansion) + Me.POptions.Controls.Add(Me.POBeat) + Me.POptions.Controls.Add(Me.POWAV) + Me.POptions.Controls.Add(Me.POWaveForm) + Me.POptions.Controls.Add(Me.POGrid) + Me.POptions.Controls.Add(Me.POHeader) + Me.POptions.Dock = System.Windows.Forms.DockStyle.Top + Me.POptions.Location = New System.Drawing.Point(0, 0) + Me.POptions.Name = "POptions" + Me.POptions.Size = New System.Drawing.Size(183, 1747) + Me.POptions.TabIndex = 29 + ' + 'POExpansion + ' + Me.POExpansion.AutoSize = True + Me.POExpansion.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink + Me.POExpansion.Controls.Add(Me.POExpansionInner) + Me.POExpansion.Controls.Add(Me.POExpansionSwitch) + Me.POExpansion.Dock = System.Windows.Forms.DockStyle.Top + Me.POExpansion.Location = New System.Drawing.Point(0, 1452) + Me.POExpansion.Name = "POExpansion" + Me.POExpansion.Size = New System.Drawing.Size(183, 295) + Me.POExpansion.TabIndex = 6 + ' + 'POExpansionInner + ' + Me.POExpansionInner.Controls.Add(Me.ECSelectSection) + Me.POExpansionInner.Controls.Add(Me.TExpansion) + Me.POExpansionInner.Controls.Add(Me.POExpansionResizer) + Me.POExpansionInner.Dock = System.Windows.Forms.DockStyle.Top + Me.POExpansionInner.Font = New System.Drawing.Font("Consolas", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.POExpansionInner.Location = New System.Drawing.Point(0, 20) + Me.POExpansionInner.Name = "POExpansionInner" + Me.POExpansionInner.Size = New System.Drawing.Size(183, 275) + Me.POExpansionInner.TabIndex = 7 + Me.POExpansionInner.Visible = False + ' + 'ECSelectSection + ' + Me.ECSelectSection.Anchor = System.Windows.Forms.AnchorStyles.Bottom + Me.ECSelectSection.Font = New System.Drawing.Font("Segoe UI", 9.0!) + Me.ECSelectSection.Location = New System.Drawing.Point(0, 250) + Me.ECSelectSection.Name = "ECSelectSection" + Me.ECSelectSection.Size = New System.Drawing.Size(183, 20) + Me.ECSelectSection.TabIndex = 1003 + Me.ECSelectSection.Text = "Select Section" + Me.ECSelectSection.UseVisualStyleBackColor = True + ' + 'TExpansion + ' + Me.TExpansion.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle + Me.TExpansion.Dock = System.Windows.Forms.DockStyle.Top + Me.TExpansion.HideSelection = False + Me.TExpansion.Location = New System.Drawing.Point(0, 0) + Me.TExpansion.Multiline = True + Me.TExpansion.Name = "TExpansion" + Me.TExpansion.ScrollBars = System.Windows.Forms.ScrollBars.Vertical + Me.TExpansion.Size = New System.Drawing.Size(183, 245) + Me.TExpansion.TabIndex = 1002 + Me.TExpansion.WordWrap = False + ' + 'POExpansionResizer + ' + Me.POExpansionResizer.Dock = System.Windows.Forms.DockStyle.Bottom + Me.POExpansionResizer.FlatAppearance.BorderSize = 0 + Me.POExpansionResizer.FlatStyle = System.Windows.Forms.FlatStyle.Flat + Me.POExpansionResizer.Location = New System.Drawing.Point(0, 270) + Me.POExpansionResizer.Margin = New System.Windows.Forms.Padding(0) + Me.POExpansionResizer.Name = "POExpansionResizer" + Me.POExpansionResizer.Size = New System.Drawing.Size(183, 5) + Me.POExpansionResizer.TabIndex = 65 + Me.POExpansionResizer.TabStop = False + Me.POExpansionResizer.UseVisualStyleBackColor = True + ' + 'POExpansionSwitch + ' + Me.POExpansionSwitch.Appearance = System.Windows.Forms.Appearance.Button + Me.POExpansionSwitch.BackColor = System.Drawing.SystemColors.Control + Me.POExpansionSwitch.Cursor = System.Windows.Forms.Cursors.Hand + Me.POExpansionSwitch.Dock = System.Windows.Forms.DockStyle.Top + Me.POExpansionSwitch.Font = New System.Drawing.Font("Segoe UI", 9.0!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.POExpansionSwitch.Location = New System.Drawing.Point(0, 0) + Me.POExpansionSwitch.Name = "POExpansionSwitch" + Me.POExpansionSwitch.Size = New System.Drawing.Size(183, 20) + Me.POExpansionSwitch.TabIndex = 1001 + Me.POExpansionSwitch.TabStop = False + Me.POExpansionSwitch.Text = "Expansion Code" + Me.POExpansionSwitch.TextAlign = System.Drawing.ContentAlignment.MiddleCenter + Me.POExpansionSwitch.UseCompatibleTextRendering = True + Me.POExpansionSwitch.UseVisualStyleBackColor = False + ' + 'POBeat + ' + Me.POBeat.AutoSize = True + Me.POBeat.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink + Me.POBeat.Controls.Add(Me.POBeatInner) + Me.POBeat.Controls.Add(Me.POBeatSwitch) + Me.POBeat.Dock = System.Windows.Forms.DockStyle.Top + Me.POBeat.Location = New System.Drawing.Point(0, 1182) + Me.POBeat.Name = "POBeat" + Me.POBeat.Size = New System.Drawing.Size(183, 270) + Me.POBeat.TabIndex = 5 + ' + 'POBeatInner + ' + Me.POBeatInner.ColumnCount = 1 + Me.POBeatInner.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100.0!)) + Me.POBeatInner.Controls.Add(Me.POBeatExpander, 0, 1) + Me.POBeatInner.Controls.Add(Me.POBeatResizer, 0, 4) + Me.POBeatInner.Controls.Add(Me.TableLayoutPanel7, 0, 0) + Me.POBeatInner.Controls.Add(Me.LBeat, 0, 3) + Me.POBeatInner.Controls.Add(Me.POBeatPart2, 0, 2) + Me.POBeatInner.Dock = System.Windows.Forms.DockStyle.Top + Me.POBeatInner.Location = New System.Drawing.Point(0, 20) + Me.POBeatInner.Name = "POBeatInner" + Me.POBeatInner.RowCount = 5 + Me.POBeatInner.RowStyles.Add(New System.Windows.Forms.RowStyle()) + Me.POBeatInner.RowStyles.Add(New System.Windows.Forms.RowStyle()) + Me.POBeatInner.RowStyles.Add(New System.Windows.Forms.RowStyle()) + Me.POBeatInner.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100.0!)) + Me.POBeatInner.RowStyles.Add(New System.Windows.Forms.RowStyle()) + Me.POBeatInner.Size = New System.Drawing.Size(183, 250) + Me.POBeatInner.TabIndex = 6 + Me.POBeatInner.Visible = False + ' + 'POBeatExpander + ' + Me.POBeatExpander.Appearance = System.Windows.Forms.Appearance.Button + Me.POBeatExpander.AutoSize = True + Me.POBeatExpander.Cursor = System.Windows.Forms.Cursors.Hand + Me.POBeatExpander.Dock = System.Windows.Forms.DockStyle.Top + Me.POBeatExpander.FlatAppearance.BorderSize = 0 + Me.POBeatExpander.FlatStyle = System.Windows.Forms.FlatStyle.Popup + Me.POBeatExpander.Location = New System.Drawing.Point(0, 54) + Me.POBeatExpander.Margin = New System.Windows.Forms.Padding(0) + Me.POBeatExpander.Name = "POBeatExpander" + Me.POBeatExpander.Size = New System.Drawing.Size(183, 25) + Me.POBeatExpander.TabIndex = 901 + Me.POBeatExpander.TabStop = False + Me.POBeatExpander.Text = "Expand..." + Me.POBeatExpander.TextAlign = System.Drawing.ContentAlignment.MiddleCenter + Me.POBeatExpander.UseVisualStyleBackColor = False + ' + 'POBeatResizer + ' + Me.POBeatInner.SetColumnSpan(Me.POBeatResizer, 2) + Me.POBeatResizer.Dock = System.Windows.Forms.DockStyle.Top + Me.POBeatResizer.FlatAppearance.BorderSize = 0 + Me.POBeatResizer.FlatStyle = System.Windows.Forms.FlatStyle.Flat + Me.POBeatResizer.Location = New System.Drawing.Point(0, 245) + Me.POBeatResizer.Margin = New System.Windows.Forms.Padding(0) + Me.POBeatResizer.Name = "POBeatResizer" + Me.POBeatResizer.Size = New System.Drawing.Size(183, 5) + Me.POBeatResizer.TabIndex = 64 + Me.POBeatResizer.TabStop = False + Me.POBeatResizer.UseVisualStyleBackColor = True + ' + 'TableLayoutPanel7 + ' + Me.TableLayoutPanel7.AutoSize = True + Me.TableLayoutPanel7.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink + Me.TableLayoutPanel7.ColumnCount = 4 + Me.TableLayoutPanel7.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 30.0!)) + Me.TableLayoutPanel7.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle()) + Me.TableLayoutPanel7.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 30.0!)) + Me.TableLayoutPanel7.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 40.0!)) + Me.TableLayoutPanel7.Controls.Add(Me.nBeatD, 2, 0) + Me.TableLayoutPanel7.Controls.Add(Me.BBeatApplyV, 3, 1) + Me.TableLayoutPanel7.Controls.Add(Me.nBeatN, 0, 0) + Me.TableLayoutPanel7.Controls.Add(Me.BBeatApply, 3, 0) + Me.TableLayoutPanel7.Controls.Add(Me.Label7, 1, 0) + Me.TableLayoutPanel7.Controls.Add(Me.tBeatValue, 0, 1) + Me.TableLayoutPanel7.Dock = System.Windows.Forms.DockStyle.Fill + Me.TableLayoutPanel7.Location = New System.Drawing.Point(0, 0) + Me.TableLayoutPanel7.Margin = New System.Windows.Forms.Padding(0) + Me.TableLayoutPanel7.Name = "TableLayoutPanel7" + Me.TableLayoutPanel7.RowCount = 2 + Me.TableLayoutPanel7.RowStyles.Add(New System.Windows.Forms.RowStyle()) + Me.TableLayoutPanel7.RowStyles.Add(New System.Windows.Forms.RowStyle()) + Me.TableLayoutPanel7.Size = New System.Drawing.Size(183, 54) + Me.TableLayoutPanel7.TabIndex = 63 + ' + 'nBeatD + ' + Me.nBeatD.Dock = System.Windows.Forms.DockStyle.Fill + Me.nBeatD.Location = New System.Drawing.Point(66, 3) + Me.nBeatD.Maximum = New Decimal(New Integer() {10000, 0, 0, 0}) + Me.nBeatD.Minimum = New Decimal(New Integer() {1, 0, 0, 0}) + Me.nBeatD.Name = "nBeatD" + Me.nBeatD.Size = New System.Drawing.Size(45, 23) + Me.nBeatD.TabIndex = 803 + Me.nBeatD.Value = New Decimal(New Integer() {4, 0, 0, 0}) + ' + 'BBeatApplyV + ' + Me.BBeatApplyV.AutoSize = True + Me.BBeatApplyV.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink + Me.BBeatApplyV.Dock = System.Windows.Forms.DockStyle.Fill + Me.BBeatApplyV.Location = New System.Drawing.Point(114, 29) + Me.BBeatApplyV.Margin = New System.Windows.Forms.Padding(0, 0, 3, 0) + Me.BBeatApplyV.Name = "BBeatApplyV" + Me.BBeatApplyV.Size = New System.Drawing.Size(66, 25) + Me.BBeatApplyV.TabIndex = 806 + Me.BBeatApplyV.Text = "Apply" + Me.BBeatApplyV.UseVisualStyleBackColor = True + ' + 'nBeatN + ' + Me.nBeatN.Dock = System.Windows.Forms.DockStyle.Fill + Me.nBeatN.Location = New System.Drawing.Point(3, 3) + Me.nBeatN.Maximum = New Decimal(New Integer() {99999, 0, 0, 0}) + Me.nBeatN.Minimum = New Decimal(New Integer() {1, 0, 0, 0}) + Me.nBeatN.Name = "nBeatN" + Me.nBeatN.Size = New System.Drawing.Size(45, 23) + Me.nBeatN.TabIndex = 802 + Me.nBeatN.Value = New Decimal(New Integer() {4, 0, 0, 0}) + ' + 'BBeatApply + ' + Me.BBeatApply.AutoSize = True + Me.BBeatApply.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink + Me.BBeatApply.Dock = System.Windows.Forms.DockStyle.Fill + Me.BBeatApply.Location = New System.Drawing.Point(114, 2) + Me.BBeatApply.Margin = New System.Windows.Forms.Padding(0, 2, 3, 2) + Me.BBeatApply.Name = "BBeatApply" + Me.BBeatApply.Size = New System.Drawing.Size(66, 25) + Me.BBeatApply.TabIndex = 804 + Me.BBeatApply.Text = "Apply" + Me.BBeatApply.UseVisualStyleBackColor = True + ' + 'Label7 + ' + Me.Label7.Anchor = System.Windows.Forms.AnchorStyles.None + Me.Label7.AutoSize = True + Me.Label7.Location = New System.Drawing.Point(51, 7) + Me.Label7.Margin = New System.Windows.Forms.Padding(0) + Me.Label7.Name = "Label7" + Me.Label7.Size = New System.Drawing.Size(12, 15) + Me.Label7.TabIndex = 31 + Me.Label7.Text = "/" + Me.Label7.TextAlign = System.Drawing.ContentAlignment.MiddleCenter + ' + 'tBeatValue + ' + Me.TableLayoutPanel7.SetColumnSpan(Me.tBeatValue, 3) + Me.tBeatValue.Dock = System.Windows.Forms.DockStyle.Fill + Me.tBeatValue.Location = New System.Drawing.Point(3, 30) + Me.tBeatValue.Margin = New System.Windows.Forms.Padding(3, 1, 3, 0) + Me.tBeatValue.Name = "tBeatValue" + Me.tBeatValue.Size = New System.Drawing.Size(108, 23) + Me.tBeatValue.TabIndex = 805 + Me.tBeatValue.Text = "1" + ' + 'LBeat + ' + Me.LBeat.Dock = System.Windows.Forms.DockStyle.Fill + Me.LBeat.Font = New System.Drawing.Font("Consolas", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.LBeat.IntegralHeight = False + Me.LBeat.ItemHeight = 14 + Me.LBeat.Items.AddRange(New Object() {"000: 15.984375 (1023/64)"}) + Me.LBeat.Location = New System.Drawing.Point(3, 155) + Me.LBeat.Margin = New System.Windows.Forms.Padding(3, 0, 3, 0) + Me.LBeat.Name = "LBeat" + Me.LBeat.SelectionMode = System.Windows.Forms.SelectionMode.MultiExtended + Me.LBeat.Size = New System.Drawing.Size(177, 90) + Me.LBeat.TabIndex = 906 + ' + 'POBeatPart2 + ' + Me.POBeatPart2.AutoSize = True + Me.POBeatPart2.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink + Me.POBeatPart2.ColumnCount = 1 + Me.POBeatPart2.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100.0!)) + Me.POBeatPart2.Controls.Add(Me.CBeatScale, 0, 3) + Me.POBeatPart2.Controls.Add(Me.CBeatCut, 0, 2) + Me.POBeatPart2.Controls.Add(Me.CBeatMeasure, 0, 1) + Me.POBeatPart2.Controls.Add(Me.CBeatPreserve, 0, 0) + Me.POBeatPart2.Dock = System.Windows.Forms.DockStyle.Fill + Me.POBeatPart2.Location = New System.Drawing.Point(0, 79) + Me.POBeatPart2.Margin = New System.Windows.Forms.Padding(0) + Me.POBeatPart2.Name = "POBeatPart2" + Me.POBeatPart2.RowCount = 4 + Me.POBeatPart2.RowStyles.Add(New System.Windows.Forms.RowStyle()) + Me.POBeatPart2.RowStyles.Add(New System.Windows.Forms.RowStyle()) + Me.POBeatPart2.RowStyles.Add(New System.Windows.Forms.RowStyle()) + Me.POBeatPart2.RowStyles.Add(New System.Windows.Forms.RowStyle()) + Me.POBeatPart2.Size = New System.Drawing.Size(183, 76) + Me.POBeatPart2.TabIndex = 66 + Me.POBeatPart2.Visible = False + ' + 'CBeatScale + ' + Me.CBeatScale.AutoSize = True + Me.CBeatScale.Location = New System.Drawing.Point(3, 57) + Me.CBeatScale.Margin = New System.Windows.Forms.Padding(3, 0, 3, 0) + Me.CBeatScale.Name = "CBeatScale" + Me.CBeatScale.Size = New System.Drawing.Size(151, 19) + Me.CBeatScale.TabIndex = 905 + Me.CBeatScale.Text = "Scale to measure length" + Me.CBeatScale.UseVisualStyleBackColor = True + ' + 'CBeatCut + ' + Me.CBeatCut.AutoEllipsis = True + Me.CBeatCut.Dock = System.Windows.Forms.DockStyle.Fill + Me.CBeatCut.Location = New System.Drawing.Point(3, 38) + Me.CBeatCut.Margin = New System.Windows.Forms.Padding(3, 0, 3, 0) + Me.CBeatCut.Name = "CBeatCut" + Me.CBeatCut.Size = New System.Drawing.Size(177, 19) + Me.CBeatCut.TabIndex = 904 + Me.CBeatCut.Text = "Keep measure position and cut overflow" + Me.CBeatCut.UseVisualStyleBackColor = True + ' + 'CBeatMeasure + ' + Me.CBeatMeasure.AutoSize = True + Me.CBeatMeasure.Location = New System.Drawing.Point(3, 19) + Me.CBeatMeasure.Margin = New System.Windows.Forms.Padding(3, 0, 3, 0) + Me.CBeatMeasure.Name = "CBeatMeasure" + Me.CBeatMeasure.Size = New System.Drawing.Size(145, 19) + Me.CBeatMeasure.TabIndex = 903 + Me.CBeatMeasure.Text = "Keep measure position" + Me.CBeatMeasure.UseVisualStyleBackColor = True + ' + 'CBeatPreserve + ' + Me.CBeatPreserve.AutoSize = True + Me.CBeatPreserve.Checked = True + Me.CBeatPreserve.Location = New System.Drawing.Point(3, 0) + Me.CBeatPreserve.Margin = New System.Windows.Forms.Padding(3, 0, 3, 0) + Me.CBeatPreserve.Name = "CBeatPreserve" + Me.CBeatPreserve.Size = New System.Drawing.Size(145, 19) + Me.CBeatPreserve.TabIndex = 902 + Me.CBeatPreserve.TabStop = True + Me.CBeatPreserve.Text = "Keep absolute position" + Me.CBeatPreserve.UseVisualStyleBackColor = True + ' + 'POBeatSwitch + ' + Me.POBeatSwitch.Appearance = System.Windows.Forms.Appearance.Button + Me.POBeatSwitch.BackColor = System.Drawing.SystemColors.Control + Me.POBeatSwitch.Cursor = System.Windows.Forms.Cursors.Hand + Me.POBeatSwitch.Dock = System.Windows.Forms.DockStyle.Top + Me.POBeatSwitch.Font = New System.Drawing.Font("Segoe UI", 9.0!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.POBeatSwitch.Location = New System.Drawing.Point(0, 0) + Me.POBeatSwitch.Name = "POBeatSwitch" + Me.POBeatSwitch.Size = New System.Drawing.Size(183, 20) + Me.POBeatSwitch.TabIndex = 801 + Me.POBeatSwitch.TabStop = False + Me.POBeatSwitch.Text = "Beat" + Me.POBeatSwitch.TextAlign = System.Drawing.ContentAlignment.MiddleCenter + Me.POBeatSwitch.UseCompatibleTextRendering = True + Me.POBeatSwitch.UseVisualStyleBackColor = False + ' + 'POWAV + ' + Me.POWAV.AllowDrop = True + Me.POWAV.AutoSize = True + Me.POWAV.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink + Me.POWAV.Controls.Add(Me.POWAVInner) + Me.POWAV.Controls.Add(Me.POWAVSwitch) + Me.POWAV.Dock = System.Windows.Forms.DockStyle.Top + Me.POWAV.Location = New System.Drawing.Point(0, 912) + Me.POWAV.Name = "POWAV" + Me.POWAV.Size = New System.Drawing.Size(183, 270) + Me.POWAV.TabIndex = 4 + ' + 'POWAVInner + ' + Me.POWAVInner.ColumnCount = 1 + Me.POWAVInner.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100.0!)) + Me.POWAVInner.Controls.Add(Me.POWAVExpander, 0, 1) + Me.POWAVInner.Controls.Add(Me.LWAV, 0, 3) + Me.POWAVInner.Controls.Add(Me.FlowLayoutPanel3, 0, 0) + Me.POWAVInner.Controls.Add(Me.POWAVResizer, 0, 4) + Me.POWAVInner.Controls.Add(Me.POWAVPart2, 0, 2) + Me.POWAVInner.Dock = System.Windows.Forms.DockStyle.Top + Me.POWAVInner.Location = New System.Drawing.Point(0, 20) + Me.POWAVInner.Name = "POWAVInner" + Me.POWAVInner.RowCount = 5 + Me.POWAVInner.RowStyles.Add(New System.Windows.Forms.RowStyle()) + Me.POWAVInner.RowStyles.Add(New System.Windows.Forms.RowStyle()) + Me.POWAVInner.RowStyles.Add(New System.Windows.Forms.RowStyle()) + Me.POWAVInner.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100.0!)) + Me.POWAVInner.RowStyles.Add(New System.Windows.Forms.RowStyle()) + Me.POWAVInner.Size = New System.Drawing.Size(183, 250) + Me.POWAVInner.TabIndex = 5 + ' + 'POWAVExpander + ' + Me.POWAVExpander.Appearance = System.Windows.Forms.Appearance.Button + Me.POWAVExpander.AutoSize = True + Me.POWAVExpander.Cursor = System.Windows.Forms.Cursors.Hand + Me.POWAVExpander.Dock = System.Windows.Forms.DockStyle.Top + Me.POWAVExpander.FlatAppearance.BorderSize = 0 + Me.POWAVExpander.FlatStyle = System.Windows.Forms.FlatStyle.Popup + Me.POWAVExpander.Location = New System.Drawing.Point(0, 30) + Me.POWAVExpander.Margin = New System.Windows.Forms.Padding(0) + Me.POWAVExpander.Name = "POWAVExpander" + Me.POWAVExpander.Size = New System.Drawing.Size(183, 25) + Me.POWAVExpander.TabIndex = 701 + Me.POWAVExpander.TabStop = False + Me.POWAVExpander.Text = "Expand..." + Me.POWAVExpander.TextAlign = System.Drawing.ContentAlignment.MiddleCenter + Me.POWAVExpander.UseVisualStyleBackColor = False + ' + 'LWAV + ' + Me.LWAV.Dock = System.Windows.Forms.DockStyle.Fill + Me.LWAV.Font = New System.Drawing.Font("Consolas", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.LWAV.IntegralHeight = False + Me.LWAV.ItemHeight = 14 + Me.LWAV.Location = New System.Drawing.Point(3, 93) + Me.LWAV.Margin = New System.Windows.Forms.Padding(3, 0, 3, 0) + Me.LWAV.Name = "LWAV" + Me.LWAV.SelectionMode = System.Windows.Forms.SelectionMode.MultiExtended + Me.LWAV.Size = New System.Drawing.Size(177, 152) + Me.LWAV.TabIndex = 704 + ' + 'FlowLayoutPanel3 + ' + Me.FlowLayoutPanel3.AutoSize = True + Me.FlowLayoutPanel3.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink + Me.FlowLayoutPanel3.Controls.Add(Me.BWAVUp) + Me.FlowLayoutPanel3.Controls.Add(Me.BWAVDown) + Me.FlowLayoutPanel3.Controls.Add(Me.BWAVBrowse) + Me.FlowLayoutPanel3.Controls.Add(Me.BWAVRemove) + Me.FlowLayoutPanel3.Location = New System.Drawing.Point(3, 3) + Me.FlowLayoutPanel3.Name = "FlowLayoutPanel3" + Me.FlowLayoutPanel3.Size = New System.Drawing.Size(96, 24) + Me.FlowLayoutPanel3.TabIndex = 26 + Me.FlowLayoutPanel3.WrapContents = False + ' + 'POWAVResizer + ' + Me.POWAVResizer.Dock = System.Windows.Forms.DockStyle.Top + Me.POWAVResizer.FlatAppearance.BorderSize = 0 + Me.POWAVResizer.FlatStyle = System.Windows.Forms.FlatStyle.Flat + Me.POWAVResizer.Location = New System.Drawing.Point(0, 245) + Me.POWAVResizer.Margin = New System.Windows.Forms.Padding(0) + Me.POWAVResizer.Name = "POWAVResizer" + Me.POWAVResizer.Size = New System.Drawing.Size(183, 5) + Me.POWAVResizer.TabIndex = 33 + Me.POWAVResizer.TabStop = False + Me.POWAVResizer.UseVisualStyleBackColor = True + ' + 'POWAVPart2 + ' + Me.POWAVPart2.AutoSize = True + Me.POWAVPart2.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink + Me.POWAVPart2.ColumnCount = 1 + Me.POWAVPart2.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100.0!)) + Me.POWAVPart2.Controls.Add(Me.CWAVMultiSelect, 0, 0) + Me.POWAVPart2.Controls.Add(Me.CWAVChangeLabel, 0, 1) + Me.POWAVPart2.Dock = System.Windows.Forms.DockStyle.Fill + Me.POWAVPart2.Location = New System.Drawing.Point(0, 55) + Me.POWAVPart2.Margin = New System.Windows.Forms.Padding(0) + Me.POWAVPart2.Name = "POWAVPart2" + Me.POWAVPart2.RowCount = 2 + Me.POWAVPart2.RowStyles.Add(New System.Windows.Forms.RowStyle()) + Me.POWAVPart2.RowStyles.Add(New System.Windows.Forms.RowStyle()) + Me.POWAVPart2.Size = New System.Drawing.Size(183, 38) + Me.POWAVPart2.TabIndex = 35 + Me.POWAVPart2.Visible = False + ' + 'CWAVMultiSelect + ' + Me.CWAVMultiSelect.AutoSize = True + Me.CWAVMultiSelect.Checked = True + Me.CWAVMultiSelect.CheckState = System.Windows.Forms.CheckState.Checked + Me.CWAVMultiSelect.Location = New System.Drawing.Point(3, 0) + Me.CWAVMultiSelect.Margin = New System.Windows.Forms.Padding(3, 0, 3, 0) + Me.CWAVMultiSelect.Name = "CWAVMultiSelect" + Me.CWAVMultiSelect.Size = New System.Drawing.Size(154, 19) + Me.CWAVMultiSelect.TabIndex = 702 + Me.CWAVMultiSelect.Text = "Allow Multiple Selection" + Me.CWAVMultiSelect.UseVisualStyleBackColor = True + ' + 'CWAVChangeLabel + ' + Me.CWAVChangeLabel.AutoSize = True + Me.CWAVChangeLabel.Checked = True + Me.CWAVChangeLabel.CheckState = System.Windows.Forms.CheckState.Checked + Me.CWAVChangeLabel.Location = New System.Drawing.Point(3, 19) + Me.CWAVChangeLabel.Margin = New System.Windows.Forms.Padding(3, 0, 3, 0) + Me.CWAVChangeLabel.Name = "CWAVChangeLabel" + Me.CWAVChangeLabel.Size = New System.Drawing.Size(155, 19) + Me.CWAVChangeLabel.TabIndex = 703 + Me.CWAVChangeLabel.Text = "Synchronize Note Labels" + Me.CWAVChangeLabel.UseVisualStyleBackColor = True + ' + 'POWAVSwitch + ' + Me.POWAVSwitch.Appearance = System.Windows.Forms.Appearance.Button + Me.POWAVSwitch.BackColor = System.Drawing.SystemColors.Control + Me.POWAVSwitch.Checked = True + Me.POWAVSwitch.CheckState = System.Windows.Forms.CheckState.Checked + Me.POWAVSwitch.Cursor = System.Windows.Forms.Cursors.Hand + Me.POWAVSwitch.Dock = System.Windows.Forms.DockStyle.Top + Me.POWAVSwitch.Font = New System.Drawing.Font("Segoe UI", 9.0!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.POWAVSwitch.Location = New System.Drawing.Point(0, 0) + Me.POWAVSwitch.Name = "POWAVSwitch" + Me.POWAVSwitch.Size = New System.Drawing.Size(183, 20) + Me.POWAVSwitch.TabIndex = 601 + Me.POWAVSwitch.TabStop = False + Me.POWAVSwitch.Text = "#WAV (Sounds List)" + Me.POWAVSwitch.TextAlign = System.Drawing.ContentAlignment.MiddleCenter + Me.POWAVSwitch.UseCompatibleTextRendering = True + Me.POWAVSwitch.UseVisualStyleBackColor = False + ' + 'POWaveForm + ' + Me.POWaveForm.AutoSize = True + Me.POWaveForm.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink + Me.POWaveForm.Controls.Add(Me.POWaveFormInner) + Me.POWaveForm.Controls.Add(Me.POWaveFormSwitch) + Me.POWaveForm.Dock = System.Windows.Forms.DockStyle.Top + Me.POWaveForm.Location = New System.Drawing.Point(0, 669) + Me.POWaveForm.Name = "POWaveForm" + Me.POWaveForm.Size = New System.Drawing.Size(183, 243) + Me.POWaveForm.TabIndex = 3 + ' + 'POWaveFormInner + ' + Me.POWaveFormInner.AutoSize = True + Me.POWaveFormInner.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink + Me.POWaveFormInner.Controls.Add(Me.POWaveFormPart2) + Me.POWaveFormInner.Controls.Add(Me.POWaveFormExpander) + Me.POWaveFormInner.Controls.Add(Me.POWaveFormPart1) + Me.POWaveFormInner.Dock = System.Windows.Forms.DockStyle.Top + Me.POWaveFormInner.Location = New System.Drawing.Point(0, 20) + Me.POWaveFormInner.Name = "POWaveFormInner" + Me.POWaveFormInner.Size = New System.Drawing.Size(183, 223) + Me.POWaveFormInner.TabIndex = 29 + Me.POWaveFormInner.Visible = False + ' + 'POWaveFormPart2 + ' + Me.POWaveFormPart2.AutoSize = True + Me.POWaveFormPart2.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink + Me.POWaveFormPart2.ColumnCount = 3 + Me.POWaveFormPart2.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle()) + Me.POWaveFormPart2.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 70.0!)) + Me.POWaveFormPart2.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 30.0!)) + Me.POWaveFormPart2.Controls.Add(Me.TWSaturation, 2, 4) + Me.POWaveFormPart2.Controls.Add(Me.PictureBox2, 0, 0) + Me.POWaveFormPart2.Controls.Add(Me.TWTransparency, 2, 3) + Me.POWaveFormPart2.Controls.Add(Me.PictureBox3, 0, 1) + Me.POWaveFormPart2.Controls.Add(Me.TWPrecision, 2, 2) + Me.POWaveFormPart2.Controls.Add(Me.PictureBox4, 0, 2) + Me.POWaveFormPart2.Controls.Add(Me.TWWidth, 2, 1) + Me.POWaveFormPart2.Controls.Add(Me.PictureBox5, 0, 3) + Me.POWaveFormPart2.Controls.Add(Me.TWLeft, 2, 0) + Me.POWaveFormPart2.Controls.Add(Me.PictureBox6, 0, 4) + Me.POWaveFormPart2.Controls.Add(Me.TWSaturation2, 1, 4) + Me.POWaveFormPart2.Controls.Add(Me.TWLeft2, 1, 0) + Me.POWaveFormPart2.Controls.Add(Me.TWTransparency2, 1, 3) + Me.POWaveFormPart2.Controls.Add(Me.TWWidth2, 1, 1) + Me.POWaveFormPart2.Controls.Add(Me.TWPrecision2, 1, 2) + Me.POWaveFormPart2.Dock = System.Windows.Forms.DockStyle.Top + Me.POWaveFormPart2.Location = New System.Drawing.Point(0, 83) + Me.POWaveFormPart2.Name = "POWaveFormPart2" + Me.POWaveFormPart2.RowCount = 5 + Me.POWaveFormPart2.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 28.0!)) + Me.POWaveFormPart2.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 28.0!)) + Me.POWaveFormPart2.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 28.0!)) + Me.POWaveFormPart2.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 28.0!)) + Me.POWaveFormPart2.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 28.0!)) + Me.POWaveFormPart2.Size = New System.Drawing.Size(183, 140) + Me.POWaveFormPart2.TabIndex = 5 + ' + 'TWSaturation + ' + Me.TWSaturation.Dock = System.Windows.Forms.DockStyle.Fill + Me.TWSaturation.Increment = New Decimal(New Integer() {50, 0, 0, 0}) + Me.TWSaturation.Location = New System.Drawing.Point(137, 112) + Me.TWSaturation.Margin = New System.Windows.Forms.Padding(0, 0, 3, 0) + Me.TWSaturation.Maximum = New Decimal(New Integer() {1000, 0, 0, 0}) + Me.TWSaturation.Name = "TWSaturation" + Me.TWSaturation.Size = New System.Drawing.Size(43, 23) + Me.TWSaturation.TabIndex = 511 + ' + 'PictureBox2 + ' + Me.PictureBox2.Image = Global.iBMSC.My.Resources.Resources.WAVLeft + Me.PictureBox2.Location = New System.Drawing.Point(3, 0) + Me.PictureBox2.Margin = New System.Windows.Forms.Padding(3, 0, 3, 0) + Me.PictureBox2.Name = "PictureBox2" + Me.PictureBox2.Size = New System.Drawing.Size(24, 24) + Me.PictureBox2.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize + Me.PictureBox2.TabIndex = 60 + Me.PictureBox2.TabStop = False + ' + 'TWTransparency + ' + Me.TWTransparency.Dock = System.Windows.Forms.DockStyle.Fill + Me.TWTransparency.Increment = New Decimal(New Integer() {10, 0, 0, 0}) + Me.TWTransparency.Location = New System.Drawing.Point(137, 84) + Me.TWTransparency.Margin = New System.Windows.Forms.Padding(0, 0, 3, 0) + Me.TWTransparency.Maximum = New Decimal(New Integer() {255, 0, 0, 0}) + Me.TWTransparency.Name = "TWTransparency" + Me.TWTransparency.Size = New System.Drawing.Size(43, 23) + Me.TWTransparency.TabIndex = 509 + Me.TWTransparency.Value = New Decimal(New Integer() {80, 0, 0, 0}) + ' + 'PictureBox3 + ' + Me.PictureBox3.Image = Global.iBMSC.My.Resources.Resources.WAVWidth + Me.PictureBox3.Location = New System.Drawing.Point(3, 28) + Me.PictureBox3.Margin = New System.Windows.Forms.Padding(3, 0, 3, 0) + Me.PictureBox3.Name = "PictureBox3" + Me.PictureBox3.Size = New System.Drawing.Size(24, 24) + Me.PictureBox3.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize + Me.PictureBox3.TabIndex = 61 + Me.PictureBox3.TabStop = False + ' + 'TWPrecision + ' + Me.TWPrecision.Dock = System.Windows.Forms.DockStyle.Fill + Me.TWPrecision.Location = New System.Drawing.Point(137, 56) + Me.TWPrecision.Margin = New System.Windows.Forms.Padding(0, 0, 3, 0) + Me.TWPrecision.Maximum = New Decimal(New Integer() {50, 0, 0, 0}) + Me.TWPrecision.Name = "TWPrecision" + Me.TWPrecision.Size = New System.Drawing.Size(43, 23) + Me.TWPrecision.TabIndex = 507 + Me.TWPrecision.Value = New Decimal(New Integer() {5, 0, 0, 0}) + ' + 'PictureBox4 + ' + Me.PictureBox4.Image = Global.iBMSC.My.Resources.Resources.WAVPrecision + Me.PictureBox4.Location = New System.Drawing.Point(3, 56) + Me.PictureBox4.Margin = New System.Windows.Forms.Padding(3, 0, 3, 0) + Me.PictureBox4.Name = "PictureBox4" + Me.PictureBox4.Size = New System.Drawing.Size(24, 24) + Me.PictureBox4.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize + Me.PictureBox4.TabIndex = 62 + Me.PictureBox4.TabStop = False + ' + 'TWWidth + ' + Me.TWWidth.Dock = System.Windows.Forms.DockStyle.Fill + Me.TWWidth.Increment = New Decimal(New Integer() {10, 0, 0, 0}) + Me.TWWidth.Location = New System.Drawing.Point(137, 28) + Me.TWWidth.Margin = New System.Windows.Forms.Padding(0, 0, 3, 0) + Me.TWWidth.Maximum = New Decimal(New Integer() {1000, 0, 0, 0}) + Me.TWWidth.Name = "TWWidth" + Me.TWWidth.Size = New System.Drawing.Size(43, 23) + Me.TWWidth.TabIndex = 505 + Me.TWWidth.Value = New Decimal(New Integer() {200, 0, 0, 0}) + ' + 'PictureBox5 + ' + Me.PictureBox5.Image = Global.iBMSC.My.Resources.Resources.WAVTransparency + Me.PictureBox5.Location = New System.Drawing.Point(3, 84) + Me.PictureBox5.Margin = New System.Windows.Forms.Padding(3, 0, 3, 0) + Me.PictureBox5.Name = "PictureBox5" + Me.PictureBox5.Size = New System.Drawing.Size(24, 24) + Me.PictureBox5.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize + Me.PictureBox5.TabIndex = 67 + Me.PictureBox5.TabStop = False + ' + 'TWLeft + ' + Me.TWLeft.Dock = System.Windows.Forms.DockStyle.Fill + Me.TWLeft.Increment = New Decimal(New Integer() {5, 0, 0, 0}) + Me.TWLeft.Location = New System.Drawing.Point(137, 0) + Me.TWLeft.Margin = New System.Windows.Forms.Padding(0, 0, 3, 0) + Me.TWLeft.Maximum = New Decimal(New Integer() {800, 0, 0, 0}) + Me.TWLeft.Name = "TWLeft" + Me.TWLeft.Size = New System.Drawing.Size(43, 23) + Me.TWLeft.TabIndex = 503 + Me.TWLeft.Value = New Decimal(New Integer() {50, 0, 0, 0}) + ' + 'PictureBox6 + ' + Me.PictureBox6.Image = Global.iBMSC.My.Resources.Resources.WAVSaturation + Me.PictureBox6.Location = New System.Drawing.Point(3, 112) + Me.PictureBox6.Margin = New System.Windows.Forms.Padding(3, 0, 3, 0) + Me.PictureBox6.Name = "PictureBox6" + Me.PictureBox6.Size = New System.Drawing.Size(24, 24) + Me.PictureBox6.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize + Me.PictureBox6.TabIndex = 66 + Me.PictureBox6.TabStop = False + ' + 'TWSaturation2 + ' + Me.TWSaturation2.Dock = System.Windows.Forms.DockStyle.Fill + Me.TWSaturation2.LargeChange = 200 + Me.TWSaturation2.Location = New System.Drawing.Point(30, 112) + Me.TWSaturation2.Margin = New System.Windows.Forms.Padding(0) + Me.TWSaturation2.Maximum = 1000 + Me.TWSaturation2.Name = "TWSaturation2" + Me.TWSaturation2.Size = New System.Drawing.Size(107, 28) + Me.TWSaturation2.SmallChange = 50 + Me.TWSaturation2.TabIndex = 510 + Me.TWSaturation2.TickFrequency = 200 + ' + 'TWLeft2 + ' + Me.TWLeft2.Dock = System.Windows.Forms.DockStyle.Fill + Me.TWLeft2.LargeChange = 50 + Me.TWLeft2.Location = New System.Drawing.Point(30, 0) + Me.TWLeft2.Margin = New System.Windows.Forms.Padding(0) + Me.TWLeft2.Maximum = 800 + Me.TWLeft2.Name = "TWLeft2" + Me.TWLeft2.Size = New System.Drawing.Size(107, 28) + Me.TWLeft2.SmallChange = 10 + Me.TWLeft2.TabIndex = 502 + Me.TWLeft2.TickFrequency = 100 + Me.TWLeft2.Value = 50 + ' + 'TWTransparency2 + ' + Me.TWTransparency2.Dock = System.Windows.Forms.DockStyle.Fill + Me.TWTransparency2.LargeChange = 64 + Me.TWTransparency2.Location = New System.Drawing.Point(30, 84) + Me.TWTransparency2.Margin = New System.Windows.Forms.Padding(0) + Me.TWTransparency2.Maximum = 255 + Me.TWTransparency2.Name = "TWTransparency2" + Me.TWTransparency2.Size = New System.Drawing.Size(107, 28) + Me.TWTransparency2.SmallChange = 8 + Me.TWTransparency2.TabIndex = 508 + Me.TWTransparency2.TickFrequency = 64 + Me.TWTransparency2.Value = 80 + ' + 'TWWidth2 + ' + Me.TWWidth2.Dock = System.Windows.Forms.DockStyle.Fill + Me.TWWidth2.LargeChange = 50 + Me.TWWidth2.Location = New System.Drawing.Point(30, 28) + Me.TWWidth2.Margin = New System.Windows.Forms.Padding(0) + Me.TWWidth2.Maximum = 1000 + Me.TWWidth2.Name = "TWWidth2" + Me.TWWidth2.Size = New System.Drawing.Size(107, 28) + Me.TWWidth2.SmallChange = 10 + Me.TWWidth2.TabIndex = 504 + Me.TWWidth2.TickFrequency = 100 + Me.TWWidth2.Value = 200 + ' + 'TWPrecision2 + ' + Me.TWPrecision2.Dock = System.Windows.Forms.DockStyle.Fill + Me.TWPrecision2.LargeChange = 4 + Me.TWPrecision2.Location = New System.Drawing.Point(30, 56) + Me.TWPrecision2.Margin = New System.Windows.Forms.Padding(0) + Me.TWPrecision2.Maximum = 50 + Me.TWPrecision2.Name = "TWPrecision2" + Me.TWPrecision2.Size = New System.Drawing.Size(107, 28) + Me.TWPrecision2.TabIndex = 506 + Me.TWPrecision2.TickFrequency = 5 + Me.TWPrecision2.Value = 5 + ' + 'POWaveFormExpander + ' + Me.POWaveFormExpander.Appearance = System.Windows.Forms.Appearance.Button + Me.POWaveFormExpander.AutoSize = True + Me.POWaveFormExpander.Cursor = System.Windows.Forms.Cursors.Hand + Me.POWaveFormExpander.Dock = System.Windows.Forms.DockStyle.Top + Me.POWaveFormExpander.FlatAppearance.BorderSize = 0 + Me.POWaveFormExpander.FlatStyle = System.Windows.Forms.FlatStyle.Popup + Me.POWaveFormExpander.Location = New System.Drawing.Point(0, 58) + Me.POWaveFormExpander.Margin = New System.Windows.Forms.Padding(0) + Me.POWaveFormExpander.Name = "POWaveFormExpander" + Me.POWaveFormExpander.Size = New System.Drawing.Size(183, 25) + Me.POWaveFormExpander.TabIndex = 501 + Me.POWaveFormExpander.TabStop = False + Me.POWaveFormExpander.Text = "Expand..." + Me.POWaveFormExpander.TextAlign = System.Drawing.ContentAlignment.MiddleCenter + Me.POWaveFormExpander.UseVisualStyleBackColor = False + ' + 'POWaveFormPart1 + ' + Me.POWaveFormPart1.AutoSize = True + Me.POWaveFormPart1.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink + Me.POWaveFormPart1.ColumnCount = 1 + Me.POWaveFormPart1.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100.0!)) + Me.POWaveFormPart1.Controls.Add(Me.TableLayoutPanel1, 0, 0) + Me.POWaveFormPart1.Controls.Add(Me.TableLayoutPanel6, 0, 1) + Me.POWaveFormPart1.Dock = System.Windows.Forms.DockStyle.Top + Me.POWaveFormPart1.Location = New System.Drawing.Point(0, 0) + Me.POWaveFormPart1.Name = "POWaveFormPart1" + Me.POWaveFormPart1.RowCount = 2 + Me.POWaveFormPart1.RowStyles.Add(New System.Windows.Forms.RowStyle()) + Me.POWaveFormPart1.RowStyles.Add(New System.Windows.Forms.RowStyle()) + Me.POWaveFormPart1.Size = New System.Drawing.Size(183, 58) + Me.POWaveFormPart1.TabIndex = 4 + ' + 'TableLayoutPanel1 + ' + Me.TableLayoutPanel1.AutoSize = True + Me.TableLayoutPanel1.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink + Me.TableLayoutPanel1.ColumnCount = 2 + Me.TableLayoutPanel1.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle()) + Me.TableLayoutPanel1.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100.0!)) + Me.TableLayoutPanel1.Controls.Add(Me.FlowLayoutPanel1, 0, 0) + Me.TableLayoutPanel1.Controls.Add(Me.TWFileName, 1, 0) + Me.TableLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Fill + Me.TableLayoutPanel1.Location = New System.Drawing.Point(0, 0) + Me.TableLayoutPanel1.Margin = New System.Windows.Forms.Padding(0) + Me.TableLayoutPanel1.Name = "TableLayoutPanel1" + Me.TableLayoutPanel1.RowCount = 1 + Me.TableLayoutPanel1.RowStyles.Add(New System.Windows.Forms.RowStyle()) + Me.TableLayoutPanel1.Size = New System.Drawing.Size(183, 30) + Me.TableLayoutPanel1.TabIndex = 0 + ' + 'FlowLayoutPanel1 + ' + Me.FlowLayoutPanel1.AutoSize = True + Me.FlowLayoutPanel1.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink + Me.FlowLayoutPanel1.Controls.Add(Me.BWLoad) + Me.FlowLayoutPanel1.Controls.Add(Me.BWClear) + Me.FlowLayoutPanel1.Controls.Add(Me.BWLock) + Me.FlowLayoutPanel1.Location = New System.Drawing.Point(3, 3) + Me.FlowLayoutPanel1.Name = "FlowLayoutPanel1" + Me.FlowLayoutPanel1.Size = New System.Drawing.Size(72, 24) + Me.FlowLayoutPanel1.TabIndex = 72 + Me.FlowLayoutPanel1.WrapContents = False + ' + 'TWFileName + ' + Me.TWFileName.Dock = System.Windows.Forms.DockStyle.Fill + Me.TWFileName.Location = New System.Drawing.Point(81, 3) + Me.TWFileName.Name = "TWFileName" + Me.TWFileName.ReadOnly = True + Me.TWFileName.Size = New System.Drawing.Size(99, 23) + Me.TWFileName.TabIndex = 405 + Me.TWFileName.Text = "(None)" + ' + 'TableLayoutPanel6 + ' + Me.TableLayoutPanel6.AutoSize = True + Me.TableLayoutPanel6.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink + Me.TableLayoutPanel6.ColumnCount = 3 + Me.TableLayoutPanel6.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle()) + Me.TableLayoutPanel6.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 60.0!)) + Me.TableLayoutPanel6.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 40.0!)) + Me.TableLayoutPanel6.Controls.Add(Me.PictureBox1, 0, 0) + Me.TableLayoutPanel6.Controls.Add(Me.TWPosition2, 1, 0) + Me.TableLayoutPanel6.Controls.Add(Me.TWPosition, 2, 0) + Me.TableLayoutPanel6.Dock = System.Windows.Forms.DockStyle.Fill + Me.TableLayoutPanel6.Location = New System.Drawing.Point(0, 30) + Me.TableLayoutPanel6.Margin = New System.Windows.Forms.Padding(0) + Me.TableLayoutPanel6.Name = "TableLayoutPanel6" + Me.TableLayoutPanel6.RowCount = 1 + Me.TableLayoutPanel6.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 28.0!)) + Me.TableLayoutPanel6.Size = New System.Drawing.Size(183, 28) + Me.TableLayoutPanel6.TabIndex = 1 + ' + 'PictureBox1 + ' + Me.PictureBox1.Image = Global.iBMSC.My.Resources.Resources.WAVOffset + Me.PictureBox1.Location = New System.Drawing.Point(3, 0) + Me.PictureBox1.Margin = New System.Windows.Forms.Padding(3, 0, 3, 0) + Me.PictureBox1.Name = "PictureBox1" + Me.PictureBox1.Size = New System.Drawing.Size(24, 24) + Me.PictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize + Me.PictureBox1.TabIndex = 59 + Me.PictureBox1.TabStop = False + ' + 'TWPosition2 + ' + Me.TWPosition2.Dock = System.Windows.Forms.DockStyle.Fill + Me.TWPosition2.Enabled = False + Me.TWPosition2.LargeChange = 24 + Me.TWPosition2.Location = New System.Drawing.Point(30, 0) + Me.TWPosition2.Margin = New System.Windows.Forms.Padding(0) + Me.TWPosition2.Maximum = 960 + Me.TWPosition2.Name = "TWPosition2" + Me.TWPosition2.Size = New System.Drawing.Size(91, 28) + Me.TWPosition2.TabIndex = 406 + Me.TWPosition2.TickFrequency = 192 + ' + 'TWPosition + ' + Me.TWPosition.DecimalPlaces = 2 + Me.TWPosition.Dock = System.Windows.Forms.DockStyle.Fill + Me.TWPosition.Enabled = False + Me.TWPosition.Location = New System.Drawing.Point(121, 0) + Me.TWPosition.Margin = New System.Windows.Forms.Padding(0, 0, 3, 0) + Me.TWPosition.Maximum = New Decimal(New Integer() {192000, 0, 0, 0}) + Me.TWPosition.Name = "TWPosition" + Me.TWPosition.Size = New System.Drawing.Size(59, 23) + Me.TWPosition.TabIndex = 407 + ' + 'POWaveFormSwitch + ' + Me.POWaveFormSwitch.Appearance = System.Windows.Forms.Appearance.Button + Me.POWaveFormSwitch.BackColor = System.Drawing.SystemColors.Control + Me.POWaveFormSwitch.Cursor = System.Windows.Forms.Cursors.Hand + Me.POWaveFormSwitch.Dock = System.Windows.Forms.DockStyle.Top + Me.POWaveFormSwitch.Font = New System.Drawing.Font("Segoe UI", 9.0!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.POWaveFormSwitch.Location = New System.Drawing.Point(0, 0) + Me.POWaveFormSwitch.Name = "POWaveFormSwitch" + Me.POWaveFormSwitch.Size = New System.Drawing.Size(183, 20) + Me.POWaveFormSwitch.TabIndex = 401 + Me.POWaveFormSwitch.TabStop = False + Me.POWaveFormSwitch.Text = "WaveForm" + Me.POWaveFormSwitch.TextAlign = System.Drawing.ContentAlignment.MiddleCenter + Me.POWaveFormSwitch.UseCompatibleTextRendering = True + Me.POWaveFormSwitch.UseVisualStyleBackColor = False + ' + 'POGrid + ' + Me.POGrid.AutoSize = True + Me.POGrid.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink + Me.POGrid.Controls.Add(Me.POGridInner) + Me.POGrid.Controls.Add(Me.POGridSwitch) + Me.POGrid.Dock = System.Windows.Forms.DockStyle.Top + Me.POGrid.Location = New System.Drawing.Point(0, 439) + Me.POGrid.Name = "POGrid" + Me.POGrid.Size = New System.Drawing.Size(183, 230) + Me.POGrid.TabIndex = 2 + ' + 'POGridInner + ' + Me.POGridInner.AutoSize = True + Me.POGridInner.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink + Me.POGridInner.Controls.Add(Me.POGridPart2) + Me.POGridInner.Controls.Add(Me.POGridExpander) + Me.POGridInner.Controls.Add(Me.POGridPart1) + Me.POGridInner.Dock = System.Windows.Forms.DockStyle.Top + Me.POGridInner.Location = New System.Drawing.Point(0, 20) + Me.POGridInner.Name = "POGridInner" + Me.POGridInner.Size = New System.Drawing.Size(183, 210) + Me.POGridInner.TabIndex = 3 + ' + 'POGridPart2 + ' + Me.POGridPart2.AutoSize = True + Me.POGridPart2.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink + Me.POGridPart2.ColumnCount = 1 + Me.POGridPart2.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100.0!)) + Me.POGridPart2.Controls.Add(Me.TableLayoutPanel5, 0, 1) + Me.POGridPart2.Controls.Add(Me.TableLayoutPanel4, 0, 0) + Me.POGridPart2.Dock = System.Windows.Forms.DockStyle.Top + Me.POGridPart2.Location = New System.Drawing.Point(0, 152) + Me.POGridPart2.Name = "POGridPart2" + Me.POGridPart2.RowCount = 2 + Me.POGridPart2.RowStyles.Add(New System.Windows.Forms.RowStyle()) + Me.POGridPart2.RowStyles.Add(New System.Windows.Forms.RowStyle()) + Me.POGridPart2.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20.0!)) + Me.POGridPart2.Size = New System.Drawing.Size(183, 58) + Me.POGridPart2.TabIndex = 0 + ' + 'TableLayoutPanel5 + ' + Me.TableLayoutPanel5.AutoSize = True + Me.TableLayoutPanel5.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink + Me.TableLayoutPanel5.ColumnCount = 2 + Me.TableLayoutPanel5.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle()) + Me.TableLayoutPanel5.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100.0!)) + Me.TableLayoutPanel5.Controls.Add(Me.FlowLayoutPanel2, 1, 0) + Me.TableLayoutPanel5.Controls.Add(Me.Label5, 0, 0) + Me.TableLayoutPanel5.Dock = System.Windows.Forms.DockStyle.Fill + Me.TableLayoutPanel5.Location = New System.Drawing.Point(0, 29) + Me.TableLayoutPanel5.Margin = New System.Windows.Forms.Padding(0) + Me.TableLayoutPanel5.Name = "TableLayoutPanel5" + Me.TableLayoutPanel5.RowCount = 1 + Me.TableLayoutPanel5.RowStyles.Add(New System.Windows.Forms.RowStyle()) + Me.TableLayoutPanel5.Size = New System.Drawing.Size(183, 29) + Me.TableLayoutPanel5.TabIndex = 46 + ' + 'FlowLayoutPanel2 + ' + Me.FlowLayoutPanel2.AutoSize = True + Me.FlowLayoutPanel2.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink + Me.FlowLayoutPanel2.Controls.Add(Me.cVSLockL) + Me.FlowLayoutPanel2.Controls.Add(Me.cVSLock) + Me.FlowLayoutPanel2.Controls.Add(Me.cVSLockR) + Me.FlowLayoutPanel2.Location = New System.Drawing.Point(114, 3) + Me.FlowLayoutPanel2.Name = "FlowLayoutPanel2" + Me.FlowLayoutPanel2.Size = New System.Drawing.Size(66, 23) + Me.FlowLayoutPanel2.TabIndex = 72 + Me.FlowLayoutPanel2.WrapContents = False + ' + 'Label5 + ' + Me.Label5.AutoSize = True + Me.Label5.Dock = System.Windows.Forms.DockStyle.Fill + Me.Label5.Location = New System.Drawing.Point(3, 0) + Me.Label5.Name = "Label5" + Me.Label5.Size = New System.Drawing.Size(105, 29) + Me.Label5.TabIndex = 303 + Me.Label5.Text = "Vertical Scroll Lock" + Me.Label5.TextAlign = System.Drawing.ContentAlignment.MiddleRight + ' + 'TableLayoutPanel4 + ' + Me.TableLayoutPanel4.AutoSize = True + Me.TableLayoutPanel4.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink + Me.TableLayoutPanel4.ColumnCount = 2 + Me.TableLayoutPanel4.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle()) + Me.TableLayoutPanel4.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100.0!)) + Me.TableLayoutPanel4.Controls.Add(Me.Label1, 0, 0) + Me.TableLayoutPanel4.Controls.Add(Me.CGB, 1, 0) + Me.TableLayoutPanel4.Dock = System.Windows.Forms.DockStyle.Fill + Me.TableLayoutPanel4.Location = New System.Drawing.Point(0, 0) + Me.TableLayoutPanel4.Margin = New System.Windows.Forms.Padding(0) + Me.TableLayoutPanel4.Name = "TableLayoutPanel4" + Me.TableLayoutPanel4.RowCount = 1 + Me.TableLayoutPanel4.RowStyles.Add(New System.Windows.Forms.RowStyle()) + Me.TableLayoutPanel4.Size = New System.Drawing.Size(183, 29) + Me.TableLayoutPanel4.TabIndex = 44 + ' + 'Label1 + ' + Me.Label1.AutoSize = True + Me.Label1.Dock = System.Windows.Forms.DockStyle.Fill + Me.Label1.Location = New System.Drawing.Point(3, 0) + Me.Label1.Name = "Label1" + Me.Label1.Size = New System.Drawing.Size(126, 29) + Me.Label1.TabIndex = 302 + Me.Label1.Text = "Number of B Columns" + Me.Label1.TextAlign = System.Drawing.ContentAlignment.MiddleRight + ' + 'CGB + ' + Me.CGB.Dock = System.Windows.Forms.DockStyle.Fill + Me.CGB.Location = New System.Drawing.Point(135, 3) + Me.CGB.Maximum = New Decimal(New Integer() {999, 0, 0, 0}) + Me.CGB.Minimum = New Decimal(New Integer() {1, 0, 0, 0}) + Me.CGB.Name = "CGB" + Me.CGB.Size = New System.Drawing.Size(45, 23) + Me.CGB.TabIndex = 302 + Me.CGB.Value = New Decimal(New Integer() {15, 0, 0, 0}) + ' + 'POGridExpander + ' + Me.POGridExpander.Appearance = System.Windows.Forms.Appearance.Button + Me.POGridExpander.AutoSize = True + Me.POGridExpander.Cursor = System.Windows.Forms.Cursors.Hand + Me.POGridExpander.Dock = System.Windows.Forms.DockStyle.Top + Me.POGridExpander.FlatAppearance.BorderSize = 0 + Me.POGridExpander.FlatStyle = System.Windows.Forms.FlatStyle.Popup + Me.POGridExpander.Location = New System.Drawing.Point(0, 127) + Me.POGridExpander.Margin = New System.Windows.Forms.Padding(0) + Me.POGridExpander.Name = "POGridExpander" + Me.POGridExpander.Size = New System.Drawing.Size(183, 25) + Me.POGridExpander.TabIndex = 301 + Me.POGridExpander.TabStop = False + Me.POGridExpander.Text = "Expand..." + Me.POGridExpander.TextAlign = System.Drawing.ContentAlignment.MiddleCenter + Me.POGridExpander.UseVisualStyleBackColor = False + ' + 'POGridPart1 + ' + Me.POGridPart1.AutoSize = True + Me.POGridPart1.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink + Me.POGridPart1.ColumnCount = 1 + Me.POGridPart1.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100.0!)) + Me.POGridPart1.Controls.Add(Me.TableLayoutPanel3, 0, 1) + Me.POGridPart1.Controls.Add(Me.CGDisableVertical, 0, 3) + Me.POGridPart1.Controls.Add(Me.CGSnap, 0, 2) + Me.POGridPart1.Controls.Add(Me.TableLayoutPanel2, 0, 0) + Me.POGridPart1.Dock = System.Windows.Forms.DockStyle.Top + Me.POGridPart1.Location = New System.Drawing.Point(0, 0) + Me.POGridPart1.Name = "POGridPart1" + Me.POGridPart1.RowCount = 4 + Me.POGridPart1.RowStyles.Add(New System.Windows.Forms.RowStyle()) + Me.POGridPart1.RowStyles.Add(New System.Windows.Forms.RowStyle()) + Me.POGridPart1.RowStyles.Add(New System.Windows.Forms.RowStyle()) + Me.POGridPart1.RowStyles.Add(New System.Windows.Forms.RowStyle()) + Me.POGridPart1.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20.0!)) + Me.POGridPart1.Size = New System.Drawing.Size(183, 127) + Me.POGridPart1.TabIndex = 11 + ' + 'TableLayoutPanel3 + ' + Me.TableLayoutPanel3.AutoSize = True + Me.TableLayoutPanel3.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink + Me.TableLayoutPanel3.ColumnCount = 3 + Me.TableLayoutPanel3.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle()) + Me.TableLayoutPanel3.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 70.0!)) + Me.TableLayoutPanel3.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 30.0!)) + Me.TableLayoutPanel3.Controls.Add(Me.PictureBox9, 0, 0) + Me.TableLayoutPanel3.Controls.Add(Me.CGHeight2, 1, 0) + Me.TableLayoutPanel3.Controls.Add(Me.CGHeight, 2, 0) + Me.TableLayoutPanel3.Controls.Add(Me.PictureBox10, 0, 1) + Me.TableLayoutPanel3.Controls.Add(Me.CGWidth2, 1, 1) + Me.TableLayoutPanel3.Controls.Add(Me.CGWidth, 2, 1) + Me.TableLayoutPanel3.Dock = System.Windows.Forms.DockStyle.Fill + Me.TableLayoutPanel3.Location = New System.Drawing.Point(0, 30) + Me.TableLayoutPanel3.Margin = New System.Windows.Forms.Padding(0) + Me.TableLayoutPanel3.Name = "TableLayoutPanel3" + Me.TableLayoutPanel3.RowCount = 2 + Me.TableLayoutPanel3.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 28.0!)) + Me.TableLayoutPanel3.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 28.0!)) + Me.TableLayoutPanel3.Size = New System.Drawing.Size(183, 56) + Me.TableLayoutPanel3.TabIndex = 12 + ' + 'PictureBox9 + ' + Me.PictureBox9.Image = Global.iBMSC.My.Resources.Resources.lgheight + Me.PictureBox9.Location = New System.Drawing.Point(3, 0) + Me.PictureBox9.Margin = New System.Windows.Forms.Padding(3, 0, 3, 0) + Me.PictureBox9.Name = "PictureBox9" + Me.PictureBox9.Size = New System.Drawing.Size(24, 24) + Me.PictureBox9.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize + Me.PictureBox9.TabIndex = 27 + Me.PictureBox9.TabStop = False + ' + 'CGHeight2 + ' + Me.CGHeight2.Dock = System.Windows.Forms.DockStyle.Fill + Me.CGHeight2.LargeChange = 4 + Me.CGHeight2.Location = New System.Drawing.Point(30, 0) + Me.CGHeight2.Margin = New System.Windows.Forms.Padding(0) + Me.CGHeight2.Maximum = 20 + Me.CGHeight2.Minimum = 1 + Me.CGHeight2.Name = "CGHeight2" + Me.CGHeight2.Size = New System.Drawing.Size(107, 28) + Me.CGHeight2.TabIndex = 205 + Me.CGHeight2.TickFrequency = 2 + Me.CGHeight2.Value = 4 + ' + 'CGHeight + ' + Me.CGHeight.DecimalPlaces = 2 + Me.CGHeight.Dock = System.Windows.Forms.DockStyle.Fill + Me.CGHeight.Increment = New Decimal(New Integer() {25, 0, 0, 131072}) + Me.CGHeight.Location = New System.Drawing.Point(137, 0) + Me.CGHeight.Margin = New System.Windows.Forms.Padding(0, 0, 3, 0) + Me.CGHeight.Maximum = New Decimal(New Integer() {99, 0, 0, 0}) + Me.CGHeight.Minimum = New Decimal(New Integer() {25, 0, 0, 131072}) + Me.CGHeight.Name = "CGHeight" + Me.CGHeight.Size = New System.Drawing.Size(43, 23) + Me.CGHeight.TabIndex = 206 + Me.CGHeight.Value = New Decimal(New Integer() {1, 0, 0, 0}) + ' + 'PictureBox10 + ' + Me.PictureBox10.Image = Global.iBMSC.My.Resources.Resources.lgwidth + Me.PictureBox10.Location = New System.Drawing.Point(3, 28) + Me.PictureBox10.Margin = New System.Windows.Forms.Padding(3, 0, 3, 0) + Me.PictureBox10.Name = "PictureBox10" + Me.PictureBox10.Size = New System.Drawing.Size(24, 24) + Me.PictureBox10.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize + Me.PictureBox10.TabIndex = 28 + Me.PictureBox10.TabStop = False + ' + 'CGWidth2 + ' + Me.CGWidth2.Dock = System.Windows.Forms.DockStyle.Fill + Me.CGWidth2.LargeChange = 4 + Me.CGWidth2.Location = New System.Drawing.Point(30, 28) + Me.CGWidth2.Margin = New System.Windows.Forms.Padding(0) + Me.CGWidth2.Maximum = 20 + Me.CGWidth2.Minimum = 1 + Me.CGWidth2.Name = "CGWidth2" + Me.CGWidth2.Size = New System.Drawing.Size(107, 28) + Me.CGWidth2.TabIndex = 207 + Me.CGWidth2.TickFrequency = 2 + Me.CGWidth2.Value = 4 + ' + 'CGWidth + ' + Me.CGWidth.DecimalPlaces = 2 + Me.CGWidth.Dock = System.Windows.Forms.DockStyle.Fill + Me.CGWidth.Increment = New Decimal(New Integer() {25, 0, 0, 131072}) + Me.CGWidth.Location = New System.Drawing.Point(137, 28) + Me.CGWidth.Margin = New System.Windows.Forms.Padding(0, 0, 3, 0) + Me.CGWidth.Maximum = New Decimal(New Integer() {99, 0, 0, 0}) + Me.CGWidth.Minimum = New Decimal(New Integer() {25, 0, 0, 131072}) + Me.CGWidth.Name = "CGWidth" + Me.CGWidth.Size = New System.Drawing.Size(43, 23) + Me.CGWidth.TabIndex = 208 + Me.CGWidth.Value = New Decimal(New Integer() {1, 0, 0, 0}) + ' + 'CGDisableVertical + ' + Me.CGDisableVertical.AutoSize = True + Me.CGDisableVertical.Location = New System.Drawing.Point(3, 108) + Me.CGDisableVertical.Margin = New System.Windows.Forms.Padding(3, 0, 3, 0) + Me.CGDisableVertical.Name = "CGDisableVertical" + Me.CGDisableVertical.Size = New System.Drawing.Size(162, 19) + Me.CGDisableVertical.TabIndex = 210 + Me.CGDisableVertical.Text = "Disable vertical moves (D)" + Me.CGDisableVertical.UseVisualStyleBackColor = True + ' + 'CGSnap + ' + Me.CGSnap.AutoSize = True + Me.CGSnap.Checked = True + Me.CGSnap.CheckState = System.Windows.Forms.CheckState.Checked + Me.CGSnap.Location = New System.Drawing.Point(3, 89) + Me.CGSnap.Margin = New System.Windows.Forms.Padding(3, 3, 3, 0) + Me.CGSnap.Name = "CGSnap" + Me.CGSnap.Size = New System.Drawing.Size(109, 19) + Me.CGSnap.TabIndex = 209 + Me.CGSnap.Text = "Snap to grid (G)" + Me.CGSnap.UseVisualStyleBackColor = True + ' + 'TableLayoutPanel2 + ' + Me.TableLayoutPanel2.AutoSize = True + Me.TableLayoutPanel2.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink + Me.TableLayoutPanel2.ColumnCount = 4 + Me.TableLayoutPanel2.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle()) + Me.TableLayoutPanel2.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50.0!)) + Me.TableLayoutPanel2.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50.0!)) + Me.TableLayoutPanel2.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle()) + Me.TableLayoutPanel2.Controls.Add(Me.PictureBox7, 0, 0) + Me.TableLayoutPanel2.Controls.Add(Me.CGDivide, 1, 0) + Me.TableLayoutPanel2.Controls.Add(Me.CGSub, 2, 0) + Me.TableLayoutPanel2.Controls.Add(Me.BGSlash, 3, 0) + Me.TableLayoutPanel2.Dock = System.Windows.Forms.DockStyle.Fill + Me.TableLayoutPanel2.Location = New System.Drawing.Point(0, 0) + Me.TableLayoutPanel2.Margin = New System.Windows.Forms.Padding(0) + Me.TableLayoutPanel2.Name = "TableLayoutPanel2" + Me.TableLayoutPanel2.RowCount = 1 + Me.TableLayoutPanel2.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100.0!)) + Me.TableLayoutPanel2.Size = New System.Drawing.Size(183, 30) + Me.TableLayoutPanel2.TabIndex = 11 + ' + 'PictureBox7 + ' + Me.PictureBox7.Anchor = System.Windows.Forms.AnchorStyles.None + Me.PictureBox7.Image = Global.iBMSC.My.Resources.Resources.lgpartition + Me.PictureBox7.Location = New System.Drawing.Point(3, 3) + Me.PictureBox7.Name = "PictureBox7" + Me.PictureBox7.Size = New System.Drawing.Size(24, 24) + Me.PictureBox7.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize + Me.PictureBox7.TabIndex = 25 + Me.PictureBox7.TabStop = False + ' + 'CGDivide + ' + Me.CGDivide.Dock = System.Windows.Forms.DockStyle.Fill + Me.CGDivide.Location = New System.Drawing.Point(33, 3) + Me.CGDivide.Maximum = New Decimal(New Integer() {1920, 0, 0, 0}) + Me.CGDivide.Minimum = New Decimal(New Integer() {1, 0, 0, 0}) + Me.CGDivide.Name = "CGDivide" + Me.CGDivide.Size = New System.Drawing.Size(58, 23) + Me.CGDivide.TabIndex = 202 + Me.CGDivide.Value = New Decimal(New Integer() {16, 0, 0, 0}) + ' + 'CGSub + ' + Me.CGSub.Dock = System.Windows.Forms.DockStyle.Fill + Me.CGSub.Location = New System.Drawing.Point(97, 3) + Me.CGSub.Maximum = New Decimal(New Integer() {1920, 0, 0, 0}) + Me.CGSub.Minimum = New Decimal(New Integer() {1, 0, 0, 0}) + Me.CGSub.Name = "CGSub" + Me.CGSub.Size = New System.Drawing.Size(58, 23) + Me.CGSub.TabIndex = 203 + Me.CGSub.Value = New Decimal(New Integer() {4, 0, 0, 0}) + ' + 'BGSlash + ' + Me.BGSlash.Anchor = System.Windows.Forms.AnchorStyles.None + Me.BGSlash.Image = Global.iBMSC.My.Resources.Resources.Shortcut + Me.BGSlash.Location = New System.Drawing.Point(158, 4) + Me.BGSlash.Margin = New System.Windows.Forms.Padding(0, 0, 3, 0) + Me.BGSlash.Name = "BGSlash" + Me.BGSlash.Size = New System.Drawing.Size(22, 22) + Me.BGSlash.TabIndex = 204 + Me.BGSlash.UseVisualStyleBackColor = True + ' + 'POGridSwitch + ' + Me.POGridSwitch.Appearance = System.Windows.Forms.Appearance.Button + Me.POGridSwitch.BackColor = System.Drawing.SystemColors.Control + Me.POGridSwitch.Checked = True + Me.POGridSwitch.CheckState = System.Windows.Forms.CheckState.Checked + Me.POGridSwitch.Cursor = System.Windows.Forms.Cursors.Hand + Me.POGridSwitch.Dock = System.Windows.Forms.DockStyle.Top + Me.POGridSwitch.Font = New System.Drawing.Font("Segoe UI", 9.0!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.POGridSwitch.Location = New System.Drawing.Point(0, 0) + Me.POGridSwitch.Name = "POGridSwitch" + Me.POGridSwitch.Size = New System.Drawing.Size(183, 20) + Me.POGridSwitch.TabIndex = 201 + Me.POGridSwitch.TabStop = False + Me.POGridSwitch.Text = "Grid" + Me.POGridSwitch.TextAlign = System.Drawing.ContentAlignment.MiddleCenter + Me.POGridSwitch.UseCompatibleTextRendering = True + Me.POGridSwitch.UseVisualStyleBackColor = False + ' + 'POHeader + ' + Me.POHeader.AutoSize = True + Me.POHeader.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink + Me.POHeader.Controls.Add(Me.POHeaderInner) + Me.POHeader.Controls.Add(Me.POHeaderSwitch) + Me.POHeader.Dock = System.Windows.Forms.DockStyle.Top + Me.POHeader.Location = New System.Drawing.Point(0, 0) + Me.POHeader.Name = "POHeader" + Me.POHeader.Size = New System.Drawing.Size(183, 439) + Me.POHeader.TabIndex = 1 + ' + 'POHeaderInner + ' + Me.POHeaderInner.AutoSize = True + Me.POHeaderInner.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink + Me.POHeaderInner.Controls.Add(Me.POHeaderPart2) + Me.POHeaderInner.Controls.Add(Me.POHeaderExpander) + Me.POHeaderInner.Controls.Add(Me.POHeaderPart1) + Me.POHeaderInner.Dock = System.Windows.Forms.DockStyle.Top + Me.POHeaderInner.Location = New System.Drawing.Point(0, 20) + Me.POHeaderInner.Name = "POHeaderInner" + Me.POHeaderInner.Size = New System.Drawing.Size(183, 419) + Me.POHeaderInner.TabIndex = 2 + ' + 'POHeaderPart2 + ' + Me.POHeaderPart2.AutoSize = True + Me.POHeaderPart2.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink + Me.POHeaderPart2.ColumnCount = 3 + Me.POHeaderPart2.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle()) + Me.POHeaderPart2.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100.0!)) + Me.POHeaderPart2.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle()) + Me.POHeaderPart2.Controls.Add(Me.CHDifficulty, 1, 5) + Me.POHeaderPart2.Controls.Add(Me.Label13, 2, 6) + Me.POHeaderPart2.Controls.Add(Me.THExRank, 1, 6) + Me.POHeaderPart2.Controls.Add(Me.Label25, 2, 7) + Me.POHeaderPart2.Controls.Add(Me.CHLnObj, 1, 9) + Me.POHeaderPart2.Controls.Add(Me.Label23, 0, 6) + Me.POHeaderPart2.Controls.Add(Me.Label21, 0, 5) + Me.POHeaderPart2.Controls.Add(Me.THComment, 1, 8) + Me.POHeaderPart2.Controls.Add(Me.Label24, 0, 9) + Me.POHeaderPart2.Controls.Add(Me.Label15, 0, 0) + Me.POHeaderPart2.Controls.Add(Me.THTotal, 1, 7) + Me.POHeaderPart2.Controls.Add(Me.Label20, 0, 7) + Me.POHeaderPart2.Controls.Add(Me.BHStageFile, 2, 2) + Me.POHeaderPart2.Controls.Add(Me.BHBanner, 2, 3) + Me.POHeaderPart2.Controls.Add(Me.Label19, 0, 8) + Me.POHeaderPart2.Controls.Add(Me.BHBackBMP, 2, 4) + Me.POHeaderPart2.Controls.Add(Me.Label17, 0, 1) + Me.POHeaderPart2.Controls.Add(Me.Label16, 0, 2) + Me.POHeaderPart2.Controls.Add(Me.Label12, 0, 3) + Me.POHeaderPart2.Controls.Add(Me.THBackBMP, 1, 4) + Me.POHeaderPart2.Controls.Add(Me.Label11, 0, 4) + Me.POHeaderPart2.Controls.Add(Me.THBanner, 1, 3) + Me.POHeaderPart2.Controls.Add(Me.THStageFile, 1, 2) + Me.POHeaderPart2.Controls.Add(Me.THSubTitle, 1, 0) + Me.POHeaderPart2.Controls.Add(Me.THSubArtist, 1, 1) + Me.POHeaderPart2.Dock = System.Windows.Forms.DockStyle.Top + Me.POHeaderPart2.Location = New System.Drawing.Point(0, 186) + Me.POHeaderPart2.Name = "POHeaderPart2" + Me.POHeaderPart2.RowCount = 10 + Me.POHeaderPart2.RowStyles.Add(New System.Windows.Forms.RowStyle()) + Me.POHeaderPart2.RowStyles.Add(New System.Windows.Forms.RowStyle()) + Me.POHeaderPart2.RowStyles.Add(New System.Windows.Forms.RowStyle()) + Me.POHeaderPart2.RowStyles.Add(New System.Windows.Forms.RowStyle()) + Me.POHeaderPart2.RowStyles.Add(New System.Windows.Forms.RowStyle()) + Me.POHeaderPart2.RowStyles.Add(New System.Windows.Forms.RowStyle()) + Me.POHeaderPart2.RowStyles.Add(New System.Windows.Forms.RowStyle()) + Me.POHeaderPart2.RowStyles.Add(New System.Windows.Forms.RowStyle()) + Me.POHeaderPart2.RowStyles.Add(New System.Windows.Forms.RowStyle()) + Me.POHeaderPart2.RowStyles.Add(New System.Windows.Forms.RowStyle()) + Me.POHeaderPart2.Size = New System.Drawing.Size(183, 233) + Me.POHeaderPart2.TabIndex = 27 + ' + 'CHDifficulty + ' + Me.POHeaderPart2.SetColumnSpan(Me.CHDifficulty, 2) + Me.CHDifficulty.Dock = System.Windows.Forms.DockStyle.Top + Me.CHDifficulty.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList + Me.CHDifficulty.FlatStyle = System.Windows.Forms.FlatStyle.System + Me.CHDifficulty.Items.AddRange(New Object() {"None", "1 - EZ / Beginner", "2 - NM / Normal", "3 - HD / Hyper", "4 - MX / Another", "5 - SC / Insane"}) + Me.CHDifficulty.Location = New System.Drawing.Point(67, 118) + Me.CHDifficulty.Margin = New System.Windows.Forms.Padding(0) + Me.CHDifficulty.Name = "CHDifficulty" + Me.CHDifficulty.Size = New System.Drawing.Size(116, 23) + Me.CHDifficulty.TabIndex = 110 + ' + 'Label13 + ' + Me.Label13.AutoSize = True + Me.Label13.Dock = System.Windows.Forms.DockStyle.Fill + Me.Label13.Location = New System.Drawing.Point(158, 141) + Me.Label13.Margin = New System.Windows.Forms.Padding(3, 0, 0, 0) + Me.Label13.Name = "Label13" + Me.Label13.Size = New System.Drawing.Size(25, 23) + Me.Label13.TabIndex = 63 + Me.Label13.Text = "(%)" + Me.Label13.TextAlign = System.Drawing.ContentAlignment.MiddleLeft + ' + 'THExRank + ' + Me.THExRank.Dock = System.Windows.Forms.DockStyle.Fill + Me.THExRank.Location = New System.Drawing.Point(67, 141) + Me.THExRank.Margin = New System.Windows.Forms.Padding(0) + Me.THExRank.Name = "THExRank" + Me.THExRank.Size = New System.Drawing.Size(88, 23) + Me.THExRank.TabIndex = 111 + ' + 'Label25 + ' + Me.Label25.AutoSize = True + Me.Label25.Dock = System.Windows.Forms.DockStyle.Fill + Me.Label25.Location = New System.Drawing.Point(158, 164) + Me.Label25.Margin = New System.Windows.Forms.Padding(3, 0, 0, 0) + Me.Label25.Name = "Label25" + Me.Label25.Size = New System.Drawing.Size(25, 23) + Me.Label25.TabIndex = 23 + Me.Label25.Text = "(%)" + Me.Label25.TextAlign = System.Drawing.ContentAlignment.MiddleLeft + ' + 'CHLnObj + ' + Me.POHeaderPart2.SetColumnSpan(Me.CHLnObj, 2) + Me.CHLnObj.Dock = System.Windows.Forms.DockStyle.Top + Me.CHLnObj.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList + Me.CHLnObj.FlatStyle = System.Windows.Forms.FlatStyle.System + Me.CHLnObj.Items.AddRange(New Object() {"None (#LnType 1)", "01", "02", "03", "04", "05", "06", "07", "08", "09", "0A", "0B", "0C", "0D", "0E", "0F", "0G", "0H", "0I", "0J", "0K", "0L", "0M", "0N", "0O", "0P", "0Q", "0R", "0S", "0T", "0U", "0V", "0W", "0X", "0Y", "0Z", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "1A", "1B", "1C", "1D", "1E", "1F", "1G", "1H", "1I", "1J", "1K", "1L", "1M", "1N", "1O", "1P", "1Q", "1R", "1S", "1T", "1U", "1V", "1W", "1X", "1Y", "1Z", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "2A", "2B", "2C", "2D", "2E", "2F", "2G", "2H", "2I", "2J", "2K", "2L", "2M", "2N", "2O", "2P", "2Q", "2R", "2S", "2T", "2U", "2V", "2W", "2X", "2Y", "2Z", "30", "31", "32", "33", "34", "35", "36", "37", "38", "39", "3A", "3B", "3C", "3D", "3E", "3F", "3G", "3H", "3I", "3J", "3K", "3L", "3M", "3N", "3O", "3P", "3Q", "3R", "3S", "3T", "3U", "3V", "3W", "3X", "3Y", "3Z", "40", "41", "42", "43", "44", "45", "46", "47", "48", "49", "4A", "4B", "4C", "4D", "4E", "4F", "4G", "4H", "4I", "4J", "4K", "4L", "4M", "4N", "4O", "4P", "4Q", "4R", "4S", "4T", "4U", "4V", "4W", "4X", "4Y", "4Z", "50", "51", "52", "53", "54", "55", "56", "57", "58", "59", "5A", "5B", "5C", "5D", "5E", "5F", "5G", "5H", "5I", "5J", "5K", "5L", "5M", "5N", "5O", "5P", "5Q", "5R", "5S", "5T", "5U", "5V", "5W", "5X", "5Y", "5Z", "60", "61", "62", "63", "64", "65", "66", "67", "68", "69", "6A", "6B", "6C", "6D", "6E", "6F", "6G", "6H", "6I", "6J", "6K", "6L", "6M", "6N", "6O", "6P", "6Q", "6R", "6S", "6T", "6U", "6V", "6W", "6X", "6Y", "6Z", "70", "71", "72", "73", "74", "75", "76", "77", "78", "79", "7A", "7B", "7C", "7D", "7E", "7F", "7G", "7H", "7I", "7J", "7K", "7L", "7M", "7N", "7O", "7P", "7Q", "7R", "7S", "7T", "7U", "7V", "7W", "7X", "7Y", "7Z", "80", "81", "82", "83", "84", "85", "86", "87", "88", "89", "8A", "8B", "8C", "8D", "8E", "8F", "8G", "8H", "8I", "8J", "8K", "8L", "8M", "8N", "8O", "8P", "8Q", "8R", "8S", "8T", "8U", "8V", "8W", "8X", "8Y", "8Z", "90", "91", "92", "93", "94", "95", "96", "97", "98", "99", "9A", "9B", "9C", "9D", "9E", "9F", "9G", "9H", "9I", "9J", "9K", "9L", "9M", "9N", "9O", "9P", "9Q", "9R", "9S", "9T", "9U", "9V", "9W", "9X", "9Y", "9Z", "A0", "A1", "A2", "A3", "A4", "A5", "A6", "A7", "A8", "A9", "AA", "AB", "AC", "AD", "AE", "AF", "AG", "AH", "AI", "AJ", "AK", "AL", "AM", "AN", "AO", "AP", "AQ", "AR", "AS", "AT", "AU", "AV", "AW", "AX", "AY", "AZ", "B0", "B1", "B2", "B3", "B4", "B5", "B6", "B7", "B8", "B9", "BA", "BB", "BC", "BD", "BE", "BF", "BG", "BH", "BI", "BJ", "BK", "BL", "BM", "BN", "BO", "BP", "BQ", "BR", "BS", "BT", "BU", "BV", "BW", "BX", "BY", "BZ", "C0", "C1", "C2", "C3", "C4", "C5", "C6", "C7", "C8", "C9", "CA", "CB", "CC", "CD", "CE", "CF", "CG", "CH", "CI", "CJ", "CK", "CL", "CM", "CN", "CO", "CP", "CQ", "CR", "CS", "CT", "CU", "CV", "CW", "CX", "CY", "CZ", "D0", "D1", "D2", "D3", "D4", "D5", "D6", "D7", "D8", "D9", "DA", "DB", "DC", "DD", "DE", "DF", "DG", "DH", "DI", "DJ", "DK", "DL", "DM", "DN", "DO", "DP", "DQ", "DR", "DS", "DT", "DU", "DV", "DW", "DX", "DY", "DZ", "E0", "E1", "E2", "E3", "E4", "E5", "E6", "E7", "E8", "E9", "EA", "EB", "EC", "ED", "EE", "EF", "EG", "EH", "EI", "EJ", "EK", "EL", "EM", "EN", "EO", "EP", "EQ", "ER", "ES", "ET", "EU", "EV", "EW", "EX", "EY", "EZ", "F0", "F1", "F2", "F3", "F4", "F5", "F6", "F7", "F8", "F9", "FA", "FB", "FC", "FD", "FE", "FF", "FG", "FH", "FI", "FJ", "FK", "FL", "FM", "FN", "FO", "FP", "FQ", "FR", "FS", "FT", "FU", "FV", "FW", "FX", "FY", "FZ", "G0", "G1", "G2", "G3", "G4", "G5", "G6", "G7", "G8", "G9", "GA", "GB", "GC", "GD", "GE", "GF", "GG", "GH", "GI", "GJ", "GK", "GL", "GM", "GN", "GO", "GP", "GQ", "GR", "GS", "GT", "GU", "GV", "GW", "GX", "GY", "GZ", "H0", "H1", "H2", "H3", "H4", "H5", "H6", "H7", "H8", "H9", "HA", "HB", "HC", "HD", "HE", "HF", "HG", "HH", "HI", "HJ", "HK", "HL", "HM", "HN", "HO", "HP", "HQ", "HR", "HS", "HT", "HU", "HV", "HW", "HX", "HY", "HZ", "I0", "I1", "I2", "I3", "I4", "I5", "I6", "I7", "I8", "I9", "IA", "IB", "IC", "ID", "IE", "IF", "IG", "IH", "II", "IJ", "IK", "IL", "IM", "IN", "IO", "IP", "IQ", "IR", "IS", "IT", "IU", "IV", "IW", "IX", "IY", "IZ", "J0", "J1", "J2", "J3", "J4", "J5", "J6", "J7", "J8", "J9", "JA", "JB", "JC", "JD", "JE", "JF", "JG", "JH", "JI", "JJ", "JK", "JL", "JM", "JN", "JO", "JP", "JQ", "JR", "JS", "JT", "JU", "JV", "JW", "JX", "JY", "JZ", "K0", "K1", "K2", "K3", "K4", "K5", "K6", "K7", "K8", "K9", "KA", "KB", "KC", "KD", "KE", "KF", "KG", "KH", "KI", "KJ", "KK", "KL", "KM", "KN", "KO", "KP", "KQ", "KR", "KS", "KT", "KU", "KV", "KW", "KX", "KY", "KZ", "L0", "L1", "L2", "L3", "L4", "L5", "L6", "L7", "L8", "L9", "LA", "LB", "LC", "LD", "LE", "LF", "LG", "LH", "LI", "LJ", "LK", "LL", "LM", "LN", "LO", "LP", "LQ", "LR", "LS", "LT", "LU", "LV", "LW", "LX", "LY", "LZ", "M0", "M1", "M2", "M3", "M4", "M5", "M6", "M7", "M8", "M9", "MA", "MB", "MC", "MD", "ME", "MF", "MG", "MH", "MI", "MJ", "MK", "ML", "MM", "MN", "MO", "MP", "MQ", "MR", "MS", "MT", "MU", "MV", "MW", "MX", "MY", "MZ", "N0", "N1", "N2", "N3", "N4", "N5", "N6", "N7", "N8", "N9", "NA", "NB", "NC", "ND", "NE", "NF", "NG", "NH", "NI", "NJ", "NK", "NL", "NM", "NN", "NO", "NP", "NQ", "NR", "NS", "NT", "NU", "NV", "NW", "NX", "NY", "NZ", "O0", "O1", "O2", "O3", "O4", "O5", "O6", "O7", "O8", "O9", "OA", "OB", "OC", "OD", "OE", "OF", "OG", "OH", "OI", "OJ", "OK", "OL", "OM", "ON", "OO", "OP", "OQ", "OR", "OS", "OT", "OU", "OV", "OW", "OX", "OY", "OZ", "P0", "P1", "P2", "P3", "P4", "P5", "P6", "P7", "P8", "P9", "PA", "PB", "PC", "PD", "PE", "PF", "PG", "PH", "PI", "PJ", "PK", "PL", "PM", "PN", "PO", "PP", "PQ", "PR", "PS", "PT", "PU", "PV", "PW", "PX", "PY", "PZ", "Q0", "Q1", "Q2", "Q3", "Q4", "Q5", "Q6", "Q7", "Q8", "Q9", "QA", "QB", "QC", "QD", "QE", "QF", "QG", "QH", "QI", "QJ", "QK", "QL", "QM", "QN", "QO", "QP", "QQ", "QR", "QS", "QT", "QU", "QV", "QW", "QX", "QY", "QZ", "R0", "R1", "R2", "R3", "R4", "R5", "R6", "R7", "R8", "R9", "RA", "RB", "RC", "RD", "RE", "RF", "RG", "RH", "RI", "RJ", "RK", "RL", "RM", "RN", "RO", "RP", "RQ", "RR", "RS", "RT", "RU", "RV", "RW", "RX", "RY", "RZ", "S0", "S1", "S2", "S3", "S4", "S5", "S6", "S7", "S8", "S9", "SA", "SB", "SC", "SD", "SE", "SF", "SG", "SH", "SI", "SJ", "SK", "SL", "SM", "SN", "SO", "SP", "SQ", "SR", "SS", "ST", "SU", "SV", "SW", "SX", "SY", "SZ", "T0", "T1", "T2", "T3", "T4", "T5", "T6", "T7", "T8", "T9", "TA", "TB", "TC", "TD", "TE", "TF", "TG", "TH", "TI", "TJ", "TK", "TL", "TM", "TN", "TO", "TP", "TQ", "TR", "TS", "TT", "TU", "TV", "TW", "TX", "TY", "TZ", "U0", "U1", "U2", "U3", "U4", "U5", "U6", "U7", "U8", "U9", "UA", "UB", "UC", "UD", "UE", "UF", "UG", "UH", "UI", "UJ", "UK", "UL", "UM", "UN", "UO", "UP", "UQ", "UR", "US", "UT", "UU", "UV", "UW", "UX", "UY", "UZ", "V0", "V1", "V2", "V3", "V4", "V5", "V6", "V7", "V8", "V9", "VA", "VB", "VC", "VD", "VE", "VF", "VG", "VH", "VI", "VJ", "VK", "VL", "VM", "VN", "VO", "VP", "VQ", "VR", "VS", "VT", "VU", "VV", "VW", "VX", "VY", "VZ", "W0", "W1", "W2", "W3", "W4", "W5", "W6", "W7", "W8", "W9", "WA", "WB", "WC", "WD", "WE", "WF", "WG", "WH", "WI", "WJ", "WK", "WL", "WM", "WN", "WO", "WP", "WQ", "WR", "WS", "WT", "WU", "WV", "WW", "WX", "WY", "WZ", "X0", "X1", "X2", "X3", "X4", "X5", "X6", "X7", "X8", "X9", "XA", "XB", "XC", "XD", "XE", "XF", "XG", "XH", "XI", "XJ", "XK", "XL", "XM", "XN", "XO", "XP", "XQ", "XR", "XS", "XT", "XU", "XV", "XW", "XX", "XY", "XZ", "Y0", "Y1", "Y2", "Y3", "Y4", "Y5", "Y6", "Y7", "Y8", "Y9", "YA", "YB", "YC", "YD", "YE", "YF", "YG", "YH", "YI", "YJ", "YK", "YL", "YM", "YN", "YO", "YP", "YQ", "YR", "YS", "YT", "YU", "YV", "YW", "YX", "YY", "YZ", "Z0", "Z1", "Z2", "Z3", "Z4", "Z5", "Z6", "Z7", "Z8", "Z9", "ZA", "ZB", "ZC", "ZD", "ZE", "ZF", "ZG", "ZH", "ZI", "ZJ", "ZK", "ZL", "ZM", "ZN", "ZO", "ZP", "ZQ", "ZR", "ZS", "ZT", "ZU", "ZV", "ZW", "ZX", "ZY", "ZZ"}) + Me.CHLnObj.Location = New System.Drawing.Point(67, 210) + Me.CHLnObj.Margin = New System.Windows.Forms.Padding(0) + Me.CHLnObj.Name = "CHLnObj" + Me.CHLnObj.Size = New System.Drawing.Size(116, 23) + Me.CHLnObj.TabIndex = 114 + ' + 'Label23 + ' + Me.Label23.Anchor = System.Windows.Forms.AnchorStyles.Right + Me.Label23.AutoSize = True + Me.Label23.Location = New System.Drawing.Point(19, 145) + Me.Label23.Name = "Label23" + Me.Label23.Size = New System.Drawing.Size(45, 15) + Me.Label23.TabIndex = 26 + Me.Label23.Text = "ExRank" + Me.Label23.TextAlign = System.Drawing.ContentAlignment.MiddleRight + ' + 'Label21 + ' + Me.Label21.Anchor = System.Windows.Forms.AnchorStyles.Right + Me.Label21.AutoSize = True + Me.Label21.Location = New System.Drawing.Point(9, 122) + Me.Label21.Name = "Label21" + Me.Label21.Size = New System.Drawing.Size(55, 15) + Me.Label21.TabIndex = 25 + Me.Label21.Text = "Difficulty" + Me.Label21.TextAlign = System.Drawing.ContentAlignment.MiddleRight + ' + 'THComment + ' + Me.POHeaderPart2.SetColumnSpan(Me.THComment, 2) + Me.THComment.Dock = System.Windows.Forms.DockStyle.Fill + Me.THComment.Location = New System.Drawing.Point(67, 187) + Me.THComment.Margin = New System.Windows.Forms.Padding(0) + Me.THComment.Name = "THComment" + Me.THComment.Size = New System.Drawing.Size(116, 23) + Me.THComment.TabIndex = 113 + ' + 'Label24 + ' + Me.Label24.Anchor = System.Windows.Forms.AnchorStyles.Right + Me.Label24.AutoSize = True + Me.Label24.Location = New System.Drawing.Point(25, 214) + Me.Label24.Name = "Label24" + Me.Label24.Size = New System.Drawing.Size(39, 15) + Me.Label24.TabIndex = 27 + Me.Label24.Text = "LnObj" + Me.Label24.TextAlign = System.Drawing.ContentAlignment.MiddleRight + ' + 'Label15 + ' + Me.Label15.Anchor = System.Windows.Forms.AnchorStyles.Right + Me.Label15.AutoSize = True + Me.Label15.Location = New System.Drawing.Point(15, 4) + Me.Label15.Name = "Label15" + Me.Label15.Size = New System.Drawing.Size(49, 15) + Me.Label15.TabIndex = 6 + Me.Label15.Text = "SubTitle" + Me.Label15.TextAlign = System.Drawing.ContentAlignment.MiddleRight + ' + 'THTotal + ' + Me.THTotal.Dock = System.Windows.Forms.DockStyle.Fill + Me.THTotal.Location = New System.Drawing.Point(67, 164) + Me.THTotal.Margin = New System.Windows.Forms.Padding(0) + Me.THTotal.Name = "THTotal" + Me.THTotal.Size = New System.Drawing.Size(88, 23) + Me.THTotal.TabIndex = 112 + ' + 'Label20 + ' + Me.Label20.Anchor = System.Windows.Forms.AnchorStyles.Right + Me.Label20.AutoSize = True + Me.Label20.Location = New System.Drawing.Point(32, 168) + Me.Label20.Name = "Label20" + Me.Label20.Size = New System.Drawing.Size(32, 15) + Me.Label20.TabIndex = 5 + Me.Label20.Text = "Total" + Me.Label20.TextAlign = System.Drawing.ContentAlignment.MiddleRight + ' + 'BHStageFile + ' + Me.BHStageFile.Dock = System.Windows.Forms.DockStyle.Fill + Me.BHStageFile.FlatStyle = System.Windows.Forms.FlatStyle.System + Me.BHStageFile.Location = New System.Drawing.Point(158, 46) + Me.BHStageFile.Margin = New System.Windows.Forms.Padding(3, 0, 0, 0) + Me.BHStageFile.Name = "BHStageFile" + Me.BHStageFile.Size = New System.Drawing.Size(25, 24) + Me.BHStageFile.TabIndex = 105 + Me.BHStageFile.Text = "..." + Me.BHStageFile.UseVisualStyleBackColor = True + ' + 'BHBanner + ' + Me.BHBanner.Dock = System.Windows.Forms.DockStyle.Fill + Me.BHBanner.FlatStyle = System.Windows.Forms.FlatStyle.System + Me.BHBanner.Location = New System.Drawing.Point(158, 70) + Me.BHBanner.Margin = New System.Windows.Forms.Padding(3, 0, 0, 0) + Me.BHBanner.Name = "BHBanner" + Me.BHBanner.Size = New System.Drawing.Size(25, 24) + Me.BHBanner.TabIndex = 107 + Me.BHBanner.Text = "..." + Me.BHBanner.UseVisualStyleBackColor = True + ' + 'Label19 + ' + Me.Label19.Anchor = System.Windows.Forms.AnchorStyles.Right + Me.Label19.AutoSize = True + Me.Label19.Location = New System.Drawing.Point(3, 191) + Me.Label19.Name = "Label19" + Me.Label19.Size = New System.Drawing.Size(61, 15) + Me.Label19.TabIndex = 13 + Me.Label19.Text = "Comment" + Me.Label19.TextAlign = System.Drawing.ContentAlignment.MiddleRight + ' + 'BHBackBMP + ' + Me.BHBackBMP.Dock = System.Windows.Forms.DockStyle.Fill + Me.BHBackBMP.FlatStyle = System.Windows.Forms.FlatStyle.System + Me.BHBackBMP.Location = New System.Drawing.Point(158, 94) + Me.BHBackBMP.Margin = New System.Windows.Forms.Padding(3, 0, 0, 0) + Me.BHBackBMP.Name = "BHBackBMP" + Me.BHBackBMP.Size = New System.Drawing.Size(25, 24) + Me.BHBackBMP.TabIndex = 109 + Me.BHBackBMP.Text = "..." + Me.BHBackBMP.UseVisualStyleBackColor = True + ' + 'Label17 + ' + Me.Label17.Anchor = System.Windows.Forms.AnchorStyles.Right + Me.Label17.AutoSize = True + Me.Label17.Location = New System.Drawing.Point(9, 27) + Me.Label17.Name = "Label17" + Me.Label17.Size = New System.Drawing.Size(55, 15) + Me.Label17.TabIndex = 7 + Me.Label17.Text = "SubArtist" + Me.Label17.TextAlign = System.Drawing.ContentAlignment.MiddleRight + ' + 'Label16 + ' + Me.Label16.Anchor = System.Windows.Forms.AnchorStyles.Right + Me.Label16.AutoSize = True + Me.Label16.Location = New System.Drawing.Point(7, 50) + Me.Label16.Name = "Label16" + Me.Label16.Size = New System.Drawing.Size(57, 15) + Me.Label16.TabIndex = 9 + Me.Label16.Text = "Stage File" + Me.Label16.TextAlign = System.Drawing.ContentAlignment.MiddleRight + ' + 'Label12 + ' + Me.Label12.Anchor = System.Windows.Forms.AnchorStyles.Right + Me.Label12.AutoSize = True + Me.Label12.Location = New System.Drawing.Point(20, 74) + Me.Label12.Name = "Label12" + Me.Label12.Size = New System.Drawing.Size(44, 15) + Me.Label12.TabIndex = 13 + Me.Label12.Text = "Banner" + Me.Label12.TextAlign = System.Drawing.ContentAlignment.MiddleRight + ' + 'THBackBMP + ' + Me.THBackBMP.Dock = System.Windows.Forms.DockStyle.Fill + Me.THBackBMP.Location = New System.Drawing.Point(67, 94) + Me.THBackBMP.Margin = New System.Windows.Forms.Padding(0) + Me.THBackBMP.Name = "THBackBMP" + Me.THBackBMP.Size = New System.Drawing.Size(88, 23) + Me.THBackBMP.TabIndex = 108 + ' + 'Label11 + ' + Me.Label11.Anchor = System.Windows.Forms.AnchorStyles.Right + Me.Label11.AutoSize = True + Me.Label11.Location = New System.Drawing.Point(4, 98) + Me.Label11.Name = "Label11" + Me.Label11.Size = New System.Drawing.Size(60, 15) + Me.Label11.TabIndex = 16 + Me.Label11.Text = "Back BMP" + Me.Label11.TextAlign = System.Drawing.ContentAlignment.MiddleRight + ' + 'THBanner + ' + Me.THBanner.Dock = System.Windows.Forms.DockStyle.Fill + Me.THBanner.Location = New System.Drawing.Point(67, 70) + Me.THBanner.Margin = New System.Windows.Forms.Padding(0) + Me.THBanner.Name = "THBanner" + Me.THBanner.Size = New System.Drawing.Size(88, 23) + Me.THBanner.TabIndex = 106 + ' + 'THStageFile + ' + Me.THStageFile.Dock = System.Windows.Forms.DockStyle.Fill + Me.THStageFile.Location = New System.Drawing.Point(67, 46) + Me.THStageFile.Margin = New System.Windows.Forms.Padding(0) + Me.THStageFile.Name = "THStageFile" + Me.THStageFile.Size = New System.Drawing.Size(88, 23) + Me.THStageFile.TabIndex = 104 + ' + 'THSubTitle + ' + Me.POHeaderPart2.SetColumnSpan(Me.THSubTitle, 2) + Me.THSubTitle.Dock = System.Windows.Forms.DockStyle.Fill + Me.THSubTitle.Location = New System.Drawing.Point(67, 0) + Me.THSubTitle.Margin = New System.Windows.Forms.Padding(0) + Me.THSubTitle.Name = "THSubTitle" + Me.THSubTitle.Size = New System.Drawing.Size(116, 23) + Me.THSubTitle.TabIndex = 102 + ' + 'THSubArtist + ' + Me.POHeaderPart2.SetColumnSpan(Me.THSubArtist, 2) + Me.THSubArtist.Dock = System.Windows.Forms.DockStyle.Fill + Me.THSubArtist.Location = New System.Drawing.Point(67, 23) + Me.THSubArtist.Margin = New System.Windows.Forms.Padding(0) + Me.THSubArtist.Name = "THSubArtist" + Me.THSubArtist.Size = New System.Drawing.Size(116, 23) + Me.THSubArtist.TabIndex = 103 + ' + 'POHeaderExpander + ' + Me.POHeaderExpander.Appearance = System.Windows.Forms.Appearance.Button + Me.POHeaderExpander.AutoSize = True + Me.POHeaderExpander.Cursor = System.Windows.Forms.Cursors.Hand + Me.POHeaderExpander.Dock = System.Windows.Forms.DockStyle.Top + Me.POHeaderExpander.FlatAppearance.BorderSize = 0 + Me.POHeaderExpander.FlatStyle = System.Windows.Forms.FlatStyle.Popup + Me.POHeaderExpander.Location = New System.Drawing.Point(0, 161) + Me.POHeaderExpander.Margin = New System.Windows.Forms.Padding(0) + Me.POHeaderExpander.Name = "POHeaderExpander" + Me.POHeaderExpander.Size = New System.Drawing.Size(183, 25) + Me.POHeaderExpander.TabIndex = 101 + Me.POHeaderExpander.TabStop = False + Me.POHeaderExpander.Text = "Expand..." + Me.POHeaderExpander.TextAlign = System.Drawing.ContentAlignment.MiddleCenter + Me.POHeaderExpander.UseVisualStyleBackColor = False + ' + 'POHeaderPart1 + ' + Me.POHeaderPart1.AutoSize = True + Me.POHeaderPart1.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink + Me.POHeaderPart1.ColumnCount = 2 + Me.POHeaderPart1.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle()) + Me.POHeaderPart1.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100.0!)) + Me.POHeaderPart1.Controls.Add(Me.Label3, 0, 0) + Me.POHeaderPart1.Controls.Add(Me.THPlayLevel, 1, 6) + Me.POHeaderPart1.Controls.Add(Me.CHRank, 1, 5) + Me.POHeaderPart1.Controls.Add(Me.Label10, 0, 5) + Me.POHeaderPart1.Controls.Add(Me.CHPlayer, 1, 4) + Me.POHeaderPart1.Controls.Add(Me.Label4, 0, 1) + Me.POHeaderPart1.Controls.Add(Me.THGenre, 1, 2) + Me.POHeaderPart1.Controls.Add(Me.THBPM, 1, 3) + Me.POHeaderPart1.Controls.Add(Me.Label2, 0, 2) + Me.POHeaderPart1.Controls.Add(Me.THArtist, 1, 1) + Me.POHeaderPart1.Controls.Add(Me.THTitle, 1, 0) + Me.POHeaderPart1.Controls.Add(Me.Label9, 0, 3) + Me.POHeaderPart1.Controls.Add(Me.Label8, 0, 4) + Me.POHeaderPart1.Controls.Add(Me.Label6, 0, 6) + Me.POHeaderPart1.Dock = System.Windows.Forms.DockStyle.Top + Me.POHeaderPart1.Location = New System.Drawing.Point(0, 0) + Me.POHeaderPart1.Name = "POHeaderPart1" + Me.POHeaderPart1.RowCount = 7 + Me.POHeaderPart1.RowStyles.Add(New System.Windows.Forms.RowStyle()) + Me.POHeaderPart1.RowStyles.Add(New System.Windows.Forms.RowStyle()) + Me.POHeaderPart1.RowStyles.Add(New System.Windows.Forms.RowStyle()) + Me.POHeaderPart1.RowStyles.Add(New System.Windows.Forms.RowStyle()) + Me.POHeaderPart1.RowStyles.Add(New System.Windows.Forms.RowStyle()) + Me.POHeaderPart1.RowStyles.Add(New System.Windows.Forms.RowStyle()) + Me.POHeaderPart1.RowStyles.Add(New System.Windows.Forms.RowStyle()) + Me.POHeaderPart1.Size = New System.Drawing.Size(183, 161) + Me.POHeaderPart1.TabIndex = 25 + ' + 'Label3 + ' + Me.Label3.Anchor = System.Windows.Forms.AnchorStyles.Right + Me.Label3.AutoSize = True + Me.Label3.Location = New System.Drawing.Point(33, 4) + Me.Label3.Name = "Label3" + Me.Label3.Size = New System.Drawing.Size(29, 15) + Me.Label3.TabIndex = 2 + Me.Label3.Text = "Title" + Me.Label3.TextAlign = System.Drawing.ContentAlignment.MiddleRight + ' + 'THPlayLevel + ' + Me.THPlayLevel.Dock = System.Windows.Forms.DockStyle.Fill + Me.THPlayLevel.Location = New System.Drawing.Point(65, 138) + Me.THPlayLevel.Margin = New System.Windows.Forms.Padding(0) + Me.THPlayLevel.Name = "THPlayLevel" + Me.THPlayLevel.Size = New System.Drawing.Size(118, 23) + Me.THPlayLevel.TabIndex = 8 + ' + 'CHRank + ' + Me.CHRank.Dock = System.Windows.Forms.DockStyle.Top + Me.CHRank.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList + Me.CHRank.FlatStyle = System.Windows.Forms.FlatStyle.System + Me.CHRank.Items.AddRange(New Object() {"0 - Very Hard", "1 - Hard", "2 - Normal", "3 - Easy", "4 - Very Easy"}) + Me.CHRank.Location = New System.Drawing.Point(65, 115) + Me.CHRank.Margin = New System.Windows.Forms.Padding(0) + Me.CHRank.Name = "CHRank" + Me.CHRank.Size = New System.Drawing.Size(118, 23) + Me.CHRank.TabIndex = 7 + ' + 'Label10 + ' + Me.Label10.Anchor = System.Windows.Forms.AnchorStyles.Right + Me.Label10.AutoSize = True + Me.Label10.Location = New System.Drawing.Point(12, 119) + Me.Label10.Name = "Label10" + Me.Label10.Size = New System.Drawing.Size(50, 15) + Me.Label10.TabIndex = 16 + Me.Label10.Text = "Ranking" + Me.Label10.TextAlign = System.Drawing.ContentAlignment.MiddleRight + ' + 'CHPlayer + ' + Me.CHPlayer.Dock = System.Windows.Forms.DockStyle.Top + Me.CHPlayer.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList + Me.CHPlayer.FlatStyle = System.Windows.Forms.FlatStyle.System + Me.CHPlayer.Items.AddRange(New Object() {"1 - Single Play", "2 - Couple Play", "3 - Double Play"}) + Me.CHPlayer.Location = New System.Drawing.Point(65, 92) + Me.CHPlayer.Margin = New System.Windows.Forms.Padding(0) + Me.CHPlayer.Name = "CHPlayer" + Me.CHPlayer.Size = New System.Drawing.Size(118, 23) + Me.CHPlayer.TabIndex = 6 + ' + 'Label4 + ' + Me.Label4.Anchor = System.Windows.Forms.AnchorStyles.Right + Me.Label4.AutoSize = True + Me.Label4.Location = New System.Drawing.Point(27, 27) + Me.Label4.Name = "Label4" + Me.Label4.Size = New System.Drawing.Size(35, 15) + Me.Label4.TabIndex = 3 + Me.Label4.Text = "Artist" + Me.Label4.TextAlign = System.Drawing.ContentAlignment.MiddleRight + ' + 'THGenre + ' + Me.THGenre.Dock = System.Windows.Forms.DockStyle.Fill + Me.THGenre.Location = New System.Drawing.Point(65, 46) + Me.THGenre.Margin = New System.Windows.Forms.Padding(0) + Me.THGenre.Name = "THGenre" + Me.THGenre.Size = New System.Drawing.Size(118, 23) + Me.THGenre.TabIndex = 4 + ' + 'THBPM + ' + Me.THBPM.DecimalPlaces = 4 + Me.THBPM.Dock = System.Windows.Forms.DockStyle.Fill + Me.THBPM.Increment = New Decimal(New Integer() {10, 0, 0, 0}) + Me.THBPM.Location = New System.Drawing.Point(65, 69) + Me.THBPM.Margin = New System.Windows.Forms.Padding(0) + Me.THBPM.Maximum = New Decimal(New Integer() {655359999, 0, 0, 262144}) + Me.THBPM.Minimum = New Decimal(New Integer() {1, 0, 0, 262144}) + Me.THBPM.Name = "THBPM" + Me.THBPM.Size = New System.Drawing.Size(118, 23) + Me.THBPM.TabIndex = 5 + Me.THBPM.Value = New Decimal(New Integer() {120, 0, 0, 0}) + ' + 'Label2 + ' + Me.Label2.Anchor = System.Windows.Forms.AnchorStyles.Right + Me.Label2.AutoSize = True + Me.Label2.Location = New System.Drawing.Point(24, 50) + Me.Label2.Name = "Label2" + Me.Label2.Size = New System.Drawing.Size(38, 15) + Me.Label2.TabIndex = 4 + Me.Label2.Text = "Genre" + Me.Label2.TextAlign = System.Drawing.ContentAlignment.MiddleRight + ' + 'THArtist + ' + Me.THArtist.Dock = System.Windows.Forms.DockStyle.Fill + Me.THArtist.Location = New System.Drawing.Point(65, 23) + Me.THArtist.Margin = New System.Windows.Forms.Padding(0) + Me.THArtist.Name = "THArtist" + Me.THArtist.Size = New System.Drawing.Size(118, 23) + Me.THArtist.TabIndex = 3 + ' + 'THTitle + ' + Me.THTitle.Dock = System.Windows.Forms.DockStyle.Fill + Me.THTitle.Location = New System.Drawing.Point(65, 0) + Me.THTitle.Margin = New System.Windows.Forms.Padding(0) + Me.THTitle.Name = "THTitle" + Me.THTitle.Size = New System.Drawing.Size(118, 23) + Me.THTitle.TabIndex = 2 + ' + 'Label9 + ' + Me.Label9.Anchor = System.Windows.Forms.AnchorStyles.Right + Me.Label9.AutoSize = True + Me.Label9.Location = New System.Drawing.Point(30, 73) + Me.Label9.Name = "Label9" + Me.Label9.Size = New System.Drawing.Size(32, 15) + Me.Label9.TabIndex = 5 + Me.Label9.Text = "BPM" + Me.Label9.TextAlign = System.Drawing.ContentAlignment.MiddleRight + ' + 'Label8 + ' + Me.Label8.Anchor = System.Windows.Forms.AnchorStyles.Right + Me.Label8.AutoSize = True + Me.Label8.Location = New System.Drawing.Point(23, 96) + Me.Label8.Name = "Label8" + Me.Label8.Size = New System.Drawing.Size(39, 15) + Me.Label8.TabIndex = 13 + Me.Label8.Text = "Player" + Me.Label8.TextAlign = System.Drawing.ContentAlignment.MiddleRight + ' + 'Label6 + ' + Me.Label6.Anchor = System.Windows.Forms.AnchorStyles.Right + Me.Label6.AutoSize = True + Me.Label6.Location = New System.Drawing.Point(3, 142) + Me.Label6.Name = "Label6" + Me.Label6.Size = New System.Drawing.Size(59, 15) + Me.Label6.TabIndex = 8 + Me.Label6.Text = "Play Level" + Me.Label6.TextAlign = System.Drawing.ContentAlignment.MiddleRight + ' + 'POHeaderSwitch + ' + Me.POHeaderSwitch.Appearance = System.Windows.Forms.Appearance.Button + Me.POHeaderSwitch.BackColor = System.Drawing.SystemColors.Control + Me.POHeaderSwitch.Checked = True + Me.POHeaderSwitch.CheckState = System.Windows.Forms.CheckState.Checked + Me.POHeaderSwitch.Cursor = System.Windows.Forms.Cursors.Hand + Me.POHeaderSwitch.Dock = System.Windows.Forms.DockStyle.Top + Me.POHeaderSwitch.Font = New System.Drawing.Font("Segoe UI", 9.0!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.POHeaderSwitch.Location = New System.Drawing.Point(0, 0) + Me.POHeaderSwitch.Name = "POHeaderSwitch" + Me.POHeaderSwitch.Size = New System.Drawing.Size(183, 20) + Me.POHeaderSwitch.TabIndex = 1 + Me.POHeaderSwitch.TabStop = False + Me.POHeaderSwitch.Text = "Header" + Me.POHeaderSwitch.TextAlign = System.Drawing.ContentAlignment.MiddleCenter + Me.POHeaderSwitch.UseCompatibleTextRendering = True + Me.POHeaderSwitch.UseVisualStyleBackColor = False + ' + 'POptionsScroll + ' + Me.POptionsScroll.AutoScroll = True + Me.POptionsScroll.Controls.Add(Me.POptions) + Me.POptionsScroll.Dock = System.Windows.Forms.DockStyle.Right + Me.POptionsScroll.Location = New System.Drawing.Point(958, 0) + Me.POptionsScroll.Name = "POptionsScroll" + Me.POptionsScroll.Size = New System.Drawing.Size(200, 781) + Me.POptionsScroll.TabIndex = 28 + ' + 'TBTotalValue + ' + Me.TBTotalValue.Name = "TBTotalValue" + Me.TBTotalValue.Size = New System.Drawing.Size(13, 22) + Me.TBTotalValue.Text = "0" + ' + 'MainWindow + ' + Me.AllowDrop = True + Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None + Me.ClientSize = New System.Drawing.Size(1158, 781) + Me.Controls.Add(Me.ToolStripContainer1) + Me.Controls.Add(Me.pStatus) + Me.Controls.Add(Me.POptionsResizer) + Me.Controls.Add(Me.POptionsScroll) + Me.DoubleBuffered = True + Me.Font = New System.Drawing.Font("Segoe UI", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.Icon = CType(resources.GetObject("$this.Icon"), System.Drawing.Icon) + Me.KeyPreview = True + Me.MainMenuStrip = Me.mnMain + Me.Name = "MainWindow" + Me.cmnLanguage.ResumeLayout(False) + Me.cmnTheme.ResumeLayout(False) + Me.Menu1.ResumeLayout(False) + Me.mnMain.ResumeLayout(False) + Me.mnMain.PerformLayout() + Me.cmnConversion.ResumeLayout(False) + Me.TBMain.ResumeLayout(False) + Me.TBMain.PerformLayout() + Me.pStatus.ResumeLayout(False) + Me.pStatus.PerformLayout() + Me.FStatus2.ResumeLayout(False) + Me.FStatus2.PerformLayout() + Me.FStatus.ResumeLayout(False) + Me.FStatus.PerformLayout() + Me.ToolStripContainer1.ContentPanel.ResumeLayout(False) + Me.ToolStripContainer1.TopToolStripPanel.ResumeLayout(False) + Me.ToolStripContainer1.TopToolStripPanel.PerformLayout() + Me.ToolStripContainer1.ResumeLayout(False) + Me.ToolStripContainer1.PerformLayout() + Me.PMain.ResumeLayout(False) + Me.PMainR.ResumeLayout(False) + Me.PMainL.ResumeLayout(False) + Me.POptions.ResumeLayout(False) + Me.POptions.PerformLayout() + Me.POExpansion.ResumeLayout(False) + Me.POExpansionInner.ResumeLayout(False) + Me.POExpansionInner.PerformLayout() + Me.POBeat.ResumeLayout(False) + Me.POBeatInner.ResumeLayout(False) + Me.POBeatInner.PerformLayout() + Me.TableLayoutPanel7.ResumeLayout(False) + Me.TableLayoutPanel7.PerformLayout() + CType(Me.nBeatD, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.nBeatN, System.ComponentModel.ISupportInitialize).EndInit() + Me.POBeatPart2.ResumeLayout(False) + Me.POBeatPart2.PerformLayout() + Me.POWAV.ResumeLayout(False) + Me.POWAVInner.ResumeLayout(False) + Me.POWAVInner.PerformLayout() + Me.FlowLayoutPanel3.ResumeLayout(False) + Me.POWAVPart2.ResumeLayout(False) + Me.POWAVPart2.PerformLayout() + Me.POWaveForm.ResumeLayout(False) + Me.POWaveForm.PerformLayout() + Me.POWaveFormInner.ResumeLayout(False) + Me.POWaveFormInner.PerformLayout() + Me.POWaveFormPart2.ResumeLayout(False) + Me.POWaveFormPart2.PerformLayout() + CType(Me.TWSaturation, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.PictureBox2, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.TWTransparency, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.PictureBox3, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.TWPrecision, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.PictureBox4, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.TWWidth, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.PictureBox5, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.TWLeft, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.PictureBox6, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.TWSaturation2, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.TWLeft2, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.TWTransparency2, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.TWWidth2, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.TWPrecision2, System.ComponentModel.ISupportInitialize).EndInit() + Me.POWaveFormPart1.ResumeLayout(False) + Me.POWaveFormPart1.PerformLayout() + Me.TableLayoutPanel1.ResumeLayout(False) + Me.TableLayoutPanel1.PerformLayout() + Me.FlowLayoutPanel1.ResumeLayout(False) + Me.TableLayoutPanel6.ResumeLayout(False) + Me.TableLayoutPanel6.PerformLayout() + CType(Me.PictureBox1, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.TWPosition2, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.TWPosition, System.ComponentModel.ISupportInitialize).EndInit() + Me.POGrid.ResumeLayout(False) + Me.POGrid.PerformLayout() + Me.POGridInner.ResumeLayout(False) + Me.POGridInner.PerformLayout() + Me.POGridPart2.ResumeLayout(False) + Me.POGridPart2.PerformLayout() + Me.TableLayoutPanel5.ResumeLayout(False) + Me.TableLayoutPanel5.PerformLayout() + Me.FlowLayoutPanel2.ResumeLayout(False) + Me.TableLayoutPanel4.ResumeLayout(False) + Me.TableLayoutPanel4.PerformLayout() + CType(Me.CGB, System.ComponentModel.ISupportInitialize).EndInit() + Me.POGridPart1.ResumeLayout(False) + Me.POGridPart1.PerformLayout() + Me.TableLayoutPanel3.ResumeLayout(False) + Me.TableLayoutPanel3.PerformLayout() + CType(Me.PictureBox9, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.CGHeight2, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.CGHeight, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.PictureBox10, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.CGWidth2, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.CGWidth, System.ComponentModel.ISupportInitialize).EndInit() + Me.TableLayoutPanel2.ResumeLayout(False) + Me.TableLayoutPanel2.PerformLayout() + CType(Me.PictureBox7, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.CGDivide, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.CGSub, System.ComponentModel.ISupportInitialize).EndInit() + Me.POHeader.ResumeLayout(False) + Me.POHeader.PerformLayout() + Me.POHeaderInner.ResumeLayout(False) + Me.POHeaderInner.PerformLayout() + Me.POHeaderPart2.ResumeLayout(False) + Me.POHeaderPart2.PerformLayout() + Me.POHeaderPart1.ResumeLayout(False) + Me.POHeaderPart1.PerformLayout() + CType(Me.THBPM, System.ComponentModel.ISupportInitialize).EndInit() + Me.POptionsScroll.ResumeLayout(False) + Me.POptionsScroll.PerformLayout() + Me.ResumeLayout(False) + Me.PerformLayout() + + End Sub + Friend WithEvents Timer1 As System.Windows.Forms.Timer + Friend WithEvents MInsert As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents MRemove As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents Menu1 As System.Windows.Forms.ContextMenuStrip + Friend WithEvents AutoSaveTimer As System.Windows.Forms.Timer + Friend WithEvents mnMain As System.Windows.Forms.MenuStrip + Friend WithEvents mnFile As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents mnNew As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents mnOpen As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents mnImportSM As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents mnImportIBMSC As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents ToolStripSeparator14 As System.Windows.Forms.ToolStripSeparator + Friend WithEvents mnSave As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents mnSaveAs As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents mnExport As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents ToolStripSeparator15 As System.Windows.Forms.ToolStripSeparator + Friend WithEvents mnOpenR0 As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents mnOpenR1 As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents mnOpenR2 As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents mnOpenR3 As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents mnOpenR4 As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents ToolStripSeparator16 As System.Windows.Forms.ToolStripSeparator + Friend WithEvents mnQuit As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents mnEdit As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents mnUndo As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents mnRedo As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents ToolStripSeparator17 As System.Windows.Forms.ToolStripSeparator + Friend WithEvents mnCut As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents mnCopy As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents mnPaste As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents ToolStripSeparator18 As System.Windows.Forms.ToolStripSeparator + Friend WithEvents mnFind As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents mnStatisticsAdvanced As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents mnDelete As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents mnSelectAll As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents mnMyO2 As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents ToolStripSeparator19 As System.Windows.Forms.ToolStripSeparator + Friend WithEvents mnOptions As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents mnPreview As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents mnPlayB As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents mnPlay As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents mnStop As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents mnTimeSelect As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents mnSelect As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents mnWrite As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents ToolStripSeparator23 As System.Windows.Forms.ToolStripSeparator + Friend WithEvents mnConversion As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents mnErrorCheck As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents mnPreviewOnClick As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents mnShowFileName As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents ToolStripSeparator20 As System.Windows.Forms.ToolStripSeparator + Friend WithEvents mnGOptions As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents mnVOptions As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents mnLanguage As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents mnTheme As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents cmnLanguage As System.Windows.Forms.ContextMenuStrip + Friend WithEvents TBLangDef As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents ToolStripSeparator9 As System.Windows.Forms.ToolStripSeparator + Friend WithEvents cmnTheme As System.Windows.Forms.ContextMenuStrip + Friend WithEvents TBThemeDef As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents TBThemeSave As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents TBThemeRefresh As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents ToolStripSeparator6 As System.Windows.Forms.ToolStripSeparator + Friend WithEvents cmnConversion As System.Windows.Forms.ContextMenuStrip + Friend WithEvents POBLong As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents POBShort As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents POBLongShort As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents ToolStripSeparator10 As System.Windows.Forms.ToolStripSeparator + Friend WithEvents POBHidden As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents POBVisible As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents POBHiddenVisible As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents ToolStripSeparator11 As System.Windows.Forms.ToolStripSeparator + Friend WithEvents POBMirror As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents POBFlip As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents POBModify As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents mnSys As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents mnSMenu As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents mnSTB As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents mnSOP As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents mnSStatus As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents mnSLSplitter As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents mnSRSplitter As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents mnNTInput As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents TBLangRefresh As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents TBMain As System.Windows.Forms.ToolStrip + Friend WithEvents TBNew As System.Windows.Forms.ToolStripButton + Friend WithEvents TBOpen As System.Windows.Forms.ToolStripSplitButton + Friend WithEvents TBOpenR0 As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents TBOpenR1 As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents TBOpenR2 As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents TBOpenR3 As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents TBOpenR4 As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents ToolStripSeparator12 As System.Windows.Forms.ToolStripSeparator + Friend WithEvents TBImportSM As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents TBImportIBMSC As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents TBSave As System.Windows.Forms.ToolStripSplitButton + Friend WithEvents TBSaveAs As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents TBExport As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents ToolStripSeparator1 As System.Windows.Forms.ToolStripSeparator + Friend WithEvents TBCut As System.Windows.Forms.ToolStripButton + Friend WithEvents TBCopy As System.Windows.Forms.ToolStripButton + Friend WithEvents TBPaste As System.Windows.Forms.ToolStripButton + Friend WithEvents TBFind As System.Windows.Forms.ToolStripButton + Friend WithEvents TBStatistics As System.Windows.Forms.ToolStripButton + Friend WithEvents pStatus As System.Windows.Forms.Panel + Friend WithEvents FStatus As System.Windows.Forms.StatusStrip + Friend WithEvents FSC As System.Windows.Forms.ToolStripStatusLabel + Friend WithEvents FSP1 As System.Windows.Forms.ToolStripStatusLabel + Friend WithEvents FSP2 As System.Windows.Forms.ToolStripStatusLabel + Friend WithEvents FSP3 As System.Windows.Forms.ToolStripStatusLabel + Friend WithEvents FSP4 As System.Windows.Forms.ToolStripStatusLabel + Friend WithEvents FST As System.Windows.Forms.ToolStripStatusLabel + Friend WithEvents FSH As System.Windows.Forms.ToolStripStatusLabel + Friend WithEvents FSE As System.Windows.Forms.ToolStripStatusLabel + Friend WithEvents FStatus2 As System.Windows.Forms.StatusStrip + Friend WithEvents BVCReverse As System.Windows.Forms.ToolStripButton + Friend WithEvents LblMultiply As System.Windows.Forms.ToolStripStatusLabel + Friend WithEvents TVCBPM As System.Windows.Forms.ToolStripTextBox + Friend WithEvents TVCM As System.Windows.Forms.ToolStripTextBox + Friend WithEvents LblDivide As System.Windows.Forms.ToolStripStatusLabel + Friend WithEvents TVCD As System.Windows.Forms.ToolStripTextBox + Friend WithEvents BVCApply As System.Windows.Forms.ToolStripButton + Friend WithEvents BVCCalculate As System.Windows.Forms.ToolStripButton + Friend WithEvents FSW As System.Windows.Forms.ToolStripStatusLabel + Friend WithEvents FSSS As System.Windows.Forms.ToolStripButton + Friend WithEvents FSSL As System.Windows.Forms.ToolStripButton + Friend WithEvents FSSH As System.Windows.Forms.ToolStripButton + Friend WithEvents TimerMiddle As System.Windows.Forms.Timer + Friend WithEvents ToolStripSeparator21 As System.Windows.Forms.ToolStripSeparator + Friend WithEvents CGShow As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents CGShowS As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents CGShowBG As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents CGShowM As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents CGShowMB As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents CGShowV As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents CGShowC As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents ToolStripSeparator22 As System.Windows.Forms.ToolStripSeparator + Friend WithEvents CGBLP As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents CGSTOP As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents CGSCROLL As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents mnPOptions As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents ToolStripContainer1 As System.Windows.Forms.ToolStripContainer + Friend WithEvents PMain As System.Windows.Forms.Panel + Friend WithEvents PMainIn As System.Windows.Forms.Panel + Friend WithEvents MainPanelScroll As System.Windows.Forms.VScrollBar + Friend WithEvents HS As System.Windows.Forms.HScrollBar + Friend WithEvents PMainR As System.Windows.Forms.Panel + Friend WithEvents PMainInR As System.Windows.Forms.Panel + Friend WithEvents RightPanelScroll As System.Windows.Forms.VScrollBar + Friend WithEvents HSR As System.Windows.Forms.HScrollBar + Friend WithEvents PMainL As System.Windows.Forms.Panel + Friend WithEvents PMainInL As System.Windows.Forms.Panel + Friend WithEvents LeftPanelScroll As System.Windows.Forms.VScrollBar + Friend WithEvents HSL As System.Windows.Forms.HScrollBar + Friend WithEvents POConvert As System.Windows.Forms.ToolStripDropDownButton + Friend WithEvents TBLanguage As System.Windows.Forms.ToolStripDropDownButton + Friend WithEvents TBTheme As System.Windows.Forms.ToolStripDropDownButton + Friend WithEvents TBMyO2 As System.Windows.Forms.ToolStripButton + Friend WithEvents ToolStripSeparator4 As System.Windows.Forms.ToolStripSeparator + Friend WithEvents TBErrorCheck As System.Windows.Forms.ToolStripButton + Friend WithEvents TBPreviewOnClick As System.Windows.Forms.ToolStripButton + Friend WithEvents TBShowFileName As System.Windows.Forms.ToolStripButton + Friend WithEvents ToolStripSeparator2 As System.Windows.Forms.ToolStripSeparator + Friend WithEvents TBUndo As System.Windows.Forms.ToolStripButton + Friend WithEvents TBRedo As System.Windows.Forms.ToolStripButton + Friend WithEvents ToolStripSeparator5 As System.Windows.Forms.ToolStripSeparator + Friend WithEvents TBNTInput As System.Windows.Forms.ToolStripButton + Friend WithEvents TBTimeSelect As System.Windows.Forms.ToolStripButton + Friend WithEvents TBSelect As System.Windows.Forms.ToolStripButton + Friend WithEvents TBWrite As System.Windows.Forms.ToolStripButton + Friend WithEvents ToolStripSeparator3 As System.Windows.Forms.ToolStripSeparator + Friend WithEvents TBPlayB As System.Windows.Forms.ToolStripButton + Friend WithEvents TBPlay As System.Windows.Forms.ToolStripButton + Friend WithEvents TBStop As System.Windows.Forms.ToolStripButton + Friend WithEvents TBPOptions As System.Windows.Forms.ToolStripButton + Friend WithEvents ToolStripSeparator7 As System.Windows.Forms.ToolStripSeparator + Friend WithEvents TBVOptions As System.Windows.Forms.ToolStripButton + Friend WithEvents TBGOptions As System.Windows.Forms.ToolStripButton + Friend WithEvents POBStorm As System.Windows.Forms.ToolStripButton + Friend WithEvents POptionsResizer As System.Windows.Forms.Button + Friend WithEvents SpL As System.Windows.Forms.Button + Friend WithEvents TBThemeLoadComptability As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents ToolTipUniversal As System.Windows.Forms.ToolTip + Friend WithEvents CGBPM As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents FSM As System.Windows.Forms.ToolStripStatusLabel + Friend WithEvents mnGotoMeasure As ToolStripMenuItem + Friend WithEvents ToolStripSeparator24 As ToolStripSeparator + Friend WithEvents ToolStripSeparator8 As ToolStripSeparator + Friend WithEvents TBWavIncrease As ToolStripButton + Friend WithEvents TimeStatusLabel As ToolStripStatusLabel + Friend WithEvents BConvertStop As ToolStripButton + Friend WithEvents POBRandom As ToolStripMenuItem + Friend WithEvents POBSRandom As ToolStripMenuItem + Friend WithEvents mnStatistics As ToolStripMenuItem + Friend WithEvents mnVCOptions As ToolStripMenuItem + Friend WithEvents POBSort As ToolStripMenuItem + Friend WithEvents SpR As Button + Friend WithEvents POptions As Panel + Friend WithEvents POExpansion As Panel + Friend WithEvents POExpansionInner As Panel + Friend WithEvents TExpansion As TextBox + Friend WithEvents POExpansionResizer As Button + Friend WithEvents POExpansionSwitch As CheckBox + Friend WithEvents POBeat As Panel + Friend WithEvents POBeatInner As TableLayoutPanel + Friend WithEvents POBeatExpander As CheckBox + Friend WithEvents POBeatResizer As Button + Friend WithEvents TableLayoutPanel7 As TableLayoutPanel + Friend WithEvents nBeatD As NumericUpDown + Friend WithEvents BBeatApplyV As Button + Friend WithEvents nBeatN As NumericUpDown + Friend WithEvents BBeatApply As Button + Friend WithEvents Label7 As Label + Friend WithEvents tBeatValue As TextBox + Friend WithEvents LBeat As ListBox + Friend WithEvents POBeatPart2 As TableLayoutPanel + Friend WithEvents CBeatScale As RadioButton + Friend WithEvents CBeatCut As RadioButton + Friend WithEvents CBeatMeasure As RadioButton + Friend WithEvents CBeatPreserve As RadioButton + Friend WithEvents POBeatSwitch As CheckBox + Friend WithEvents POWAV As Panel + Friend WithEvents POWAVInner As TableLayoutPanel + Friend WithEvents POWAVExpander As CheckBox + Friend WithEvents LWAV As ListBox + Friend WithEvents FlowLayoutPanel3 As FlowLayoutPanel + Friend WithEvents BWAVUp As Button + Friend WithEvents BWAVDown As Button + Friend WithEvents BWAVBrowse As Button + Friend WithEvents BWAVRemove As Button + Friend WithEvents POWAVResizer As Button + Friend WithEvents POWAVPart2 As TableLayoutPanel + Friend WithEvents CWAVMultiSelect As CheckBox + Friend WithEvents CWAVChangeLabel As CheckBox + Friend WithEvents POWAVSwitch As CheckBox + Friend WithEvents POWaveForm As Panel + Friend WithEvents POWaveFormInner As Panel + Friend WithEvents POWaveFormPart2 As TableLayoutPanel + Friend WithEvents TWSaturation As NumericUpDown + Friend WithEvents PictureBox2 As PictureBox + Friend WithEvents TWTransparency As NumericUpDown + Friend WithEvents PictureBox3 As PictureBox + Friend WithEvents TWPrecision As NumericUpDown + Friend WithEvents PictureBox4 As PictureBox + Friend WithEvents TWWidth As NumericUpDown + Friend WithEvents PictureBox5 As PictureBox + Friend WithEvents TWLeft As NumericUpDown + Friend WithEvents PictureBox6 As PictureBox + Friend WithEvents TWSaturation2 As TrackBar + Friend WithEvents TWLeft2 As TrackBar + Friend WithEvents TWTransparency2 As TrackBar + Friend WithEvents TWWidth2 As TrackBar + Friend WithEvents TWPrecision2 As TrackBar + Friend WithEvents POWaveFormExpander As CheckBox + Friend WithEvents POWaveFormPart1 As TableLayoutPanel + Friend WithEvents TableLayoutPanel1 As TableLayoutPanel + Friend WithEvents FlowLayoutPanel1 As FlowLayoutPanel + Friend WithEvents BWLoad As Button + Friend WithEvents BWClear As Button + Friend WithEvents BWLock As CheckBox + Friend WithEvents TWFileName As TextBox + Friend WithEvents TableLayoutPanel6 As TableLayoutPanel + Friend WithEvents PictureBox1 As PictureBox + Friend WithEvents TWPosition2 As TrackBar + Friend WithEvents TWPosition As NumericUpDown + Friend WithEvents POWaveFormSwitch As CheckBox + Friend WithEvents POGrid As Panel + Friend WithEvents POGridInner As Panel + Friend WithEvents POGridPart2 As TableLayoutPanel + Friend WithEvents TableLayoutPanel5 As TableLayoutPanel + Friend WithEvents FlowLayoutPanel2 As FlowLayoutPanel + Friend WithEvents cVSLockL As CheckBox + Friend WithEvents cVSLock As CheckBox + Friend WithEvents cVSLockR As CheckBox + Friend WithEvents Label5 As Label + Friend WithEvents TableLayoutPanel4 As TableLayoutPanel + Friend WithEvents Label1 As Label + Friend WithEvents CGB As NumericUpDown + Friend WithEvents POGridExpander As CheckBox + Friend WithEvents POGridPart1 As TableLayoutPanel + Friend WithEvents TableLayoutPanel3 As TableLayoutPanel + Friend WithEvents PictureBox9 As PictureBox + Friend WithEvents CGHeight2 As TrackBar + Friend WithEvents CGHeight As NumericUpDown + Friend WithEvents PictureBox10 As PictureBox + Friend WithEvents CGWidth2 As TrackBar + Friend WithEvents CGWidth As NumericUpDown + Friend WithEvents CGDisableVertical As CheckBox + Friend WithEvents CGSnap As CheckBox + Friend WithEvents TableLayoutPanel2 As TableLayoutPanel + Friend WithEvents PictureBox7 As PictureBox + Friend WithEvents CGDivide As NumericUpDown + Friend WithEvents CGSub As NumericUpDown + Friend WithEvents BGSlash As Button + Friend WithEvents POGridSwitch As CheckBox + Friend WithEvents POHeader As Panel + Friend WithEvents POHeaderInner As Panel + Friend WithEvents POHeaderPart2 As TableLayoutPanel + Friend WithEvents CHDifficulty As ComboBox + Friend WithEvents Label13 As Label + Friend WithEvents THExRank As TextBox + Friend WithEvents Label25 As Label + Friend WithEvents CHLnObj As ComboBox + Friend WithEvents Label23 As Label + Friend WithEvents Label21 As Label + Friend WithEvents THComment As TextBox + Friend WithEvents Label24 As Label + Friend WithEvents Label15 As Label + Friend WithEvents THTotal As TextBox + Friend WithEvents Label20 As Label + Friend WithEvents BHStageFile As Button + Friend WithEvents BHBanner As Button + Friend WithEvents Label19 As Label + Friend WithEvents BHBackBMP As Button + Friend WithEvents Label17 As Label + Friend WithEvents Label16 As Label + Friend WithEvents Label12 As Label + Friend WithEvents THBackBMP As TextBox + Friend WithEvents Label11 As Label + Friend WithEvents THBanner As TextBox + Friend WithEvents THStageFile As TextBox + Friend WithEvents THSubTitle As TextBox + Friend WithEvents THSubArtist As TextBox + Friend WithEvents POHeaderExpander As CheckBox + Friend WithEvents POHeaderPart1 As TableLayoutPanel + Friend WithEvents Label3 As Label + Friend WithEvents THPlayLevel As TextBox + Friend WithEvents CHRank As ComboBox + Friend WithEvents Label10 As Label + Friend WithEvents CHPlayer As ComboBox + Friend WithEvents Label4 As Label + Friend WithEvents THGenre As TextBox + Friend WithEvents THBPM As NumericUpDown + Friend WithEvents Label2 As Label + Friend WithEvents THArtist As TextBox + Friend WithEvents THTitle As TextBox + Friend WithEvents Label9 As Label + Friend WithEvents Label8 As Label + Friend WithEvents Label6 As Label + Friend WithEvents POHeaderSwitch As CheckBox + Friend WithEvents POptionsScroll As Panel + Friend WithEvents ECSelectSection As Button + Friend WithEvents TBTotalValue As ToolStripLabel +End Class diff --git a/MainWindow.resx b/MainWindow.resx new file mode 100644 index 000000000..334ebdc32 --- /dev/null +++ b/MainWindow.resx @@ -0,0 +1,2484 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 497, 2 + + + 625, 2 + + + 87, 2 + + + 176, 2 + + + 266, 2 + + + 400, 47 + + + 737, 2 + + + 839, 2 + + + + + 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 + 0f4HUYAlDK9yFIQAAAAASUVORK5CYII= + + + + 1022, 2 + + + 931, 2 + + + 1022, 2 + + + 931, 2 + + + 1120, 2 + + + 1240, 2 + + + 65 + + + + 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 + AgYBAQMiCgo4NxISyQ4EBFkCAAAMAAAABAAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAA + AwAAAAMAAAAEAAAABQMCAQMbFA4IdVc6xIdkRvVfQi3fKR0UtAEAADcDAwMEAAECBwAAABMAAAEMAAAA + BQAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAYCAQUAAAArAAAAWAAAAGMAAABlOBIT1BUGBrkBAAB3AAAAagAAAGYAAABkAAAAYwAAAGMAAABjAAAA + YwAAAGMAAABjAAAAYwAAAGQAAAB4AAAAigAAAHkHBgR8nXla9qOCY/+igmT+lm5V+gEAAIMAAABjAwkQ + fwURH7UAAQGkAAAAiwAAAHEAAABkAAAAYwAAAGMAAABjAAAAYwAAAGMAAABiAAAAUwAAACIAAAADAAAA + AAkCAg4HAgILDQUEBg0FBFcjDgrPIw4K7SENCu4cCwjvVTAp+TsXGPsaCQj1GAkH8xkKCPAeDAnvIg4K + 7iMOCu4jDgruIw4K7iIOCu4iDgruIg4K7iIOCu9QTk34T09P+jAtLPc0JRz3t5R0/reXdf+xknL/clE9 + /B8NCfAiDgruG0x99zCE0P8ne739F1+M+hYPEvQiDgrvIw4K7h8NCe4eDQnuIQ4K7iIOCu4hDgrtFQkG + 2AIAAJkAAAA2AAAAAiAJCXILAwNAGAsISEIbFPJGHRX+XSog/lEiGv9PLSX+uaWY/pR6i/+YdH3+gmBj + /0MiIf46GRT+Wykf/mMrIf9kLSP+ZCsh/mQtIv9jLCH+Yish/lYrI/+CgYH+hoaG/oeHh/+Hblz+y6uL + /suqiP/EooP+SzAk/jIUD/8+GRP+NHSv/0GK1P49hc7+O5DO/z8iI/5aJRv+WSQa/0ssHf4wGxP+LRMO + /zwYEv5LHxb+OBcR/yANCu4CAACPAAAAGEQWFsYVBgZ+SyIbzU0fF/9UJyD+cj0y/mY4Mv+dpq3+rXGL + /pt2i/+hjqf+mrDL/7mYpf5PLSv+lnFr/raLgv+3jIP+tomB/raIgP+0hn3+s4V8/n5kX/+jo6P+oKCg + /pKSkv+ce2P+17GW/taxk//Al33+YFtX/mhlZP8/QEb+Rpbe/1Sb5/5PluH+OYK2/3ZMRf6XYFX+jVlO + /6B4Vf6jfFr+kWpO/2E9LP5lKR7+aywf/zcWEf4TCAbMAAAAOkAVFUw/FxbZPhsY+V04LP9TPjf/RyQg + /2lHQ/+astb/h3OC/5iOof+Jdob/mnKK/6FliP98Wl3/pJaR/8e5s//HubP/0MG6/9rJwv/gz8f/3s3E + /4SAf//AwMD/u7u7/52al/+8j3n/2KqY/9isl/+kfmr/d3d2/4aGhv9PdZP/ZK3w/2Wu+f9lqvH/LmiL + /01EQv9qWlf/f2RX/62LbP+piGf/pIVm/5FwXf+LWE7/djAj/00fF/8jDwrnAAAARToaGgNbMTG8wKad + /smiov+SrLv+fVt1/kMiG/+Lr7T+o8nq/s647P/Swuf+o5W1/5Jlg/5vT03+OR4O/j0fD/86Hg7+OCIM + /kQuDP9TOw/+VDwQ/ouJh//Ozs7+y8vL/qeUjP/Hlo/+15+X/tekmv+QcWb+oKCg/qOjo/9Gg7D+csf5 + /27C/v5iufP+RGB0/4CAgP53dnX+eV5J/8Cigv69nXv+uZd5/3xnWf61o5/+eTgr/1MhGP4mEAvpAAAA + RikUFR1ySE3emoeZ/qBvfP+Hh4r+kcPJ/ks3Ov9XSlP+fazH/rek1/+wsJv+yLjd/6ybpv6zlbf+rois + /rOJtP+wj6H+i36C/jkdFv8zIAj+QDAU/rOzs//Q0ND+0NDQ/o+Ce/+wqaL+ycXF/sKbmv+gjYj+v7+/ + /q2vsP9KpdD+c9/+/3HY/v5Rsd7+a3B1/5CQkP6FhYX+nn5k/9Swj/7QrYz+upJ1/0dBO/5UTk3+Qyci + /0AaE/4mEAzpAAAARjQXGG+klKz/q4il/6CRov/i2vH/jc3y/1U6Qv+GRmr/UCcp/56mpv/Lzqn/wLy+ + /8Oy1f/Eptr/xKjd/8Ck4P+1hbn/uIGe/7Snr/9IKB3/XlFB/8jIyP/R0dH/z8/P/2JXQ/9+YCn/nIpl + /4V9dv/Jycj/zs7O/5qstP9szdn/etnh/3Tp9v9Mpb7/nJyc/6+vr/+PjIj/v5V7/9evlv/XsZX/nHlk + /3BwcP+IiIj/gYGB/zIXEv8mEAzpAAAARlo4O66st9L+pneY/rykyv/PveP+ubzq/l1IT/+QUXf+eDpX + /oiKef+1uJj+tq23/56PpP6TiJr+iHyS/oFxi/99bIv+eVl6/oVpff+CcXX+UkI9/q6trP/FxcX+vLy8 + /m1UJf+PYhT+d1UX/qysq//Q0ND+0NDQ/omJhf+If2j+6ODf/5iytP5yrLv+wsLC/8XFxf6Zhnv+z5+R + /9inmP7VqZj+hGlb/5OTk/6VlZX+e3h4/0AaE/4mEAzpAAAARm1FSoyyeaH/rG+b/8y13f+hmob/s7eN + /5egm/9zRFv/cUFl/11sfP9dhJv/TYSw/0WLv/9Ckcv/Q5bS/0WY0v9IlM3/T4y//1OAq/9ggp//TVVn + /0BCRP9rZVr/cl49/5FnHf+ichz/h2w8/7m5uf/Gxsb/0dHR/2BcV/8lGwz/LCUd/zQvJ/+8vb3/z8/P + /87Ozv+mg3v/u5ya/8aXk//RmZH/hndx/7W1tf+zs7P/al1a/00gF/8mEAvpAAAARl83QCCMXW3qsnOj + /r2Yv/++rrv+rbSA/pmij/9Ogqz+K4fP/iGa7f8XmvH+F5z1/xee9/4Xn/j+F5/4/heg+P8Xn/j+F5/4 + /hee9/8XnfX+KKL0/kas8f9Unc3+YH+N/k9OQP9EMhH+RjQW/pORjv/m5ub+srGx/jo2MP8aFA3+HhcP + /1VUUv7Ozs7+0dHR/8jIyP47NjP+qayr/83R0f6kgnz+tLGv/8rKyv7AwMD+Wz45/1MiGP4mEAvpAAAA + RkEiJgIrDQ14kWxv/NzG2/+/qcL+comp/iOK1f8Wlu7+F531/hig+v8Yovz+GKP8/xmi/P4co/v+IKT6 + /iKl+v8hpPn+HqP5/hqi+v8Yofr+F6H7/heh+v8Xn/n+G5/2/kOs8/9mncT+JkZd/gsOD/8pKCj+Dw0K + /h8WCf8xIgz+OikP/4qHg/7CwsL+wcHB/7a2tf4zKBb+MiYW/y8nH/59fHv+0NDQ/9DQ0P6trKz+ZDsz + /1YjGf4mEAvpAAAARiANDRtbLS3ZzK68/s2+2f9djMP+F5Dl/hab8/8Yofr+GKP9/hyk/P8vqvv+SLL5 + /1259/5qvPX+cr/0/njB8/96wvP+d8Hz/nG/9P9ku/X+ULT2/jeq9/8go/j+F6H6/heh+v8doPf+Z7ry + /hk6U/8DAwP+BAMD/gUFBP8JBwb+BgUG/xIREP66urr+urq6/21tbf4NCgr+CggI/xEQEP6xsbH+0dHR + /9HR0f6PjY3+fEpA/1gkGv4nEAzpAAAARjEVFYDDnKL/287k/2KUzP8Vkef/F5z1/xii/P8bpP3/MKv7 + /1C1+P9ctfP/XrLt/12t6P9ZpuD/VZ/W/1Wb0P9andH/ZabY/3m24/+Mw+v/nc7x/5nP8/+Ex/T/Yrr1 + /y6m9v8Xnvf/IJ3x/zdjg/8OCgb/FxEL/xkTDP8XEQv/GBMO/xcTDv8dFxD/GxYP/yMbD/8nHhH/JB0S + /y4rJ/+vr6//ycnJ/8TExP+KgYD/kltQ/1gkGv8nEAzpAAAARnlpbdvRrbP+kbHZ/hWO5P8Wm/T+GKL8 + /h2l/f80rPr+Qqz0/jOe6f8wjtL+SHuT/1djVv5bSjL+UD4f/lJAHf9ZRB3+ZU8k/n9qOP9ra1H+Yn2C + /mKSr/97tN7+oM7w/ozI8v89pu/+FZPr/iZxpf9IMg7+WT8U/k03Ff9FMhL+VjsS/1I5EP5NNRL+RTET + /044Ev5RORP+VjwW/1c/GP5pWDv+ta+m/392af61nZj+n2Va/1klG/4mEAzpAAAARpWChv2rhY/+JIrY + /haY8P8Yofr+G6T9/iin+f8rofH+GY3h/kt/nv+dglL+r4dH/6p/Pv6pfjn+oHYy/qyAPP+ofzr+u5RX + /rWLS/+ugkL+solK/q2ERf+cg1X+e46Q/mWbwv9OoN7+FIbb/hx5vf9rVC7+n3g7/qZ7Pf+uhEn+rYNF + /6R7Pv6shVL+poFL/5l3Qv6CXib+aEsV/2BJGP5PPRP+QDIQ/0UzFP6zmZL+n2dc/1gkGv4mEAzpAAAA + RpqDhftki7f/FJDn/xee9/8Yo/3/GaL6/xub8v8ajd//Z3eC/6OAW//Fn2z/x6Bu/8KbZv/KpXn/xKBx + /8qnd//Ipnf/zq2F/9Wzi//RrYL/wJpm/8qibv/Mp3j/wpxq/72ccP+RlpH/P4a8/xV0wf+QfWH/yqZ9 + /7+dcf+KfFz/dnFU/2xyWf+AbUr/v5dl/7qXZv+slVH/z7Zb/+fLaP/rzWj/5spo/8awXv+Th2T/bEU5 + /1QiGf8nEAzpAAAARnJhaNIhjNv+Fpfv/hii+/8Xovz+FZ31/hWQ5v93k6L+xKBx/seea//MoWz+v5VW + /8efaf7DnWj+vplo/sGfdv+tjWL+podd/pt9UP+piFz+vppp/sypef+fm3r+col4/nGJeP9mdV7+uJdq + /pOVif+6mGf+yqV0/oeqi/8Twcf+Gdjg/zLk6/5hoZn+p4li/8WpUP7hwE/+7MpW/+3LWv7ry1/+6spb + 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 + /0AzHv5NfSz+juuS/kHsSP89rDv+RTYO/muCQf+457b+aO1t/kvrUv9QiU/+NScO/kCckv9k6O3+AOjx + /gPr8/8A7vf+AOXu/iyuqv+aysP+ke7y/xzl7f4A7PX+AO/4/wDm7/4fbmz+kIJK/+raof7iwlP+275Y + /6SSS/7Os1X+58VS/+bEUv7bvFD+VE4lmk2k6xQ7ldvufMLy/z+w+v8Yovz/F5z0/ztfdf9OPR//UDcK + /5yLgv/r5O7/0LzX/3doZP9IShT/huGJ/1HqV/9H5k7/M0Mg/z8sDf9UaDD/kvGV/0fxTv9L6FH/RFUj + /0tqR/985On/K+jv/wDt9v8A7PX/AODp/0mLdv+QhWL/i9DM/7709v9g7PH/Gufv/wDe5v8YgoP/Oy8b + /7ite//t4LL/5Mx3/+PGYf/kx2P/5stu/+HJcP+6oUH3KScPXEeg5wE5luCmfr7t/ma99/8ao/v+F5/5 + /jaS0P84MSD+TDQJ/mJLJf+hkIj+kX95/2RSPf5CLwv+Z7Rg/nfqe/9A7Ej+TtRT/kF0N/89ijH+SulQ + /kbuTf885UP+PXsu/kU4G/9awsP+ku7x/j/o7/8T4en+Bc3U/lFPN/9lTjj+XFdA/2Kqqf617fD+oO3w + /xLP1/4XgID+NCYY/0g2Gf6Cc0H+uq56/9DDjP7j1Jj+0rh1/5RxPP43IBHpAAAARgAAAABPouU/WaXf + /IPG9P81rPn/GKL7/x2e9P9DY3X/QCwJ/1w+C/9rUy//kIOD/4yDgP9BMxv/S3Em/6Dro/9R5Vf/SOhO + /0XmS/9P5VX/Z+ls/3Lpdv851j//VXYn/21OH/9Pfmb/kOHl/4Hj5/8p0Nf/J4mE/z0xJP9LPS//SDko + /0E4Kf8mW1n/JW5v/yVhX/8qOjT/LyUb/zMnGv82KBf/LyMS/zYqG//czMP/soJ3/10oH/8nEAzpAAAA + RgAAAABlnM0EU5XM7ZDH7/9sv/b+HKP6/heg+v81n+b+Njs4/ks2E/+ZhYD+zL3S/8i20P6PgXz+YU0d + /n3Edf+u6rD+kOOS/o7fjv+B1H/+fMd1/mKvU/9ZeTH+Y0sh/m9UJ/9kTSX+gI9z/l1yYf9SVT3+VUcz + /lxLN/9SRDP+XU08/z41Lv4zLSj+MSsn/zQuJ/46MSf+RTUl/0Y2I/5ENST+LSYc/y8mHP7cy8j+sYB3 + /10pH/4oEAzpAAAARgAAAAAAAAAArKm16lyk3P+SzPP+TLP4/hii+/8Xn/j+R5nQ/i4vK/9dUUb+uq+1 + /7Wns/5+bl/+YEwr/l9aMP9caTP+YGIy/mRaL/9mVi7+bFgy/nhfNv9xWTD+ZE4r/mROK/9nUCv+oYNe + /oBrVP9aSTb+T0U5/lJHPf9aTkH+Z1lG/2VZSv5dUUT+S0M8/0hAOv5IQTr+TEI4/1dINf5XRzP+PzYq + /zQpHv7cy8f+sH91/18qIP4nEAzpAAAARgAAAAAAAAAAyq2o6n+gw/+Fvun/icn0/zar+P8Yofv/GJ73 + /06Yyv80Nzf/SkI4/2FYTf9jWU3/Y1lM/2VZS/9mWkn/a1tE/29dQP9uXUL/bF1I/3RlT/9uYk7/Y1lN + /2VaTv9oXU7/l4Nu/4d6bf9kWUz/XFVM/1JMRf9VTkj/XldQ/2BZUf9nXFH/bGFS/21hUv9hWlH/YlhP + /2lcS/9rXEj/Ukc5/zsuH//czMj/s4N6/14pH/8nEAzpAAAARgAAAAAAAAAAzK2o6s62sv9dj7/+msvu + /oLH9f8wqfj+GKH6/hif9/9KoNv+QlBZ/0VAOv5lXlb+cGpj/nJrZf9wa2X+cWtk/nNtY/95b2H+fHBd + /nlvY/95cGL+eG9j/nhvY/98cmP+m4pz/qOTgf9tY1n+UVdZ/i9cfv9LSUX+bmlj/3BqZf54b2X+hXZh + /52MdP53bmb+dW5m/3pwZv5+cWD+YlhO/z8xIv7g0c7+sYF4/18rIf4nEAzpAAAARgAAAAAAAAAAza+p + 6ta7tv+XcW7+Q3yv/qHP8P+Cx/X+NKr4/hih+v8Xn/j+N6Xv/1R9mf5AREX+V1RP/nJuav98eXb+gX56 + /oB9ev+AfXr+gH57/oOAfP+Ggn3+i4N6/pKHc/+bim3+lYRp/oJ+d/9Qe5n+XKje/jiY3v9NU1f+g355 + /4aBff6HgXz+i4R7/5SJe/6MhHv+h4J8/4eCff6LhX7+cWtl/zwxJ/7f0Mz+s4N6/1woHv4oEAzpAAAA + RgAAAAAAAAAAzrCr6ta8t/+aaF7/Riwp/0aFtP+iz/D/i8r0/0Ww9/8Zofr/F6H6/xuf9v9FpOT/VH6c + /0pVXf9QUFD/ZWNg/3Vzb/9/e3j/hIB8/4WAev+BfHP/d3Fp/2dmY/9WbHj/Onyo/yCR4P8YmvH/H5/0 + /2O58v9PY3L/j4yK/5uYlf+dmZX/npqV/6Cblf+jnZf/oJuW/6CcmP+fm5f/g356/z80K//g0c3/tIZ9 + /10oHv8nEAzpAAAARgAAAAAAAAAAz7Gs6ta8t/+baF7+RCAU/mpkVf9kncn+lsfr/pvQ9P9lvPb+KKb4 + /xih+v4XoPr+F572/jGl8/9DnNr+SYm2/k58nP9QdpL+TnWQ/kt4mP9Afqn+NYjD/ieW4v8YmfD+F5v0 + /hef+P8Yovv+GKH6/hua8P9JcY/+nJmX/7Wyr/60sq7+tbGu/7Wxrv61sq/+t7Ow/7i0sf64tbH+mJOP + /0o+Mv7h09D+tIZ9/14pIP4nEAzpAAAARgAAAAAAAAAA0bWv6tnBvf+dbGP+RB8T/m9kUP/MyMD+hq/P + /niz4f+q1fP+isr1/1a29/4opvn+GKH6/hih+/8XoPr+F5/4/hed9v8XnPX+Fpz0/hec9f8Xnfb+F573 + /hig+f8Yofv+GKL8/h+l/P8hpPr+F531/hWS6f81d6j+paSj/8nHxv7JyMb+ysjG/8vJx/7Mycf+zcrH + /87LyP7Oy8j+pqOf/0o/NP7h08/+tYd+/14pH/4oEAzpAAAARgAAAAAAAAAA0rex6tnBvP+camH/Qx4T + /21iTf/Y0sf/5uLa/8LS3P9rqdr/jMDo/6nV9P+LyvX/ab72/0Ow+P8qp/n/HaP6/xii+/8Yovv/GKL8 + /xii/P8Zovz/HaT7/yio+/86rvr/Ubb5/2G69v9LrvH/GZHm/xKE2f9Rlsz/0dHR/9zc2//d3Nv/3dzb + /97d3P/e3dz/397c/+De3f/f3dv/paCb/05AL//i08//tIV8/10pIP8nEAzpAAAARgAAAAAAAAAA07iz + 6tvEwP+hcmj+QR0T/l1ROv/Nw7D+7eni/vHu6f/u7er+rszj/2mo2/5+uOT+otDx/p7R9P+Ny/T+fsX1 + /nDA9v9nvff+Y7z3/mW89/9qvvf+b7/2/nG/9P9uu/L+ZLTt/kuk5f8vkdv+U5/a/q7N5v/n6er+7Ovq + /+zr6v7s6+r+7Ovq/+zr6v7s7Ov+7ezr/+vq6f7a2NX+e3Jo/1A6IP7Zw77+rHlw/10pH/4nEAzpAAAA + RgAAAAAAAAAA1by36t3Hw/+8lY3+Rx4W/jIhEP9cU0L+g31x/oyHfv+NiH/+jId+/4mGf/5qe4X+QHKZ + /kuMv/9lp9r+ebfm/oS/6v+Iwu3+iMPt/oC/7P9vten+X6vk/kmd3f85jMv+NXms/k10kP97goP+j4qA + /pmTi/+WkYv+i4aB/4qGgf6IhYL+h4WD/4eFg/6HhYL+iIWD/4WCgP5ybWf+RTgm/2VENP63i4P+mltP + /14qIP4nEAzoAAAARQAAAAAAAAAA3cjE6eHOyv/WvLf/kWFY/0QbFP86GRH/PB4U/z0fFf8+HxX/PR4V + /zwfFv87HhX/Oh0U/zsgGv89Kir/OzhF/zdFXv80TW3/NU9w/zNPcP81SWb/OT5Q/z0xNf8+JB7/PB8V + /zsdE/86HBP/ORwT/zsdFf9AIxv/Oh4W/zYbE/82GhP/NRoT/zQaFP80GRT/MxkT/zMZE/80GBD/Rx4U + /307Lv+fZFn/kEw//1soHv8qEQ3kAQAANAAAAAAAAAAA7uTiz+vg3f/cxsH+1724/rmRif+cbGP+lWNZ + /pZlW/+UYVf+k2BW/5NfVf6TYFb+kV1T/pFcUv+PWlD+kFtR/o1YTv+NWE3+i1ZL/otVSv+KVEn+iFJH + /ohRRv+HT0X+hU1D/oVOQv+DS0D+gko+/oJKP/+BRzz+fkQ5/31DOP5+Qzj+fEI3/3k/NP55PjL+dzww + /3Y7L/52Oi7+gUA0/5NRRP6UUkX+i0c6/0keFv4pEQyzCwQDEAAAAAAAAAAA8+3sVfLq6Pzt4uD+49LO + /tzGwv/aw77+28XA/trCvf/Xvrn+1ru2/9W6tf7StrH+0rWv/tCzrf/Or6n+zKym/s2tp//KqKL+yKag + /seknv/Fopv+wp2W/sGbk/+/mJD+vpeP/ruRif+6kIf+uIyE/reKgf+0hn3+soN6/7B/df6ufXP+q3hu + /6l0af6ncWf+omle/6NqYP6fZFj+nmJW/5tdUP6PTD/+Zy4j/1AkHOwaCwg1GAkHAQAAAAAAAAAAAAAA + APXv7lnx6efa49LP+tzHwvrbxcH628S/+tjAvPrawr762cG9+te+ufrVvLf61bu2+tS6tPrUubT60rax + +tG0rvrPsKv6zrCq+s2vqfrMraf6za2o+sqpo/rJqKL6x6We+siln/rEoJn6xKCZ+sOel/rBnJT6v5iQ + +sCakvq9lIz6u5KJ+rqQiPq5job6uIyD+raIf/q0hn36s4R7+rB/dvqjcmj3jmBXwkspIzM2GhUBAAAA + AP4f/8H//wAA+AAAAAAHAADgAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAIAAAAAAAAAAwAAAAAAAAADAAAAAAAAAAMAAAAAAAAAAwAAA + AAAAAADAAAAAAAAAAMAAAAAAAAAAwAAAAAAAAADAAAAAAAAAAMAAAAAAAAAAwAAAAAAAAADAAAAAAAAA + AMAAAAAAAAAAwAAAAAAAAADgAAAAAAEAACgAAAAgAAAAQAAAAAEAIAAAAAAAgBAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwICGAHAgIfAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAACkeFD4bEwyJAQEATwMCAQ0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAwEACQAAADUCAABEKw4Org0EBIkAAABLAAAARgAAAEQAAABEAAAA + RAAAAEQAAABEAAAARwAAAF4DAgFRZ1A6vqaBYf+KZ031AQAAYAEFCVICCA6CAAAAZQAAAEsAAABEAAAA + RAAAAEQAAABEAAAAPAAAABAAAAAACwMDIAkDAw4hDgqgLBIN8CcQDPRTNy75Ty0v+y4WFfceDAn1KhEN + 9C4TDvQuEw70LhMO9C0SDfQ2JCH1ZWVl/EdFRPmgf2L9u5p5/4JiTP4mEAv1JT9f+DOEzv4mc6r8IhMV + 9i0SDfQiDgr0JA8L9CkRDPQhDgrpBgIBmQAAABQxDw+pLxUQkUsfF/9sNiv/a05I/7WOmP+ghp7/pJ+z + /4BbYP94T0j/pXBm/6ZxZv+kbmT/pG5j/4NsZ/+bm5v/hH14/8uliP/TsJH/dV9S/1RGQ/89bZ7/TpXh + /z6Jx/91RDz/h01B/4tmR/90Ujz/WC0g/2EoHf8qEQ30AQAAVUEWFmdbODLxfWph/1g+Pv92YG7/lKKu + /6iYtP+cg5v/oW2H/3FbUf+aiXz/oY+A/7Ofif+6pIv/mZaV/8HBwf+kkIX/1qeY/9Gjkf9+dXD/hYWG + /1Gg4P9msvr/RX6o/2FZWP9xW0//sJBw/6uLa/+YfG//gUAz/0UcFP4IAwJ0MBYXQqmLlv+ec33/kKu7 + /044Nv97pcH/vK3N/76xzP+qlKT/gV10/4pfd/9yYWP/MhwO/zwrDv+2trb/z8/P/5qFff/Ou7r/vJCK + /6urq/+EnKz/bND2/3PQ+/9Re5P/i4uL/5J+bv/PrYv/wJt8/1tTTf9dQDr/PxkT/wkDAnVlREqooo+t + /7iowP+yz/P/akJU/2gzRf+kqpX/zMjC/8Cr0f+9pND/s5fL/6t6n/+eipL/WUc6/8HBwf/Ly8v/alQt + /450Qv+inpr/zs7O/4CosP+d0tX/dNrn/4iWnv+ysrL/q4l1/9eulv+riHP/fn5+/4SDg/80FhH/CQQD + dYRgbr+reqT/wanQ/7Kxnv98bnL/fkZt/25+gf9ri6f/V4Ws/0+EsP9Pg6//Unii/15wkP9QVmL/c3Ny + /4uAbf+PZh3/i2gp/729vf/Pz8//XVRG/2FYT/9mcnL/y8zM/7i2tf++kor/0J2W/5yAdv+tra3/g3x6 + /0IbFP8JAwJ1VjA3QaBvivbEpMX/q6eQ/2aWq/8oiNL/HJzy/xee9v8YoPn/F6D6/xeg+f8XoPn/F5/4 + /x+h9v85pu7/SI66/1hqbP82Lhz/gX9+/5GQjv80Kx3/LB8N/4iHhf/Q0ND/mZiX/2RgWf+Oioj/uKyq + /8vLy/94Y1//SB0V/wkDAnUrERI/mHJ49sK72P87jtP/Fpny/xih+v8epfz/NKz6/0my+P9XtvX/X7j1 + /1239f9StPb/Qa/3/yim+f8Yofr/HqL4/1aq4/8OHir/AwMD/wkHBv8RDQn/Xlxc/7+/v/9gXlz/GRML + /zw4Nf/Ozs7/zc3N/3FQSf9LHhb/CQQCdWlERLvVy+H/N5HZ/xec9P8ao/z/M6z7/06w8/9Np+f/UpXF + /019o/9Hdpj/VoGf/3iju/97tNz/kMjv/4DF9P85qfX/G5vy/ytLX/8jGQv/IBgN/yUbDv8rIA//KR8Q + /zElEf8xJRP/TUY7/8/Pz/+1tLT/kWVc/0wfF/8JBAN1nX+C+WWZy/8WmPD/GaP8/ymn+f8omur/TIWl + /5B+VP+Xby7/kWkp/5xzLv+kfDn/pHk3/6N+Qv+If1//hJui/3Ot2P8ikOD/LWOG/4lmLf+SbDP/lG41 + /4pnM/+JaTv/f18u/2lKFv9hSBj/T0Ag/2lVQP+qenH/Sx4W/wkEAnWNhpL2GY7i/xig+v8Yofr/GZXq + /26Gkv+4lGz/yaNz/8unev/NqX3/zqt+/82thf/PrIH/xKBu/8umdP+2lGn/noZj/3GMmv9MfaD/wJxv + /5ecev9ikoD/bJKC/6WFWf+6mln/0bVW/+rLYv/pymL/y7Nd/4RpTf9EHBT/CQQCdTNhjsMYmO//GaP8 + /xWb8/9Ohab/qIlg/6OCWv+yj1X/hoJE/3iGQv90l1D/ZphI/2ORSf9xbD//jIle/yO+wf88z9T/i3pM + /6uCQv+0jFD/ap58/yjc4/8L5e3/bYlp/9i5Tf/szF//6tJ9/+rXlP/u1Hn/6Mlg/1E8I/8JBAN1JYTN + zimk9f8Yovv/F5Dj/4p+a//KuM3/0cLT/3x/NP9D3Un/Q+9L/2DuZv+A7YT/Xu1k/1HmVv9ZgU3/NNzj + /wHi6/9wbT7/jmgo/2VVJP+DYyX/etnW/xrp8P86taL/28Nn/8iqRf+LaCL/a04Y/8Ozev/wz1//oIg+ + /wgDAnUhjt7pNqv4/xih+/8edrP/qJBz/97Q4//fy+f/nJBk/2/kcv9D8Er/c7FO/6enXv+w2Zj/Vu9c + /1C8TP9d1dX/BuLr/3aLbP96qor/KNjf/3WEcf+FuKL/U+vx/xPX2//CtHP/sJJI/6t8O/+BYSP/zK5K + /+/MWv+rkT3/CAMCdSmR3/E+rvn/GKH6/x5klP9/ZTf/0sPH/+DN6P9yXED/c8ls/0btTf9Lcy3/Vj8X + /1KAMf9W7Vz/O7M7/0ukoP8e4+r/LW9g/zh7Z/8X3+f/Jra4/0NQRf9o5+z/AuTt/0BcTP96Z0D/sZVC + /+bFVv/sy1z/38BX/2xMI/8JBAN1NZfg6key+P8Yofv/HGWZ/1FEMP+fkpL/4tHp/3Fmbv9RkFD/We5f + /0XQTP82bzj/Nrc9/0LtSv8dZyL/F1lc/z7k6/8QiIz/KoGB/x/g6P8D4uv/J19f/1LAw/8X6fH/FXV3 + /4NyMf/px1T/7s9m/9fBef+9lXX/TSEZ/wkEA3VAm+PMWLf2/xii+/8febj/VEUr/3toU//j1en/opOi + /0FgJv907Hj/TvFV/3/ug/9g7Wb/P95H/yImGf8oODL/T9/l/xHGy/8toJ3/G+Ts/yTm7v8K09r/Hamt + /xnu9/8PqKz/p5ZQ/+nIV/+SgDr/jH10/7ychf96ZT3/CAUDgjyY4pZvvfP/HqX8/yCX5/9COyz/VkIg + /9fK2P/OvNT/ST8Y/3jfev9B6Uj/SF0m/5m8hf9z7nj/Ub1W/zEvGv9avrz/Debv/wjf5v8E5/D/XsK+ + /3nr7/8N5+//Ae/4/wrR2P95cET/5s97/8WrTf+OfUj/2LtX/+PCUv9rYTC3QZzlSWy16/85rfr/F573 + /ztZaP9QORD/qZqT/9TF2f9pV0f/baxe/1HrWP9Ckz3/Oi8Q/3DLa/9F70z/RYw1/0yCbf9d6u//Auv0 + /wDg6f9keF3/hqWT/6nt8P9V6/H/Bdbe/zQxIv+qnXD/5tWU/+fRgv/lznv/x69Z/zszFIVPo+gGVaTi + 3mi99v8Yovv/MJDQ/z4vEv9eQhP/e2tb/2RXR/9KZSb/f+mD/0bpTf9L2FD/Vuhb/1bmXP9Fly//WlAs + /4TY2P9q4uj/F62u/0E0Jf9KOyr/P11W/1GXmP8ffn//Lygf/zkqGP9IOhr/h3hX/8Shgv9RJhr/CQQD + dQAAAABrm8ifhcLu/zuu+f8YoPj/Pm6L/08+If/FuMn/xbXL/19NJf9+sW3/hMF4/36zbP92pF//ZIpB + /2NTJf9pUCb/fXZU/19kUP9TSDT/V0g3/11OPP9HPjT/OTIt/zkyK/9DNyr/Szso/zswIf9oXFT/wJqS + /08iGv8KBAN1AAAAAL6qq5xyptP/h8j0/yWl+v8gofb/QGV8/1ZNRv9zaF//YlVE/2RWQv9nVz//a1k6 + /2xbQP94ZUj/ZlhD/2VYRP+Kdl3/emxc/1xSR/9SS0T/X1ZN/2NaUP9kWU7/YVdM/1xTSv9mV0X/U0g6 + /21fVf/DnZb/TyIa/wkEAnUAAAAAzK6onLytsf9wpND/fcX1/yKk+f8govf/Rn2i/0lIRf9pZF3/dW9p + /3Rvav91cGj/e3Jl/3tzaf99dGn/gndm/5aGb/+OgXL/TmVz/y5bfP9sZmH/d3Fr/4N4aP+Qg3H/eXJs + /351a/9uZVr/cmVa/8Odlv9PIhr/CgQDdQAAAADOsKucz7Gs/1A6P/91q9T/hMf1/yyo+P8YoPn/OZzf + /0xwif9WWl3/bGpn/316d/+EgX3/hYF8/4B6c/91c2z/W3qJ/zKKx/87qfP/VprK/3x5dv+Wko//mJSP + /56Xj/+alZD/mpWR/4eCfv9yZl7/xKCZ/04iGf8KBAN1AAAAANCzrZzSta//VCYa/3Z7df9+s9z/mM7z + /1C09/8dovr/F5/5/yyj8v83k9H/PIW3/zyBsP84hLj/LY3P/x+Z7P8Xnfb/GKH6/xih+v8hlOP/hIWF + /7q3tf+6t7T/u7i1/725tv++urf/p6Of/3puZf/FoZr/TyIa/wkEA3UAAAAA0raxnNK2sP9TJhr/jYNx + /9vb1v+Tvdz/i8Hp/4/M9f9Vtvf/MKr5/x2j+v8Yofv/GKH6/xih+/8ao/v/Jaf7/zqu+v9Ns/f/Iprt + /xWH2v+qtb7/19fW/9jX1v/Z2Nf/29nX/9za2P+3tLD/fW9k/8Whmv9PIhr/CgQDdQAAAADUubSc1765 + /1YpH/9sX0n/0szC/9/c1v/AzNP/ga3P/3q04f+Qx+//kMz0/33E9f9xwPX/cL/1/3O/9P9vu/D/VKnn + /0ea1/9qo8z/ws/Y/9vZ1//a2df/2tnY/9rZ2P/a2dj/1tTT/4iAdv99ZFL/toqB/08iGv8JBAN1AAAA + ANvGwZzdx8P/lWtj/zobEf9CKyH/SDIo/0gyKP9HMij/RDIt/zU7S/88U3D/SWqN/1B0mf9IcJb/PmCD + /zNIYv89Oj//RzMp/0cyJ/9MNy7/STQs/0MuKP9CLij/QS4p/0AtKf8+Kyb/PSEX/4ZMQP+ZWU3/TiIa + /wsEA2oAAAAA7uTieerd2//aw77/vZiQ/6yDe/+rgHj/qHx0/6d6cf+meXD/o3Vs/6Jzaf+gcWj/n29m + /5xsYv+bamH/mWZc/5dkWv+VYVb/k15U/5FcUf+OV0z/jFVK/4tSR/+HTkP/hUo//4NHO/+HSDz/lVNG + /4hFOP9EHBXwDgUEJAAAAAD07ewI8+3sp+nb2PjeycX83MbC/NvEwPzZwb382MC7/NW7tvzVurX807ex + /NG0rvzNr6j8za6o/MuqpPzIpqD8x6Sd/MWhmvzBnJT8wJqS/L2Vjfy7kor8uI2E/LWHfvyzhHv8sH92 + /K58c/yncmj8hlNJ4UQjHUsAAAAA+f+H/8AAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAACAAAAAgAAA + AIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAAEoAAAAEAAAACAAAAABACAAAAAAAEAEAAAAAAAAAAAA + AAAAAAAAAAAAGxsbYyoqKsgrKyvKKysryisrK8orKyvKKioqyioqKsoqKirKKioqyikpKcopKSnKKCgo + yigoKMogICDCAwMDQISEhPajnpX/sqmY/6+nl/+tpJX/qqKT/6qhkv+poJD/p56O/6Kai/+dloj/mpOF + /5iQgv+hmYr/kpKR/x4eHrGTk5P9d10v/35YEv9nTx3/U084/1BOOf9VRiT/X0IP/3FOEP92UhD/eVQR + /31XEf9+VxL/aEoU/6KZiv8lJSW4l5eX/XBpVf9ZlbL/ULL0/2C7+P9mvvf/Ybv3/1ao3v9fg4//SjkY + /zYnDv8sIA7/KR8Q/x0XDv+GhYL/JSUluJeeo/1Fndn/Vrj5/2ievf9RZ3L/cXdv/5uej/+Xsrv/bLjs + /x80Qv8ZEwv/HxcM/yIaD/8SDgr/hYSD/yYmJrh0pcn9TLT5/26ctP+gfUf/knhA/5GFSf+QfUT/goVY + /2qKdv+ShGf/XJV+/0iId/+4nEP/4MZq/8KtYf8nJiG4ZK3g/Uqv8v+nlHX/q6ug/0zkUf9nylD/X+Ne + /023jf8xsaT/e5l1/3eZe/8b1tn/wKlR/4VmLv/avWD/XVInuG+15v1KpuP/o39G/728uv9ZzFX/dqRS + /2LRU/9Yp17/LcHA/0W7r/8/qqL/K9zh/4eUav/VtU//2sJt/zQxJbiHut/9T7Lz/zMqHP+joZ7/Y6hk + /1DPVf9d3WH/IEMk/yrN1P8VzdP/Mtng/xHY3/9CmYT/0rdY/6+jfP9zZzbPnrvR/Wm/+P9AXGX/c2JH + /3aGYf9L1E//SaZE/0HCQf9UnZH/G93j/1FcRv9QtrP/JnRw/39ySv/KuXv/XlYzv7S5vP2Bttv/Uqvm + /05OQv+Ge2b/Ynk5/2p7O/9jXib/cFw6/05HMP9SQS7/LSMa/zMnHP8yJRb/npuY/ycnJ7i7u7v9W2Nl + /4vE6v9Vrej/Tmdx/1ZJMf9nVTn/X1A5/21mV/9Kc4z/UWd0/2BWSf9aUEb/Vkk5/5+cmf8nJye4v7+/ + /XFnVv+dn5n/mMLg/3bE9/9Ys+//TJ/W/0yj3f9UtfX/XLn2/1aJrf+WkIj/lo+J/4R+eP+in5v/Jycn + uMLCwv16c2b/29TJ/9fTyv+9ztn/sNDn/5/L6/+YyOr/ncfl/7DK3v/Lzc7/0M7N/9LQzf+2sq7/pqKe + /ycnJ7jS0tL9XFdP/4eDfP+JhYD/hYOA/4WDgP+Fg3//hoR//4iFf/+KhoH/iYaD/4SCgP+DgYD/aGNd + /5eVkv8nJye07+/vstTU1P3Gxsb9w8PD/b+/v/27u7v9uLi4/bS0tP2wsLD9q6ur/aenp/2ioqL9nZ2d + /Zqamv2Li4v0KSkpTgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAA= + + + \ No newline at end of file diff --git a/MainWindow.vb b/MainWindow.vb new file mode 100644 index 000000000..ded9fa925 --- /dev/null +++ b/MainWindow.vb @@ -0,0 +1,5017 @@ +Imports System.Linq +Imports iBMSC.Editor + + +Public Class MainWindow + + + 'Public Structure MARGINS + ' Public Left As Integer + ' Public Right As Integer + ' Public Top As Integer + ' Public Bottom As Integer + 'End Structure + + ' _ + 'Public Shared Function DwmIsCompositionEnabled(ByRef en As Integer) As Integer + 'End Function + ' _ + 'Public Shared Function DwmExtendFrameIntoClientArea(ByVal hwnd As IntPtr, ByRef margin As MARGINS) As Integer + 'End Function + Public Declare Function SendMessage Lib "user32.dll" Alias "SendMessageA" (ByVal hwnd As IntPtr, ByVal wMsg As Integer, ByVal wParam As Integer, ByVal lParam As Integer) As Integer + Public Declare Function ReleaseCapture Lib "user32.dll" Alias "ReleaseCapture" () As Integer + + 'Private Declare Auto Function GetWindowLong Lib "user32" (ByVal hWnd As IntPtr, ByVal nIndex As Integer) As Integer + 'Private Declare Auto Function SetWindowLong Lib "user32" (ByVal hWnd As IntPtr, ByVal nIndex As Integer, ByVal dwNewLong As Integer) As Integer + 'Private Declare Function SetWindowPos Lib "user32.dll" (ByVal hWnd As IntPtr, ByVal hWndInsertAfter As IntPtr, ByVal x As Integer, ByVal y As Integer, ByVal cx As Integer, ByVal cy As Integer, ByVal wFlags As Integer) As Integer + ' _ + 'Private Shared Function SetWindowText(ByVal hwnd As IntPtr, ByVal lpString As String) As Boolean + 'End Function + + 'Private Const GWL_STYLE As Integer = -16 + 'Private Const WS_CAPTION As Integer = &HC00000 + 'Private Const SWP_NOSIZE As Integer = &H1 + 'Private Const SWP_NOMOVE As Integer = &H2 + 'Private Const SWP_NOZORDER As Integer = &H4 + 'Private Const SWP_NOACTIVATE As Integer = &H10 + 'Private Const SWP_FRAMECHANGED As Integer = &H20 + 'Private Const SWP_REFRESH As Integer = SWP_NOZORDER Or SWP_NOSIZE Or SWP_NOMOVE Or SWP_NOACTIVATE Or SWP_FRAMECHANGED + + + Dim MeasureLength(999) As Double + Dim MeasureBottom(999) As Double + + Public Function MeasureUpper(idx As Integer) As Double + Return MeasureBottom(idx) + MeasureLength(idx) + End Function + + + Dim Notes() As Note = {New Note(niBPM, -1, 1200000, 0, False)} + Dim mColumn(999) As Integer '0 = no column, 1 = 1 column, etc. + Dim GreatestVPosition As Double '+ 2000 = -VS.Minimum + + Dim VSValue As Integer = 0 'Store value before ValueChange event + Dim HSValue As Integer = 0 'Store value before ValueChange event + + 'Dim SortingMethod As Integer = 1 + Dim MiddleButtonMoveMethod As Integer = 0 + Dim TextEncoding As System.Text.Encoding = System.Text.Encoding.UTF8 + Dim DispLang As String = "" 'Display Language + Dim Recent() As String = {"", "", "", "", ""} + Dim NTInput As Boolean = True + Dim ShowFileName As Boolean = False + + Dim BeepWhileSaved As Boolean = True + Dim BPMx1296 As Boolean = False + Dim STOPx1296 As Boolean = False + + Dim IsInitializing As Boolean = True + Dim FirstMouseEnter As Boolean = True + + Dim WAVMultiSelect As Boolean = True + Dim WAVChangeLabel As Boolean = True + Dim BeatChangeMode As Integer = 0 + + 'Dim FloatTolerance As Double = 0.0001R + Dim BMSGridLimit As Double = 1.0R + + Dim LnObj As Integer = 0 '0 for none, 1-1295 for 01-ZZ + + 'IO + Dim FileName As String = "Untitled.bms" + Dim RandomFileName As String = "___TempRandom" & GenerateRandomString(6, False) & ".bmsc" + Public RandomFile(2) As String + 'Dim TitlePath As New Drawing2D.GraphicsPath + Dim InitPath As String = "" + Dim IsSaved As Boolean = True + + 'Variables for Drag/Drop + Dim DDFileName() As String = {} + Dim SupportedFileExtension() As String = {".bms", ".bme", ".bml", ".pms", ".txt", ".sm", ".ibmsc"} + Dim SupportedAudioExtension() As String = {".wav", ".mp3", ".ogg"} + + 'Variables for theme + 'Dim SaveTheme As Boolean = True + + 'Variables for undo/redo + Dim sUndo(99) As UndoRedo.LinkedURCmd + Dim sRedo(99) As UndoRedo.LinkedURCmd + Dim sI As Integer = 0 + + 'Variables for select tool + Dim DisableVerticalMove As Boolean = False + Dim KMouseOver As Integer = -1 'Mouse is on which note (for drawing green outline) + Dim LastMouseDownLocation As PointF = New Point(-1, -1) 'Mouse is clicked on which point (location for display) (for selection box) + Dim pMouseMove As PointF = New Point(-1, -1) 'Mouse is moved to which point (location for display) (for selection box) + 'Dim KMouseDown As Integer = -1 'Mouse is clicked on which note (for moving) + Dim deltaVPosition As Double = 0 'difference between mouse and VPosition of K + Dim bAdjustLength As Boolean 'If adjusting note length instead of moving it + Dim bAdjustUpper As Boolean 'true = Adjusting upper end, false = adjusting lower end + Dim bAdjustSingle As Boolean 'true if there is only one note to be adjusted + Dim tempY As Integer + Dim tempV As Integer + Dim tempX As Integer + Dim tempH As Integer + Dim MiddleButtonLocation As New Point(0, 0) + Dim MiddleButtonClicked As Boolean = False + Dim MouseMoveStatus As Point = New Point(0, 0) 'mouse is moved to which point (For Status Panel) + 'Dim uCol As Integer 'temp variables for undo, original enabled columnindex + 'Dim uVPos As Double 'temp variables for undo, original vposition + 'Dim uPairWithI As Double 'temp variables for undo, original note length + Dim uAdded As Boolean 'temp variables for undo, if undo command is added + 'Dim uNote As Note 'temp variables for undo, original note + Dim SelectedNotes(-1) As Note 'temp notes for undo + Dim ctrlPressed As Boolean = False 'Indicates if the CTRL key is pressed while mousedown + Dim DuplicatedSelectedNotes As Boolean = False 'Indicates if duplicate notes of select/unselect note + + 'Variables for write tool + Dim ShouldDrawTempNote As Boolean = False + Dim SelectedColumn As Integer = -1 + Dim TempVPosition As Double = -1.0# + Dim TempLength As Double = 0.0# + + 'Variables for post effects tool + Dim vSelStart As Double = 192.0# + Dim vSelLength As Double = 0.0# + Dim vSelHalf As Double = 0.0# + Dim vSelMouseOverLine As Integer = 0 '0 = nothing, 1 = start, 2 = half, 3 = end + Dim vSelAdjust As Boolean = False + Dim vSelK() As Note = {} + Dim vSelPStart As Double = 192.0# + Dim vSelPLength As Double = 0.0# + Dim vSelPHalf As Double = 0.0# + + 'Variables for Full-Screen Mode + Dim isFullScreen As Boolean = False + Dim previousWindowState As FormWindowState = FormWindowState.Normal + Dim previousWindowPosition As New Rectangle(0, 0, 0, 0) + + 'Variables misc + Dim menuVPosition As Double = 0.0# + Dim tempResize As Integer = 0 + + '----AutoSave Options + Dim PreviousAutoSavedFileName As String = "" + Dim AutoSaveInterval As Integer = 120000 + + '----ErrorCheck Options + Dim ErrorCheck As Boolean = True + + '----Header Options + Dim hWAV(1295) As String + Dim hBPM(1295) As Long 'x10000 + Dim hSTOP(1295) As Long + Dim hSCROLL(1295) As Long + + '----Grid Options + Dim gSnap As Boolean = True + Dim gShowGrid As Boolean = True 'Grid + Dim gShowSubGrid As Boolean = True 'Sub + Dim gShowBG As Boolean = True 'BG Color + Dim gShowMeasureNumber As Boolean = True 'Measure Label + Dim gShowVerticalLine As Boolean = True 'Vertical + Dim gShowMeasureBar As Boolean = True 'Measure Barline + Dim gShowC As Boolean = True 'Column Caption + Dim gDivide As Integer = 16 + Dim gSub As Integer = 4 + Dim gSlash As Integer = 192 + Dim gxHeight As Single = 1.0! + Dim gxWidth As Single = 1.0! + Dim gWheel As Integer = 96 + Dim gPgUpDn As Integer = 384 + + Dim gDisplayBGAColumn As Boolean = True + Dim gSCROLL As Boolean = True + Dim gSTOP As Boolean = True + Dim gBPM As Boolean = True + 'Dim gA8 As Boolean = False + Dim iPlayer As Integer = 0 + Dim gColumns As Integer = 46 + + + '----Visual Options + Dim vo As New visualSettings() + + Public Sub setVO(ByVal xvo As visualSettings) + vo = xvo + End Sub + + '----Preview Options + Structure PlayerArguments + Public Path As String + Public aBegin As String + Public aHere As String + Public aStop As String + Public Sub New(ByVal xPath As String, ByVal xBegin As String, ByVal xHere As String, ByVal xStop As String) + Path = xPath + aBegin = xBegin + aHere = xHere + aStop = xStop + End Sub + End Structure + + Public pArgs() As PlayerArguments = {New PlayerArguments("\mBMplay.exe", + """""", + "-s """"", + "-t"), + New PlayerArguments("\uBMplay.exe", + "-P -N0 """"", + "-P -N """"", + "-S"), + New PlayerArguments("\o2play.exe", + "-P -N0 """"", + "-P -N """"", + "-S")} + Public CurrentPlayer As Integer = 0 + Dim PreviewOnClick As Boolean = True + Dim PreviewErrorCheck As Boolean = False + Dim ClickStopPreview As Boolean = True + Dim pTempFileNames() As String = {} + + '----Split Panel Options + Dim PanelWidth() As Single = {0, 100, 0} + Dim PanelHScroll() As Integer = {0, 0, 0} + Dim PanelVScroll() As Double = {0, 0, 0} + Dim spLock() As Boolean = {False, False, False} + Dim spDiff() As Integer = {0, 0, 0} + Dim PanelFocus As Integer = 1 '0 = Left, 1 = Middle, 2 = Right + Dim spMouseOver As Integer = 1 + + Dim AutoFocusMouseEnter As Boolean = False + Dim FirstClickDisabled As Boolean = True + Dim tempFirstMouseDown As Boolean = False + + Dim spMain() As Panel = {} + + '----Find Delete Replace Options + Dim fdriMesL As Integer + Dim fdriMesU As Integer + Dim fdriLblL As Integer + Dim fdriLblU As Integer + Dim fdriValL As Integer + Dim fdriValU As Integer + Dim fdriCol() As Integer + + + Public Sub New() + InitializeComponent() + Audio.Initialize() + End Sub + + ''' + ''' + ''' + ''' Original horizontal position. + ''' HS.Value + + + Private Function HorizontalPositiontoDisplay(ByVal xHPosition As Integer, ByVal xHSVal As Long) As Integer + Return CInt(xHPosition * gxWidth - xHSVal * gxWidth) + End Function + + ''' + ''' + ''' + ''' Original vertical position. + ''' VS.Value + ''' Height of the panel. (DisplayRectangle, but not ClipRectangle) + + + Private Function NoteRowToPanelHeight(ByVal xVPosition As Double, ByVal xVSVal As Long, ByVal xTHeight As Integer) As Integer + Return xTHeight - CInt((xVPosition + xVSVal) * gxHeight) - 1 + End Function + + Public Function MeasureAtDisplacement(ByVal xVPos As Double) As Integer + 'Return Math.Floor((xVPos + FloatTolerance) / 192) + 'Return Math.Floor(xVPos / 192) + Dim xI1 As Integer + For xI1 = 1 To 999 + If xVPos < MeasureBottom(xI1) Then Exit For + Next + Return xI1 - 1 + End Function + + Private Function GetMaxVPosition() As Double + Return MeasureUpper(999) + End Function + + Private Function SnapToGrid(ByVal xVPos As Double) As Double + Dim xOffset As Double = MeasureBottom(MeasureAtDisplacement(xVPos)) + Dim xRatio As Double = 192.0R / gDivide + Return Math.Floor((xVPos - xOffset) / xRatio) * xRatio + xOffset + End Function + + Private Sub CalculateGreatestVPosition() + 'If K Is Nothing Then Exit Sub + Dim xI1 As Integer + GreatestVPosition = 0 + + If NTInput Then + For xI1 = UBound(Notes) To 0 Step -1 + If Notes(xI1).VPosition + Notes(xI1).Length > GreatestVPosition Then GreatestVPosition = Notes(xI1).VPosition + Notes(xI1).Length + Next + Else + For xI1 = UBound(Notes) To 0 Step -1 + If Notes(xI1).VPosition > GreatestVPosition Then GreatestVPosition = Notes(xI1).VPosition + Next + End If + + Dim xI2 As Integer = -CInt(IIf(GreatestVPosition + 2000 > GetMaxVPosition(), GetMaxVPosition, GreatestVPosition + 2000)) + MainPanelScroll.Minimum = xI2 + LeftPanelScroll.Minimum = xI2 + RightPanelScroll.Minimum = xI2 + End Sub + + + Private Sub SortByVPositionInsertion() 'Insertion Sort + If UBound(Notes) <= 0 Then Exit Sub + Dim xNote As Note + Dim xI1 As Integer + Dim xI2 As Integer + For xI1 = 2 To UBound(Notes) + xNote = Notes(xI1) + For xI2 = xI1 - 1 To 1 Step -1 + If Notes(xI2).VPosition > xNote.VPosition Then + Notes(xI2 + 1) = Notes(xI2) + ' If KMouseDown = xI2 Then KMouseDown += 1 + If xI2 = 1 Then + Notes(xI2) = xNote + ' If KMouseDown = xI1 Then KMouseDown = xI2 + Exit For + End If + Else + Notes(xI2 + 1) = xNote + ' If KMouseDown = xI1 Then KMouseDown = xI2 + 1 + Exit For + End If + Next + Next + + End Sub + + Private Sub SortByVPositionQuick(ByVal xMin As Integer, ByVal xMax As Integer) 'Quick Sort + Dim xNote As Note + Dim iHi As Integer + Dim iLo As Integer + Dim xI1 As Integer + + ' If min >= max, the list contains 0 or 1 items so it is sorted. + If xMin >= xMax Then Exit Sub + + ' Pick the dividing value. + xI1 = CInt((xMax - xMin) / 2) + xMin + xNote = Notes(xI1) + + ' Swap it to the front. + Notes(xI1) = Notes(xMin) + + iLo = xMin + iHi = xMax + Do + ' Look down from hi for a value < med_value. + Do While Notes(iHi).VPosition >= xNote.VPosition + iHi = iHi - 1 + If iHi <= iLo Then Exit Do + Loop + If iHi <= iLo Then + Notes(iLo) = xNote + Exit Do + End If + + ' Swap the lo and hi values. + Notes(iLo) = Notes(iHi) + + ' Look up from lo for a value >= med_value. + iLo = iLo + 1 + Do While Notes(iLo).VPosition < xNote.VPosition + iLo = iLo + 1 + If iLo >= iHi Then Exit Do + Loop + If iLo >= iHi Then + iLo = iHi + Notes(iHi) = xNote + Exit Do + End If + + ' Swap the lo and hi values. + Notes(iHi) = Notes(iLo) + Loop + + ' Sort the two sublists. + SortByVPositionQuick(xMin, iLo - 1) + SortByVPositionQuick(iLo + 1, xMax) + End Sub + + Private Sub SortByVPositionQuick3(ByVal xMin As Integer, ByVal xMax As Integer) + Dim xxMin As Integer + Dim xxMax As Integer + Dim xxMid As Integer + Dim xNote As Note + Dim xNoteMid As Note + Dim xI1 As Integer + Dim xI2 As Integer + Dim xI3 As Integer + + 'If xMax = 0 Then + ' xMin = LBound(K1) + ' xMax = UBound(K1) + 'End If + xxMin = xMin + xxMax = xMax + xxMid = xMax - xMin + 1 + xI1 = CInt(Int(xxMid * Rnd())) + xMin + xI2 = CInt(Int(xxMid * Rnd())) + xMin + xI3 = CInt(Int(xxMid * Rnd())) + xMin + If Notes(xI1).VPosition <= Notes(xI2).VPosition And Notes(xI2).VPosition <= Notes(xI3).VPosition Then + xxMid = xI2 + Else + If Notes(xI2).VPosition <= Notes(xI1).VPosition And Notes(xI1).VPosition <= Notes(xI3).VPosition Then + xxMid = xI1 + Else + xxMid = xI3 + End If + End If + xNoteMid = Notes(xxMid) + Do + Do While Notes(xxMin).VPosition < xNoteMid.VPosition And xxMin < xMax + xxMin = xxMin + 1 + Loop + Do While xNoteMid.VPosition < Notes(xxMax).VPosition And xxMax > xMin + xxMax = xxMax - 1 + Loop + If xxMin <= xxMax Then + xNote = Notes(xxMin) + Notes(xxMin) = Notes(xxMax) + Notes(xxMax) = xNote + xxMin = xxMin + 1 + xxMax = xxMax - 1 + End If + Loop Until xxMin > xxMax + If xxMax - xMin < xMax - xxMin Then + If xMin < xxMax Then SortByVPositionQuick3(xMin, xxMax) + If xxMin < xMax Then SortByVPositionQuick3(xxMin, xMax) + Else + If xxMin < xMax Then SortByVPositionQuick3(xxMin, xMax) + If xMin < xxMax Then SortByVPositionQuick3(xMin, xxMax) + End If + End Sub + + + Private Sub UpdateMeasureBottom() + MeasureBottom(0) = 0.0# + For xI1 As Integer = 0 To 998 + MeasureBottom(xI1 + 1) = MeasureBottom(xI1) + MeasureLength(xI1) + Next + End Sub + + Private Function PathIsValid(ByVal sPath As String) As Boolean + Return File.Exists(sPath) Or Directory.Exists(sPath) + End Function + + Public Function PrevCodeToReal(ByVal InitStr As String) As String + Dim xFileName As String = IIf(Not PathIsValid(FileName), + IIf(InitPath = "", My.Application.Info.DirectoryPath, InitPath), + ExcludeFileName(FileName)) _ + & "\___TempBMS.bmsc" + Dim xMeasure As Integer = MeasureAtDisplacement(Math.Abs(PanelVScroll(PanelFocus))) + Dim xS1 As String = Replace(InitStr, "", My.Application.Info.DirectoryPath) + Dim xS2 As String = Replace(xS1, "", xMeasure) + Dim xS3 As String = Replace(xS2, "", xFileName) + Return xS3 + End Function + + Private Sub SetFileName(ByVal xFileName As String) + FileName = xFileName.Trim + InitPath = ExcludeFileName(FileName) + SetIsSaved(IsSaved) + End Sub + + Private Sub SetIsSaved(ByVal isSaved As Boolean) + 'pttl.Refresh() + 'pIsSaved.Visible = Not xBool + Dim xVersion As String = My.Application.Info.Version.Major & "." & My.Application.Info.Version.Minor & + IIf(My.Application.Info.Version.Build = 0, "", "." & My.Application.Info.Version.Build) + Text = IIf(isSaved, "", "*") & GetFileName(FileName) & " - " & My.Application.Info.Title & " " & xVersion + Me.IsSaved = isSaved + End Sub + + Private Sub PreviewNote(ByVal xFileLocation As String, ByVal bStop As Boolean) + If bStop Then + Audio.StopPlaying() + End If + Audio.Play(xFileLocation) + End Sub + + Private Sub AddNote(note As Note, + Optional ByVal xSelected As Boolean = False, + Optional ByVal OverWrite As Boolean = True, + Optional ByVal SortAndUpdatePairing As Boolean = True) + + If note.VPosition < 0 Or note.VPosition >= GetMaxVPosition() Then Exit Sub + + Dim xI1 As Integer = 1 + + If OverWrite Then + Do While xI1 <= UBound(Notes) + If Notes(xI1).VPosition = note.VPosition And + Notes(xI1).ColumnIndex = note.ColumnIndex Then + RemoveNote(xI1) + Else + xI1 += 1 + End If + Loop + End If + + ReDim Preserve Notes(UBound(Notes) + 1) + note.Selected = note.Selected And nEnabled(note.ColumnIndex) + Notes(UBound(Notes)) = note + + If SortAndUpdatePairing Then SortByVPositionInsertion() : UpdatePairing() + CalculateTotalPlayableNotes() + End Sub + + Private Sub RemoveNote(ByVal I As Integer, Optional ByVal SortAndUpdatePairing As Boolean = True) + KMouseOver = -1 + Dim xI2 As Integer + + If TBWavIncrease.Checked Then + If Notes(I).Value = LWAV.SelectedIndex * 10000 Then + DecreaseCurrentWav() + End If + End If + + For xI2 = I + 1 To UBound(Notes) + Notes(xI2 - 1) = Notes(xI2) + Next + ReDim Preserve Notes(UBound(Notes) - 1) + If SortAndUpdatePairing Then SortByVPositionInsertion() : UpdatePairing() + + End Sub + + Private Sub AddNotesFromClipboard(Optional ByVal xSelected As Boolean = True, Optional ByVal SortAndUpdatePairing As Boolean = True) + Dim xStrLine() As String = Split(Clipboard.GetText, vbCrLf) + + Dim xI1 As Integer + For xI1 = 0 To UBound(Notes) + Notes(xI1).Selected = False + Next + + Dim xVS As Long = PanelVScroll(PanelFocus) + Dim xTempVP As Double + Dim xKbu() As Note = Notes + + If xStrLine(0) = "iBMSC Clipboard Data" Then + If NTInput Then ReDim Preserve Notes(0) + + 'paste + Dim xStrSub() As String + For xI1 = 1 To UBound(xStrLine) + If xStrLine(xI1).Trim = "" Then Continue For + xStrSub = Split(xStrLine(xI1), " ") + xTempVP = Val(xStrSub(1)) + MeasureBottom(MeasureAtDisplacement(-xVS) + 1) + If UBound(xStrSub) = 5 And xTempVP >= 0 And xTempVP < GetMaxVPosition() Then + ReDim Preserve Notes(UBound(Notes) + 1) + With Notes(UBound(Notes)) + .ColumnIndex = Val(xStrSub(0)) + .VPosition = xTempVP + .Value = Val(xStrSub(2)) + .LongNote = CBool(Val(xStrSub(3))) + .Hidden = CBool(Val(xStrSub(4))) + .Landmine = CBool(Val(xStrSub(5))) + .Selected = xSelected + End With + End If + Next + + 'convert + If NTInput Then + ConvertBMSE2NT() + + For xI1 = 1 To UBound(Notes) + Notes(xI1 - 1) = Notes(xI1) + Next + ReDim Preserve Notes(UBound(Notes) - 1) + + Dim xKn() As Note = Notes + Notes = xKbu + + Dim xIStart As Integer = Notes.Length + ReDim Preserve Notes(UBound(Notes) + xKn.Length) + + For xI1 = xIStart To UBound(Notes) + Notes(xI1) = xKn(xI1 - xIStart) + Next + End If + + ElseIf xStrLine(0) = "iBMSC Clipboard Data xNT" Then + If Not NTInput Then ReDim Preserve Notes(0) + + 'paste + Dim xStrSub() As String + For xI1 = 1 To UBound(xStrLine) + If xStrLine(xI1).Trim = "" Then Continue For + xStrSub = Split(xStrLine(xI1), " ") + xTempVP = Val(xStrSub(1)) + MeasureBottom(MeasureAtDisplacement(-xVS) + 1) + If UBound(xStrSub) = 5 And xTempVP >= 0 And xTempVP < GetMaxVPosition() Then + ReDim Preserve Notes(UBound(Notes) + 1) + With Notes(UBound(Notes)) + .ColumnIndex = Val(xStrSub(0)) + .VPosition = xTempVP + .Value = Val(xStrSub(2)) + .Length = Val(xStrSub(3)) + .Hidden = CBool(Val(xStrSub(4))) + .Landmine = CBool(Val(xStrSub(5))) + .Selected = xSelected + End With + End If + Next + + 'convert + If Not NTInput Then + ConvertNT2BMSE() + + For xI1 = 1 To UBound(Notes) + Notes(xI1 - 1) = Notes(xI1) + Next + ReDim Preserve Notes(UBound(Notes) - 1) + + Dim xKn() As Note = Notes + Notes = xKbu + + Dim xIStart As Integer = Notes.Length + ReDim Preserve Notes(UBound(Notes) + xKn.Length) + + For xI1 = xIStart To UBound(Notes) + Notes(xI1) = xKn(xI1 - xIStart) + Next + End If + + ElseIf xStrLine(0) = "BMSE ClipBoard Object Data Format" Then + If NTInput Then ReDim Preserve Notes(0) + + 'paste + For xI1 = 1 To UBound(xStrLine) + ' zdr: holy crap this is obtuse + Dim posStr = Mid(xStrLine(xI1), 5, 7) + Dim vPos = Val(posStr) + MeasureBottom(MeasureAtDisplacement(-xVS) + 1) + + Dim bmsIdent = Mid(xStrLine(xI1), 1, 3) + Dim lineCol = BMSEChannelToColumnIndex(bmsIdent) + + Dim Value = Val(Mid(xStrLine(xI1), 12)) * 10000 + + Dim attribute = Mid(xStrLine(xI1), 4, 1) + + Dim validCol = Len(xStrLine(xI1)) > 11 And lineCol > 0 + Dim inRange = vPos >= 0 And vPos < GetMaxVPosition() + If validCol And inRange Then + ReDim Preserve Notes(UBound(Notes) + 1) + + With Notes(UBound(Notes)) + .ColumnIndex = lineCol + .VPosition = vPos + .Value = Value + .LongNote = attribute = "2" + .Hidden = attribute = "1" + .Selected = xSelected And nEnabled(.ColumnIndex) + End With + End If + Next + + 'convert + If NTInput Then + ConvertBMSE2NT() + + For xI1 = 1 To UBound(Notes) + Notes(xI1 - 1) = Notes(xI1) + Next + ReDim Preserve Notes(UBound(Notes) - 1) + + Dim xKn() As Note = Notes + Notes = xKbu + + Dim xIStart As Integer = Notes.Length + ReDim Preserve Notes(UBound(Notes) + xKn.Length) + + For xI1 = xIStart To UBound(Notes) + Notes(xI1) = xKn(xI1 - xIStart) + Next + End If + End If + + If SortAndUpdatePairing Then SortByVPositionInsertion() : UpdatePairing() + CalculateTotalPlayableNotes() + End Sub + + Private Sub CopyNotes(Optional ByVal Unselect As Boolean = True) + Dim xStrAll As String = "iBMSC Clipboard Data" & IIf(NTInput, " xNT", "") + Dim xI1 As Integer + Dim MinMeasure As Double = 999 + + For xI1 = 1 To UBound(Notes) + If Notes(xI1).Selected And MeasureAtDisplacement(Notes(xI1).VPosition) < MinMeasure Then MinMeasure = MeasureAtDisplacement(Notes(xI1).VPosition) + Next + MinMeasure = MeasureBottom(MinMeasure) + + If Not NTInput Then + For xI1 = 1 To UBound(Notes) + If Notes(xI1).Selected Then + xStrAll &= vbCrLf & Notes(xI1).ColumnIndex.ToString & " " & + (Notes(xI1).VPosition - MinMeasure).ToString & " " & + Notes(xI1).Value.ToString & " " & + CInt(Notes(xI1).LongNote).ToString & " " & + CInt(Notes(xI1).Hidden).ToString & " " & + CInt(Notes(xI1).Landmine).ToString + Notes(xI1).Selected = Not Unselect + End If + Next + + Else + For xI1 = 1 To UBound(Notes) + If Notes(xI1).Selected Then + xStrAll &= vbCrLf & Notes(xI1).ColumnIndex.ToString & " " & + (Notes(xI1).VPosition - MinMeasure).ToString & " " & + Notes(xI1).Value.ToString & " " & + Notes(xI1).Length.ToString & " " & + CInt(Notes(xI1).Hidden).ToString & " " & + CInt(Notes(xI1).Landmine).ToString + Notes(xI1).Selected = Not Unselect + End If + Next + End If + + Clipboard.SetText(xStrAll) + End Sub + + Private Sub RemoveNotes(Optional ByVal SortAndUpdatePairing As Boolean = True) + If UBound(Notes) = 0 Then Exit Sub + + KMouseOver = -1 + Dim xI1 As Integer = 1 + Dim xI2 As Integer + Do + If Notes(xI1).Selected Then + For xI2 = xI1 + 1 To UBound(Notes) + Notes(xI2 - 1) = Notes(xI2) + Next + ReDim Preserve Notes(UBound(Notes) - 1) + xI1 = 0 + End If + xI1 += 1 + Loop While xI1 < UBound(Notes) + 1 + If SortAndUpdatePairing Then SortByVPositionInsertion() : UpdatePairing() + CalculateTotalPlayableNotes() + End Sub + + Private Function EnabledColumnIndexToColumnArrayIndex(ByVal cEnabled As Integer) As Integer + Dim xI1 As Integer = 0 + Do + If xI1 >= gColumns Then Exit Do + If Not nEnabled(xI1) Then cEnabled += 1 + If xI1 >= cEnabled Then Exit Do + xI1 += 1 + Loop + Return cEnabled + End Function + + Private Function ColumnArrayIndexToEnabledColumnIndex(ByVal cReal As Integer) As Integer + Dim xI1 As Integer + For xI1 = 0 To cReal - 1 + If Not nEnabled(xI1) Then cReal -= 1 + Next + Return cReal + End Function + + Private Sub Form1_FormClosed(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosedEventArgs) Handles Me.FormClosed + If pTempFileNames IsNot Nothing Then + For Each xStr As String In pTempFileNames + IO.File.Delete(xStr) + Next + End If + If PreviousAutoSavedFileName <> "" Then IO.File.Delete(PreviousAutoSavedFileName) + End Sub + + Private Sub Form1_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing + Dim xStrAll As String + Dim xRandomFile As Boolean = GetFileName(FileName).StartsWith("___TempRandom") + If Not IsSaved Then + Dim xStr As String = Strings.Messages.SaveOnExit + If e.CloseReason = CloseReason.WindowsShutDown Then xStr = Strings.Messages.SaveOnExit1 + If e.CloseReason = CloseReason.TaskManagerClosing Then xStr = Strings.Messages.SaveOnExit2 + + Dim xResult As MsgBoxResult = MsgBox(xStr, MsgBoxStyle.YesNoCancel Or MsgBoxStyle.Question, Me.Text) + + If xResult = MsgBoxResult.Yes AndAlso Not xRandomFile Then + If ExcludeFileName(FileName) = "" Then + Dim xDSave As New SaveFileDialog + xDSave.Filter = Strings.FileType._bms & "|*.bms;*.bme;*.bml;*.pms;*.txt|" & + Strings.FileType.BMS & "|*.bms|" & + Strings.FileType.BME & "|*.bme|" & + Strings.FileType.BML & "|*.bml|" & + Strings.FileType.PMS & "|*.pms|" & + Strings.FileType.TXT & "|*.txt|" & + Strings.FileType._all & "|*.*" + xDSave.DefaultExt = "bms" + xDSave.InitialDirectory = InitPath + + If xDSave.ShowDialog = Windows.Forms.DialogResult.Cancel Then e.Cancel = True : Exit Sub + SetFileName(xDSave.FileName) + End If + xStrAll = SaveBMS() + My.Computer.FileSystem.WriteAllText(FileName, xStrAll, False, TextEncoding) + NewRecent(FileName) + If BeepWhileSaved Then Beep() + End If + + If xResult = MsgBoxResult.Cancel Then e.Cancel = True + End If + + If xRandomFile Then + xStrAll = SaveRandomBMS() + My.Computer.FileSystem.WriteAllText(FileName, xStrAll, False, TextEncoding) + If BeepWhileSaved Then Beep() + End If + + If Not e.Cancel Then + 'If SaveTheme Then + ' My.Computer.FileSystem.WriteAllText(My.Application.Info.DirectoryPath & "\Skin.cff", SaveSkinCFF, False, System.Text.Encoding.Unicode) + 'Else + ' My.Computer.FileSystem.WriteAllText(My.Application.Info.DirectoryPath & "\Skin.cff", "", False, System.Text.Encoding.Unicode) + 'End If + ' + 'My.Computer.FileSystem.WriteAllText(My.Application.Info.DirectoryPath & "\PlayerArgs.cff", SavePlayerCFF, False, System.Text.Encoding.Unicode) + 'My.Computer.FileSystem.WriteAllText(My.Application.Info.DirectoryPath & "\Config.cff", SaveCFF, False, System.Text.Encoding.Unicode) + 'My.Computer.FileSystem.WriteAllText(My.Application.Info.DirectoryPath & "\PreConfig.cff", "", False, System.Text.Encoding.Unicode) + Me.SaveSettings(My.Application.Info.DirectoryPath & "\iBMSC.Settings.xml", False) + End If + End Sub + + Private Function FilterFileBySupported(ByVal xFile() As String, ByVal xFilter() As String) As String() + Dim xPath(-1) As String + For xI1 As Integer = 0 To UBound(xFile) + If My.Computer.FileSystem.FileExists(xFile(xI1)) And Array.IndexOf(xFilter, Path.GetExtension(xFile(xI1))) <> -1 Then + ReDim Preserve xPath(UBound(xPath) + 1) + xPath(UBound(xPath)) = xFile(xI1) + End If + + If My.Computer.FileSystem.DirectoryExists(xFile(xI1)) Then + Dim xFileNames() As FileInfo = My.Computer.FileSystem.GetDirectoryInfo(xFile(xI1)).GetFiles() + For Each xStr As FileInfo In xFileNames + If Array.IndexOf(xFilter, xStr.Extension) = -1 Then Continue For + ReDim Preserve xPath(UBound(xPath) + 1) + xPath(UBound(xPath)) = xStr.FullName + Next + End If + Next + + Return xPath + End Function + + Private Sub InitializeNewBMS() + 'ReDim K(0) + 'With K(0) + ' .ColumnIndex = niBPM + ' .VPosition = -1 + ' .LongNote = False + ' .Selected = False + ' .Value = 1200000 + 'End With + + THTitle.Text = "" + THArtist.Text = "" + THGenre.Text = "" + THBPM.Value = 120 + If CHPlayer.SelectedIndex = -1 Then CHPlayer.SelectedIndex = 0 + CHRank.SelectedIndex = 3 + THPlayLevel.Text = "" + THSubTitle.Text = "" + THSubArtist.Text = "" + THStageFile.Text = "" + THBanner.Text = "" + THBackBMP.Text = "" + CHDifficulty.SelectedIndex = 0 + THExRank.Text = "" + THTotal.Text = "" + THComment.Text = "" + 'THLnType.Text = "1" + CHLnObj.SelectedIndex = 0 + + TExpansion.Text = "" + + LBeat.Items.Clear() + For xI1 As Integer = 0 To 999 + MeasureLength(xI1) = 192.0R + MeasureBottom(xI1) = xI1 * 192.0R + LBeat.Items.Add(Add3Zeros(xI1) & ": 1 ( 4 / 4 )") + Next + End Sub + + Private Sub InitializeOpenBMS() + CHPlayer.SelectedIndex = 0 + 'THLnType.Text = "" + End Sub + + Private Sub Form1_DragEnter(ByVal sender As Object, ByVal e As DragEventArgs) Handles Me.DragEnter + If e.Data.GetDataPresent(DataFormats.FileDrop) Then + e.Effect = DragDropEffects.Copy + DDFileName = FilterFileBySupported(CType(e.Data.GetData(DataFormats.FileDrop), String()), SupportedFileExtension) + Else + e.Effect = DragDropEffects.None + End If + RefreshPanelAll() + End Sub + + Private Sub Form1_DragLeave(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.DragLeave + ReDim DDFileName(-1) + RefreshPanelAll() + End Sub + + Private Sub Form1_DragDrop(ByVal sender As Object, ByVal e As DragEventArgs) Handles Me.DragDrop + ReDim DDFileName(-1) + ' If Not e.Data.GetDataPresent(DataFormats.FileDrop) Then Return + + Dim xOrigPath() As String = CType(e.Data.GetData(DataFormats.FileDrop), String()) + ' Dim xPath() As String = FilterFileBySupported(xOrigPath, SupportedFileExtension) + ' If xPath.Length > 0 Then + Dim xProg As New fLoadFileProgress(xOrigPath, IsSaved) + xProg.ShowDialog(Me) + ' End If + + RefreshPanelAll() + End Sub + + Private Sub setFullScreen(ByVal value As Boolean) + If value Then + If Me.WindowState = FormWindowState.Minimized Then Exit Sub + + Me.SuspendLayout() + previousWindowPosition.Location = Me.Location + previousWindowPosition.Size = Me.Size + previousWindowState = Me.WindowState + + Me.WindowState = FormWindowState.Normal + Me.FormBorderStyle = Windows.Forms.FormBorderStyle.None + Me.WindowState = FormWindowState.Maximized + ToolStripContainer1.TopToolStripPanelVisible = False + + Me.ResumeLayout() + isFullScreen = True + Else + Me.SuspendLayout() + Me.FormBorderStyle = Windows.Forms.FormBorderStyle.Sizable + ToolStripContainer1.TopToolStripPanelVisible = True + Me.WindowState = FormWindowState.Normal + + Me.WindowState = previousWindowState + If Me.WindowState = FormWindowState.Normal Then + Me.Location = previousWindowPosition.Location + Me.Size = previousWindowPosition.Size + End If + + Me.ResumeLayout() + isFullScreen = False + End If + End Sub + + Private Sub Form1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown + Select Case e.KeyCode + Case Keys.F11 + setFullScreen(Not isFullScreen) + End Select + End Sub + + Private Sub Form1_KeyUp(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyUp + RefreshPanelAll() + POStatusRefresh() + End Sub + + Friend Sub ReadFile(ByVal xPath As String) + Select Case LCase(Path.GetExtension(xPath)) + Case ".bms", ".bme", ".bml", ".pms", ".txt" + OpenBMS(My.Computer.FileSystem.ReadAllText(xPath, TextEncoding)) + ClearUndo() + NewRecent(xPath) + SetFileName(xPath) + SetIsSaved(True) + + Case ".sm" + If OpenSM(My.Computer.FileSystem.ReadAllText(xPath, TextEncoding)) Then Return + InitPath = ExcludeFileName(xPath) + ClearUndo() + SetFileName("Untitled.bms") + SetIsSaved(False) + + Case ".ibmsc" + OpeniBMSC(xPath) + InitPath = ExcludeFileName(xPath) + NewRecent(xPath) + SetFileName("Imported_" & GetFileName(xPath)) + SetIsSaved(False) + + Case Else + OpenBMS(My.Computer.FileSystem.ReadAllText(xPath, TextEncoding)) + ClearUndo() + NewRecent(xPath) + SetFileName(xPath) + SetIsSaved(True) + + End Select + End Sub + + + Public Function GCD(ByVal NumA As Double, ByVal NumB As Double) As Double + Dim xNMax As Double = NumA + Dim xNMin As Double = NumB + If NumA < NumB Then + xNMax = NumB + xNMin = NumA + End If + Do While xNMin >= BMSGridLimit + GCD = xNMax - Math.Floor(xNMax / xNMin) * xNMin + xNMax = xNMin + xNMin = GCD + Loop + GCD = xNMax + End Function + + Private Shared Function LoadCursorFromFile(ByVal fileName As String) As IntPtr + End Function + Public Shared Function ActuallyLoadCursor(ByVal path As String) As Cursor + Return New Cursor(LoadCursorFromFile(path)) + End Function + + Private Sub Unload() Handles MyBase.Disposed + Audio.Finalize() + End Sub + + Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load + 'On Error Resume Next + Me.TopMost = True + Me.SuspendLayout() + Me.Visible = False + + 'POBMP.Dispose() + 'POBGA.Dispose() + + 'Me.MaximizedBounds = Screen.GetWorkingArea(Me) + 'Me.Visible = False + SetFileName(FileName) + 'Me.ShowCaption = False + 'SetWindowText(Me.Handle.ToInt32, FileName) + + InitializeNewBMS() + 'nBeatD.SelectedIndex = 4 + + Try + Dim xTempFileName As String = RandomFileName(".cur") + My.Computer.FileSystem.WriteAllBytes(xTempFileName, My.Resources.CursorResizeDown, False) + Dim xDownCursor As Cursor = ActuallyLoadCursor(xTempFileName) + My.Computer.FileSystem.WriteAllBytes(xTempFileName, My.Resources.CursorResizeLeft, False) + Dim xLeftCursor As Cursor = ActuallyLoadCursor(xTempFileName) + My.Computer.FileSystem.WriteAllBytes(xTempFileName, My.Resources.CursorResizeRight, False) + Dim xRightCursor As Cursor = ActuallyLoadCursor(xTempFileName) + File.Delete(xTempFileName) + + POWAVResizer.Cursor = xDownCursor + POBeatResizer.Cursor = xDownCursor + POExpansionResizer.Cursor = xDownCursor + + POptionsResizer.Cursor = xLeftCursor + + SpL.Cursor = xRightCursor + SpR.Cursor = xLeftCursor + Catch ex As Exception + + End Try + + spMain = New Panel() {PMainInL, PMainIn, PMainInR} + + Dim xI1 As Integer + + sUndo(0) = New UndoRedo.NoOperation + sUndo(1) = New UndoRedo.NoOperation + sRedo(0) = New UndoRedo.NoOperation + sRedo(1) = New UndoRedo.NoOperation + sI = 0 + + LWAV.Items.Clear() + For xI1 = 1 To 1295 + LWAV.Items.Add(C10to36(xI1) & ":") + Next + LWAV.SelectedIndex = 0 + CHPlayer.SelectedIndex = 0 + + CalculateGreatestVPosition() + TBLangRefresh_Click(TBLangRefresh, Nothing) + TBThemeRefresh_Click(TBThemeRefresh, Nothing) + + POHeaderPart2.Visible = False + POGridPart2.Visible = False + POWaveFormPart2.Visible = False + + If My.Computer.FileSystem.FileExists(My.Application.Info.DirectoryPath & "\iBMSC.Settings.xml") Then + LoadSettings(My.Application.Info.DirectoryPath & "\iBMSC.Settings.xml") + 'Else + '---- Settings for first-time start-up --------------------------------------------------------------------------- + 'Me.LoadLocale(My.Application.Info.DirectoryPath & "\Data\chs.Lang.xml") + '----------------------------------------------------------------------------------------------------------------- + End If + 'On Error GoTo 0 + SetIsSaved(True) + + Dim xStr() As String = Environment.GetCommandLineArgs + 'Dim xStr() As String = {Application.ExecutablePath, "C:\Users\User\Desktop\yang run xuan\SoFtwArES\Games\O2Mania\music\SHOOT!\shoot! -NM-.bms"} + + If xStr.Length = 2 Then + ReadFile(xStr(1)) + If LCase(Path.GetExtension(xStr(1))) = ".ibmsc" AndAlso GetFileName(xStr(1)).StartsWith("AutoSave_", True, Nothing) Then GoTo 1000 + End If + + 'pIsSaved.Visible = Not IsSaved + IsInitializing = False + + If Process.GetProcessesByName(Process.GetCurrentProcess.ProcessName).Length > 1 Then GoTo 1000 + Dim xFiles() As FileInfo = My.Computer.FileSystem.GetDirectoryInfo(My.Application.Info.DirectoryPath).GetFiles("AutoSave_*.IBMSC") + If xFiles Is Nothing OrElse xFiles.Length = 0 Then GoTo 1000 + + 'Me.TopMost = True + If MsgBox(Replace(Strings.Messages.RestoreAutosavedFile, "{}", xFiles.Length), MsgBoxStyle.YesNo Or MsgBoxStyle.MsgBoxSetForeground) = MsgBoxResult.Yes Then + For Each xF As FileInfo In xFiles + 'MsgBox(xF.FullName) + System.Diagnostics.Process.Start(Application.ExecutablePath, """" & xF.FullName & """") + Next + End If + + For Each xF As FileInfo In xFiles + ReDim Preserve pTempFileNames(UBound(pTempFileNames) + 1) + pTempFileNames(UBound(pTempFileNames)) = xF.FullName + Next + +1000: + IsInitializing = False + POStatusRefresh() + Me.ResumeLayout() + + tempResize = Me.WindowState + Me.TopMost = False + Me.WindowState = tempResize + + Me.Visible = True + End Sub + + Private Sub UpdatePairing() + Dim i As Integer, j As Integer + + If NTInput Then + For i = 0 To UBound(Notes) + Notes(i).HasError = False + Notes(i).LNPair = 0 + If Notes(i).Length < 0 Then Notes(i).Length = 0 + Next + + For i = 1 To UBound(Notes) + If Notes(i).Length <> 0 Then + For j = i + 1 To UBound(Notes) + If Notes(j).VPosition > Notes(i).VPosition + Notes(i).Length Then Exit For + If Notes(j).ColumnIndex = Notes(i).ColumnIndex Then Notes(j).HasError = True + Next + Else + For j = i + 1 To UBound(Notes) + If Notes(j).VPosition > Notes(i).VPosition Then Exit For + If Notes(j).ColumnIndex = Notes(i).ColumnIndex Then Notes(j).HasError = True + Next + + If Notes(i).Value \ 10000 = LnObj AndAlso Not IsColumnNumeric(Notes(i).ColumnIndex) Then + For j = i - 1 To 1 Step -1 + If Notes(j).ColumnIndex <> Notes(i).ColumnIndex Then Continue For + If Notes(j).Hidden Then Continue For + + If Notes(j).Length <> 0 OrElse Notes(j).Value \ 10000 = LnObj Then + Notes(i).HasError = True + Else + Notes(i).LNPair = j + Notes(j).LNPair = i + End If + Exit For + Next + If j = 0 Then + Notes(i).HasError = True + End If + End If + End If + Next + + Else + For i = 0 To UBound(Notes) + Notes(i).HasError = False + Notes(i).LNPair = 0 + Next + + For i = 1 To UBound(Notes) + + If Notes(i).LongNote Then + 'LongNote: If overlapping a note, then error. + ' Else if already matched by a LongNote below, then match it. + ' Otherwise match anything above. + ' If ShortNote above then error on above. + ' If nothing above then error. + For j = i - 1 To 1 Step -1 + If Notes(j).ColumnIndex <> Notes(i).ColumnIndex Then Continue For + If Notes(j).VPosition = Notes(i).VPosition Then + Notes(i).HasError = True + GoTo EndSearch + ElseIf Notes(j).LongNote And Notes(j).LNPair = i Then + Notes(i).LNPair = j + GoTo EndSearch + Else + Exit For + End If + Next + + For j = i + 1 To UBound(Notes) + If Notes(j).ColumnIndex <> Notes(i).ColumnIndex Then Continue For + Notes(i).LNPair = j + Notes(j).LNPair = i + If Not Notes(j).LongNote AndAlso Notes(j).Value \ 10000 <> LnObj Then + Notes(j).HasError = True + End If + Exit For + Next + + If j = UBound(Notes) + 1 Then + Notes(i).HasError = True + End If +EndSearch: + + ElseIf Notes(i).Value \ 10000 = LnObj And + Not IsColumnNumeric(Notes(i).ColumnIndex) Then + 'LnObj: Match anything below. + ' If matching a LongNote not matching back, then error on below. + ' If overlapping a note, then error. + ' If mathcing a LnObj below, then error on below. + ' If nothing below, then error. + For j = i - 1 To 1 Step -1 + If Notes(i).ColumnIndex <> Notes(j).ColumnIndex Then Continue For + If Notes(j).LNPair <> 0 And Notes(j).LNPair <> i Then + Notes(j).HasError = True + End If + Notes(i).LNPair = j + Notes(j).LNPair = i + If Notes(i).VPosition = Notes(j).VPosition Then + Notes(i).HasError = True + End If + If Notes(j).Value \ 10000 = LnObj Then + Notes(j).HasError = True + End If + Exit For + Next + + If j = 0 Then + Notes(i).HasError = True + End If + + Else + 'ShortNote: If overlapping a note, then error. + For j = i - 1 To 1 Step -1 + If Notes(j).VPosition < Notes(i).VPosition Then Exit For + If Notes(j).ColumnIndex <> Notes(i).ColumnIndex Then Continue For + Notes(i).HasError = True + Exit For + Next + + End If + Next + + + End If + + Dim currentMS = 0.0# + Dim currentBPM = Notes(0).Value / 10000 + Dim currentBPMVPosition = 0.0# + For i = 1 To UBound(Notes) + If Notes(i).ColumnIndex = niBPM Then + currentMS += (Notes(i).VPosition - currentBPMVPosition) / currentBPM * 1250 + currentBPM = Notes(i).Value / 10000 + currentBPMVPosition = Notes(i).VPosition + End If + 'K(i).TimeOffset = currentMS + (K(i).VPosition - currentBPMVPosition) / currentBPM * 1250 + Next + End Sub + + + + Public Sub ExceptionSave(ByVal Path As String) + SaveiBMSC(Path) + End Sub + + ''' + ''' True if pressed cancel. False elsewise. + ''' + ''' True if pressed cancel. False elsewise. + + Private Function ClosingPopSave() As Boolean + If Not IsSaved Then + Dim xResult As MsgBoxResult = MsgBox(Strings.Messages.SaveOnExit, MsgBoxStyle.YesNoCancel Or MsgBoxStyle.Question, Me.Text) + + If xResult = MsgBoxResult.Yes Then + If ExcludeFileName(FileName) = "" Then + Dim xDSave As New SaveFileDialog + xDSave.Filter = Strings.FileType._bms & "|*.bms;*.bme;*.bml;*.pms;*.txt|" & + Strings.FileType.BMS & "|*.bms|" & + Strings.FileType.BME & "|*.bme|" & + Strings.FileType.BML & "|*.bml|" & + Strings.FileType.PMS & "|*.pms|" & + Strings.FileType.TXT & "|*.txt|" & + Strings.FileType._all & "|*.*" + xDSave.DefaultExt = "bms" + xDSave.InitialDirectory = InitPath + + If xDSave.ShowDialog = Windows.Forms.DialogResult.Cancel Then Return True + SetFileName(xDSave.FileName) + End If + Dim xStrAll As String = SaveBMS() + My.Computer.FileSystem.WriteAllText(FileName, xStrAll, False, TextEncoding) + NewRecent(FileName) + If BeepWhileSaved Then Beep() + End If + + If xResult = MsgBoxResult.Cancel Then Return True + End If + Return False + End Function + + Private Sub TBNew_Click(ByVal sender As System.Object, ByVal e As EventArgs) Handles TBNew.Click, mnNew.Click + + 'KMouseDown = -1 + ReDim SelectedNotes(-1) + KMouseOver = -1 + If ClosingPopSave() Then Exit Sub + + ClearUndo() + InitializeNewBMS() + + ReDim Notes(0) + ReDim mColumn(999) + ReDim hWAV(1295) + ReDim hBPM(1295) 'x10000 + ReDim hSTOP(1295) + ReDim hSCROLL(1295) + THGenre.Text = "" + THTitle.Text = "" + THArtist.Text = "" + THPlayLevel.Text = "" + + With Notes(0) + .ColumnIndex = niBPM + .VPosition = -1 + '.LongNote = False + '.Selected = False + .Value = 1200000 + End With + THBPM.Value = 120 + + LWAV.Items.Clear() + Dim xI1 As Integer + For xI1 = 1 To 1295 + LWAV.Items.Add(C10to36(xI1) & ": " & hWAV(xI1)) + Next + LWAV.SelectedIndex = 0 + + SetFileName("Untitled.bms") + SetIsSaved(True) + 'pIsSaved.Visible = Not IsSaved + + CalculateTotalPlayableNotes() + CalculateGreatestVPosition() + RefreshPanelAll() + POStatusRefresh() + End Sub + + Private Sub TBNewC_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) 'Handles TBNewC.Click + 'KMouseDown = -1 + ReDim SelectedNotes(-1) + KMouseOver = -1 + If ClosingPopSave() Then Exit Sub + + ClearUndo() + + ReDim Notes(0) + ReDim mColumn(999) + ReDim hWAV(1295) + ReDim hBPM(1295) 'x10000 + ReDim hSTOP(1295) + ReDim hSCROLL(1295) + THGenre.Text = "" + THTitle.Text = "" + THArtist.Text = "" + THPlayLevel.Text = "" + + With Notes(0) + .ColumnIndex = niBPM + .VPosition = -1 + '.LongNote = False + '.Selected = False + .Value = 1200000 + End With + THBPM.Value = 120 + + SetFileName("Untitled.bms") + SetIsSaved(True) + 'pIsSaved.Visible = Not IsSaved + + If MsgBox("Please copy your code to clipboard and click OK.", MsgBoxStyle.OkCancel, "Create from code") = MsgBoxResult.Cancel Then Exit Sub + OpenBMS(Clipboard.GetText) + End Sub + + Private Sub TBOpen_ButtonClick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBOpen.ButtonClick, mnOpen.Click + 'KMouseDown = -1 + ReDim SelectedNotes(-1) + KMouseOver = -1 + If ClosingPopSave() Then Exit Sub + + Dim xDOpen As New OpenFileDialog + xDOpen.Filter = Strings.FileType._bms & "|*.bms;*.bme;*.bml;*.pms;*.txt|" & + Strings.FileType.BMS & "|*.bms|" & + Strings.FileType.BME & "|*.bme|" & + Strings.FileType.BML & "|*.bml|" & + Strings.FileType.PMS & "|*.pms|" & + Strings.FileType.TXT & "|*.txt|" & + Strings.FileType._all & "|*.*" + xDOpen.DefaultExt = "bms" + xDOpen.InitialDirectory = IIf(ExcludeFileName(FileName) = "", InitPath, ExcludeFileName(FileName)) + + If xDOpen.ShowDialog = Windows.Forms.DialogResult.Cancel Then Exit Sub + InitPath = ExcludeFileName(xDOpen.FileName) + OpenBMS(My.Computer.FileSystem.ReadAllText(xDOpen.FileName, TextEncoding)) + ClearUndo() + SetFileName(xDOpen.FileName) + NewRecent(FileName) + SetIsSaved(True) + 'pIsSaved.Visible = Not IsSaved + End Sub + + Private Sub TBImportIBMSC_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBImportIBMSC.Click, mnImportIBMSC.Click + 'KMouseDown = -1 + ReDim SelectedNotes(-1) + KMouseOver = -1 + If ClosingPopSave() Then Return + + Dim xDOpen As New OpenFileDialog + xDOpen.Filter = Strings.FileType.IBMSC & "|*.ibmsc" + xDOpen.DefaultExt = "ibmsc" + xDOpen.InitialDirectory = IIf(ExcludeFileName(FileName) = "", InitPath, ExcludeFileName(FileName)) + + If xDOpen.ShowDialog = Windows.Forms.DialogResult.Cancel Then Return + InitPath = ExcludeFileName(xDOpen.FileName) + SetFileName("Imported_" & GetFileName(xDOpen.FileName)) + OpeniBMSC(xDOpen.FileName) + NewRecent(xDOpen.FileName) + SetIsSaved(False) + 'pIsSaved.Visible = Not IsSaved + End Sub + + Private Sub TBImportSM_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBImportSM.Click, mnImportSM.Click + 'KMouseDown = -1 + ReDim SelectedNotes(-1) + KMouseOver = -1 + If ClosingPopSave() Then Exit Sub + + Dim xDOpen As New OpenFileDialog + xDOpen.Filter = Strings.FileType.SM & "|*.sm" + xDOpen.DefaultExt = "sm" + xDOpen.InitialDirectory = IIf(ExcludeFileName(FileName) = "", InitPath, ExcludeFileName(FileName)) + + If xDOpen.ShowDialog = Windows.Forms.DialogResult.Cancel Then Exit Sub + If OpenSM(My.Computer.FileSystem.ReadAllText(xDOpen.FileName, TextEncoding)) Then Exit Sub + InitPath = ExcludeFileName(xDOpen.FileName) + SetFileName("Untitled.bms") + ClearUndo() + SetIsSaved(False) + 'pIsSaved.Visible = Not IsSaved + End Sub + + Private Sub TBSave_ButtonClick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBSave.ButtonClick, mnSave.Click + 'KMouseDown = -1 + ReDim SelectedNotes(-1) + KMouseOver = -1 + + If ExcludeFileName(FileName) = "" Then + Dim xDSave As New SaveFileDialog + xDSave.Filter = Strings.FileType._bms & "|*.bms;*.bme;*.bml;*.pms;*.txt|" & + Strings.FileType.BMS & "|*.bms|" & + Strings.FileType.BME & "|*.bme|" & + Strings.FileType.BML & "|*.bml|" & + Strings.FileType.PMS & "|*.pms|" & + Strings.FileType.TXT & "|*.txt|" & + Strings.FileType._all & "|*.*" + xDSave.DefaultExt = "bms" + xDSave.InitialDirectory = InitPath + + If xDSave.ShowDialog = Windows.Forms.DialogResult.Cancel Then Exit Sub + InitPath = ExcludeFileName(xDSave.FileName) + SetFileName(xDSave.FileName) + End If + Dim xStrAll As String = SaveBMS() + My.Computer.FileSystem.WriteAllText(FileName, xStrAll, False, TextEncoding) + NewRecent(FileName) + SetFileName(FileName) + SetIsSaved(True) + 'pIsSaved.Visible = Not IsSaved + If BeepWhileSaved Then Beep() + End Sub + + Private Sub TBSaveAs_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBSaveAs.Click, mnSaveAs.Click + 'KMouseDown = -1 + ReDim SelectedNotes(-1) + KMouseOver = -1 + + Dim xDSave As New SaveFileDialog + xDSave.Filter = Strings.FileType._bms & "|*.bms;*.bme;*.bml;*.pms;*.txt|" & + Strings.FileType.BMS & "|*.bms|" & + Strings.FileType.BME & "|*.bme|" & + Strings.FileType.BML & "|*.bml|" & + Strings.FileType.PMS & "|*.pms|" & + Strings.FileType.TXT & "|*.txt|" & + Strings.FileType._all & "|*.*" + xDSave.DefaultExt = "bms" + xDSave.InitialDirectory = IIf(ExcludeFileName(FileName) = "", InitPath, ExcludeFileName(FileName)) + + If xDSave.ShowDialog = Windows.Forms.DialogResult.Cancel Then Exit Sub + InitPath = ExcludeFileName(xDSave.FileName) + SetFileName(xDSave.FileName) + Dim xStrAll As String = SaveBMS() + My.Computer.FileSystem.WriteAllText(FileName, xStrAll, False, TextEncoding) + NewRecent(FileName) + SetFileName(FileName) + SetIsSaved(True) + 'pIsSaved.Visible = Not IsSaved + If BeepWhileSaved Then Beep() + End Sub + + Private Sub TBExport_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBExport.Click, mnExport.Click + 'KMouseDown = -1 + ReDim SelectedNotes(-1) + KMouseOver = -1 + + Dim xDSave As New SaveFileDialog + xDSave.Filter = Strings.FileType.IBMSC & "|*.ibmsc" + xDSave.DefaultExt = "ibmsc" + xDSave.InitialDirectory = IIf(ExcludeFileName(FileName) = "", InitPath, ExcludeFileName(FileName)) + If xDSave.ShowDialog = Windows.Forms.DialogResult.Cancel Then Exit Sub + + SaveiBMSC(xDSave.FileName) + 'My.Computer.FileSystem.WriteAllText(xDSave.FileName, xStrAll, False, TextEncoding) + NewRecent(FileName) + If BeepWhileSaved Then Beep() + End Sub + + + + Private Sub VSGotFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles MainPanelScroll.GotFocus, LeftPanelScroll.GotFocus, RightPanelScroll.GotFocus + PanelFocus = sender.Tag + spMain(PanelFocus).Focus() + End Sub + + Private Sub VSValueChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles MainPanelScroll.ValueChanged, LeftPanelScroll.ValueChanged, RightPanelScroll.ValueChanged + Dim iI As Integer = sender.Tag + + ' az: We got a wheel event when we're zooming in/out + If My.Computer.Keyboard.CtrlKeyDown Then + sender.Value = VSValue ' Undo the scroll + Exit Sub + End If + + If iI = PanelFocus And Not LastMouseDownLocation = New Point(-1, -1) And Not VSValue = -1 Then LastMouseDownLocation.Y += (VSValue - sender.Value) * gxHeight + PanelVScroll(iI) = sender.Value + + If spLock((iI + 1) Mod 3) Then + Dim xVS As Integer = PanelVScroll(iI) + spDiff(iI) + If xVS > 0 Then xVS = 0 + If xVS < MainPanelScroll.Minimum Then xVS = MainPanelScroll.Minimum + Select Case iI + Case 0 : MainPanelScroll.Value = xVS + Case 1 : RightPanelScroll.Value = xVS + Case 2 : LeftPanelScroll.Value = xVS + End Select + End If + + If spLock((iI + 2) Mod 3) Then + Dim xVS As Integer = PanelVScroll(iI) - spDiff((iI + 2) Mod 3) + If xVS > 0 Then xVS = 0 + If xVS < MainPanelScroll.Minimum Then xVS = MainPanelScroll.Minimum + Select Case iI + Case 0 : RightPanelScroll.Value = xVS + Case 1 : LeftPanelScroll.Value = xVS + Case 2 : MainPanelScroll.Value = xVS + End Select + End If + + spDiff(iI) = PanelVScroll((iI + 1) Mod 3) - PanelVScroll(iI) + spDiff((iI + 2) Mod 3) = PanelVScroll(iI) - PanelVScroll((iI + 2) Mod 3) + + VSValue = sender.Value + RefreshPanel(iI, spMain(iI).DisplayRectangle) + End Sub + + Private Sub cVSLock_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cVSLockL.CheckedChanged, cVSLock.CheckedChanged, cVSLockR.CheckedChanged + Dim iI As Integer = sender.Tag + spLock(iI) = sender.Checked + If Not spLock(iI) Then Return + + spDiff(iI) = PanelVScroll((iI + 1) Mod 3) - PanelVScroll(iI) + spDiff((iI + 2) Mod 3) = PanelVScroll(iI) - PanelVScroll((iI + 2) Mod 3) + + 'POHeaderB.Text = spDiff(0) & "_" & spDiff(1) & "_" & spDiff(2) + End Sub + + Private Sub HSGotFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles HS.GotFocus, HSL.GotFocus, HSR.GotFocus + PanelFocus = sender.Tag + spMain(PanelFocus).Focus() + End Sub + + Private Sub HSValueChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles HS.ValueChanged, HSL.ValueChanged, HSR.ValueChanged + Dim iI As Integer = sender.Tag + If Not LastMouseDownLocation = New Point(-1, -1) And Not HSValue = -1 Then LastMouseDownLocation.X += (HSValue - sender.Value) * gxWidth + PanelHScroll(iI) = sender.Value + HSValue = sender.Value + RefreshPanel(iI, spMain(iI).DisplayRectangle) + End Sub + + Private Sub TBSelect_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBSelect.Click, mnSelect.Click + TBSelect.Checked = True + TBWrite.Checked = False + TBTimeSelect.Checked = False + mnSelect.Checked = True + mnWrite.Checked = False + mnTimeSelect.Checked = False + + FStatus2.Visible = False + FStatus.Visible = True + + ShouldDrawTempNote = False + SelectedColumn = -1 + TempVPosition = -1 + TempLength = 0 + + vSelStart = MeasureBottom(MeasureAtDisplacement(-PanelVScroll(PanelFocus)) + 1) + vSelLength = 0 + + RefreshPanelAll() + POStatusRefresh() + End Sub + + Private Sub TBWrite_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBWrite.Click, mnWrite.Click + TBSelect.Checked = False + TBWrite.Checked = True + TBTimeSelect.Checked = False + mnSelect.Checked = False + mnWrite.Checked = True + mnTimeSelect.Checked = False + + FStatus2.Visible = False + FStatus.Visible = True + + ShouldDrawTempNote = True + SelectedColumn = -1 + TempVPosition = -1 + TempLength = 0 + + vSelStart = MeasureBottom(MeasureAtDisplacement(-PanelVScroll(PanelFocus)) + 1) + vSelLength = 0 + + RefreshPanelAll() + POStatusRefresh() + End Sub + + Private Sub TBPostEffects_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBTimeSelect.Click, mnTimeSelect.Click + TBSelect.Checked = False + TBWrite.Checked = False + TBTimeSelect.Checked = True + mnSelect.Checked = False + mnWrite.Checked = False + mnTimeSelect.Checked = True + + FStatus.Visible = False + FStatus2.Visible = True + + vSelMouseOverLine = 0 + ShouldDrawTempNote = False + SelectedColumn = -1 + TempVPosition = -1 + TempLength = 0 + ValidateSelection() + + Dim xI1 As Integer + For xI1 = 0 To UBound(Notes) + Notes(xI1).Selected = False + Next + RefreshPanelAll() + POStatusRefresh() + End Sub + + Private Sub CGHeight_ValueChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles CGHeight.ValueChanged + gxHeight = CSng(CGHeight.Value) + CGHeight2.Value = IIf(CGHeight.Value * 4 < CGHeight2.Maximum, CDec(CGHeight.Value * 4), CGHeight2.Maximum) + RefreshPanelAll() + End Sub + + Private Sub CGHeight2_Scroll(ByVal sender As Object, ByVal e As System.EventArgs) Handles CGHeight2.Scroll + CGHeight.Value = CGHeight2.Value / 4 + End Sub + + Private Sub CGWidth_ValueChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles CGWidth.ValueChanged + gxWidth = CSng(CGWidth.Value) + CGWidth2.Value = IIf(CGWidth.Value * 4 < CGWidth2.Maximum, CDec(CGWidth.Value * 4), CGWidth2.Maximum) + + HS.LargeChange = PMainIn.Width / gxWidth + If HS.Value > HS.Maximum - HS.LargeChange + 1 Then HS.Value = HS.Maximum - HS.LargeChange + 1 + HSL.LargeChange = PMainInL.Width / gxWidth + If HSL.Value > HSL.Maximum - HSL.LargeChange + 1 Then HSL.Value = HSL.Maximum - HSL.LargeChange + 1 + HSR.LargeChange = PMainInR.Width / gxWidth + If HSR.Value > HSR.Maximum - HSR.LargeChange + 1 Then HSR.Value = HSR.Maximum - HSR.LargeChange + 1 + + RefreshPanelAll() + End Sub + + Private Sub CGWidth2_Scroll(ByVal sender As Object, ByVal e As System.EventArgs) Handles CGWidth2.Scroll + CGWidth.Value = CGWidth2.Value / 4 + End Sub + + Private Sub CGDivide_ValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CGDivide.ValueChanged + gDivide = CGDivide.Value + RefreshPanelAll() + End Sub + Private Sub CGSub_ValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CGSub.ValueChanged + gSub = CGSub.Value + RefreshPanelAll() + End Sub + Private Sub BGSlash_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BGSlash.Click + Dim xd As Integer = Val(InputBox(Strings.Messages.PromptSlashValue, , gSlash)) + If xd = 0 Then Exit Sub + If xd > CGDivide.Maximum Then xd = CGDivide.Maximum + If xd < CGDivide.Minimum Then xd = CGDivide.Minimum + gSlash = xd + End Sub + + + Private Sub CGSnap_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CGSnap.CheckedChanged + gSnap = CGSnap.Checked + RefreshPanelAll() + End Sub + + + + Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick + Dim xI1 As Integer + + Select Case PanelFocus + Case 0 + With LeftPanelScroll + xI1 = .Value + (tempY / 5) / gxHeight + If xI1 > 0 Then xI1 = 0 + If xI1 < .Minimum Then xI1 = .Minimum + .Value = xI1 + End With + With HSL + xI1 = .Value + (tempX / 10) / gxWidth + If xI1 > .Maximum - .LargeChange + 1 Then xI1 = .Maximum - .LargeChange + 1 + If xI1 < .Minimum Then xI1 = .Minimum + .Value = xI1 + End With + + Case 1 + With MainPanelScroll + xI1 = .Value + (tempY / 5) / gxHeight + If xI1 > 0 Then xI1 = 0 + If xI1 < .Minimum Then xI1 = .Minimum + .Value = xI1 + End With + With HS + xI1 = .Value + (tempX / 10) / gxWidth + If xI1 > .Maximum - .LargeChange + 1 Then xI1 = .Maximum - .LargeChange + 1 + If xI1 < .Minimum Then xI1 = .Minimum + .Value = xI1 + End With + + Case 2 + With RightPanelScroll + xI1 = .Value + (tempY / 5) / gxHeight + If xI1 > 0 Then xI1 = 0 + If xI1 < .Minimum Then xI1 = .Minimum + .Value = xI1 + End With + With HSR + xI1 = .Value + (tempX / 10) / gxWidth + If xI1 > .Maximum - .LargeChange + 1 Then xI1 = .Maximum - .LargeChange + 1 + If xI1 < .Minimum Then xI1 = .Minimum + .Value = xI1 + End With + End Select + + Dim xMEArgs As New System.Windows.Forms.MouseEventArgs(Windows.Forms.MouseButtons.Left, 0, MouseMoveStatus.X, MouseMoveStatus.Y, 0) + PMainInMouseMove(spMain(PanelFocus), xMEArgs) + + End Sub + + Private Sub TimerMiddle_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TimerMiddle.Tick + If Not MiddleButtonClicked Then TimerMiddle.Enabled = False : Return + + Dim xI1 As Integer + + Select Case PanelFocus + Case 0 + With LeftPanelScroll + xI1 = .Value + (Cursor.Position.Y - MiddleButtonLocation.Y) / 5 / gxHeight + If xI1 > 0 Then xI1 = 0 + If xI1 < .Minimum Then xI1 = .Minimum + .Value = xI1 + End With + With HSL + xI1 = .Value + (Cursor.Position.X - MiddleButtonLocation.X) / 5 / gxWidth + If xI1 > .Maximum - .LargeChange + 1 Then xI1 = .Maximum - .LargeChange + 1 + If xI1 < .Minimum Then xI1 = .Minimum + .Value = xI1 + End With + + Case 1 + With MainPanelScroll + xI1 = .Value + (Cursor.Position.Y - MiddleButtonLocation.Y) / 5 / gxHeight + If xI1 > 0 Then xI1 = 0 + If xI1 < .Minimum Then xI1 = .Minimum + .Value = xI1 + End With + With HS + xI1 = .Value + (Cursor.Position.X - MiddleButtonLocation.X) / 5 / gxWidth + If xI1 > .Maximum - .LargeChange + 1 Then xI1 = .Maximum - .LargeChange + 1 + If xI1 < .Minimum Then xI1 = .Minimum + .Value = xI1 + End With + + Case 2 + With RightPanelScroll + xI1 = .Value + (Cursor.Position.Y - MiddleButtonLocation.Y) / 5 / gxHeight + If xI1 > 0 Then xI1 = 0 + If xI1 < .Minimum Then xI1 = .Minimum + .Value = xI1 + End With + With HSR + xI1 = .Value + (Cursor.Position.X - MiddleButtonLocation.X) / 5 / gxWidth + If xI1 > .Maximum - .LargeChange + 1 Then xI1 = .Maximum - .LargeChange + 1 + If xI1 < .Minimum Then xI1 = .Minimum + .Value = xI1 + End With + End Select + + Dim xMEArgs As New System.Windows.Forms.MouseEventArgs(Windows.Forms.MouseButtons.Left, 0, MouseMoveStatus.X, MouseMoveStatus.Y, 0) + PMainInMouseMove(spMain(PanelFocus), xMEArgs) + End Sub + + Private Sub ValidateWavListView() + Try + Dim xRect As Rectangle = LWAV.GetItemRectangle(LWAV.SelectedIndex) + If xRect.Top + xRect.Height > LWAV.DisplayRectangle.Height Then SendMessage(LWAV.Handle, &H115, 1, 0) + Catch ex As Exception + End Try + End Sub + + Private Sub LWAV_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles LWAV.Click + If TBWrite.Checked Then FSW.Text = C10to36(LWAV.SelectedIndex + 1) + + PreviewNote("", True) + If Not PreviewOnClick Then Exit Sub + If hWAV(LWAV.SelectedIndex + 1) = "" Then Exit Sub + + Dim xFileLocation As String = IIf(ExcludeFileName(FileName) = "", InitPath, ExcludeFileName(FileName)) & "\" & hWAV(LWAV.SelectedIndex + 1) + PreviewNote(xFileLocation, False) + End Sub + + Private Sub LWAV_DoubleClick(ByVal sender As Object, ByVal e As System.EventArgs) Handles LWAV.DoubleClick + Dim xDWAV As New OpenFileDialog + xDWAV.DefaultExt = "wav" + xDWAV.Filter = Strings.FileType._wave & "|*.wav;*.ogg;*.mp3|" & + Strings.FileType.WAV & "|*.wav|" & + Strings.FileType.OGG & "|*.ogg|" & + Strings.FileType.MP3 & "|*.mp3|" & + Strings.FileType._all & "|*.*" + xDWAV.InitialDirectory = IIf(ExcludeFileName(FileName) = "", InitPath, ExcludeFileName(FileName)) + + If xDWAV.ShowDialog = Windows.Forms.DialogResult.Cancel Then Exit Sub + InitPath = ExcludeFileName(xDWAV.FileName) + hWAV(LWAV.SelectedIndex + 1) = GetFileName(xDWAV.FileName) + LWAV.Items.Item(LWAV.SelectedIndex) = C10to36(LWAV.SelectedIndex + 1) & ": " & GetFileName(xDWAV.FileName) + If IsSaved Then SetIsSaved(False) + End Sub + + Private Sub LWAV_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles LWAV.KeyDown + Select Case e.KeyCode + Case Keys.Space + LWAV_Click(sender, e) + Case Keys.Enter + LWAV_DoubleClick(sender, e) + Case Keys.Delete + hWAV(LWAV.SelectedIndex + 1) = "" + LWAV.Items.Item(LWAV.SelectedIndex) = C10to36(LWAV.SelectedIndex + 1) & ": " + If IsSaved Then SetIsSaved(False) + End Select + End Sub + + Private Sub TBErrorCheck_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBErrorCheck.Click, mnErrorCheck.Click + ErrorCheck = sender.Checked + TBErrorCheck.Checked = ErrorCheck + mnErrorCheck.Checked = ErrorCheck + TBErrorCheck.Image = IIf(TBErrorCheck.Checked, My.Resources.x16CheckError, My.Resources.x16CheckErrorN) + mnErrorCheck.Image = IIf(TBErrorCheck.Checked, My.Resources.x16CheckError, My.Resources.x16CheckErrorN) + RefreshPanelAll() + End Sub + + Private Sub TBPreviewOnClick_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBPreviewOnClick.Click, mnPreviewOnClick.Click + PreviewNote("", True) + PreviewOnClick = sender.Checked + TBPreviewOnClick.Checked = PreviewOnClick + mnPreviewOnClick.Checked = PreviewOnClick + TBPreviewOnClick.Image = IIf(PreviewOnClick, My.Resources.x16PreviewOnClick, My.Resources.x16PreviewOnClickN) + mnPreviewOnClick.Image = IIf(PreviewOnClick, My.Resources.x16PreviewOnClick, My.Resources.x16PreviewOnClickN) + End Sub + + 'Private Sub TBPreviewErrorCheck_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) + ' PreviewErrorCheck = TBPreviewErrorCheck.Checked + ' TBPreviewErrorCheck.Image = IIf(PreviewErrorCheck, My.Resources.x16PreviewCheck, My.Resources.x16PreviewCheckN) + 'End Sub + + Private Sub TBShowFileName_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBShowFileName.Click, mnShowFileName.Click + ShowFileName = sender.Checked + TBShowFileName.Checked = ShowFileName + mnShowFileName.Checked = ShowFileName + TBShowFileName.Image = IIf(ShowFileName, My.Resources.x16ShowFileName, My.Resources.x16ShowFileNameN) + mnShowFileName.Image = IIf(ShowFileName, My.Resources.x16ShowFileName, My.Resources.x16ShowFileNameN) + RefreshPanelAll() + End Sub + + Private Sub TBCut_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBCut.Click, mnCut.Click + Dim xUndo As UndoRedo.LinkedURCmd = Nothing + Dim xRedo As UndoRedo.LinkedURCmd = New UndoRedo.Void + Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo + Me.RedoRemoveNoteSelected(True, xUndo, xRedo) + 'Dim xRedo As String = sCmdKDs() + 'Dim xUndo As String = sCmdKs(True) + + CopyNotes(False) + RemoveNotes(False) + AddUndo(xUndo, xBaseRedo.Next) + + SortByVPositionInsertion() + UpdatePairing() + CalculateTotalPlayableNotes() + RefreshPanelAll() + POStatusRefresh() + CalculateGreatestVPosition() + End Sub + + Private Sub TBCopy_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBCopy.Click, mnCopy.Click + CopyNotes() + RefreshPanelAll() + POStatusRefresh() + End Sub + + Private Sub TBPaste_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBPaste.Click, mnPaste.Click + AddNotesFromClipboard() + + Dim xUndo As UndoRedo.LinkedURCmd = Nothing + Dim xRedo As UndoRedo.LinkedURCmd = New UndoRedo.Void + Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo + Me.RedoAddNoteSelected(True, xUndo, xRedo) + AddUndo(xUndo, xBaseRedo.Next) + + 'AddUndo(sCmdKDs(), sCmdKs(True)) + + SortByVPositionInsertion() + UpdatePairing() + CalculateTotalPlayableNotes() + RefreshPanelAll() + POStatusRefresh() + CalculateGreatestVPosition() + End Sub + + 'Private Function pArgPath(ByVal I As Integer) + ' Return Mid(pArgs(I), 1, InStr(pArgs(I), vbCrLf) - 1) + 'End Function + + Private Function GetFileName(ByVal s As String) As String + Dim fslash As Integer = InStrRev(s, "/") + Dim bslash As Integer = InStrRev(s, "\") + Return Mid(s, IIf(fslash > bslash, fslash, bslash) + 1) + End Function + + Private Function ExcludeFileName(ByVal s As String) As String + Dim fslash As Integer = InStrRev(s, "/") + Dim bslash As Integer = InStrRev(s, "\") + If (bslash Or fslash) = 0 Then Return "" + Return Mid(s, 1, IIf(fslash > bslash, fslash, bslash) - 1) + End Function + + Private Sub PlayerMissingPrompt() + Dim xArg As MainWindow.PlayerArguments = pArgs(CurrentPlayer) + MsgBox(Strings.Messages.CannotFind.Replace("{}", PrevCodeToReal(xArg.Path)) & vbCrLf & + Strings.Messages.PleaseRespecifyPath, MsgBoxStyle.Critical, Strings.Messages.PlayerNotFound) + + Dim xDOpen As New OpenFileDialog + xDOpen.InitialDirectory = IIf(ExcludeFileName(PrevCodeToReal(xArg.Path)) = "", + My.Application.Info.DirectoryPath, + ExcludeFileName(PrevCodeToReal(xArg.Path))) + xDOpen.FileName = PrevCodeToReal(xArg.Path) + xDOpen.Filter = Strings.FileType.EXE & "|*.exe" + xDOpen.DefaultExt = "exe" + If xDOpen.ShowDialog = Windows.Forms.DialogResult.Cancel Then Exit Sub + + 'pArgs(CurrentPlayer) = Replace(xDOpen.FileName, My.Application.Info.DirectoryPath, "") & _ + ' Mid(pArgs(CurrentPlayer), InStr(pArgs(CurrentPlayer), vbCrLf)) + 'xStr = Split(pArgs(CurrentPlayer), vbCrLf) + pArgs(CurrentPlayer).Path = Replace(xDOpen.FileName, My.Application.Info.DirectoryPath, "") + xArg = pArgs(CurrentPlayer) + End Sub + + Private Sub TBPlay_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBPlay.Click, mnPlay.Click + 'Dim xStr() As String = Split(pArgs(CurrentPlayer), vbCrLf) + Dim xArg As MainWindow.PlayerArguments = pArgs(CurrentPlayer) + + If Not File.Exists(PrevCodeToReal(xArg.Path)) Then + PlayerMissingPrompt() + xArg = pArgs(CurrentPlayer) + End If + + ' az: Treat it like we cancelled the operation + If Not File.Exists(PrevCodeToReal(xArg.Path)) Then + Exit Sub + End If + + Dim xStrAll As String = SaveBMS() + Dim xFileName As String = IIf(Not PathIsValid(FileName), + IIf(InitPath = "", My.Application.Info.DirectoryPath, InitPath), + ExcludeFileName(FileName)) & "\___TempBMS.bmsc" + My.Computer.FileSystem.WriteAllText(xFileName, xStrAll, False, TextEncoding) + + AddTempFileList(xFileName) + System.Diagnostics.Process.Start(PrevCodeToReal(xArg.Path), PrevCodeToReal(xArg.aHere)) + End Sub + + Private Sub TBPlayB_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBPlayB.Click, mnPlayB.Click + 'Dim xStr() As String = Split(pArgs(CurrentPlayer), vbCrLf) + Dim xArg As MainWindow.PlayerArguments = pArgs(CurrentPlayer) + + If Not File.Exists(PrevCodeToReal(xArg.Path)) Then + PlayerMissingPrompt() + xArg = pArgs(CurrentPlayer) + End If + + If Not File.Exists(PrevCodeToReal(xArg.Path)) Then + Exit Sub + End If + + Dim xStrAll As String = SaveBMS() + Dim xFileName As String = IIf(Not PathIsValid(FileName), + IIf(InitPath = "", My.Application.Info.DirectoryPath, InitPath), + ExcludeFileName(FileName)) & "\___TempBMS.bmsc" + My.Computer.FileSystem.WriteAllText(xFileName, xStrAll, False, TextEncoding) + + AddTempFileList(xFileName) + + System.Diagnostics.Process.Start(PrevCodeToReal(xArg.Path), PrevCodeToReal(xArg.aBegin)) + End Sub + + Private Sub TBStop_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBStop.Click, mnStop.Click + 'Dim xStr() As String = Split(pArgs(CurrentPlayer), vbCrLf) + Dim xArg As MainWindow.PlayerArguments = pArgs(CurrentPlayer) + + If Not File.Exists(PrevCodeToReal(xArg.Path)) Then + PlayerMissingPrompt() + xArg = pArgs(CurrentPlayer) + End If + + If Not File.Exists(PrevCodeToReal(xArg.Path)) Then + Exit Sub + End If + + System.Diagnostics.Process.Start(PrevCodeToReal(xArg.Path), PrevCodeToReal(xArg.aStop)) + End Sub + + Private Sub AddTempFileList(ByVal s As String) + Dim xAdd As Boolean = True + If pTempFileNames IsNot Nothing Then + For Each xStr1 As String In pTempFileNames + If xStr1 = s Then xAdd = False : Exit For + Next + End If + + If xAdd Then + ReDim Preserve pTempFileNames(UBound(pTempFileNames) + 1) + pTempFileNames(UBound(pTempFileNames)) = s + End If + End Sub + + Private Sub TBStatistics_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBStatistics.Click, mnStatistics.Click + SortByVPositionInsertion() + UpdatePairing() + + Dim data(6, 5) As Integer + For i As Integer = 1 To UBound(Notes) + With Notes(i) + Dim row As Integer = -1 + Select Case .ColumnIndex + ' Case niSCROLL : row = 0 + Case niBPM : row = 0 + Case niSTOP : row = 1 + Case niA1, niA2, niA3, niA4, niA5, niA6, niA7, niA8 : row = 2 + Case niD1, niD2, niD3, niD4, niD5, niD6, niD7, niD8 : row = 3 + Case Is >= niB : row = 4 + Case Else : row = 5 + End Select + + +StartCount: If Not NTInput Then + If Not .LongNote Then data(row, 0) += 1 + If .LongNote Then data(row, 1) += 1 + If .Value \ 10000 = LnObj Then data(row, 2) += 1 + If .Hidden Then data(row, 3) += 1 + If .HasError Then data(row, 4) += 1 + data(row, 5) += 1 + + Else + Dim noteUnit As Integer = 1 + If .Length = 0 Then data(row, 0) += 1 + If .Length <> 0 Then data(row, 1) += 2 : noteUnit = 2 + + If .Value \ 10000 = LnObj Then data(row, 2) += noteUnit + If .Hidden Then data(row, 3) += noteUnit + If .HasError Then data(row, 4) += noteUnit + data(row, 5) += noteUnit + + End If + + If row <> 6 Then row = 6 : GoTo StartCount + End With + Next + + Dim dStat As New dgStatisticsLegacy(data) + dStat.ShowDialog() + End Sub + + Private Sub TBStatisticsAdvanced_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnStatisticsAdvanced.Click + SortByVPositionInsertion() + UpdatePairing() + Dim rows = 26 - 2 ' TableLayoutPanel1.RowCount doesn't work + Dim cols = 8 - 2 ' Size of tables including names sub 2 + Dim Labels As New Strings.fStatistics() + Dim rowLabels = {Labels.lSCROLL, Labels.lBPM, Labels.lSTOP, Labels.lA1, Labels.lA2, Labels.lA3, Labels.lA4, Labels.lA5, Labels.lA6, Labels.lA7, Labels.lA8, Labels.lD1, Labels.lD2, Labels.lD3, Labels.lD4, Labels.lD5, Labels.lD6, Labels.lD7, Labels.lD8, Labels.lA, Labels.lD, Labels.lBGA, Labels.lBGM, Labels.lNotes, Labels.lTotal} + Dim colLabels = {Labels.lShort, Labels.lLong, Labels.lLnObj, Labels.lHidden, Labels.lLandmines, Labels.lErrors, Labels.lTotal} + Dim data(rows, cols) As Integer + + For i As Integer = 1 To UBound(Notes) + With Notes(i) + Dim row As Integer + Select Case .ColumnIndex + Case niSCROLL : row = 1 - 1 + Case niBPM : row = 2 - 1 + Case niSTOP : row = 3 - 1 + Case niA1 : row = 4 - 1 + Case niA2 : row = 5 - 1 + Case niA3 : row = 6 - 1 + Case niA4 : row = 7 - 1 + Case niA5 : row = 8 - 1 + Case niA6 : row = 9 - 1 + Case niA7 : row = 10 - 1 + Case niA8 : row = 11 - 1 + Case niD1 : row = 12 - 1 + Case niD2 : row = 13 - 1 + Case niD3 : row = 14 - 1 + Case niD4 : row = 15 - 1 + Case niD5 : row = 16 - 1 + Case niD6 : row = 17 - 1 + Case niD7 : row = 18 - 1 + Case niD8 : row = 19 - 1 + Case Is >= niB : row = 23 - 1 + Case Else : row = 22 - 1 + End Select + + +StartCount: If Not NTInput Then + If Not (.LongNote Or .Hidden Or .Landmine Or .Hidden Or .Value \ 10000 = LnObj) Then data(row, 0) += 1 + If .LongNote Then data(row, 1) += 1 + If .Value \ 10000 = LnObj Then data(row, 2) += 1 + If .Hidden Then data(row, 3) += 1 + If .Landmine Then data(row, 4) += 1 + If .HasError Then data(row, 5) += 1 + + Else + If Not (.LongNote Or .Hidden Or .Landmine Or .Hidden Or .Value \ 10000 = LnObj) Then data(row, 0) += 1 + If .Length <> 0 Then data(row, 1) += 1 + If .Value \ 10000 = LnObj Then data(row, 2) += 1 + If .Hidden Then data(row, 3) += 1 + If .Landmine Then data(row, 4) += 1 + If .HasError Then data(row, 5) += 1 + + End If + + End With + Next + + ' Calculate Total notes on column and row + For r As Integer = 0 To rows - 1 + For c As Integer = 0 To cols - 1 + data(r, cols) += data(r, c) ' Total in row + + ' Ignore rows "A1-A8" and "D1-D8" + Select Case r + Case 19 To 20 : Continue For + Case Else : data(rows, c) += data(r, c) ' Total in column + End Select + + Select Case r + Case 3 To 10 : data(19, c) += data(r, c) : data(23, c) += data(r, c) + Case 11 To 18 : data(20, c) += data(r, c) : data(23, c) += data(r, c) + End Select + Next + Next + data(rows, cols) = UBound(Notes) + ' Change to the whole table cause more convenient + Dim dStat As New dgStatistics(data, rowLabels, colLabels) + dStat.ShowDialog() + End Sub + + ''' + ''' Remark: Pls sort and updatepairing before this process. + ''' + + Private Sub CalculateTotalPlayableNotes() + Dim xI1 As Integer + Dim xIAll As Integer = 0 + + If Not NTInput Then + For xI1 = 1 To UBound(Notes) + If Notes(xI1).ColumnIndex >= niA1 And Notes(xI1).ColumnIndex <= niD8 Then xIAll += 1 + Next + + Else + For xI1 = 1 To UBound(Notes) + If Notes(xI1).ColumnIndex >= niA1 And Notes(xI1).ColumnIndex <= niD8 Then + If Not (Notes(xI1).LongNote Or Notes(xI1).Hidden Or Notes(xI1).Landmine Or Notes(xI1).Hidden Or Notes(xI1).Value \ 10000 = LnObj) Then xIAll += 1 + ' If Notes(xI1).Length <> 0 Then xIAll += 1 + End If + Next + End If + + TBTotalValue.Text = xIAll * 7.605 / (0.01 * xIAll + 6.5) + TBStatistics.Text = xIAll + End Sub + + Public Function GetMouseVPosition(Optional snap As Boolean = True) + Dim panHeight = spMain(PanelFocus).Height + Dim panDisplacement = PanelVScroll(PanelFocus) + Dim vpos = (panHeight - panDisplacement * gxHeight - MouseMoveStatus.Y - 1) / gxHeight + If snap Then + Return SnapToGrid(vpos) + Else + Return vpos + End If + End Function + + Private Sub POStatusRefresh() + + If TBSelect.Checked Then + Dim xI1 As Integer = KMouseOver + If xI1 < 0 Then + + TempVPosition = GetMouseVPosition(gSnap) + + SelectedColumn = GetColumnAtX(MouseMoveStatus.X, PanelHScroll(PanelFocus)) + + Dim xMeasure As Integer = MeasureAtDisplacement(TempVPosition) + Dim xMLength As Double = MeasureLength(xMeasure) + Dim xVposMod As Double = TempVPosition - MeasureBottom(xMeasure) + Dim xGCD As Double = GCD(IIf(xVposMod = 0, xMLength, xVposMod), xMLength) + + FSP1.Text = (xVposMod * gDivide / 192).ToString & " / " & (xMLength * gDivide / 192).ToString & " " + FSP2.Text = xVposMod.ToString & " / " & xMLength & " " + FSP3.Text = CInt(xVposMod / xGCD).ToString & " / " & CInt(xMLength / xGCD).ToString & " " + FSP4.Text = TempVPosition.ToString() & " " + TimeStatusLabel.Text = GetTimeFromVPosition(TempVPosition).ToString("F4") + FSC.Text = nTitle(SelectedColumn) + FSW.Text = "" + FSM.Text = Add3Zeros(xMeasure) + FST.Text = "" + FSH.Text = "" + FSE.Text = "" + + Else + Dim xMeasure As Integer = MeasureAtDisplacement(Notes(xI1).VPosition) + Dim xMLength As Double = MeasureLength(xMeasure) + Dim xVposMod As Double = Notes(xI1).VPosition - MeasureBottom(xMeasure) + Dim xGCD As Double = GCD(IIf(xVposMod = 0, xMLength, xVposMod), xMLength) + + FSP1.Text = (xVposMod * gDivide / 192).ToString & " / " & (xMLength * gDivide / 192).ToString & " " + FSP2.Text = xVposMod.ToString & " / " & xMLength & " " + FSP3.Text = CInt(xVposMod / xGCD).ToString & " / " & CInt(xMLength / xGCD).ToString & " " + FSP4.Text = Notes(xI1).VPosition.ToString() & " " + TimeStatusLabel.Text = GetTimeFromVPosition(TempVPosition).ToString("F4") + FSC.Text = nTitle(Notes(xI1).ColumnIndex) + FSW.Text = IIf(IsColumnNumeric(Notes(xI1).ColumnIndex), + Notes(xI1).Value / 10000, + C10to36(Notes(xI1).Value \ 10000)) + FSM.Text = Add3Zeros(xMeasure) + FST.Text = IIf(NTInput, Strings.StatusBar.Length & " = " & Notes(xI1).Length, IIf(Notes(xI1).LongNote, Strings.StatusBar.LongNote, "")) + FSH.Text = IIf(Notes(xI1).Hidden, Strings.StatusBar.Hidden, "") + FSE.Text = IIf(Notes(xI1).HasError, Strings.StatusBar.Err, "") + + End If + + ElseIf TBWrite.Checked Then + If SelectedColumn < 0 Then Exit Sub + + Dim xMeasure As Integer = MeasureAtDisplacement(TempVPosition) + Dim xMLength As Double = MeasureLength(xMeasure) + Dim xVposMod As Double = TempVPosition - MeasureBottom(xMeasure) + Dim xGCD As Double = GCD(IIf(xVposMod = 0, xMLength, xVposMod), xMLength) + + FSP1.Text = (xVposMod * gDivide / 192).ToString & " / " & (xMLength * gDivide / 192).ToString & " " + FSP2.Text = xVposMod.ToString & " / " & xMLength & " " + FSP3.Text = CInt(xVposMod / xGCD).ToString & " / " & CInt(xMLength / xGCD).ToString & " " + FSP4.Text = TempVPosition.ToString() & " " + TimeStatusLabel.Text = GetTimeFromVPosition(TempVPosition).ToString("F4") + FSC.Text = nTitle(SelectedColumn) + FSW.Text = C10to36(LWAV.SelectedIndex + 1) + FSM.Text = Add3Zeros(xMeasure) + FST.Text = IIf(NTInput, TempLength, IIf(My.Computer.Keyboard.ShiftKeyDown, Strings.StatusBar.LongNote, "")) + FSH.Text = IIf(My.Computer.Keyboard.CtrlKeyDown, Strings.StatusBar.Hidden, "") + + ElseIf TBTimeSelect.Checked Then + FSSS.Text = vSelStart + FSSL.Text = vSelLength + FSSH.Text = vSelHalf + + End If + FStatus.Invalidate() + End Sub + + Private Function GetTimeFromVPosition(vpos As Double) As Double + Dim timing_notes = (From note In Notes + Where note.ColumnIndex = niBPM Or note.ColumnIndex = niSTOP + Group By Column = note.ColumnIndex + Into NoteGroups = Group).ToDictionary(Function(x) x.Column, Function(x) x.NoteGroups) + + Dim bpm_notes = timing_notes.Item(niBPM) + + Dim stop_notes As IEnumerable(Of Note) = Nothing + + If timing_notes.ContainsKey(niSTOP) Then + stop_notes = timing_notes.Item(niSTOP) + End If + + + Dim stop_contrib As Double + Dim bpm_contrib As Double + + For i = 0 To bpm_notes.Count() - 1 + ' az: sum bpm contribution first + Dim duration = 0.0 + Dim current_note = bpm_notes.ElementAt(i) + Dim notevpos = Math.Max(0, current_note.VPosition) + + If i + 1 <> bpm_notes.Count() Then + Dim next_note = bpm_notes.ElementAt(i + 1) + duration = next_note.VPosition - notevpos + Else + duration = vpos - notevpos + End If + + Dim current_bps = 60 / (current_note.Value / 10000) + bpm_contrib += current_bps * duration / 48 + + If stop_notes Is Nothing Then Continue For + + Dim stops = From stp In stop_notes + Where stp.VPosition >= notevpos And + stp.VPosition < notevpos + duration + + Dim stop_beats = stops.Sum(Function(x) x.Value / 10000.0) / 48 + stop_contrib += current_bps * stop_beats + + Next + + Return stop_contrib + bpm_contrib + End Function + + Private Sub POBMirror_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles POBMirror.Click + Dim xI1 As Integer + Dim xI2 As Integer + Dim xUndo As UndoRedo.LinkedURCmd = Nothing + Dim xRedo As UndoRedo.LinkedURCmd = New UndoRedo.Void + Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo + 'xRedo &= sCmdKM(niA1, .VPosition, .Value, IIf(NTInput, .Length, .LongNote), .Hidden, RealColumnToEnabled(niA7) - RealColumnToEnabled(niA1), 0, True) & vbCrLf + 'xUndo &= sCmdKM(niA7, .VPosition, .Value, IIf(NTInput, .Length, .LongNote), .Hidden, RealColumnToEnabled(niA1) - RealColumnToEnabled(niA7), 0, True) & vbCrLf + + ' Array 0: Unmodified array + ' Array 1: Modified array based on range + ' Array R: Array 1 reversed + Dim xniArray0 = New Integer() {niA1, niA2, niA3, niA4, niA5, niA6, niA7, niA8, niD1, niD2, niD3, niD4, niD5, niD6, niD7, niD8} + ' Dim xniArray1 = Integer() ' xniArray0 + + ' New function: Declare an array to see the range of selected notes. B columns ignored. + + Dim xRangeL As Integer = niB ' Big number + Dim xRangeR As Integer = 0 ' Smol number + + ' Range finder + For xI1 = 1 To UBound(Notes) + If Not Notes(xI1).Selected Then Continue For + If xRangeL > Notes(xI1).ColumnIndex Then xRangeL = Notes(xI1).ColumnIndex + If xRangeR < Notes(xI1).ColumnIndex Then xRangeR = Notes(xI1).ColumnIndex + Next + + ' Modify xniArray based on range + ' Out of range + If xRangeL > niD8 Or xRangeR < niA1 Then GoTo DoNothing + + ' Semi-in Range + ' Cut off left side + If xRangeL < niA1 Then + xRangeL = 0 + GoTo MirrorSkip1 + End If + + For xI1 = 0 To xniArray0.Length + If xniArray0(xI1) = xRangeL Then + xRangeL = xI1 + Exit For + End If + Next + +MirrorSkip1: + ' Cut off right side + If xRangeR > niD8 Then + xRangeR = xniArray0.Length + GoTo MirrorSkip2 + End If + + For xI1 = 0 To xniArray0.Length + If xniArray0(xI1) = xRangeR Then + xRangeR = xI1 + 1 + Exit For + End If + Next + +MirrorSkip2: + + Dim xniArray1(xRangeR - xRangeL - 1) + For xI1 = 0 To xRangeR - xRangeL - 1 + xniArray1(xI1) = xniArray0(xI1 + xRangeL) + Next + + Dim xniArrayR = xniArray1.Reverse() + Dim xniArrayLen = xniArray1.Length + + Dim xCol As Integer + For xI1 = 1 To UBound(Notes) + If Not Notes(xI1).Selected Then Continue For + + xCol = Notes(xI1).ColumnIndex + ' MsgBox("Test" & "xCol: " & xCol & " xI1: " & xI1) + For xI2 = 0 To xniArrayLen - 1 + ' MsgBox("Test 2 xI2: " & xI2) + If xCol = xniArray1(xI2) Then + xCol = xniArrayR(xI2) + Exit For + End If + + Next + + Me.RedoMoveNote(Notes(xI1), xCol, Notes(xI1).VPosition, xUndo, xRedo) + Notes(xI1).ColumnIndex = xCol + Next + +DoNothing: + + AddUndo(xUndo, xBaseRedo.Next) + UpdatePairing() + RefreshPanelAll() + End Sub + + + Private Sub POBFlip_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles POBFlip.Click + Dim xI1 As Integer + Dim xI2 As Integer + Dim xUndo As UndoRedo.LinkedURCmd = Nothing + Dim xRedo As UndoRedo.LinkedURCmd = New UndoRedo.Void + Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo + + ' Array 1: Unmodified array + ' Array R: Flipped array + Dim xniArray1 = New Integer() {niA1, niA2, niA3, niA4, niA5, niA6, niA7, niA8, niD1, niD2, niD3, niD4, niD5, niD6, niD7, niD8} + Dim xniArrayR = New Integer() {niD8, niD1, niD2, niD3, niD4, niD5, niD6, niD7, niA2, niA3, niA4, niA5, niA6, niA7, niA8, niA1} + + Dim xniArrayLen = xniArray1.Length + + Dim xCol As Integer + For xI1 = 1 To UBound(Notes) + If Not Notes(xI1).Selected Then Continue For + + xCol = Notes(xI1).ColumnIndex + For xI2 = 0 To xniArrayLen - 1 + If xCol = xniArray1(xI2) Then + xCol = xniArrayR(xI2) + Exit For + End If + + Next + + Me.RedoMoveNote(Notes(xI1), xCol, Notes(xI1).VPosition, xUndo, xRedo) + Notes(xI1).ColumnIndex = xCol + Next + + AddUndo(xUndo, xBaseRedo.Next) + UpdatePairing() + RefreshPanelAll() + End Sub + + Private Sub POBRandom_Click(sender As Object, e As EventArgs) Handles POBRandom.Click + Dim xI1 As Integer + Dim xI2 As Integer + Dim xUndo As UndoRedo.LinkedURCmd = Nothing + Dim xRedo As UndoRedo.LinkedURCmd = New UndoRedo.Void + Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo + 'xRedo &= sCmdKM(niA1, .VPosition, .Value, IIf(NTInput, .Length, .LongNote), .Hidden, RealColumnToEnabled(niA7) - RealColumnToEnabled(niA1), 0, True) & vbCrLf + 'xUndo &= sCmdKM(niA7, .VPosition, .Value, IIf(NTInput, .Length, .LongNote), .Hidden, RealColumnToEnabled(niA1) - RealColumnToEnabled(niA7), 0, True) & vbCrLf + + ' Array 0: Unmodified array + ' Array 1: Modified array based on range + ' Array R: Array 1 reversed + Dim xniArray0 = New Integer() {niA1, niA2, niA3, niA4, niA5, niA6, niA7, niA8, niD1, niD2, niD3, niD4, niD5, niD6, niD7, niD8} + ' Dim xniArray1 = Integer() ' xniArray0 + + ' New function: Declare an array to see the range of selected notes. B columns ignored. + + Dim xRangeL As Integer = niB ' Big number + Dim xRangeR As Integer = 0 ' Smol number + + ' Range finder + For xI1 = 1 To UBound(Notes) + If Not Notes(xI1).Selected Then Continue For + If xRangeL > Notes(xI1).ColumnIndex Then xRangeL = Notes(xI1).ColumnIndex + If xRangeR < Notes(xI1).ColumnIndex Then xRangeR = Notes(xI1).ColumnIndex + Next + + ' Modify xniArray based on range + ' Out of range + If xRangeL > niD8 Or xRangeR < niA1 Then GoTo DoNothing + + ' Semi-in Range + ' Cut off left side + If xRangeL < niA1 Then + xRangeL = 0 + GoTo Skip1 + End If + + For xI1 = 0 To xniArray0.Length + If xniArray0(xI1) = xRangeL Then + xRangeL = xI1 + Exit For + End If + Next + +Skip1: + ' Cut off right side + If xRangeR > niD8 Then + xRangeR = xniArray0.Length + GoTo Skip2 + End If + + For xI1 = 0 To xniArray0.Length + If xniArray0(xI1) = xRangeR Then + xRangeR = xI1 + 1 + Exit For + End If + Next + +Skip2: + + Dim xniArray1(xRangeR - xRangeL - 1) + For xI1 = 0 To xRangeR - xRangeL - 1 + xniArray1(xI1) = xniArray0(xI1 + xRangeL) + Next + + Dim xniArrayLen = xniArray1.Length + ' xniArrayR: Randomized array + Dim xniArrayR = xniArray1.Clone() + Shuffle(xniArrayR, xniArrayLen) + + Dim xCol As Integer + For xI1 = 1 To UBound(Notes) + If Not Notes(xI1).Selected Then Continue For + + xCol = Notes(xI1).ColumnIndex + For xI2 = 0 To xniArrayLen - 1 + If xCol = xniArray1(xI2) Then + xCol = xniArrayR(xI2) + Exit For + End If + + Next + + Me.RedoMoveNote(Notes(xI1), xCol, Notes(xI1).VPosition, xUndo, xRedo) + Notes(xI1).ColumnIndex = xCol + Next + +DoNothing: + + AddUndo(xUndo, xBaseRedo.Next) + UpdatePairing() + RefreshPanelAll() + End Sub + + Private Sub POBSRandom_Click(sender As Object, e As EventArgs) Handles POBSRandom.Click + Dim xI1 As Integer + Dim xI2 As Integer + Dim xUndo As UndoRedo.LinkedURCmd = Nothing + Dim xRedo As UndoRedo.LinkedURCmd = New UndoRedo.Void + Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo + 'xRedo &= sCmdKM(niA1, .VPosition, .Value, IIf(NTInput, .Length, .LongNote), .Hidden, RealColumnToEnabled(niA7) - RealColumnToEnabled(niA1), 0, True) & vbCrLf + 'xUndo &= sCmdKM(niA7, .VPosition, .Value, IIf(NTInput, .Length, .LongNote), .Hidden, RealColumnToEnabled(niA1) - RealColumnToEnabled(niA7), 0, True) & vbCrLf + + ' Array 0: Unmodified array + ' Array 1: Modified array based on range + ' Array R: Array 1 reversed + Dim xniArray0 = New Integer() {niA1, niA2, niA3, niA4, niA5, niA6, niA7, niA8, niD1, niD2, niD3, niD4, niD5, niD6, niD7, niD8} + ' Dim xniArray1 = Integer() ' xniArray0 + + ' New function: Declare an array to see the range of selected notes. B columns ignored. + + Dim xRangeL As Integer = niB ' Big number + Dim xRangeR As Integer = 0 ' Smol number + + ' Range finder + For xI1 = 1 To UBound(Notes) + If Not Notes(xI1).Selected Then Continue For + If xRangeL > Notes(xI1).ColumnIndex Then xRangeL = Notes(xI1).ColumnIndex + If xRangeR < Notes(xI1).ColumnIndex Then xRangeR = Notes(xI1).ColumnIndex + Next + + ' Modify xniArray based on range + ' Out of range + If xRangeL > niD8 Or xRangeR < niA1 Then GoTo DoNothing + + ' Semi-in Range + ' Cut off left side + If xRangeL < niA1 Then + xRangeL = 0 + GoTo Skip1 + End If + + For xI1 = 0 To xniArray0.Length + If xniArray0(xI1) = xRangeL Then + xRangeL = xI1 + Exit For + End If + Next + +Skip1: + ' Cut off right side + If xRangeR > niD8 Then + xRangeR = xniArray0.Length + GoTo Skip2 + End If + + For xI1 = 0 To xniArray0.Length + If xniArray0(xI1) = xRangeR Then + xRangeR = xI1 + 1 + Exit For + End If + Next + +Skip2: + + Dim xniArray1(xRangeR - xRangeL - 1) + For xI1 = 0 To xRangeR - xRangeL - 1 + xniArray1(xI1) = xniArray0(xI1 + xRangeL) + Next + + Dim xniArrayLen = xniArray1.Length + ' xniArrayR: Randomized array + Dim xniArrayR = xniArray1.Clone() + + Dim xCol As Integer + For xI1 = 1 To UBound(Notes) + If Not Notes(xI1).Selected Then Continue For + Shuffle(xniArrayR, xniArrayLen) + xCol = Notes(xI1).ColumnIndex + For xI2 = 0 To xniArrayLen - 1 + If xCol = xniArray1(xI2) Then + xCol = xniArrayR(xI2) + Exit For + End If + + Next + + Me.RedoMoveNote(Notes(xI1), xCol, Notes(xI1).VPosition, xUndo, xRedo) + Notes(xI1).ColumnIndex = xCol + Next + +DoNothing: + + AddUndo(xUndo, xBaseRedo.Next) + UpdatePairing() + RefreshPanelAll() + End Sub + + Private Sub POBSort_Click(sender As Object, e As EventArgs) Handles POBSort.Click + Dim xI1 As Integer + Dim xI2 As Integer + Dim xUndo As UndoRedo.LinkedURCmd = Nothing + Dim xRedo As UndoRedo.LinkedURCmd = New UndoRedo.Void + Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo + + ' Array 1: Unmodified array + Dim xniArray1 = New Integer() {niA1, niA2, niA3, niA4, niA5, niA6, niA7, niA8, niD1, niD2, niD3, niD4, niD5, niD6, niD7, niD8} + + Dim xniArrayLen = xniArray1.Length + + Dim xCol As Integer + Dim vPos As Integer = -1 + Dim xIArray(0) As Integer + Dim xValueArray(0) As Integer + Dim xI3 As Integer = 0 + Dim xITemp As Integer + Dim xValueTemp As Integer + Dim xSorted As Boolean = False + For xI1 = 1 To UBound(Notes) + + If Not Notes(xI1).Selected Then Continue For + ' If starting a new row or same VPosition + If xI3 = 0 Or vPos = Notes(xI1).VPosition Then +RestartSorting: xSorted = False + ReDim Preserve xIArray(xI3) + ReDim Preserve xValueArray(xI3) + vPos = Notes(xI1).VPosition + xIArray(xI3) = xI1 + xValueArray(xI3) = Notes(xI1).Value + xI3 += 1 + Else + ' Start sorting in a row + ' xI4: First item in the sort loop, xI2: The nth swap/comparison + ' Sorting process (4 items, c for comparison between 2 items): + ' cccc + ' ccc + ' cc + ' c + + For xI4 = 0 To xI3 - 2 + For xI2 = 0 To xI3 - 2 - xI4 + If xValueArray(xI2) > xValueArray(xI2 + 1) Then + xITemp = xIArray(xI2 + 1) + xIArray(xI2 + 1) = xIArray(xI2) + xIArray(xI2) = xITemp + + xValueTemp = xValueArray(xI2 + 1) + xValueArray(xI2 + 1) = xValueArray(xI2) + xValueArray(xI2) = xValueTemp + End If + Next + Next + + For xI4 = 0 To xI3 - 1 + Me.RedoMoveNote(Notes(xIArray(xI4)), xniArray1(xI4), Notes(xIArray(xI4)).VPosition, xUndo, xRedo) + Notes(xIArray(xI4)).ColumnIndex = xniArray1(xI4) + ' Me.RedoMoveNote(Notes(xI1), xCol, Notes(xI1).VPosition, xUndo, xRedo) + ' Notes(xI1).ColumnIndex = xCol + Next + xI3 = 0 + xSorted = True + GoTo RestartSorting + End If + + Next + + If Not xSorted Then + For xI4 = 0 To xI3 - 2 + For xI2 = xI4 To xI3 - 2 + If xValueArray(xI2) > xValueArray(xI2 + 1) Then + xITemp = xIArray(xI2 + 1) + xIArray(xI2 + 1) = xIArray(xI2) + xIArray(xI2) = xITemp + + xValueTemp = xValueArray(xI2 + 1) + xValueArray(xI2 + 1) = xValueArray(xI2) + xValueArray(xI2) = xValueTemp + End If + Next + Next + + For xI4 = 0 To xI3 - 1 + Me.RedoMoveNote(Notes(xIArray(xI4)), xniArray1(xI4), Notes(xIArray(xI4)).VPosition, xUndo, xRedo) + Notes(xIArray(xI4)).ColumnIndex = xniArray1(xI4) + Next + End If + + AddUndo(xUndo, xBaseRedo.Next) + UpdatePairing() + RefreshPanelAll() + End Sub + + + Private Sub ValidateSelection() + If vSelStart < 0 Then vSelLength += vSelStart : vSelHalf += vSelStart : vSelStart = 0 + If vSelStart > GetMaxVPosition() - 1 Then vSelLength += vSelStart - GetMaxVPosition() + 1 : vSelHalf += vSelStart - GetMaxVPosition() + 1 : vSelStart = GetMaxVPosition() - 1 + If vSelStart + vSelLength < 0 Then vSelLength = -vSelStart + If vSelStart + vSelLength > GetMaxVPosition() - 1 Then vSelLength = GetMaxVPosition() - 1 - vSelStart + + If Math.Sign(vSelHalf) <> Math.Sign(vSelLength) Then vSelHalf = 0 + If Math.Abs(vSelHalf) > Math.Abs(vSelLength) Then vSelHalf = vSelLength + End Sub + + + + Private Sub TVCM_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TVCM.KeyDown + If e.KeyCode = Keys.Enter Then + TVCM.Text = Val(TVCM.Text) + If Val(TVCM.Text) <= 0 Then + MsgBox(Strings.Messages.NegativeFactorError, MsgBoxStyle.Critical, Strings.Messages.Err) + TVCM.Text = 1 + TVCM.Focus() + TVCM.SelectAll() + Else + BVCApply_Click(BVCApply, New System.EventArgs) + End If + End If + End Sub + + Private Sub TVCM_LostFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles TVCM.LostFocus + TVCM.Text = Val(TVCM.Text) + If Val(TVCM.Text) <= 0 Then + MsgBox(Strings.Messages.NegativeFactorError, MsgBoxStyle.Critical, Strings.Messages.Err) + TVCM.Text = 1 + TVCM.Focus() + TVCM.SelectAll() + End If + End Sub + + Private Sub TVCD_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TVCD.KeyDown + If e.KeyCode = Keys.Enter Then + TVCD.Text = Val(TVCD.Text) + If Val(TVCD.Text) <= 0 Then + MsgBox(Strings.Messages.NegativeDivisorError, MsgBoxStyle.Critical, Strings.Messages.Err) + TVCD.Text = 1 + TVCD.Focus() + TVCD.SelectAll() + Else + BVCApply_Click(BVCApply, New System.EventArgs) + End If + End If + End Sub + + Private Sub TVCD_LostFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles TVCD.LostFocus + TVCD.Text = Val(TVCD.Text) + If Val(TVCD.Text) <= 0 Then + MsgBox(Strings.Messages.NegativeDivisorError, MsgBoxStyle.Critical, Strings.Messages.Err) + TVCD.Text = 1 + TVCD.Focus() + TVCD.SelectAll() + End If + End Sub + + Private Sub TVCBPM_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TVCBPM.KeyDown + If e.KeyCode = Keys.Enter Then + TVCBPM.Text = Val(TVCBPM.Text) + If Val(TVCBPM.Text) <= 0 Then + MsgBox(Strings.Messages.NegativeDivisorError, MsgBoxStyle.Critical, Strings.Messages.Err) + TVCBPM.Text = Notes(0).Value / 10000 + TVCBPM.Focus() + TVCBPM.SelectAll() + Else + BVCCalculate_Click(BVCCalculate, New System.EventArgs) + End If + End If + End Sub + + Private Sub TVCBPM_LostFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles TVCBPM.LostFocus + TVCBPM.Text = Val(TVCBPM.Text) + If Val(TVCBPM.Text) <= 0 Then + MsgBox(Strings.Messages.NegativeDivisorError, MsgBoxStyle.Critical, Strings.Messages.Err) + TVCBPM.Text = Notes(0).Value / 10000 + TVCBPM.Focus() + TVCBPM.SelectAll() + End If + End Sub + + Private Function FindNoteIndex(note As Note) As Integer + Dim xI1 As Integer + If NTInput Then + For xI1 = 1 To UBound(Notes) + If Notes(xI1).equalsNT(note) Then Return xI1 + Next + Else + For xI1 = 1 To UBound(Notes) + If Notes(xI1).equalsBMSE(note) Then Return xI1 + Next + End If + Return xI1 + End Function + + + + + Private Function sIA() As Integer + Return IIf(sI > 98, 0, sI + 1) + End Function + + Private Function sIM() As Integer + Return IIf(sI < 1, 99, sI - 1) + End Function + + + + Private Sub TBUndo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBUndo.Click, mnUndo.Click + KMouseOver = -1 + 'KMouseDown = -1 + ReDim SelectedNotes(-1) + If sUndo(sI).ofType = UndoRedo.opNoOperation Then Exit Sub + PerformCommand(sUndo(sI)) + sI = sIM() + + TBUndo.Enabled = sUndo(sI).ofType <> UndoRedo.opNoOperation + TBRedo.Enabled = sRedo(sIA).ofType <> UndoRedo.opNoOperation + mnUndo.Enabled = sUndo(sI).ofType <> UndoRedo.opNoOperation + mnRedo.Enabled = sRedo(sIA).ofType <> UndoRedo.opNoOperation + End Sub + + Private Sub TBRedo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBRedo.Click, mnRedo.Click + KMouseOver = -1 + 'KMouseDown = -1 + ReDim SelectedNotes(-1) + If sRedo(sIA).ofType = UndoRedo.opNoOperation Then Exit Sub + PerformCommand(sRedo(sIA)) + sI = sIA() + + TBUndo.Enabled = sUndo(sI).ofType <> UndoRedo.opNoOperation + TBRedo.Enabled = sRedo(sIA).ofType <> UndoRedo.opNoOperation + mnUndo.Enabled = sUndo(sI).ofType <> UndoRedo.opNoOperation + mnRedo.Enabled = sRedo(sIA).ofType <> UndoRedo.opNoOperation + End Sub + + 'Undo appends before, Redo appends after. + 'After a sequence of Commands, + ' Undo will be the first one to execute, + ' Redo will be the last one to execute. + 'Remember to save the first Redo. + + 'In case where undo is Nothing: Dont worry. + 'In case where redo is Nothing: + ' If only one redo is in a sequence, put Nothing. + ' If several redo are in a sequence, + ' Create Void first. + ' Record its reference into a seperate copy. (xBaseRedo = xRedo) + ' Use this xRedo as the BaseRedo. + ' When calling AddUndo subroutine, use xBaseRedo.Next as cRedo. + + 'Dim xUndo As UndoRedo.LinkedURCmd = Nothing + 'Dim xRedo As UndoRedo.LinkedURCmd = Nothing + '... 'Me.RedoRemoveNote(K(xI1), True, xUndo, xRedo) + 'AddUndo(xUndo, xRedo) + + 'Dim xUndo As UndoRedo.LinkedURCmd = Nothing + 'Dim xRedo As New UndoRedo.Void + 'Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo + '... 'Me.RedoRemoveNote(K(xI1), True, xUndo, xRedo) + 'AddUndo(xUndo, xBaseRedo.Next) + + + + Private Sub TBAbout_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) + Dim Aboutboxx1 As New AboutBox1() + 'If My.Computer.FileSystem.FileExists(My.Application.Info.DirectoryPath & "\About.png") Then + Aboutboxx1.bBitmap = My.Resources.About0 + 'Aboutboxx1.SelectBitmap() + Aboutboxx1.ClientSize = New Size(1000, 500) + Aboutboxx1.ClickToCopy.Visible = True + Aboutboxx1.ShowDialog(Me) + 'Else + ' MsgBox(locale.Messages.cannotfind & " ""About.png""", MsgBoxStyle.Critical, locale.Messages.err) + 'End If + End Sub + + Private Sub TBVOptions_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBVOptions.Click, mnVOptions.Click + + Dim xDiag As New OpVisual(vo, column, LWAV.Font) + xDiag.ShowDialog(Me) + UpdateColumnsX() + RefreshPanelAll() + End Sub + + Private Sub TBVCOptions_Click(sender As Object, e As EventArgs) Handles mnVCOptions.Click + Dim xDiag As New OpVisualCO(vo, column, LWAV.Font) + xDiag.ShowDialog(Me) + UpdateColumnsX() + RefreshPanelAll() + End Sub + + + Private Sub AddToPOWAV(ByVal xPath() As String) + Dim xIndices(LWAV.SelectedIndices.Count - 1) As Integer + LWAV.SelectedIndices.CopyTo(xIndices, 0) + If xIndices.Length = 0 Then Exit Sub + + If xIndices.Length < xPath.Length Then + Dim i As Integer = xIndices.Length + Dim currWavIndex As Integer = xIndices(UBound(xIndices)) + 1 + ReDim Preserve xIndices(UBound(xPath)) + + Do While i < xIndices.Length And currWavIndex <= 1294 + Do While currWavIndex <= 1294 AndAlso hWAV(currWavIndex + 1) <> "" + currWavIndex += 1 + Loop + If currWavIndex > 1294 Then Exit Do + + xIndices(i) = currWavIndex + currWavIndex += 1 + i += 1 + Loop + + If currWavIndex > 1294 Then + ReDim Preserve xPath(i - 1) + ReDim Preserve xIndices(i - 1) + End If + End If + + 'Dim xI2 As Integer = 0 + For xI1 As Integer = 0 To UBound(xPath) + 'If xI2 > UBound(xIndices) Then Exit For + 'hWAV(xIndices(xI2) + 1) = GetFileName(xPath(xI1)) + 'LWAV.Items.Item(xIndices(xI2)) = C10to36(xIndices(xI2) + 1) & ": " & GetFileName(xPath(xI1)) + hWAV(xIndices(xI1) + 1) = GetFileName(xPath(xI1)) + LWAV.Items.Item(xIndices(xI1)) = C10to36(xIndices(xI1) + 1) & ": " & GetFileName(xPath(xI1)) + 'xI2 += 1 + Next + + LWAV.SelectedIndices.Clear() + For xI1 As Integer = 0 To IIf(UBound(xIndices) < UBound(xPath), UBound(xIndices), UBound(xPath)) + LWAV.SelectedIndices.Add(xIndices(xI1)) + Next + + If IsSaved Then SetIsSaved(False) + RefreshPanelAll() + End Sub + + Private Sub POWAV_DragDrop(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles POWAV.DragDrop + ReDim DDFileName(-1) + If Not e.Data.GetDataPresent(DataFormats.FileDrop) Then Return + + Dim xOrigPath() As String = CType(e.Data.GetData(DataFormats.FileDrop), String()) + Dim xPath() As String = FilterFileBySupported(xOrigPath, SupportedAudioExtension) + Array.Sort(xPath) + If xPath.Length = 0 Then + RefreshPanelAll() + Exit Sub + End If + + AddToPOWAV(xPath) + End Sub + + Private Sub POWAV_DragEnter(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles POWAV.DragEnter + If e.Data.GetDataPresent(DataFormats.FileDrop) Then + e.Effect = DragDropEffects.Copy + DDFileName = FilterFileBySupported(CType(e.Data.GetData(DataFormats.FileDrop), String()), SupportedAudioExtension) + Else + e.Effect = DragDropEffects.None + End If + RefreshPanelAll() + End Sub + + Private Sub POWAV_DragLeave(ByVal sender As Object, ByVal e As System.EventArgs) Handles POWAV.DragLeave + ReDim DDFileName(-1) + RefreshPanelAll() + End Sub + + Private Sub POWAV_Resize(ByVal sender As Object, ByVal e As System.EventArgs) Handles POWAV.Resize + LWAV.Height = sender.Height - 25 + End Sub + Private Sub POBeat_Resize(ByVal sender As Object, ByVal e As System.EventArgs) Handles POBeat.Resize + LBeat.Height = POBeat.Height - 25 + End Sub + Private Sub POExpansion_Resize(ByVal sender As Object, ByVal e As System.EventArgs) Handles POExpansion.Resize + TExpansion.Height = POExpansion.Height - 2 + End Sub + + Private Sub mn_DropDownClosed(ByVal sender As Object, ByVal e As System.EventArgs) + sender.ForeColor = Color.White + End Sub + Private Sub mn_DropDownOpened(ByVal sender As Object, ByVal e As System.EventArgs) + sender.ForeColor = Color.Black + End Sub + Private Sub mn_MouseEnter(ByVal sender As Object, ByVal e As System.EventArgs) + If sender.Pressed Then Return + sender.ForeColor = Color.Black + End Sub + Private Sub mn_MouseLeave(ByVal sender As Object, ByVal e As System.EventArgs) + If sender.Pressed Then Return + sender.ForeColor = Color.White + End Sub + + Private Sub TBPOptions_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBPOptions.Click, mnPOptions.Click + Dim xDOp As New OpPlayer(CurrentPlayer) + xDOp.ShowDialog(Me) + End Sub + + Private Sub THGenre_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles _ + THGenre.TextChanged, THTitle.TextChanged, THArtist.TextChanged, THPlayLevel.TextChanged, CHRank.SelectedIndexChanged, TExpansion.TextChanged, + THSubTitle.TextChanged, THSubArtist.TextChanged, THStageFile.TextChanged, THBanner.TextChanged, THBackBMP.TextChanged, + CHDifficulty.SelectedIndexChanged, THExRank.TextChanged, THTotal.TextChanged, THComment.TextChanged + If IsSaved Then SetIsSaved(False) + End Sub + + Private Sub CHLnObj_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CHLnObj.SelectedIndexChanged + If IsSaved Then SetIsSaved(False) + LnObj = CHLnObj.SelectedIndex + UpdatePairing() + RefreshPanelAll() + End Sub + + Private Sub ConvertBMSE2NT() + ReDim SelectedNotes(-1) + SortByVPositionInsertion() + + For i2 As Integer = 0 To UBound(Notes) + Notes(i2).Length = 0.0# + Next + + Dim i As Integer = 1 + Dim j As Integer = 0 + Dim xUbound As Integer = UBound(Notes) + + Do While i <= xUbound + If Not Notes(i).LongNote Then i += 1 : Continue Do + + For j = i + 1 To xUbound + If Notes(j).ColumnIndex <> Notes(i).ColumnIndex Then Continue For + + If Notes(j).LongNote Then + Notes(i).Length = Notes(j).VPosition - Notes(i).VPosition + For j2 As Integer = j To xUbound - 1 + Notes(j2) = Notes(j2 + 1) + Next + xUbound -= 1 + Exit For + + ElseIf Notes(j).Value \ 10000 = LnObj Then + Exit For + + End If + Next + + i += 1 + Loop + + ReDim Preserve Notes(xUbound) + + For i = 0 To xUbound + Notes(i).LongNote = False + Next + + SortByVPositionInsertion() + UpdatePairing() + CalculateTotalPlayableNotes() + End Sub + + Private Sub ConvertNT2BMSE() + ReDim SelectedNotes(-1) + Dim xK(0) As Note + xK(0) = Notes(0) + + For xI1 As Integer = 1 To UBound(Notes) + ReDim Preserve xK(UBound(xK) + 1) + With xK(UBound(xK)) + .ColumnIndex = Notes(xI1).ColumnIndex + .LongNote = Notes(xI1).Length > 0 + .Landmine = Notes(xI1).Landmine + .Value = Notes(xI1).Value + .VPosition = Notes(xI1).VPosition + .Selected = Notes(xI1).Selected + .Hidden = Notes(xI1).Hidden + End With + + If Notes(xI1).Length > 0 Then + ReDim Preserve xK(UBound(xK) + 1) + With xK(UBound(xK)) + .ColumnIndex = Notes(xI1).ColumnIndex + .LongNote = True + .Landmine = False + .Value = Notes(xI1).Value + .VPosition = Notes(xI1).VPosition + Notes(xI1).Length + .Selected = Notes(xI1).Selected + .Hidden = Notes(xI1).Hidden + End With + End If + Next + + Notes = xK + + SortByVPositionInsertion() + UpdatePairing() + CalculateTotalPlayableNotes() + End Sub + + Private Sub TBWavIncrease_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBWavIncrease.Click + Dim xUndo As UndoRedo.LinkedURCmd = Nothing + Dim xRedo As UndoRedo.LinkedURCmd = New UndoRedo.Void + Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo + + TBWavIncrease.Checked = Not sender.Checked + Me.RedoWavIncrease(TBWavIncrease.Checked, xUndo, xRedo) + AddUndo(xUndo, xBaseRedo.Next) + End Sub + + Private Sub TBNTInput_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBNTInput.Click, mnNTInput.Click + 'Dim xUndo As String = "NT_" & CInt(NTInput) & "_0" & vbCrLf & "KZ" & vbCrLf & sCmdKsAll(False) + 'Dim xRedo As String = "NT_" & CInt(Not NTInput) & "_1" + Dim xUndo As UndoRedo.LinkedURCmd = Nothing + Dim xRedo As UndoRedo.LinkedURCmd = New UndoRedo.Void + Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo + + Me.RedoRemoveNoteAll(False, xUndo, xRedo) + + NTInput = sender.Checked + + TBNTInput.Checked = NTInput + mnNTInput.Checked = NTInput + POBLong.Enabled = Not NTInput + POBLongShort.Enabled = Not NTInput + + bAdjustLength = False + bAdjustUpper = False + + Me.RedoNT(NTInput, False, xUndo, xRedo) + If NTInput Then + ConvertBMSE2NT() + Else + ConvertNT2BMSE() + End If + Me.RedoAddNoteAll(False, xUndo, xRedo) + + AddUndo(xUndo, xBaseRedo.Next) + RefreshPanelAll() + End Sub + + Private Sub THBPM_ValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles THBPM.ValueChanged + If Notes IsNot Nothing Then Notes(0).Value = THBPM.Value * 10000 : RefreshPanelAll() + If IsSaved Then SetIsSaved(False) + End Sub + + Private Sub TWPosition_ValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TWPosition.ValueChanged + wPosition = TWPosition.Value + TWPosition2.Value = IIf(wPosition > TWPosition2.Maximum, TWPosition2.Maximum, wPosition) + RefreshPanelAll() + End Sub + + Private Sub TWLeft_ValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TWLeft.ValueChanged + wLeft = TWLeft.Value + TWLeft2.Value = IIf(wLeft > TWLeft2.Maximum, TWLeft2.Maximum, wLeft) + RefreshPanelAll() + End Sub + + Private Sub TWWidth_ValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TWWidth.ValueChanged + wWidth = TWWidth.Value + TWWidth2.Value = IIf(wWidth > TWWidth2.Maximum, TWWidth2.Maximum, wWidth) + RefreshPanelAll() + End Sub + + Private Sub TWPrecision_ValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TWPrecision.ValueChanged + wPrecision = TWPrecision.Value + TWPrecision2.Value = IIf(wPrecision > TWPrecision2.Maximum, TWPrecision2.Maximum, wPrecision) + RefreshPanelAll() + End Sub + + Private Sub TWTransparency_ValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TWTransparency.ValueChanged + TWTransparency2.Value = TWTransparency.Value + vo.pBGMWav.Color = Color.FromArgb(TWTransparency.Value, vo.pBGMWav.Color) + RefreshPanelAll() + End Sub + + Private Sub TWSaturation_ValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TWSaturation.ValueChanged + Dim xColor As Color = vo.pBGMWav.Color + TWSaturation2.Value = TWSaturation.Value + vo.pBGMWav.Color = HSL2RGB(xColor.GetHue, TWSaturation.Value, xColor.GetBrightness * 1000, xColor.A) + RefreshPanelAll() + End Sub + + Private Sub TWPosition2_Scroll(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TWPosition2.Scroll + TWPosition.Value = TWPosition2.Value + End Sub + + Private Sub TWLeft2_Scroll(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TWLeft2.Scroll + TWLeft.Value = TWLeft2.Value + End Sub + + Private Sub TWWidth2_Scroll(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TWWidth2.Scroll + TWWidth.Value = TWWidth2.Value + End Sub + + Private Sub TWPrecision2_Scroll(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TWPrecision2.Scroll + TWPrecision.Value = TWPrecision2.Value + End Sub + + Private Sub TWTransparency2_Scroll(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TWTransparency2.Scroll + TWTransparency.Value = TWTransparency2.Value + End Sub + + Private Sub TWSaturation2_Scroll(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TWSaturation2.Scroll + TWSaturation.Value = TWSaturation2.Value + End Sub + + Private Sub TBLangDef_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBLangDef.Click + DispLang = "" + MsgBox(Strings.Messages.PreferencePostpone, MsgBoxStyle.Information) + End Sub + + Private Sub TBLangRefresh_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBLangRefresh.Click + For xI1 As Integer = cmnLanguage.Items.Count - 1 To 3 Step -1 + Try + cmnLanguage.Items.RemoveAt(xI1) + Catch ex As Exception + End Try + Next + + If Not Directory.Exists(My.Application.Info.DirectoryPath & "\Data") Then My.Computer.FileSystem.CreateDirectory(My.Application.Info.DirectoryPath & "\Data") + Dim xFileNames() As FileInfo = My.Computer.FileSystem.GetDirectoryInfo(My.Application.Info.DirectoryPath & "\Data").GetFiles("*.Lang.xml") + + For Each xStr As FileInfo In xFileNames + LoadLocaleXML(xStr) + Next + End Sub + + + Private Sub UpdateColumnsX() + column(0).Left = 0 + 'If col(0).Width = 0 Then col(0).Visible = False + + For xI1 As Integer = 1 To UBound(column) + column(xI1).Left = column(xI1 - 1).Left + IIf(column(xI1 - 1).isVisible, column(xI1 - 1).Width, 0) + 'If col(xI1).Width = 0 Then col(xI1).Visible = False + Next + HSL.Maximum = nLeft(gColumns) + column(niB).Width + HS.Maximum = nLeft(gColumns) + column(niB).Width + HSR.Maximum = nLeft(gColumns) + column(niB).Width + End Sub + + Private Sub CHPlayer_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CHPlayer.SelectedIndexChanged + If CHPlayer.SelectedIndex = -1 Then CHPlayer.SelectedIndex = 0 + + iPlayer = CHPlayer.SelectedIndex + Dim xGP2 As Boolean = iPlayer <> 0 + column(niD1).isVisible = xGP2 + column(niD2).isVisible = xGP2 + column(niD3).isVisible = xGP2 + column(niD4).isVisible = xGP2 + column(niD5).isVisible = xGP2 + column(niD6).isVisible = xGP2 + column(niD7).isVisible = xGP2 + column(niD8).isVisible = xGP2 + column(niS3).isVisible = xGP2 + + For xI1 As Integer = 1 To UBound(Notes) + Notes(xI1).Selected = Notes(xI1).Selected And nEnabled(Notes(xI1).ColumnIndex) + Next + 'AddUndo(xUndo, xRedo) + UpdateColumnsX() + + If IsInitializing Then Exit Sub + RefreshPanelAll() + End Sub + + Private Sub CGB_ValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CGB.ValueChanged + gColumns = niB + CGB.Value - 1 + UpdateColumnsX() + RefreshPanelAll() + End Sub + + Private Sub TBGOptions_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBGOptions.Click, mnGOptions.Click + Dim xTE As Integer + Select Case UCase(EncodingToString(TextEncoding)) ' az: wow seriously? is there really no better way? + Case "SYSTEM ANSI" : xTE = 0 + Case "LITTLE ENDIAN UTF16" : xTE = 1 + Case "ASCII" : xTE = 2 + Case "BIG ENDIAN UTF16" : xTE = 3 + Case "LITTLE ENDIAN UTF32" : xTE = 4 + Case "UTF7" : xTE = 5 + Case "UTF8" : xTE = 6 + Case "SJIS" : xTE = 7 + Case "EUC-KR" : xTE = 8 + Case Else : xTE = 0 + End Select + + Dim xDiag As New OpGeneral(gWheel, gPgUpDn, MiddleButtonMoveMethod, xTE, 192.0R / BMSGridLimit, + AutoSaveInterval, BeepWhileSaved, BPMx1296, STOPx1296, + AutoFocusMouseEnter, FirstClickDisabled, ClickStopPreview) + + If xDiag.ShowDialog() = Windows.Forms.DialogResult.OK Then + With xDiag + gWheel = .zWheel + gPgUpDn = .zPgUpDn + TextEncoding = .zEncoding + 'SortingMethod = .zSort + MiddleButtonMoveMethod = .zMiddle + AutoSaveInterval = .zAutoSave + BMSGridLimit = 192.0R / .zGridPartition + BeepWhileSaved = .cBeep.Checked + BPMx1296 = .cBpm1296.Checked + STOPx1296 = .cStop1296.Checked + AutoFocusMouseEnter = .cMEnterFocus.Checked + FirstClickDisabled = .cMClickFocus.Checked + ClickStopPreview = .cMStopPreview.Checked + ' KeyBindDP = .cMKeyBindDP.Checked + End With + If AutoSaveInterval Then AutoSaveTimer.Interval = AutoSaveInterval + AutoSaveTimer.Enabled = AutoSaveInterval + End If + End Sub + + Private Sub POBLong_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles POBLong.Click + If NTInput Then Exit Sub + + Dim xUndo As UndoRedo.LinkedURCmd = Nothing + Dim xRedo As UndoRedo.LinkedURCmd = New UndoRedo.Void + Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo + + For xI1 As Integer = 1 To UBound(Notes) + If Not Notes(xI1).Selected Then Continue For + + Me.RedoLongNoteModify(Notes(xI1), Notes(xI1).VPosition, True, xUndo, xRedo) + Notes(xI1).LongNote = True + Next + AddUndo(xUndo, xBaseRedo.Next) + SortByVPositionInsertion() + UpdatePairing() + RefreshPanelAll() + End Sub + + Private Sub POBNormal_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles POBShort.Click + Dim xUndo As UndoRedo.LinkedURCmd = Nothing + Dim xRedo As UndoRedo.LinkedURCmd = New UndoRedo.Void + Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo + + If Not NTInput Then + For xI1 As Integer = 1 To UBound(Notes) + If Not Notes(xI1).Selected Then Continue For + + Me.RedoLongNoteModify(Notes(xI1), Notes(xI1).VPosition, 0, xUndo, xRedo) + Notes(xI1).LongNote = False + Next + + Else + For xI1 As Integer = 1 To UBound(Notes) + If Not Notes(xI1).Selected Then Continue For + + Me.RedoLongNoteModify(Notes(xI1), Notes(xI1).VPosition, 0, xUndo, xRedo) + Notes(xI1).Length = 0 + Next + End If + + AddUndo(xUndo, xBaseRedo.Next) + SortByVPositionInsertion() + UpdatePairing() + RefreshPanelAll() + End Sub + + Private Sub POBNormalLong_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles POBLongShort.Click + If NTInput Then Exit Sub + + Dim xUndo As UndoRedo.LinkedURCmd = Nothing + Dim xRedo As UndoRedo.LinkedURCmd = New UndoRedo.Void + Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo + + For xI1 As Integer = 1 To UBound(Notes) + If Not Notes(xI1).Selected Then Continue For + + Me.RedoLongNoteModify(Notes(xI1), Notes(xI1).VPosition, Not Notes(xI1).LongNote, xUndo, xRedo) + Notes(xI1).LongNote = Not Notes(xI1).LongNote + Next + + AddUndo(xUndo, xBaseRedo.Next) + SortByVPositionInsertion() + UpdatePairing() + RefreshPanelAll() + End Sub + + Private Sub POBHidden_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles POBHidden.Click + Dim xUndo As UndoRedo.LinkedURCmd = Nothing + Dim xRedo As UndoRedo.LinkedURCmd = New UndoRedo.Void + Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo + + For xI1 As Integer = 1 To UBound(Notes) + If Not Notes(xI1).Selected Then Continue For + + Me.RedoHiddenNoteModify(Notes(xI1), True, True, xUndo, xRedo) + Notes(xI1).Hidden = True + Next + AddUndo(xUndo, xBaseRedo.Next) + SortByVPositionInsertion() + UpdatePairing() + RefreshPanelAll() + End Sub + + Private Sub POBVisible_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles POBVisible.Click + Dim xUndo As UndoRedo.LinkedURCmd = Nothing + Dim xRedo As UndoRedo.LinkedURCmd = New UndoRedo.Void + Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo + + For xI1 As Integer = 1 To UBound(Notes) + If Not Notes(xI1).Selected Then Continue For + + Me.RedoHiddenNoteModify(Notes(xI1), False, True, xUndo, xRedo) + Notes(xI1).Hidden = False + Next + AddUndo(xUndo, xBaseRedo.Next) + SortByVPositionInsertion() + UpdatePairing() + RefreshPanelAll() + End Sub + + Private Sub POBHiddenVisible_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles POBHiddenVisible.Click + Dim xUndo As UndoRedo.LinkedURCmd = Nothing + Dim xRedo As UndoRedo.LinkedURCmd = New UndoRedo.Void + Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo + + For xI1 As Integer = 1 To UBound(Notes) + If Not Notes(xI1).Selected Then Continue For + + Me.RedoHiddenNoteModify(Notes(xI1), Not Notes(xI1).Hidden, True, xUndo, xRedo) + Notes(xI1).Hidden = Not Notes(xI1).Hidden + Next + AddUndo(xUndo, xBaseRedo.Next) + SortByVPositionInsertion() + UpdatePairing() + RefreshPanelAll() + End Sub + + Private Sub POBModify_Click(ByVal sender As System.Object, ByVal e As EventArgs) Handles POBModify.Click + Dim xNum As Boolean = False + Dim xLbl As Boolean = False + Dim xI1 As Integer + + For xI1 = 1 To UBound(Notes) + If Notes(xI1).Selected AndAlso IsColumnNumeric(Notes(xI1).ColumnIndex) Then xNum = True : Exit For + Next + For xI1 = 1 To UBound(Notes) + If Notes(xI1).Selected AndAlso Not IsColumnNumeric(Notes(xI1).ColumnIndex) Then xLbl = True : Exit For + Next + If Not (xNum Or xLbl) Then Exit Sub + + If xNum Then + Dim xD1 As Double = Val(InputBox(Strings.Messages.PromptEnterNumeric, Text)) * 10000 + If Not xD1 = 0 Then + If xD1 <= 0 Then xD1 = 1 + + Dim xUndo As UndoRedo.LinkedURCmd = Nothing + Dim xRedo As UndoRedo.LinkedURCmd = New UndoRedo.Void + Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo + + For xI1 = 1 To UBound(Notes) + If Not IsColumnNumeric(Notes(xI1).ColumnIndex) Then Continue For + If Not Notes(xI1).Selected Then Continue For + + Me.RedoRelabelNote(Notes(xI1), xD1, xUndo, xRedo) + Notes(xI1).Value = xD1 + Next + AddUndo(xUndo, xBaseRedo.Next) + End If + End If + + If xLbl Then + Dim xStr As String = UCase(Trim(InputBox(Strings.Messages.PromptEnter, Me.Text))) + + If Len(xStr) = 0 Then GoTo Jump2 + If xStr = "00" Or xStr = "0" Then GoTo Jump1 + If Not Len(xStr) = 1 And Not Len(xStr) = 2 Then GoTo Jump1 + + Dim xI3 As Integer = Asc(Mid(xStr, 1, 1)) + If Not ((xI3 >= 48 And xI3 <= 57) Or (xI3 >= 65 And xI3 <= 90)) Then GoTo Jump1 + If Len(xStr) = 2 Then + Dim xI4 As Integer = Asc(Mid(xStr, 2, 1)) + If Not ((xI4 >= 48 And xI4 <= 57) Or (xI4 >= 65 And xI4 <= 90)) Then GoTo Jump1 + End If + Dim xVal As Integer = C36to10(xStr) * 10000 + + Dim xUndo As UndoRedo.LinkedURCmd = Nothing + Dim xRedo As UndoRedo.LinkedURCmd = New UndoRedo.Void + Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo + + For xI1 = 1 To UBound(Notes) + If IsColumnNumeric(Notes(xI1).ColumnIndex) Then Continue For + If Not Notes(xI1).Selected Then Continue For + + Me.RedoRelabelNote(Notes(xI1), xVal, xUndo, xRedo) + Notes(xI1).Value = xVal + Next + AddUndo(xUndo, xBaseRedo.Next) + GoTo Jump2 +Jump1: + MsgBox(Strings.Messages.InvalidLabel, MsgBoxStyle.Critical, Strings.Messages.Err) +Jump2: + End If + + RefreshPanelAll() + End Sub + + Private Sub TBMyO2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBMyO2.Click, mnMyO2.Click + Dim xDiag As New dgMyO2 + xDiag.Show() + End Sub + + + Private Sub TBFind_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBFind.Click, mnFind.Click + Dim xDiag As New diagFind(gColumns, Strings.Messages.Err, Strings.Messages.InvalidLabel) + xDiag.Show() + End Sub + + Private Function fdrCheck(ByVal xNote As Note) As Boolean + Return xNote.VPosition >= MeasureBottom(fdriMesL) And xNote.VPosition < MeasureBottom(fdriMesU) + MeasureLength(fdriMesU) AndAlso + IIf(IsColumnNumeric(xNote.ColumnIndex), + xNote.Value >= fdriValL And xNote.Value <= fdriValU, + xNote.Value >= fdriLblL And xNote.Value <= fdriLblU) AndAlso + Array.IndexOf(fdriCol, xNote.ColumnIndex - 1) <> -1 + ' lol Fixed + End Function + + Private Function fdrRangeS(ByVal xbLim1 As Boolean, ByVal xbLim2 As Boolean, ByVal xVal As Boolean) As Boolean + Return (Not xbLim1 And xbLim2 And xVal) Or (xbLim1 And Not xbLim2 And Not xVal) Or (xbLim1 And xbLim2) + End Function + + Public Sub fdrSelect(ByVal iRange As Integer, + ByVal xMesL As Integer, ByVal xMesU As Integer, + ByVal xLblL As String, ByVal xLblU As String, + ByVal xValL As Integer, ByVal xValU As Integer, + ByVal iCol() As Integer) + + fdriMesL = xMesL + fdriMesU = xMesU + fdriLblL = C36to10(xLblL) * 10000 + fdriLblU = C36to10(xLblU) * 10000 + fdriValL = xValL + fdriValU = xValU + fdriCol = iCol + + Dim xbSel As Boolean = iRange Mod 2 = 0 + Dim xbUnsel As Boolean = iRange Mod 3 = 0 + Dim xbShort As Boolean = iRange Mod 5 = 0 + Dim xbLong As Boolean = iRange Mod 7 = 0 + Dim xbHidden As Boolean = iRange Mod 11 = 0 + Dim xbVisible As Boolean = iRange Mod 13 = 0 + + Dim xSel(UBound(Notes)) As Boolean + For xI1 As Integer = 1 To UBound(Notes) + xSel(xI1) = Notes(xI1).Selected + Next + + 'Main process + For xI1 As Integer = 1 To UBound(Notes) + ' Dim bbba As Boolean = xbSel And xSel(xI1) + ' Dim bbbb As Boolean = xbUnsel And Not xSel(xI1) + ' Dim bbbc As Boolean = nEnabled(Notes(xI1).ColumnIndex) + ' Dim bbbd As Boolean = fdrRangeS(xbShort, xbLong, IIf(NTInput, Notes(xI1).Length, Notes(xI1).LongNote)) + ' Dim bbbe As Boolean = fdrRangeS(xbVisible, xbHidden, Notes(xI1).Hidden) + ' Dim bbbf As Boolean = fdrCheck(Notes(xI1)) + + If ((xbSel And xSel(xI1)) Or (xbUnsel And Not xSel(xI1))) AndAlso + nEnabled(Notes(xI1).ColumnIndex) AndAlso fdrRangeS(xbShort, xbLong, IIf(NTInput, Notes(xI1).Length, Notes(xI1).LongNote)) And fdrRangeS(xbVisible, xbHidden, Notes(xI1).Hidden) Then + Notes(xI1).Selected = fdrCheck(Notes(xI1)) + End If + Next + + RefreshPanelAll() + Beep() + End Sub + + Public Sub fdrUnselect(ByVal iRange As Integer, + ByVal xMesL As Integer, ByVal xMesU As Integer, + ByVal xLblL As String, ByVal xLblU As String, + ByVal xValL As Integer, ByVal xValU As Integer, + ByVal iCol() As Integer) + + fdriMesL = xMesL + fdriMesU = xMesU + fdriLblL = C36to10(xLblL) * 10000 + fdriLblU = C36to10(xLblU) * 10000 + fdriValL = xValL + fdriValU = xValU + fdriCol = iCol + + Dim xbSel As Boolean = iRange Mod 2 = 0 + Dim xbUnsel As Boolean = iRange Mod 3 = 0 + Dim xbShort As Boolean = iRange Mod 5 = 0 + Dim xbLong As Boolean = iRange Mod 7 = 0 + Dim xbHidden As Boolean = iRange Mod 11 = 0 + Dim xbVisible As Boolean = iRange Mod 13 = 0 + + Dim xSel(UBound(Notes)) As Boolean + For xI1 As Integer = 1 To UBound(Notes) + xSel(xI1) = Notes(xI1).Selected + Next + + 'Main process + For xI1 As Integer = 1 To UBound(Notes) + If ((xbSel And xSel(xI1)) Or (xbUnsel And Not xSel(xI1))) AndAlso + nEnabled(Notes(xI1).ColumnIndex) AndAlso fdrRangeS(xbShort, xbLong, IIf(NTInput, Notes(xI1).Length, Notes(xI1).LongNote)) And fdrRangeS(xbVisible, xbHidden, Notes(xI1).Hidden) Then + Notes(xI1).Selected = Not fdrCheck(Notes(xI1)) + End If + Next + + RefreshPanelAll() + Beep() + End Sub + + Public Sub fdrPrevious(ByVal iRange As Integer, + ByVal xMesL As Integer, ByVal xMesU As Integer, + ByVal xLblL As String, ByVal xLblU As String, + ByVal xValL As Integer, ByVal xValU As Integer, + ByVal iCol() As Integer) + ' P: 1 note on 1 line at a time. Good enough. + fdriMesL = xMesL + fdriMesU = xMesU + fdriLblL = C36to10(xLblL) * 10000 + fdriLblU = C36to10(xLblU) * 10000 + fdriValL = xValL + fdriValU = xValU + fdriCol = iCol + + Dim xbSel As Boolean = iRange Mod 2 = 0 + Dim xbUnsel As Boolean = iRange Mod 3 = 0 + Dim xbShort As Boolean = iRange Mod 5 = 0 + Dim xbLong As Boolean = iRange Mod 7 = 0 + Dim xbHidden As Boolean = iRange Mod 11 = 0 + Dim xbVisible As Boolean = iRange Mod 13 = 0 + + Dim xSel(UBound(Notes)) As Boolean + For xI1 As Integer = 1 To UBound(Notes) + xSel(xI1) = Notes(xI1).Selected + Notes(xI1).Selected = False + Next + + For xI1 = UBound(Notes) To 1 Step -1 + If ((xbSel And xSel(xI1)) Or (xbUnsel And Not xSel(xI1))) AndAlso + nEnabled(Notes(xI1).ColumnIndex) AndAlso fdrRangeS(xbShort, xbLong, IIf(NTInput, Notes(xI1).Length, Notes(xI1).LongNote)) And fdrRangeS(xbVisible, xbHidden, Notes(xI1).Hidden) AndAlso + fdrCheck(Notes(xI1)) AndAlso + Notes(xI1).VPosition < -PanelVScroll(PanelFocus) Then + PanelVScroll(PanelFocus) = -Notes(xI1).VPosition + Notes(xI1).Selected = True + Exit For + End If + Next + + RefreshPanelAll() + Beep() + End Sub + Public Sub fdrNext(ByVal iRange As Integer, + ByVal xMesL As Integer, ByVal xMesU As Integer, + ByVal xLblL As String, ByVal xLblU As String, + ByVal xValL As Integer, ByVal xValU As Integer, + ByVal iCol() As Integer) + ' P: 1 note on 1 line at a time. Good enough. + fdriMesL = xMesL + fdriMesU = xMesU + fdriLblL = C36to10(xLblL) * 10000 + fdriLblU = C36to10(xLblU) * 10000 + fdriValL = xValL + fdriValU = xValU + fdriCol = iCol + + Dim xbSel As Boolean = iRange Mod 2 = 0 + Dim xbUnsel As Boolean = iRange Mod 3 = 0 + Dim xbShort As Boolean = iRange Mod 5 = 0 + Dim xbLong As Boolean = iRange Mod 7 = 0 + Dim xbHidden As Boolean = iRange Mod 11 = 0 + Dim xbVisible As Boolean = iRange Mod 13 = 0 + + Dim xSel(UBound(Notes)) As Boolean + For xI1 As Integer = 1 To UBound(Notes) + xSel(xI1) = Notes(xI1).Selected + Notes(xI1).Selected = False + Next + + For xI1 = 1 To UBound(Notes) + If ((xbSel And xSel(xI1)) Or (xbUnsel And Not xSel(xI1))) AndAlso + nEnabled(Notes(xI1).ColumnIndex) AndAlso fdrRangeS(xbShort, xbLong, IIf(NTInput, Notes(xI1).Length, Notes(xI1).LongNote)) And fdrRangeS(xbVisible, xbHidden, Notes(xI1).Hidden) AndAlso + fdrCheck(Notes(xI1)) AndAlso + Notes(xI1).VPosition > -PanelVScroll(PanelFocus) Then + PanelVScroll(PanelFocus) = -Notes(xI1).VPosition + Notes(xI1).Selected = True + Exit For + End If + Next + + RefreshPanelAll() + Beep() + End Sub + + Public Sub fdrDelete(ByVal iRange As Integer, + ByVal xMesL As Integer, ByVal xMesU As Integer, + ByVal xLblL As String, ByVal xLblU As String, + ByVal xValL As Integer, ByVal xValU As Integer, + ByVal iCol() As Integer) + + fdriMesL = xMesL + fdriMesU = xMesU + fdriLblL = C36to10(xLblL) * 10000 + fdriLblU = C36to10(xLblU) * 10000 + fdriValL = xValL + fdriValU = xValU + fdriCol = iCol + + Dim xbSel As Boolean = iRange Mod 2 = 0 + Dim xbUnsel As Boolean = iRange Mod 3 = 0 + Dim xbShort As Boolean = iRange Mod 5 = 0 + Dim xbLong As Boolean = iRange Mod 7 = 0 + Dim xbHidden As Boolean = iRange Mod 11 = 0 + Dim xbVisible As Boolean = iRange Mod 13 = 0 + + Dim xUndo As UndoRedo.LinkedURCmd = Nothing + Dim xRedo As UndoRedo.LinkedURCmd = New UndoRedo.Void + Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo + + 'Main process + Dim xI1 As Integer = 1 + Do While xI1 <= UBound(Notes) + If ((xbSel And Notes(xI1).Selected) Or (xbUnsel And Not Notes(xI1).Selected)) AndAlso + fdrCheck(Notes(xI1)) AndAlso nEnabled(Notes(xI1).ColumnIndex) AndAlso fdrRangeS(xbShort, xbLong, IIf(NTInput, Notes(xI1).Length, Notes(xI1).LongNote)) And fdrRangeS(xbVisible, xbHidden, Notes(xI1).Hidden) Then + RedoRemoveNote(Notes(xI1), xUndo, xRedo) + RemoveNote(xI1, False) + Else + xI1 += 1 + End If + Loop + + AddUndo(xUndo, xBaseRedo.Next) + SortByVPositionInsertion() + UpdatePairing() + RefreshPanelAll() + CalculateTotalPlayableNotes() + Beep() + End Sub + + Public Sub fdrReplaceL(ByVal iRange As Integer, + ByVal xMesL As Integer, ByVal xMesU As Integer, + ByVal xLblL As String, ByVal xLblU As String, + ByVal xValL As Integer, ByVal xValU As Integer, + ByVal iCol() As Integer, ByVal xReplaceLbl As String) + + fdriMesL = xMesL + fdriMesU = xMesU + fdriLblL = C36to10(xLblL) * 10000 + fdriLblU = C36to10(xLblU) * 10000 + fdriValL = xValL + fdriValU = xValU + fdriCol = iCol + + Dim xbSel As Boolean = iRange Mod 2 = 0 + Dim xbUnsel As Boolean = iRange Mod 3 = 0 + Dim xbShort As Boolean = iRange Mod 5 = 0 + Dim xbLong As Boolean = iRange Mod 7 = 0 + Dim xbHidden As Boolean = iRange Mod 11 = 0 + Dim xbVisible As Boolean = iRange Mod 13 = 0 + + Dim xxLbl As Integer = C36to10(xReplaceLbl) * 10000 + + Dim xUndo As UndoRedo.LinkedURCmd = Nothing + Dim xRedo As UndoRedo.LinkedURCmd = New UndoRedo.Void + Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo + + 'Main process + For xI1 As Integer = 1 To UBound(Notes) + If ((xbSel And Notes(xI1).Selected) Or (xbUnsel And Not Notes(xI1).Selected)) AndAlso + fdrCheck(Notes(xI1)) AndAlso nEnabled(Notes(xI1).ColumnIndex) And Not IsColumnNumeric(Notes(xI1).ColumnIndex) AndAlso fdrRangeS(xbShort, xbLong, IIf(NTInput, Notes(xI1).Length, Notes(xI1).LongNote)) And fdrRangeS(xbVisible, xbHidden, Notes(xI1).Hidden) Then + 'xUndo &= sCmdKC(K(xI1).ColumnIndex, K(xI1).VPosition, xxLbl, IIf(NTInput, K(xI1).Length, K(xI1).LongNote), K(xI1).Hidden, 0, 0, K(xI1).Value, IIf(NTInput, K(xI1).Length, K(xI1).LongNote), K(xI1).Hidden, True) & vbCrLf + 'xRedo &= sCmdKC(K(xI1).ColumnIndex, K(xI1).VPosition, K(xI1).Value, IIf(NTInput, K(xI1).Length, K(xI1).LongNote), K(xI1).Hidden, 0, 0, xxLbl, IIf(NTInput, K(xI1).Length, K(xI1).LongNote), K(xI1).Hidden, True) & vbCrLf + Me.RedoRelabelNote(Notes(xI1), xxLbl, xUndo, xRedo) + Notes(xI1).Value = xxLbl + End If + Next + + AddUndo(xUndo, xBaseRedo.Next) + RefreshPanelAll() + Beep() + End Sub + + Public Sub fdrReplaceV(ByVal iRange As Integer, + ByVal xMesL As Integer, ByVal xMesU As Integer, + ByVal xLblL As String, ByVal xLblU As String, + ByVal xValL As Integer, ByVal xValU As Integer, + ByVal iCol() As Integer, ByVal xReplaceVal As Integer) + + fdriMesL = xMesL + fdriMesU = xMesU + fdriLblL = C36to10(xLblL) * 10000 + fdriLblU = C36to10(xLblU) * 10000 + fdriValL = xValL + fdriValU = xValU + fdriCol = iCol + + Dim xbSel As Boolean = iRange Mod 2 = 0 + Dim xbUnsel As Boolean = iRange Mod 3 = 0 + Dim xbShort As Boolean = iRange Mod 5 = 0 + Dim xbLong As Boolean = iRange Mod 7 = 0 + Dim xbHidden As Boolean = iRange Mod 11 = 0 + Dim xbVisible As Boolean = iRange Mod 13 = 0 + + Dim xUndo As UndoRedo.LinkedURCmd = Nothing + Dim xRedo As UndoRedo.LinkedURCmd = New UndoRedo.Void + Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo + + 'Main process + For xI1 As Integer = 1 To UBound(Notes) + If ((xbSel And Notes(xI1).Selected) Or (xbUnsel And Not Notes(xI1).Selected)) AndAlso + fdrCheck(Notes(xI1)) AndAlso nEnabled(Notes(xI1).ColumnIndex) And IsColumnNumeric(Notes(xI1).ColumnIndex) AndAlso fdrRangeS(xbShort, xbLong, IIf(NTInput, Notes(xI1).Length, Notes(xI1).LongNote)) And fdrRangeS(xbVisible, xbHidden, Notes(xI1).Hidden) Then + 'xUndo &= sCmdKC(K(xI1).ColumnIndex, K(xI1).VPosition, xReplaceVal, IIf(NTInput, K(xI1).Length, K(xI1).LongNote), K(xI1).Hidden, 0, 0, K(xI1).Value, IIf(NTInput, K(xI1).Length, K(xI1).LongNote), K(xI1).Hidden, True) & vbCrLf + 'xRedo &= sCmdKC(K(xI1).ColumnIndex, K(xI1).VPosition, K(xI1).Value, IIf(NTInput, K(xI1).Length, K(xI1).LongNote), K(xI1).Hidden, 0, 0, xReplaceVal, IIf(NTInput, K(xI1).Length, K(xI1).LongNote), K(xI1).Hidden, True) & vbCrLf + Me.RedoRelabelNote(Notes(xI1), xReplaceVal, xUndo, xRedo) + Notes(xI1).Value = xReplaceVal + End If + Next + + AddUndo(xUndo, xBaseRedo.Next) + RefreshPanelAll() + Beep() + End Sub + + Private Sub MInsert_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MInsert.Click + Dim xUndo As UndoRedo.LinkedURCmd = Nothing + Dim xRedo As UndoRedo.LinkedURCmd = New UndoRedo.Void + Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo + + Dim xMeasure As Integer = MeasureAtDisplacement(menuVPosition) + Dim xMLength As Double = MeasureLength(xMeasure) + Dim xVP As Double = MeasureBottom(xMeasure) + + If NTInput Then + Dim xI1 As Integer = 1 + Do While xI1 <= UBound(Notes) + If MeasureAtDisplacement(Notes(xI1).VPosition) >= 999 Then + Me.RedoRemoveNote(Notes(xI1), xUndo, xRedo) + RemoveNote(xI1, False) + Else + xI1 += 1 + End If + Loop + + Dim xdVP As Double + For xI1 = 1 To UBound(Notes) + If Notes(xI1).VPosition >= xVP And Notes(xI1).VPosition + Notes(xI1).Length <= MeasureBottom(999) Then + Me.RedoMoveNote(Notes(xI1), Notes(xI1).ColumnIndex, Notes(xI1).VPosition + xMLength, xUndo, xRedo) + Notes(xI1).VPosition += xMLength + + ElseIf Notes(xI1).VPosition >= xVP Then + xdVP = MeasureBottom(999) - 1 - Notes(xI1).VPosition - Notes(xI1).Length + Me.RedoLongNoteModify(Notes(xI1), Notes(xI1).VPosition + xMLength, Notes(xI1).Length + xdVP, xUndo, xRedo) + Notes(xI1).VPosition += xMLength + Notes(xI1).Length += xdVP + + ElseIf Notes(xI1).VPosition + Notes(xI1).Length >= xVP Then + xdVP = IIf(Notes(xI1).VPosition + Notes(xI1).Length > MeasureBottom(999) - 1, GetMaxVPosition() - 1 - Notes(xI1).VPosition - Notes(xI1).Length, xMLength) + Me.RedoLongNoteModify(Notes(xI1), Notes(xI1).VPosition, Notes(xI1).Length + xdVP, xUndo, xRedo) + Notes(xI1).Length += xdVP + End If + Next + + Else + Dim xI1 As Integer = 1 + Do While xI1 <= UBound(Notes) + If MeasureAtDisplacement(Notes(xI1).VPosition) >= 999 Then + Me.RedoRemoveNote(Notes(xI1), xUndo, xRedo) + RemoveNote(xI1, False) + Else + xI1 += 1 + End If + Loop + + For xI1 = 1 To UBound(Notes) + If Notes(xI1).VPosition >= xVP Then + Me.RedoMoveNote(Notes(xI1), Notes(xI1).ColumnIndex, Notes(xI1).VPosition + xMLength, xUndo, xRedo) + Notes(xI1).VPosition += xMLength + End If + Next + End If + + For xI1 As Integer = 999 To xMeasure + 1 Step -1 + MeasureLength(xI1) = MeasureLength(xI1 - 1) + Next + UpdateMeasureBottom() + + AddUndo(xUndo, xBaseRedo.Next) + UpdatePairing() + CalculateGreatestVPosition() + CalculateTotalPlayableNotes() + RefreshPanelAll() + End Sub + + Private Sub MRemove_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MRemove.Click + Dim xUndo As UndoRedo.LinkedURCmd = Nothing + Dim xRedo As UndoRedo.LinkedURCmd = New UndoRedo.Void + Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo + + Dim xMeasure As Integer = MeasureAtDisplacement(menuVPosition) + Dim xMLength As Double = MeasureLength(xMeasure) + Dim xVP As Double = MeasureBottom(xMeasure) + + If NTInput Then + Dim xI1 As Integer = 1 + Do While xI1 <= UBound(Notes) + If MeasureAtDisplacement(Notes(xI1).VPosition) = xMeasure And MeasureAtDisplacement(Notes(xI1).VPosition + Notes(xI1).Length) = xMeasure Then + Me.RedoRemoveNote(Notes(xI1), xUndo, xRedo) + RemoveNote(xI1, False) + Else + xI1 += 1 + End If + Loop + + Dim xdVP As Double + xVP = MeasureBottom(xMeasure) + For xI1 = 1 To UBound(Notes) + If Notes(xI1).VPosition >= xVP + xMLength Then + Me.RedoMoveNote(Notes(xI1), Notes(xI1).ColumnIndex, Notes(xI1).VPosition - xMLength, xUndo, xRedo) + Notes(xI1).VPosition -= xMLength + + ElseIf Notes(xI1).VPosition >= xVP Then + xdVP = xMLength + xVP - Notes(xI1).VPosition + Me.RedoLongNoteModify(Notes(xI1), Notes(xI1).VPosition + xdVP - xMLength, Notes(xI1).Length - xdVP, xUndo, xRedo) + Notes(xI1).VPosition += xdVP - xMLength + Notes(xI1).Length -= xdVP + + ElseIf Notes(xI1).VPosition + Notes(xI1).Length >= xVP Then + xdVP = IIf(Notes(xI1).VPosition + Notes(xI1).Length >= xVP + xMLength, xMLength, Notes(xI1).VPosition + Notes(xI1).Length - xVP + 1) + Me.RedoLongNoteModify(Notes(xI1), Notes(xI1).VPosition, Notes(xI1).Length - xdVP, xUndo, xRedo) + Notes(xI1).Length -= xdVP + End If + Next + + Else + Dim xI1 As Integer = 1 + Do While xI1 <= UBound(Notes) + If MeasureAtDisplacement(Notes(xI1).VPosition) = xMeasure Then + Me.RedoRemoveNote(Notes(xI1), xUndo, xRedo) + RemoveNote(xI1, False) + Else + xI1 += 1 + End If + Loop + + xVP = MeasureBottom(xMeasure) + For xI1 = 1 To UBound(Notes) + If Notes(xI1).VPosition >= xVP Then + Me.RedoMoveNote(Notes(xI1), Notes(xI1).ColumnIndex, Notes(xI1).VPosition - xMLength, xUndo, xRedo) + Notes(xI1).VPosition -= xMLength + End If + Next + End If + + For xI1 As Integer = 999 To xMeasure + 1 Step -1 + MeasureLength(xI1 - 1) = MeasureLength(xI1) + Next + UpdateMeasureBottom() + + AddUndo(xUndo, xBaseRedo.Next) + SortByVPositionInsertion() + UpdatePairing() + CalculateGreatestVPosition() + CalculateTotalPlayableNotes() + RefreshPanelAll() + End Sub + + Private Sub TBThemeDef_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBThemeDef.Click + Dim xTempFileName As String = My.Application.Info.DirectoryPath & "\____TempFile.Theme.xml" + My.Computer.FileSystem.WriteAllText(xTempFileName, My.Resources.O2Mania_Theme, False, System.Text.Encoding.Unicode) + LoadSettings(xTempFileName) + System.IO.File.Delete(xTempFileName) + + RefreshPanelAll() + End Sub + + Private Sub TBThemeSave_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBThemeSave.Click + Dim xDiag As New SaveFileDialog + xDiag.Filter = Strings.FileType.THEME_XML & "|*.Theme.xml" + xDiag.DefaultExt = "Theme.xml" + xDiag.InitialDirectory = My.Application.Info.DirectoryPath & "\Data" + If xDiag.ShowDialog = Windows.Forms.DialogResult.Cancel Then Exit Sub + + Me.SaveSettings(xDiag.FileName, True) + If BeepWhileSaved Then Beep() + TBThemeRefresh_Click(TBThemeRefresh, New System.EventArgs) + End Sub + + Private Sub TBThemeRefresh_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBThemeRefresh.Click + For xI1 As Integer = cmnTheme.Items.Count - 1 To 5 Step -1 + Try + cmnTheme.Items.RemoveAt(xI1) + Catch ex As Exception + End Try + Next + + If Not Directory.Exists(My.Application.Info.DirectoryPath & "\Data") Then My.Computer.FileSystem.CreateDirectory(My.Application.Info.DirectoryPath & "\Data") + Dim xFileNames() As FileInfo = My.Computer.FileSystem.GetDirectoryInfo(My.Application.Info.DirectoryPath & "\Data").GetFiles("*.Theme.xml") + For Each xStr As FileInfo In xFileNames + cmnTheme.Items.Add(xStr.Name, Nothing, AddressOf LoadTheme) + Next + End Sub + + Private Sub TBThemeLoadComptability_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBThemeLoadComptability.Click + Dim xDiag As New OpenFileDialog + xDiag.Filter = Strings.FileType.TH & "|*.th" + xDiag.DefaultExt = "th" + xDiag.InitialDirectory = My.Application.Info.DirectoryPath + If My.Computer.FileSystem.DirectoryExists(My.Application.Info.DirectoryPath & "\Theme") Then xDiag.InitialDirectory = My.Application.Info.DirectoryPath & "\Theme" + If xDiag.ShowDialog = Windows.Forms.DialogResult.Cancel Then Exit Sub + + Me.LoadThemeComptability(xDiag.FileName) + RefreshPanelAll() + End Sub + + ''' + ''' Will return Double.PositiveInfinity if canceled. + ''' + Private Function InputBoxDouble(ByVal Prompt As String, ByVal LBound As Double, ByVal UBound As Double, Optional ByVal Title As String = "", Optional ByVal DefaultResponse As String = "") As Double + Dim xStr As String = InputBox(Prompt, Title, DefaultResponse) + If xStr = "" Then Return Double.PositiveInfinity + + InputBoxDouble = Val(xStr) + If InputBoxDouble > UBound Then InputBoxDouble = UBound + If InputBoxDouble < LBound Then InputBoxDouble = LBound + End Function + + Private Sub FSSS_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles FSSS.Click + Dim xMax As Double = IIf(vSelLength > 0, GetMaxVPosition() - vSelLength, GetMaxVPosition) + Dim xMin As Double = IIf(vSelLength < 0, -vSelLength, 0) + Dim xDouble As Double = InputBoxDouble("Please enter a number between " & xMin & " and " & xMax & ".", xMin, xMax, , vSelStart) + If xDouble = Double.PositiveInfinity Then Return + + vSelStart = xDouble + ValidateSelection() + RefreshPanelAll() + POStatusRefresh() + End Sub + + Private Sub FSSL_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles FSSL.Click + Dim xMax As Double = GetMaxVPosition() - vSelStart + Dim xMin As Double = -vSelStart + Dim xDouble As Double = InputBoxDouble("Please enter a number between " & xMin & " and " & xMax & ".", xMin, xMax, , vSelLength) + If xDouble = Double.PositiveInfinity Then Return + + vSelLength = xDouble + ValidateSelection() + RefreshPanelAll() + POStatusRefresh() + End Sub + + Private Sub FSSH_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles FSSH.Click + Dim xMax As Double = IIf(vSelLength > 0, vSelLength, 0) + Dim xMin As Double = IIf(vSelLength > 0, 0, -vSelLength) + Dim xDouble As Double = InputBoxDouble("Please enter a number between " & xMin & " and " & xMax & ".", xMin, xMax, , vSelHalf) + If xDouble = Double.PositiveInfinity Then Return + + vSelHalf = xDouble + ValidateSelection() + RefreshPanelAll() + POStatusRefresh() + End Sub + + Private Sub BVCReverse_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BVCReverse.Click + vSelStart += vSelLength + vSelHalf -= vSelLength + vSelLength *= -1 + ValidateSelection() + RefreshPanelAll() + POStatusRefresh() + End Sub + + Private Sub AutoSaveTimer_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles AutoSaveTimer.Tick + Dim xTime As Date = Now + Dim xFileName As String + With xTime + xFileName = My.Application.Info.DirectoryPath & "\AutoSave_" & + .Year & "_" & .Month & "_" & .Day & "_" & .Hour & "_" & .Minute & "_" & .Second & "_" & .Millisecond & ".IBMSC" + End With + 'My.Computer.FileSystem.WriteAllText(xFileName, SaveiBMSC, False, System.Text.Encoding.Unicode) + SaveiBMSC(xFileName) + + On Error Resume Next + If PreviousAutoSavedFileName <> "" Then IO.File.Delete(PreviousAutoSavedFileName) + On Error GoTo 0 + + PreviousAutoSavedFileName = xFileName + End Sub + + Private Sub CWAVMultiSelect_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CWAVMultiSelect.CheckedChanged + WAVMultiSelect = CWAVMultiSelect.Checked + LWAV.SelectionMode = IIf(WAVMultiSelect, SelectionMode.MultiExtended, SelectionMode.One) + End Sub + + Private Sub CWAVChangeLabel_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CWAVChangeLabel.CheckedChanged + WAVChangeLabel = CWAVChangeLabel.Checked + End Sub + + Private Sub BWAVUp_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BWAVUp.Click + If LWAV.SelectedIndex = -1 Then Return + + Dim xUndo As UndoRedo.LinkedURCmd = Nothing + Dim xRedo As UndoRedo.LinkedURCmd = New UndoRedo.Void + Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo + + Dim xIndices(LWAV.SelectedIndices.Count - 1) As Integer + LWAV.SelectedIndices.CopyTo(xIndices, 0) + + Dim xS As Integer + For xS = 0 To 1294 + If Array.IndexOf(xIndices, xS) = -1 Then Exit For + Next + + Dim xStr As String = "" + Dim xIndex As Integer = -1 + For xI1 As Integer = xS To 1294 + xIndex = Array.IndexOf(xIndices, xI1) + If xIndex <> -1 Then + xStr = hWAV(xI1 + 1) + hWAV(xI1 + 1) = hWAV(xI1) + hWAV(xI1) = xStr + + LWAV.Items.Item(xI1) = C10to36(xI1 + 1) & ": " & hWAV(xI1 + 1) + LWAV.Items.Item(xI1 - 1) = C10to36(xI1) & ": " & hWAV(xI1) + + If Not WAVChangeLabel Then GoTo 1100 + + Dim xL1 As String = C10to36(xI1) + Dim xL2 As String = C10to36(xI1 + 1) + For xI2 As Integer = 1 To UBound(Notes) + If IsColumnNumeric(Notes(xI2).ColumnIndex) Then Continue For + + If C10to36(Notes(xI2).Value \ 10000) = xL1 Then + Me.RedoRelabelNote(Notes(xI2), xI1 * 10000 + 10000, xUndo, xRedo) + Notes(xI2).Value = xI1 * 10000 + 10000 + + ElseIf C10to36(Notes(xI2).Value \ 10000) = xL2 Then + Me.RedoRelabelNote(Notes(xI2), xI1 * 10000, xUndo, xRedo) + Notes(xI2).Value = xI1 * 10000 + + End If + Next + +1100: xIndices(xIndex) += -1 + End If + Next + + LWAV.SelectedIndices.Clear() + For xI1 As Integer = 0 To UBound(xIndices) + LWAV.SelectedIndices.Add(xIndices(xI1)) + Next + + AddUndo(xUndo, xBaseRedo.Next) + RefreshPanelAll() + POStatusRefresh() + End Sub + + Private Sub BWAVDown_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BWAVDown.Click + If LWAV.SelectedIndex = -1 Then Return + + Dim xUndo As UndoRedo.LinkedURCmd = Nothing + Dim xRedo As UndoRedo.LinkedURCmd = New UndoRedo.Void + Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo + + Dim xIndices(LWAV.SelectedIndices.Count - 1) As Integer + LWAV.SelectedIndices.CopyTo(xIndices, 0) + + Dim xS As Integer + For xS = 1294 To 0 Step -1 + If Array.IndexOf(xIndices, xS) = -1 Then Exit For + Next + + Dim xStr As String = "" + Dim xIndex As Integer = -1 + For xI1 As Integer = xS To 0 Step -1 + xIndex = Array.IndexOf(xIndices, xI1) + If xIndex <> -1 Then + xStr = hWAV(xI1 + 1) + hWAV(xI1 + 1) = hWAV(xI1 + 2) + hWAV(xI1 + 2) = xStr + + LWAV.Items.Item(xI1) = C10to36(xI1 + 1) & ": " & hWAV(xI1 + 1) + LWAV.Items.Item(xI1 + 1) = C10to36(xI1 + 2) & ": " & hWAV(xI1 + 2) + + If Not WAVChangeLabel Then GoTo 1100 + + Dim xL1 As String = C10to36(xI1 + 2) + Dim xL2 As String = C10to36(xI1 + 1) + For xI2 As Integer = 1 To UBound(Notes) + If IsColumnNumeric(Notes(xI2).ColumnIndex) Then Continue For + + If C10to36(Notes(xI2).Value \ 10000) = xL1 Then + Me.RedoRelabelNote(Notes(xI2), xI1 * 10000 + 10000, xUndo, xRedo) + Notes(xI2).Value = xI1 * 10000 + 10000 + + ElseIf C10to36(Notes(xI2).Value \ 10000) = xL2 Then + Me.RedoRelabelNote(Notes(xI2), xI1 * 10000 + 20000, xUndo, xRedo) + Notes(xI2).Value = xI1 * 10000 + 20000 + + End If + Next + +1100: xIndices(xIndex) += 1 + End If + Next + + LWAV.SelectedIndices.Clear() + For xI1 As Integer = 0 To UBound(xIndices) + LWAV.SelectedIndices.Add(xIndices(xI1)) + Next + + AddUndo(xUndo, xBaseRedo.Next) + RefreshPanelAll() + POStatusRefresh() + End Sub + + Private Sub BWAVBrowse_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BWAVBrowse.Click + Dim xDWAV As New OpenFileDialog + xDWAV.DefaultExt = "wav" + xDWAV.Filter = Strings.FileType._wave & "|*.wav;*.ogg;*.mp3|" & + Strings.FileType.WAV & "|*.wav|" & + Strings.FileType.OGG & "|*.ogg|" & + Strings.FileType.MP3 & "|*.mp3|" & + Strings.FileType._all & "|*.*" + xDWAV.InitialDirectory = IIf(ExcludeFileName(FileName) = "", InitPath, ExcludeFileName(FileName)) + xDWAV.Multiselect = WAVMultiSelect + + If xDWAV.ShowDialog = Windows.Forms.DialogResult.Cancel Then Exit Sub + InitPath = ExcludeFileName(xDWAV.FileName) + + AddToPOWAV(xDWAV.FileNames) + End Sub + + Private Sub BWAVRemove_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BWAVRemove.Click + Dim xIndices(LWAV.SelectedIndices.Count - 1) As Integer + LWAV.SelectedIndices.CopyTo(xIndices, 0) + For xI1 As Integer = 0 To UBound(xIndices) + hWAV(xIndices(xI1) + 1) = "" + LWAV.Items.Item(xIndices(xI1)) = C10to36(xIndices(xI1) + 1) & ": " + Next + + LWAV.SelectedIndices.Clear() + For xI1 As Integer = 0 To UBound(xIndices) + LWAV.SelectedIndices.Add(xIndices(xI1)) + Next + + If IsSaved Then SetIsSaved(False) + RefreshPanelAll() + POStatusRefresh() + End Sub + + Private Sub mnMain_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles mnMain.MouseDown ', TBMain.MouseDown ', pttl.MouseDown, pIsSaved.MouseDown + If e.Button = Windows.Forms.MouseButtons.Left Then + ReleaseCapture() + SendMessage(Me.Handle, &H112, &HF012, 0) + If e.Clicks = 2 Then + If Me.WindowState = FormWindowState.Maximized Then Me.WindowState = FormWindowState.Normal Else Me.WindowState = FormWindowState.Maximized + End If + ElseIf e.Button = Windows.Forms.MouseButtons.Right Then + 'mnSys.Show(sender, e.Location) + End If + End Sub + + Private Sub mnSelectAll_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnSelectAll.Click + If Not (PMainIn.Focused OrElse PMainInL.Focused Or PMainInR.Focused) Then Exit Sub + For xI1 As Integer = 1 To UBound(Notes) + Notes(xI1).Selected = nEnabled(Notes(xI1).ColumnIndex) + Next + If TBTimeSelect.Checked Then + CalculateGreatestVPosition() + vSelStart = 0 + vSelLength = MeasureBottom(MeasureAtDisplacement(GreatestVPosition)) + MeasureLength(MeasureAtDisplacement(GreatestVPosition)) + End If + RefreshPanelAll() + POStatusRefresh() + End Sub + + Private Sub mnDelete_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnDelete.Click + If Not (PMainIn.Focused OrElse PMainInL.Focused Or PMainInR.Focused) Then Exit Sub + + Dim xUndo As UndoRedo.LinkedURCmd = Nothing + Dim xRedo As UndoRedo.LinkedURCmd = New UndoRedo.Void + Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo + + Me.RedoRemoveNoteSelected(True, xUndo, xRedo) + RemoveNotes(True) + + AddUndo(xUndo, xBaseRedo.Next) + CalculateGreatestVPosition() + CalculateTotalPlayableNotes() + RefreshPanelAll() + POStatusRefresh() + End Sub + + Private Sub mnUpdate_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) + Process.Start("http://www.cs.mcgill.ca/~ryang6/iBMSC/") + End Sub + + Private Sub mnUpdateC_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) + Process.Start("http://bbs.rohome.net/thread-1074065-1-1.html") + End Sub + + Private Sub mnQuit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnQuit.Click + Close() + End Sub + + + Private Sub EnableDWM() + mnMain.BackColor = Color.Black + 'TBMain.BackColor = Color.FromArgb(64, 64, 64) + + For Each xmn As ToolStripMenuItem In mnMain.Items + xmn.ForeColor = Color.White + AddHandler xmn.DropDownClosed, AddressOf mn_DropDownClosed + AddHandler xmn.DropDownOpened, AddressOf mn_DropDownOpened + AddHandler xmn.MouseEnter, AddressOf mn_MouseEnter + AddHandler xmn.MouseLeave, AddressOf mn_MouseLeave + Next + End Sub + + Private Sub DisableDWM() + mnMain.BackColor = SystemColors.Control + 'TBMain.BackColor = SystemColors.Control + + For Each xmn As ToolStripMenuItem In mnMain.Items + xmn.ForeColor = SystemColors.ControlText + RemoveHandler xmn.DropDownClosed, AddressOf mn_DropDownClosed + RemoveHandler xmn.DropDownOpened, AddressOf mn_DropDownOpened + RemoveHandler xmn.MouseEnter, AddressOf mn_MouseEnter + RemoveHandler xmn.MouseLeave, AddressOf mn_MouseLeave + Next + End Sub + + Private Sub ttlIcon_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) + 'ttlIcon.Image = My.Resources.icon2_16 + 'mnSys.Show(ttlIcon, 0, ttlIcon.Height) + End Sub + Private Sub ttlIcon_MouseEnter(ByVal sender As Object, ByVal e As System.EventArgs) + 'ttlIcon.Image = My.Resources.icon2_16_highlight + End Sub + Private Sub ttlIcon_MouseLeave(ByVal sender As Object, ByVal e As System.EventArgs) + 'ttlIcon.Image = My.Resources.icon2_16 + End Sub + + Private Sub mnSMenu_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnSMenu.CheckedChanged + mnMain.Visible = mnSMenu.Checked + End Sub + Private Sub mnSTB_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnSTB.CheckedChanged + TBMain.Visible = mnSTB.Checked + End Sub + Private Sub mnSOP_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnSOP.CheckedChanged + POptions.Visible = mnSOP.Checked + End Sub + Private Sub mnSStatus_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnSStatus.CheckedChanged + pStatus.Visible = mnSStatus.Checked + End Sub + Private Sub mnSLSplitter_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnSLSplitter.CheckedChanged + SpL.Visible = mnSLSplitter.Checked + End Sub + Private Sub mnSRSplitter_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnSRSplitter.CheckedChanged + SpR.Visible = mnSRSplitter.Checked + End Sub + Private Sub CGShow_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CGShow.CheckedChanged + gShowGrid = CGShow.Checked + RefreshPanelAll() + End Sub + Private Sub CGShowS_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CGShowS.CheckedChanged + gShowSubGrid = CGShowS.Checked + RefreshPanelAll() + End Sub + Private Sub CGShowBG_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CGShowBG.CheckedChanged + gShowBG = CGShowBG.Checked + RefreshPanelAll() + End Sub + Private Sub CGShowM_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CGShowM.CheckedChanged + gShowMeasureNumber = CGShowM.Checked + RefreshPanelAll() + End Sub + Private Sub CGShowV_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CGShowV.CheckedChanged + gShowVerticalLine = CGShowV.Checked + RefreshPanelAll() + End Sub + Private Sub CGShowMB_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CGShowMB.CheckedChanged + gShowMeasureBar = CGShowMB.Checked + RefreshPanelAll() + End Sub + Private Sub CGShowC_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CGShowC.CheckedChanged + gShowC = CGShowC.Checked + RefreshPanelAll() + End Sub + Private Sub CGBLP_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CGBLP.CheckedChanged + gDisplayBGAColumn = CGBLP.Checked + + column(niBGA).isVisible = gDisplayBGAColumn + column(niLAYER).isVisible = gDisplayBGAColumn + column(niPOOR).isVisible = gDisplayBGAColumn + column(niS4).isVisible = gDisplayBGAColumn + + If IsInitializing Then Exit Sub + For xI1 As Integer = 1 To UBound(Notes) + Notes(xI1).Selected = Notes(xI1).Selected And nEnabled(Notes(xI1).ColumnIndex) + Next + 'AddUndo(xUndo, xRedo) + UpdateColumnsX() + RefreshPanelAll() + End Sub + Private Sub CGSCROLL_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CGSCROLL.CheckedChanged + gSCROLL = CGSCROLL.Checked + + column(niSCROLL).isVisible = gSCROLL + + If IsInitializing Then Exit Sub + For xI1 As Integer = 1 To UBound(Notes) + Notes(xI1).Selected = Notes(xI1).Selected And nEnabled(Notes(xI1).ColumnIndex) + Next + 'AddUndo(xUndo, xRedo) + UpdateColumnsX() + RefreshPanelAll() + End Sub + Private Sub CGSTOP_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CGSTOP.CheckedChanged + gSTOP = CGSTOP.Checked + + column(niSTOP).isVisible = gSTOP + + If IsInitializing Then Exit Sub + For xI1 As Integer = 1 To UBound(Notes) + Notes(xI1).Selected = Notes(xI1).Selected And nEnabled(Notes(xI1).ColumnIndex) + Next + 'AddUndo(xUndo, xRedo) + UpdateColumnsX() + RefreshPanelAll() + End Sub + Private Sub CGBPM_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CGBPM.CheckedChanged + 'Dim xUndo As UndoRedo.LinkedURCmd = Nothing + 'Dim xRedo As UndoRedo.LinkedURCmd = Nothing + 'Me.RedoChangeVisibleColumns(gBLP, gSTOP, iPlayer, gBLP, CGSTOP.Checked, iPlayer, xUndo, xRedo) + gBPM = CGBPM.Checked + + column(niBPM).isVisible = gBPM + + If IsInitializing Then Exit Sub + For xI1 As Integer = 1 To UBound(Notes) + Notes(xI1).Selected = Notes(xI1).Selected And nEnabled(Notes(xI1).ColumnIndex) + Next + 'AddUndo(xUndo, xRedo) + UpdateColumnsX() + RefreshPanelAll() + End Sub + + Private Sub CGDisableVertical_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CGDisableVertical.CheckedChanged + DisableVerticalMove = CGDisableVertical.Checked + End Sub + + Private Sub CBeatPreserve_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CBeatPreserve.Click, CBeatMeasure.Click, CBeatCut.Click, CBeatScale.Click + 'If Not sender.Checked Then Exit Sub + Dim xBeatList() As RadioButton = {CBeatPreserve, CBeatMeasure, CBeatCut, CBeatScale} + BeatChangeMode = Array.IndexOf(Of RadioButton)(xBeatList, sender) + 'For xI1 As Integer = 0 To mnBeat.Items.Count - 1 + 'If xI1 <> BeatChangeMode Then CType(mnBeat.Items(xI1), ToolStripMenuItem).Checked = False + 'Next + 'sender.Checked = True + End Sub + + + Private Sub tBeatValue_LostFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles tBeatValue.LostFocus + Dim a As Double + If Double.TryParse(tBeatValue.Text, a) Then + If a <= 0.0# Or a >= 1000.0# Then tBeatValue.BackColor = Color.FromArgb(&HFFFFC0C0) Else tBeatValue.BackColor = Nothing + + tBeatValue.Text = a + End If + End Sub + + + + Private Sub ApplyBeat(ByVal xRatio As Double, ByVal xDisplay As String) + SortByVPositionInsertion() + + Dim xUndo As UndoRedo.LinkedURCmd = Nothing + Dim xRedo As UndoRedo.LinkedURCmd = New UndoRedo.Void + Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo + + Me.RedoChangeMeasureLengthSelected(192 * xRatio, xUndo, xRedo) + + Dim xIndices(LBeat.SelectedIndices.Count - 1) As Integer + LBeat.SelectedIndices.CopyTo(xIndices, 0) + + + For Each xI1 As Integer In xIndices + Dim dLength As Double = xRatio * 192.0R - MeasureLength(xI1) + Dim dRatio As Double = xRatio * 192.0R / MeasureLength(xI1) + + Dim xBottom As Double = 0 + For xI2 As Integer = 0 To xI1 - 1 + xBottom += MeasureLength(xI2) + Next + Dim xUpBefore As Double = xBottom + MeasureLength(xI1) + Dim xUpAfter As Double = xUpBefore + dLength + + Select Case BeatChangeMode + Case 1 +case2: Dim xI0 As Integer + + If NTInput Then + For xI0 = 1 To UBound(Notes) + If Notes(xI0).VPosition >= xUpBefore Then Exit For + If Notes(xI0).VPosition + Notes(xI0).Length >= xUpBefore Then + Me.RedoLongNoteModify(Notes(xI0), Notes(xI0).VPosition, Notes(xI0).Length + dLength, xUndo, xRedo) + Notes(xI0).Length += dLength + End If + Next + Else + For xI0 = 1 To UBound(Notes) + If Notes(xI0).VPosition >= xUpBefore Then Exit For + Next + End If + + For xI9 As Integer = xI0 To UBound(Notes) + Me.RedoLongNoteModify(Notes(xI9), Notes(xI9).VPosition + dLength, Notes(xI9).Length, xUndo, xRedo) + Notes(xI9).VPosition += dLength + Next + + Case 2 + If dLength < 0 Then + If NTInput Then + Dim xI0 As Integer = 1 + Dim xU As Integer = UBound(Notes) + Do While xI0 <= xU + If Notes(xI0).VPosition < xUpAfter Then + If Notes(xI0).VPosition + Notes(xI0).Length >= xUpAfter And Notes(xI0).VPosition + Notes(xI0).Length < xUpBefore Then + Dim nLen As Double = xUpAfter - Notes(xI0).VPosition - 1.0R + Me.RedoLongNoteModify(Notes(xI0), Notes(xI0).VPosition, nLen, xUndo, xRedo) + Notes(xI0).Length = nLen + End If + ElseIf Notes(xI0).VPosition < xUpBefore Then + If Notes(xI0).VPosition + Notes(xI0).Length < xUpBefore Then + Me.RedoRemoveNote(Notes(xI0), xUndo, xRedo) + RemoveNote(xI0) + xI0 -= 1 + xU -= 1 + Else + Dim nLen As Double = Notes(xI0).Length - xUpBefore + Notes(xI0).VPosition + Me.RedoLongNoteModify(Notes(xI0), xUpBefore, nLen, xUndo, xRedo) + Notes(xI0).Length = nLen + Notes(xI0).VPosition = xUpBefore + End If + End If + xI0 += 1 + Loop + Else + Dim xI0 As Integer + Dim xI9 As Integer + For xI0 = 1 To UBound(Notes) + If Notes(xI0).VPosition >= xUpAfter Then Exit For + Next + For xI9 = xI0 To UBound(Notes) + If Notes(xI9).VPosition >= xUpBefore Then Exit For + Next + + For xI8 As Integer = xI0 To xI9 - 1 + Me.RedoRemoveNote(Notes(xI8), xUndo, xRedo) + Next + For xI8 As Integer = xI9 To UBound(Notes) + Notes(xI8 - xI9 + xI0) = Notes(xI8) + Next + ReDim Preserve Notes(UBound(Notes) - xI9 + xI0) + End If + End If + + GoTo case2 + + Case 3 + If NTInput Then + For xI0 As Integer = 1 To UBound(Notes) + If Notes(xI0).VPosition < xBottom Then + If Notes(xI0).VPosition + Notes(xI0).Length > xUpBefore Then + Me.RedoLongNoteModify(Notes(xI0), Notes(xI0).VPosition, Notes(xI0).Length + dLength, xUndo, xRedo) + Notes(xI0).Length += dLength + ElseIf Notes(xI0).VPosition + Notes(xI0).Length > xBottom Then + Dim nLen As Double = (Notes(xI0).Length + Notes(xI0).VPosition - xBottom) * dRatio + xBottom - Notes(xI0).VPosition + Me.RedoLongNoteModify(Notes(xI0), Notes(xI0).VPosition, nLen, xUndo, xRedo) + Notes(xI0).Length = nLen + End If + ElseIf Notes(xI0).VPosition < xUpBefore Then + If Notes(xI0).VPosition + Notes(xI0).Length > xUpBefore Then + Dim nLen As Double = (xUpBefore - Notes(xI0).VPosition) * dRatio + Notes(xI0).VPosition + Notes(xI0).Length - xUpBefore + Dim nVPos As Double = (Notes(xI0).VPosition - xBottom) * dRatio + xBottom + Me.RedoLongNoteModify(Notes(xI0), nVPos, nLen, xUndo, xRedo) + Notes(xI0).Length = nLen + Notes(xI0).VPosition = nVPos + Else + Dim nLen As Double = Notes(xI0).Length * dRatio + Dim nVPos As Double = (Notes(xI0).VPosition - xBottom) * dRatio + xBottom + Me.RedoLongNoteModify(Notes(xI0), nVPos, nLen, xUndo, xRedo) + Notes(xI0).Length = nLen + Notes(xI0).VPosition = nVPos + End If + Else + Me.RedoLongNoteModify(Notes(xI0), Notes(xI0).VPosition + dLength, Notes(xI0).Length, xUndo, xRedo) + Notes(xI0).VPosition += dLength + End If + Next + Else + Dim xI0 As Integer + Dim xI9 As Integer + For xI0 = 1 To UBound(Notes) + If Notes(xI0).VPosition >= xBottom Then Exit For + Next + For xI9 = xI0 To UBound(Notes) + If Notes(xI9).VPosition >= xUpBefore Then Exit For + Next + + For xI8 As Integer = xI0 To xI9 - 1 + Dim nVP As Double = (Notes(xI8).VPosition - xBottom) * dRatio + xBottom + Me.RedoLongNoteModify(Notes(xI0), nVP, Notes(xI0).Length, xUndo, xRedo) + Notes(xI8).VPosition = nVP + Next + + 'GoTo case2 + + For xI8 As Integer = xI9 To UBound(Notes) + Me.RedoLongNoteModify(Notes(xI8), Notes(xI8).VPosition + dLength, Notes(xI8).Length, xUndo, xRedo) + Notes(xI8).VPosition += dLength + Next + End If + + End Select + + MeasureLength(xI1) = xRatio * 192.0R + LBeat.Items(xI1) = Add3Zeros(xI1) & ": " & xDisplay + Next + UpdateMeasureBottom() + 'xUndo &= vbCrLf & xUndo2 + 'xRedo &= vbCrLf & xRedo2 + + LBeat.SelectedIndices.Clear() + For xI1 As Integer = 0 To UBound(xIndices) + LBeat.SelectedIndices.Add(xIndices(xI1)) + Next + + AddUndo(xUndo, xBaseRedo.Next) + SortByVPositionInsertion() + UpdatePairing() + CalculateTotalPlayableNotes() + CalculateGreatestVPosition() + RefreshPanelAll() + POStatusRefresh() + End Sub + + Private Sub BBeatApply_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BBeatApply.Click + Dim xxD As Integer = nBeatD.Value + Dim xxN As Integer = nBeatN.Value + Dim xxRatio As Double = xxN / xxD + + ApplyBeat(xxRatio, xxRatio & " ( " & xxN & " / " & xxD & " ) ") + End Sub + + Private Sub BBeatApplyV_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BBeatApplyV.Click + Dim a As Double + If Double.TryParse(tBeatValue.Text, a) Then + If a <= 0.0# Or a >= 1000.0# Then System.Media.SystemSounds.Hand.Play() : Exit Sub + + Dim xxD As Long = GetDenominator(a) + + ApplyBeat(a, a & IIf(xxD > 10000, "", " ( " & CLng(a * xxD) & " / " & xxD & " ) ")) + End If + End Sub + + + Private Sub BHStageFile_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BHStageFile.Click, BHBanner.Click, BHBackBMP.Click + Dim xDiag As New OpenFileDialog + xDiag.Filter = Strings.FileType._image & "|*.bmp;*.png;*.jpg;*.gif|" & + Strings.FileType._all & "|*.*" + xDiag.InitialDirectory = IIf(ExcludeFileName(FileName) = "", InitPath, ExcludeFileName(FileName)) + xDiag.DefaultExt = "png" + + If xDiag.ShowDialog = Windows.Forms.DialogResult.Cancel Then Exit Sub + InitPath = ExcludeFileName(xDiag.FileName) + + If [Object].ReferenceEquals(sender, BHStageFile) Then + THStageFile.Text = GetFileName(xDiag.FileName) + ElseIf [Object].ReferenceEquals(sender, BHBanner) Then + THBanner.Text = GetFileName(xDiag.FileName) + ElseIf [Object].ReferenceEquals(sender, BHBackBMP) Then + THBackBMP.Text = GetFileName(xDiag.FileName) + End If + End Sub + + Private Sub Switches_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles _ + POHeaderSwitch.CheckedChanged, + POGridSwitch.CheckedChanged, + POWaveFormSwitch.CheckedChanged, + POWAVSwitch.CheckedChanged, + POBeatSwitch.CheckedChanged, + POExpansionSwitch.CheckedChanged + + Try + Dim Source As CheckBox = CType(sender, CheckBox) + Dim Target As Panel = Nothing + + If Object.ReferenceEquals(sender, Nothing) Then : Exit Sub + ElseIf Object.ReferenceEquals(sender, POHeaderSwitch) Then : Target = POHeaderInner + ElseIf Object.ReferenceEquals(sender, POGridSwitch) Then : Target = POGridInner + ElseIf Object.ReferenceEquals(sender, POWaveFormSwitch) Then : Target = POWaveFormInner + ElseIf Object.ReferenceEquals(sender, POWAVSwitch) Then : Target = POWAVInner + ElseIf Object.ReferenceEquals(sender, POBeatSwitch) Then : Target = POBeatInner + ElseIf Object.ReferenceEquals(sender, POExpansionSwitch) Then : Target = POExpansionInner + End If + + If Source.Checked Then + Target.Visible = True + Else + Target.Visible = False + End If + + Catch ex As Exception + + End Try + End Sub + + Private Sub Expanders_CheckChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles _ + POHeaderExpander.CheckedChanged, + POGridExpander.CheckedChanged, + POWaveFormExpander.CheckedChanged, + POWAVExpander.CheckedChanged, + POBeatExpander.CheckedChanged + + Try + Dim Source As CheckBox = CType(sender, CheckBox) + Dim Target As Panel = Nothing + 'Dim TargetParent As Panel = Nothing + + If Object.ReferenceEquals(sender, Nothing) Then : Exit Sub + ElseIf Object.ReferenceEquals(sender, POHeaderExpander) Then : Target = POHeaderPart2 ' : TargetParent = POHeaderInner + ElseIf Object.ReferenceEquals(sender, POGridExpander) Then : Target = POGridPart2 ' : TargetParent = POGridInner + ElseIf Object.ReferenceEquals(sender, POWaveFormExpander) Then : Target = POWaveFormPart2 ' : TargetParent = POWaveFormInner + ElseIf Object.ReferenceEquals(sender, POWAVExpander) Then : Target = POWAVPart2 ' : TargetParent = POWaveFormInner + ElseIf Object.ReferenceEquals(sender, POBeatExpander) Then : Target = POBeatPart2 ' : TargetParent = POWaveFormInner + End If + + If Source.Checked Then + Target.Visible = True + 'Source.Image = My.Resources.Collapse + Else + Target.Visible = False + 'Source.Image = My.Resources.Expand + End If + + Catch ex As Exception + + End Try + + End Sub + + Private Sub VerticalResizer_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles POWAVResizer.MouseDown, POBeatResizer.MouseDown, POExpansionResizer.MouseDown + tempResize = e.Y + End Sub + + Private Sub HorizontalResizer_MouseDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles POptionsResizer.MouseDown, SpL.MouseDown, SpR.MouseDown + tempResize = e.X + End Sub + + Private Sub POResizer_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles POWAVResizer.MouseMove, POBeatResizer.MouseMove, POExpansionResizer.MouseMove + If e.Button <> Windows.Forms.MouseButtons.Left Then Exit Sub + If e.Y = tempResize Then Exit Sub + + Try + Dim Source As Button = CType(sender, Button) + Dim Target As Panel = Source.Parent + + Dim xHeight As Integer = Target.Height + e.Y - tempResize + If xHeight < 10 Then xHeight = 10 + Target.Height = xHeight + + Target.Refresh() + Catch ex As Exception + + End Try + End Sub + + Private Sub POptionsResizer_MouseMove(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles POptionsResizer.MouseMove + If e.Button <> Windows.Forms.MouseButtons.Left Then Exit Sub + If e.X = tempResize Then Exit Sub + + Try + Dim xWidth As Integer = POptionsScroll.Width - e.X + tempResize + If xWidth < 25 Then xWidth = 25 + POptionsScroll.Width = xWidth + + Me.Refresh() + Application.DoEvents() + Catch ex As Exception + + End Try + End Sub + + Private Sub SpR_MouseMove(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles SpR.MouseMove + If e.Button <> Windows.Forms.MouseButtons.Left Then Exit Sub + If e.X = tempResize Then Exit Sub + + Try + Dim xWidth As Integer = PMainR.Width - e.X + tempResize + If xWidth < 0 Then xWidth = 0 + PMainR.Width = xWidth + + Me.ToolStripContainer1.Refresh() + Application.DoEvents() + Catch ex As Exception + + End Try + End Sub + + Private Sub SpL_MouseMove(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles SpL.MouseMove + If e.Button <> Windows.Forms.MouseButtons.Left Then Exit Sub + If e.X = tempResize Then Exit Sub + + Try + Dim xWidth As Integer = PMainL.Width + e.X - tempResize + If xWidth < 0 Then xWidth = 0 + PMainL.Width = xWidth + + Me.ToolStripContainer1.Refresh() + Application.DoEvents() + Catch ex As Exception + + End Try + End Sub + + Private Sub mnGotoMeasure_Click(sender As Object, e As EventArgs) Handles mnGotoMeasure.Click + Dim s = InputBox(Strings.Messages.PromptEnterMeasure, "Enter Measure") + + ' Interpolation, Value = F + (C - F) * (i - Floor(i)) + Dim i As Double + If Double.TryParse(s, i) AndAlso i > 0 AndAlso i < 999 Then PanelVScroll(PanelFocus) = -(MeasureBottom(Math.Floor(i)) + (MeasureBottom(Math.Ceiling(i)) - MeasureBottom(Math.Floor(i))) * (i - Math.Floor(i))) + End Sub + + + ' Generic shuffle for basic type arrays + Public Function Shuffle(Of T)(items As T(), Len As Integer) + Dim temp As T + Dim j As Int32 + + For i As Int32 = items.Count - 1 To 0 Step -1 + ' Pick an item for position i. + j = Int(Len * Rnd()) + ' Swap + temp = items(i) + items(i) = items(j) + items(j) = temp + Next i + Return items + End Function + + Private Sub Expand_Load(sender As Object, e As EventArgs) Handles ECSelectSection.Click + ReDim RandomFile(2) + Dim xDOp As New OpExpand() + Dim ReadText As String + Try + xDOp.ShowDialog(Me) + Catch + Exit Sub + End Try + + If RandomFile(1) = "-" Then Exit Sub + Dim RandomFilePath = ExcludeFileName(FileName) & "\" & RandomFileName + ' Picks another random filename because the programme somehow generated the same exact RandomFileName as a previous instance. 1 in 2-billion chance btw + Do Until Not My.Computer.FileSystem.FileExists(RandomFilePath) + RandomFileName = "___TempRandom" & GenerateRandomString(6, False) & ".bmsc" + RandomFilePath = ExcludeFileName(FileName) & "\" & RandomFileName + Loop + RandomFile(1) = GenerateHeaderMeta() & GenerateHeaderIndexedData() & RandomFile(1) + ' Dim xStrHeader As String = GenerateHeaderMeta() + ' xStrHeader &= GenerateHeaderIndexedData() + My.Computer.FileSystem.WriteAllText(RandomFilePath, RandomFile(1), False, TextEncoding) + System.Diagnostics.Process.Start(My.Application.Info.DirectoryPath & "\" & My.Application.Info.ProductName & ".exe", RandomFilePath) + Do Until False + Threading.Thread.Sleep(3000) + ReadText = My.Computer.FileSystem.ReadAllText(RandomFilePath, TextEncoding) + If ReadText.EndsWith("*---------------------- RANDOM DATA FIELD") Then + Exit Do + End If + Loop + RandomFile(1) = "" + For Each xStrLine In Split(ReadText, vbCrLf) + If xStrLine <> "" AndAlso xStrLine <> "*---------------------- RANDOM DATA FIELD" Then + RandomFile(1) &= xStrLine & vbCrLf + End If + Next + TExpansion.Text = Join(RandomFile, vbCrLf) + AddTempFileList(RandomFilePath) + End Sub + + Public Function GenerateRandomString(ByRef len As Integer, ByRef upper As Boolean) As String + Dim rand As New Random() + Dim allowableChars() As Char = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLOMNOPQRSTUVWXYZ0123456789".ToCharArray() + Dim final As String = String.Empty + For i As Integer = 0 To len - 1 + final += allowableChars(rand.Next(allowableChars.Length - 1)) + Next + + Return IIf(upper, final.ToUpper(), final) + End Function + +End Class diff --git a/Option Windows/OpExpand.Designer.vb b/Option Windows/OpExpand.Designer.vb new file mode 100644 index 000000000..467840612 --- /dev/null +++ b/Option Windows/OpExpand.Designer.vb @@ -0,0 +1,93 @@ + +Partial Class OpExpand + Inherits System.Windows.Forms.Form + + 'Form overrides dispose to clean up the component list. + + Protected Overrides Sub Dispose(ByVal disposing As Boolean) + Try + If disposing AndAlso components IsNot Nothing Then + components.Dispose() + End If + Finally + MyBase.Dispose(disposing) + End Try + End Sub + + 'Required by the Windows Form Designer + Private components As System.ComponentModel.IContainer + + 'NOTE: The following procedure is required by the Windows Form Designer + 'It can be modified using the Windows Form Designer. + 'Do not modify it using the code editor. + + Private Sub InitializeComponent() + Me.Label5 = New System.Windows.Forms.Label() + Me.Cancel_Button = New System.Windows.Forms.Button() + Me.OK_Button = New System.Windows.Forms.Button() + Me.ExpansionCodeList = New System.Windows.Forms.ListBox() + Me.SuspendLayout() + ' + 'Label5 + ' + Me.Label5.AutoSize = True + Me.Label5.Location = New System.Drawing.Point(12, 9) + Me.Label5.Name = "Label5" + Me.Label5.Size = New System.Drawing.Size(124, 13) + Me.Label5.TabIndex = 69 + Me.Label5.Text = "Current Expansion Code:" + ' + 'Cancel_Button + ' + Me.Cancel_Button.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) + Me.Cancel_Button.DialogResult = System.Windows.Forms.DialogResult.Cancel + Me.Cancel_Button.FlatStyle = System.Windows.Forms.FlatStyle.System + Me.Cancel_Button.Location = New System.Drawing.Point(144, 426) + Me.Cancel_Button.Name = "Cancel_Button" + Me.Cancel_Button.Size = New System.Drawing.Size(126, 23) + Me.Cancel_Button.TabIndex = 67 + Me.Cancel_Button.Text = "Cancel" + ' + 'OK_Button + ' + Me.OK_Button.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left), System.Windows.Forms.AnchorStyles) + Me.OK_Button.DialogResult = System.Windows.Forms.DialogResult.OK + Me.OK_Button.FlatStyle = System.Windows.Forms.FlatStyle.System + Me.OK_Button.Location = New System.Drawing.Point(12, 426) + Me.OK_Button.Name = "OK_Button" + Me.OK_Button.Size = New System.Drawing.Size(126, 23) + Me.OK_Button.TabIndex = 66 + Me.OK_Button.Text = "OK" + ' + 'ExpansionCodeList + ' + Me.ExpansionCodeList.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.ExpansionCodeList.FormattingEnabled = True + Me.ExpansionCodeList.Location = New System.Drawing.Point(12, 25) + Me.ExpansionCodeList.Name = "ExpansionCodeList" + Me.ExpansionCodeList.Size = New System.Drawing.Size(260, 394) + Me.ExpansionCodeList.TabIndex = 70 + ' + 'OpExpand + ' + Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!) + Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font + Me.ClientSize = New System.Drawing.Size(284, 461) + Me.Controls.Add(Me.ExpansionCodeList) + Me.Controls.Add(Me.Label5) + Me.Controls.Add(Me.Cancel_Button) + Me.Controls.Add(Me.OK_Button) + Me.Name = "OpExpand" + Me.Text = "Select Expansion Code" + Me.ResumeLayout(False) + Me.PerformLayout() + + End Sub + + Friend WithEvents Label5 As Label + Friend WithEvents Cancel_Button As Button + Friend WithEvents OK_Button As Button + Friend WithEvents ExpansionCodeList As ListBox +End Class diff --git a/Option Windows/OpExpand.resx b/Option Windows/OpExpand.resx new file mode 100644 index 000000000..29dcb1b3a --- /dev/null +++ b/Option Windows/OpExpand.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/Option Windows/OpExpand.vb b/Option Windows/OpExpand.vb new file mode 100644 index 000000000..de010abe0 --- /dev/null +++ b/Option Windows/OpExpand.vb @@ -0,0 +1,110 @@ +Public Class OpExpand + + Dim TExpansionTextSplit() As String = Split(MainWindow.TExpansion.Text, vbCrLf, , CompareMethod.Text) + Dim CurrSelection As Integer = -1 + Dim RangeL As Integer = -1 + Dim RangeU As Integer = -1 + Dim xStack As Integer = 0 + Private Sub OK_Button_Click(sender As Object, e As EventArgs) Handles OK_Button.Click, ExpansionCodeList.DoubleClick + ' If no line selected + If CurrSelection = -1 Then + MsgBox("Error: No line selected.") + Exit Sub + End If + + ' Find the first line of the currect #if section, right after #if + For L = CurrSelection To 0 Step -1 + If SWIC(ExpansionCodeList.Items(L), "#ENDIF") AndAlso L <> CurrSelection Then + xStack += 1 + End If + + If SWIC(ExpansionCodeList.Items(L), "#IF") Then + If xStack > 0 Then + xStack -= 1 + Else + RangeL = L + 1 + Exit For + End If + + End If + Next + ' Find the last line of the currect #if section, right before #endif + For U = CurrSelection To TExpansionTextSplit.Length - 1 + If SWIC(ExpansionCodeList.Items(U), "#IF") AndAlso U <> CurrSelection Then + xStack += 1 + End If + + If SWIC(ExpansionCodeList.Items(U), "#ENDIF") Then + If xStack > 0 Then + xStack -= 1 + Else + RangeU = U - 1 + Exit For + End If + + End If + Next + + ' If RangeL or RangeU's values have not been found + If RangeL = -1 Or RangeU = -1 Then + MsgBox("Error: #IF Section not detected.") + MainWindow.RandomFile(1) = "-" + Exit Sub + End If + + ' Split expansion code into 3 parts + Dim TExpansionTextSelected(RangeL - 1) As String + For i = 0 To RangeL - 1 + TExpansionTextSelected(i) = TExpansionTextSplit(i) + Next + MainWindow.RandomFile(0) = Join(TExpansionTextSelected, vbCrLf) + ReDim TExpansionTextSelected(RangeU - RangeL) + For i = RangeL To RangeU + TExpansionTextSelected(i - RangeL) = TExpansionTextSplit(i) + Next + MainWindow.RandomFile(1) = Join(TExpansionTextSelected, vbCrLf) + ReDim TExpansionTextSelected(TExpansionTextSplit.Length - 1 - RangeU - 1) + For i = RangeU + 1 To TExpansionTextSplit.Length - 1 + TExpansionTextSelected(i - RangeU - 1) = TExpansionTextSplit(i) + Next + MainWindow.RandomFile(2) = Join(TExpansionTextSelected, vbCrLf) + Me.Close() + End Sub + + Private Sub Cancel_Button_Click(sender As Object, e As EventArgs) Handles Cancel_Button.Click + Me.DialogResult = System.Windows.Forms.DialogResult.Cancel + Me.Close() + End Sub + + Public Sub New() + InitializeComponent() + + ' If no expansion text + If MainWindow.TExpansion.Text = "" Then + MsgBox("Error: Expansion code is empty.") + Me.Close() + Exit Sub + End If + + ' List expansion code per line + ExpansionCodeList.Items.Clear() + For Each xStrLine In TExpansionTextSplit + ExpansionCodeList.Items.Add(xStrLine) + Next + End Sub + + Private Sub ExpansionCodeList_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles ExpansionCodeList.Click + CurrSelection = ExpansionCodeList.SelectedIndex + End Sub + + Private Function SWIC(str As String, strHash As String) As Boolean ' Copied from ChartIO.vb + Return str.StartsWith(strHash, StringComparison.CurrentCultureIgnoreCase) + End Function + + Private Function ExcludeFileName(ByVal s As String) As String ' Copied from MainWindow.vb + Dim fslash As Integer = InStrRev(s, "/") + Dim bslash As Integer = InStrRev(s, "\") + If (bslash Or fslash) = 0 Then Return "" + Return Mid(s, 1, IIf(fslash > bslash, fslash, bslash) - 1) + End Function +End Class \ No newline at end of file diff --git a/Option Windows/OpPlayer.vb b/Option Windows/OpPlayer.vb new file mode 100644 index 000000000..43b7040af --- /dev/null +++ b/Option Windows/OpPlayer.vb @@ -0,0 +1,213 @@ +Imports System.Windows.Forms + +Public Class OpPlayer + Dim pArg() As MainWindow.PlayerArguments + 'Dim ImplicitChange As Boolean = False + Dim CurrPlayer As Integer = -1 + + Private Sub OK_Button_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OK_Button.Click + DialogResult = DialogResult.OK + Close() + + MainWindow.pArgs = pArg.Clone + MainWindow.CurrentPlayer = CurrPlayer + + Dispose() + End Sub + + Private Sub Cancel_Button_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Cancel_Button.Click + Me.DialogResult = System.Windows.Forms.DialogResult.Cancel + Me.Close() + Me.Dispose() + End Sub + + Private Sub OpPlayer_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load + Me.Font = MainWindow.Font + + Me.Text = Strings.fopPlayer.Title + Label1.Text = Strings.fopPlayer.Path + Label2.Text = Strings.fopPlayer.PlayFromBeginning + Label3.Text = Strings.fopPlayer.PlayFromHere + Label4.Text = Strings.fopPlayer.StopPlaying + BAdd.Text = Strings.fopPlayer.Add + BRemove.Text = Strings.fopPlayer.Remove + Label6.Text = Strings.fopPlayer.References & vbCrLf & + " = " & Strings.fopPlayer.DirectoryOfApp & vbCrLf & + " = " & Strings.fopPlayer.CurrMeasure & vbCrLf & + " = " & Strings.fopPlayer.FileName + OK_Button.Text = Strings.OK + Cancel_Button.Text = Strings.Cancel + BDefault.Text = Strings.fopPlayer.RestoreDefault + End Sub + + Private Sub LPlayer_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles LPlayer.Click + If pArg Is Nothing OrElse pArg.Length = 0 Then Exit Sub + + CurrPlayer = LPlayer.SelectedIndex + ShowInTextbox() + End Sub + + Private Sub LPlayer_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles LPlayer.KeyDown + LPlayer_Click(sender, New EventArgs) + End Sub + + Private Sub BPrevAdd_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BAdd.Click + ReDim Preserve pArg(UBound(pArg) + 1) + CurrPlayer += 1 + For xI1 As Integer = UBound(pArg) To CurrPlayer Step -1 + pArg(xI1) = pArg(xI1 - 1) + Next + + LPlayer.Items.Insert(CurrPlayer, + GetFileName(pArg(CurrPlayer - 1).Path)) + LPlayer.SelectedIndex += 1 + End Sub + + Private Sub BPrevDelete_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BRemove.Click + If LPlayer.Items.Count = 1 Then + MsgBox(Strings.Messages.PreviewDelError, MsgBoxStyle.Exclamation) + Exit Sub + End If + + For xI1 As Integer = CurrPlayer To UBound(pArg) - 1 + pArg(xI1) = pArg(xI1 + 1) + Next + ReDim Preserve pArg(UBound(pArg) - 1) + + 'RemoveHandler LPlayer.SelectedIndexChanged, AddressOf LPlayer_SelectedIndexChanged + LPlayer.Items.RemoveAt(CurrPlayer) + 'AddHandler LPlayer.SelectedIndexChanged, AddressOf LPlayer_SelectedIndexChanged + + LPlayer.SelectedIndex = IIf(CurrPlayer > UBound(pArg), CurrPlayer - 1, CurrPlayer) + CurrPlayer = Math.Min(CurrPlayer, UBound(pArg)) + ShowInTextbox() + End Sub + + Private Sub BPrevBrowse_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BBrowse.Click + Dim xDOpen As New OpenFileDialog + xDOpen.InitialDirectory = IIf(Path.GetDirectoryName(Replace(TPath.Text, "", My.Application.Info.DirectoryPath)) = "", + My.Application.Info.DirectoryPath, + Path.GetDirectoryName(Replace(TPath.Text, "", My.Application.Info.DirectoryPath))) + xDOpen.Filter = Strings.FileType.EXE & "|*.exe" + xDOpen.DefaultExt = "exe" + If xDOpen.ShowDialog = Windows.Forms.DialogResult.Cancel Then Exit Sub + TPath.Text = Replace(xDOpen.FileName, My.Application.Info.DirectoryPath, "") + End Sub + + Private Sub BPrevDefault_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BDefault.Click + 'ImplicitChange = True + If MsgBox(Strings.Messages.RestoreDefaultSettings, MsgBoxStyle.Question + MsgBoxStyle.YesNo) = MsgBoxResult.No Then Exit Sub + + pArg = New MainWindow.PlayerArguments() {New MainWindow.PlayerArguments("\mBMplay.exe", + """""", + "-s """"", + "-t"), + New MainWindow.PlayerArguments("\uBMplay.exe", + "-P -N0 """"", + "-P -N """"", + "-S"), + New MainWindow.PlayerArguments("\o2play.exe", + "-P -N0 """"", + "-P -N """"", + "-S")} + CurrPlayer = 0 + ResetLPlayer_ShowInTextbox() + 'ImplicitChange = False + End Sub + + 'Affect LPlayer and all textboxes + Private Sub ResetLPlayer_ShowInTextbox() + LPlayer.Items.Clear() + For xI1 As Integer = 0 To UBound(pArg) + LPlayer.Items.Add(GetFileName(pArg(xI1).Path)) + Next + 'RemoveHandler LPlayer.SelectedIndexChanged, AddressOf LPlayer_SelectedIndexChanged + LPlayer.SelectedIndex = CurrPlayer + 'AddHandler LPlayer.SelectedIndexChanged, AddressOf LPlayer_SelectedIndexChanged + ShowInTextbox() + 'ImplicitChange = False + End Sub + + 'affect current LPlayer index value + Private Sub LPlayerChangeCurrIndex(ByVal xStr As String) + 'RemoveHandler LPlayer.SelectedIndexChanged, AddressOf LPlayer_SelectedIndexChanged + LPlayer.Items.Item(CurrPlayer) = GetFileName(xStr) + 'AddHandler LPlayer.SelectedIndexChanged, AddressOf LPlayer_SelectedIndexChanged + End Sub + + 'Affect pArgs + Private Sub SavePArg() + pArg(CurrPlayer).Path = TPath.Text + pArg(CurrPlayer).aBegin = TPlayB.Text + pArg(CurrPlayer).aHere = TPlay.Text + pArg(CurrPlayer).aStop = TStop.Text + 'pArg(CurrPlayer) = TPath.Text & vbCrLf & _ + ' TPlayB.Text & vbCrLf & _ + ' TPlay.Text & vbCrLf & _ + ' TStop.Text + End Sub + + 'affect all textboxes + Private Sub ShowInTextbox() + 'ImplicitChange = True + 'Dim xStr() As String = Split(pArg(CurrPlayer), vbCrLf) + 'If xStr.Length <> 4 Then ReDim Preserve xStr(3) + TPath.Text = pArg(CurrPlayer).Path + TPlayB.Text = pArg(CurrPlayer).aBegin + TPlay.Text = pArg(CurrPlayer).aHere + TStop.Text = pArg(CurrPlayer).aStop + ValidateTextBox() + 'ImplicitChange = False + End Sub + + Private Sub ValidateTextBox() + For Each xT As TextBox In New TextBox() {TPath, TPlayB, TPlay, TStop} + Dim xText As String = xT.Text.Replace("", "").Replace("", "").Replace("", "").Replace("""", "") + Dim xContainsInvalidChar As Boolean = False + + For Each xC As Char In Path.GetInvalidPathChars + If xText.IndexOf(xC) <> -1 Then + xContainsInvalidChar = True + Exit For + End If + Next + + If xContainsInvalidChar Then + xT.BackColor = Color.FromArgb(&HFFFFC0C0) + Else + xT.BackColor = Nothing + End If + Next + End Sub + + Public Sub New(ByVal xCurrPlayer As Integer) + InitializeComponent() + + pArg = MainWindow.pArgs.Clone + CurrPlayer = xCurrPlayer + ResetLPlayer_ShowInTextbox() + End Sub + + Private Sub TPath_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TPath.KeyUp, TPlay.KeyUp, TPlayB.KeyUp, TStop.KeyUp + SavePArg() + If [Object].ReferenceEquals(sender, TPath) Then _ + LPlayerChangeCurrIndex(pArg(CurrPlayer).Path) + End Sub + + Private Sub TPath_LostFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles TPath.LostFocus, TPlay.LostFocus, TPlayB.LostFocus, TStop.LostFocus + SavePArg() + If [Object].ReferenceEquals(sender, TPath) Then _ + LPlayerChangeCurrIndex(pArg(CurrPlayer).Path) + ValidateTextBox() + End Sub + + 'Private Function pArgPath(ByVal I As Integer) + ' Return Mid(pArg(I), 1, InStr(pArg(I), vbCrLf) - 1) + 'End Function + + Private Function GetFileName(ByVal s As String) As String + Dim fslash As Integer = InStrRev(s, "/") + Dim bslash As Integer = InStrRev(s, "\") + Return Mid(s, IIf(fslash > bslash, fslash, bslash) + 1) + End Function +End Class diff --git a/app.config b/app.config new file mode 100644 index 000000000..1d1f08676 --- /dev/null +++ b/app.config @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/iBMSC.vbproj b/iBMSC.vbproj new file mode 100644 index 000000000..150ca9a42 --- /dev/null +++ b/iBMSC.vbproj @@ -0,0 +1,356 @@ + + + + + Debug + AnyCPU + {35281D99-2A97-4AA0-AC1E-6CDC78999A3D} + WinExe + iBMSC.My.MyApplication + iBMSC + pBMSC + 512 + WindowsForms + v4.8 + false + + publish\ + true + Disk + false + Foreground + 7 + Days + false + false + true + 0 + 1.0.0.%2a + false + true + + + AnyCPU + true + full + true + true + bin\Debug\ + pBMSC.xml + 41999,42016,42017,42018,42019,42020,42021,42022,42032,42036 + false + + + AnyCPU + pdbonly + false + true + true + bin\Release\ + pBMSC.xml + 41999,42016,42017,42018,42019,42020,42021,42022,42032,42036 + false + + + On + + + Binary + + + Off + + + On + + + Icon.ico + + + My Project\app.manifest + + + true + bin\test\ + pBMSC.xml + true + 41999,42016,42017,42018,42019,42020,42021,42022,42032,42036 + pdbonly + AnyCPU + + + + ..\packages\CSCore.1.2.1.1\lib\net35-client\CSCore.dll + + + ..\packages\NVorbis.0.8.5.0\lib\NVorbis.dll + + + + + + + + + + + + + + + + + + + + + + + + + + + Form + + + + Component1.vb + + + Component + + + + + Form + + + AboutBox1.vb + + + Form + + + + ColorPicker.vb + + + Form + + + dgImportSM.vb + + + Form + + + dgMyO2.vb + + + Form + + + dgStatistics.vb + + + Form + + + diagFind.vb + + + Form + + + fLoadFileProgress.vb + + + Form + + + SplashScreen1.vb + + + Form + + + Form + + + Form + + + Form + + + + MainWindow.vb + + + Form + + + Form + + + Form + + + OpExpand.vb + + + Form + + + Form + + + Form + + + + Form + + + + + + + True + Application.myapp + True + + + True + True + Resources.resx + + + True + Settings.settings + True + + + OpGeneral.vb + + + Form + + + OpPlayer.vb + + + Form + + + OpVisual.vb + + + Form + + + OpVisual.vb + + + Form + + + + + Form + + + + + + AboutBox1.vb + + + ColorPicker.vb + + + dgImportSM.vb + + + dgMyO2.vb + + + dgMyO2.vb + + + dgStatistics.vb + + + diagFind.vb + + + fLoadFileProgress.vb + + + SplashScreen1.vb + + + MainWindow.vb + + + VbMyResourcesResXFileCodeGenerator + Resources.Designer.vb + My.Resources + Designer + + + OpExpand.vb + + + OpGeneral.vb + + + OpPlayer.vb + + + OpVisual.vb + + + OpVisualCO.vb + + + + + + + MyApplicationCodeGenerator + Application.Designer.vb + + + SettingsSingleFileGenerator + My + Settings.Designer.vb + + + + + + False + .NET Framework 3.5 SP1 Client Profile + false + + + False + .NET Framework 3.5 SP1 + true + + + + + + + + + + \ No newline at end of file diff --git a/packages.config b/packages.config new file mode 100644 index 000000000..8b3357a22 --- /dev/null +++ b/packages.config @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file From d2d007034e7fb1fab1edbb0e3745ef1e9df6ee0c Mon Sep 17 00:00:00 2001 From: psyk2642 <60137590+psyk2642@users.noreply.github.com> Date: Fri, 11 Mar 2022 20:02:56 +0800 Subject: [PATCH 042/257] Update README.md --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index f5f3484cf..7a1bb9b0b 100644 --- a/README.md +++ b/README.md @@ -22,6 +22,8 @@ Listed in the order added. * Removed restriction for drag and dropping files, as well as opening files. Mainly for opening bms template files, not tested thoroughly. * Added note search function (goto measure except it's goto note). One note per VPosition only. * Added sort function. Selected notes are sorted based on their VPosition and Value. +* Added mBMplay as a default player. +* Added support for #RANDOM, including nested #RANDOM. Supports expansion field and main data field only. Not tested thoroughly. ## Keyboard shortcuts * Changed keybinding to allow note placement between D1 and D8. * Numpad keys are now assigned to 2P lanes. From 81e511f0dd138093e92ec6f2061e389a2730e97c Mon Sep 17 00:00:00 2001 From: psyk2642 <60137590+psyk2642@users.noreply.github.com> Date: Fri, 11 Mar 2022 20:06:34 +0800 Subject: [PATCH 043/257] Revert "#Random Support + Miscellaneous" This reverts commit 45828aca45a1c826fe12cf820e180443630414b0. --- Audio.vb | 131 - ChartIO.vb | 1291 ------- MainWindow.designer.vb | 4577 ------------------------ MainWindow.resx | 2484 ------------- MainWindow.vb | 5017 --------------------------- Option Windows/OpExpand.Designer.vb | 93 - Option Windows/OpExpand.resx | 120 - Option Windows/OpExpand.vb | 110 - Option Windows/OpPlayer.vb | 213 -- app.config | 23 - iBMSC.vbproj | 356 -- packages.config | 5 - 12 files changed, 14420 deletions(-) delete mode 100644 Audio.vb delete mode 100644 ChartIO.vb delete mode 100644 MainWindow.designer.vb delete mode 100644 MainWindow.resx delete mode 100644 MainWindow.vb delete mode 100644 Option Windows/OpExpand.Designer.vb delete mode 100644 Option Windows/OpExpand.resx delete mode 100644 Option Windows/OpExpand.vb delete mode 100644 Option Windows/OpPlayer.vb delete mode 100644 app.config delete mode 100644 iBMSC.vbproj delete mode 100644 packages.config diff --git a/Audio.vb b/Audio.vb deleted file mode 100644 index 2a42b0a0b..000000000 --- a/Audio.vb +++ /dev/null @@ -1,131 +0,0 @@ -Imports NVorbis -Imports CSCore -Imports CSCore.Codecs -Imports CSCore.SoundOut - -Module Audio - Dim Output As WasapiOut - Dim Source As IWaveSource - - Public Sub Initialize() - Output = New WasapiOut() - CodecFactory.Instance.Register("ogg", New CodecFactoryEntry(Function(s) - Return New NVorbisSource(s).ToWaveSource() - End Function, ".ogg")) - End Sub - - Public Sub Finalize() - Output.Stop() - Output.Dispose() - Output = Nothing - End Sub - - Public Function CheckFilename(ByVal filename As String) As String - If File.Exists(filename) Then - Return filename - End If - Dim ext = Path.GetExtension(filename) - If String.Compare(ext, ".ogg") = 0 Then - Dim wpath = Path.ChangeExtension(filename, ".wav") - Return IIf(File.Exists(wpath), wpath, filename) - End If - If String.Compare(ext, ".wav") = 0 Then - Dim opath = Path.ChangeExtension(filename, ".ogg") - Return IIf(File.Exists(opath), opath, filename) - End If - Return filename - End Function - - Public Sub Play(ByVal filename As String) - If Source IsNot Nothing Then - Output.Stop() - Source.Dispose() - Source = Nothing - End If - - If filename Is "" Then - Return - End If - - Dim fn = CheckFilename(filename) - - ' P: How to catch without crashing - Try - Source = CodecFactory.Instance.GetCodec(fn) - Output.Initialize(Source) - Output.Play() - Catch ex As Exception - MsgBox("Error: " + ex.Message) - Exit Sub - End Try - End Sub - - Public Sub StopPlaying() - Output.Stop() - End Sub -End Module - -Class NVorbisSource - Implements CSCore.ISampleSource - Dim _stream As Stream - Dim _vorbisReader As VorbisReader - Dim _waveFormat As WaveFormat - Dim _disposed As Boolean - - Public Sub New(stream As Stream) - If stream Is Nothing Or Not stream.CanRead Then - Throw New ArgumentException("stream") - End If - _stream = stream - _vorbisReader = New VorbisReader(stream, Nothing) - _waveFormat = New WaveFormat(_vorbisReader.SampleRate, 32, _vorbisReader.Channels, AudioEncoding.IeeeFloat) - End Sub - - Public ReadOnly Property CanSeek As Boolean Implements IAudioSource.CanSeek - Get - Return _stream.CanSeek - End Get - End Property - - Public ReadOnly Property WaveFormat As WaveFormat Implements IAudioSource.WaveFormat - Get - Return _waveFormat - End Get - End Property - - Public ReadOnly Property Length As Long Implements IAudioSource.Length - Get - Return IIf(CanSeek, _vorbisReader.TotalTime.TotalSeconds * _waveFormat.SampleRate * _waveFormat.Channels, 0) - End Get - End Property - - Public Property Position As Long Implements IAudioSource.Position - Get - Return IIf(CanSeek, _vorbisReader.DecodedTime.TotalSeconds * _vorbisReader.SampleRate * _vorbisReader.Channels, 0) - End Get - Set(value As Long) - If Not CanSeek Then - Throw New InvalidOperationException("Can't seek this stream.") - End If - If value < 0 Or value >= Length Then - Throw New ArgumentOutOfRangeException("value") - End If - _vorbisReader.DecodedTime = TimeSpan.FromSeconds(value / _vorbisReader.SampleRate / _vorbisReader.Channels) - End Set - End Property - - - Public Function Read(buffer As Single(), offset As Integer, count As Integer) As Integer Implements ISampleSource.Read - Return _vorbisReader.ReadSamples(buffer, offset, count) - End Function - - Public Sub Dispose() Implements IDisposable.Dispose - If Not _disposed Then - '_vorbisReader.Dispose() - Else - 'Throw New ObjectDisposedException("NVorbisSource") - End If - _disposed = True - End Sub - -End Class diff --git a/ChartIO.vb b/ChartIO.vb deleted file mode 100644 index 943579527..000000000 --- a/ChartIO.vb +++ /dev/null @@ -1,1291 +0,0 @@ -Imports iBMSC.Editor - -Partial Public Class MainWindow - Private Sub OpenBMS(ByVal xStrAll As String) - KMouseOver = -1 - - 'Line feed validation: will remove some empty lines - xStrAll = Replace(Replace(Replace(xStrAll, vbLf, vbCr), vbCr & vbCr, vbCr), vbCr, vbCrLf) - - Dim xStrLine() As String = Split(xStrAll, vbCrLf, , CompareMethod.Text) - Dim xStrLine2(xStrLine.Length) As String ' Create a second array which removes expansion codes from the second for loop - Dim xI1 As Integer - Dim sLine As String - Dim xExpansion As String = "" - ReDim Notes(0) - ReDim mColumn(999) - ReDim hWAV(1295) - ReDim hBPM(1295) 'x10000 - ReDim hSTOP(1295) - ReDim hSCROLL(1295) - Me.InitializeNewBMS() - Me.InitializeOpenBMS() - - With Notes(0) - .ColumnIndex = niBPM - .VPosition = -1 - '.LongNote = False - '.Selected = False - .Value = 1200000 - End With - - 'old list below, not sure what this means - 'random, setRandom 0 - 'endRandom 0 - 'if +1 - 'else 0 - 'endif -1 - 'switch, setSwitch +1 - 'case, skip, def 0 - 'endSw -1 - - 'P: I'm gonna do what's called a pro gamer move - - Dim xStack As Integer = 0 - Dim nLine As Integer = -1 - - For Each sLine In xStrLine - Dim sLineTrim As String = sLine.Trim - If xStack > 0 Then GoTo Expansion - - - If sLineTrim.StartsWith("#") And Mid(sLineTrim, 5, 3) = "02:" Then - Dim xIndex As Integer = Val(Mid(sLineTrim, 2, 3)) - Dim xRatio As Double = Val(Mid(sLineTrim, 8)) - Dim xxD As Long = GetDenominator(xRatio) - MeasureLength(xIndex) = xRatio * 192.0R - LBeat.Items(xIndex) = Add3Zeros(xIndex) & ": " & xRatio & IIf(xxD > 10000, "", " ( " & CLng(xRatio * xxD) & " / " & xxD & " ) ") - GoTo AddToxStrLine2 - - ElseIf SWIC(sLineTrim, "#WAV") Then - hWAV(C36to10(Mid(sLineTrim, Len("#WAV") + 1, 2))) = Mid(sLineTrim, Len("#WAV") + 4) - GoTo AddToxStrLine2 - - ElseIf SWIC(sLineTrim, "#BPM") And Not Mid(sLineTrim, Len("#BPM") + 1, 1).Trim = "" Then 'If BPM## - ' zdr: No limits on BPM editing.. they don't make much sense. - hBPM(C36to10(Mid(sLineTrim, Len("#BPM") + 1, 2))) = Val(Mid(sLineTrim, Len("#BPM") + 4)) * 10000 - GoTo AddToxStrLine2 - - 'No limits on STOPs either. - ElseIf SWIC(sLineTrim, "#STOP") Then - hSTOP(C36to10(Mid(sLineTrim, Len("#STOP") + 1, 2))) = Val(Mid(sLineTrim, Len("#STOP") + 4)) * 10000 - GoTo AddToxStrLine2 - - ElseIf SWIC(sLineTrim, "#SCROLL") Then - hSCROLL(C36to10(Mid(sLineTrim, Len("#SCROLL") + 1, 2))) = Val(Mid(sLineTrim, Len("#SCROLL") + 4)) * 10000 - GoTo AddToxStrLine2 - - ElseIf SWIC(sLineTrim, "#TITLE") Then - THTitle.Text = Mid(sLineTrim, Len("#TITLE") + 1).Trim - GoTo AddToxStrLine2 - - ElseIf SWIC(sLineTrim, "#ARTIST") Then - THArtist.Text = Mid(sLineTrim, Len("#ARTIST") + 1).Trim - GoTo AddToxStrLine2 - - ElseIf SWIC(sLineTrim, "#GENRE") Then - THGenre.Text = Mid(sLineTrim, Len("#GENRE") + 1).Trim - GoTo AddToxStrLine2 - - ElseIf SWIC(sLineTrim, "#BPM") Then 'If BPM #### - Notes(0).Value = Val(Mid(sLineTrim, Len("#BPM") + 1).Trim) * 10000 - THBPM.Value = Notes(0).Value / 10000 - GoTo AddToxStrLine2 - - ElseIf SWIC(sLineTrim, "#PLAYER") Then - Dim xInt As Integer = Val(Mid(sLineTrim, Len("#PLAYER") + 1).Trim) - If xInt >= 1 And xInt <= 4 Then _ - CHPlayer.SelectedIndex = xInt - 1 - GoTo AddToxStrLine2 - - ElseIf SWIC(sLineTrim, "#RANK") Then - Dim xInt As Integer = Val(Mid(sLineTrim, Len("#RANK") + 1).Trim) - If xInt >= 0 And xInt <= 4 Then _ - CHRank.SelectedIndex = xInt - GoTo AddToxStrLine2 - - ElseIf SWIC(sLineTrim, "#PLAYLEVEL") Then - THPlayLevel.Text = Mid(sLineTrim, Len("#PLAYLEVEL") + 1).Trim - GoTo AddToxStrLine2 - - ElseIf SWIC(sLineTrim, "#SUBTITLE") Then - THSubTitle.Text = Mid(sLineTrim, Len("#SUBTITLE") + 1).Trim - GoTo AddToxStrLine2 - - ElseIf SWIC(sLineTrim, "#SUBARTIST") Then - THSubArtist.Text = Mid(sLineTrim, Len("#SUBARTIST") + 1).Trim - GoTo AddToxStrLine2 - - ElseIf SWIC(sLineTrim, "#STAGEFILE") Then - THStageFile.Text = Mid(sLineTrim, Len("#STAGEFILE") + 1).Trim - GoTo AddToxStrLine2 - - ElseIf SWIC(sLineTrim, "#BANNER") Then - THBanner.Text = Mid(sLineTrim, Len("#BANNER") + 1).Trim - GoTo AddToxStrLine2 - - ElseIf SWIC(sLineTrim, "#BACKBMP") Then - THBackBMP.Text = Mid(sLineTrim, Len("#BACKBMP") + 1).Trim - GoTo AddToxStrLine2 - - ElseIf SWIC(sLineTrim, "#DIFFICULTY") Then - Try - CHDifficulty.SelectedIndex = Integer.Parse(Mid(sLineTrim, Len("#DIFFICULTY") + 1).Trim) - Catch ex As Exception - End Try - GoTo AddToxStrLine2 - - ElseIf SWIC(sLineTrim, "#DEFEXRANK") Then - THExRank.Text = Mid(sLineTrim, Len("#DEFEXRANK") + 1).Trim - GoTo AddToxStrLine2 - - ElseIf SWIC(sLineTrim, "#TOTAL") Then - Dim xStr As String = Mid(sLineTrim, Len("#TOTAL") + 1).Trim - 'If xStr.EndsWith("%") Then xStr = Mid(xStr, 1, Len(xStr) - 1) - THTotal.Text = xStr - GoTo AddToxStrLine2 - - ElseIf SWIC(sLineTrim, "#COMMENT") Then - Dim xStr As String = Mid(sLineTrim, Len("#COMMENT") + 1).Trim - If xStr.StartsWith("""") Then xStr = Mid(xStr, 2) - If xStr.EndsWith("""") Then xStr = Mid(xStr, 1, Len(xStr) - 1) - THComment.Text = xStr - GoTo AddToxStrLine2 - - ElseIf SWIC(sLineTrim, "#LNTYPE") Then - 'THLnType.Text = Mid(sLineTrim, Len("#LNTYPE") + 1).Trim - If Val(Mid(sLineTrim, Len("#LNTYPE") + 1).Trim) = 1 Then CHLnObj.SelectedIndex = 0 - GoTo AddToxStrLine2 - - ElseIf SWIC(sLineTrim, "#LNOBJ") Then - Dim xValue As Integer = C36to10(Mid(sLineTrim, Len("#LNOBJ") + 1).Trim) - CHLnObj.SelectedIndex = xValue - GoTo AddToxStrLine2 - - 'TODO: LNOBJ value validation - - 'ElseIf SWIC(sLineTrim,"#LNTYPE") Then - ' CAdLNTYPE.Checked = True - ' If Mid(sLineTrim, 9) = "" Or Mid(sLineTrim, 9) = "1" Or Mid(sLineTrim, 9) = "01" Then CAdLNTYPEb.Text = "1" - ' CAdLNTYPEb.Text = Mid(sLineTrim, 9) - - ElseIf sLineTrim.StartsWith("#") And Mid(sLineTrim, 7, 1) = ":" Then 'If the line contains Ks - Dim xIdentifier As String = Mid(sLineTrim, 5, 2) - If BMSChannelToColumn(xIdentifier) = 0 Then GoTo AddExpansion - - ' If does not belong to expansion code, execute below -AddToxStrLine2: nLine += 1 - xStrLine2(nLine) = sLineTrim - - Else -Expansion: If SWIC(sLineTrim, "#IF") Or SWIC(sLineTrim, "#SWITCH") Or SWIC(sLineTrim, "#SETSWITCH") Then - xStack += 1 : GoTo AddExpansion - ElseIf SWIC(sLineTrim, "#ENDIF") Or SWIC(sLineTrim, "#ENDSW") Then - xStack -= 1 : GoTo AddExpansion - - ElseIf sLineTrim.StartsWith("#") Then -AddExpansion: xExpansion &= sLine & vbCrLf - - End If - - End If - Next - - UpdateMeasureBottom() - - ReDim Preserve xStrLine2(nLine) - - ' BPM must be updated before loading notes, do not combine loops - For Each sLineTrim In xStrLine2 - - If Not (sLineTrim.StartsWith("#") And Mid(sLineTrim, 7, 1) = ":") Then Continue For 'If the line contains Ks ' P: The hell is a K - - ' >> Measure = Mid(sLine, 2, 3) - ' >> Column Identifier = Mid(sLine, 5, 2) - ' >> K = Mid(sLine, xI1, 2) - Dim xMeasure As Integer = Val(Mid(sLineTrim, 2, 3)) - Dim Channel As String = Mid(sLineTrim, 5, 2) - If BMSChannelToColumn(Channel) = 0 Then Continue For - - If Channel = "01" Then mColumn(xMeasure) += 1 'If the identifier is 01 then add a B column in that measure - For xI1 = 8 To Len(sLineTrim) - 1 Step 2 'For all Ks within that line ( - 1 can be ommitted ) - If Mid(sLineTrim, xI1, 2) = "00" Then Continue For 'If the K is not 00 - - ReDim Preserve Notes(Notes.Length) - - With Notes(UBound(Notes)) - .ColumnIndex = BMSChannelToColumn(Channel) + - IIf(Channel = "01", 1, 0) * (mColumn(xMeasure) - 1) - .LongNote = IsChannelLongNote(Channel) - .Hidden = IsChannelHidden(Channel) - .Landmine = IsChannelLandmine(Channel) - .Selected = False - .VPosition = MeasureBottom(xMeasure) + MeasureLength(xMeasure) * (xI1 / 2 - 4) / ((Len(sLineTrim) - 7) / 2) - .Value = C36to10(Mid(sLineTrim, xI1, 2)) * 10000 - - If Channel = "03" Then .Value = Convert.ToInt32(Mid(sLineTrim, xI1, 2), 16) * 10000 - If Channel = "08" Then .Value = hBPM(C36to10(Mid(sLineTrim, xI1, 2))) - If Channel = "09" Then .Value = hSTOP(C36to10(Mid(sLineTrim, xI1, 2))) - If Channel = "SC" Then .Value = hSCROLL(C36to10(Mid(sLineTrim, xI1, 2))) - End With - - Next - Next - - If NTInput Then ConvertBMSE2NT() - - LWAV.Visible = False - LWAV.Items.Clear() - For xI1 = 1 To 1295 - LWAV.Items.Add(C10to36(xI1) & ": " & hWAV(xI1)) - Next - LWAV.SelectedIndex = 0 - LWAV.Visible = True - - TExpansion.Text = xExpansion - - SortByVPositionQuick(0, UBound(Notes)) - UpdatePairing() - CalculateTotalPlayableNotes() - CalculateGreatestVPosition() - RefreshPanelAll() - POStatusRefresh() - End Sub - - ReadOnly BMSChannelList() As String = {"01", "03", "04", "06", "07", "08", "09", - "11", "12", "13", "14", "15", "16", "18", "19", - "21", "22", "23", "24", "25", "26", "28", "29", - "31", "32", "33", "34", "35", "36", "38", "39", - "41", "42", "43", "44", "45", "46", "48", "49", - "51", "52", "53", "54", "55", "56", "58", "59", - "61", "62", "63", "64", "65", "66", "68", "69", - "D1", "D2", "D3", "D4", "D5", "D6", "D8", "D9", - "E1", "E2", "E3", "E4", "E5", "E6", "E8", "E9", - "SC"} - ' 71 through 89 are reserved - '"71", "72", "73", "74", "75", "76", "78", "79", - '"81", "82", "83", "84", "85", "86", "88", "89", - - Private Function SWIC(str As String, strHash As String) As Boolean ' StartsWith, IgnoreCase - Return str.StartsWith(strHash, StringComparison.CurrentCultureIgnoreCase) - End Function - - Private Function SaveBMS() As String - CalculateGreatestVPosition() - SortByVPositionInsertion() - UpdatePairing() - Dim MeasureIndex As Integer - Dim hasOverlapping As Boolean = False - 'Dim xStrAll As String = "" 'for all - Dim xStrMeasure(MeasureAtDisplacement(GreatestVPosition) + 1) As String - - ' We regenerate these when traversing the bms event list. - ReDim hBPM(0) - ReDim hSTOP(0) - ReDim hSCROLL(0) - - Dim xNTInput As Boolean = NTInput - Dim xKBackUp() As Note = Notes - If xNTInput Then - NTInput = False - ConvertNT2BMSE() - End If - - Dim tempNote As Note 'Temp K - - Dim xprevNotes(-1) As Note 'Notes too close to the next measure - - For MeasureIndex = 0 To MeasureAtDisplacement(GreatestVPosition) + 1 'For xI1 in each measure - xStrMeasure(MeasureIndex) = vbCrLf - - Dim consistentDecimalStr = WriteDecimalWithDot(MeasureLength(MeasureIndex) / 192.0R) - - ' Handle fractional measure - If MeasureLength(MeasureIndex) <> 192.0R Then xStrMeasure(MeasureIndex) &= "#" & Add3Zeros(MeasureIndex) & "02:" & consistentDecimalStr & vbCrLf - - ' Get note count in current measure - Dim LowerLimit As Integer = Nothing - Dim UpperLimit As Integer = Nothing - GetMeasureLimits(MeasureIndex, LowerLimit, UpperLimit) - - If UpperLimit - LowerLimit = 0 Then Continue For 'If there is no K in the current measure then end this loop - - ' Get notes from this measure - Dim xUPrevText As Integer = UBound(xprevNotes) - Dim NotesInMeasure(UpperLimit - LowerLimit + xUPrevText) As Note - - ' Copy notes from previous array - For i = 0 To xUPrevText - NotesInMeasure(i) = xprevNotes(i) - Next - - ' Copy notes in current measure - For i = LowerLimit To UpperLimit - 1 - NotesInMeasure(i - LowerLimit + xprevNotes.Length) = Notes(i) - Next - - ' Find greatest column. - ' Since background tracks have the highest column values - ' this - niB will yield the number of B columns. - Dim GreatestColumn = 0 - For Each tempNote In NotesInMeasure - GreatestColumn = Math.Max(tempNote.ColumnIndex, GreatestColumn) - Next - - ReDim xprevNotes(-1) - xStrMeasure(MeasureIndex) &= GenerateBackgroundTracks(MeasureIndex, hasOverlapping, NotesInMeasure, GreatestColumn, xprevNotes) - xStrMeasure(MeasureIndex) &= GenerateKeyTracks(MeasureIndex, hasOverlapping, NotesInMeasure, xprevNotes) - Next - - ' Warn about 255 limit if neccesary. - If hasOverlapping Then MsgBox(Strings.Messages.SaveWarning & vbCrLf & - Strings.Messages.NoteOverlapError & vbCrLf & - Strings.Messages.SavedFileWillContainErrors, MsgBoxStyle.Exclamation) - If UBound(hBPM) > IIf(BPMx1296, 1295, 255) Then MsgBox(Strings.Messages.SaveWarning & vbCrLf & - Strings.Messages.BPMOverflowError & UBound(hBPM) & " > " & IIf(BPMx1296, 1295, 255) & vbCrLf & - Strings.Messages.SavedFileWillContainErrors, MsgBoxStyle.Exclamation) - If UBound(hSTOP) > IIf(STOPx1296, 1295, 255) Then MsgBox(Strings.Messages.SaveWarning & vbCrLf & - Strings.Messages.STOPOverflowError & UBound(hSTOP) & " > " & IIf(STOPx1296, 1295, 255) & vbCrLf & - Strings.Messages.SavedFileWillContainErrors, MsgBoxStyle.Exclamation) - If UBound(hSCROLL) > 1295 Then MsgBox(Strings.Messages.SaveWarning & vbCrLf & - Strings.Messages.SCROLLOverflowError & UBound(hSCROLL) & " > " & 1295 & vbCrLf & - Strings.Messages.SavedFileWillContainErrors, MsgBoxStyle.Exclamation) - - ' Add expansion text - Dim xStrExp As String = vbCrLf & "*---------------------- EXPANSION FIELD" & vbCrLf & TExpansion.Text & vbCrLf & vbCrLf - If TExpansion.Text = "" Then xStrExp = "" - - ' Output main data field. - Dim xStrMain As String = "*---------------------- MAIN DATA FIELD" & vbCrLf & vbCrLf & Join(xStrMeasure, "") & vbCrLf - - If xNTInput Then - Notes = xKBackUp - NTInput = True - End If - - ' Generate headers now, since we have the unique BPM/STOP/etc declarations. - Dim xStrHeader As String = GenerateHeaderMeta() - xStrHeader &= GenerateHeaderIndexedData() - - Dim xStrAll As String = xStrHeader & vbCrLf & xStrExp & vbCrLf & xStrMain - Return xStrAll - End Function - - Private Function SaveRandomBMS() As String - ' Straight up copied and pasted from SaveBMS. Optimization will be later. - CalculateGreatestVPosition() - SortByVPositionInsertion() - UpdatePairing() - Dim MeasureIndex As Integer - Dim hasOverlapping As Boolean = False - 'Dim xStrAll As String = "" 'for all - Dim xStrMeasure(MeasureAtDisplacement(GreatestVPosition) + 1) As String - - ' We regenerate these when traversing the bms event list. - ReDim hBPM(0) - ReDim hSTOP(0) - ReDim hSCROLL(0) - - Dim xNTInput As Boolean = NTInput - Dim xKBackUp() As Note = Notes - If xNTInput Then - NTInput = False - ConvertNT2BMSE() - End If - - Dim tempNote As Note 'Temp K - - Dim xprevNotes(-1) As Note 'Notes too close to the next measure - - For MeasureIndex = 0 To MeasureAtDisplacement(GreatestVPosition) + 1 'For xI1 in each measure - xStrMeasure(MeasureIndex) = vbCrLf - - Dim consistentDecimalStr = WriteDecimalWithDot(MeasureLength(MeasureIndex) / 192.0R) - - ' Handle fractional measure - If MeasureLength(MeasureIndex) <> 192.0R Then xStrMeasure(MeasureIndex) &= "#" & Add3Zeros(MeasureIndex) & "02:" & consistentDecimalStr & vbCrLf - - ' Get note count in current measure - Dim LowerLimit As Integer = Nothing - Dim UpperLimit As Integer = Nothing - GetMeasureLimits(MeasureIndex, LowerLimit, UpperLimit) - - If UpperLimit - LowerLimit = 0 Then Continue For 'If there is no K in the current measure then end this loop - - ' Get notes from this measure - Dim xUPrevText As Integer = UBound(xprevNotes) - Dim NotesInMeasure(UpperLimit - LowerLimit + xUPrevText) As Note - - ' Copy notes from previous array - For i = 0 To xUPrevText - NotesInMeasure(i) = xprevNotes(i) - Next - - ' Copy notes in current measure - For i = LowerLimit To UpperLimit - 1 - NotesInMeasure(i - LowerLimit + xprevNotes.Length) = Notes(i) - Next - - ' Find greatest column. - ' Since background tracks have the highest column values - ' this - niB will yield the number of B columns. - Dim GreatestColumn = 0 - For Each tempNote In NotesInMeasure - GreatestColumn = Math.Max(tempNote.ColumnIndex, GreatestColumn) - Next - - ReDim xprevNotes(-1) - xStrMeasure(MeasureIndex) &= GenerateBackgroundTracks(MeasureIndex, hasOverlapping, NotesInMeasure, GreatestColumn, xprevNotes) - xStrMeasure(MeasureIndex) &= GenerateKeyTracks(MeasureIndex, hasOverlapping, NotesInMeasure, xprevNotes) - Next - - ' Warn about 255 limit if neccesary. - If hasOverlapping Then MsgBox(Strings.Messages.SaveWarning & vbCrLf & - Strings.Messages.NoteOverlapError & vbCrLf & - Strings.Messages.SavedFileWillContainErrors, MsgBoxStyle.Exclamation) - If UBound(hBPM) > IIf(BPMx1296, 1295, 255) Then MsgBox(Strings.Messages.SaveWarning & vbCrLf & - Strings.Messages.BPMOverflowError & UBound(hBPM) & " > " & IIf(BPMx1296, 1295, 255) & vbCrLf & - Strings.Messages.SavedFileWillContainErrors, MsgBoxStyle.Exclamation) - If UBound(hSTOP) > IIf(STOPx1296, 1295, 255) Then MsgBox(Strings.Messages.SaveWarning & vbCrLf & - Strings.Messages.STOPOverflowError & UBound(hSTOP) & " > " & IIf(STOPx1296, 1295, 255) & vbCrLf & - Strings.Messages.SavedFileWillContainErrors, MsgBoxStyle.Exclamation) - If UBound(hSCROLL) > 1295 Then MsgBox(Strings.Messages.SaveWarning & vbCrLf & - Strings.Messages.SCROLLOverflowError & UBound(hSCROLL) & " > " & 1295 & vbCrLf & - Strings.Messages.SavedFileWillContainErrors, MsgBoxStyle.Exclamation) - - ' Add expansion text - Dim xStrExp As String = vbCrLf & TExpansion.Text & vbCrLf & vbCrLf - If TExpansion.Text = "" Then xStrExp = "" - - ' Output main data field. - Dim xStrMain As String = vbCrLf & Join(xStrMeasure, "") & vbCrLf - - If xNTInput Then - Notes = xKBackUp - NTInput = True - End If - - Dim xStrAll As String = xStrExp & vbCrLf & xStrMain & vbCrLf & "*---------------------- RANDOM DATA FIELD" - Return xStrAll - End Function - - Private Function GenerateHeaderMeta() As String - Dim xStrHeader As String = vbCrLf & "*---------------------- HEADER FIELD" & vbCrLf & vbCrLf - xStrHeader &= "#PLAYER " & (CHPlayer.SelectedIndex + 1) & vbCrLf - xStrHeader &= "#GENRE " & THGenre.Text & vbCrLf - xStrHeader &= "#TITLE " & THTitle.Text & vbCrLf - xStrHeader &= "#ARTIST " & THArtist.Text & vbCrLf - xStrHeader &= "#BPM " & WriteDecimalWithDot(Notes(0).Value / 10000) & vbCrLf - xStrHeader &= "#PLAYLEVEL " & THPlayLevel.Text & vbCrLf - xStrHeader &= "#RANK " & CHRank.SelectedIndex & vbCrLf - xStrHeader &= vbCrLf - If THSubTitle.Text <> "" Then xStrHeader &= "#SUBTITLE " & THSubTitle.Text & vbCrLf - If THSubArtist.Text <> "" Then xStrHeader &= "#SUBARTIST " & THSubArtist.Text & vbCrLf - If THStageFile.Text <> "" Then xStrHeader &= "#STAGEFILE " & THStageFile.Text & vbCrLf - If THBanner.Text <> "" Then xStrHeader &= "#BANNER " & THBanner.Text & vbCrLf - If THBackBMP.Text <> "" Then xStrHeader &= "#BACKBMP " & THBackBMP.Text & vbCrLf - xStrHeader &= vbCrLf - If CHDifficulty.SelectedIndex Then xStrHeader &= "#DIFFICULTY " & CHDifficulty.SelectedIndex & vbCrLf - If THExRank.Text <> "" Then xStrHeader &= "#DEFEXRANK " & THExRank.Text & vbCrLf - If THTotal.Text <> "" Then xStrHeader &= "#TOTAL " & THTotal.Text & vbCrLf - If THComment.Text <> "" Then xStrHeader &= "#COMMENT """ & THComment.Text & """" & vbCrLf - 'If THLnType.Text <> "" Then xStrHeader &= "#LNTYPE " & THLnType.Text & vbCrLf - If CHLnObj.SelectedIndex > 0 Then xStrHeader &= "#LNOBJ " & C10to36(CHLnObj.SelectedIndex) & vbCrLf _ - Else xStrHeader &= "#LNTYPE 1" & vbCrLf - xStrHeader &= vbCrLf - Return xStrHeader - End Function - - Private Function GenerateHeaderIndexedData() As String - Dim xStrHeader As String = "" - - For i = 1 To UBound(hWAV) - If Not hWAV(i) = "" Then xStrHeader &= "#WAV" & C10to36(i) & - " " & hWAV(i) & vbCrLf - Next - For i = 1 To UBound(hBPM) - xStrHeader &= "#BPM" & - IIf(BPMx1296, C10to36(i), Mid("0" & Hex(i), Len(Hex(i)))) & - " " & WriteDecimalWithDot(hBPM(i) / 10000) & vbCrLf - Next - For i = 1 To UBound(hSTOP) - xStrHeader &= "#STOP" & - IIf(STOPx1296, C10to36(i), Mid("0" & Hex(i), Len(Hex(i)))) & - " " & WriteDecimalWithDot(hSTOP(i) / 10000) & vbCrLf - Next - For i = 1 To UBound(hSCROLL) - xStrHeader &= "#SCROLL" & - C10to36(i) & " " & WriteDecimalWithDot(hSCROLL(i) / 10000) & vbCrLf - Next - - Return xStrHeader - End Function - - Private Sub GetMeasureLimits(MeasureIndex As Integer, ByRef LowerLimit As Integer, ByRef UpperLimit As Integer) - Dim NoteCount = UBound(Notes) - LowerLimit = 0 - - For i = 1 To NoteCount 'Collect Ks in the same measure - If MeasureAtDisplacement(Notes(i).VPosition) >= MeasureIndex Then - LowerLimit = i - Exit For - End If 'Lower limit found - Next - - UpperLimit = 0 - - For i = LowerLimit To NoteCount - If MeasureAtDisplacement(Notes(i).VPosition) > MeasureIndex Then - UpperLimit = i - Exit For 'Upper limit found - End If - Next - - If UpperLimit < LowerLimit Then UpperLimit = NoteCount + 1 - End Sub - - Private Function GenerateKeyTracks(MeasureIndex As Integer, ByRef hasOverlapping As Boolean, NotesInMeasure() As Note, ByRef xprevNotes() As Note) As String - Dim CurrentBMSChannel As String - Dim Ret As String = "" - - For Each CurrentBMSChannel In BMSChannelList 'Start rendering other notes - Dim relativeMeasurePos(-1) 'Ks in the same column - Dim NoteStrings(-1) 'Ks in the same column - - ' Background tracks take care of this. - If CurrentBMSChannel = "01" Then Continue For - - - For NoteIndex = 0 To UBound(NotesInMeasure) 'Find Ks in the same column (xI4 is TK index) - - Dim currentNote As Note = NotesInMeasure(NoteIndex) - If GetBMSChannelBy(currentNote) = CurrentBMSChannel Then - - ReDim Preserve relativeMeasurePos(UBound(relativeMeasurePos) + 1) - ReDim Preserve NoteStrings(UBound(NoteStrings) + 1) - relativeMeasurePos(UBound(relativeMeasurePos)) = currentNote.VPosition - MeasureBottom(MeasureAtDisplacement(currentNote.VPosition)) - If relativeMeasurePos(UBound(relativeMeasurePos)) < 0 Then relativeMeasurePos(UBound(relativeMeasurePos)) = 0 - - If CurrentBMSChannel = "03" Then 'If integer bpm - NoteStrings(UBound(NoteStrings)) = Mid("0" & Hex(currentNote.Value \ 10000), Len(Hex(currentNote.Value \ 10000))) - ElseIf CurrentBMSChannel = "08" Then 'If bpm requires declaration - Dim BpmIndex - For BpmIndex = 1 To UBound(hBPM) ' find BPM value in existing array - If currentNote.Value = hBPM(BpmIndex) Then Exit For - Next - If BpmIndex > UBound(hBPM) Then ' Didn't find it, add it - ReDim Preserve hBPM(UBound(hBPM) + 1) - hBPM(UBound(hBPM)) = currentNote.Value - End If - NoteStrings(UBound(NoteStrings)) = IIf(BPMx1296, C10to36(BpmIndex), Mid("0" & Hex(BpmIndex), Len(Hex(BpmIndex)))) - ElseIf CurrentBMSChannel = "09" Then 'If STOP - Dim StopIndex - For StopIndex = 1 To UBound(hSTOP) ' find STOP value in existing array - If currentNote.Value = hSTOP(StopIndex) Then Exit For - Next - - If StopIndex > UBound(hSTOP) Then ' Didn't find it, add it - ReDim Preserve hSTOP(UBound(hSTOP) + 1) - hSTOP(UBound(hSTOP)) = currentNote.Value - End If - NoteStrings(UBound(NoteStrings)) = IIf(STOPx1296, C10to36(StopIndex), Mid("0" & Hex(StopIndex), Len(Hex(StopIndex)))) - ElseIf CurrentBMSChannel = "SC" Then 'If SCROLL - Dim ScrollIndex - For ScrollIndex = 1 To UBound(hSCROLL) ' find SCROLL value in existing array - If currentNote.Value = hSCROLL(ScrollIndex) Then Exit For - Next - - If ScrollIndex > UBound(hSCROLL) Then ' Didn't find it, add it - ReDim Preserve hSCROLL(UBound(hSCROLL) + 1) - hSCROLL(UBound(hSCROLL)) = currentNote.Value - End If - NoteStrings(UBound(NoteStrings)) = C10to36(ScrollIndex) - Else - NoteStrings(UBound(NoteStrings)) = C10to36(currentNote.Value \ 10000) - End If - End If - Next - - If relativeMeasurePos.Length = 0 Then Continue For - - Dim xGCD As Double = MeasureLength(MeasureIndex) - For i = 0 To UBound(relativeMeasurePos) 'find greatest common divisor - If relativeMeasurePos(i) > 0 Then xGCD = GCD(xGCD, relativeMeasurePos(i)) - Next - - Dim xStrKey() As String - ReDim xStrKey(CInt(MeasureLength(MeasureIndex) / xGCD) - 1) - For i = 0 To UBound(xStrKey) 'assign 00 to all keys - xStrKey(i) = "00" - Next - - For i = 0 To UBound(relativeMeasurePos) 'assign K texts - If CInt(relativeMeasurePos(i) / xGCD) > UBound(xStrKey) Then - ReDim Preserve xprevNotes(UBound(xprevNotes) + 1) - With xprevNotes(UBound(xprevNotes)) - .ColumnIndex = BMSChannelToColumn(BMSChannelList(CurrentBMSChannel)) - .LongNote = IsChannelLongNote(BMSChannelList(CurrentBMSChannel)) - .Hidden = IsChannelHidden(BMSChannelList(CurrentBMSChannel)) - .VPosition = MeasureBottom(MeasureIndex) - .Value = C36to10(NoteStrings(i)) - End With - If BMSChannelList(CurrentBMSChannel) = "08" Then _ - xprevNotes(UBound(xprevNotes)).Value = IIf(BPMx1296, hBPM(C36to10(NoteStrings(i))), hBPM(Convert.ToInt32(NoteStrings(i), 16))) - If BMSChannelList(CurrentBMSChannel) = "09" Then _ - xprevNotes(UBound(xprevNotes)).Value = IIf(STOPx1296, hSTOP(C36to10(NoteStrings(i))), hSTOP(Convert.ToInt32(NoteStrings(i), 16))) - If BMSChannelList(CurrentBMSChannel) = "SC" Then _ - xprevNotes(UBound(xprevNotes)).Value = hSCROLL(C36to10(NoteStrings(i))) - Continue For - End If - If xStrKey(CInt(relativeMeasurePos(i) / xGCD)) <> "00" Then - hasOverlapping = True - End If - - xStrKey(CInt(relativeMeasurePos(i) / xGCD)) = NoteStrings(i) - Next - - Ret &= "#" & Add3Zeros(MeasureIndex) & CurrentBMSChannel & ":" & Join(xStrKey, "") & vbCrLf - Next - - Return Ret - End Function - - Private Function GenerateBackgroundTracks(MeasureIndex As Integer, ByRef hasOverlapping As Boolean, NotesInMeasure() As Note, GreatestColumn As Integer, ByRef xprevNotes() As Note) As String - Dim relativeNotePositions() As Double 'Ks in the same column - Dim noteStrings() As String 'Ks in the same column - Dim Ret As String = "" - - For ColIndex = niB To GreatestColumn 'Start rendering B notes (xI3 is columnindex) - ReDim relativeNotePositions(-1) 'Ks in the same column - ReDim noteStrings(-1) 'Ks in the same column - - For I = 0 To UBound(NotesInMeasure) 'Find Ks in the same column (xI4 is TK index) - If NotesInMeasure(I).ColumnIndex = ColIndex Then - - ReDim Preserve relativeNotePositions(UBound(relativeNotePositions) + 1) - ReDim Preserve noteStrings(UBound(noteStrings) + 1) - - relativeNotePositions(UBound(relativeNotePositions)) = NotesInMeasure(I).VPosition - MeasureBottom(MeasureAtDisplacement(NotesInMeasure(I).VPosition)) - If relativeNotePositions(UBound(relativeNotePositions)) < 0 Then relativeNotePositions(UBound(relativeNotePositions)) = 0 - - noteStrings(UBound(noteStrings)) = C10to36(NotesInMeasure(I).Value \ 10000) - End If - Next - - Dim xGCD As Double = MeasureLength(MeasureIndex) - For i = 0 To UBound(relativeNotePositions) 'find greatest common divisor - If relativeNotePositions(i) > 0 Then xGCD = GCD(xGCD, relativeNotePositions(i)) - Next - - Dim xStrKey(CInt(MeasureLength(MeasureIndex) / xGCD) - 1) As String - For i = 0 To UBound(xStrKey) 'assign 00 to all keys - xStrKey(i) = "00" - Next - - For i = 0 To UBound(relativeNotePositions) 'assign K texts - If CInt(relativeNotePositions(i) / xGCD) > UBound(xStrKey) Then - - ReDim Preserve xprevNotes(UBound(xprevNotes) + 1) - - With xprevNotes(UBound(xprevNotes)) - .ColumnIndex = ColIndex - .VPosition = MeasureBottom(MeasureIndex) - .Value = C36to10(noteStrings(i)) - End With - - Continue For - End If - If xStrKey(CInt(relativeNotePositions(i) / xGCD)) <> "00" Then hasOverlapping = True - xStrKey(CInt(relativeNotePositions(i) / xGCD)) = noteStrings(i) - Next - - Ret &= "#" & Add3Zeros(MeasureIndex) & "01:" & Join(xStrKey, "") & vbCrLf - Next - - Return Ret - End Function - - Private Function OpenSM(ByVal xStrAll As String) As Boolean - KMouseOver = -1 - - Dim xStrLine() As String = Split(xStrAll, vbCrLf) - 'Remove comments starting with "//" - For xI1 As Integer = 0 To UBound(xStrLine) - If xStrLine(xI1).Contains("//") Then xStrLine(xI1) = Mid(xStrLine(xI1), 1, InStr(xStrLine(xI1), "//") - 1) - Next - - xStrAll = Join(xStrLine, "") - xStrLine = Split(xStrAll, ";") - - Dim iDiff As Integer = 0 - Dim iCurrentDiff As Integer = 0 - Dim xTempSplit() As String = Split(xStrAll, "#NOTES:") - Dim xTempStr() As String = {} - If xTempSplit.Length > 2 Then - ReDim Preserve xTempStr(UBound(xTempSplit) - 1) - For xI1 As Integer = 1 To UBound(xTempSplit) - xTempSplit(xI1) = Mid(xTempSplit(xI1), InStr(xTempSplit(xI1), ":") + 1) - xTempSplit(xI1) = Mid(xTempSplit(xI1), InStr(xTempSplit(xI1), ":") + 1).Trim - xTempStr(xI1 - 1) = Mid(xTempSplit(xI1), 1, InStr(xTempSplit(xI1), ":") - 1) - xTempSplit(xI1) = Mid(xTempSplit(xI1), InStr(xTempSplit(xI1), ":") + 1).Trim - xTempStr(xI1 - 1) &= " : " & Mid(xTempSplit(xI1), 1, InStr(xTempSplit(xI1), ":") - 1) - Next - - Dim xDiag As New dgImportSM(xTempStr) - If xDiag.ShowDialog() = Windows.Forms.DialogResult.Cancel Then Return True - iDiff = xDiag.iResult - End If - - Dim sL As String - ReDim Notes(0) - ReDim mColumn(999) - ReDim hWAV(1295) - ReDim hBPM(1295) 'x10000 - ReDim hSTOP(1295) - ReDim hSCROLL(1295) - Me.InitializeNewBMS() - - With Notes(0) - .ColumnIndex = niBPM - .VPosition = -1 - '.LongNote = False - '.Selected = False - .Value = 1200000 - End With - - For Each sL In xStrLine - If UCase(sL).StartsWith("#TITLE:") Then - THTitle.Text = Mid(sL, Len("#TITLE:") + 1) - - ElseIf UCase(sL).StartsWith("#SUBTITLE:") Then - If Not UCase(sL).EndsWith("#SUBTITLE:") Then THTitle.Text &= " " & Mid(sL, Len("#SUBTITLE:") + 1) - - ElseIf UCase(sL).StartsWith("#ARTIST:") Then - THArtist.Text = Mid(sL, Len("#ARTIST:") + 1) - - ElseIf UCase(sL).StartsWith("#GENRE:") Then - THGenre.Text = Mid(sL, Len("#GENRE:") + 1) - - ElseIf UCase(sL).StartsWith("#BPMS:") Then - Dim xLine As String = Mid(sL, Len("#BPMS:") + 1) - Dim xItem() As String = Split(xLine, ",") - - Dim xVal1 As Double - Dim xVal2 As Double - - For xI1 As Integer = 0 To UBound(xItem) - xVal1 = Mid(xItem(xI1), 1, InStr(xItem(xI1), "=") - 1) - xVal2 = Mid(xItem(xI1), InStr(xItem(xI1), "=") + 1) - - If xVal1 <> 0 Then - ReDim Preserve Notes(Notes.Length) - With Notes(UBound(Notes)) - .ColumnIndex = niBPM - '.LongNote = False - '.Hidden = False - '.Selected = False - .VPosition = xVal1 * 48 - .Value = xVal2 * 10000 - End With - Else - Notes(0).Value = xVal2 * 10000 - End If - Next - - ElseIf UCase(sL).StartsWith("#NOTES:") Then - If iCurrentDiff <> iDiff Then iCurrentDiff += 1 : GoTo Jump1 - - iCurrentDiff += 1 - Dim xLine As String = Mid(sL, Len("#NOTES:") + 1) - Dim xItem() As String = Split(xLine, ":") - For xI1 As Integer = 0 To UBound(xItem) - xItem(xI1) = xItem(xI1).Trim - Next - - If xItem.Length <> 6 Then GoTo Jump1 - - THPlayLevel.Text = xItem(3) - - Dim xM() As String = Split(xItem(5), ",") - For xI1 As Integer = 0 To UBound(xM) - xM(xI1) = xM(xI1).Trim - Next - - For xI1 As Integer = 0 To UBound(xM) - For xI2 As Integer = 0 To Len(xM(xI1)) - 1 Step 4 - If xM(xI1)(xI2) <> "0" Then - ReDim Preserve Notes(Notes.Length) - With Notes(UBound(Notes)) - .ColumnIndex = niA1 - .LongNote = xM(xI1)(xI2) = "2" Or xM(xI1)(xI2) = "3" - '.Hidden = False - '.Selected = False - .VPosition = (192 \ (Len(xM(xI1)) \ 4)) * xI2 \ 4 + xI1 * 192 - .Value = 10000 - End With - End If - If xM(xI1)(xI2 + 1) <> "0" Then - ReDim Preserve Notes(Notes.Length) - With Notes(UBound(Notes)) - .ColumnIndex = niA2 - .LongNote = xM(xI1)(xI2 + 1) = "2" Or xM(xI1)(xI2 + 1) = "3" - '.Hidden = False - '.Selected = False - .VPosition = (192 \ (Len(xM(xI1)) \ 4)) * xI2 \ 4 + xI1 * 192 - .Value = 10000 - End With - End If - If xM(xI1)(xI2 + 2) <> "0" Then - ReDim Preserve Notes(Notes.Length) - With Notes(UBound(Notes)) - .ColumnIndex = niA3 - .LongNote = xM(xI1)(xI2 + 2) = "2" Or xM(xI1)(xI2 + 2) = "3" - '.Hidden = False - '.Selected = False - .VPosition = (192 \ (Len(xM(xI1)) \ 4)) * xI2 \ 4 + xI1 * 192 - .Value = 10000 - End With - End If - If xM(xI1)(xI2 + 3) <> "0" Then - ReDim Preserve Notes(Notes.Length) - With Notes(UBound(Notes)) - .ColumnIndex = niA4 - .LongNote = xM(xI1)(xI2 + 3) = "2" Or xM(xI1)(xI2 + 3) = "3" - '.Hidden = False - '.Selected = False - .VPosition = (192 \ (Len(xM(xI1)) \ 4)) * xI2 \ 4 + xI1 * 192 - .Value = 10000 - End With - End If - Next - Next -Jump1: - End If - Next - - If NTInput Then ConvertBMSE2NT() - - LWAV.Visible = False - LWAV.Items.Clear() - For xI1 As Integer = 1 To 1295 - LWAV.Items.Add(C10to36(xI1) & ": " & hWAV(xI1)) - Next - LWAV.SelectedIndex = 0 - LWAV.Visible = True - - THBPM.Value = Notes(0).Value / 10000 - SortByVPositionQuick(0, UBound(Notes)) - UpdatePairing() - CalculateTotalPlayableNotes() - CalculateGreatestVPosition() - RefreshPanelAll() - POStatusRefresh() - Return False - End Function - - ''' Do not clear Undo. - Private Sub OpeniBMSC(ByVal Path As String) - KMouseOver = -1 - - Dim br As New BinaryReader(New FileStream(Path, FileMode.Open, FileAccess.Read), System.Text.Encoding.Unicode) - - If br.ReadInt32 <> &H534D4269 Then GoTo EndOfSub - If br.ReadByte <> CByte(&H43) Then GoTo EndOfSub - Dim xMajor As Integer = br.ReadByte - Dim xMinor As Integer = br.ReadByte - Dim xBuild As Integer = br.ReadByte - - ClearUndo() - ReDim Notes(0) - ReDim mColumn(999) - ReDim hWAV(1295) - Me.InitializeNewBMS() - Me.InitializeOpenBMS() - - With Notes(0) - .ColumnIndex = niBPM - .VPosition = -1 - '.LongNote = False - '.Selected = False - .Value = 1200000 - End With - - Do Until br.BaseStream.Position >= br.BaseStream.Length - Dim BlockID As Integer = br.ReadInt32() - - Select Case BlockID - - Case &H66657250 'Preferences - Dim xPref As Integer = br.ReadInt32 - - NTInput = xPref And &H1 - TBNTInput.Checked = NTInput - mnNTInput.Checked = NTInput - POBLong.Enabled = Not NTInput - POBLongShort.Enabled = Not NTInput - - ErrorCheck = xPref And &H2 - TBErrorCheck.Checked = ErrorCheck - TBErrorCheck_Click(TBErrorCheck, New System.EventArgs) - - PreviewOnClick = xPref And &H4 - TBPreviewOnClick.Checked = PreviewOnClick - TBPreviewOnClick_Click(TBPreviewOnClick, New System.EventArgs) - - ShowFileName = xPref And &H8 - TBShowFileName.Checked = ShowFileName - TBShowFileName_Click(TBShowFileName, New System.EventArgs) - - mnSMenu.Checked = xPref And &H100 - mnSTB.Checked = xPref And &H200 - mnSOP.Checked = xPref And &H400 - mnSStatus.Checked = xPref And &H800 - mnSLSplitter.Checked = xPref And &H1000 - mnSRSplitter.Checked = xPref And &H2000 - - CGShow.Checked = xPref And &H4000 - CGShowS.Checked = xPref And &H8000 - CGShowBG.Checked = xPref And &H10000 - CGShowM.Checked = xPref And &H20000 - CGShowMB.Checked = xPref And &H40000 - CGShowV.Checked = xPref And &H80000 - CGShowC.Checked = xPref And &H100000 - CGBLP.Checked = xPref And &H200000 - CGSTOP.Checked = xPref And &H400000 - CGSCROLL.Checked = xPref And &H20000000 - CGBPM.Checked = xPref And &H800000 - - CGSnap.Checked = xPref And &H1000000 - CGDisableVertical.Checked = xPref And &H2000000 - cVSLockL.Checked = xPref And &H4000000 - cVSLock.Checked = xPref And &H8000000 - cVSLockR.Checked = xPref And &H10000000 - - CGDivide.Value = br.ReadInt32 - CGSub.Value = br.ReadInt32 - gSlash = br.ReadInt32 - CGHeight.Value = br.ReadSingle - CGWidth.Value = br.ReadSingle - CGB.Value = br.ReadInt32 - - Case &H64616548 'Header - THTitle.Text = br.ReadString - THArtist.Text = br.ReadString - THGenre.Text = br.ReadString - Notes(0).Value = br.ReadInt64 - Dim xPlayerRank As Integer = br.ReadByte - THPlayLevel.Text = br.ReadString - - CHPlayer.SelectedIndex = xPlayerRank And &HF - CHRank.SelectedIndex = xPlayerRank >> 4 - - THSubTitle.Text = br.ReadString - THSubArtist.Text = br.ReadString - 'THMaker.Text = br.ReadString - THStageFile.Text = br.ReadString - THBanner.Text = br.ReadString - THBackBMP.Text = br.ReadString - 'THMidiFile.Text = br.ReadString - CHDifficulty.SelectedIndex = br.ReadByte - THExRank.Text = br.ReadString - THTotal.Text = br.ReadString - 'THVolWAV.Text = br.ReadString - THComment.Text = br.ReadString - 'THLnType.Text = br.ReadString - CHLnObj.SelectedIndex = br.ReadInt16 - - Case &H564157 'WAV List - Dim xWAVOptions As Integer = br.ReadByte - WAVMultiSelect = xWAVOptions And &H1 - CWAVMultiSelect.Checked = WAVMultiSelect - CWAVMultiSelect_CheckedChanged(CWAVMultiSelect, New EventArgs) - WAVChangeLabel = xWAVOptions And &H2 - CWAVChangeLabel.Checked = WAVChangeLabel - CWAVChangeLabel_CheckedChanged(CWAVChangeLabel, New EventArgs) - - Dim xWAVCount As Integer = br.ReadInt32 - For xxi As Integer = 1 To xWAVCount - Dim xI As Integer = br.ReadInt16 - hWAV(xI) = br.ReadString - Next - - Case &H74616542 'Beat - nBeatN.Value = br.ReadInt16 - nBeatD.Value = br.ReadInt16 - 'nBeatD.SelectedIndex = br.ReadByte - - Dim xBeatChangeMode As Integer = br.ReadByte - Dim xBeatChangeList As RadioButton() = {CBeatPreserve, CBeatMeasure, CBeatCut, CBeatScale} - xBeatChangeList(xBeatChangeMode).Checked = True - CBeatPreserve_Click(xBeatChangeList(xBeatChangeMode), New System.EventArgs) - - Dim xBeatCount As Integer = br.ReadInt32 - For xxi As Integer = 1 To xBeatCount - Dim xIndex As Integer = br.ReadInt16 - MeasureLength(xIndex) = br.ReadDouble - Dim xRatio As Double = MeasureLength(xIndex) / 192.0R - Dim xxD As Long = GetDenominator(xRatio) - LBeat.Items(xIndex) = Add3Zeros(xIndex) & ": " & xRatio & IIf(xxD > 10000, "", " ( " & CLng(xRatio * xxD) & " / " & xxD & " ) ") - Next - - Case &H6E707845 'Expansion Code - TExpansion.Text = br.ReadString - - Case &H65746F4E 'Note - Dim xNoteUbound As Integer = br.ReadInt32 - ReDim Preserve Notes(xNoteUbound) - For i As Integer = 1 To UBound(Notes) - Notes(i).FromBinReader(br) - Next - - Case &H6F646E55 'Undo / Redo Commands - Dim URCount As Integer = br.ReadInt32 'Should be 100 - sI = br.ReadInt32 - - For xI As Integer = 0 To 99 - Dim xUndoCount As Integer = br.ReadInt32 - Dim xBaseUndo As New UndoRedo.Void - Dim xIteratorUndo As UndoRedo.LinkedURCmd = xBaseUndo - - For xxj As Integer = 1 To xUndoCount - Dim xByteLen As Integer = br.ReadInt32 - Dim xByte() As Byte = br.ReadBytes(xByteLen) - xIteratorUndo.Next = UndoRedo.fromBytes(xByte) - xIteratorUndo = xIteratorUndo.Next - Next - - sUndo(xI) = xBaseUndo.Next - - Dim xRedoCount As Integer = br.ReadInt32 - Dim xBaseRedo As New UndoRedo.Void - Dim xIteratorRedo As UndoRedo.LinkedURCmd = xBaseRedo - For xxj As Integer = 1 To xRedoCount - Dim xByteLen As Integer = br.ReadInt32 - Dim xByte() As Byte = br.ReadBytes(xByteLen) - xIteratorRedo.Next = UndoRedo.fromBytes(xByte) - xIteratorRedo = xIteratorRedo.Next - Next - sRedo(xI) = xBaseRedo.Next - Next - - End Select - Loop - -EndOfSub: - br.Close() - - TBUndo.Enabled = sUndo(sI).ofType <> UndoRedo.opNoOperation - TBRedo.Enabled = sRedo(sIA).ofType <> UndoRedo.opNoOperation - mnUndo.Enabled = sUndo(sI).ofType <> UndoRedo.opNoOperation - mnRedo.Enabled = sRedo(sIA).ofType <> UndoRedo.opNoOperation - - LWAV.Visible = False - LWAV.Items.Clear() - For xI1 As Integer = 1 To 1295 - LWAV.Items.Add(C10to36(xI1) & ": " & hWAV(xI1)) - Next - LWAV.SelectedIndex = 0 - LWAV.Visible = True - - THBPM.Value = Notes(0).Value / 10000 - SortByVPositionQuick(0, UBound(Notes)) - UpdatePairing() - UpdateMeasureBottom() - CalculateTotalPlayableNotes() - CalculateGreatestVPosition() - RefreshPanelAll() - POStatusRefresh() - End Sub - - Private Sub SaveiBMSC(ByVal Path As String) - CalculateGreatestVPosition() - SortByVPositionInsertion() - UpdatePairing() - - Try - - Dim bw As New BinaryWriter(New IO.FileStream(Path, FileMode.Create), System.Text.Encoding.Unicode) - - 'bw.Write("iBMSC".ToCharArray) - bw.Write(&H534D4269) - bw.Write(CByte(&H43)) - bw.Write(CByte(My.Application.Info.Version.Major)) - bw.Write(CByte(My.Application.Info.Version.Minor)) - bw.Write(CByte(My.Application.Info.Version.Build)) - - 'Preferences - 'bw.Write("Pref".ToCharArray) - bw.Write(&H66657250) - Dim xPref As Integer = 0 - If NTInput Then xPref = xPref Or &H1 - If ErrorCheck Then xPref = xPref Or &H2 - If PreviewOnClick Then xPref = xPref Or &H4 - If ShowFileName Then xPref = xPref Or &H8 - If mnSMenu.Checked Then xPref = xPref Or &H100 - If mnSTB.Checked Then xPref = xPref Or &H200 - If mnSOP.Checked Then xPref = xPref Or &H400 - If mnSStatus.Checked Then xPref = xPref Or &H800 - If mnSLSplitter.Checked Then xPref = xPref Or &H1000 - If mnSRSplitter.Checked Then xPref = xPref Or &H2000 - If gShowGrid Then xPref = xPref Or &H4000 - If gShowSubGrid Then xPref = xPref Or &H8000 - If gShowBG Then xPref = xPref Or &H10000 - If gShowMeasureNumber Then xPref = xPref Or &H20000 - If gShowMeasureBar Then xPref = xPref Or &H40000 - If gShowVerticalLine Then xPref = xPref Or &H80000 - If gShowC Then xPref = xPref Or &H100000 - If gDisplayBGAColumn Then xPref = xPref Or &H200000 - If gSTOP Then xPref = xPref Or &H400000 - If gBPM Then xPref = xPref Or &H800000 - If gSCROLL Then xPref = xPref Or &H20000000 - If gSnap Then xPref = xPref Or &H1000000 - If DisableVerticalMove Then xPref = xPref Or &H2000000 - If spLock(0) Then xPref = xPref Or &H4000000 - If spLock(1) Then xPref = xPref Or &H8000000 - If spLock(2) Then xPref = xPref Or &H10000000 - bw.Write(xPref) - bw.Write(BitConverter.GetBytes(gDivide)) - bw.Write(BitConverter.GetBytes(gSub)) - bw.Write(BitConverter.GetBytes(gSlash)) - bw.Write(BitConverter.GetBytes(gxHeight)) - bw.Write(BitConverter.GetBytes(gxWidth)) - bw.Write(BitConverter.GetBytes(gColumns)) - - 'Header - 'bw.Write("Head".ToCharArray) - bw.Write(&H64616548) - bw.Write(THTitle.Text) - bw.Write(THArtist.Text) - bw.Write(THGenre.Text) - bw.Write(Notes(0).Value) - Dim xPlayer As Integer = CHPlayer.SelectedIndex - Dim xRank As Integer = CHRank.SelectedIndex << 4 - bw.Write(CByte(xPlayer Or xRank)) - bw.Write(THPlayLevel.Text) - - bw.Write(THSubTitle.Text) - bw.Write(THSubArtist.Text) - 'bw.Write(THMaker.Text) - bw.Write(THStageFile.Text) - bw.Write(THBanner.Text) - bw.Write(THBackBMP.Text) - 'bw.Write(THMidiFile.Text) - bw.Write(CByte(CHDifficulty.SelectedIndex)) - bw.Write(THExRank.Text) - bw.Write(THTotal.Text) - 'bw.Write(THVolWAV.Text) - bw.Write(THComment.Text) - 'bw.Write(THLnType.Text) - bw.Write(CShort(CHLnObj.SelectedIndex)) - - 'Wav List - 'bw.Write(("WAV" & vbNullChar).ToCharArray) - bw.Write(&H564157) - - Dim xWAVOptions As Integer = 0 - If WAVMultiSelect Then xWAVOptions = xWAVOptions Or &H1 - If WAVChangeLabel Then xWAVOptions = xWAVOptions Or &H2 - bw.Write(CByte(xWAVOptions)) - - Dim xWAVCount As Integer = 0 - For i As Integer = 1 To UBound(hWAV) - If hWAV(i) <> "" Then xWAVCount += 1 - Next - bw.Write(xWAVCount) - - For i As Integer = 1 To UBound(hWAV) - If hWAV(i) = "" Then Continue For - bw.Write(CShort(i)) - bw.Write(hWAV(i)) - Next - - 'Beat - 'bw.Write("Beat".ToCharArray) - bw.Write(&H74616542) - 'Dim xNumerator As Short = nBeatN.Value - 'Dim xDenominator As Short = nBeatD.Value - 'Dim xBeatChangeMode As Byte = BeatChangeMode - bw.Write(CShort(nBeatN.Value)) - bw.Write(CShort(nBeatD.Value)) - bw.Write(CByte(BeatChangeMode)) - - Dim xBeatCount As Integer = 0 - For i As Integer = 0 To UBound(MeasureLength) - If MeasureLength(i) <> 192.0R Then xBeatCount += 1 - Next - bw.Write(xBeatCount) - - For i As Integer = 0 To UBound(MeasureLength) - If MeasureLength(i) = 192.0R Then Continue For - bw.Write(CShort(i)) - bw.Write(MeasureLength(i)) - Next - - 'Expansion Code - 'bw.Write("Expn".ToCharArray) - bw.Write(&H6E707845) - bw.Write(TExpansion.Text) - - 'Note - 'bw.Write("Note".ToCharArray) - bw.Write(&H65746F4E) - bw.Write(UBound(Notes)) - For i As Integer = 1 To UBound(Notes) - Notes(i).WriteBinWriter(bw) - Next - - 'Undo / Redo Commands - 'bw.Write("Undo".ToCharArray) - bw.Write(&H6F646E55) - bw.Write(100) - bw.Write(sI) - - For i As Integer = 0 To 99 - 'UndoCommandsCount - Dim countUndo As Integer = 0 - Dim pUndo As UndoRedo.LinkedURCmd = sUndo(i) - While pUndo IsNot Nothing - countUndo += 1 - pUndo = pUndo.Next - End While - bw.Write(countUndo) - - 'UndoCommands - pUndo = sUndo(i) - For xxi As Integer = 1 To countUndo - Dim bUndo() As Byte = pUndo.toBytes - bw.Write(bUndo.Length) 'Length - bw.Write(bUndo) 'Command - pUndo = pUndo.Next - Next - - 'RedoCommandsCount - Dim countRedo As Integer = 0 - Dim pRedo As UndoRedo.LinkedURCmd = sRedo(i) - While pRedo IsNot Nothing - countRedo += 1 - pRedo = pRedo.Next - End While - bw.Write(countRedo) - - 'RedoCommands - pRedo = sRedo(i) - For xxi As Integer = 1 To countRedo - Dim bRedo() As Byte = pRedo.toBytes - bw.Write(bRedo.Length) - bw.Write(bRedo) - pRedo = pRedo.Next - Next - Next - - bw.Close() - - Catch ex As Exception - - MsgBox(ex.Message) - - End Try - - End Sub - -End Class diff --git a/MainWindow.designer.vb b/MainWindow.designer.vb deleted file mode 100644 index 9127b201a..000000000 --- a/MainWindow.designer.vb +++ /dev/null @@ -1,4577 +0,0 @@ - -Partial Class MainWindow - Inherits System.Windows.Forms.Form - - 'Form 重写 Dispose,以清理组件列表。 - - Protected Overrides Sub Dispose(ByVal disposing As Boolean) - If disposing AndAlso components IsNot Nothing Then - components.Dispose() - End If - MyBase.Dispose(disposing) - End Sub - - 'Windows 窗体设计器所必需的 - Private components As System.ComponentModel.IContainer - - '注意: 以下过程是 Windows 窗体设计器所必需的 - '可以使用 Windows 窗体设计器修改它。 - '不要使用代码编辑器修改它。 - - Private Sub InitializeComponent() - Me.components = New System.ComponentModel.Container() - Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(MainWindow)) - Me.cmnLanguage = New System.Windows.Forms.ContextMenuStrip(Me.components) - Me.TBLangDef = New System.Windows.Forms.ToolStripMenuItem() - Me.TBLangRefresh = New System.Windows.Forms.ToolStripMenuItem() - Me.ToolStripSeparator9 = New System.Windows.Forms.ToolStripSeparator() - Me.TBLanguage = New System.Windows.Forms.ToolStripDropDownButton() - Me.mnLanguage = New System.Windows.Forms.ToolStripMenuItem() - Me.cmnTheme = New System.Windows.Forms.ContextMenuStrip(Me.components) - Me.TBThemeDef = New System.Windows.Forms.ToolStripMenuItem() - Me.TBThemeSave = New System.Windows.Forms.ToolStripMenuItem() - Me.TBThemeRefresh = New System.Windows.Forms.ToolStripMenuItem() - Me.TBThemeLoadComptability = New System.Windows.Forms.ToolStripMenuItem() - Me.ToolStripSeparator6 = New System.Windows.Forms.ToolStripSeparator() - Me.mnTheme = New System.Windows.Forms.ToolStripMenuItem() - Me.TBTheme = New System.Windows.Forms.ToolStripDropDownButton() - Me.Timer1 = New System.Windows.Forms.Timer(Me.components) - Me.Menu1 = New System.Windows.Forms.ContextMenuStrip(Me.components) - Me.MInsert = New System.Windows.Forms.ToolStripMenuItem() - Me.MRemove = New System.Windows.Forms.ToolStripMenuItem() - Me.AutoSaveTimer = New System.Windows.Forms.Timer(Me.components) - Me.mnMain = New System.Windows.Forms.MenuStrip() - Me.mnFile = New System.Windows.Forms.ToolStripMenuItem() - Me.mnNew = New System.Windows.Forms.ToolStripMenuItem() - Me.mnOpen = New System.Windows.Forms.ToolStripMenuItem() - Me.mnImportSM = New System.Windows.Forms.ToolStripMenuItem() - Me.mnImportIBMSC = New System.Windows.Forms.ToolStripMenuItem() - Me.ToolStripSeparator14 = New System.Windows.Forms.ToolStripSeparator() - Me.mnSave = New System.Windows.Forms.ToolStripMenuItem() - Me.mnSaveAs = New System.Windows.Forms.ToolStripMenuItem() - Me.mnExport = New System.Windows.Forms.ToolStripMenuItem() - Me.ToolStripSeparator15 = New System.Windows.Forms.ToolStripSeparator() - Me.mnOpenR0 = New System.Windows.Forms.ToolStripMenuItem() - Me.mnOpenR1 = New System.Windows.Forms.ToolStripMenuItem() - Me.mnOpenR2 = New System.Windows.Forms.ToolStripMenuItem() - Me.mnOpenR3 = New System.Windows.Forms.ToolStripMenuItem() - Me.mnOpenR4 = New System.Windows.Forms.ToolStripMenuItem() - Me.ToolStripSeparator16 = New System.Windows.Forms.ToolStripSeparator() - Me.mnQuit = New System.Windows.Forms.ToolStripMenuItem() - Me.mnEdit = New System.Windows.Forms.ToolStripMenuItem() - Me.mnUndo = New System.Windows.Forms.ToolStripMenuItem() - Me.mnRedo = New System.Windows.Forms.ToolStripMenuItem() - Me.ToolStripSeparator17 = New System.Windows.Forms.ToolStripSeparator() - Me.mnCut = New System.Windows.Forms.ToolStripMenuItem() - Me.mnCopy = New System.Windows.Forms.ToolStripMenuItem() - Me.mnPaste = New System.Windows.Forms.ToolStripMenuItem() - Me.mnDelete = New System.Windows.Forms.ToolStripMenuItem() - Me.mnSelectAll = New System.Windows.Forms.ToolStripMenuItem() - Me.mnGotoMeasure = New System.Windows.Forms.ToolStripMenuItem() - Me.ToolStripSeparator18 = New System.Windows.Forms.ToolStripSeparator() - Me.mnFind = New System.Windows.Forms.ToolStripMenuItem() - Me.mnStatistics = New System.Windows.Forms.ToolStripMenuItem() - Me.mnStatisticsAdvanced = New System.Windows.Forms.ToolStripMenuItem() - Me.ToolStripSeparator19 = New System.Windows.Forms.ToolStripSeparator() - Me.mnTimeSelect = New System.Windows.Forms.ToolStripMenuItem() - Me.mnSelect = New System.Windows.Forms.ToolStripMenuItem() - Me.mnWrite = New System.Windows.Forms.ToolStripMenuItem() - Me.ToolStripSeparator23 = New System.Windows.Forms.ToolStripSeparator() - Me.mnMyO2 = New System.Windows.Forms.ToolStripMenuItem() - Me.mnSys = New System.Windows.Forms.ToolStripMenuItem() - Me.mnSMenu = New System.Windows.Forms.ToolStripMenuItem() - Me.mnSTB = New System.Windows.Forms.ToolStripMenuItem() - Me.mnSOP = New System.Windows.Forms.ToolStripMenuItem() - Me.mnSStatus = New System.Windows.Forms.ToolStripMenuItem() - Me.mnSLSplitter = New System.Windows.Forms.ToolStripMenuItem() - Me.mnSRSplitter = New System.Windows.Forms.ToolStripMenuItem() - Me.ToolStripSeparator21 = New System.Windows.Forms.ToolStripSeparator() - Me.CGShow = New System.Windows.Forms.ToolStripMenuItem() - Me.CGShowS = New System.Windows.Forms.ToolStripMenuItem() - Me.CGShowBG = New System.Windows.Forms.ToolStripMenuItem() - Me.CGShowM = New System.Windows.Forms.ToolStripMenuItem() - Me.CGShowMB = New System.Windows.Forms.ToolStripMenuItem() - Me.CGShowV = New System.Windows.Forms.ToolStripMenuItem() - Me.CGShowC = New System.Windows.Forms.ToolStripMenuItem() - Me.ToolStripSeparator22 = New System.Windows.Forms.ToolStripSeparator() - Me.CGBPM = New System.Windows.Forms.ToolStripMenuItem() - Me.CGSTOP = New System.Windows.Forms.ToolStripMenuItem() - Me.CGSCROLL = New System.Windows.Forms.ToolStripMenuItem() - Me.CGBLP = New System.Windows.Forms.ToolStripMenuItem() - Me.mnOptions = New System.Windows.Forms.ToolStripMenuItem() - Me.mnNTInput = New System.Windows.Forms.ToolStripMenuItem() - Me.mnErrorCheck = New System.Windows.Forms.ToolStripMenuItem() - Me.mnPreviewOnClick = New System.Windows.Forms.ToolStripMenuItem() - Me.mnShowFileName = New System.Windows.Forms.ToolStripMenuItem() - Me.ToolStripSeparator20 = New System.Windows.Forms.ToolStripSeparator() - Me.mnGOptions = New System.Windows.Forms.ToolStripMenuItem() - Me.mnVOptions = New System.Windows.Forms.ToolStripMenuItem() - Me.mnVCOptions = New System.Windows.Forms.ToolStripMenuItem() - Me.mnPOptions = New System.Windows.Forms.ToolStripMenuItem() - Me.mnConversion = New System.Windows.Forms.ToolStripMenuItem() - Me.cmnConversion = New System.Windows.Forms.ContextMenuStrip(Me.components) - Me.POBLong = New System.Windows.Forms.ToolStripMenuItem() - Me.POBShort = New System.Windows.Forms.ToolStripMenuItem() - Me.POBLongShort = New System.Windows.Forms.ToolStripMenuItem() - Me.ToolStripSeparator10 = New System.Windows.Forms.ToolStripSeparator() - Me.POBHidden = New System.Windows.Forms.ToolStripMenuItem() - Me.POBVisible = New System.Windows.Forms.ToolStripMenuItem() - Me.POBHiddenVisible = New System.Windows.Forms.ToolStripMenuItem() - Me.ToolStripSeparator11 = New System.Windows.Forms.ToolStripSeparator() - Me.POBModify = New System.Windows.Forms.ToolStripMenuItem() - Me.POBMirror = New System.Windows.Forms.ToolStripMenuItem() - Me.POBFlip = New System.Windows.Forms.ToolStripMenuItem() - Me.POBRandom = New System.Windows.Forms.ToolStripMenuItem() - Me.POBSRandom = New System.Windows.Forms.ToolStripMenuItem() - Me.POBSort = New System.Windows.Forms.ToolStripMenuItem() - Me.mnPreview = New System.Windows.Forms.ToolStripMenuItem() - Me.mnPlayB = New System.Windows.Forms.ToolStripMenuItem() - Me.mnPlay = New System.Windows.Forms.ToolStripMenuItem() - Me.mnStop = New System.Windows.Forms.ToolStripMenuItem() - Me.POConvert = New System.Windows.Forms.ToolStripDropDownButton() - Me.TBMain = New System.Windows.Forms.ToolStrip() - Me.TBNew = New System.Windows.Forms.ToolStripButton() - Me.TBOpen = New System.Windows.Forms.ToolStripSplitButton() - Me.TBOpenR0 = New System.Windows.Forms.ToolStripMenuItem() - Me.TBOpenR1 = New System.Windows.Forms.ToolStripMenuItem() - Me.TBOpenR2 = New System.Windows.Forms.ToolStripMenuItem() - Me.TBOpenR3 = New System.Windows.Forms.ToolStripMenuItem() - Me.TBOpenR4 = New System.Windows.Forms.ToolStripMenuItem() - Me.ToolStripSeparator12 = New System.Windows.Forms.ToolStripSeparator() - Me.TBImportSM = New System.Windows.Forms.ToolStripMenuItem() - Me.TBImportIBMSC = New System.Windows.Forms.ToolStripMenuItem() - Me.TBSave = New System.Windows.Forms.ToolStripSplitButton() - Me.TBSaveAs = New System.Windows.Forms.ToolStripMenuItem() - Me.TBExport = New System.Windows.Forms.ToolStripMenuItem() - Me.ToolStripSeparator1 = New System.Windows.Forms.ToolStripSeparator() - Me.TBCut = New System.Windows.Forms.ToolStripButton() - Me.TBCopy = New System.Windows.Forms.ToolStripButton() - Me.TBPaste = New System.Windows.Forms.ToolStripButton() - Me.TBFind = New System.Windows.Forms.ToolStripButton() - Me.ToolStripSeparator24 = New System.Windows.Forms.ToolStripSeparator() - Me.TBStatistics = New System.Windows.Forms.ToolStripButton() - Me.TBMyO2 = New System.Windows.Forms.ToolStripButton() - Me.ToolStripSeparator4 = New System.Windows.Forms.ToolStripSeparator() - Me.TBErrorCheck = New System.Windows.Forms.ToolStripButton() - Me.TBPreviewOnClick = New System.Windows.Forms.ToolStripButton() - Me.TBShowFileName = New System.Windows.Forms.ToolStripButton() - Me.ToolStripSeparator8 = New System.Windows.Forms.ToolStripSeparator() - Me.TBNTInput = New System.Windows.Forms.ToolStripButton() - Me.TBWavIncrease = New System.Windows.Forms.ToolStripButton() - Me.ToolStripSeparator2 = New System.Windows.Forms.ToolStripSeparator() - Me.TBUndo = New System.Windows.Forms.ToolStripButton() - Me.TBRedo = New System.Windows.Forms.ToolStripButton() - Me.ToolStripSeparator5 = New System.Windows.Forms.ToolStripSeparator() - Me.TBTimeSelect = New System.Windows.Forms.ToolStripButton() - Me.TBSelect = New System.Windows.Forms.ToolStripButton() - Me.TBWrite = New System.Windows.Forms.ToolStripButton() - Me.ToolStripSeparator3 = New System.Windows.Forms.ToolStripSeparator() - Me.TBPlayB = New System.Windows.Forms.ToolStripButton() - Me.TBPlay = New System.Windows.Forms.ToolStripButton() - Me.TBStop = New System.Windows.Forms.ToolStripButton() - Me.TBPOptions = New System.Windows.Forms.ToolStripButton() - Me.ToolStripSeparator7 = New System.Windows.Forms.ToolStripSeparator() - Me.TBVOptions = New System.Windows.Forms.ToolStripButton() - Me.TBGOptions = New System.Windows.Forms.ToolStripButton() - Me.POBStorm = New System.Windows.Forms.ToolStripButton() - Me.pStatus = New System.Windows.Forms.Panel() - Me.FStatus2 = New System.Windows.Forms.StatusStrip() - Me.FSSS = New System.Windows.Forms.ToolStripButton() - Me.FSSL = New System.Windows.Forms.ToolStripButton() - Me.FSSH = New System.Windows.Forms.ToolStripButton() - Me.BVCReverse = New System.Windows.Forms.ToolStripButton() - Me.LblMultiply = New System.Windows.Forms.ToolStripStatusLabel() - Me.TVCM = New System.Windows.Forms.ToolStripTextBox() - Me.LblDivide = New System.Windows.Forms.ToolStripStatusLabel() - Me.TVCD = New System.Windows.Forms.ToolStripTextBox() - Me.BVCApply = New System.Windows.Forms.ToolStripButton() - Me.TVCBPM = New System.Windows.Forms.ToolStripTextBox() - Me.BVCCalculate = New System.Windows.Forms.ToolStripButton() - Me.BConvertStop = New System.Windows.Forms.ToolStripButton() - Me.FStatus = New System.Windows.Forms.StatusStrip() - Me.FSC = New System.Windows.Forms.ToolStripStatusLabel() - Me.FSW = New System.Windows.Forms.ToolStripStatusLabel() - Me.FSM = New System.Windows.Forms.ToolStripStatusLabel() - Me.FSP1 = New System.Windows.Forms.ToolStripStatusLabel() - Me.FSP3 = New System.Windows.Forms.ToolStripStatusLabel() - Me.FSP2 = New System.Windows.Forms.ToolStripStatusLabel() - Me.FSP4 = New System.Windows.Forms.ToolStripStatusLabel() - Me.TimeStatusLabel = New System.Windows.Forms.ToolStripStatusLabel() - Me.FST = New System.Windows.Forms.ToolStripStatusLabel() - Me.FSH = New System.Windows.Forms.ToolStripStatusLabel() - Me.FSE = New System.Windows.Forms.ToolStripStatusLabel() - Me.TimerMiddle = New System.Windows.Forms.Timer(Me.components) - Me.ToolStripContainer1 = New System.Windows.Forms.ToolStripContainer() - Me.PMain = New System.Windows.Forms.Panel() - Me.PMainIn = New System.Windows.Forms.Panel() - Me.MainPanelScroll = New System.Windows.Forms.VScrollBar() - Me.HS = New System.Windows.Forms.HScrollBar() - Me.SpR = New System.Windows.Forms.Button() - Me.SpL = New System.Windows.Forms.Button() - Me.PMainR = New System.Windows.Forms.Panel() - Me.PMainInR = New System.Windows.Forms.Panel() - Me.RightPanelScroll = New System.Windows.Forms.VScrollBar() - Me.HSR = New System.Windows.Forms.HScrollBar() - Me.PMainL = New System.Windows.Forms.Panel() - Me.PMainInL = New System.Windows.Forms.Panel() - Me.LeftPanelScroll = New System.Windows.Forms.VScrollBar() - Me.HSL = New System.Windows.Forms.HScrollBar() - Me.POptionsResizer = New System.Windows.Forms.Button() - Me.ToolTipUniversal = New System.Windows.Forms.ToolTip(Me.components) - Me.cVSLockR = New System.Windows.Forms.CheckBox() - Me.cVSLock = New System.Windows.Forms.CheckBox() - Me.cVSLockL = New System.Windows.Forms.CheckBox() - Me.BWLock = New System.Windows.Forms.CheckBox() - Me.BWClear = New System.Windows.Forms.Button() - Me.BWLoad = New System.Windows.Forms.Button() - Me.BWAVRemove = New System.Windows.Forms.Button() - Me.BWAVBrowse = New System.Windows.Forms.Button() - Me.BWAVDown = New System.Windows.Forms.Button() - Me.BWAVUp = New System.Windows.Forms.Button() - Me.POptions = New System.Windows.Forms.Panel() - Me.POExpansion = New System.Windows.Forms.Panel() - Me.POExpansionInner = New System.Windows.Forms.Panel() - Me.ECSelectSection = New System.Windows.Forms.Button() - Me.TExpansion = New System.Windows.Forms.TextBox() - Me.POExpansionResizer = New System.Windows.Forms.Button() - Me.POExpansionSwitch = New System.Windows.Forms.CheckBox() - Me.POBeat = New System.Windows.Forms.Panel() - Me.POBeatInner = New System.Windows.Forms.TableLayoutPanel() - Me.POBeatExpander = New System.Windows.Forms.CheckBox() - Me.POBeatResizer = New System.Windows.Forms.Button() - Me.TableLayoutPanel7 = New System.Windows.Forms.TableLayoutPanel() - Me.nBeatD = New System.Windows.Forms.NumericUpDown() - Me.BBeatApplyV = New System.Windows.Forms.Button() - Me.nBeatN = New System.Windows.Forms.NumericUpDown() - Me.BBeatApply = New System.Windows.Forms.Button() - Me.Label7 = New System.Windows.Forms.Label() - Me.tBeatValue = New System.Windows.Forms.TextBox() - Me.LBeat = New System.Windows.Forms.ListBox() - Me.POBeatPart2 = New System.Windows.Forms.TableLayoutPanel() - Me.CBeatScale = New System.Windows.Forms.RadioButton() - Me.CBeatCut = New System.Windows.Forms.RadioButton() - Me.CBeatMeasure = New System.Windows.Forms.RadioButton() - Me.CBeatPreserve = New System.Windows.Forms.RadioButton() - Me.POBeatSwitch = New System.Windows.Forms.CheckBox() - Me.POWAV = New System.Windows.Forms.Panel() - Me.POWAVInner = New System.Windows.Forms.TableLayoutPanel() - Me.POWAVExpander = New System.Windows.Forms.CheckBox() - Me.LWAV = New System.Windows.Forms.ListBox() - Me.FlowLayoutPanel3 = New System.Windows.Forms.FlowLayoutPanel() - Me.POWAVResizer = New System.Windows.Forms.Button() - Me.POWAVPart2 = New System.Windows.Forms.TableLayoutPanel() - Me.CWAVMultiSelect = New System.Windows.Forms.CheckBox() - Me.CWAVChangeLabel = New System.Windows.Forms.CheckBox() - Me.POWAVSwitch = New System.Windows.Forms.CheckBox() - Me.POWaveForm = New System.Windows.Forms.Panel() - Me.POWaveFormInner = New System.Windows.Forms.Panel() - Me.POWaveFormPart2 = New System.Windows.Forms.TableLayoutPanel() - Me.TWSaturation = New System.Windows.Forms.NumericUpDown() - Me.PictureBox2 = New System.Windows.Forms.PictureBox() - Me.TWTransparency = New System.Windows.Forms.NumericUpDown() - Me.PictureBox3 = New System.Windows.Forms.PictureBox() - Me.TWPrecision = New System.Windows.Forms.NumericUpDown() - Me.PictureBox4 = New System.Windows.Forms.PictureBox() - Me.TWWidth = New System.Windows.Forms.NumericUpDown() - Me.PictureBox5 = New System.Windows.Forms.PictureBox() - Me.TWLeft = New System.Windows.Forms.NumericUpDown() - Me.PictureBox6 = New System.Windows.Forms.PictureBox() - Me.TWSaturation2 = New System.Windows.Forms.TrackBar() - Me.TWLeft2 = New System.Windows.Forms.TrackBar() - Me.TWTransparency2 = New System.Windows.Forms.TrackBar() - Me.TWWidth2 = New System.Windows.Forms.TrackBar() - Me.TWPrecision2 = New System.Windows.Forms.TrackBar() - Me.POWaveFormExpander = New System.Windows.Forms.CheckBox() - Me.POWaveFormPart1 = New System.Windows.Forms.TableLayoutPanel() - Me.TableLayoutPanel1 = New System.Windows.Forms.TableLayoutPanel() - Me.FlowLayoutPanel1 = New System.Windows.Forms.FlowLayoutPanel() - Me.TWFileName = New System.Windows.Forms.TextBox() - Me.TableLayoutPanel6 = New System.Windows.Forms.TableLayoutPanel() - Me.PictureBox1 = New System.Windows.Forms.PictureBox() - Me.TWPosition2 = New System.Windows.Forms.TrackBar() - Me.TWPosition = New System.Windows.Forms.NumericUpDown() - Me.POWaveFormSwitch = New System.Windows.Forms.CheckBox() - Me.POGrid = New System.Windows.Forms.Panel() - Me.POGridInner = New System.Windows.Forms.Panel() - Me.POGridPart2 = New System.Windows.Forms.TableLayoutPanel() - Me.TableLayoutPanel5 = New System.Windows.Forms.TableLayoutPanel() - Me.FlowLayoutPanel2 = New System.Windows.Forms.FlowLayoutPanel() - Me.Label5 = New System.Windows.Forms.Label() - Me.TableLayoutPanel4 = New System.Windows.Forms.TableLayoutPanel() - Me.Label1 = New System.Windows.Forms.Label() - Me.CGB = New System.Windows.Forms.NumericUpDown() - Me.POGridExpander = New System.Windows.Forms.CheckBox() - Me.POGridPart1 = New System.Windows.Forms.TableLayoutPanel() - Me.TableLayoutPanel3 = New System.Windows.Forms.TableLayoutPanel() - Me.PictureBox9 = New System.Windows.Forms.PictureBox() - Me.CGHeight2 = New System.Windows.Forms.TrackBar() - Me.CGHeight = New System.Windows.Forms.NumericUpDown() - Me.PictureBox10 = New System.Windows.Forms.PictureBox() - Me.CGWidth2 = New System.Windows.Forms.TrackBar() - Me.CGWidth = New System.Windows.Forms.NumericUpDown() - Me.CGDisableVertical = New System.Windows.Forms.CheckBox() - Me.CGSnap = New System.Windows.Forms.CheckBox() - Me.TableLayoutPanel2 = New System.Windows.Forms.TableLayoutPanel() - Me.PictureBox7 = New System.Windows.Forms.PictureBox() - Me.CGDivide = New System.Windows.Forms.NumericUpDown() - Me.CGSub = New System.Windows.Forms.NumericUpDown() - Me.BGSlash = New System.Windows.Forms.Button() - Me.POGridSwitch = New System.Windows.Forms.CheckBox() - Me.POHeader = New System.Windows.Forms.Panel() - Me.POHeaderInner = New System.Windows.Forms.Panel() - Me.POHeaderPart2 = New System.Windows.Forms.TableLayoutPanel() - Me.CHDifficulty = New System.Windows.Forms.ComboBox() - Me.Label13 = New System.Windows.Forms.Label() - Me.THExRank = New System.Windows.Forms.TextBox() - Me.Label25 = New System.Windows.Forms.Label() - Me.CHLnObj = New System.Windows.Forms.ComboBox() - Me.Label23 = New System.Windows.Forms.Label() - Me.Label21 = New System.Windows.Forms.Label() - Me.THComment = New System.Windows.Forms.TextBox() - Me.Label24 = New System.Windows.Forms.Label() - Me.Label15 = New System.Windows.Forms.Label() - Me.THTotal = New System.Windows.Forms.TextBox() - Me.Label20 = New System.Windows.Forms.Label() - Me.BHStageFile = New System.Windows.Forms.Button() - Me.BHBanner = New System.Windows.Forms.Button() - Me.Label19 = New System.Windows.Forms.Label() - Me.BHBackBMP = New System.Windows.Forms.Button() - Me.Label17 = New System.Windows.Forms.Label() - Me.Label16 = New System.Windows.Forms.Label() - Me.Label12 = New System.Windows.Forms.Label() - Me.THBackBMP = New System.Windows.Forms.TextBox() - Me.Label11 = New System.Windows.Forms.Label() - Me.THBanner = New System.Windows.Forms.TextBox() - Me.THStageFile = New System.Windows.Forms.TextBox() - Me.THSubTitle = New System.Windows.Forms.TextBox() - Me.THSubArtist = New System.Windows.Forms.TextBox() - Me.POHeaderExpander = New System.Windows.Forms.CheckBox() - Me.POHeaderPart1 = New System.Windows.Forms.TableLayoutPanel() - Me.Label3 = New System.Windows.Forms.Label() - Me.THPlayLevel = New System.Windows.Forms.TextBox() - Me.CHRank = New System.Windows.Forms.ComboBox() - Me.Label10 = New System.Windows.Forms.Label() - Me.CHPlayer = New System.Windows.Forms.ComboBox() - Me.Label4 = New System.Windows.Forms.Label() - Me.THGenre = New System.Windows.Forms.TextBox() - Me.THBPM = New System.Windows.Forms.NumericUpDown() - Me.Label2 = New System.Windows.Forms.Label() - Me.THArtist = New System.Windows.Forms.TextBox() - Me.THTitle = New System.Windows.Forms.TextBox() - Me.Label9 = New System.Windows.Forms.Label() - Me.Label8 = New System.Windows.Forms.Label() - Me.Label6 = New System.Windows.Forms.Label() - Me.POHeaderSwitch = New System.Windows.Forms.CheckBox() - Me.POptionsScroll = New System.Windows.Forms.Panel() - Me.TBTotalValue = New System.Windows.Forms.ToolStripLabel() - Me.cmnLanguage.SuspendLayout() - Me.cmnTheme.SuspendLayout() - Me.Menu1.SuspendLayout() - Me.mnMain.SuspendLayout() - Me.cmnConversion.SuspendLayout() - Me.TBMain.SuspendLayout() - Me.pStatus.SuspendLayout() - Me.FStatus2.SuspendLayout() - Me.FStatus.SuspendLayout() - Me.ToolStripContainer1.ContentPanel.SuspendLayout() - Me.ToolStripContainer1.TopToolStripPanel.SuspendLayout() - Me.ToolStripContainer1.SuspendLayout() - Me.PMain.SuspendLayout() - Me.PMainR.SuspendLayout() - Me.PMainL.SuspendLayout() - Me.POptions.SuspendLayout() - Me.POExpansion.SuspendLayout() - Me.POExpansionInner.SuspendLayout() - Me.POBeat.SuspendLayout() - Me.POBeatInner.SuspendLayout() - Me.TableLayoutPanel7.SuspendLayout() - CType(Me.nBeatD, System.ComponentModel.ISupportInitialize).BeginInit() - CType(Me.nBeatN, System.ComponentModel.ISupportInitialize).BeginInit() - Me.POBeatPart2.SuspendLayout() - Me.POWAV.SuspendLayout() - Me.POWAVInner.SuspendLayout() - Me.FlowLayoutPanel3.SuspendLayout() - Me.POWAVPart2.SuspendLayout() - Me.POWaveForm.SuspendLayout() - Me.POWaveFormInner.SuspendLayout() - Me.POWaveFormPart2.SuspendLayout() - CType(Me.TWSaturation, System.ComponentModel.ISupportInitialize).BeginInit() - CType(Me.PictureBox2, System.ComponentModel.ISupportInitialize).BeginInit() - CType(Me.TWTransparency, System.ComponentModel.ISupportInitialize).BeginInit() - CType(Me.PictureBox3, System.ComponentModel.ISupportInitialize).BeginInit() - CType(Me.TWPrecision, System.ComponentModel.ISupportInitialize).BeginInit() - CType(Me.PictureBox4, System.ComponentModel.ISupportInitialize).BeginInit() - CType(Me.TWWidth, System.ComponentModel.ISupportInitialize).BeginInit() - CType(Me.PictureBox5, System.ComponentModel.ISupportInitialize).BeginInit() - CType(Me.TWLeft, System.ComponentModel.ISupportInitialize).BeginInit() - CType(Me.PictureBox6, System.ComponentModel.ISupportInitialize).BeginInit() - CType(Me.TWSaturation2, System.ComponentModel.ISupportInitialize).BeginInit() - CType(Me.TWLeft2, System.ComponentModel.ISupportInitialize).BeginInit() - CType(Me.TWTransparency2, System.ComponentModel.ISupportInitialize).BeginInit() - CType(Me.TWWidth2, System.ComponentModel.ISupportInitialize).BeginInit() - CType(Me.TWPrecision2, System.ComponentModel.ISupportInitialize).BeginInit() - Me.POWaveFormPart1.SuspendLayout() - Me.TableLayoutPanel1.SuspendLayout() - Me.FlowLayoutPanel1.SuspendLayout() - Me.TableLayoutPanel6.SuspendLayout() - CType(Me.PictureBox1, System.ComponentModel.ISupportInitialize).BeginInit() - CType(Me.TWPosition2, System.ComponentModel.ISupportInitialize).BeginInit() - CType(Me.TWPosition, System.ComponentModel.ISupportInitialize).BeginInit() - Me.POGrid.SuspendLayout() - Me.POGridInner.SuspendLayout() - Me.POGridPart2.SuspendLayout() - Me.TableLayoutPanel5.SuspendLayout() - Me.FlowLayoutPanel2.SuspendLayout() - Me.TableLayoutPanel4.SuspendLayout() - CType(Me.CGB, System.ComponentModel.ISupportInitialize).BeginInit() - Me.POGridPart1.SuspendLayout() - Me.TableLayoutPanel3.SuspendLayout() - CType(Me.PictureBox9, System.ComponentModel.ISupportInitialize).BeginInit() - CType(Me.CGHeight2, System.ComponentModel.ISupportInitialize).BeginInit() - CType(Me.CGHeight, System.ComponentModel.ISupportInitialize).BeginInit() - CType(Me.PictureBox10, System.ComponentModel.ISupportInitialize).BeginInit() - CType(Me.CGWidth2, System.ComponentModel.ISupportInitialize).BeginInit() - CType(Me.CGWidth, System.ComponentModel.ISupportInitialize).BeginInit() - Me.TableLayoutPanel2.SuspendLayout() - CType(Me.PictureBox7, System.ComponentModel.ISupportInitialize).BeginInit() - CType(Me.CGDivide, System.ComponentModel.ISupportInitialize).BeginInit() - CType(Me.CGSub, System.ComponentModel.ISupportInitialize).BeginInit() - Me.POHeader.SuspendLayout() - Me.POHeaderInner.SuspendLayout() - Me.POHeaderPart2.SuspendLayout() - Me.POHeaderPart1.SuspendLayout() - CType(Me.THBPM, System.ComponentModel.ISupportInitialize).BeginInit() - Me.POptionsScroll.SuspendLayout() - Me.SuspendLayout() - ' - 'cmnLanguage - ' - Me.cmnLanguage.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.TBLangDef, Me.TBLangRefresh, Me.ToolStripSeparator9}) - Me.cmnLanguage.Name = "cmnLanguage" - Me.cmnLanguage.OwnerItem = Me.mnLanguage - Me.cmnLanguage.Size = New System.Drawing.Size(121, 54) - ' - 'TBLangDef - ' - Me.TBLangDef.Name = "TBLangDef" - Me.TBLangDef.Size = New System.Drawing.Size(120, 22) - Me.TBLangDef.Text = "(Default)" - ' - 'TBLangRefresh - ' - Me.TBLangRefresh.Image = Global.iBMSC.My.Resources.Resources.x16Refresh - Me.TBLangRefresh.Name = "TBLangRefresh" - Me.TBLangRefresh.Size = New System.Drawing.Size(120, 22) - Me.TBLangRefresh.Text = "Refresh" - ' - 'ToolStripSeparator9 - ' - Me.ToolStripSeparator9.Name = "ToolStripSeparator9" - Me.ToolStripSeparator9.Size = New System.Drawing.Size(117, 6) - ' - 'TBLanguage - ' - Me.TBLanguage.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image - Me.TBLanguage.DropDown = Me.cmnLanguage - Me.TBLanguage.Image = Global.iBMSC.My.Resources.Resources.x16Language - Me.TBLanguage.ImageTransparentColor = System.Drawing.Color.Magenta - Me.TBLanguage.Name = "TBLanguage" - Me.TBLanguage.Size = New System.Drawing.Size(29, 22) - Me.TBLanguage.Text = "Language" - ' - 'mnLanguage - ' - Me.mnLanguage.DropDown = Me.cmnLanguage - Me.mnLanguage.Image = Global.iBMSC.My.Resources.Resources.x16Language - Me.mnLanguage.Name = "mnLanguage" - Me.mnLanguage.Size = New System.Drawing.Size(253, 22) - Me.mnLanguage.Text = "&Language" - ' - 'cmnTheme - ' - Me.cmnTheme.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.TBThemeDef, Me.TBThemeSave, Me.TBThemeRefresh, Me.TBThemeLoadComptability, Me.ToolStripSeparator6}) - Me.cmnTheme.Name = "cmnLanguage" - Me.cmnTheme.OwnerItem = Me.TBTheme - Me.cmnTheme.Size = New System.Drawing.Size(246, 98) - ' - 'TBThemeDef - ' - Me.TBThemeDef.Name = "TBThemeDef" - Me.TBThemeDef.Size = New System.Drawing.Size(245, 22) - Me.TBThemeDef.Text = "(Default)" - ' - 'TBThemeSave - ' - Me.TBThemeSave.Image = Global.iBMSC.My.Resources.Resources.x16SaveAs - Me.TBThemeSave.Name = "TBThemeSave" - Me.TBThemeSave.Size = New System.Drawing.Size(245, 22) - Me.TBThemeSave.Text = "Save Theme" - ' - 'TBThemeRefresh - ' - Me.TBThemeRefresh.Image = Global.iBMSC.My.Resources.Resources.x16Refresh - Me.TBThemeRefresh.Name = "TBThemeRefresh" - Me.TBThemeRefresh.Size = New System.Drawing.Size(245, 22) - Me.TBThemeRefresh.Text = "Refresh" - ' - 'TBThemeLoadComptability - ' - Me.TBThemeLoadComptability.Name = "TBThemeLoadComptability" - Me.TBThemeLoadComptability.Size = New System.Drawing.Size(245, 22) - Me.TBThemeLoadComptability.Text = "Load Theme File from iBMSC 2.x" - ' - 'ToolStripSeparator6 - ' - Me.ToolStripSeparator6.Name = "ToolStripSeparator6" - Me.ToolStripSeparator6.Size = New System.Drawing.Size(242, 6) - ' - 'mnTheme - ' - Me.mnTheme.DropDown = Me.cmnTheme - Me.mnTheme.Image = Global.iBMSC.My.Resources.Resources.x16Theme - Me.mnTheme.Name = "mnTheme" - Me.mnTheme.Size = New System.Drawing.Size(253, 22) - Me.mnTheme.Text = "&Theme" - ' - 'TBTheme - ' - Me.TBTheme.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image - Me.TBTheme.DropDown = Me.cmnTheme - Me.TBTheme.Image = Global.iBMSC.My.Resources.Resources.x16Theme - Me.TBTheme.ImageTransparentColor = System.Drawing.Color.Magenta - Me.TBTheme.Name = "TBTheme" - Me.TBTheme.Size = New System.Drawing.Size(29, 22) - Me.TBTheme.Text = "Theme" - ' - 'Timer1 - ' - Me.Timer1.Interval = 15 - ' - 'Menu1 - ' - Me.Menu1.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.MInsert, Me.MRemove}) - Me.Menu1.Name = "Menu1" - Me.Menu1.Size = New System.Drawing.Size(166, 48) - ' - 'MInsert - ' - Me.MInsert.Image = Global.iBMSC.My.Resources.Resources.x16Add - Me.MInsert.Name = "MInsert" - Me.MInsert.Size = New System.Drawing.Size(165, 22) - Me.MInsert.Text = "Insert Measure" - ' - 'MRemove - ' - Me.MRemove.Image = Global.iBMSC.My.Resources.Resources.x16Remove - Me.MRemove.Name = "MRemove" - Me.MRemove.Size = New System.Drawing.Size(165, 22) - Me.MRemove.Text = "Remove Measure" - ' - 'AutoSaveTimer - ' - Me.AutoSaveTimer.Enabled = True - Me.AutoSaveTimer.Interval = 300000 - ' - 'mnMain - ' - Me.mnMain.AccessibleRole = System.Windows.Forms.AccessibleRole.MenuBar - Me.mnMain.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch - Me.mnMain.Dock = System.Windows.Forms.DockStyle.None - Me.mnMain.GripMargin = New System.Windows.Forms.Padding(2) - Me.mnMain.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.mnFile, Me.mnEdit, Me.mnSys, Me.mnOptions, Me.mnConversion, Me.mnPreview}) - Me.mnMain.LayoutStyle = System.Windows.Forms.ToolStripLayoutStyle.Flow - Me.mnMain.Location = New System.Drawing.Point(0, 0) - Me.mnMain.Name = "mnMain" - Me.mnMain.Size = New System.Drawing.Size(952, 23) - Me.mnMain.TabIndex = 57 - ' - 'mnFile - ' - Me.mnFile.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.mnNew, Me.mnOpen, Me.mnImportSM, Me.mnImportIBMSC, Me.ToolStripSeparator14, Me.mnSave, Me.mnSaveAs, Me.mnExport, Me.ToolStripSeparator15, Me.mnOpenR0, Me.mnOpenR1, Me.mnOpenR2, Me.mnOpenR3, Me.mnOpenR4, Me.ToolStripSeparator16, Me.mnQuit}) - Me.mnFile.Name = "mnFile" - Me.mnFile.Size = New System.Drawing.Size(37, 19) - Me.mnFile.Text = "&File" - ' - 'mnNew - ' - Me.mnNew.Image = Global.iBMSC.My.Resources.Resources.x16New - Me.mnNew.Name = "mnNew" - Me.mnNew.ShortcutKeys = CType((System.Windows.Forms.Keys.Control Or System.Windows.Forms.Keys.N), System.Windows.Forms.Keys) - Me.mnNew.Size = New System.Drawing.Size(240, 22) - Me.mnNew.Text = "&New" - ' - 'mnOpen - ' - Me.mnOpen.Image = Global.iBMSC.My.Resources.Resources.x16Open - Me.mnOpen.Name = "mnOpen" - Me.mnOpen.ShortcutKeys = CType((System.Windows.Forms.Keys.Control Or System.Windows.Forms.Keys.O), System.Windows.Forms.Keys) - Me.mnOpen.Size = New System.Drawing.Size(240, 22) - Me.mnOpen.Text = "&Open" - ' - 'mnImportSM - ' - Me.mnImportSM.Image = Global.iBMSC.My.Resources.Resources.x16Import2 - Me.mnImportSM.Name = "mnImportSM" - Me.mnImportSM.Size = New System.Drawing.Size(240, 22) - Me.mnImportSM.Text = "Import from .S&M file" - ' - 'mnImportIBMSC - ' - Me.mnImportIBMSC.Image = Global.iBMSC.My.Resources.Resources.x16Import2 - Me.mnImportIBMSC.Name = "mnImportIBMSC" - Me.mnImportIBMSC.Size = New System.Drawing.Size(240, 22) - Me.mnImportIBMSC.Text = "Import from .&IBMSC file" - ' - 'ToolStripSeparator14 - ' - Me.ToolStripSeparator14.Name = "ToolStripSeparator14" - Me.ToolStripSeparator14.Size = New System.Drawing.Size(237, 6) - ' - 'mnSave - ' - Me.mnSave.Image = Global.iBMSC.My.Resources.Resources.x16Save - Me.mnSave.Name = "mnSave" - Me.mnSave.ShortcutKeys = CType((System.Windows.Forms.Keys.Control Or System.Windows.Forms.Keys.S), System.Windows.Forms.Keys) - Me.mnSave.Size = New System.Drawing.Size(240, 22) - Me.mnSave.Text = "&Save" - ' - 'mnSaveAs - ' - Me.mnSaveAs.Image = Global.iBMSC.My.Resources.Resources.x16SaveAs - Me.mnSaveAs.Name = "mnSaveAs" - Me.mnSaveAs.ShortcutKeys = CType(((System.Windows.Forms.Keys.Control Or System.Windows.Forms.Keys.Alt) _ - Or System.Windows.Forms.Keys.S), System.Windows.Forms.Keys) - Me.mnSaveAs.Size = New System.Drawing.Size(240, 22) - Me.mnSaveAs.Text = "Save &As..." - ' - 'mnExport - ' - Me.mnExport.Image = Global.iBMSC.My.Resources.Resources.x16Export - Me.mnExport.Name = "mnExport" - Me.mnExport.ShortcutKeys = CType(((System.Windows.Forms.Keys.Control Or System.Windows.Forms.Keys.Shift) _ - Or System.Windows.Forms.Keys.E), System.Windows.Forms.Keys) - Me.mnExport.Size = New System.Drawing.Size(240, 22) - Me.mnExport.Text = "&Export .IBMSC file" - ' - 'ToolStripSeparator15 - ' - Me.ToolStripSeparator15.Name = "ToolStripSeparator15" - Me.ToolStripSeparator15.Size = New System.Drawing.Size(237, 6) - ' - 'mnOpenR0 - ' - Me.mnOpenR0.Enabled = False - Me.mnOpenR0.Name = "mnOpenR0" - Me.mnOpenR0.ShortcutKeys = CType((System.Windows.Forms.Keys.Alt Or System.Windows.Forms.Keys.D1), System.Windows.Forms.Keys) - Me.mnOpenR0.Size = New System.Drawing.Size(240, 22) - Me.mnOpenR0.Tag = "0" - Me.mnOpenR0.Text = "Recent #0" - ' - 'mnOpenR1 - ' - Me.mnOpenR1.Enabled = False - Me.mnOpenR1.Name = "mnOpenR1" - Me.mnOpenR1.ShortcutKeys = CType((System.Windows.Forms.Keys.Alt Or System.Windows.Forms.Keys.D2), System.Windows.Forms.Keys) - Me.mnOpenR1.Size = New System.Drawing.Size(240, 22) - Me.mnOpenR1.Tag = "1" - Me.mnOpenR1.Text = "Recent #1" - ' - 'mnOpenR2 - ' - Me.mnOpenR2.Enabled = False - Me.mnOpenR2.Name = "mnOpenR2" - Me.mnOpenR2.ShortcutKeys = CType((System.Windows.Forms.Keys.Alt Or System.Windows.Forms.Keys.D3), System.Windows.Forms.Keys) - Me.mnOpenR2.Size = New System.Drawing.Size(240, 22) - Me.mnOpenR2.Tag = "2" - Me.mnOpenR2.Text = "Recent #2" - ' - 'mnOpenR3 - ' - Me.mnOpenR3.Enabled = False - Me.mnOpenR3.Name = "mnOpenR3" - Me.mnOpenR3.ShortcutKeys = CType((System.Windows.Forms.Keys.Alt Or System.Windows.Forms.Keys.D4), System.Windows.Forms.Keys) - Me.mnOpenR3.Size = New System.Drawing.Size(240, 22) - Me.mnOpenR3.Tag = "3" - Me.mnOpenR3.Text = "Recent #3" - ' - 'mnOpenR4 - ' - Me.mnOpenR4.Enabled = False - Me.mnOpenR4.Name = "mnOpenR4" - Me.mnOpenR4.ShortcutKeys = CType((System.Windows.Forms.Keys.Alt Or System.Windows.Forms.Keys.D5), System.Windows.Forms.Keys) - Me.mnOpenR4.Size = New System.Drawing.Size(240, 22) - Me.mnOpenR4.Tag = "4" - Me.mnOpenR4.Text = "Recent #4" - ' - 'ToolStripSeparator16 - ' - Me.ToolStripSeparator16.Name = "ToolStripSeparator16" - Me.ToolStripSeparator16.Size = New System.Drawing.Size(237, 6) - ' - 'mnQuit - ' - Me.mnQuit.Name = "mnQuit" - Me.mnQuit.Size = New System.Drawing.Size(240, 22) - Me.mnQuit.Text = "&Quit" - ' - 'mnEdit - ' - Me.mnEdit.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.mnUndo, Me.mnRedo, Me.ToolStripSeparator17, Me.mnCut, Me.mnCopy, Me.mnPaste, Me.mnDelete, Me.mnSelectAll, Me.mnGotoMeasure, Me.ToolStripSeparator18, Me.mnFind, Me.mnStatistics, Me.mnStatisticsAdvanced, Me.ToolStripSeparator19, Me.mnTimeSelect, Me.mnSelect, Me.mnWrite, Me.ToolStripSeparator23, Me.mnMyO2}) - Me.mnEdit.Name = "mnEdit" - Me.mnEdit.Size = New System.Drawing.Size(39, 19) - Me.mnEdit.Text = "&Edit" - ' - 'mnUndo - ' - Me.mnUndo.Enabled = False - Me.mnUndo.Image = Global.iBMSC.My.Resources.Resources.x16Undo - Me.mnUndo.Name = "mnUndo" - Me.mnUndo.ShortcutKeyDisplayString = "Ctrl+Z" - Me.mnUndo.Size = New System.Drawing.Size(256, 22) - Me.mnUndo.Text = "&Undo" - ' - 'mnRedo - ' - Me.mnRedo.Enabled = False - Me.mnRedo.Image = Global.iBMSC.My.Resources.Resources.x16Redo - Me.mnRedo.Name = "mnRedo" - Me.mnRedo.ShortcutKeyDisplayString = "Ctrl+Y" - Me.mnRedo.Size = New System.Drawing.Size(256, 22) - Me.mnRedo.Text = "&Redo" - ' - 'ToolStripSeparator17 - ' - Me.ToolStripSeparator17.Name = "ToolStripSeparator17" - Me.ToolStripSeparator17.Size = New System.Drawing.Size(253, 6) - ' - 'mnCut - ' - Me.mnCut.Image = Global.iBMSC.My.Resources.Resources.x16Cut - Me.mnCut.Name = "mnCut" - Me.mnCut.ShortcutKeyDisplayString = "Ctrl+X" - Me.mnCut.Size = New System.Drawing.Size(256, 22) - Me.mnCut.Text = "Cu&t" - ' - 'mnCopy - ' - Me.mnCopy.Image = Global.iBMSC.My.Resources.Resources.x16Copy - Me.mnCopy.Name = "mnCopy" - Me.mnCopy.ShortcutKeyDisplayString = "Ctrl+C" - Me.mnCopy.Size = New System.Drawing.Size(256, 22) - Me.mnCopy.Text = "&Copy" - ' - 'mnPaste - ' - Me.mnPaste.Image = Global.iBMSC.My.Resources.Resources.x16Paste - Me.mnPaste.Name = "mnPaste" - Me.mnPaste.ShortcutKeyDisplayString = "Ctrl+V" - Me.mnPaste.Size = New System.Drawing.Size(256, 22) - Me.mnPaste.Text = "&Paste" - ' - 'mnDelete - ' - Me.mnDelete.Image = Global.iBMSC.My.Resources.Resources.x16Remove - Me.mnDelete.Name = "mnDelete" - Me.mnDelete.ShortcutKeyDisplayString = "Del" - Me.mnDelete.Size = New System.Drawing.Size(256, 22) - Me.mnDelete.Text = "De&lete" - ' - 'mnSelectAll - ' - Me.mnSelectAll.Name = "mnSelectAll" - Me.mnSelectAll.ShortcutKeyDisplayString = "Ctrl+A" - Me.mnSelectAll.Size = New System.Drawing.Size(256, 22) - Me.mnSelectAll.Text = "Select &All" - ' - 'mnGotoMeasure - ' - Me.mnGotoMeasure.Name = "mnGotoMeasure" - Me.mnGotoMeasure.ShortcutKeys = CType((System.Windows.Forms.Keys.Control Or System.Windows.Forms.Keys.G), System.Windows.Forms.Keys) - Me.mnGotoMeasure.Size = New System.Drawing.Size(256, 22) - Me.mnGotoMeasure.Text = "Go To Measure..." - ' - 'ToolStripSeparator18 - ' - Me.ToolStripSeparator18.Name = "ToolStripSeparator18" - Me.ToolStripSeparator18.Size = New System.Drawing.Size(253, 6) - ' - 'mnFind - ' - Me.mnFind.Image = Global.iBMSC.My.Resources.Resources.x16Find - Me.mnFind.Name = "mnFind" - Me.mnFind.ShortcutKeys = CType((System.Windows.Forms.Keys.Control Or System.Windows.Forms.Keys.F), System.Windows.Forms.Keys) - Me.mnFind.Size = New System.Drawing.Size(256, 22) - Me.mnFind.Text = "&Find / Delete / Replace" - ' - 'mnStatistics - ' - Me.mnStatistics.Image = Global.iBMSC.My.Resources.Resources.x16Statistics - Me.mnStatistics.Name = "mnStatistics" - Me.mnStatistics.ShortcutKeys = CType((System.Windows.Forms.Keys.Control Or System.Windows.Forms.Keys.T), System.Windows.Forms.Keys) - Me.mnStatistics.Size = New System.Drawing.Size(256, 22) - Me.mnStatistics.Text = "St&atistics" - ' - 'mnStatisticsAdvanced - ' - Me.mnStatisticsAdvanced.Image = Global.iBMSC.My.Resources.Resources.x16Statistics - Me.mnStatisticsAdvanced.Name = "mnStatisticsAdvanced" - Me.mnStatisticsAdvanced.ShortcutKeys = CType(((System.Windows.Forms.Keys.Control Or System.Windows.Forms.Keys.Shift) _ - Or System.Windows.Forms.Keys.T), System.Windows.Forms.Keys) - Me.mnStatisticsAdvanced.Size = New System.Drawing.Size(256, 22) - Me.mnStatisticsAdvanced.Text = "Statistics (Ad&vanced)" - ' - 'ToolStripSeparator19 - ' - Me.ToolStripSeparator19.Name = "ToolStripSeparator19" - Me.ToolStripSeparator19.Size = New System.Drawing.Size(253, 6) - ' - 'mnTimeSelect - ' - Me.mnTimeSelect.CheckOnClick = True - Me.mnTimeSelect.Image = Global.iBMSC.My.Resources.Resources.x16TimeSelection - Me.mnTimeSelect.Name = "mnTimeSelect" - Me.mnTimeSelect.ShortcutKeys = System.Windows.Forms.Keys.F1 - Me.mnTimeSelect.Size = New System.Drawing.Size(256, 22) - Me.mnTimeSelect.Text = "T&ime Selection Tool" - ' - 'mnSelect - ' - Me.mnSelect.Checked = True - Me.mnSelect.CheckOnClick = True - Me.mnSelect.CheckState = System.Windows.Forms.CheckState.Checked - Me.mnSelect.Image = Global.iBMSC.My.Resources.Resources.x16Select - Me.mnSelect.Name = "mnSelect" - Me.mnSelect.ShortcutKeys = System.Windows.Forms.Keys.F2 - Me.mnSelect.Size = New System.Drawing.Size(256, 22) - Me.mnSelect.Text = "&Select Tool" - ' - 'mnWrite - ' - Me.mnWrite.CheckOnClick = True - Me.mnWrite.Image = Global.iBMSC.My.Resources.Resources.x16Pen - Me.mnWrite.Name = "mnWrite" - Me.mnWrite.ShortcutKeys = System.Windows.Forms.Keys.F3 - Me.mnWrite.Size = New System.Drawing.Size(256, 22) - Me.mnWrite.Text = "&Write Tool" - ' - 'ToolStripSeparator23 - ' - Me.ToolStripSeparator23.Name = "ToolStripSeparator23" - Me.ToolStripSeparator23.Size = New System.Drawing.Size(253, 6) - ' - 'mnMyO2 - ' - Me.mnMyO2.Image = Global.iBMSC.My.Resources.Resources.x16MyO2 - Me.mnMyO2.Name = "mnMyO2" - Me.mnMyO2.Size = New System.Drawing.Size(256, 22) - Me.mnMyO2.Text = "MyO2 ToolBox (Chinese Only)" - ' - 'mnSys - ' - Me.mnSys.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.mnSMenu, Me.mnSTB, Me.mnSOP, Me.mnSStatus, Me.mnSLSplitter, Me.mnSRSplitter, Me.ToolStripSeparator21, Me.CGShow, Me.CGShowS, Me.CGShowBG, Me.CGShowM, Me.CGShowMB, Me.CGShowV, Me.CGShowC, Me.ToolStripSeparator22, Me.CGBPM, Me.CGSTOP, Me.CGSCROLL, Me.CGBLP}) - Me.mnSys.Name = "mnSys" - Me.mnSys.Size = New System.Drawing.Size(44, 19) - Me.mnSys.Text = "&View" - ' - 'mnSMenu - ' - Me.mnSMenu.Checked = True - Me.mnSMenu.CheckOnClick = True - Me.mnSMenu.CheckState = System.Windows.Forms.CheckState.Checked - Me.mnSMenu.Name = "mnSMenu" - Me.mnSMenu.Size = New System.Drawing.Size(210, 22) - Me.mnSMenu.Text = "&Main Menu" - Me.mnSMenu.Visible = False - ' - 'mnSTB - ' - Me.mnSTB.Checked = True - Me.mnSTB.CheckOnClick = True - Me.mnSTB.CheckState = System.Windows.Forms.CheckState.Checked - Me.mnSTB.Name = "mnSTB" - Me.mnSTB.Size = New System.Drawing.Size(210, 22) - Me.mnSTB.Text = "&ToolBar" - ' - 'mnSOP - ' - Me.mnSOP.Checked = True - Me.mnSOP.CheckOnClick = True - Me.mnSOP.CheckState = System.Windows.Forms.CheckState.Checked - Me.mnSOP.Name = "mnSOP" - Me.mnSOP.Size = New System.Drawing.Size(210, 22) - Me.mnSOP.Text = "&Options Panel" - ' - 'mnSStatus - ' - Me.mnSStatus.Checked = True - Me.mnSStatus.CheckOnClick = True - Me.mnSStatus.CheckState = System.Windows.Forms.CheckState.Checked - Me.mnSStatus.Name = "mnSStatus" - Me.mnSStatus.Size = New System.Drawing.Size(210, 22) - Me.mnSStatus.Text = "&Status Bar" - ' - 'mnSLSplitter - ' - Me.mnSLSplitter.CheckOnClick = True - Me.mnSLSplitter.Name = "mnSLSplitter" - Me.mnSLSplitter.ShortcutKeys = CType((System.Windows.Forms.Keys.Alt Or System.Windows.Forms.Keys.Left), System.Windows.Forms.Keys) - Me.mnSLSplitter.Size = New System.Drawing.Size(210, 22) - Me.mnSLSplitter.Text = "&Left Splitter" - ' - 'mnSRSplitter - ' - Me.mnSRSplitter.CheckOnClick = True - Me.mnSRSplitter.Name = "mnSRSplitter" - Me.mnSRSplitter.ShortcutKeys = CType((System.Windows.Forms.Keys.Alt Or System.Windows.Forms.Keys.Right), System.Windows.Forms.Keys) - Me.mnSRSplitter.Size = New System.Drawing.Size(210, 22) - Me.mnSRSplitter.Text = "&Right Splitter" - ' - 'ToolStripSeparator21 - ' - Me.ToolStripSeparator21.Name = "ToolStripSeparator21" - Me.ToolStripSeparator21.Size = New System.Drawing.Size(207, 6) - ' - 'CGShow - ' - Me.CGShow.Checked = True - Me.CGShow.CheckOnClick = True - Me.CGShow.CheckState = System.Windows.Forms.CheckState.Checked - Me.CGShow.Name = "CGShow" - Me.CGShow.Size = New System.Drawing.Size(210, 22) - Me.CGShow.Text = "Grid" - ' - 'CGShowS - ' - Me.CGShowS.Checked = True - Me.CGShowS.CheckOnClick = True - Me.CGShowS.CheckState = System.Windows.Forms.CheckState.Checked - Me.CGShowS.Name = "CGShowS" - Me.CGShowS.Size = New System.Drawing.Size(210, 22) - Me.CGShowS.Text = "Sub" - ' - 'CGShowBG - ' - Me.CGShowBG.Checked = True - Me.CGShowBG.CheckOnClick = True - Me.CGShowBG.CheckState = System.Windows.Forms.CheckState.Checked - Me.CGShowBG.Name = "CGShowBG" - Me.CGShowBG.Size = New System.Drawing.Size(210, 22) - Me.CGShowBG.Text = "BackGround" - ' - 'CGShowM - ' - Me.CGShowM.Checked = True - Me.CGShowM.CheckOnClick = True - Me.CGShowM.CheckState = System.Windows.Forms.CheckState.Checked - Me.CGShowM.Name = "CGShowM" - Me.CGShowM.Size = New System.Drawing.Size(210, 22) - Me.CGShowM.Text = "Measure Index" - ' - 'CGShowMB - ' - Me.CGShowMB.Checked = True - Me.CGShowMB.CheckOnClick = True - Me.CGShowMB.CheckState = System.Windows.Forms.CheckState.Checked - Me.CGShowMB.Name = "CGShowMB" - Me.CGShowMB.Size = New System.Drawing.Size(210, 22) - Me.CGShowMB.Text = "Measure Line" - ' - 'CGShowV - ' - Me.CGShowV.Checked = True - Me.CGShowV.CheckOnClick = True - Me.CGShowV.CheckState = System.Windows.Forms.CheckState.Checked - Me.CGShowV.Name = "CGShowV" - Me.CGShowV.Size = New System.Drawing.Size(210, 22) - Me.CGShowV.Text = "Vertical Line" - ' - 'CGShowC - ' - Me.CGShowC.Checked = True - Me.CGShowC.CheckOnClick = True - Me.CGShowC.CheckState = System.Windows.Forms.CheckState.Checked - Me.CGShowC.Name = "CGShowC" - Me.CGShowC.Size = New System.Drawing.Size(210, 22) - Me.CGShowC.Text = "Column Caption" - ' - 'ToolStripSeparator22 - ' - Me.ToolStripSeparator22.Name = "ToolStripSeparator22" - Me.ToolStripSeparator22.Size = New System.Drawing.Size(207, 6) - ' - 'CGBPM - ' - Me.CGBPM.Checked = True - Me.CGBPM.CheckOnClick = True - Me.CGBPM.CheckState = System.Windows.Forms.CheckState.Checked - Me.CGBPM.Name = "CGBPM" - Me.CGBPM.ShortcutKeys = CType((System.Windows.Forms.Keys.Alt Or System.Windows.Forms.Keys.B), System.Windows.Forms.Keys) - Me.CGBPM.Size = New System.Drawing.Size(210, 22) - Me.CGBPM.Text = "BPM" - ' - 'CGSTOP - ' - Me.CGSTOP.Checked = True - Me.CGSTOP.CheckOnClick = True - Me.CGSTOP.CheckState = System.Windows.Forms.CheckState.Checked - Me.CGSTOP.Name = "CGSTOP" - Me.CGSTOP.ShortcutKeys = CType((System.Windows.Forms.Keys.Alt Or System.Windows.Forms.Keys.S), System.Windows.Forms.Keys) - Me.CGSTOP.Size = New System.Drawing.Size(210, 22) - Me.CGSTOP.Text = "STOP" - ' - 'CGSCROLL - ' - Me.CGSCROLL.Checked = True - Me.CGSCROLL.CheckOnClick = True - Me.CGSCROLL.CheckState = System.Windows.Forms.CheckState.Checked - Me.CGSCROLL.Name = "CGSCROLL" - Me.CGSCROLL.ShortcutKeys = CType((System.Windows.Forms.Keys.Alt Or System.Windows.Forms.Keys.C), System.Windows.Forms.Keys) - Me.CGSCROLL.Size = New System.Drawing.Size(210, 22) - Me.CGSCROLL.Text = "SCROLL" - ' - 'CGBLP - ' - Me.CGBLP.Checked = True - Me.CGBLP.CheckOnClick = True - Me.CGBLP.CheckState = System.Windows.Forms.CheckState.Checked - Me.CGBLP.Name = "CGBLP" - Me.CGBLP.ShortcutKeys = CType((System.Windows.Forms.Keys.Alt Or System.Windows.Forms.Keys.G), System.Windows.Forms.Keys) - Me.CGBLP.Size = New System.Drawing.Size(210, 22) - Me.CGBLP.Text = "BGA / Layer / Poor" - ' - 'mnOptions - ' - Me.mnOptions.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.mnNTInput, Me.mnErrorCheck, Me.mnPreviewOnClick, Me.mnShowFileName, Me.ToolStripSeparator20, Me.mnGOptions, Me.mnVOptions, Me.mnVCOptions, Me.mnPOptions, Me.mnLanguage, Me.mnTheme}) - Me.mnOptions.Name = "mnOptions" - Me.mnOptions.Size = New System.Drawing.Size(61, 19) - Me.mnOptions.Text = "&Options" - ' - 'mnNTInput - ' - Me.mnNTInput.Checked = True - Me.mnNTInput.CheckOnClick = True - Me.mnNTInput.CheckState = System.Windows.Forms.CheckState.Checked - Me.mnNTInput.Image = Global.iBMSC.My.Resources.Resources.x16NTInput - Me.mnNTInput.Name = "mnNTInput" - Me.mnNTInput.ShortcutKeys = System.Windows.Forms.Keys.F8 - Me.mnNTInput.Size = New System.Drawing.Size(253, 22) - Me.mnNTInput.Text = "L&N Input Style - NT/BMSE" - ' - 'mnErrorCheck - ' - Me.mnErrorCheck.Checked = True - Me.mnErrorCheck.CheckOnClick = True - Me.mnErrorCheck.CheckState = System.Windows.Forms.CheckState.Checked - Me.mnErrorCheck.Image = Global.iBMSC.My.Resources.Resources.x16CheckError - Me.mnErrorCheck.Name = "mnErrorCheck" - Me.mnErrorCheck.Size = New System.Drawing.Size(253, 22) - Me.mnErrorCheck.Text = "&Error Check" - ' - 'mnPreviewOnClick - ' - Me.mnPreviewOnClick.Checked = True - Me.mnPreviewOnClick.CheckOnClick = True - Me.mnPreviewOnClick.CheckState = System.Windows.Forms.CheckState.Checked - Me.mnPreviewOnClick.Image = Global.iBMSC.My.Resources.Resources.x16PreviewOnClick - Me.mnPreviewOnClick.Name = "mnPreviewOnClick" - Me.mnPreviewOnClick.Size = New System.Drawing.Size(253, 22) - Me.mnPreviewOnClick.Text = "Preview on &Click" - ' - 'mnShowFileName - ' - Me.mnShowFileName.CheckOnClick = True - Me.mnShowFileName.Image = Global.iBMSC.My.Resources.Resources.x16ShowFileNameN - Me.mnShowFileName.Name = "mnShowFileName" - Me.mnShowFileName.Size = New System.Drawing.Size(253, 22) - Me.mnShowFileName.Text = "Show &File Name on Notes" - ' - 'ToolStripSeparator20 - ' - Me.ToolStripSeparator20.Name = "ToolStripSeparator20" - Me.ToolStripSeparator20.Size = New System.Drawing.Size(250, 6) - ' - 'mnGOptions - ' - Me.mnGOptions.Image = Global.iBMSC.My.Resources.Resources.x16GeneralOptions - Me.mnGOptions.Name = "mnGOptions" - Me.mnGOptions.ShortcutKeys = System.Windows.Forms.Keys.F10 - Me.mnGOptions.Size = New System.Drawing.Size(253, 22) - Me.mnGOptions.Text = "&General Options" - ' - 'mnVOptions - ' - Me.mnVOptions.Image = Global.iBMSC.My.Resources.Resources.x16VisualOptions - Me.mnVOptions.Name = "mnVOptions" - Me.mnVOptions.ShortcutKeys = System.Windows.Forms.Keys.F12 - Me.mnVOptions.Size = New System.Drawing.Size(253, 22) - Me.mnVOptions.Text = "&Visual Options" - ' - 'mnVCOptions - ' - Me.mnVCOptions.Image = Global.iBMSC.My.Resources.Resources.x16VisualOptions - Me.mnVCOptions.Name = "mnVCOptions" - Me.mnVCOptions.ShortcutKeys = CType((System.Windows.Forms.Keys.Shift Or System.Windows.Forms.Keys.F12), System.Windows.Forms.Keys) - Me.mnVCOptions.Size = New System.Drawing.Size(253, 22) - Me.mnVCOptions.Text = "C&olor Override Options" - ' - 'mnPOptions - ' - Me.mnPOptions.Image = Global.iBMSC.My.Resources.Resources.x16PlayerOptions - Me.mnPOptions.Name = "mnPOptions" - Me.mnPOptions.ShortcutKeys = System.Windows.Forms.Keys.F9 - Me.mnPOptions.Size = New System.Drawing.Size(253, 22) - Me.mnPOptions.Text = "&Player Options" - ' - 'mnConversion - ' - Me.mnConversion.DropDown = Me.cmnConversion - Me.mnConversion.Name = "mnConversion" - Me.mnConversion.Size = New System.Drawing.Size(84, 19) - Me.mnConversion.Text = "&Conversions" - ' - 'cmnConversion - ' - Me.cmnConversion.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.POBLong, Me.POBShort, Me.POBLongShort, Me.ToolStripSeparator10, Me.POBHidden, Me.POBVisible, Me.POBHiddenVisible, Me.ToolStripSeparator11, Me.POBModify, Me.POBMirror, Me.POBFlip, Me.POBRandom, Me.POBSRandom, Me.POBSort}) - Me.cmnConversion.Name = "cmnLanguage" - Me.cmnConversion.OwnerItem = Me.POConvert - Me.cmnConversion.Size = New System.Drawing.Size(222, 280) - ' - 'POBLong - ' - Me.POBLong.Enabled = False - Me.POBLong.Image = Global.iBMSC.My.Resources.Resources.ConvertNotesL - Me.POBLong.Name = "POBLong" - Me.POBLong.Size = New System.Drawing.Size(221, 22) - Me.POBLong.Text = "→ &Long Note" - ' - 'POBShort - ' - Me.POBShort.Image = Global.iBMSC.My.Resources.Resources.ConvertNotesN - Me.POBShort.Name = "POBShort" - Me.POBShort.Size = New System.Drawing.Size(221, 22) - Me.POBShort.Text = "→ &Short Note" - ' - 'POBLongShort - ' - Me.POBLongShort.Enabled = False - Me.POBLongShort.Image = Global.iBMSC.My.Resources.Resources.ConvertNotes - Me.POBLongShort.Name = "POBLongShort" - Me.POBLongShort.Size = New System.Drawing.Size(221, 22) - Me.POBLongShort.Text = "Long Note ↔ Short Note" - ' - 'ToolStripSeparator10 - ' - Me.ToolStripSeparator10.Name = "ToolStripSeparator10" - Me.ToolStripSeparator10.Size = New System.Drawing.Size(218, 6) - ' - 'POBHidden - ' - Me.POBHidden.Image = Global.iBMSC.My.Resources.Resources.ConvertNotesH - Me.POBHidden.Name = "POBHidden" - Me.POBHidden.Size = New System.Drawing.Size(221, 22) - Me.POBHidden.Text = "→ &Hidden Note" - ' - 'POBVisible - ' - Me.POBVisible.Image = Global.iBMSC.My.Resources.Resources.ConvertNotesV - Me.POBVisible.Name = "POBVisible" - Me.POBVisible.Size = New System.Drawing.Size(221, 22) - Me.POBVisible.Text = "→ &Visible Note" - ' - 'POBHiddenVisible - ' - Me.POBHiddenVisible.Image = Global.iBMSC.My.Resources.Resources.ConvertNotesHV - Me.POBHiddenVisible.Name = "POBHiddenVisible" - Me.POBHiddenVisible.Size = New System.Drawing.Size(221, 22) - Me.POBHiddenVisible.Text = "Hidden Note ↔ Visible Note" - ' - 'ToolStripSeparator11 - ' - Me.ToolStripSeparator11.Name = "ToolStripSeparator11" - Me.ToolStripSeparator11.Size = New System.Drawing.Size(218, 6) - ' - 'POBModify - ' - Me.POBModify.Image = Global.iBMSC.My.Resources.Resources.x16ModifyLabel - Me.POBModify.Name = "POBModify" - Me.POBModify.Size = New System.Drawing.Size(221, 22) - Me.POBModify.Text = "Modify &Labels" - ' - 'POBMirror - ' - Me.POBMirror.Image = Global.iBMSC.My.Resources.Resources.x16Mirror - Me.POBMirror.Name = "POBMirror" - Me.POBMirror.Size = New System.Drawing.Size(221, 22) - Me.POBMirror.Text = "&Mirror" - ' - 'POBFlip - ' - Me.POBFlip.Image = Global.iBMSC.My.Resources.Resources.x16Flip - Me.POBFlip.Name = "POBFlip" - Me.POBFlip.Size = New System.Drawing.Size(221, 22) - Me.POBFlip.Text = "&Flip" - ' - 'POBRandom - ' - Me.POBRandom.Image = Global.iBMSC.My.Resources.Resources.x16Mirror - Me.POBRandom.Name = "POBRandom" - Me.POBRandom.Size = New System.Drawing.Size(221, 22) - Me.POBRandom.Text = "&Random" - ' - 'POBSRandom - ' - Me.POBSRandom.Image = Global.iBMSC.My.Resources.Resources.x16Mirror - Me.POBSRandom.Name = "POBSRandom" - Me.POBSRandom.Size = New System.Drawing.Size(221, 22) - Me.POBSRandom.Text = "S-R&andom" - ' - 'POBSort - ' - Me.POBSort.Image = Global.iBMSC.My.Resources.Resources.lgwidth - Me.POBSort.Name = "POBSort" - Me.POBSort.Size = New System.Drawing.Size(221, 22) - Me.POBSort.Text = "S&ort" - ' - 'mnPreview - ' - Me.mnPreview.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.mnPlayB, Me.mnPlay, Me.mnStop}) - Me.mnPreview.Name = "mnPreview" - Me.mnPreview.Size = New System.Drawing.Size(60, 19) - Me.mnPreview.Text = "&Preview" - ' - 'mnPlayB - ' - Me.mnPlayB.Image = Global.iBMSC.My.Resources.Resources.x16PlayB - Me.mnPlayB.Name = "mnPlayB" - Me.mnPlayB.ShortcutKeys = System.Windows.Forms.Keys.F5 - Me.mnPlayB.Size = New System.Drawing.Size(201, 22) - Me.mnPlayB.Text = "Play from &beginning" - ' - 'mnPlay - ' - Me.mnPlay.Image = Global.iBMSC.My.Resources.Resources.x16Play - Me.mnPlay.Name = "mnPlay" - Me.mnPlay.ShortcutKeys = System.Windows.Forms.Keys.F6 - Me.mnPlay.Size = New System.Drawing.Size(201, 22) - Me.mnPlay.Text = "&Play from here" - ' - 'mnStop - ' - Me.mnStop.Image = Global.iBMSC.My.Resources.Resources.x16Stop - Me.mnStop.Name = "mnStop" - Me.mnStop.ShortcutKeys = System.Windows.Forms.Keys.F7 - Me.mnStop.Size = New System.Drawing.Size(201, 22) - Me.mnStop.Text = "&Stop" - ' - 'POConvert - ' - Me.POConvert.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image - Me.POConvert.DropDown = Me.cmnConversion - Me.POConvert.Image = Global.iBMSC.My.Resources.Resources.ConvertNotes - Me.POConvert.ImageTransparentColor = System.Drawing.Color.Magenta - Me.POConvert.Name = "POConvert" - Me.POConvert.Size = New System.Drawing.Size(29, 22) - Me.POConvert.Text = "Convert Notes" - ' - 'TBMain - ' - Me.TBMain.AccessibleRole = System.Windows.Forms.AccessibleRole.ToolBar - Me.TBMain.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch - Me.TBMain.Dock = System.Windows.Forms.DockStyle.None - Me.TBMain.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.TBNew, Me.TBOpen, Me.TBSave, Me.ToolStripSeparator1, Me.TBCut, Me.TBCopy, Me.TBPaste, Me.TBFind, Me.ToolStripSeparator24, Me.TBStatistics, Me.POConvert, Me.TBMyO2, Me.ToolStripSeparator4, Me.TBErrorCheck, Me.TBPreviewOnClick, Me.TBShowFileName, Me.ToolStripSeparator8, Me.TBNTInput, Me.TBWavIncrease, Me.ToolStripSeparator2, Me.TBUndo, Me.TBRedo, Me.ToolStripSeparator5, Me.TBTimeSelect, Me.TBSelect, Me.TBWrite, Me.ToolStripSeparator3, Me.TBPlayB, Me.TBPlay, Me.TBStop, Me.TBPOptions, Me.ToolStripSeparator7, Me.TBVOptions, Me.TBGOptions, Me.TBLanguage, Me.TBTheme, Me.POBStorm, Me.TBTotalValue}) - Me.TBMain.Location = New System.Drawing.Point(3, 23) - Me.TBMain.Name = "TBMain" - Me.TBMain.Size = New System.Drawing.Size(764, 25) - Me.TBMain.TabIndex = 64 - Me.TBMain.Text = "Main Toolbar" - ' - 'TBNew - ' - Me.TBNew.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image - Me.TBNew.Image = Global.iBMSC.My.Resources.Resources.x16New - Me.TBNew.ImageTransparentColor = System.Drawing.Color.Transparent - Me.TBNew.Name = "TBNew" - Me.TBNew.Size = New System.Drawing.Size(23, 22) - Me.TBNew.Text = "New (Ctrl+N)" - ' - 'TBOpen - ' - Me.TBOpen.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image - Me.TBOpen.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.TBOpenR0, Me.TBOpenR1, Me.TBOpenR2, Me.TBOpenR3, Me.TBOpenR4, Me.ToolStripSeparator12, Me.TBImportSM, Me.TBImportIBMSC}) - Me.TBOpen.Image = Global.iBMSC.My.Resources.Resources.x16Open - Me.TBOpen.ImageTransparentColor = System.Drawing.Color.Magenta - Me.TBOpen.Name = "TBOpen" - Me.TBOpen.Size = New System.Drawing.Size(32, 22) - Me.TBOpen.Text = "Open (Ctrl+O)" - ' - 'TBOpenR0 - ' - Me.TBOpenR0.Enabled = False - Me.TBOpenR0.Name = "TBOpenR0" - Me.TBOpenR0.Size = New System.Drawing.Size(199, 22) - Me.TBOpenR0.Tag = "0" - Me.TBOpenR0.Text = "Recent #0" - ' - 'TBOpenR1 - ' - Me.TBOpenR1.Enabled = False - Me.TBOpenR1.Name = "TBOpenR1" - Me.TBOpenR1.Size = New System.Drawing.Size(199, 22) - Me.TBOpenR1.Tag = "1" - Me.TBOpenR1.Text = "Recent #1" - ' - 'TBOpenR2 - ' - Me.TBOpenR2.Enabled = False - Me.TBOpenR2.Name = "TBOpenR2" - Me.TBOpenR2.Size = New System.Drawing.Size(199, 22) - Me.TBOpenR2.Tag = "2" - Me.TBOpenR2.Text = "Recent #2" - ' - 'TBOpenR3 - ' - Me.TBOpenR3.Enabled = False - Me.TBOpenR3.Name = "TBOpenR3" - Me.TBOpenR3.Size = New System.Drawing.Size(199, 22) - Me.TBOpenR3.Tag = "3" - Me.TBOpenR3.Text = "Recent #3" - ' - 'TBOpenR4 - ' - Me.TBOpenR4.Enabled = False - Me.TBOpenR4.Name = "TBOpenR4" - Me.TBOpenR4.Size = New System.Drawing.Size(199, 22) - Me.TBOpenR4.Tag = "4" - Me.TBOpenR4.Text = "Recent #4" - ' - 'ToolStripSeparator12 - ' - Me.ToolStripSeparator12.Name = "ToolStripSeparator12" - Me.ToolStripSeparator12.Size = New System.Drawing.Size(196, 6) - ' - 'TBImportSM - ' - Me.TBImportSM.Image = Global.iBMSC.My.Resources.Resources.x16Import2 - Me.TBImportSM.Name = "TBImportSM" - Me.TBImportSM.Size = New System.Drawing.Size(199, 22) - Me.TBImportSM.Text = "Import from .SM file" - ' - 'TBImportIBMSC - ' - Me.TBImportIBMSC.Image = Global.iBMSC.My.Resources.Resources.x16Import2 - Me.TBImportIBMSC.Name = "TBImportIBMSC" - Me.TBImportIBMSC.Size = New System.Drawing.Size(199, 22) - Me.TBImportIBMSC.Text = "Import from .IBMSC file" - ' - 'TBSave - ' - Me.TBSave.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image - Me.TBSave.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.TBSaveAs, Me.TBExport}) - Me.TBSave.Image = Global.iBMSC.My.Resources.Resources.x16Save - Me.TBSave.ImageTransparentColor = System.Drawing.Color.Magenta - Me.TBSave.Name = "TBSave" - Me.TBSave.Size = New System.Drawing.Size(32, 22) - Me.TBSave.Text = "Save (Ctrl+S)" - ' - 'TBSaveAs - ' - Me.TBSaveAs.Image = Global.iBMSC.My.Resources.Resources.x16SaveAs - Me.TBSaveAs.Name = "TBSaveAs" - Me.TBSaveAs.Size = New System.Drawing.Size(168, 22) - Me.TBSaveAs.Text = "Save As..." - ' - 'TBExport - ' - Me.TBExport.Image = Global.iBMSC.My.Resources.Resources.x16Export - Me.TBExport.Name = "TBExport" - Me.TBExport.Size = New System.Drawing.Size(168, 22) - Me.TBExport.Text = "Export .IBMSC file" - ' - 'ToolStripSeparator1 - ' - Me.ToolStripSeparator1.Name = "ToolStripSeparator1" - Me.ToolStripSeparator1.Size = New System.Drawing.Size(6, 25) - ' - 'TBCut - ' - Me.TBCut.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image - Me.TBCut.Image = Global.iBMSC.My.Resources.Resources.x16Cut - Me.TBCut.ImageTransparentColor = System.Drawing.Color.Magenta - Me.TBCut.Name = "TBCut" - Me.TBCut.Size = New System.Drawing.Size(23, 22) - Me.TBCut.Text = "Cut (Ctrl+X)" - ' - 'TBCopy - ' - Me.TBCopy.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image - Me.TBCopy.Image = Global.iBMSC.My.Resources.Resources.x16Copy - Me.TBCopy.ImageTransparentColor = System.Drawing.Color.Magenta - Me.TBCopy.Name = "TBCopy" - Me.TBCopy.Size = New System.Drawing.Size(23, 22) - Me.TBCopy.Text = "Copy (Ctrl+C)" - ' - 'TBPaste - ' - Me.TBPaste.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image - Me.TBPaste.Image = Global.iBMSC.My.Resources.Resources.x16Paste - Me.TBPaste.ImageTransparentColor = System.Drawing.Color.Magenta - Me.TBPaste.Name = "TBPaste" - Me.TBPaste.Size = New System.Drawing.Size(23, 22) - Me.TBPaste.Text = "Paste (Ctrl+V)" - ' - 'TBFind - ' - Me.TBFind.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image - Me.TBFind.Image = Global.iBMSC.My.Resources.Resources.x16Find - Me.TBFind.ImageTransparentColor = System.Drawing.Color.Magenta - Me.TBFind.Name = "TBFind" - Me.TBFind.Size = New System.Drawing.Size(23, 22) - Me.TBFind.Text = "Find / Delete / Replace (Ctrl+F)" - ' - 'ToolStripSeparator24 - ' - Me.ToolStripSeparator24.Name = "ToolStripSeparator24" - Me.ToolStripSeparator24.Size = New System.Drawing.Size(6, 25) - ' - 'TBStatistics - ' - Me.TBStatistics.Font = New System.Drawing.Font("Segoe UI", 9.0!, System.Drawing.FontStyle.Bold) - Me.TBStatistics.Image = Global.iBMSC.My.Resources.Resources.x16Statistics - Me.TBStatistics.ImageTransparentColor = System.Drawing.Color.Magenta - Me.TBStatistics.Name = "TBStatistics" - Me.TBStatistics.Size = New System.Drawing.Size(34, 22) - Me.TBStatistics.Text = "0" - Me.TBStatistics.ToolTipText = "Statistics (Ctrl+T)" - ' - 'TBMyO2 - ' - Me.TBMyO2.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image - Me.TBMyO2.Image = Global.iBMSC.My.Resources.Resources.x16MyO2 - Me.TBMyO2.ImageTransparentColor = System.Drawing.Color.Magenta - Me.TBMyO2.Name = "TBMyO2" - Me.TBMyO2.Size = New System.Drawing.Size(23, 22) - Me.TBMyO2.Text = "MyO2 ToolBox (Chinese Only)" - ' - 'ToolStripSeparator4 - ' - Me.ToolStripSeparator4.Name = "ToolStripSeparator4" - Me.ToolStripSeparator4.Size = New System.Drawing.Size(6, 25) - ' - 'TBErrorCheck - ' - Me.TBErrorCheck.Checked = True - Me.TBErrorCheck.CheckOnClick = True - Me.TBErrorCheck.CheckState = System.Windows.Forms.CheckState.Checked - Me.TBErrorCheck.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image - Me.TBErrorCheck.Image = Global.iBMSC.My.Resources.Resources.x16CheckError - Me.TBErrorCheck.ImageTransparentColor = System.Drawing.Color.Magenta - Me.TBErrorCheck.Name = "TBErrorCheck" - Me.TBErrorCheck.Size = New System.Drawing.Size(23, 22) - Me.TBErrorCheck.Text = "Error Check" - ' - 'TBPreviewOnClick - ' - Me.TBPreviewOnClick.Checked = True - Me.TBPreviewOnClick.CheckOnClick = True - Me.TBPreviewOnClick.CheckState = System.Windows.Forms.CheckState.Checked - Me.TBPreviewOnClick.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image - Me.TBPreviewOnClick.Image = Global.iBMSC.My.Resources.Resources.x16PreviewOnClick - Me.TBPreviewOnClick.ImageTransparentColor = System.Drawing.Color.Magenta - Me.TBPreviewOnClick.Name = "TBPreviewOnClick" - Me.TBPreviewOnClick.Size = New System.Drawing.Size(23, 22) - Me.TBPreviewOnClick.Text = "Preview On Click" - ' - 'TBShowFileName - ' - Me.TBShowFileName.CheckOnClick = True - Me.TBShowFileName.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image - Me.TBShowFileName.Image = Global.iBMSC.My.Resources.Resources.x16ShowFileNameN - Me.TBShowFileName.ImageTransparentColor = System.Drawing.Color.Magenta - Me.TBShowFileName.Name = "TBShowFileName" - Me.TBShowFileName.Size = New System.Drawing.Size(23, 22) - Me.TBShowFileName.Text = "Show File Name on Notes" - ' - 'ToolStripSeparator8 - ' - Me.ToolStripSeparator8.Name = "ToolStripSeparator8" - Me.ToolStripSeparator8.Size = New System.Drawing.Size(6, 25) - ' - 'TBNTInput - ' - Me.TBNTInput.Checked = True - Me.TBNTInput.CheckOnClick = True - Me.TBNTInput.CheckState = System.Windows.Forms.CheckState.Checked - Me.TBNTInput.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image - Me.TBNTInput.Image = Global.iBMSC.My.Resources.Resources.x16NTInput - Me.TBNTInput.ImageTransparentColor = System.Drawing.Color.Magenta - Me.TBNTInput.Name = "TBNTInput" - Me.TBNTInput.Size = New System.Drawing.Size(23, 22) - Me.TBNTInput.Text = "LongNote Input Style - NoteTool/BMSE" - ' - 'TBWavIncrease - ' - Me.TBWavIncrease.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image - Me.TBWavIncrease.Image = CType(resources.GetObject("TBWavIncrease.Image"), System.Drawing.Image) - Me.TBWavIncrease.ImageTransparentColor = System.Drawing.Color.Magenta - Me.TBWavIncrease.Name = "TBWavIncrease" - Me.TBWavIncrease.Size = New System.Drawing.Size(23, 22) - Me.TBWavIncrease.Text = "Autoincrease WAV when writing" - ' - 'ToolStripSeparator2 - ' - Me.ToolStripSeparator2.Name = "ToolStripSeparator2" - Me.ToolStripSeparator2.Size = New System.Drawing.Size(6, 25) - ' - 'TBUndo - ' - Me.TBUndo.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image - Me.TBUndo.Enabled = False - Me.TBUndo.Image = Global.iBMSC.My.Resources.Resources.x16Undo - Me.TBUndo.ImageTransparentColor = System.Drawing.Color.Magenta - Me.TBUndo.Name = "TBUndo" - Me.TBUndo.Size = New System.Drawing.Size(23, 22) - Me.TBUndo.Text = "Undo (Ctrl+Z)" - ' - 'TBRedo - ' - Me.TBRedo.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image - Me.TBRedo.Enabled = False - Me.TBRedo.Image = Global.iBMSC.My.Resources.Resources.x16Redo - Me.TBRedo.ImageTransparentColor = System.Drawing.Color.Magenta - Me.TBRedo.Name = "TBRedo" - Me.TBRedo.Size = New System.Drawing.Size(23, 22) - Me.TBRedo.Text = "Redo (Ctrl+Y)" - ' - 'ToolStripSeparator5 - ' - Me.ToolStripSeparator5.Name = "ToolStripSeparator5" - Me.ToolStripSeparator5.Size = New System.Drawing.Size(6, 25) - ' - 'TBTimeSelect - ' - Me.TBTimeSelect.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image - Me.TBTimeSelect.Image = Global.iBMSC.My.Resources.Resources.x16TimeSelection - Me.TBTimeSelect.ImageTransparentColor = System.Drawing.Color.Magenta - Me.TBTimeSelect.Name = "TBTimeSelect" - Me.TBTimeSelect.Size = New System.Drawing.Size(23, 22) - Me.TBTimeSelect.Text = "Time Selection Tool (F1)" - ' - 'TBSelect - ' - Me.TBSelect.Checked = True - Me.TBSelect.CheckState = System.Windows.Forms.CheckState.Checked - Me.TBSelect.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image - Me.TBSelect.Image = Global.iBMSC.My.Resources.Resources.x16Select - Me.TBSelect.ImageTransparentColor = System.Drawing.Color.Magenta - Me.TBSelect.Name = "TBSelect" - Me.TBSelect.Size = New System.Drawing.Size(23, 22) - Me.TBSelect.Text = "Select Tool (F2)" - ' - 'TBWrite - ' - Me.TBWrite.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image - Me.TBWrite.Image = Global.iBMSC.My.Resources.Resources.x16Pen - Me.TBWrite.ImageTransparentColor = System.Drawing.Color.Magenta - Me.TBWrite.Name = "TBWrite" - Me.TBWrite.Size = New System.Drawing.Size(23, 22) - Me.TBWrite.Text = "Write Tool (F3)" - ' - 'ToolStripSeparator3 - ' - Me.ToolStripSeparator3.Name = "ToolStripSeparator3" - Me.ToolStripSeparator3.Size = New System.Drawing.Size(6, 25) - ' - 'TBPlayB - ' - Me.TBPlayB.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image - Me.TBPlayB.Image = Global.iBMSC.My.Resources.Resources.x16PlayB - Me.TBPlayB.ImageTransparentColor = System.Drawing.Color.Magenta - Me.TBPlayB.Name = "TBPlayB" - Me.TBPlayB.Size = New System.Drawing.Size(23, 22) - Me.TBPlayB.Text = "Play from beginning (F5)" - ' - 'TBPlay - ' - Me.TBPlay.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image - Me.TBPlay.Image = Global.iBMSC.My.Resources.Resources.x16Play - Me.TBPlay.ImageTransparentColor = System.Drawing.Color.Magenta - Me.TBPlay.Name = "TBPlay" - Me.TBPlay.Size = New System.Drawing.Size(23, 22) - Me.TBPlay.Text = "Play from here (F6)" - ' - 'TBStop - ' - Me.TBStop.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image - Me.TBStop.Image = Global.iBMSC.My.Resources.Resources.x16Stop - Me.TBStop.ImageTransparentColor = System.Drawing.Color.Magenta - Me.TBStop.Name = "TBStop" - Me.TBStop.Size = New System.Drawing.Size(23, 22) - Me.TBStop.Text = "Stop (F7)" - ' - 'TBPOptions - ' - Me.TBPOptions.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image - Me.TBPOptions.Image = Global.iBMSC.My.Resources.Resources.x16PlayerOptions - Me.TBPOptions.ImageTransparentColor = System.Drawing.Color.Magenta - Me.TBPOptions.Name = "TBPOptions" - Me.TBPOptions.Size = New System.Drawing.Size(23, 22) - Me.TBPOptions.Text = "Player Options (F9)" - ' - 'ToolStripSeparator7 - ' - Me.ToolStripSeparator7.Name = "ToolStripSeparator7" - Me.ToolStripSeparator7.Size = New System.Drawing.Size(6, 25) - ' - 'TBVOptions - ' - Me.TBVOptions.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image - Me.TBVOptions.Image = Global.iBMSC.My.Resources.Resources.x16VisualOptions - Me.TBVOptions.ImageTransparentColor = System.Drawing.Color.Magenta - Me.TBVOptions.Name = "TBVOptions" - Me.TBVOptions.Size = New System.Drawing.Size(23, 22) - Me.TBVOptions.Text = "Visual Options (F12)" - ' - 'TBGOptions - ' - Me.TBGOptions.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image - Me.TBGOptions.Image = Global.iBMSC.My.Resources.Resources.x16GeneralOptions - Me.TBGOptions.ImageTransparentColor = System.Drawing.Color.Magenta - Me.TBGOptions.Name = "TBGOptions" - Me.TBGOptions.Size = New System.Drawing.Size(23, 22) - Me.TBGOptions.Text = "General Options (F10)" - ' - 'POBStorm - ' - Me.POBStorm.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image - Me.POBStorm.Image = Global.iBMSC.My.Resources.Resources.x16Storm - Me.POBStorm.ImageTransparentColor = System.Drawing.Color.Magenta - Me.POBStorm.Name = "POBStorm" - Me.POBStorm.Size = New System.Drawing.Size(23, 22) - Me.POBStorm.Text = "Storm" - Me.POBStorm.Visible = False - ' - 'pStatus - ' - Me.pStatus.AutoSize = True - Me.pStatus.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink - Me.pStatus.Controls.Add(Me.FStatus2) - Me.pStatus.Controls.Add(Me.FStatus) - Me.pStatus.Dock = System.Windows.Forms.DockStyle.Bottom - Me.pStatus.Location = New System.Drawing.Point(0, 759) - Me.pStatus.Name = "pStatus" - Me.pStatus.Size = New System.Drawing.Size(952, 22) - Me.pStatus.TabIndex = 62 - ' - 'FStatus2 - ' - Me.FStatus2.AccessibleRole = System.Windows.Forms.AccessibleRole.StatusBar - Me.FStatus2.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.FSSS, Me.FSSL, Me.FSSH, Me.BVCReverse, Me.LblMultiply, Me.TVCM, Me.LblDivide, Me.TVCD, Me.BVCApply, Me.TVCBPM, Me.BVCCalculate, Me.BConvertStop}) - Me.FStatus2.Location = New System.Drawing.Point(0, 0) - Me.FStatus2.Name = "FStatus2" - Me.FStatus2.ShowItemToolTips = True - Me.FStatus2.Size = New System.Drawing.Size(952, 22) - Me.FStatus2.TabIndex = 0 - Me.FStatus2.Text = "Status" - Me.FStatus2.Visible = False - ' - 'FSSS - ' - Me.FSSS.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text - Me.FSSS.Font = New System.Drawing.Font("Segoe UI", 9.0!, System.Drawing.FontStyle.Bold) - Me.FSSS.ImageTransparentColor = System.Drawing.Color.Magenta - Me.FSSS.Name = "FSSS" - Me.FSSS.Size = New System.Drawing.Size(23, 20) - Me.FSSS.Text = "0" - Me.FSSS.ToolTipText = "Selection Start Position" - ' - 'FSSL - ' - Me.FSSL.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text - Me.FSSL.Font = New System.Drawing.Font("Segoe UI", 9.0!, System.Drawing.FontStyle.Bold) - Me.FSSL.ImageTransparentColor = System.Drawing.Color.Magenta - Me.FSSL.Name = "FSSL" - Me.FSSL.Size = New System.Drawing.Size(23, 20) - Me.FSSL.Text = "0" - Me.FSSL.ToolTipText = "Selection Length" - ' - 'FSSH - ' - Me.FSSH.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text - Me.FSSH.Font = New System.Drawing.Font("Segoe UI", 9.0!, System.Drawing.FontStyle.Bold) - Me.FSSH.ImageTransparentColor = System.Drawing.Color.Magenta - Me.FSSH.Name = "FSSH" - Me.FSSH.Size = New System.Drawing.Size(23, 20) - Me.FSSH.Text = "0" - Me.FSSH.ToolTipText = "Selection Split Position" - ' - 'BVCReverse - ' - Me.BVCReverse.BackColor = System.Drawing.Color.FromArgb(CType(CType(192, Byte), Integer), CType(CType(192, Byte), Integer), CType(CType(255, Byte), Integer)) - Me.BVCReverse.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text - Me.BVCReverse.ImageTransparentColor = System.Drawing.Color.Magenta - Me.BVCReverse.Name = "BVCReverse" - Me.BVCReverse.Size = New System.Drawing.Size(102, 20) - Me.BVCReverse.Text = "Reverse Selection" - ' - 'LblMultiply - ' - Me.LblMultiply.Name = "LblMultiply" - Me.LblMultiply.Size = New System.Drawing.Size(15, 17) - Me.LblMultiply.Text = "×" - ' - 'TVCM - ' - Me.TVCM.BackColor = System.Drawing.Color.FromArgb(CType(CType(255, Byte), Integer), CType(CType(192, Byte), Integer), CType(CType(192, Byte), Integer)) - Me.TVCM.BorderStyle = System.Windows.Forms.BorderStyle.None - Me.TVCM.Font = New System.Drawing.Font("Segoe UI", 9.0!, System.Drawing.FontStyle.Bold) - Me.TVCM.Name = "TVCM" - Me.TVCM.Size = New System.Drawing.Size(60, 22) - Me.TVCM.Text = "2" - Me.TVCM.TextBoxTextAlign = System.Windows.Forms.HorizontalAlignment.Center - ' - 'LblDivide - ' - Me.LblDivide.Name = "LblDivide" - Me.LblDivide.Size = New System.Drawing.Size(15, 17) - Me.LblDivide.Text = "÷" - ' - 'TVCD - ' - Me.TVCD.BackColor = System.Drawing.Color.FromArgb(CType(CType(255, Byte), Integer), CType(CType(192, Byte), Integer), CType(CType(192, Byte), Integer)) - Me.TVCD.BorderStyle = System.Windows.Forms.BorderStyle.None - Me.TVCD.Font = New System.Drawing.Font("Segoe UI", 9.0!, System.Drawing.FontStyle.Bold) - Me.TVCD.Name = "TVCD" - Me.TVCD.Size = New System.Drawing.Size(60, 22) - Me.TVCD.Text = "1" - Me.TVCD.TextBoxTextAlign = System.Windows.Forms.HorizontalAlignment.Center - ' - 'BVCApply - ' - Me.BVCApply.BackColor = System.Drawing.Color.FromArgb(CType(CType(192, Byte), Integer), CType(CType(192, Byte), Integer), CType(CType(255, Byte), Integer)) - Me.BVCApply.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text - Me.BVCApply.ImageTransparentColor = System.Drawing.Color.Magenta - Me.BVCApply.Name = "BVCApply" - Me.BVCApply.Size = New System.Drawing.Size(96, 20) - Me.BVCApply.Text = "Expand By Ratio" - Me.BVCApply.ToolTipText = "This will expand notes and selection by the ratio next to this button. Ignores ce" & - "nter bar." - ' - 'TVCBPM - ' - Me.TVCBPM.BackColor = System.Drawing.Color.FromArgb(CType(CType(255, Byte), Integer), CType(CType(192, Byte), Integer), CType(CType(192, Byte), Integer)) - Me.TVCBPM.BorderStyle = System.Windows.Forms.BorderStyle.None - Me.TVCBPM.Font = New System.Drawing.Font("Segoe UI", 9.0!, System.Drawing.FontStyle.Bold) - Me.TVCBPM.Name = "TVCBPM" - Me.TVCBPM.Size = New System.Drawing.Size(80, 22) - Me.TVCBPM.Text = "120" - Me.TVCBPM.TextBoxTextAlign = System.Windows.Forms.HorizontalAlignment.Center - ' - 'BVCCalculate - ' - Me.BVCCalculate.BackColor = System.Drawing.Color.FromArgb(CType(CType(192, Byte), Integer), CType(CType(192, Byte), Integer), CType(CType(255, Byte), Integer)) - Me.BVCCalculate.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text - Me.BVCCalculate.ImageTransparentColor = System.Drawing.Color.Magenta - Me.BVCCalculate.Name = "BVCCalculate" - Me.BVCCalculate.Size = New System.Drawing.Size(103, 20) - Me.BVCCalculate.Text = "Relocate By Value" - Me.BVCCalculate.ToolTipText = "This will move notes within the selection and preserve the selection, given the B" & - "PM value next to this button. Considers center bar." - ' - 'BConvertStop - ' - Me.BConvertStop.BackColor = System.Drawing.Color.FromArgb(CType(CType(192, Byte), Integer), CType(CType(192, Byte), Integer), CType(CType(255, Byte), Integer)) - Me.BConvertStop.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text - Me.BConvertStop.ImageTransparentColor = System.Drawing.Color.Magenta - Me.BConvertStop.Name = "BConvertStop" - Me.BConvertStop.Size = New System.Drawing.Size(115, 20) - Me.BConvertStop.Text = "Transform Into Stop" - Me.BConvertStop.ToolTipText = "This will move notes within the selection and preserve the selection, given the B" & - "PM value next to this button. Considers center bar." - ' - 'FStatus - ' - Me.FStatus.AccessibleRole = System.Windows.Forms.AccessibleRole.StatusBar - Me.FStatus.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.FSC, Me.FSW, Me.FSM, Me.FSP1, Me.FSP3, Me.FSP2, Me.FSP4, Me.TimeStatusLabel, Me.FST, Me.FSH, Me.FSE}) - Me.FStatus.Location = New System.Drawing.Point(0, 0) - Me.FStatus.Name = "FStatus" - Me.FStatus.ShowItemToolTips = True - Me.FStatus.Size = New System.Drawing.Size(952, 22) - Me.FStatus.SizingGrip = False - Me.FStatus.TabIndex = 62 - Me.FStatus.Text = "Status" - ' - 'FSC - ' - Me.FSC.AutoSize = False - Me.FSC.Name = "FSC" - Me.FSC.Size = New System.Drawing.Size(70, 17) - Me.FSC.Text = "BPM" - Me.FSC.ToolTipText = "Column Caption" - ' - 'FSW - ' - Me.FSW.AutoSize = False - Me.FSW.ForeColor = System.Drawing.Color.FromArgb(CType(CType(128, Byte), Integer), CType(CType(64, Byte), Integer), CType(CType(0, Byte), Integer)) - Me.FSW.Name = "FSW" - Me.FSW.Size = New System.Drawing.Size(40, 17) - Me.FSW.Text = "01" - Me.FSW.ToolTipText = "Note Index" - ' - 'FSM - ' - Me.FSM.AutoSize = False - Me.FSM.ForeColor = System.Drawing.Color.Teal - Me.FSM.Name = "FSM" - Me.FSM.Size = New System.Drawing.Size(40, 17) - Me.FSM.Text = "000" - Me.FSM.ToolTipText = "Measure Index" - ' - 'FSP1 - ' - Me.FSP1.AutoSize = False - Me.FSP1.Font = New System.Drawing.Font("Segoe UI", 9.0!, System.Drawing.FontStyle.Bold) - Me.FSP1.Name = "FSP1" - Me.FSP1.Size = New System.Drawing.Size(170, 17) - Me.FSP1.Text = "9.41176470588235 / 9999" - Me.FSP1.ToolTipText = "Grid Resolution" - ' - 'FSP3 - ' - Me.FSP3.AutoSize = False - Me.FSP3.Font = New System.Drawing.Font("Segoe UI", 9.0!, System.Drawing.FontStyle.Bold) - Me.FSP3.ForeColor = System.Drawing.Color.Maroon - Me.FSP3.Name = "FSP3" - Me.FSP3.Size = New System.Drawing.Size(85, 17) - Me.FSP3.Text = "9999 / 9999" - Me.FSP3.ToolTipText = "Reduced Resolution" - ' - 'FSP2 - ' - Me.FSP2.AutoSize = False - Me.FSP2.Font = New System.Drawing.Font("Segoe UI", 9.0!, System.Drawing.FontStyle.Bold) - Me.FSP2.ForeColor = System.Drawing.Color.Green - Me.FSP2.Name = "FSP2" - Me.FSP2.Size = New System.Drawing.Size(170, 17) - Me.FSP2.Text = "112.941176470588 / 9999" - Me.FSP2.ToolTipText = "Measure Resolution" - ' - 'FSP4 - ' - Me.FSP4.AutoSize = False - Me.FSP4.Name = "FSP4" - Me.FSP4.Size = New System.Drawing.Size(115, 17) - Me.FSP4.Text = "112.941176470588" - Me.FSP4.ToolTipText = "Absolute Position" - ' - 'TimeStatusLabel - ' - Me.TimeStatusLabel.Name = "TimeStatusLabel" - Me.TimeStatusLabel.Size = New System.Drawing.Size(55, 17) - Me.TimeStatusLabel.Text = "00:00:000" - ' - 'FST - ' - Me.FST.ForeColor = System.Drawing.Color.Olive - Me.FST.LinkColor = System.Drawing.Color.FromArgb(CType(CType(0, Byte), Integer), CType(CType(0, Byte), Integer), CType(CType(255, Byte), Integer)) - Me.FST.Name = "FST" - Me.FST.Size = New System.Drawing.Size(64, 17) - Me.FST.Text = "Length = 0" - ' - 'FSH - ' - Me.FSH.ForeColor = System.Drawing.Color.Blue - Me.FSH.Name = "FSH" - Me.FSH.Size = New System.Drawing.Size(46, 17) - Me.FSH.Text = "Hidden" - ' - 'FSE - ' - Me.FSE.ForeColor = System.Drawing.Color.Red - Me.FSE.Name = "FSE" - Me.FSE.Size = New System.Drawing.Size(32, 17) - Me.FSE.Text = "Error" - ' - 'TimerMiddle - ' - Me.TimerMiddle.Interval = 15 - ' - 'ToolStripContainer1 - ' - ' - 'ToolStripContainer1.ContentPanel - ' - Me.ToolStripContainer1.ContentPanel.Controls.Add(Me.PMain) - Me.ToolStripContainer1.ContentPanel.Controls.Add(Me.SpR) - Me.ToolStripContainer1.ContentPanel.Controls.Add(Me.SpL) - Me.ToolStripContainer1.ContentPanel.Controls.Add(Me.PMainR) - Me.ToolStripContainer1.ContentPanel.Controls.Add(Me.PMainL) - Me.ToolStripContainer1.ContentPanel.Size = New System.Drawing.Size(952, 711) - Me.ToolStripContainer1.Dock = System.Windows.Forms.DockStyle.Fill - Me.ToolStripContainer1.Location = New System.Drawing.Point(0, 0) - Me.ToolStripContainer1.Name = "ToolStripContainer1" - Me.ToolStripContainer1.Size = New System.Drawing.Size(952, 759) - Me.ToolStripContainer1.TabIndex = 65 - Me.ToolStripContainer1.Text = "ToolStripContainer1" - ' - 'ToolStripContainer1.TopToolStripPanel - ' - Me.ToolStripContainer1.TopToolStripPanel.Controls.Add(Me.mnMain) - Me.ToolStripContainer1.TopToolStripPanel.Controls.Add(Me.TBMain) - ' - 'PMain - ' - Me.PMain.BackColor = System.Drawing.Color.Black - Me.PMain.Controls.Add(Me.PMainIn) - Me.PMain.Controls.Add(Me.MainPanelScroll) - Me.PMain.Controls.Add(Me.HS) - Me.PMain.Dock = System.Windows.Forms.DockStyle.Fill - Me.PMain.Font = New System.Drawing.Font("Verdana", 9.0!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) - Me.PMain.ForeColor = System.Drawing.Color.White - Me.PMain.Location = New System.Drawing.Point(5, 0) - Me.PMain.Name = "PMain" - Me.PMain.Size = New System.Drawing.Size(942, 711) - Me.PMain.TabIndex = 58 - Me.PMain.Tag = "1" - ' - 'PMainIn - ' - Me.PMainIn.BackColor = System.Drawing.Color.Black - Me.PMainIn.Dock = System.Windows.Forms.DockStyle.Fill - Me.PMainIn.Font = New System.Drawing.Font("Verdana", 9.0!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) - Me.PMainIn.ForeColor = System.Drawing.Color.White - Me.PMainIn.Location = New System.Drawing.Point(0, 0) - Me.PMainIn.Name = "PMainIn" - Me.PMainIn.Size = New System.Drawing.Size(925, 694) - Me.PMainIn.TabIndex = 0 - Me.PMainIn.TabStop = True - Me.PMainIn.Tag = "1" - ' - 'MainPanelScroll - ' - Me.MainPanelScroll.AccessibleRole = System.Windows.Forms.AccessibleRole.ScrollBar - Me.MainPanelScroll.Dock = System.Windows.Forms.DockStyle.Right - Me.MainPanelScroll.LargeChange = 592 - Me.MainPanelScroll.Location = New System.Drawing.Point(925, 0) - Me.MainPanelScroll.Maximum = 591 - Me.MainPanelScroll.Minimum = -10000 - Me.MainPanelScroll.Name = "MainPanelScroll" - Me.MainPanelScroll.Size = New System.Drawing.Size(17, 694) - Me.MainPanelScroll.SmallChange = 12 - Me.MainPanelScroll.TabIndex = 2 - Me.MainPanelScroll.Tag = "1" - ' - 'HS - ' - Me.HS.AccessibleRole = System.Windows.Forms.AccessibleRole.ScrollBar - Me.HS.Dock = System.Windows.Forms.DockStyle.Bottom - Me.HS.LargeChange = 777 - Me.HS.Location = New System.Drawing.Point(0, 694) - Me.HS.Maximum = 1233 - Me.HS.Name = "HS" - Me.HS.Size = New System.Drawing.Size(942, 17) - Me.HS.TabIndex = 3 - Me.HS.Tag = "1" - ' - 'SpR - ' - Me.SpR.Dock = System.Windows.Forms.DockStyle.Right - Me.SpR.FlatAppearance.BorderSize = 0 - Me.SpR.FlatStyle = System.Windows.Forms.FlatStyle.Flat - Me.SpR.Location = New System.Drawing.Point(947, 0) - Me.SpR.Name = "SpR" - Me.SpR.Size = New System.Drawing.Size(5, 711) - Me.SpR.TabIndex = 59 - Me.SpR.TabStop = False - Me.SpR.UseVisualStyleBackColor = True - Me.SpR.Visible = False - ' - 'SpL - ' - Me.SpL.Dock = System.Windows.Forms.DockStyle.Left - Me.SpL.FlatAppearance.BorderSize = 0 - Me.SpL.FlatStyle = System.Windows.Forms.FlatStyle.Flat - Me.SpL.Location = New System.Drawing.Point(0, 0) - Me.SpL.Name = "SpL" - Me.SpL.Size = New System.Drawing.Size(5, 711) - Me.SpL.TabIndex = 60 - Me.SpL.TabStop = False - Me.SpL.UseVisualStyleBackColor = True - Me.SpL.Visible = False - ' - 'PMainR - ' - Me.PMainR.BackColor = System.Drawing.Color.Black - Me.PMainR.Controls.Add(Me.PMainInR) - Me.PMainR.Controls.Add(Me.RightPanelScroll) - Me.PMainR.Controls.Add(Me.HSR) - Me.PMainR.Dock = System.Windows.Forms.DockStyle.Right - Me.PMainR.Font = New System.Drawing.Font("Verdana", 9.0!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) - Me.PMainR.ForeColor = System.Drawing.Color.White - Me.PMainR.Location = New System.Drawing.Point(952, 0) - Me.PMainR.Name = "PMainR" - Me.PMainR.Size = New System.Drawing.Size(0, 711) - Me.PMainR.TabIndex = 56 - Me.PMainR.Tag = "2" - ' - 'PMainInR - ' - Me.PMainInR.BackColor = System.Drawing.Color.Black - Me.PMainInR.Dock = System.Windows.Forms.DockStyle.Fill - Me.PMainInR.Font = New System.Drawing.Font("Verdana", 9.0!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) - Me.PMainInR.ForeColor = System.Drawing.Color.White - Me.PMainInR.Location = New System.Drawing.Point(0, 0) - Me.PMainInR.Name = "PMainInR" - Me.PMainInR.Size = New System.Drawing.Size(0, 694) - Me.PMainInR.TabIndex = 0 - Me.PMainInR.TabStop = True - Me.PMainInR.Tag = "2" - ' - 'RightPanelScroll - ' - Me.RightPanelScroll.Dock = System.Windows.Forms.DockStyle.Right - Me.RightPanelScroll.LargeChange = 592 - Me.RightPanelScroll.Location = New System.Drawing.Point(-17, 0) - Me.RightPanelScroll.Maximum = 591 - Me.RightPanelScroll.Minimum = -10000 - Me.RightPanelScroll.Name = "RightPanelScroll" - Me.RightPanelScroll.Size = New System.Drawing.Size(17, 694) - Me.RightPanelScroll.SmallChange = 12 - Me.RightPanelScroll.TabIndex = 2 - Me.RightPanelScroll.Tag = "2" - ' - 'HSR - ' - Me.HSR.Dock = System.Windows.Forms.DockStyle.Bottom - Me.HSR.LargeChange = 777 - Me.HSR.Location = New System.Drawing.Point(0, 694) - Me.HSR.Maximum = 1233 - Me.HSR.Name = "HSR" - Me.HSR.Size = New System.Drawing.Size(0, 17) - Me.HSR.TabIndex = 3 - Me.HSR.Tag = "2" - ' - 'PMainL - ' - Me.PMainL.BackColor = System.Drawing.Color.Black - Me.PMainL.Controls.Add(Me.PMainInL) - Me.PMainL.Controls.Add(Me.LeftPanelScroll) - Me.PMainL.Controls.Add(Me.HSL) - Me.PMainL.Dock = System.Windows.Forms.DockStyle.Left - Me.PMainL.Font = New System.Drawing.Font("Verdana", 9.0!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) - Me.PMainL.ForeColor = System.Drawing.Color.White - Me.PMainL.Location = New System.Drawing.Point(0, 0) - Me.PMainL.Name = "PMainL" - Me.PMainL.Size = New System.Drawing.Size(0, 711) - Me.PMainL.TabIndex = 54 - Me.PMainL.Tag = "0" - ' - 'PMainInL - ' - Me.PMainInL.BackColor = System.Drawing.Color.Black - Me.PMainInL.Dock = System.Windows.Forms.DockStyle.Fill - Me.PMainInL.Font = New System.Drawing.Font("Verdana", 9.0!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) - Me.PMainInL.ForeColor = System.Drawing.Color.White - Me.PMainInL.Location = New System.Drawing.Point(0, 0) - Me.PMainInL.Name = "PMainInL" - Me.PMainInL.Size = New System.Drawing.Size(0, 694) - Me.PMainInL.TabIndex = 0 - Me.PMainInL.TabStop = True - Me.PMainInL.Tag = "0" - ' - 'LeftPanelScroll - ' - Me.LeftPanelScroll.Dock = System.Windows.Forms.DockStyle.Right - Me.LeftPanelScroll.LargeChange = 592 - Me.LeftPanelScroll.Location = New System.Drawing.Point(-17, 0) - Me.LeftPanelScroll.Maximum = 591 - Me.LeftPanelScroll.Minimum = -10000 - Me.LeftPanelScroll.Name = "LeftPanelScroll" - Me.LeftPanelScroll.Size = New System.Drawing.Size(17, 694) - Me.LeftPanelScroll.SmallChange = 12 - Me.LeftPanelScroll.TabIndex = 2 - Me.LeftPanelScroll.Tag = "0" - ' - 'HSL - ' - Me.HSL.Dock = System.Windows.Forms.DockStyle.Bottom - Me.HSL.LargeChange = 777 - Me.HSL.Location = New System.Drawing.Point(0, 694) - Me.HSL.Maximum = 1233 - Me.HSL.Name = "HSL" - Me.HSL.Size = New System.Drawing.Size(0, 17) - Me.HSL.TabIndex = 3 - Me.HSL.Tag = "0" - ' - 'POptionsResizer - ' - Me.POptionsResizer.AutoSize = True - Me.POptionsResizer.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink - Me.POptionsResizer.Dock = System.Windows.Forms.DockStyle.Right - Me.POptionsResizer.FlatAppearance.BorderSize = 0 - Me.POptionsResizer.FlatStyle = System.Windows.Forms.FlatStyle.Flat - Me.POptionsResizer.Location = New System.Drawing.Point(952, 0) - Me.POptionsResizer.Name = "POptionsResizer" - Me.POptionsResizer.Size = New System.Drawing.Size(6, 781) - Me.POptionsResizer.TabIndex = 67 - Me.POptionsResizer.TabStop = False - Me.POptionsResizer.UseVisualStyleBackColor = True - ' - 'cVSLockR - ' - Me.cVSLockR.Appearance = System.Windows.Forms.Appearance.Button - Me.cVSLockR.FlatStyle = System.Windows.Forms.FlatStyle.Popup - Me.cVSLockR.Image = Global.iBMSC.My.Resources.Resources.x16Lock - Me.cVSLockR.Location = New System.Drawing.Point(46, 0) - Me.cVSLockR.Margin = New System.Windows.Forms.Padding(0) - Me.cVSLockR.Name = "cVSLockR" - Me.cVSLockR.Size = New System.Drawing.Size(23, 23) - Me.cVSLockR.TabIndex = 305 - Me.cVSLockR.Tag = "2" - Me.ToolTipUniversal.SetToolTip(Me.cVSLockR, "Lock Right Editing Panel") - ' - 'cVSLock - ' - Me.cVSLock.Appearance = System.Windows.Forms.Appearance.Button - Me.cVSLock.FlatStyle = System.Windows.Forms.FlatStyle.Popup - Me.cVSLock.Image = Global.iBMSC.My.Resources.Resources.x16Lock - Me.cVSLock.Location = New System.Drawing.Point(23, 0) - Me.cVSLock.Margin = New System.Windows.Forms.Padding(0) - Me.cVSLock.Name = "cVSLock" - Me.cVSLock.Size = New System.Drawing.Size(23, 23) - Me.cVSLock.TabIndex = 304 - Me.cVSLock.Tag = "1" - Me.ToolTipUniversal.SetToolTip(Me.cVSLock, "Lock Middle Editing Panel") - ' - 'cVSLockL - ' - Me.cVSLockL.Appearance = System.Windows.Forms.Appearance.Button - Me.cVSLockL.FlatStyle = System.Windows.Forms.FlatStyle.Popup - Me.cVSLockL.Image = Global.iBMSC.My.Resources.Resources.x16Lock - Me.cVSLockL.Location = New System.Drawing.Point(0, 0) - Me.cVSLockL.Margin = New System.Windows.Forms.Padding(0) - Me.cVSLockL.Name = "cVSLockL" - Me.cVSLockL.Size = New System.Drawing.Size(23, 23) - Me.cVSLockL.TabIndex = 303 - Me.cVSLockL.Tag = "0" - Me.ToolTipUniversal.SetToolTip(Me.cVSLockL, "Lock Left Editing Panel") - ' - 'BWLock - ' - Me.BWLock.Appearance = System.Windows.Forms.Appearance.Button - Me.BWLock.Checked = True - Me.BWLock.CheckState = System.Windows.Forms.CheckState.Checked - Me.BWLock.Image = Global.iBMSC.My.Resources.Resources.x16Lock - Me.BWLock.Location = New System.Drawing.Point(48, 0) - Me.BWLock.Margin = New System.Windows.Forms.Padding(0) - Me.BWLock.Name = "BWLock" - Me.BWLock.Size = New System.Drawing.Size(24, 24) - Me.BWLock.TabIndex = 404 - Me.ToolTipUniversal.SetToolTip(Me.BWLock, "Lock to BGM") - Me.BWLock.UseVisualStyleBackColor = True - ' - 'BWClear - ' - Me.BWClear.Image = Global.iBMSC.My.Resources.Resources.x16Remove - Me.BWClear.Location = New System.Drawing.Point(24, 0) - Me.BWClear.Margin = New System.Windows.Forms.Padding(0) - Me.BWClear.Name = "BWClear" - Me.BWClear.Size = New System.Drawing.Size(24, 24) - Me.BWClear.TabIndex = 403 - Me.ToolTipUniversal.SetToolTip(Me.BWClear, "Clear WaveForm") - Me.BWClear.UseVisualStyleBackColor = True - ' - 'BWLoad - ' - Me.BWLoad.Image = Global.iBMSC.My.Resources.Resources.x16Add - Me.BWLoad.Location = New System.Drawing.Point(0, 0) - Me.BWLoad.Margin = New System.Windows.Forms.Padding(0) - Me.BWLoad.Name = "BWLoad" - Me.BWLoad.Size = New System.Drawing.Size(24, 24) - Me.BWLoad.TabIndex = 402 - Me.ToolTipUniversal.SetToolTip(Me.BWLoad, "Load WaveForm") - Me.BWLoad.UseVisualStyleBackColor = True - ' - 'BWAVRemove - ' - Me.BWAVRemove.Image = Global.iBMSC.My.Resources.Resources.x16Remove - Me.BWAVRemove.Location = New System.Drawing.Point(72, 0) - Me.BWAVRemove.Margin = New System.Windows.Forms.Padding(0) - Me.BWAVRemove.Name = "BWAVRemove" - Me.BWAVRemove.Size = New System.Drawing.Size(24, 24) - Me.BWAVRemove.TabIndex = 605 - Me.ToolTipUniversal.SetToolTip(Me.BWAVRemove, "Remove") - Me.BWAVRemove.UseVisualStyleBackColor = True - ' - 'BWAVBrowse - ' - Me.BWAVBrowse.Image = Global.iBMSC.My.Resources.Resources.x16PlayerBrowse - Me.BWAVBrowse.Location = New System.Drawing.Point(48, 0) - Me.BWAVBrowse.Margin = New System.Windows.Forms.Padding(0) - Me.BWAVBrowse.Name = "BWAVBrowse" - Me.BWAVBrowse.Size = New System.Drawing.Size(24, 24) - Me.BWAVBrowse.TabIndex = 604 - Me.ToolTipUniversal.SetToolTip(Me.BWAVBrowse, "Browse") - Me.BWAVBrowse.UseVisualStyleBackColor = True - ' - 'BWAVDown - ' - Me.BWAVDown.Image = Global.iBMSC.My.Resources.Resources.x16Down - Me.BWAVDown.Location = New System.Drawing.Point(24, 0) - Me.BWAVDown.Margin = New System.Windows.Forms.Padding(0) - Me.BWAVDown.Name = "BWAVDown" - Me.BWAVDown.Size = New System.Drawing.Size(24, 24) - Me.BWAVDown.TabIndex = 603 - Me.ToolTipUniversal.SetToolTip(Me.BWAVDown, "Move Down") - Me.BWAVDown.UseVisualStyleBackColor = True - ' - 'BWAVUp - ' - Me.BWAVUp.Image = Global.iBMSC.My.Resources.Resources.x16Up - Me.BWAVUp.Location = New System.Drawing.Point(0, 0) - Me.BWAVUp.Margin = New System.Windows.Forms.Padding(0) - Me.BWAVUp.Name = "BWAVUp" - Me.BWAVUp.Size = New System.Drawing.Size(24, 24) - Me.BWAVUp.TabIndex = 602 - Me.ToolTipUniversal.SetToolTip(Me.BWAVUp, "Move Up") - Me.BWAVUp.UseVisualStyleBackColor = True - ' - 'POptions - ' - Me.POptions.AutoSize = True - Me.POptions.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink - Me.POptions.Controls.Add(Me.POExpansion) - Me.POptions.Controls.Add(Me.POBeat) - Me.POptions.Controls.Add(Me.POWAV) - Me.POptions.Controls.Add(Me.POWaveForm) - Me.POptions.Controls.Add(Me.POGrid) - Me.POptions.Controls.Add(Me.POHeader) - Me.POptions.Dock = System.Windows.Forms.DockStyle.Top - Me.POptions.Location = New System.Drawing.Point(0, 0) - Me.POptions.Name = "POptions" - Me.POptions.Size = New System.Drawing.Size(183, 1747) - Me.POptions.TabIndex = 29 - ' - 'POExpansion - ' - Me.POExpansion.AutoSize = True - Me.POExpansion.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink - Me.POExpansion.Controls.Add(Me.POExpansionInner) - Me.POExpansion.Controls.Add(Me.POExpansionSwitch) - Me.POExpansion.Dock = System.Windows.Forms.DockStyle.Top - Me.POExpansion.Location = New System.Drawing.Point(0, 1452) - Me.POExpansion.Name = "POExpansion" - Me.POExpansion.Size = New System.Drawing.Size(183, 295) - Me.POExpansion.TabIndex = 6 - ' - 'POExpansionInner - ' - Me.POExpansionInner.Controls.Add(Me.ECSelectSection) - Me.POExpansionInner.Controls.Add(Me.TExpansion) - Me.POExpansionInner.Controls.Add(Me.POExpansionResizer) - Me.POExpansionInner.Dock = System.Windows.Forms.DockStyle.Top - Me.POExpansionInner.Font = New System.Drawing.Font("Consolas", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) - Me.POExpansionInner.Location = New System.Drawing.Point(0, 20) - Me.POExpansionInner.Name = "POExpansionInner" - Me.POExpansionInner.Size = New System.Drawing.Size(183, 275) - Me.POExpansionInner.TabIndex = 7 - Me.POExpansionInner.Visible = False - ' - 'ECSelectSection - ' - Me.ECSelectSection.Anchor = System.Windows.Forms.AnchorStyles.Bottom - Me.ECSelectSection.Font = New System.Drawing.Font("Segoe UI", 9.0!) - Me.ECSelectSection.Location = New System.Drawing.Point(0, 250) - Me.ECSelectSection.Name = "ECSelectSection" - Me.ECSelectSection.Size = New System.Drawing.Size(183, 20) - Me.ECSelectSection.TabIndex = 1003 - Me.ECSelectSection.Text = "Select Section" - Me.ECSelectSection.UseVisualStyleBackColor = True - ' - 'TExpansion - ' - Me.TExpansion.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle - Me.TExpansion.Dock = System.Windows.Forms.DockStyle.Top - Me.TExpansion.HideSelection = False - Me.TExpansion.Location = New System.Drawing.Point(0, 0) - Me.TExpansion.Multiline = True - Me.TExpansion.Name = "TExpansion" - Me.TExpansion.ScrollBars = System.Windows.Forms.ScrollBars.Vertical - Me.TExpansion.Size = New System.Drawing.Size(183, 245) - Me.TExpansion.TabIndex = 1002 - Me.TExpansion.WordWrap = False - ' - 'POExpansionResizer - ' - Me.POExpansionResizer.Dock = System.Windows.Forms.DockStyle.Bottom - Me.POExpansionResizer.FlatAppearance.BorderSize = 0 - Me.POExpansionResizer.FlatStyle = System.Windows.Forms.FlatStyle.Flat - Me.POExpansionResizer.Location = New System.Drawing.Point(0, 270) - Me.POExpansionResizer.Margin = New System.Windows.Forms.Padding(0) - Me.POExpansionResizer.Name = "POExpansionResizer" - Me.POExpansionResizer.Size = New System.Drawing.Size(183, 5) - Me.POExpansionResizer.TabIndex = 65 - Me.POExpansionResizer.TabStop = False - Me.POExpansionResizer.UseVisualStyleBackColor = True - ' - 'POExpansionSwitch - ' - Me.POExpansionSwitch.Appearance = System.Windows.Forms.Appearance.Button - Me.POExpansionSwitch.BackColor = System.Drawing.SystemColors.Control - Me.POExpansionSwitch.Cursor = System.Windows.Forms.Cursors.Hand - Me.POExpansionSwitch.Dock = System.Windows.Forms.DockStyle.Top - Me.POExpansionSwitch.Font = New System.Drawing.Font("Segoe UI", 9.0!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) - Me.POExpansionSwitch.Location = New System.Drawing.Point(0, 0) - Me.POExpansionSwitch.Name = "POExpansionSwitch" - Me.POExpansionSwitch.Size = New System.Drawing.Size(183, 20) - Me.POExpansionSwitch.TabIndex = 1001 - Me.POExpansionSwitch.TabStop = False - Me.POExpansionSwitch.Text = "Expansion Code" - Me.POExpansionSwitch.TextAlign = System.Drawing.ContentAlignment.MiddleCenter - Me.POExpansionSwitch.UseCompatibleTextRendering = True - Me.POExpansionSwitch.UseVisualStyleBackColor = False - ' - 'POBeat - ' - Me.POBeat.AutoSize = True - Me.POBeat.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink - Me.POBeat.Controls.Add(Me.POBeatInner) - Me.POBeat.Controls.Add(Me.POBeatSwitch) - Me.POBeat.Dock = System.Windows.Forms.DockStyle.Top - Me.POBeat.Location = New System.Drawing.Point(0, 1182) - Me.POBeat.Name = "POBeat" - Me.POBeat.Size = New System.Drawing.Size(183, 270) - Me.POBeat.TabIndex = 5 - ' - 'POBeatInner - ' - Me.POBeatInner.ColumnCount = 1 - Me.POBeatInner.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100.0!)) - Me.POBeatInner.Controls.Add(Me.POBeatExpander, 0, 1) - Me.POBeatInner.Controls.Add(Me.POBeatResizer, 0, 4) - Me.POBeatInner.Controls.Add(Me.TableLayoutPanel7, 0, 0) - Me.POBeatInner.Controls.Add(Me.LBeat, 0, 3) - Me.POBeatInner.Controls.Add(Me.POBeatPart2, 0, 2) - Me.POBeatInner.Dock = System.Windows.Forms.DockStyle.Top - Me.POBeatInner.Location = New System.Drawing.Point(0, 20) - Me.POBeatInner.Name = "POBeatInner" - Me.POBeatInner.RowCount = 5 - Me.POBeatInner.RowStyles.Add(New System.Windows.Forms.RowStyle()) - Me.POBeatInner.RowStyles.Add(New System.Windows.Forms.RowStyle()) - Me.POBeatInner.RowStyles.Add(New System.Windows.Forms.RowStyle()) - Me.POBeatInner.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100.0!)) - Me.POBeatInner.RowStyles.Add(New System.Windows.Forms.RowStyle()) - Me.POBeatInner.Size = New System.Drawing.Size(183, 250) - Me.POBeatInner.TabIndex = 6 - Me.POBeatInner.Visible = False - ' - 'POBeatExpander - ' - Me.POBeatExpander.Appearance = System.Windows.Forms.Appearance.Button - Me.POBeatExpander.AutoSize = True - Me.POBeatExpander.Cursor = System.Windows.Forms.Cursors.Hand - Me.POBeatExpander.Dock = System.Windows.Forms.DockStyle.Top - Me.POBeatExpander.FlatAppearance.BorderSize = 0 - Me.POBeatExpander.FlatStyle = System.Windows.Forms.FlatStyle.Popup - Me.POBeatExpander.Location = New System.Drawing.Point(0, 54) - Me.POBeatExpander.Margin = New System.Windows.Forms.Padding(0) - Me.POBeatExpander.Name = "POBeatExpander" - Me.POBeatExpander.Size = New System.Drawing.Size(183, 25) - Me.POBeatExpander.TabIndex = 901 - Me.POBeatExpander.TabStop = False - Me.POBeatExpander.Text = "Expand..." - Me.POBeatExpander.TextAlign = System.Drawing.ContentAlignment.MiddleCenter - Me.POBeatExpander.UseVisualStyleBackColor = False - ' - 'POBeatResizer - ' - Me.POBeatInner.SetColumnSpan(Me.POBeatResizer, 2) - Me.POBeatResizer.Dock = System.Windows.Forms.DockStyle.Top - Me.POBeatResizer.FlatAppearance.BorderSize = 0 - Me.POBeatResizer.FlatStyle = System.Windows.Forms.FlatStyle.Flat - Me.POBeatResizer.Location = New System.Drawing.Point(0, 245) - Me.POBeatResizer.Margin = New System.Windows.Forms.Padding(0) - Me.POBeatResizer.Name = "POBeatResizer" - Me.POBeatResizer.Size = New System.Drawing.Size(183, 5) - Me.POBeatResizer.TabIndex = 64 - Me.POBeatResizer.TabStop = False - Me.POBeatResizer.UseVisualStyleBackColor = True - ' - 'TableLayoutPanel7 - ' - Me.TableLayoutPanel7.AutoSize = True - Me.TableLayoutPanel7.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink - Me.TableLayoutPanel7.ColumnCount = 4 - Me.TableLayoutPanel7.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 30.0!)) - Me.TableLayoutPanel7.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle()) - Me.TableLayoutPanel7.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 30.0!)) - Me.TableLayoutPanel7.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 40.0!)) - Me.TableLayoutPanel7.Controls.Add(Me.nBeatD, 2, 0) - Me.TableLayoutPanel7.Controls.Add(Me.BBeatApplyV, 3, 1) - Me.TableLayoutPanel7.Controls.Add(Me.nBeatN, 0, 0) - Me.TableLayoutPanel7.Controls.Add(Me.BBeatApply, 3, 0) - Me.TableLayoutPanel7.Controls.Add(Me.Label7, 1, 0) - Me.TableLayoutPanel7.Controls.Add(Me.tBeatValue, 0, 1) - Me.TableLayoutPanel7.Dock = System.Windows.Forms.DockStyle.Fill - Me.TableLayoutPanel7.Location = New System.Drawing.Point(0, 0) - Me.TableLayoutPanel7.Margin = New System.Windows.Forms.Padding(0) - Me.TableLayoutPanel7.Name = "TableLayoutPanel7" - Me.TableLayoutPanel7.RowCount = 2 - Me.TableLayoutPanel7.RowStyles.Add(New System.Windows.Forms.RowStyle()) - Me.TableLayoutPanel7.RowStyles.Add(New System.Windows.Forms.RowStyle()) - Me.TableLayoutPanel7.Size = New System.Drawing.Size(183, 54) - Me.TableLayoutPanel7.TabIndex = 63 - ' - 'nBeatD - ' - Me.nBeatD.Dock = System.Windows.Forms.DockStyle.Fill - Me.nBeatD.Location = New System.Drawing.Point(66, 3) - Me.nBeatD.Maximum = New Decimal(New Integer() {10000, 0, 0, 0}) - Me.nBeatD.Minimum = New Decimal(New Integer() {1, 0, 0, 0}) - Me.nBeatD.Name = "nBeatD" - Me.nBeatD.Size = New System.Drawing.Size(45, 23) - Me.nBeatD.TabIndex = 803 - Me.nBeatD.Value = New Decimal(New Integer() {4, 0, 0, 0}) - ' - 'BBeatApplyV - ' - Me.BBeatApplyV.AutoSize = True - Me.BBeatApplyV.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink - Me.BBeatApplyV.Dock = System.Windows.Forms.DockStyle.Fill - Me.BBeatApplyV.Location = New System.Drawing.Point(114, 29) - Me.BBeatApplyV.Margin = New System.Windows.Forms.Padding(0, 0, 3, 0) - Me.BBeatApplyV.Name = "BBeatApplyV" - Me.BBeatApplyV.Size = New System.Drawing.Size(66, 25) - Me.BBeatApplyV.TabIndex = 806 - Me.BBeatApplyV.Text = "Apply" - Me.BBeatApplyV.UseVisualStyleBackColor = True - ' - 'nBeatN - ' - Me.nBeatN.Dock = System.Windows.Forms.DockStyle.Fill - Me.nBeatN.Location = New System.Drawing.Point(3, 3) - Me.nBeatN.Maximum = New Decimal(New Integer() {99999, 0, 0, 0}) - Me.nBeatN.Minimum = New Decimal(New Integer() {1, 0, 0, 0}) - Me.nBeatN.Name = "nBeatN" - Me.nBeatN.Size = New System.Drawing.Size(45, 23) - Me.nBeatN.TabIndex = 802 - Me.nBeatN.Value = New Decimal(New Integer() {4, 0, 0, 0}) - ' - 'BBeatApply - ' - Me.BBeatApply.AutoSize = True - Me.BBeatApply.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink - Me.BBeatApply.Dock = System.Windows.Forms.DockStyle.Fill - Me.BBeatApply.Location = New System.Drawing.Point(114, 2) - Me.BBeatApply.Margin = New System.Windows.Forms.Padding(0, 2, 3, 2) - Me.BBeatApply.Name = "BBeatApply" - Me.BBeatApply.Size = New System.Drawing.Size(66, 25) - Me.BBeatApply.TabIndex = 804 - Me.BBeatApply.Text = "Apply" - Me.BBeatApply.UseVisualStyleBackColor = True - ' - 'Label7 - ' - Me.Label7.Anchor = System.Windows.Forms.AnchorStyles.None - Me.Label7.AutoSize = True - Me.Label7.Location = New System.Drawing.Point(51, 7) - Me.Label7.Margin = New System.Windows.Forms.Padding(0) - Me.Label7.Name = "Label7" - Me.Label7.Size = New System.Drawing.Size(12, 15) - Me.Label7.TabIndex = 31 - Me.Label7.Text = "/" - Me.Label7.TextAlign = System.Drawing.ContentAlignment.MiddleCenter - ' - 'tBeatValue - ' - Me.TableLayoutPanel7.SetColumnSpan(Me.tBeatValue, 3) - Me.tBeatValue.Dock = System.Windows.Forms.DockStyle.Fill - Me.tBeatValue.Location = New System.Drawing.Point(3, 30) - Me.tBeatValue.Margin = New System.Windows.Forms.Padding(3, 1, 3, 0) - Me.tBeatValue.Name = "tBeatValue" - Me.tBeatValue.Size = New System.Drawing.Size(108, 23) - Me.tBeatValue.TabIndex = 805 - Me.tBeatValue.Text = "1" - ' - 'LBeat - ' - Me.LBeat.Dock = System.Windows.Forms.DockStyle.Fill - Me.LBeat.Font = New System.Drawing.Font("Consolas", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) - Me.LBeat.IntegralHeight = False - Me.LBeat.ItemHeight = 14 - Me.LBeat.Items.AddRange(New Object() {"000: 15.984375 (1023/64)"}) - Me.LBeat.Location = New System.Drawing.Point(3, 155) - Me.LBeat.Margin = New System.Windows.Forms.Padding(3, 0, 3, 0) - Me.LBeat.Name = "LBeat" - Me.LBeat.SelectionMode = System.Windows.Forms.SelectionMode.MultiExtended - Me.LBeat.Size = New System.Drawing.Size(177, 90) - Me.LBeat.TabIndex = 906 - ' - 'POBeatPart2 - ' - Me.POBeatPart2.AutoSize = True - Me.POBeatPart2.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink - Me.POBeatPart2.ColumnCount = 1 - Me.POBeatPart2.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100.0!)) - Me.POBeatPart2.Controls.Add(Me.CBeatScale, 0, 3) - Me.POBeatPart2.Controls.Add(Me.CBeatCut, 0, 2) - Me.POBeatPart2.Controls.Add(Me.CBeatMeasure, 0, 1) - Me.POBeatPart2.Controls.Add(Me.CBeatPreserve, 0, 0) - Me.POBeatPart2.Dock = System.Windows.Forms.DockStyle.Fill - Me.POBeatPart2.Location = New System.Drawing.Point(0, 79) - Me.POBeatPart2.Margin = New System.Windows.Forms.Padding(0) - Me.POBeatPart2.Name = "POBeatPart2" - Me.POBeatPart2.RowCount = 4 - Me.POBeatPart2.RowStyles.Add(New System.Windows.Forms.RowStyle()) - Me.POBeatPart2.RowStyles.Add(New System.Windows.Forms.RowStyle()) - Me.POBeatPart2.RowStyles.Add(New System.Windows.Forms.RowStyle()) - Me.POBeatPart2.RowStyles.Add(New System.Windows.Forms.RowStyle()) - Me.POBeatPart2.Size = New System.Drawing.Size(183, 76) - Me.POBeatPart2.TabIndex = 66 - Me.POBeatPart2.Visible = False - ' - 'CBeatScale - ' - Me.CBeatScale.AutoSize = True - Me.CBeatScale.Location = New System.Drawing.Point(3, 57) - Me.CBeatScale.Margin = New System.Windows.Forms.Padding(3, 0, 3, 0) - Me.CBeatScale.Name = "CBeatScale" - Me.CBeatScale.Size = New System.Drawing.Size(151, 19) - Me.CBeatScale.TabIndex = 905 - Me.CBeatScale.Text = "Scale to measure length" - Me.CBeatScale.UseVisualStyleBackColor = True - ' - 'CBeatCut - ' - Me.CBeatCut.AutoEllipsis = True - Me.CBeatCut.Dock = System.Windows.Forms.DockStyle.Fill - Me.CBeatCut.Location = New System.Drawing.Point(3, 38) - Me.CBeatCut.Margin = New System.Windows.Forms.Padding(3, 0, 3, 0) - Me.CBeatCut.Name = "CBeatCut" - Me.CBeatCut.Size = New System.Drawing.Size(177, 19) - Me.CBeatCut.TabIndex = 904 - Me.CBeatCut.Text = "Keep measure position and cut overflow" - Me.CBeatCut.UseVisualStyleBackColor = True - ' - 'CBeatMeasure - ' - Me.CBeatMeasure.AutoSize = True - Me.CBeatMeasure.Location = New System.Drawing.Point(3, 19) - Me.CBeatMeasure.Margin = New System.Windows.Forms.Padding(3, 0, 3, 0) - Me.CBeatMeasure.Name = "CBeatMeasure" - Me.CBeatMeasure.Size = New System.Drawing.Size(145, 19) - Me.CBeatMeasure.TabIndex = 903 - Me.CBeatMeasure.Text = "Keep measure position" - Me.CBeatMeasure.UseVisualStyleBackColor = True - ' - 'CBeatPreserve - ' - Me.CBeatPreserve.AutoSize = True - Me.CBeatPreserve.Checked = True - Me.CBeatPreserve.Location = New System.Drawing.Point(3, 0) - Me.CBeatPreserve.Margin = New System.Windows.Forms.Padding(3, 0, 3, 0) - Me.CBeatPreserve.Name = "CBeatPreserve" - Me.CBeatPreserve.Size = New System.Drawing.Size(145, 19) - Me.CBeatPreserve.TabIndex = 902 - Me.CBeatPreserve.TabStop = True - Me.CBeatPreserve.Text = "Keep absolute position" - Me.CBeatPreserve.UseVisualStyleBackColor = True - ' - 'POBeatSwitch - ' - Me.POBeatSwitch.Appearance = System.Windows.Forms.Appearance.Button - Me.POBeatSwitch.BackColor = System.Drawing.SystemColors.Control - Me.POBeatSwitch.Cursor = System.Windows.Forms.Cursors.Hand - Me.POBeatSwitch.Dock = System.Windows.Forms.DockStyle.Top - Me.POBeatSwitch.Font = New System.Drawing.Font("Segoe UI", 9.0!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) - Me.POBeatSwitch.Location = New System.Drawing.Point(0, 0) - Me.POBeatSwitch.Name = "POBeatSwitch" - Me.POBeatSwitch.Size = New System.Drawing.Size(183, 20) - Me.POBeatSwitch.TabIndex = 801 - Me.POBeatSwitch.TabStop = False - Me.POBeatSwitch.Text = "Beat" - Me.POBeatSwitch.TextAlign = System.Drawing.ContentAlignment.MiddleCenter - Me.POBeatSwitch.UseCompatibleTextRendering = True - Me.POBeatSwitch.UseVisualStyleBackColor = False - ' - 'POWAV - ' - Me.POWAV.AllowDrop = True - Me.POWAV.AutoSize = True - Me.POWAV.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink - Me.POWAV.Controls.Add(Me.POWAVInner) - Me.POWAV.Controls.Add(Me.POWAVSwitch) - Me.POWAV.Dock = System.Windows.Forms.DockStyle.Top - Me.POWAV.Location = New System.Drawing.Point(0, 912) - Me.POWAV.Name = "POWAV" - Me.POWAV.Size = New System.Drawing.Size(183, 270) - Me.POWAV.TabIndex = 4 - ' - 'POWAVInner - ' - Me.POWAVInner.ColumnCount = 1 - Me.POWAVInner.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100.0!)) - Me.POWAVInner.Controls.Add(Me.POWAVExpander, 0, 1) - Me.POWAVInner.Controls.Add(Me.LWAV, 0, 3) - Me.POWAVInner.Controls.Add(Me.FlowLayoutPanel3, 0, 0) - Me.POWAVInner.Controls.Add(Me.POWAVResizer, 0, 4) - Me.POWAVInner.Controls.Add(Me.POWAVPart2, 0, 2) - Me.POWAVInner.Dock = System.Windows.Forms.DockStyle.Top - Me.POWAVInner.Location = New System.Drawing.Point(0, 20) - Me.POWAVInner.Name = "POWAVInner" - Me.POWAVInner.RowCount = 5 - Me.POWAVInner.RowStyles.Add(New System.Windows.Forms.RowStyle()) - Me.POWAVInner.RowStyles.Add(New System.Windows.Forms.RowStyle()) - Me.POWAVInner.RowStyles.Add(New System.Windows.Forms.RowStyle()) - Me.POWAVInner.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100.0!)) - Me.POWAVInner.RowStyles.Add(New System.Windows.Forms.RowStyle()) - Me.POWAVInner.Size = New System.Drawing.Size(183, 250) - Me.POWAVInner.TabIndex = 5 - ' - 'POWAVExpander - ' - Me.POWAVExpander.Appearance = System.Windows.Forms.Appearance.Button - Me.POWAVExpander.AutoSize = True - Me.POWAVExpander.Cursor = System.Windows.Forms.Cursors.Hand - Me.POWAVExpander.Dock = System.Windows.Forms.DockStyle.Top - Me.POWAVExpander.FlatAppearance.BorderSize = 0 - Me.POWAVExpander.FlatStyle = System.Windows.Forms.FlatStyle.Popup - Me.POWAVExpander.Location = New System.Drawing.Point(0, 30) - Me.POWAVExpander.Margin = New System.Windows.Forms.Padding(0) - Me.POWAVExpander.Name = "POWAVExpander" - Me.POWAVExpander.Size = New System.Drawing.Size(183, 25) - Me.POWAVExpander.TabIndex = 701 - Me.POWAVExpander.TabStop = False - Me.POWAVExpander.Text = "Expand..." - Me.POWAVExpander.TextAlign = System.Drawing.ContentAlignment.MiddleCenter - Me.POWAVExpander.UseVisualStyleBackColor = False - ' - 'LWAV - ' - Me.LWAV.Dock = System.Windows.Forms.DockStyle.Fill - Me.LWAV.Font = New System.Drawing.Font("Consolas", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) - Me.LWAV.IntegralHeight = False - Me.LWAV.ItemHeight = 14 - Me.LWAV.Location = New System.Drawing.Point(3, 93) - Me.LWAV.Margin = New System.Windows.Forms.Padding(3, 0, 3, 0) - Me.LWAV.Name = "LWAV" - Me.LWAV.SelectionMode = System.Windows.Forms.SelectionMode.MultiExtended - Me.LWAV.Size = New System.Drawing.Size(177, 152) - Me.LWAV.TabIndex = 704 - ' - 'FlowLayoutPanel3 - ' - Me.FlowLayoutPanel3.AutoSize = True - Me.FlowLayoutPanel3.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink - Me.FlowLayoutPanel3.Controls.Add(Me.BWAVUp) - Me.FlowLayoutPanel3.Controls.Add(Me.BWAVDown) - Me.FlowLayoutPanel3.Controls.Add(Me.BWAVBrowse) - Me.FlowLayoutPanel3.Controls.Add(Me.BWAVRemove) - Me.FlowLayoutPanel3.Location = New System.Drawing.Point(3, 3) - Me.FlowLayoutPanel3.Name = "FlowLayoutPanel3" - Me.FlowLayoutPanel3.Size = New System.Drawing.Size(96, 24) - Me.FlowLayoutPanel3.TabIndex = 26 - Me.FlowLayoutPanel3.WrapContents = False - ' - 'POWAVResizer - ' - Me.POWAVResizer.Dock = System.Windows.Forms.DockStyle.Top - Me.POWAVResizer.FlatAppearance.BorderSize = 0 - Me.POWAVResizer.FlatStyle = System.Windows.Forms.FlatStyle.Flat - Me.POWAVResizer.Location = New System.Drawing.Point(0, 245) - Me.POWAVResizer.Margin = New System.Windows.Forms.Padding(0) - Me.POWAVResizer.Name = "POWAVResizer" - Me.POWAVResizer.Size = New System.Drawing.Size(183, 5) - Me.POWAVResizer.TabIndex = 33 - Me.POWAVResizer.TabStop = False - Me.POWAVResizer.UseVisualStyleBackColor = True - ' - 'POWAVPart2 - ' - Me.POWAVPart2.AutoSize = True - Me.POWAVPart2.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink - Me.POWAVPart2.ColumnCount = 1 - Me.POWAVPart2.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100.0!)) - Me.POWAVPart2.Controls.Add(Me.CWAVMultiSelect, 0, 0) - Me.POWAVPart2.Controls.Add(Me.CWAVChangeLabel, 0, 1) - Me.POWAVPart2.Dock = System.Windows.Forms.DockStyle.Fill - Me.POWAVPart2.Location = New System.Drawing.Point(0, 55) - Me.POWAVPart2.Margin = New System.Windows.Forms.Padding(0) - Me.POWAVPart2.Name = "POWAVPart2" - Me.POWAVPart2.RowCount = 2 - Me.POWAVPart2.RowStyles.Add(New System.Windows.Forms.RowStyle()) - Me.POWAVPart2.RowStyles.Add(New System.Windows.Forms.RowStyle()) - Me.POWAVPart2.Size = New System.Drawing.Size(183, 38) - Me.POWAVPart2.TabIndex = 35 - Me.POWAVPart2.Visible = False - ' - 'CWAVMultiSelect - ' - Me.CWAVMultiSelect.AutoSize = True - Me.CWAVMultiSelect.Checked = True - Me.CWAVMultiSelect.CheckState = System.Windows.Forms.CheckState.Checked - Me.CWAVMultiSelect.Location = New System.Drawing.Point(3, 0) - Me.CWAVMultiSelect.Margin = New System.Windows.Forms.Padding(3, 0, 3, 0) - Me.CWAVMultiSelect.Name = "CWAVMultiSelect" - Me.CWAVMultiSelect.Size = New System.Drawing.Size(154, 19) - Me.CWAVMultiSelect.TabIndex = 702 - Me.CWAVMultiSelect.Text = "Allow Multiple Selection" - Me.CWAVMultiSelect.UseVisualStyleBackColor = True - ' - 'CWAVChangeLabel - ' - Me.CWAVChangeLabel.AutoSize = True - Me.CWAVChangeLabel.Checked = True - Me.CWAVChangeLabel.CheckState = System.Windows.Forms.CheckState.Checked - Me.CWAVChangeLabel.Location = New System.Drawing.Point(3, 19) - Me.CWAVChangeLabel.Margin = New System.Windows.Forms.Padding(3, 0, 3, 0) - Me.CWAVChangeLabel.Name = "CWAVChangeLabel" - Me.CWAVChangeLabel.Size = New System.Drawing.Size(155, 19) - Me.CWAVChangeLabel.TabIndex = 703 - Me.CWAVChangeLabel.Text = "Synchronize Note Labels" - Me.CWAVChangeLabel.UseVisualStyleBackColor = True - ' - 'POWAVSwitch - ' - Me.POWAVSwitch.Appearance = System.Windows.Forms.Appearance.Button - Me.POWAVSwitch.BackColor = System.Drawing.SystemColors.Control - Me.POWAVSwitch.Checked = True - Me.POWAVSwitch.CheckState = System.Windows.Forms.CheckState.Checked - Me.POWAVSwitch.Cursor = System.Windows.Forms.Cursors.Hand - Me.POWAVSwitch.Dock = System.Windows.Forms.DockStyle.Top - Me.POWAVSwitch.Font = New System.Drawing.Font("Segoe UI", 9.0!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) - Me.POWAVSwitch.Location = New System.Drawing.Point(0, 0) - Me.POWAVSwitch.Name = "POWAVSwitch" - Me.POWAVSwitch.Size = New System.Drawing.Size(183, 20) - Me.POWAVSwitch.TabIndex = 601 - Me.POWAVSwitch.TabStop = False - Me.POWAVSwitch.Text = "#WAV (Sounds List)" - Me.POWAVSwitch.TextAlign = System.Drawing.ContentAlignment.MiddleCenter - Me.POWAVSwitch.UseCompatibleTextRendering = True - Me.POWAVSwitch.UseVisualStyleBackColor = False - ' - 'POWaveForm - ' - Me.POWaveForm.AutoSize = True - Me.POWaveForm.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink - Me.POWaveForm.Controls.Add(Me.POWaveFormInner) - Me.POWaveForm.Controls.Add(Me.POWaveFormSwitch) - Me.POWaveForm.Dock = System.Windows.Forms.DockStyle.Top - Me.POWaveForm.Location = New System.Drawing.Point(0, 669) - Me.POWaveForm.Name = "POWaveForm" - Me.POWaveForm.Size = New System.Drawing.Size(183, 243) - Me.POWaveForm.TabIndex = 3 - ' - 'POWaveFormInner - ' - Me.POWaveFormInner.AutoSize = True - Me.POWaveFormInner.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink - Me.POWaveFormInner.Controls.Add(Me.POWaveFormPart2) - Me.POWaveFormInner.Controls.Add(Me.POWaveFormExpander) - Me.POWaveFormInner.Controls.Add(Me.POWaveFormPart1) - Me.POWaveFormInner.Dock = System.Windows.Forms.DockStyle.Top - Me.POWaveFormInner.Location = New System.Drawing.Point(0, 20) - Me.POWaveFormInner.Name = "POWaveFormInner" - Me.POWaveFormInner.Size = New System.Drawing.Size(183, 223) - Me.POWaveFormInner.TabIndex = 29 - Me.POWaveFormInner.Visible = False - ' - 'POWaveFormPart2 - ' - Me.POWaveFormPart2.AutoSize = True - Me.POWaveFormPart2.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink - Me.POWaveFormPart2.ColumnCount = 3 - Me.POWaveFormPart2.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle()) - Me.POWaveFormPart2.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 70.0!)) - Me.POWaveFormPart2.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 30.0!)) - Me.POWaveFormPart2.Controls.Add(Me.TWSaturation, 2, 4) - Me.POWaveFormPart2.Controls.Add(Me.PictureBox2, 0, 0) - Me.POWaveFormPart2.Controls.Add(Me.TWTransparency, 2, 3) - Me.POWaveFormPart2.Controls.Add(Me.PictureBox3, 0, 1) - Me.POWaveFormPart2.Controls.Add(Me.TWPrecision, 2, 2) - Me.POWaveFormPart2.Controls.Add(Me.PictureBox4, 0, 2) - Me.POWaveFormPart2.Controls.Add(Me.TWWidth, 2, 1) - Me.POWaveFormPart2.Controls.Add(Me.PictureBox5, 0, 3) - Me.POWaveFormPart2.Controls.Add(Me.TWLeft, 2, 0) - Me.POWaveFormPart2.Controls.Add(Me.PictureBox6, 0, 4) - Me.POWaveFormPart2.Controls.Add(Me.TWSaturation2, 1, 4) - Me.POWaveFormPart2.Controls.Add(Me.TWLeft2, 1, 0) - Me.POWaveFormPart2.Controls.Add(Me.TWTransparency2, 1, 3) - Me.POWaveFormPart2.Controls.Add(Me.TWWidth2, 1, 1) - Me.POWaveFormPart2.Controls.Add(Me.TWPrecision2, 1, 2) - Me.POWaveFormPart2.Dock = System.Windows.Forms.DockStyle.Top - Me.POWaveFormPart2.Location = New System.Drawing.Point(0, 83) - Me.POWaveFormPart2.Name = "POWaveFormPart2" - Me.POWaveFormPart2.RowCount = 5 - Me.POWaveFormPart2.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 28.0!)) - Me.POWaveFormPart2.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 28.0!)) - Me.POWaveFormPart2.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 28.0!)) - Me.POWaveFormPart2.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 28.0!)) - Me.POWaveFormPart2.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 28.0!)) - Me.POWaveFormPart2.Size = New System.Drawing.Size(183, 140) - Me.POWaveFormPart2.TabIndex = 5 - ' - 'TWSaturation - ' - Me.TWSaturation.Dock = System.Windows.Forms.DockStyle.Fill - Me.TWSaturation.Increment = New Decimal(New Integer() {50, 0, 0, 0}) - Me.TWSaturation.Location = New System.Drawing.Point(137, 112) - Me.TWSaturation.Margin = New System.Windows.Forms.Padding(0, 0, 3, 0) - Me.TWSaturation.Maximum = New Decimal(New Integer() {1000, 0, 0, 0}) - Me.TWSaturation.Name = "TWSaturation" - Me.TWSaturation.Size = New System.Drawing.Size(43, 23) - Me.TWSaturation.TabIndex = 511 - ' - 'PictureBox2 - ' - Me.PictureBox2.Image = Global.iBMSC.My.Resources.Resources.WAVLeft - Me.PictureBox2.Location = New System.Drawing.Point(3, 0) - Me.PictureBox2.Margin = New System.Windows.Forms.Padding(3, 0, 3, 0) - Me.PictureBox2.Name = "PictureBox2" - Me.PictureBox2.Size = New System.Drawing.Size(24, 24) - Me.PictureBox2.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize - Me.PictureBox2.TabIndex = 60 - Me.PictureBox2.TabStop = False - ' - 'TWTransparency - ' - Me.TWTransparency.Dock = System.Windows.Forms.DockStyle.Fill - Me.TWTransparency.Increment = New Decimal(New Integer() {10, 0, 0, 0}) - Me.TWTransparency.Location = New System.Drawing.Point(137, 84) - Me.TWTransparency.Margin = New System.Windows.Forms.Padding(0, 0, 3, 0) - Me.TWTransparency.Maximum = New Decimal(New Integer() {255, 0, 0, 0}) - Me.TWTransparency.Name = "TWTransparency" - Me.TWTransparency.Size = New System.Drawing.Size(43, 23) - Me.TWTransparency.TabIndex = 509 - Me.TWTransparency.Value = New Decimal(New Integer() {80, 0, 0, 0}) - ' - 'PictureBox3 - ' - Me.PictureBox3.Image = Global.iBMSC.My.Resources.Resources.WAVWidth - Me.PictureBox3.Location = New System.Drawing.Point(3, 28) - Me.PictureBox3.Margin = New System.Windows.Forms.Padding(3, 0, 3, 0) - Me.PictureBox3.Name = "PictureBox3" - Me.PictureBox3.Size = New System.Drawing.Size(24, 24) - Me.PictureBox3.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize - Me.PictureBox3.TabIndex = 61 - Me.PictureBox3.TabStop = False - ' - 'TWPrecision - ' - Me.TWPrecision.Dock = System.Windows.Forms.DockStyle.Fill - Me.TWPrecision.Location = New System.Drawing.Point(137, 56) - Me.TWPrecision.Margin = New System.Windows.Forms.Padding(0, 0, 3, 0) - Me.TWPrecision.Maximum = New Decimal(New Integer() {50, 0, 0, 0}) - Me.TWPrecision.Name = "TWPrecision" - Me.TWPrecision.Size = New System.Drawing.Size(43, 23) - Me.TWPrecision.TabIndex = 507 - Me.TWPrecision.Value = New Decimal(New Integer() {5, 0, 0, 0}) - ' - 'PictureBox4 - ' - Me.PictureBox4.Image = Global.iBMSC.My.Resources.Resources.WAVPrecision - Me.PictureBox4.Location = New System.Drawing.Point(3, 56) - Me.PictureBox4.Margin = New System.Windows.Forms.Padding(3, 0, 3, 0) - Me.PictureBox4.Name = "PictureBox4" - Me.PictureBox4.Size = New System.Drawing.Size(24, 24) - Me.PictureBox4.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize - Me.PictureBox4.TabIndex = 62 - Me.PictureBox4.TabStop = False - ' - 'TWWidth - ' - Me.TWWidth.Dock = System.Windows.Forms.DockStyle.Fill - Me.TWWidth.Increment = New Decimal(New Integer() {10, 0, 0, 0}) - Me.TWWidth.Location = New System.Drawing.Point(137, 28) - Me.TWWidth.Margin = New System.Windows.Forms.Padding(0, 0, 3, 0) - Me.TWWidth.Maximum = New Decimal(New Integer() {1000, 0, 0, 0}) - Me.TWWidth.Name = "TWWidth" - Me.TWWidth.Size = New System.Drawing.Size(43, 23) - Me.TWWidth.TabIndex = 505 - Me.TWWidth.Value = New Decimal(New Integer() {200, 0, 0, 0}) - ' - 'PictureBox5 - ' - Me.PictureBox5.Image = Global.iBMSC.My.Resources.Resources.WAVTransparency - Me.PictureBox5.Location = New System.Drawing.Point(3, 84) - Me.PictureBox5.Margin = New System.Windows.Forms.Padding(3, 0, 3, 0) - Me.PictureBox5.Name = "PictureBox5" - Me.PictureBox5.Size = New System.Drawing.Size(24, 24) - Me.PictureBox5.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize - Me.PictureBox5.TabIndex = 67 - Me.PictureBox5.TabStop = False - ' - 'TWLeft - ' - Me.TWLeft.Dock = System.Windows.Forms.DockStyle.Fill - Me.TWLeft.Increment = New Decimal(New Integer() {5, 0, 0, 0}) - Me.TWLeft.Location = New System.Drawing.Point(137, 0) - Me.TWLeft.Margin = New System.Windows.Forms.Padding(0, 0, 3, 0) - Me.TWLeft.Maximum = New Decimal(New Integer() {800, 0, 0, 0}) - Me.TWLeft.Name = "TWLeft" - Me.TWLeft.Size = New System.Drawing.Size(43, 23) - Me.TWLeft.TabIndex = 503 - Me.TWLeft.Value = New Decimal(New Integer() {50, 0, 0, 0}) - ' - 'PictureBox6 - ' - Me.PictureBox6.Image = Global.iBMSC.My.Resources.Resources.WAVSaturation - Me.PictureBox6.Location = New System.Drawing.Point(3, 112) - Me.PictureBox6.Margin = New System.Windows.Forms.Padding(3, 0, 3, 0) - Me.PictureBox6.Name = "PictureBox6" - Me.PictureBox6.Size = New System.Drawing.Size(24, 24) - Me.PictureBox6.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize - Me.PictureBox6.TabIndex = 66 - Me.PictureBox6.TabStop = False - ' - 'TWSaturation2 - ' - Me.TWSaturation2.Dock = System.Windows.Forms.DockStyle.Fill - Me.TWSaturation2.LargeChange = 200 - Me.TWSaturation2.Location = New System.Drawing.Point(30, 112) - Me.TWSaturation2.Margin = New System.Windows.Forms.Padding(0) - Me.TWSaturation2.Maximum = 1000 - Me.TWSaturation2.Name = "TWSaturation2" - Me.TWSaturation2.Size = New System.Drawing.Size(107, 28) - Me.TWSaturation2.SmallChange = 50 - Me.TWSaturation2.TabIndex = 510 - Me.TWSaturation2.TickFrequency = 200 - ' - 'TWLeft2 - ' - Me.TWLeft2.Dock = System.Windows.Forms.DockStyle.Fill - Me.TWLeft2.LargeChange = 50 - Me.TWLeft2.Location = New System.Drawing.Point(30, 0) - Me.TWLeft2.Margin = New System.Windows.Forms.Padding(0) - Me.TWLeft2.Maximum = 800 - Me.TWLeft2.Name = "TWLeft2" - Me.TWLeft2.Size = New System.Drawing.Size(107, 28) - Me.TWLeft2.SmallChange = 10 - Me.TWLeft2.TabIndex = 502 - Me.TWLeft2.TickFrequency = 100 - Me.TWLeft2.Value = 50 - ' - 'TWTransparency2 - ' - Me.TWTransparency2.Dock = System.Windows.Forms.DockStyle.Fill - Me.TWTransparency2.LargeChange = 64 - Me.TWTransparency2.Location = New System.Drawing.Point(30, 84) - Me.TWTransparency2.Margin = New System.Windows.Forms.Padding(0) - Me.TWTransparency2.Maximum = 255 - Me.TWTransparency2.Name = "TWTransparency2" - Me.TWTransparency2.Size = New System.Drawing.Size(107, 28) - Me.TWTransparency2.SmallChange = 8 - Me.TWTransparency2.TabIndex = 508 - Me.TWTransparency2.TickFrequency = 64 - Me.TWTransparency2.Value = 80 - ' - 'TWWidth2 - ' - Me.TWWidth2.Dock = System.Windows.Forms.DockStyle.Fill - Me.TWWidth2.LargeChange = 50 - Me.TWWidth2.Location = New System.Drawing.Point(30, 28) - Me.TWWidth2.Margin = New System.Windows.Forms.Padding(0) - Me.TWWidth2.Maximum = 1000 - Me.TWWidth2.Name = "TWWidth2" - Me.TWWidth2.Size = New System.Drawing.Size(107, 28) - Me.TWWidth2.SmallChange = 10 - Me.TWWidth2.TabIndex = 504 - Me.TWWidth2.TickFrequency = 100 - Me.TWWidth2.Value = 200 - ' - 'TWPrecision2 - ' - Me.TWPrecision2.Dock = System.Windows.Forms.DockStyle.Fill - Me.TWPrecision2.LargeChange = 4 - Me.TWPrecision2.Location = New System.Drawing.Point(30, 56) - Me.TWPrecision2.Margin = New System.Windows.Forms.Padding(0) - Me.TWPrecision2.Maximum = 50 - Me.TWPrecision2.Name = "TWPrecision2" - Me.TWPrecision2.Size = New System.Drawing.Size(107, 28) - Me.TWPrecision2.TabIndex = 506 - Me.TWPrecision2.TickFrequency = 5 - Me.TWPrecision2.Value = 5 - ' - 'POWaveFormExpander - ' - Me.POWaveFormExpander.Appearance = System.Windows.Forms.Appearance.Button - Me.POWaveFormExpander.AutoSize = True - Me.POWaveFormExpander.Cursor = System.Windows.Forms.Cursors.Hand - Me.POWaveFormExpander.Dock = System.Windows.Forms.DockStyle.Top - Me.POWaveFormExpander.FlatAppearance.BorderSize = 0 - Me.POWaveFormExpander.FlatStyle = System.Windows.Forms.FlatStyle.Popup - Me.POWaveFormExpander.Location = New System.Drawing.Point(0, 58) - Me.POWaveFormExpander.Margin = New System.Windows.Forms.Padding(0) - Me.POWaveFormExpander.Name = "POWaveFormExpander" - Me.POWaveFormExpander.Size = New System.Drawing.Size(183, 25) - Me.POWaveFormExpander.TabIndex = 501 - Me.POWaveFormExpander.TabStop = False - Me.POWaveFormExpander.Text = "Expand..." - Me.POWaveFormExpander.TextAlign = System.Drawing.ContentAlignment.MiddleCenter - Me.POWaveFormExpander.UseVisualStyleBackColor = False - ' - 'POWaveFormPart1 - ' - Me.POWaveFormPart1.AutoSize = True - Me.POWaveFormPart1.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink - Me.POWaveFormPart1.ColumnCount = 1 - Me.POWaveFormPart1.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100.0!)) - Me.POWaveFormPart1.Controls.Add(Me.TableLayoutPanel1, 0, 0) - Me.POWaveFormPart1.Controls.Add(Me.TableLayoutPanel6, 0, 1) - Me.POWaveFormPart1.Dock = System.Windows.Forms.DockStyle.Top - Me.POWaveFormPart1.Location = New System.Drawing.Point(0, 0) - Me.POWaveFormPart1.Name = "POWaveFormPart1" - Me.POWaveFormPart1.RowCount = 2 - Me.POWaveFormPart1.RowStyles.Add(New System.Windows.Forms.RowStyle()) - Me.POWaveFormPart1.RowStyles.Add(New System.Windows.Forms.RowStyle()) - Me.POWaveFormPart1.Size = New System.Drawing.Size(183, 58) - Me.POWaveFormPart1.TabIndex = 4 - ' - 'TableLayoutPanel1 - ' - Me.TableLayoutPanel1.AutoSize = True - Me.TableLayoutPanel1.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink - Me.TableLayoutPanel1.ColumnCount = 2 - Me.TableLayoutPanel1.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle()) - Me.TableLayoutPanel1.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100.0!)) - Me.TableLayoutPanel1.Controls.Add(Me.FlowLayoutPanel1, 0, 0) - Me.TableLayoutPanel1.Controls.Add(Me.TWFileName, 1, 0) - Me.TableLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Fill - Me.TableLayoutPanel1.Location = New System.Drawing.Point(0, 0) - Me.TableLayoutPanel1.Margin = New System.Windows.Forms.Padding(0) - Me.TableLayoutPanel1.Name = "TableLayoutPanel1" - Me.TableLayoutPanel1.RowCount = 1 - Me.TableLayoutPanel1.RowStyles.Add(New System.Windows.Forms.RowStyle()) - Me.TableLayoutPanel1.Size = New System.Drawing.Size(183, 30) - Me.TableLayoutPanel1.TabIndex = 0 - ' - 'FlowLayoutPanel1 - ' - Me.FlowLayoutPanel1.AutoSize = True - Me.FlowLayoutPanel1.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink - Me.FlowLayoutPanel1.Controls.Add(Me.BWLoad) - Me.FlowLayoutPanel1.Controls.Add(Me.BWClear) - Me.FlowLayoutPanel1.Controls.Add(Me.BWLock) - Me.FlowLayoutPanel1.Location = New System.Drawing.Point(3, 3) - Me.FlowLayoutPanel1.Name = "FlowLayoutPanel1" - Me.FlowLayoutPanel1.Size = New System.Drawing.Size(72, 24) - Me.FlowLayoutPanel1.TabIndex = 72 - Me.FlowLayoutPanel1.WrapContents = False - ' - 'TWFileName - ' - Me.TWFileName.Dock = System.Windows.Forms.DockStyle.Fill - Me.TWFileName.Location = New System.Drawing.Point(81, 3) - Me.TWFileName.Name = "TWFileName" - Me.TWFileName.ReadOnly = True - Me.TWFileName.Size = New System.Drawing.Size(99, 23) - Me.TWFileName.TabIndex = 405 - Me.TWFileName.Text = "(None)" - ' - 'TableLayoutPanel6 - ' - Me.TableLayoutPanel6.AutoSize = True - Me.TableLayoutPanel6.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink - Me.TableLayoutPanel6.ColumnCount = 3 - Me.TableLayoutPanel6.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle()) - Me.TableLayoutPanel6.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 60.0!)) - Me.TableLayoutPanel6.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 40.0!)) - Me.TableLayoutPanel6.Controls.Add(Me.PictureBox1, 0, 0) - Me.TableLayoutPanel6.Controls.Add(Me.TWPosition2, 1, 0) - Me.TableLayoutPanel6.Controls.Add(Me.TWPosition, 2, 0) - Me.TableLayoutPanel6.Dock = System.Windows.Forms.DockStyle.Fill - Me.TableLayoutPanel6.Location = New System.Drawing.Point(0, 30) - Me.TableLayoutPanel6.Margin = New System.Windows.Forms.Padding(0) - Me.TableLayoutPanel6.Name = "TableLayoutPanel6" - Me.TableLayoutPanel6.RowCount = 1 - Me.TableLayoutPanel6.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 28.0!)) - Me.TableLayoutPanel6.Size = New System.Drawing.Size(183, 28) - Me.TableLayoutPanel6.TabIndex = 1 - ' - 'PictureBox1 - ' - Me.PictureBox1.Image = Global.iBMSC.My.Resources.Resources.WAVOffset - Me.PictureBox1.Location = New System.Drawing.Point(3, 0) - Me.PictureBox1.Margin = New System.Windows.Forms.Padding(3, 0, 3, 0) - Me.PictureBox1.Name = "PictureBox1" - Me.PictureBox1.Size = New System.Drawing.Size(24, 24) - Me.PictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize - Me.PictureBox1.TabIndex = 59 - Me.PictureBox1.TabStop = False - ' - 'TWPosition2 - ' - Me.TWPosition2.Dock = System.Windows.Forms.DockStyle.Fill - Me.TWPosition2.Enabled = False - Me.TWPosition2.LargeChange = 24 - Me.TWPosition2.Location = New System.Drawing.Point(30, 0) - Me.TWPosition2.Margin = New System.Windows.Forms.Padding(0) - Me.TWPosition2.Maximum = 960 - Me.TWPosition2.Name = "TWPosition2" - Me.TWPosition2.Size = New System.Drawing.Size(91, 28) - Me.TWPosition2.TabIndex = 406 - Me.TWPosition2.TickFrequency = 192 - ' - 'TWPosition - ' - Me.TWPosition.DecimalPlaces = 2 - Me.TWPosition.Dock = System.Windows.Forms.DockStyle.Fill - Me.TWPosition.Enabled = False - Me.TWPosition.Location = New System.Drawing.Point(121, 0) - Me.TWPosition.Margin = New System.Windows.Forms.Padding(0, 0, 3, 0) - Me.TWPosition.Maximum = New Decimal(New Integer() {192000, 0, 0, 0}) - Me.TWPosition.Name = "TWPosition" - Me.TWPosition.Size = New System.Drawing.Size(59, 23) - Me.TWPosition.TabIndex = 407 - ' - 'POWaveFormSwitch - ' - Me.POWaveFormSwitch.Appearance = System.Windows.Forms.Appearance.Button - Me.POWaveFormSwitch.BackColor = System.Drawing.SystemColors.Control - Me.POWaveFormSwitch.Cursor = System.Windows.Forms.Cursors.Hand - Me.POWaveFormSwitch.Dock = System.Windows.Forms.DockStyle.Top - Me.POWaveFormSwitch.Font = New System.Drawing.Font("Segoe UI", 9.0!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) - Me.POWaveFormSwitch.Location = New System.Drawing.Point(0, 0) - Me.POWaveFormSwitch.Name = "POWaveFormSwitch" - Me.POWaveFormSwitch.Size = New System.Drawing.Size(183, 20) - Me.POWaveFormSwitch.TabIndex = 401 - Me.POWaveFormSwitch.TabStop = False - Me.POWaveFormSwitch.Text = "WaveForm" - Me.POWaveFormSwitch.TextAlign = System.Drawing.ContentAlignment.MiddleCenter - Me.POWaveFormSwitch.UseCompatibleTextRendering = True - Me.POWaveFormSwitch.UseVisualStyleBackColor = False - ' - 'POGrid - ' - Me.POGrid.AutoSize = True - Me.POGrid.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink - Me.POGrid.Controls.Add(Me.POGridInner) - Me.POGrid.Controls.Add(Me.POGridSwitch) - Me.POGrid.Dock = System.Windows.Forms.DockStyle.Top - Me.POGrid.Location = New System.Drawing.Point(0, 439) - Me.POGrid.Name = "POGrid" - Me.POGrid.Size = New System.Drawing.Size(183, 230) - Me.POGrid.TabIndex = 2 - ' - 'POGridInner - ' - Me.POGridInner.AutoSize = True - Me.POGridInner.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink - Me.POGridInner.Controls.Add(Me.POGridPart2) - Me.POGridInner.Controls.Add(Me.POGridExpander) - Me.POGridInner.Controls.Add(Me.POGridPart1) - Me.POGridInner.Dock = System.Windows.Forms.DockStyle.Top - Me.POGridInner.Location = New System.Drawing.Point(0, 20) - Me.POGridInner.Name = "POGridInner" - Me.POGridInner.Size = New System.Drawing.Size(183, 210) - Me.POGridInner.TabIndex = 3 - ' - 'POGridPart2 - ' - Me.POGridPart2.AutoSize = True - Me.POGridPart2.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink - Me.POGridPart2.ColumnCount = 1 - Me.POGridPart2.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100.0!)) - Me.POGridPart2.Controls.Add(Me.TableLayoutPanel5, 0, 1) - Me.POGridPart2.Controls.Add(Me.TableLayoutPanel4, 0, 0) - Me.POGridPart2.Dock = System.Windows.Forms.DockStyle.Top - Me.POGridPart2.Location = New System.Drawing.Point(0, 152) - Me.POGridPart2.Name = "POGridPart2" - Me.POGridPart2.RowCount = 2 - Me.POGridPart2.RowStyles.Add(New System.Windows.Forms.RowStyle()) - Me.POGridPart2.RowStyles.Add(New System.Windows.Forms.RowStyle()) - Me.POGridPart2.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20.0!)) - Me.POGridPart2.Size = New System.Drawing.Size(183, 58) - Me.POGridPart2.TabIndex = 0 - ' - 'TableLayoutPanel5 - ' - Me.TableLayoutPanel5.AutoSize = True - Me.TableLayoutPanel5.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink - Me.TableLayoutPanel5.ColumnCount = 2 - Me.TableLayoutPanel5.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle()) - Me.TableLayoutPanel5.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100.0!)) - Me.TableLayoutPanel5.Controls.Add(Me.FlowLayoutPanel2, 1, 0) - Me.TableLayoutPanel5.Controls.Add(Me.Label5, 0, 0) - Me.TableLayoutPanel5.Dock = System.Windows.Forms.DockStyle.Fill - Me.TableLayoutPanel5.Location = New System.Drawing.Point(0, 29) - Me.TableLayoutPanel5.Margin = New System.Windows.Forms.Padding(0) - Me.TableLayoutPanel5.Name = "TableLayoutPanel5" - Me.TableLayoutPanel5.RowCount = 1 - Me.TableLayoutPanel5.RowStyles.Add(New System.Windows.Forms.RowStyle()) - Me.TableLayoutPanel5.Size = New System.Drawing.Size(183, 29) - Me.TableLayoutPanel5.TabIndex = 46 - ' - 'FlowLayoutPanel2 - ' - Me.FlowLayoutPanel2.AutoSize = True - Me.FlowLayoutPanel2.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink - Me.FlowLayoutPanel2.Controls.Add(Me.cVSLockL) - Me.FlowLayoutPanel2.Controls.Add(Me.cVSLock) - Me.FlowLayoutPanel2.Controls.Add(Me.cVSLockR) - Me.FlowLayoutPanel2.Location = New System.Drawing.Point(114, 3) - Me.FlowLayoutPanel2.Name = "FlowLayoutPanel2" - Me.FlowLayoutPanel2.Size = New System.Drawing.Size(66, 23) - Me.FlowLayoutPanel2.TabIndex = 72 - Me.FlowLayoutPanel2.WrapContents = False - ' - 'Label5 - ' - Me.Label5.AutoSize = True - Me.Label5.Dock = System.Windows.Forms.DockStyle.Fill - Me.Label5.Location = New System.Drawing.Point(3, 0) - Me.Label5.Name = "Label5" - Me.Label5.Size = New System.Drawing.Size(105, 29) - Me.Label5.TabIndex = 303 - Me.Label5.Text = "Vertical Scroll Lock" - Me.Label5.TextAlign = System.Drawing.ContentAlignment.MiddleRight - ' - 'TableLayoutPanel4 - ' - Me.TableLayoutPanel4.AutoSize = True - Me.TableLayoutPanel4.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink - Me.TableLayoutPanel4.ColumnCount = 2 - Me.TableLayoutPanel4.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle()) - Me.TableLayoutPanel4.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100.0!)) - Me.TableLayoutPanel4.Controls.Add(Me.Label1, 0, 0) - Me.TableLayoutPanel4.Controls.Add(Me.CGB, 1, 0) - Me.TableLayoutPanel4.Dock = System.Windows.Forms.DockStyle.Fill - Me.TableLayoutPanel4.Location = New System.Drawing.Point(0, 0) - Me.TableLayoutPanel4.Margin = New System.Windows.Forms.Padding(0) - Me.TableLayoutPanel4.Name = "TableLayoutPanel4" - Me.TableLayoutPanel4.RowCount = 1 - Me.TableLayoutPanel4.RowStyles.Add(New System.Windows.Forms.RowStyle()) - Me.TableLayoutPanel4.Size = New System.Drawing.Size(183, 29) - Me.TableLayoutPanel4.TabIndex = 44 - ' - 'Label1 - ' - Me.Label1.AutoSize = True - Me.Label1.Dock = System.Windows.Forms.DockStyle.Fill - Me.Label1.Location = New System.Drawing.Point(3, 0) - Me.Label1.Name = "Label1" - Me.Label1.Size = New System.Drawing.Size(126, 29) - Me.Label1.TabIndex = 302 - Me.Label1.Text = "Number of B Columns" - Me.Label1.TextAlign = System.Drawing.ContentAlignment.MiddleRight - ' - 'CGB - ' - Me.CGB.Dock = System.Windows.Forms.DockStyle.Fill - Me.CGB.Location = New System.Drawing.Point(135, 3) - Me.CGB.Maximum = New Decimal(New Integer() {999, 0, 0, 0}) - Me.CGB.Minimum = New Decimal(New Integer() {1, 0, 0, 0}) - Me.CGB.Name = "CGB" - Me.CGB.Size = New System.Drawing.Size(45, 23) - Me.CGB.TabIndex = 302 - Me.CGB.Value = New Decimal(New Integer() {15, 0, 0, 0}) - ' - 'POGridExpander - ' - Me.POGridExpander.Appearance = System.Windows.Forms.Appearance.Button - Me.POGridExpander.AutoSize = True - Me.POGridExpander.Cursor = System.Windows.Forms.Cursors.Hand - Me.POGridExpander.Dock = System.Windows.Forms.DockStyle.Top - Me.POGridExpander.FlatAppearance.BorderSize = 0 - Me.POGridExpander.FlatStyle = System.Windows.Forms.FlatStyle.Popup - Me.POGridExpander.Location = New System.Drawing.Point(0, 127) - Me.POGridExpander.Margin = New System.Windows.Forms.Padding(0) - Me.POGridExpander.Name = "POGridExpander" - Me.POGridExpander.Size = New System.Drawing.Size(183, 25) - Me.POGridExpander.TabIndex = 301 - Me.POGridExpander.TabStop = False - Me.POGridExpander.Text = "Expand..." - Me.POGridExpander.TextAlign = System.Drawing.ContentAlignment.MiddleCenter - Me.POGridExpander.UseVisualStyleBackColor = False - ' - 'POGridPart1 - ' - Me.POGridPart1.AutoSize = True - Me.POGridPart1.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink - Me.POGridPart1.ColumnCount = 1 - Me.POGridPart1.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100.0!)) - Me.POGridPart1.Controls.Add(Me.TableLayoutPanel3, 0, 1) - Me.POGridPart1.Controls.Add(Me.CGDisableVertical, 0, 3) - Me.POGridPart1.Controls.Add(Me.CGSnap, 0, 2) - Me.POGridPart1.Controls.Add(Me.TableLayoutPanel2, 0, 0) - Me.POGridPart1.Dock = System.Windows.Forms.DockStyle.Top - Me.POGridPart1.Location = New System.Drawing.Point(0, 0) - Me.POGridPart1.Name = "POGridPart1" - Me.POGridPart1.RowCount = 4 - Me.POGridPart1.RowStyles.Add(New System.Windows.Forms.RowStyle()) - Me.POGridPart1.RowStyles.Add(New System.Windows.Forms.RowStyle()) - Me.POGridPart1.RowStyles.Add(New System.Windows.Forms.RowStyle()) - Me.POGridPart1.RowStyles.Add(New System.Windows.Forms.RowStyle()) - Me.POGridPart1.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20.0!)) - Me.POGridPart1.Size = New System.Drawing.Size(183, 127) - Me.POGridPart1.TabIndex = 11 - ' - 'TableLayoutPanel3 - ' - Me.TableLayoutPanel3.AutoSize = True - Me.TableLayoutPanel3.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink - Me.TableLayoutPanel3.ColumnCount = 3 - Me.TableLayoutPanel3.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle()) - Me.TableLayoutPanel3.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 70.0!)) - Me.TableLayoutPanel3.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 30.0!)) - Me.TableLayoutPanel3.Controls.Add(Me.PictureBox9, 0, 0) - Me.TableLayoutPanel3.Controls.Add(Me.CGHeight2, 1, 0) - Me.TableLayoutPanel3.Controls.Add(Me.CGHeight, 2, 0) - Me.TableLayoutPanel3.Controls.Add(Me.PictureBox10, 0, 1) - Me.TableLayoutPanel3.Controls.Add(Me.CGWidth2, 1, 1) - Me.TableLayoutPanel3.Controls.Add(Me.CGWidth, 2, 1) - Me.TableLayoutPanel3.Dock = System.Windows.Forms.DockStyle.Fill - Me.TableLayoutPanel3.Location = New System.Drawing.Point(0, 30) - Me.TableLayoutPanel3.Margin = New System.Windows.Forms.Padding(0) - Me.TableLayoutPanel3.Name = "TableLayoutPanel3" - Me.TableLayoutPanel3.RowCount = 2 - Me.TableLayoutPanel3.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 28.0!)) - Me.TableLayoutPanel3.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 28.0!)) - Me.TableLayoutPanel3.Size = New System.Drawing.Size(183, 56) - Me.TableLayoutPanel3.TabIndex = 12 - ' - 'PictureBox9 - ' - Me.PictureBox9.Image = Global.iBMSC.My.Resources.Resources.lgheight - Me.PictureBox9.Location = New System.Drawing.Point(3, 0) - Me.PictureBox9.Margin = New System.Windows.Forms.Padding(3, 0, 3, 0) - Me.PictureBox9.Name = "PictureBox9" - Me.PictureBox9.Size = New System.Drawing.Size(24, 24) - Me.PictureBox9.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize - Me.PictureBox9.TabIndex = 27 - Me.PictureBox9.TabStop = False - ' - 'CGHeight2 - ' - Me.CGHeight2.Dock = System.Windows.Forms.DockStyle.Fill - Me.CGHeight2.LargeChange = 4 - Me.CGHeight2.Location = New System.Drawing.Point(30, 0) - Me.CGHeight2.Margin = New System.Windows.Forms.Padding(0) - Me.CGHeight2.Maximum = 20 - Me.CGHeight2.Minimum = 1 - Me.CGHeight2.Name = "CGHeight2" - Me.CGHeight2.Size = New System.Drawing.Size(107, 28) - Me.CGHeight2.TabIndex = 205 - Me.CGHeight2.TickFrequency = 2 - Me.CGHeight2.Value = 4 - ' - 'CGHeight - ' - Me.CGHeight.DecimalPlaces = 2 - Me.CGHeight.Dock = System.Windows.Forms.DockStyle.Fill - Me.CGHeight.Increment = New Decimal(New Integer() {25, 0, 0, 131072}) - Me.CGHeight.Location = New System.Drawing.Point(137, 0) - Me.CGHeight.Margin = New System.Windows.Forms.Padding(0, 0, 3, 0) - Me.CGHeight.Maximum = New Decimal(New Integer() {99, 0, 0, 0}) - Me.CGHeight.Minimum = New Decimal(New Integer() {25, 0, 0, 131072}) - Me.CGHeight.Name = "CGHeight" - Me.CGHeight.Size = New System.Drawing.Size(43, 23) - Me.CGHeight.TabIndex = 206 - Me.CGHeight.Value = New Decimal(New Integer() {1, 0, 0, 0}) - ' - 'PictureBox10 - ' - Me.PictureBox10.Image = Global.iBMSC.My.Resources.Resources.lgwidth - Me.PictureBox10.Location = New System.Drawing.Point(3, 28) - Me.PictureBox10.Margin = New System.Windows.Forms.Padding(3, 0, 3, 0) - Me.PictureBox10.Name = "PictureBox10" - Me.PictureBox10.Size = New System.Drawing.Size(24, 24) - Me.PictureBox10.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize - Me.PictureBox10.TabIndex = 28 - Me.PictureBox10.TabStop = False - ' - 'CGWidth2 - ' - Me.CGWidth2.Dock = System.Windows.Forms.DockStyle.Fill - Me.CGWidth2.LargeChange = 4 - Me.CGWidth2.Location = New System.Drawing.Point(30, 28) - Me.CGWidth2.Margin = New System.Windows.Forms.Padding(0) - Me.CGWidth2.Maximum = 20 - Me.CGWidth2.Minimum = 1 - Me.CGWidth2.Name = "CGWidth2" - Me.CGWidth2.Size = New System.Drawing.Size(107, 28) - Me.CGWidth2.TabIndex = 207 - Me.CGWidth2.TickFrequency = 2 - Me.CGWidth2.Value = 4 - ' - 'CGWidth - ' - Me.CGWidth.DecimalPlaces = 2 - Me.CGWidth.Dock = System.Windows.Forms.DockStyle.Fill - Me.CGWidth.Increment = New Decimal(New Integer() {25, 0, 0, 131072}) - Me.CGWidth.Location = New System.Drawing.Point(137, 28) - Me.CGWidth.Margin = New System.Windows.Forms.Padding(0, 0, 3, 0) - Me.CGWidth.Maximum = New Decimal(New Integer() {99, 0, 0, 0}) - Me.CGWidth.Minimum = New Decimal(New Integer() {25, 0, 0, 131072}) - Me.CGWidth.Name = "CGWidth" - Me.CGWidth.Size = New System.Drawing.Size(43, 23) - Me.CGWidth.TabIndex = 208 - Me.CGWidth.Value = New Decimal(New Integer() {1, 0, 0, 0}) - ' - 'CGDisableVertical - ' - Me.CGDisableVertical.AutoSize = True - Me.CGDisableVertical.Location = New System.Drawing.Point(3, 108) - Me.CGDisableVertical.Margin = New System.Windows.Forms.Padding(3, 0, 3, 0) - Me.CGDisableVertical.Name = "CGDisableVertical" - Me.CGDisableVertical.Size = New System.Drawing.Size(162, 19) - Me.CGDisableVertical.TabIndex = 210 - Me.CGDisableVertical.Text = "Disable vertical moves (D)" - Me.CGDisableVertical.UseVisualStyleBackColor = True - ' - 'CGSnap - ' - Me.CGSnap.AutoSize = True - Me.CGSnap.Checked = True - Me.CGSnap.CheckState = System.Windows.Forms.CheckState.Checked - Me.CGSnap.Location = New System.Drawing.Point(3, 89) - Me.CGSnap.Margin = New System.Windows.Forms.Padding(3, 3, 3, 0) - Me.CGSnap.Name = "CGSnap" - Me.CGSnap.Size = New System.Drawing.Size(109, 19) - Me.CGSnap.TabIndex = 209 - Me.CGSnap.Text = "Snap to grid (G)" - Me.CGSnap.UseVisualStyleBackColor = True - ' - 'TableLayoutPanel2 - ' - Me.TableLayoutPanel2.AutoSize = True - Me.TableLayoutPanel2.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink - Me.TableLayoutPanel2.ColumnCount = 4 - Me.TableLayoutPanel2.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle()) - Me.TableLayoutPanel2.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50.0!)) - Me.TableLayoutPanel2.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50.0!)) - Me.TableLayoutPanel2.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle()) - Me.TableLayoutPanel2.Controls.Add(Me.PictureBox7, 0, 0) - Me.TableLayoutPanel2.Controls.Add(Me.CGDivide, 1, 0) - Me.TableLayoutPanel2.Controls.Add(Me.CGSub, 2, 0) - Me.TableLayoutPanel2.Controls.Add(Me.BGSlash, 3, 0) - Me.TableLayoutPanel2.Dock = System.Windows.Forms.DockStyle.Fill - Me.TableLayoutPanel2.Location = New System.Drawing.Point(0, 0) - Me.TableLayoutPanel2.Margin = New System.Windows.Forms.Padding(0) - Me.TableLayoutPanel2.Name = "TableLayoutPanel2" - Me.TableLayoutPanel2.RowCount = 1 - Me.TableLayoutPanel2.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100.0!)) - Me.TableLayoutPanel2.Size = New System.Drawing.Size(183, 30) - Me.TableLayoutPanel2.TabIndex = 11 - ' - 'PictureBox7 - ' - Me.PictureBox7.Anchor = System.Windows.Forms.AnchorStyles.None - Me.PictureBox7.Image = Global.iBMSC.My.Resources.Resources.lgpartition - Me.PictureBox7.Location = New System.Drawing.Point(3, 3) - Me.PictureBox7.Name = "PictureBox7" - Me.PictureBox7.Size = New System.Drawing.Size(24, 24) - Me.PictureBox7.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize - Me.PictureBox7.TabIndex = 25 - Me.PictureBox7.TabStop = False - ' - 'CGDivide - ' - Me.CGDivide.Dock = System.Windows.Forms.DockStyle.Fill - Me.CGDivide.Location = New System.Drawing.Point(33, 3) - Me.CGDivide.Maximum = New Decimal(New Integer() {1920, 0, 0, 0}) - Me.CGDivide.Minimum = New Decimal(New Integer() {1, 0, 0, 0}) - Me.CGDivide.Name = "CGDivide" - Me.CGDivide.Size = New System.Drawing.Size(58, 23) - Me.CGDivide.TabIndex = 202 - Me.CGDivide.Value = New Decimal(New Integer() {16, 0, 0, 0}) - ' - 'CGSub - ' - Me.CGSub.Dock = System.Windows.Forms.DockStyle.Fill - Me.CGSub.Location = New System.Drawing.Point(97, 3) - Me.CGSub.Maximum = New Decimal(New Integer() {1920, 0, 0, 0}) - Me.CGSub.Minimum = New Decimal(New Integer() {1, 0, 0, 0}) - Me.CGSub.Name = "CGSub" - Me.CGSub.Size = New System.Drawing.Size(58, 23) - Me.CGSub.TabIndex = 203 - Me.CGSub.Value = New Decimal(New Integer() {4, 0, 0, 0}) - ' - 'BGSlash - ' - Me.BGSlash.Anchor = System.Windows.Forms.AnchorStyles.None - Me.BGSlash.Image = Global.iBMSC.My.Resources.Resources.Shortcut - Me.BGSlash.Location = New System.Drawing.Point(158, 4) - Me.BGSlash.Margin = New System.Windows.Forms.Padding(0, 0, 3, 0) - Me.BGSlash.Name = "BGSlash" - Me.BGSlash.Size = New System.Drawing.Size(22, 22) - Me.BGSlash.TabIndex = 204 - Me.BGSlash.UseVisualStyleBackColor = True - ' - 'POGridSwitch - ' - Me.POGridSwitch.Appearance = System.Windows.Forms.Appearance.Button - Me.POGridSwitch.BackColor = System.Drawing.SystemColors.Control - Me.POGridSwitch.Checked = True - Me.POGridSwitch.CheckState = System.Windows.Forms.CheckState.Checked - Me.POGridSwitch.Cursor = System.Windows.Forms.Cursors.Hand - Me.POGridSwitch.Dock = System.Windows.Forms.DockStyle.Top - Me.POGridSwitch.Font = New System.Drawing.Font("Segoe UI", 9.0!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) - Me.POGridSwitch.Location = New System.Drawing.Point(0, 0) - Me.POGridSwitch.Name = "POGridSwitch" - Me.POGridSwitch.Size = New System.Drawing.Size(183, 20) - Me.POGridSwitch.TabIndex = 201 - Me.POGridSwitch.TabStop = False - Me.POGridSwitch.Text = "Grid" - Me.POGridSwitch.TextAlign = System.Drawing.ContentAlignment.MiddleCenter - Me.POGridSwitch.UseCompatibleTextRendering = True - Me.POGridSwitch.UseVisualStyleBackColor = False - ' - 'POHeader - ' - Me.POHeader.AutoSize = True - Me.POHeader.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink - Me.POHeader.Controls.Add(Me.POHeaderInner) - Me.POHeader.Controls.Add(Me.POHeaderSwitch) - Me.POHeader.Dock = System.Windows.Forms.DockStyle.Top - Me.POHeader.Location = New System.Drawing.Point(0, 0) - Me.POHeader.Name = "POHeader" - Me.POHeader.Size = New System.Drawing.Size(183, 439) - Me.POHeader.TabIndex = 1 - ' - 'POHeaderInner - ' - Me.POHeaderInner.AutoSize = True - Me.POHeaderInner.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink - Me.POHeaderInner.Controls.Add(Me.POHeaderPart2) - Me.POHeaderInner.Controls.Add(Me.POHeaderExpander) - Me.POHeaderInner.Controls.Add(Me.POHeaderPart1) - Me.POHeaderInner.Dock = System.Windows.Forms.DockStyle.Top - Me.POHeaderInner.Location = New System.Drawing.Point(0, 20) - Me.POHeaderInner.Name = "POHeaderInner" - Me.POHeaderInner.Size = New System.Drawing.Size(183, 419) - Me.POHeaderInner.TabIndex = 2 - ' - 'POHeaderPart2 - ' - Me.POHeaderPart2.AutoSize = True - Me.POHeaderPart2.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink - Me.POHeaderPart2.ColumnCount = 3 - Me.POHeaderPart2.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle()) - Me.POHeaderPart2.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100.0!)) - Me.POHeaderPart2.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle()) - Me.POHeaderPart2.Controls.Add(Me.CHDifficulty, 1, 5) - Me.POHeaderPart2.Controls.Add(Me.Label13, 2, 6) - Me.POHeaderPart2.Controls.Add(Me.THExRank, 1, 6) - Me.POHeaderPart2.Controls.Add(Me.Label25, 2, 7) - Me.POHeaderPart2.Controls.Add(Me.CHLnObj, 1, 9) - Me.POHeaderPart2.Controls.Add(Me.Label23, 0, 6) - Me.POHeaderPart2.Controls.Add(Me.Label21, 0, 5) - Me.POHeaderPart2.Controls.Add(Me.THComment, 1, 8) - Me.POHeaderPart2.Controls.Add(Me.Label24, 0, 9) - Me.POHeaderPart2.Controls.Add(Me.Label15, 0, 0) - Me.POHeaderPart2.Controls.Add(Me.THTotal, 1, 7) - Me.POHeaderPart2.Controls.Add(Me.Label20, 0, 7) - Me.POHeaderPart2.Controls.Add(Me.BHStageFile, 2, 2) - Me.POHeaderPart2.Controls.Add(Me.BHBanner, 2, 3) - Me.POHeaderPart2.Controls.Add(Me.Label19, 0, 8) - Me.POHeaderPart2.Controls.Add(Me.BHBackBMP, 2, 4) - Me.POHeaderPart2.Controls.Add(Me.Label17, 0, 1) - Me.POHeaderPart2.Controls.Add(Me.Label16, 0, 2) - Me.POHeaderPart2.Controls.Add(Me.Label12, 0, 3) - Me.POHeaderPart2.Controls.Add(Me.THBackBMP, 1, 4) - Me.POHeaderPart2.Controls.Add(Me.Label11, 0, 4) - Me.POHeaderPart2.Controls.Add(Me.THBanner, 1, 3) - Me.POHeaderPart2.Controls.Add(Me.THStageFile, 1, 2) - Me.POHeaderPart2.Controls.Add(Me.THSubTitle, 1, 0) - Me.POHeaderPart2.Controls.Add(Me.THSubArtist, 1, 1) - Me.POHeaderPart2.Dock = System.Windows.Forms.DockStyle.Top - Me.POHeaderPart2.Location = New System.Drawing.Point(0, 186) - Me.POHeaderPart2.Name = "POHeaderPart2" - Me.POHeaderPart2.RowCount = 10 - Me.POHeaderPart2.RowStyles.Add(New System.Windows.Forms.RowStyle()) - Me.POHeaderPart2.RowStyles.Add(New System.Windows.Forms.RowStyle()) - Me.POHeaderPart2.RowStyles.Add(New System.Windows.Forms.RowStyle()) - Me.POHeaderPart2.RowStyles.Add(New System.Windows.Forms.RowStyle()) - Me.POHeaderPart2.RowStyles.Add(New System.Windows.Forms.RowStyle()) - Me.POHeaderPart2.RowStyles.Add(New System.Windows.Forms.RowStyle()) - Me.POHeaderPart2.RowStyles.Add(New System.Windows.Forms.RowStyle()) - Me.POHeaderPart2.RowStyles.Add(New System.Windows.Forms.RowStyle()) - Me.POHeaderPart2.RowStyles.Add(New System.Windows.Forms.RowStyle()) - Me.POHeaderPart2.RowStyles.Add(New System.Windows.Forms.RowStyle()) - Me.POHeaderPart2.Size = New System.Drawing.Size(183, 233) - Me.POHeaderPart2.TabIndex = 27 - ' - 'CHDifficulty - ' - Me.POHeaderPart2.SetColumnSpan(Me.CHDifficulty, 2) - Me.CHDifficulty.Dock = System.Windows.Forms.DockStyle.Top - Me.CHDifficulty.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList - Me.CHDifficulty.FlatStyle = System.Windows.Forms.FlatStyle.System - Me.CHDifficulty.Items.AddRange(New Object() {"None", "1 - EZ / Beginner", "2 - NM / Normal", "3 - HD / Hyper", "4 - MX / Another", "5 - SC / Insane"}) - Me.CHDifficulty.Location = New System.Drawing.Point(67, 118) - Me.CHDifficulty.Margin = New System.Windows.Forms.Padding(0) - Me.CHDifficulty.Name = "CHDifficulty" - Me.CHDifficulty.Size = New System.Drawing.Size(116, 23) - Me.CHDifficulty.TabIndex = 110 - ' - 'Label13 - ' - Me.Label13.AutoSize = True - Me.Label13.Dock = System.Windows.Forms.DockStyle.Fill - Me.Label13.Location = New System.Drawing.Point(158, 141) - Me.Label13.Margin = New System.Windows.Forms.Padding(3, 0, 0, 0) - Me.Label13.Name = "Label13" - Me.Label13.Size = New System.Drawing.Size(25, 23) - Me.Label13.TabIndex = 63 - Me.Label13.Text = "(%)" - Me.Label13.TextAlign = System.Drawing.ContentAlignment.MiddleLeft - ' - 'THExRank - ' - Me.THExRank.Dock = System.Windows.Forms.DockStyle.Fill - Me.THExRank.Location = New System.Drawing.Point(67, 141) - Me.THExRank.Margin = New System.Windows.Forms.Padding(0) - Me.THExRank.Name = "THExRank" - Me.THExRank.Size = New System.Drawing.Size(88, 23) - Me.THExRank.TabIndex = 111 - ' - 'Label25 - ' - Me.Label25.AutoSize = True - Me.Label25.Dock = System.Windows.Forms.DockStyle.Fill - Me.Label25.Location = New System.Drawing.Point(158, 164) - Me.Label25.Margin = New System.Windows.Forms.Padding(3, 0, 0, 0) - Me.Label25.Name = "Label25" - Me.Label25.Size = New System.Drawing.Size(25, 23) - Me.Label25.TabIndex = 23 - Me.Label25.Text = "(%)" - Me.Label25.TextAlign = System.Drawing.ContentAlignment.MiddleLeft - ' - 'CHLnObj - ' - Me.POHeaderPart2.SetColumnSpan(Me.CHLnObj, 2) - Me.CHLnObj.Dock = System.Windows.Forms.DockStyle.Top - Me.CHLnObj.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList - Me.CHLnObj.FlatStyle = System.Windows.Forms.FlatStyle.System - Me.CHLnObj.Items.AddRange(New Object() {"None (#LnType 1)", "01", "02", "03", "04", "05", "06", "07", "08", "09", "0A", "0B", "0C", "0D", "0E", "0F", "0G", "0H", "0I", "0J", "0K", "0L", "0M", "0N", "0O", "0P", "0Q", "0R", "0S", "0T", "0U", "0V", "0W", "0X", "0Y", "0Z", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "1A", "1B", "1C", "1D", "1E", "1F", "1G", "1H", "1I", "1J", "1K", "1L", "1M", "1N", "1O", "1P", "1Q", "1R", "1S", "1T", "1U", "1V", "1W", "1X", "1Y", "1Z", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "2A", "2B", "2C", "2D", "2E", "2F", "2G", "2H", "2I", "2J", "2K", "2L", "2M", "2N", "2O", "2P", "2Q", "2R", "2S", "2T", "2U", "2V", "2W", "2X", "2Y", "2Z", "30", "31", "32", "33", "34", "35", "36", "37", "38", "39", "3A", "3B", "3C", "3D", "3E", "3F", "3G", "3H", "3I", "3J", "3K", "3L", "3M", "3N", "3O", "3P", "3Q", "3R", "3S", "3T", "3U", "3V", "3W", "3X", "3Y", "3Z", "40", "41", "42", "43", "44", "45", "46", "47", "48", "49", "4A", "4B", "4C", "4D", "4E", "4F", "4G", "4H", "4I", "4J", "4K", "4L", "4M", "4N", "4O", "4P", "4Q", "4R", "4S", "4T", "4U", "4V", "4W", "4X", "4Y", "4Z", "50", "51", "52", "53", "54", "55", "56", "57", "58", "59", "5A", "5B", "5C", "5D", "5E", "5F", "5G", "5H", "5I", "5J", "5K", "5L", "5M", "5N", "5O", "5P", "5Q", "5R", "5S", "5T", "5U", "5V", "5W", "5X", "5Y", "5Z", "60", "61", "62", "63", "64", "65", "66", "67", "68", "69", "6A", "6B", "6C", "6D", "6E", "6F", "6G", "6H", "6I", "6J", "6K", "6L", "6M", "6N", "6O", "6P", "6Q", "6R", "6S", "6T", "6U", "6V", "6W", "6X", "6Y", "6Z", "70", "71", "72", "73", "74", "75", "76", "77", "78", "79", "7A", "7B", "7C", "7D", "7E", "7F", "7G", "7H", "7I", "7J", "7K", "7L", "7M", "7N", "7O", "7P", "7Q", "7R", "7S", "7T", "7U", "7V", "7W", "7X", "7Y", "7Z", "80", "81", "82", "83", "84", "85", "86", "87", "88", "89", "8A", "8B", "8C", "8D", "8E", "8F", "8G", "8H", "8I", "8J", "8K", "8L", "8M", "8N", "8O", "8P", "8Q", "8R", "8S", "8T", "8U", "8V", "8W", "8X", "8Y", "8Z", "90", "91", "92", "93", "94", "95", "96", "97", "98", "99", "9A", "9B", "9C", "9D", "9E", "9F", "9G", "9H", "9I", "9J", "9K", "9L", "9M", "9N", "9O", "9P", "9Q", "9R", "9S", "9T", "9U", "9V", "9W", "9X", "9Y", "9Z", "A0", "A1", "A2", "A3", "A4", "A5", "A6", "A7", "A8", "A9", "AA", "AB", "AC", "AD", "AE", "AF", "AG", "AH", "AI", "AJ", "AK", "AL", "AM", "AN", "AO", "AP", "AQ", "AR", "AS", "AT", "AU", "AV", "AW", "AX", "AY", "AZ", "B0", "B1", "B2", "B3", "B4", "B5", "B6", "B7", "B8", "B9", "BA", "BB", "BC", "BD", "BE", "BF", "BG", "BH", "BI", "BJ", "BK", "BL", "BM", "BN", "BO", "BP", "BQ", "BR", "BS", "BT", "BU", "BV", "BW", "BX", "BY", "BZ", "C0", "C1", "C2", "C3", "C4", "C5", "C6", "C7", "C8", "C9", "CA", "CB", "CC", "CD", "CE", "CF", "CG", "CH", "CI", "CJ", "CK", "CL", "CM", "CN", "CO", "CP", "CQ", "CR", "CS", "CT", "CU", "CV", "CW", "CX", "CY", "CZ", "D0", "D1", "D2", "D3", "D4", "D5", "D6", "D7", "D8", "D9", "DA", "DB", "DC", "DD", "DE", "DF", "DG", "DH", "DI", "DJ", "DK", "DL", "DM", "DN", "DO", "DP", "DQ", "DR", "DS", "DT", "DU", "DV", "DW", "DX", "DY", "DZ", "E0", "E1", "E2", "E3", "E4", "E5", "E6", "E7", "E8", "E9", "EA", "EB", "EC", "ED", "EE", "EF", "EG", "EH", "EI", "EJ", "EK", "EL", "EM", "EN", "EO", "EP", "EQ", "ER", "ES", "ET", "EU", "EV", "EW", "EX", "EY", "EZ", "F0", "F1", "F2", "F3", "F4", "F5", "F6", "F7", "F8", "F9", "FA", "FB", "FC", "FD", "FE", "FF", "FG", "FH", "FI", "FJ", "FK", "FL", "FM", "FN", "FO", "FP", "FQ", "FR", "FS", "FT", "FU", "FV", "FW", "FX", "FY", "FZ", "G0", "G1", "G2", "G3", "G4", "G5", "G6", "G7", "G8", "G9", "GA", "GB", "GC", "GD", "GE", "GF", "GG", "GH", "GI", "GJ", "GK", "GL", "GM", "GN", "GO", "GP", "GQ", "GR", "GS", "GT", "GU", "GV", "GW", "GX", "GY", "GZ", "H0", "H1", "H2", "H3", "H4", "H5", "H6", "H7", "H8", "H9", "HA", "HB", "HC", "HD", "HE", "HF", "HG", "HH", "HI", "HJ", "HK", "HL", "HM", "HN", "HO", "HP", "HQ", "HR", "HS", "HT", "HU", "HV", "HW", "HX", "HY", "HZ", "I0", "I1", "I2", "I3", "I4", "I5", "I6", "I7", "I8", "I9", "IA", "IB", "IC", "ID", "IE", "IF", "IG", "IH", "II", "IJ", "IK", "IL", "IM", "IN", "IO", "IP", "IQ", "IR", "IS", "IT", "IU", "IV", "IW", "IX", "IY", "IZ", "J0", "J1", "J2", "J3", "J4", "J5", "J6", "J7", "J8", "J9", "JA", "JB", "JC", "JD", "JE", "JF", "JG", "JH", "JI", "JJ", "JK", "JL", "JM", "JN", "JO", "JP", "JQ", "JR", "JS", "JT", "JU", "JV", "JW", "JX", "JY", "JZ", "K0", "K1", "K2", "K3", "K4", "K5", "K6", "K7", "K8", "K9", "KA", "KB", "KC", "KD", "KE", "KF", "KG", "KH", "KI", "KJ", "KK", "KL", "KM", "KN", "KO", "KP", "KQ", "KR", "KS", "KT", "KU", "KV", "KW", "KX", "KY", "KZ", "L0", "L1", "L2", "L3", "L4", "L5", "L6", "L7", "L8", "L9", "LA", "LB", "LC", "LD", "LE", "LF", "LG", "LH", "LI", "LJ", "LK", "LL", "LM", "LN", "LO", "LP", "LQ", "LR", "LS", "LT", "LU", "LV", "LW", "LX", "LY", "LZ", "M0", "M1", "M2", "M3", "M4", "M5", "M6", "M7", "M8", "M9", "MA", "MB", "MC", "MD", "ME", "MF", "MG", "MH", "MI", "MJ", "MK", "ML", "MM", "MN", "MO", "MP", "MQ", "MR", "MS", "MT", "MU", "MV", "MW", "MX", "MY", "MZ", "N0", "N1", "N2", "N3", "N4", "N5", "N6", "N7", "N8", "N9", "NA", "NB", "NC", "ND", "NE", "NF", "NG", "NH", "NI", "NJ", "NK", "NL", "NM", "NN", "NO", "NP", "NQ", "NR", "NS", "NT", "NU", "NV", "NW", "NX", "NY", "NZ", "O0", "O1", "O2", "O3", "O4", "O5", "O6", "O7", "O8", "O9", "OA", "OB", "OC", "OD", "OE", "OF", "OG", "OH", "OI", "OJ", "OK", "OL", "OM", "ON", "OO", "OP", "OQ", "OR", "OS", "OT", "OU", "OV", "OW", "OX", "OY", "OZ", "P0", "P1", "P2", "P3", "P4", "P5", "P6", "P7", "P8", "P9", "PA", "PB", "PC", "PD", "PE", "PF", "PG", "PH", "PI", "PJ", "PK", "PL", "PM", "PN", "PO", "PP", "PQ", "PR", "PS", "PT", "PU", "PV", "PW", "PX", "PY", "PZ", "Q0", "Q1", "Q2", "Q3", "Q4", "Q5", "Q6", "Q7", "Q8", "Q9", "QA", "QB", "QC", "QD", "QE", "QF", "QG", "QH", "QI", "QJ", "QK", "QL", "QM", "QN", "QO", "QP", "QQ", "QR", "QS", "QT", "QU", "QV", "QW", "QX", "QY", "QZ", "R0", "R1", "R2", "R3", "R4", "R5", "R6", "R7", "R8", "R9", "RA", "RB", "RC", "RD", "RE", "RF", "RG", "RH", "RI", "RJ", "RK", "RL", "RM", "RN", "RO", "RP", "RQ", "RR", "RS", "RT", "RU", "RV", "RW", "RX", "RY", "RZ", "S0", "S1", "S2", "S3", "S4", "S5", "S6", "S7", "S8", "S9", "SA", "SB", "SC", "SD", "SE", "SF", "SG", "SH", "SI", "SJ", "SK", "SL", "SM", "SN", "SO", "SP", "SQ", "SR", "SS", "ST", "SU", "SV", "SW", "SX", "SY", "SZ", "T0", "T1", "T2", "T3", "T4", "T5", "T6", "T7", "T8", "T9", "TA", "TB", "TC", "TD", "TE", "TF", "TG", "TH", "TI", "TJ", "TK", "TL", "TM", "TN", "TO", "TP", "TQ", "TR", "TS", "TT", "TU", "TV", "TW", "TX", "TY", "TZ", "U0", "U1", "U2", "U3", "U4", "U5", "U6", "U7", "U8", "U9", "UA", "UB", "UC", "UD", "UE", "UF", "UG", "UH", "UI", "UJ", "UK", "UL", "UM", "UN", "UO", "UP", "UQ", "UR", "US", "UT", "UU", "UV", "UW", "UX", "UY", "UZ", "V0", "V1", "V2", "V3", "V4", "V5", "V6", "V7", "V8", "V9", "VA", "VB", "VC", "VD", "VE", "VF", "VG", "VH", "VI", "VJ", "VK", "VL", "VM", "VN", "VO", "VP", "VQ", "VR", "VS", "VT", "VU", "VV", "VW", "VX", "VY", "VZ", "W0", "W1", "W2", "W3", "W4", "W5", "W6", "W7", "W8", "W9", "WA", "WB", "WC", "WD", "WE", "WF", "WG", "WH", "WI", "WJ", "WK", "WL", "WM", "WN", "WO", "WP", "WQ", "WR", "WS", "WT", "WU", "WV", "WW", "WX", "WY", "WZ", "X0", "X1", "X2", "X3", "X4", "X5", "X6", "X7", "X8", "X9", "XA", "XB", "XC", "XD", "XE", "XF", "XG", "XH", "XI", "XJ", "XK", "XL", "XM", "XN", "XO", "XP", "XQ", "XR", "XS", "XT", "XU", "XV", "XW", "XX", "XY", "XZ", "Y0", "Y1", "Y2", "Y3", "Y4", "Y5", "Y6", "Y7", "Y8", "Y9", "YA", "YB", "YC", "YD", "YE", "YF", "YG", "YH", "YI", "YJ", "YK", "YL", "YM", "YN", "YO", "YP", "YQ", "YR", "YS", "YT", "YU", "YV", "YW", "YX", "YY", "YZ", "Z0", "Z1", "Z2", "Z3", "Z4", "Z5", "Z6", "Z7", "Z8", "Z9", "ZA", "ZB", "ZC", "ZD", "ZE", "ZF", "ZG", "ZH", "ZI", "ZJ", "ZK", "ZL", "ZM", "ZN", "ZO", "ZP", "ZQ", "ZR", "ZS", "ZT", "ZU", "ZV", "ZW", "ZX", "ZY", "ZZ"}) - Me.CHLnObj.Location = New System.Drawing.Point(67, 210) - Me.CHLnObj.Margin = New System.Windows.Forms.Padding(0) - Me.CHLnObj.Name = "CHLnObj" - Me.CHLnObj.Size = New System.Drawing.Size(116, 23) - Me.CHLnObj.TabIndex = 114 - ' - 'Label23 - ' - Me.Label23.Anchor = System.Windows.Forms.AnchorStyles.Right - Me.Label23.AutoSize = True - Me.Label23.Location = New System.Drawing.Point(19, 145) - Me.Label23.Name = "Label23" - Me.Label23.Size = New System.Drawing.Size(45, 15) - Me.Label23.TabIndex = 26 - Me.Label23.Text = "ExRank" - Me.Label23.TextAlign = System.Drawing.ContentAlignment.MiddleRight - ' - 'Label21 - ' - Me.Label21.Anchor = System.Windows.Forms.AnchorStyles.Right - Me.Label21.AutoSize = True - Me.Label21.Location = New System.Drawing.Point(9, 122) - Me.Label21.Name = "Label21" - Me.Label21.Size = New System.Drawing.Size(55, 15) - Me.Label21.TabIndex = 25 - Me.Label21.Text = "Difficulty" - Me.Label21.TextAlign = System.Drawing.ContentAlignment.MiddleRight - ' - 'THComment - ' - Me.POHeaderPart2.SetColumnSpan(Me.THComment, 2) - Me.THComment.Dock = System.Windows.Forms.DockStyle.Fill - Me.THComment.Location = New System.Drawing.Point(67, 187) - Me.THComment.Margin = New System.Windows.Forms.Padding(0) - Me.THComment.Name = "THComment" - Me.THComment.Size = New System.Drawing.Size(116, 23) - Me.THComment.TabIndex = 113 - ' - 'Label24 - ' - Me.Label24.Anchor = System.Windows.Forms.AnchorStyles.Right - Me.Label24.AutoSize = True - Me.Label24.Location = New System.Drawing.Point(25, 214) - Me.Label24.Name = "Label24" - Me.Label24.Size = New System.Drawing.Size(39, 15) - Me.Label24.TabIndex = 27 - Me.Label24.Text = "LnObj" - Me.Label24.TextAlign = System.Drawing.ContentAlignment.MiddleRight - ' - 'Label15 - ' - Me.Label15.Anchor = System.Windows.Forms.AnchorStyles.Right - Me.Label15.AutoSize = True - Me.Label15.Location = New System.Drawing.Point(15, 4) - Me.Label15.Name = "Label15" - Me.Label15.Size = New System.Drawing.Size(49, 15) - Me.Label15.TabIndex = 6 - Me.Label15.Text = "SubTitle" - Me.Label15.TextAlign = System.Drawing.ContentAlignment.MiddleRight - ' - 'THTotal - ' - Me.THTotal.Dock = System.Windows.Forms.DockStyle.Fill - Me.THTotal.Location = New System.Drawing.Point(67, 164) - Me.THTotal.Margin = New System.Windows.Forms.Padding(0) - Me.THTotal.Name = "THTotal" - Me.THTotal.Size = New System.Drawing.Size(88, 23) - Me.THTotal.TabIndex = 112 - ' - 'Label20 - ' - Me.Label20.Anchor = System.Windows.Forms.AnchorStyles.Right - Me.Label20.AutoSize = True - Me.Label20.Location = New System.Drawing.Point(32, 168) - Me.Label20.Name = "Label20" - Me.Label20.Size = New System.Drawing.Size(32, 15) - Me.Label20.TabIndex = 5 - Me.Label20.Text = "Total" - Me.Label20.TextAlign = System.Drawing.ContentAlignment.MiddleRight - ' - 'BHStageFile - ' - Me.BHStageFile.Dock = System.Windows.Forms.DockStyle.Fill - Me.BHStageFile.FlatStyle = System.Windows.Forms.FlatStyle.System - Me.BHStageFile.Location = New System.Drawing.Point(158, 46) - Me.BHStageFile.Margin = New System.Windows.Forms.Padding(3, 0, 0, 0) - Me.BHStageFile.Name = "BHStageFile" - Me.BHStageFile.Size = New System.Drawing.Size(25, 24) - Me.BHStageFile.TabIndex = 105 - Me.BHStageFile.Text = "..." - Me.BHStageFile.UseVisualStyleBackColor = True - ' - 'BHBanner - ' - Me.BHBanner.Dock = System.Windows.Forms.DockStyle.Fill - Me.BHBanner.FlatStyle = System.Windows.Forms.FlatStyle.System - Me.BHBanner.Location = New System.Drawing.Point(158, 70) - Me.BHBanner.Margin = New System.Windows.Forms.Padding(3, 0, 0, 0) - Me.BHBanner.Name = "BHBanner" - Me.BHBanner.Size = New System.Drawing.Size(25, 24) - Me.BHBanner.TabIndex = 107 - Me.BHBanner.Text = "..." - Me.BHBanner.UseVisualStyleBackColor = True - ' - 'Label19 - ' - Me.Label19.Anchor = System.Windows.Forms.AnchorStyles.Right - Me.Label19.AutoSize = True - Me.Label19.Location = New System.Drawing.Point(3, 191) - Me.Label19.Name = "Label19" - Me.Label19.Size = New System.Drawing.Size(61, 15) - Me.Label19.TabIndex = 13 - Me.Label19.Text = "Comment" - Me.Label19.TextAlign = System.Drawing.ContentAlignment.MiddleRight - ' - 'BHBackBMP - ' - Me.BHBackBMP.Dock = System.Windows.Forms.DockStyle.Fill - Me.BHBackBMP.FlatStyle = System.Windows.Forms.FlatStyle.System - Me.BHBackBMP.Location = New System.Drawing.Point(158, 94) - Me.BHBackBMP.Margin = New System.Windows.Forms.Padding(3, 0, 0, 0) - Me.BHBackBMP.Name = "BHBackBMP" - Me.BHBackBMP.Size = New System.Drawing.Size(25, 24) - Me.BHBackBMP.TabIndex = 109 - Me.BHBackBMP.Text = "..." - Me.BHBackBMP.UseVisualStyleBackColor = True - ' - 'Label17 - ' - Me.Label17.Anchor = System.Windows.Forms.AnchorStyles.Right - Me.Label17.AutoSize = True - Me.Label17.Location = New System.Drawing.Point(9, 27) - Me.Label17.Name = "Label17" - Me.Label17.Size = New System.Drawing.Size(55, 15) - Me.Label17.TabIndex = 7 - Me.Label17.Text = "SubArtist" - Me.Label17.TextAlign = System.Drawing.ContentAlignment.MiddleRight - ' - 'Label16 - ' - Me.Label16.Anchor = System.Windows.Forms.AnchorStyles.Right - Me.Label16.AutoSize = True - Me.Label16.Location = New System.Drawing.Point(7, 50) - Me.Label16.Name = "Label16" - Me.Label16.Size = New System.Drawing.Size(57, 15) - Me.Label16.TabIndex = 9 - Me.Label16.Text = "Stage File" - Me.Label16.TextAlign = System.Drawing.ContentAlignment.MiddleRight - ' - 'Label12 - ' - Me.Label12.Anchor = System.Windows.Forms.AnchorStyles.Right - Me.Label12.AutoSize = True - Me.Label12.Location = New System.Drawing.Point(20, 74) - Me.Label12.Name = "Label12" - Me.Label12.Size = New System.Drawing.Size(44, 15) - Me.Label12.TabIndex = 13 - Me.Label12.Text = "Banner" - Me.Label12.TextAlign = System.Drawing.ContentAlignment.MiddleRight - ' - 'THBackBMP - ' - Me.THBackBMP.Dock = System.Windows.Forms.DockStyle.Fill - Me.THBackBMP.Location = New System.Drawing.Point(67, 94) - Me.THBackBMP.Margin = New System.Windows.Forms.Padding(0) - Me.THBackBMP.Name = "THBackBMP" - Me.THBackBMP.Size = New System.Drawing.Size(88, 23) - Me.THBackBMP.TabIndex = 108 - ' - 'Label11 - ' - Me.Label11.Anchor = System.Windows.Forms.AnchorStyles.Right - Me.Label11.AutoSize = True - Me.Label11.Location = New System.Drawing.Point(4, 98) - Me.Label11.Name = "Label11" - Me.Label11.Size = New System.Drawing.Size(60, 15) - Me.Label11.TabIndex = 16 - Me.Label11.Text = "Back BMP" - Me.Label11.TextAlign = System.Drawing.ContentAlignment.MiddleRight - ' - 'THBanner - ' - Me.THBanner.Dock = System.Windows.Forms.DockStyle.Fill - Me.THBanner.Location = New System.Drawing.Point(67, 70) - Me.THBanner.Margin = New System.Windows.Forms.Padding(0) - Me.THBanner.Name = "THBanner" - Me.THBanner.Size = New System.Drawing.Size(88, 23) - Me.THBanner.TabIndex = 106 - ' - 'THStageFile - ' - Me.THStageFile.Dock = System.Windows.Forms.DockStyle.Fill - Me.THStageFile.Location = New System.Drawing.Point(67, 46) - Me.THStageFile.Margin = New System.Windows.Forms.Padding(0) - Me.THStageFile.Name = "THStageFile" - Me.THStageFile.Size = New System.Drawing.Size(88, 23) - Me.THStageFile.TabIndex = 104 - ' - 'THSubTitle - ' - Me.POHeaderPart2.SetColumnSpan(Me.THSubTitle, 2) - Me.THSubTitle.Dock = System.Windows.Forms.DockStyle.Fill - Me.THSubTitle.Location = New System.Drawing.Point(67, 0) - Me.THSubTitle.Margin = New System.Windows.Forms.Padding(0) - Me.THSubTitle.Name = "THSubTitle" - Me.THSubTitle.Size = New System.Drawing.Size(116, 23) - Me.THSubTitle.TabIndex = 102 - ' - 'THSubArtist - ' - Me.POHeaderPart2.SetColumnSpan(Me.THSubArtist, 2) - Me.THSubArtist.Dock = System.Windows.Forms.DockStyle.Fill - Me.THSubArtist.Location = New System.Drawing.Point(67, 23) - Me.THSubArtist.Margin = New System.Windows.Forms.Padding(0) - Me.THSubArtist.Name = "THSubArtist" - Me.THSubArtist.Size = New System.Drawing.Size(116, 23) - Me.THSubArtist.TabIndex = 103 - ' - 'POHeaderExpander - ' - Me.POHeaderExpander.Appearance = System.Windows.Forms.Appearance.Button - Me.POHeaderExpander.AutoSize = True - Me.POHeaderExpander.Cursor = System.Windows.Forms.Cursors.Hand - Me.POHeaderExpander.Dock = System.Windows.Forms.DockStyle.Top - Me.POHeaderExpander.FlatAppearance.BorderSize = 0 - Me.POHeaderExpander.FlatStyle = System.Windows.Forms.FlatStyle.Popup - Me.POHeaderExpander.Location = New System.Drawing.Point(0, 161) - Me.POHeaderExpander.Margin = New System.Windows.Forms.Padding(0) - Me.POHeaderExpander.Name = "POHeaderExpander" - Me.POHeaderExpander.Size = New System.Drawing.Size(183, 25) - Me.POHeaderExpander.TabIndex = 101 - Me.POHeaderExpander.TabStop = False - Me.POHeaderExpander.Text = "Expand..." - Me.POHeaderExpander.TextAlign = System.Drawing.ContentAlignment.MiddleCenter - Me.POHeaderExpander.UseVisualStyleBackColor = False - ' - 'POHeaderPart1 - ' - Me.POHeaderPart1.AutoSize = True - Me.POHeaderPart1.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink - Me.POHeaderPart1.ColumnCount = 2 - Me.POHeaderPart1.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle()) - Me.POHeaderPart1.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100.0!)) - Me.POHeaderPart1.Controls.Add(Me.Label3, 0, 0) - Me.POHeaderPart1.Controls.Add(Me.THPlayLevel, 1, 6) - Me.POHeaderPart1.Controls.Add(Me.CHRank, 1, 5) - Me.POHeaderPart1.Controls.Add(Me.Label10, 0, 5) - Me.POHeaderPart1.Controls.Add(Me.CHPlayer, 1, 4) - Me.POHeaderPart1.Controls.Add(Me.Label4, 0, 1) - Me.POHeaderPart1.Controls.Add(Me.THGenre, 1, 2) - Me.POHeaderPart1.Controls.Add(Me.THBPM, 1, 3) - Me.POHeaderPart1.Controls.Add(Me.Label2, 0, 2) - Me.POHeaderPart1.Controls.Add(Me.THArtist, 1, 1) - Me.POHeaderPart1.Controls.Add(Me.THTitle, 1, 0) - Me.POHeaderPart1.Controls.Add(Me.Label9, 0, 3) - Me.POHeaderPart1.Controls.Add(Me.Label8, 0, 4) - Me.POHeaderPart1.Controls.Add(Me.Label6, 0, 6) - Me.POHeaderPart1.Dock = System.Windows.Forms.DockStyle.Top - Me.POHeaderPart1.Location = New System.Drawing.Point(0, 0) - Me.POHeaderPart1.Name = "POHeaderPart1" - Me.POHeaderPart1.RowCount = 7 - Me.POHeaderPart1.RowStyles.Add(New System.Windows.Forms.RowStyle()) - Me.POHeaderPart1.RowStyles.Add(New System.Windows.Forms.RowStyle()) - Me.POHeaderPart1.RowStyles.Add(New System.Windows.Forms.RowStyle()) - Me.POHeaderPart1.RowStyles.Add(New System.Windows.Forms.RowStyle()) - Me.POHeaderPart1.RowStyles.Add(New System.Windows.Forms.RowStyle()) - Me.POHeaderPart1.RowStyles.Add(New System.Windows.Forms.RowStyle()) - Me.POHeaderPart1.RowStyles.Add(New System.Windows.Forms.RowStyle()) - Me.POHeaderPart1.Size = New System.Drawing.Size(183, 161) - Me.POHeaderPart1.TabIndex = 25 - ' - 'Label3 - ' - Me.Label3.Anchor = System.Windows.Forms.AnchorStyles.Right - Me.Label3.AutoSize = True - Me.Label3.Location = New System.Drawing.Point(33, 4) - Me.Label3.Name = "Label3" - Me.Label3.Size = New System.Drawing.Size(29, 15) - Me.Label3.TabIndex = 2 - Me.Label3.Text = "Title" - Me.Label3.TextAlign = System.Drawing.ContentAlignment.MiddleRight - ' - 'THPlayLevel - ' - Me.THPlayLevel.Dock = System.Windows.Forms.DockStyle.Fill - Me.THPlayLevel.Location = New System.Drawing.Point(65, 138) - Me.THPlayLevel.Margin = New System.Windows.Forms.Padding(0) - Me.THPlayLevel.Name = "THPlayLevel" - Me.THPlayLevel.Size = New System.Drawing.Size(118, 23) - Me.THPlayLevel.TabIndex = 8 - ' - 'CHRank - ' - Me.CHRank.Dock = System.Windows.Forms.DockStyle.Top - Me.CHRank.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList - Me.CHRank.FlatStyle = System.Windows.Forms.FlatStyle.System - Me.CHRank.Items.AddRange(New Object() {"0 - Very Hard", "1 - Hard", "2 - Normal", "3 - Easy", "4 - Very Easy"}) - Me.CHRank.Location = New System.Drawing.Point(65, 115) - Me.CHRank.Margin = New System.Windows.Forms.Padding(0) - Me.CHRank.Name = "CHRank" - Me.CHRank.Size = New System.Drawing.Size(118, 23) - Me.CHRank.TabIndex = 7 - ' - 'Label10 - ' - Me.Label10.Anchor = System.Windows.Forms.AnchorStyles.Right - Me.Label10.AutoSize = True - Me.Label10.Location = New System.Drawing.Point(12, 119) - Me.Label10.Name = "Label10" - Me.Label10.Size = New System.Drawing.Size(50, 15) - Me.Label10.TabIndex = 16 - Me.Label10.Text = "Ranking" - Me.Label10.TextAlign = System.Drawing.ContentAlignment.MiddleRight - ' - 'CHPlayer - ' - Me.CHPlayer.Dock = System.Windows.Forms.DockStyle.Top - Me.CHPlayer.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList - Me.CHPlayer.FlatStyle = System.Windows.Forms.FlatStyle.System - Me.CHPlayer.Items.AddRange(New Object() {"1 - Single Play", "2 - Couple Play", "3 - Double Play"}) - Me.CHPlayer.Location = New System.Drawing.Point(65, 92) - Me.CHPlayer.Margin = New System.Windows.Forms.Padding(0) - Me.CHPlayer.Name = "CHPlayer" - Me.CHPlayer.Size = New System.Drawing.Size(118, 23) - Me.CHPlayer.TabIndex = 6 - ' - 'Label4 - ' - Me.Label4.Anchor = System.Windows.Forms.AnchorStyles.Right - Me.Label4.AutoSize = True - Me.Label4.Location = New System.Drawing.Point(27, 27) - Me.Label4.Name = "Label4" - Me.Label4.Size = New System.Drawing.Size(35, 15) - Me.Label4.TabIndex = 3 - Me.Label4.Text = "Artist" - Me.Label4.TextAlign = System.Drawing.ContentAlignment.MiddleRight - ' - 'THGenre - ' - Me.THGenre.Dock = System.Windows.Forms.DockStyle.Fill - Me.THGenre.Location = New System.Drawing.Point(65, 46) - Me.THGenre.Margin = New System.Windows.Forms.Padding(0) - Me.THGenre.Name = "THGenre" - Me.THGenre.Size = New System.Drawing.Size(118, 23) - Me.THGenre.TabIndex = 4 - ' - 'THBPM - ' - Me.THBPM.DecimalPlaces = 4 - Me.THBPM.Dock = System.Windows.Forms.DockStyle.Fill - Me.THBPM.Increment = New Decimal(New Integer() {10, 0, 0, 0}) - Me.THBPM.Location = New System.Drawing.Point(65, 69) - Me.THBPM.Margin = New System.Windows.Forms.Padding(0) - Me.THBPM.Maximum = New Decimal(New Integer() {655359999, 0, 0, 262144}) - Me.THBPM.Minimum = New Decimal(New Integer() {1, 0, 0, 262144}) - Me.THBPM.Name = "THBPM" - Me.THBPM.Size = New System.Drawing.Size(118, 23) - Me.THBPM.TabIndex = 5 - Me.THBPM.Value = New Decimal(New Integer() {120, 0, 0, 0}) - ' - 'Label2 - ' - Me.Label2.Anchor = System.Windows.Forms.AnchorStyles.Right - Me.Label2.AutoSize = True - Me.Label2.Location = New System.Drawing.Point(24, 50) - Me.Label2.Name = "Label2" - Me.Label2.Size = New System.Drawing.Size(38, 15) - Me.Label2.TabIndex = 4 - Me.Label2.Text = "Genre" - Me.Label2.TextAlign = System.Drawing.ContentAlignment.MiddleRight - ' - 'THArtist - ' - Me.THArtist.Dock = System.Windows.Forms.DockStyle.Fill - Me.THArtist.Location = New System.Drawing.Point(65, 23) - Me.THArtist.Margin = New System.Windows.Forms.Padding(0) - Me.THArtist.Name = "THArtist" - Me.THArtist.Size = New System.Drawing.Size(118, 23) - Me.THArtist.TabIndex = 3 - ' - 'THTitle - ' - Me.THTitle.Dock = System.Windows.Forms.DockStyle.Fill - Me.THTitle.Location = New System.Drawing.Point(65, 0) - Me.THTitle.Margin = New System.Windows.Forms.Padding(0) - Me.THTitle.Name = "THTitle" - Me.THTitle.Size = New System.Drawing.Size(118, 23) - Me.THTitle.TabIndex = 2 - ' - 'Label9 - ' - Me.Label9.Anchor = System.Windows.Forms.AnchorStyles.Right - Me.Label9.AutoSize = True - Me.Label9.Location = New System.Drawing.Point(30, 73) - Me.Label9.Name = "Label9" - Me.Label9.Size = New System.Drawing.Size(32, 15) - Me.Label9.TabIndex = 5 - Me.Label9.Text = "BPM" - Me.Label9.TextAlign = System.Drawing.ContentAlignment.MiddleRight - ' - 'Label8 - ' - Me.Label8.Anchor = System.Windows.Forms.AnchorStyles.Right - Me.Label8.AutoSize = True - Me.Label8.Location = New System.Drawing.Point(23, 96) - Me.Label8.Name = "Label8" - Me.Label8.Size = New System.Drawing.Size(39, 15) - Me.Label8.TabIndex = 13 - Me.Label8.Text = "Player" - Me.Label8.TextAlign = System.Drawing.ContentAlignment.MiddleRight - ' - 'Label6 - ' - Me.Label6.Anchor = System.Windows.Forms.AnchorStyles.Right - Me.Label6.AutoSize = True - Me.Label6.Location = New System.Drawing.Point(3, 142) - Me.Label6.Name = "Label6" - Me.Label6.Size = New System.Drawing.Size(59, 15) - Me.Label6.TabIndex = 8 - Me.Label6.Text = "Play Level" - Me.Label6.TextAlign = System.Drawing.ContentAlignment.MiddleRight - ' - 'POHeaderSwitch - ' - Me.POHeaderSwitch.Appearance = System.Windows.Forms.Appearance.Button - Me.POHeaderSwitch.BackColor = System.Drawing.SystemColors.Control - Me.POHeaderSwitch.Checked = True - Me.POHeaderSwitch.CheckState = System.Windows.Forms.CheckState.Checked - Me.POHeaderSwitch.Cursor = System.Windows.Forms.Cursors.Hand - Me.POHeaderSwitch.Dock = System.Windows.Forms.DockStyle.Top - Me.POHeaderSwitch.Font = New System.Drawing.Font("Segoe UI", 9.0!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) - Me.POHeaderSwitch.Location = New System.Drawing.Point(0, 0) - Me.POHeaderSwitch.Name = "POHeaderSwitch" - Me.POHeaderSwitch.Size = New System.Drawing.Size(183, 20) - Me.POHeaderSwitch.TabIndex = 1 - Me.POHeaderSwitch.TabStop = False - Me.POHeaderSwitch.Text = "Header" - Me.POHeaderSwitch.TextAlign = System.Drawing.ContentAlignment.MiddleCenter - Me.POHeaderSwitch.UseCompatibleTextRendering = True - Me.POHeaderSwitch.UseVisualStyleBackColor = False - ' - 'POptionsScroll - ' - Me.POptionsScroll.AutoScroll = True - Me.POptionsScroll.Controls.Add(Me.POptions) - Me.POptionsScroll.Dock = System.Windows.Forms.DockStyle.Right - Me.POptionsScroll.Location = New System.Drawing.Point(958, 0) - Me.POptionsScroll.Name = "POptionsScroll" - Me.POptionsScroll.Size = New System.Drawing.Size(200, 781) - Me.POptionsScroll.TabIndex = 28 - ' - 'TBTotalValue - ' - Me.TBTotalValue.Name = "TBTotalValue" - Me.TBTotalValue.Size = New System.Drawing.Size(13, 22) - Me.TBTotalValue.Text = "0" - ' - 'MainWindow - ' - Me.AllowDrop = True - Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None - Me.ClientSize = New System.Drawing.Size(1158, 781) - Me.Controls.Add(Me.ToolStripContainer1) - Me.Controls.Add(Me.pStatus) - Me.Controls.Add(Me.POptionsResizer) - Me.Controls.Add(Me.POptionsScroll) - Me.DoubleBuffered = True - Me.Font = New System.Drawing.Font("Segoe UI", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) - Me.Icon = CType(resources.GetObject("$this.Icon"), System.Drawing.Icon) - Me.KeyPreview = True - Me.MainMenuStrip = Me.mnMain - Me.Name = "MainWindow" - Me.cmnLanguage.ResumeLayout(False) - Me.cmnTheme.ResumeLayout(False) - Me.Menu1.ResumeLayout(False) - Me.mnMain.ResumeLayout(False) - Me.mnMain.PerformLayout() - Me.cmnConversion.ResumeLayout(False) - Me.TBMain.ResumeLayout(False) - Me.TBMain.PerformLayout() - Me.pStatus.ResumeLayout(False) - Me.pStatus.PerformLayout() - Me.FStatus2.ResumeLayout(False) - Me.FStatus2.PerformLayout() - Me.FStatus.ResumeLayout(False) - Me.FStatus.PerformLayout() - Me.ToolStripContainer1.ContentPanel.ResumeLayout(False) - Me.ToolStripContainer1.TopToolStripPanel.ResumeLayout(False) - Me.ToolStripContainer1.TopToolStripPanel.PerformLayout() - Me.ToolStripContainer1.ResumeLayout(False) - Me.ToolStripContainer1.PerformLayout() - Me.PMain.ResumeLayout(False) - Me.PMainR.ResumeLayout(False) - Me.PMainL.ResumeLayout(False) - Me.POptions.ResumeLayout(False) - Me.POptions.PerformLayout() - Me.POExpansion.ResumeLayout(False) - Me.POExpansionInner.ResumeLayout(False) - Me.POExpansionInner.PerformLayout() - Me.POBeat.ResumeLayout(False) - Me.POBeatInner.ResumeLayout(False) - Me.POBeatInner.PerformLayout() - Me.TableLayoutPanel7.ResumeLayout(False) - Me.TableLayoutPanel7.PerformLayout() - CType(Me.nBeatD, System.ComponentModel.ISupportInitialize).EndInit() - CType(Me.nBeatN, System.ComponentModel.ISupportInitialize).EndInit() - Me.POBeatPart2.ResumeLayout(False) - Me.POBeatPart2.PerformLayout() - Me.POWAV.ResumeLayout(False) - Me.POWAVInner.ResumeLayout(False) - Me.POWAVInner.PerformLayout() - Me.FlowLayoutPanel3.ResumeLayout(False) - Me.POWAVPart2.ResumeLayout(False) - Me.POWAVPart2.PerformLayout() - Me.POWaveForm.ResumeLayout(False) - Me.POWaveForm.PerformLayout() - Me.POWaveFormInner.ResumeLayout(False) - Me.POWaveFormInner.PerformLayout() - Me.POWaveFormPart2.ResumeLayout(False) - Me.POWaveFormPart2.PerformLayout() - CType(Me.TWSaturation, System.ComponentModel.ISupportInitialize).EndInit() - CType(Me.PictureBox2, System.ComponentModel.ISupportInitialize).EndInit() - CType(Me.TWTransparency, System.ComponentModel.ISupportInitialize).EndInit() - CType(Me.PictureBox3, System.ComponentModel.ISupportInitialize).EndInit() - CType(Me.TWPrecision, System.ComponentModel.ISupportInitialize).EndInit() - CType(Me.PictureBox4, System.ComponentModel.ISupportInitialize).EndInit() - CType(Me.TWWidth, System.ComponentModel.ISupportInitialize).EndInit() - CType(Me.PictureBox5, System.ComponentModel.ISupportInitialize).EndInit() - CType(Me.TWLeft, System.ComponentModel.ISupportInitialize).EndInit() - CType(Me.PictureBox6, System.ComponentModel.ISupportInitialize).EndInit() - CType(Me.TWSaturation2, System.ComponentModel.ISupportInitialize).EndInit() - CType(Me.TWLeft2, System.ComponentModel.ISupportInitialize).EndInit() - CType(Me.TWTransparency2, System.ComponentModel.ISupportInitialize).EndInit() - CType(Me.TWWidth2, System.ComponentModel.ISupportInitialize).EndInit() - CType(Me.TWPrecision2, System.ComponentModel.ISupportInitialize).EndInit() - Me.POWaveFormPart1.ResumeLayout(False) - Me.POWaveFormPart1.PerformLayout() - Me.TableLayoutPanel1.ResumeLayout(False) - Me.TableLayoutPanel1.PerformLayout() - Me.FlowLayoutPanel1.ResumeLayout(False) - Me.TableLayoutPanel6.ResumeLayout(False) - Me.TableLayoutPanel6.PerformLayout() - CType(Me.PictureBox1, System.ComponentModel.ISupportInitialize).EndInit() - CType(Me.TWPosition2, System.ComponentModel.ISupportInitialize).EndInit() - CType(Me.TWPosition, System.ComponentModel.ISupportInitialize).EndInit() - Me.POGrid.ResumeLayout(False) - Me.POGrid.PerformLayout() - Me.POGridInner.ResumeLayout(False) - Me.POGridInner.PerformLayout() - Me.POGridPart2.ResumeLayout(False) - Me.POGridPart2.PerformLayout() - Me.TableLayoutPanel5.ResumeLayout(False) - Me.TableLayoutPanel5.PerformLayout() - Me.FlowLayoutPanel2.ResumeLayout(False) - Me.TableLayoutPanel4.ResumeLayout(False) - Me.TableLayoutPanel4.PerformLayout() - CType(Me.CGB, System.ComponentModel.ISupportInitialize).EndInit() - Me.POGridPart1.ResumeLayout(False) - Me.POGridPart1.PerformLayout() - Me.TableLayoutPanel3.ResumeLayout(False) - Me.TableLayoutPanel3.PerformLayout() - CType(Me.PictureBox9, System.ComponentModel.ISupportInitialize).EndInit() - CType(Me.CGHeight2, System.ComponentModel.ISupportInitialize).EndInit() - CType(Me.CGHeight, System.ComponentModel.ISupportInitialize).EndInit() - CType(Me.PictureBox10, System.ComponentModel.ISupportInitialize).EndInit() - CType(Me.CGWidth2, System.ComponentModel.ISupportInitialize).EndInit() - CType(Me.CGWidth, System.ComponentModel.ISupportInitialize).EndInit() - Me.TableLayoutPanel2.ResumeLayout(False) - Me.TableLayoutPanel2.PerformLayout() - CType(Me.PictureBox7, System.ComponentModel.ISupportInitialize).EndInit() - CType(Me.CGDivide, System.ComponentModel.ISupportInitialize).EndInit() - CType(Me.CGSub, System.ComponentModel.ISupportInitialize).EndInit() - Me.POHeader.ResumeLayout(False) - Me.POHeader.PerformLayout() - Me.POHeaderInner.ResumeLayout(False) - Me.POHeaderInner.PerformLayout() - Me.POHeaderPart2.ResumeLayout(False) - Me.POHeaderPart2.PerformLayout() - Me.POHeaderPart1.ResumeLayout(False) - Me.POHeaderPart1.PerformLayout() - CType(Me.THBPM, System.ComponentModel.ISupportInitialize).EndInit() - Me.POptionsScroll.ResumeLayout(False) - Me.POptionsScroll.PerformLayout() - Me.ResumeLayout(False) - Me.PerformLayout() - - End Sub - Friend WithEvents Timer1 As System.Windows.Forms.Timer - Friend WithEvents MInsert As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents MRemove As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents Menu1 As System.Windows.Forms.ContextMenuStrip - Friend WithEvents AutoSaveTimer As System.Windows.Forms.Timer - Friend WithEvents mnMain As System.Windows.Forms.MenuStrip - Friend WithEvents mnFile As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents mnNew As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents mnOpen As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents mnImportSM As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents mnImportIBMSC As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents ToolStripSeparator14 As System.Windows.Forms.ToolStripSeparator - Friend WithEvents mnSave As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents mnSaveAs As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents mnExport As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents ToolStripSeparator15 As System.Windows.Forms.ToolStripSeparator - Friend WithEvents mnOpenR0 As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents mnOpenR1 As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents mnOpenR2 As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents mnOpenR3 As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents mnOpenR4 As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents ToolStripSeparator16 As System.Windows.Forms.ToolStripSeparator - Friend WithEvents mnQuit As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents mnEdit As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents mnUndo As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents mnRedo As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents ToolStripSeparator17 As System.Windows.Forms.ToolStripSeparator - Friend WithEvents mnCut As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents mnCopy As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents mnPaste As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents ToolStripSeparator18 As System.Windows.Forms.ToolStripSeparator - Friend WithEvents mnFind As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents mnStatisticsAdvanced As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents mnDelete As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents mnSelectAll As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents mnMyO2 As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents ToolStripSeparator19 As System.Windows.Forms.ToolStripSeparator - Friend WithEvents mnOptions As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents mnPreview As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents mnPlayB As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents mnPlay As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents mnStop As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents mnTimeSelect As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents mnSelect As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents mnWrite As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents ToolStripSeparator23 As System.Windows.Forms.ToolStripSeparator - Friend WithEvents mnConversion As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents mnErrorCheck As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents mnPreviewOnClick As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents mnShowFileName As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents ToolStripSeparator20 As System.Windows.Forms.ToolStripSeparator - Friend WithEvents mnGOptions As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents mnVOptions As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents mnLanguage As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents mnTheme As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents cmnLanguage As System.Windows.Forms.ContextMenuStrip - Friend WithEvents TBLangDef As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents ToolStripSeparator9 As System.Windows.Forms.ToolStripSeparator - Friend WithEvents cmnTheme As System.Windows.Forms.ContextMenuStrip - Friend WithEvents TBThemeDef As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents TBThemeSave As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents TBThemeRefresh As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents ToolStripSeparator6 As System.Windows.Forms.ToolStripSeparator - Friend WithEvents cmnConversion As System.Windows.Forms.ContextMenuStrip - Friend WithEvents POBLong As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents POBShort As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents POBLongShort As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents ToolStripSeparator10 As System.Windows.Forms.ToolStripSeparator - Friend WithEvents POBHidden As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents POBVisible As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents POBHiddenVisible As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents ToolStripSeparator11 As System.Windows.Forms.ToolStripSeparator - Friend WithEvents POBMirror As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents POBFlip As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents POBModify As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents mnSys As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents mnSMenu As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents mnSTB As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents mnSOP As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents mnSStatus As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents mnSLSplitter As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents mnSRSplitter As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents mnNTInput As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents TBLangRefresh As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents TBMain As System.Windows.Forms.ToolStrip - Friend WithEvents TBNew As System.Windows.Forms.ToolStripButton - Friend WithEvents TBOpen As System.Windows.Forms.ToolStripSplitButton - Friend WithEvents TBOpenR0 As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents TBOpenR1 As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents TBOpenR2 As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents TBOpenR3 As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents TBOpenR4 As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents ToolStripSeparator12 As System.Windows.Forms.ToolStripSeparator - Friend WithEvents TBImportSM As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents TBImportIBMSC As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents TBSave As System.Windows.Forms.ToolStripSplitButton - Friend WithEvents TBSaveAs As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents TBExport As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents ToolStripSeparator1 As System.Windows.Forms.ToolStripSeparator - Friend WithEvents TBCut As System.Windows.Forms.ToolStripButton - Friend WithEvents TBCopy As System.Windows.Forms.ToolStripButton - Friend WithEvents TBPaste As System.Windows.Forms.ToolStripButton - Friend WithEvents TBFind As System.Windows.Forms.ToolStripButton - Friend WithEvents TBStatistics As System.Windows.Forms.ToolStripButton - Friend WithEvents pStatus As System.Windows.Forms.Panel - Friend WithEvents FStatus As System.Windows.Forms.StatusStrip - Friend WithEvents FSC As System.Windows.Forms.ToolStripStatusLabel - Friend WithEvents FSP1 As System.Windows.Forms.ToolStripStatusLabel - Friend WithEvents FSP2 As System.Windows.Forms.ToolStripStatusLabel - Friend WithEvents FSP3 As System.Windows.Forms.ToolStripStatusLabel - Friend WithEvents FSP4 As System.Windows.Forms.ToolStripStatusLabel - Friend WithEvents FST As System.Windows.Forms.ToolStripStatusLabel - Friend WithEvents FSH As System.Windows.Forms.ToolStripStatusLabel - Friend WithEvents FSE As System.Windows.Forms.ToolStripStatusLabel - Friend WithEvents FStatus2 As System.Windows.Forms.StatusStrip - Friend WithEvents BVCReverse As System.Windows.Forms.ToolStripButton - Friend WithEvents LblMultiply As System.Windows.Forms.ToolStripStatusLabel - Friend WithEvents TVCBPM As System.Windows.Forms.ToolStripTextBox - Friend WithEvents TVCM As System.Windows.Forms.ToolStripTextBox - Friend WithEvents LblDivide As System.Windows.Forms.ToolStripStatusLabel - Friend WithEvents TVCD As System.Windows.Forms.ToolStripTextBox - Friend WithEvents BVCApply As System.Windows.Forms.ToolStripButton - Friend WithEvents BVCCalculate As System.Windows.Forms.ToolStripButton - Friend WithEvents FSW As System.Windows.Forms.ToolStripStatusLabel - Friend WithEvents FSSS As System.Windows.Forms.ToolStripButton - Friend WithEvents FSSL As System.Windows.Forms.ToolStripButton - Friend WithEvents FSSH As System.Windows.Forms.ToolStripButton - Friend WithEvents TimerMiddle As System.Windows.Forms.Timer - Friend WithEvents ToolStripSeparator21 As System.Windows.Forms.ToolStripSeparator - Friend WithEvents CGShow As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents CGShowS As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents CGShowBG As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents CGShowM As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents CGShowMB As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents CGShowV As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents CGShowC As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents ToolStripSeparator22 As System.Windows.Forms.ToolStripSeparator - Friend WithEvents CGBLP As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents CGSTOP As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents CGSCROLL As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents mnPOptions As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents ToolStripContainer1 As System.Windows.Forms.ToolStripContainer - Friend WithEvents PMain As System.Windows.Forms.Panel - Friend WithEvents PMainIn As System.Windows.Forms.Panel - Friend WithEvents MainPanelScroll As System.Windows.Forms.VScrollBar - Friend WithEvents HS As System.Windows.Forms.HScrollBar - Friend WithEvents PMainR As System.Windows.Forms.Panel - Friend WithEvents PMainInR As System.Windows.Forms.Panel - Friend WithEvents RightPanelScroll As System.Windows.Forms.VScrollBar - Friend WithEvents HSR As System.Windows.Forms.HScrollBar - Friend WithEvents PMainL As System.Windows.Forms.Panel - Friend WithEvents PMainInL As System.Windows.Forms.Panel - Friend WithEvents LeftPanelScroll As System.Windows.Forms.VScrollBar - Friend WithEvents HSL As System.Windows.Forms.HScrollBar - Friend WithEvents POConvert As System.Windows.Forms.ToolStripDropDownButton - Friend WithEvents TBLanguage As System.Windows.Forms.ToolStripDropDownButton - Friend WithEvents TBTheme As System.Windows.Forms.ToolStripDropDownButton - Friend WithEvents TBMyO2 As System.Windows.Forms.ToolStripButton - Friend WithEvents ToolStripSeparator4 As System.Windows.Forms.ToolStripSeparator - Friend WithEvents TBErrorCheck As System.Windows.Forms.ToolStripButton - Friend WithEvents TBPreviewOnClick As System.Windows.Forms.ToolStripButton - Friend WithEvents TBShowFileName As System.Windows.Forms.ToolStripButton - Friend WithEvents ToolStripSeparator2 As System.Windows.Forms.ToolStripSeparator - Friend WithEvents TBUndo As System.Windows.Forms.ToolStripButton - Friend WithEvents TBRedo As System.Windows.Forms.ToolStripButton - Friend WithEvents ToolStripSeparator5 As System.Windows.Forms.ToolStripSeparator - Friend WithEvents TBNTInput As System.Windows.Forms.ToolStripButton - Friend WithEvents TBTimeSelect As System.Windows.Forms.ToolStripButton - Friend WithEvents TBSelect As System.Windows.Forms.ToolStripButton - Friend WithEvents TBWrite As System.Windows.Forms.ToolStripButton - Friend WithEvents ToolStripSeparator3 As System.Windows.Forms.ToolStripSeparator - Friend WithEvents TBPlayB As System.Windows.Forms.ToolStripButton - Friend WithEvents TBPlay As System.Windows.Forms.ToolStripButton - Friend WithEvents TBStop As System.Windows.Forms.ToolStripButton - Friend WithEvents TBPOptions As System.Windows.Forms.ToolStripButton - Friend WithEvents ToolStripSeparator7 As System.Windows.Forms.ToolStripSeparator - Friend WithEvents TBVOptions As System.Windows.Forms.ToolStripButton - Friend WithEvents TBGOptions As System.Windows.Forms.ToolStripButton - Friend WithEvents POBStorm As System.Windows.Forms.ToolStripButton - Friend WithEvents POptionsResizer As System.Windows.Forms.Button - Friend WithEvents SpL As System.Windows.Forms.Button - Friend WithEvents TBThemeLoadComptability As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents ToolTipUniversal As System.Windows.Forms.ToolTip - Friend WithEvents CGBPM As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents FSM As System.Windows.Forms.ToolStripStatusLabel - Friend WithEvents mnGotoMeasure As ToolStripMenuItem - Friend WithEvents ToolStripSeparator24 As ToolStripSeparator - Friend WithEvents ToolStripSeparator8 As ToolStripSeparator - Friend WithEvents TBWavIncrease As ToolStripButton - Friend WithEvents TimeStatusLabel As ToolStripStatusLabel - Friend WithEvents BConvertStop As ToolStripButton - Friend WithEvents POBRandom As ToolStripMenuItem - Friend WithEvents POBSRandom As ToolStripMenuItem - Friend WithEvents mnStatistics As ToolStripMenuItem - Friend WithEvents mnVCOptions As ToolStripMenuItem - Friend WithEvents POBSort As ToolStripMenuItem - Friend WithEvents SpR As Button - Friend WithEvents POptions As Panel - Friend WithEvents POExpansion As Panel - Friend WithEvents POExpansionInner As Panel - Friend WithEvents TExpansion As TextBox - Friend WithEvents POExpansionResizer As Button - Friend WithEvents POExpansionSwitch As CheckBox - Friend WithEvents POBeat As Panel - Friend WithEvents POBeatInner As TableLayoutPanel - Friend WithEvents POBeatExpander As CheckBox - Friend WithEvents POBeatResizer As Button - Friend WithEvents TableLayoutPanel7 As TableLayoutPanel - Friend WithEvents nBeatD As NumericUpDown - Friend WithEvents BBeatApplyV As Button - Friend WithEvents nBeatN As NumericUpDown - Friend WithEvents BBeatApply As Button - Friend WithEvents Label7 As Label - Friend WithEvents tBeatValue As TextBox - Friend WithEvents LBeat As ListBox - Friend WithEvents POBeatPart2 As TableLayoutPanel - Friend WithEvents CBeatScale As RadioButton - Friend WithEvents CBeatCut As RadioButton - Friend WithEvents CBeatMeasure As RadioButton - Friend WithEvents CBeatPreserve As RadioButton - Friend WithEvents POBeatSwitch As CheckBox - Friend WithEvents POWAV As Panel - Friend WithEvents POWAVInner As TableLayoutPanel - Friend WithEvents POWAVExpander As CheckBox - Friend WithEvents LWAV As ListBox - Friend WithEvents FlowLayoutPanel3 As FlowLayoutPanel - Friend WithEvents BWAVUp As Button - Friend WithEvents BWAVDown As Button - Friend WithEvents BWAVBrowse As Button - Friend WithEvents BWAVRemove As Button - Friend WithEvents POWAVResizer As Button - Friend WithEvents POWAVPart2 As TableLayoutPanel - Friend WithEvents CWAVMultiSelect As CheckBox - Friend WithEvents CWAVChangeLabel As CheckBox - Friend WithEvents POWAVSwitch As CheckBox - Friend WithEvents POWaveForm As Panel - Friend WithEvents POWaveFormInner As Panel - Friend WithEvents POWaveFormPart2 As TableLayoutPanel - Friend WithEvents TWSaturation As NumericUpDown - Friend WithEvents PictureBox2 As PictureBox - Friend WithEvents TWTransparency As NumericUpDown - Friend WithEvents PictureBox3 As PictureBox - Friend WithEvents TWPrecision As NumericUpDown - Friend WithEvents PictureBox4 As PictureBox - Friend WithEvents TWWidth As NumericUpDown - Friend WithEvents PictureBox5 As PictureBox - Friend WithEvents TWLeft As NumericUpDown - Friend WithEvents PictureBox6 As PictureBox - Friend WithEvents TWSaturation2 As TrackBar - Friend WithEvents TWLeft2 As TrackBar - Friend WithEvents TWTransparency2 As TrackBar - Friend WithEvents TWWidth2 As TrackBar - Friend WithEvents TWPrecision2 As TrackBar - Friend WithEvents POWaveFormExpander As CheckBox - Friend WithEvents POWaveFormPart1 As TableLayoutPanel - Friend WithEvents TableLayoutPanel1 As TableLayoutPanel - Friend WithEvents FlowLayoutPanel1 As FlowLayoutPanel - Friend WithEvents BWLoad As Button - Friend WithEvents BWClear As Button - Friend WithEvents BWLock As CheckBox - Friend WithEvents TWFileName As TextBox - Friend WithEvents TableLayoutPanel6 As TableLayoutPanel - Friend WithEvents PictureBox1 As PictureBox - Friend WithEvents TWPosition2 As TrackBar - Friend WithEvents TWPosition As NumericUpDown - Friend WithEvents POWaveFormSwitch As CheckBox - Friend WithEvents POGrid As Panel - Friend WithEvents POGridInner As Panel - Friend WithEvents POGridPart2 As TableLayoutPanel - Friend WithEvents TableLayoutPanel5 As TableLayoutPanel - Friend WithEvents FlowLayoutPanel2 As FlowLayoutPanel - Friend WithEvents cVSLockL As CheckBox - Friend WithEvents cVSLock As CheckBox - Friend WithEvents cVSLockR As CheckBox - Friend WithEvents Label5 As Label - Friend WithEvents TableLayoutPanel4 As TableLayoutPanel - Friend WithEvents Label1 As Label - Friend WithEvents CGB As NumericUpDown - Friend WithEvents POGridExpander As CheckBox - Friend WithEvents POGridPart1 As TableLayoutPanel - Friend WithEvents TableLayoutPanel3 As TableLayoutPanel - Friend WithEvents PictureBox9 As PictureBox - Friend WithEvents CGHeight2 As TrackBar - Friend WithEvents CGHeight As NumericUpDown - Friend WithEvents PictureBox10 As PictureBox - Friend WithEvents CGWidth2 As TrackBar - Friend WithEvents CGWidth As NumericUpDown - Friend WithEvents CGDisableVertical As CheckBox - Friend WithEvents CGSnap As CheckBox - Friend WithEvents TableLayoutPanel2 As TableLayoutPanel - Friend WithEvents PictureBox7 As PictureBox - Friend WithEvents CGDivide As NumericUpDown - Friend WithEvents CGSub As NumericUpDown - Friend WithEvents BGSlash As Button - Friend WithEvents POGridSwitch As CheckBox - Friend WithEvents POHeader As Panel - Friend WithEvents POHeaderInner As Panel - Friend WithEvents POHeaderPart2 As TableLayoutPanel - Friend WithEvents CHDifficulty As ComboBox - Friend WithEvents Label13 As Label - Friend WithEvents THExRank As TextBox - Friend WithEvents Label25 As Label - Friend WithEvents CHLnObj As ComboBox - Friend WithEvents Label23 As Label - Friend WithEvents Label21 As Label - Friend WithEvents THComment As TextBox - Friend WithEvents Label24 As Label - Friend WithEvents Label15 As Label - Friend WithEvents THTotal As TextBox - Friend WithEvents Label20 As Label - Friend WithEvents BHStageFile As Button - Friend WithEvents BHBanner As Button - Friend WithEvents Label19 As Label - Friend WithEvents BHBackBMP As Button - Friend WithEvents Label17 As Label - Friend WithEvents Label16 As Label - Friend WithEvents Label12 As Label - Friend WithEvents THBackBMP As TextBox - Friend WithEvents Label11 As Label - Friend WithEvents THBanner As TextBox - Friend WithEvents THStageFile As TextBox - Friend WithEvents THSubTitle As TextBox - Friend WithEvents THSubArtist As TextBox - Friend WithEvents POHeaderExpander As CheckBox - Friend WithEvents POHeaderPart1 As TableLayoutPanel - Friend WithEvents Label3 As Label - Friend WithEvents THPlayLevel As TextBox - Friend WithEvents CHRank As ComboBox - Friend WithEvents Label10 As Label - Friend WithEvents CHPlayer As ComboBox - Friend WithEvents Label4 As Label - Friend WithEvents THGenre As TextBox - Friend WithEvents THBPM As NumericUpDown - Friend WithEvents Label2 As Label - Friend WithEvents THArtist As TextBox - Friend WithEvents THTitle As TextBox - Friend WithEvents Label9 As Label - Friend WithEvents Label8 As Label - Friend WithEvents Label6 As Label - Friend WithEvents POHeaderSwitch As CheckBox - Friend WithEvents POptionsScroll As Panel - Friend WithEvents ECSelectSection As Button - Friend WithEvents TBTotalValue As ToolStripLabel -End Class diff --git a/MainWindow.resx b/MainWindow.resx deleted file mode 100644 index 334ebdc32..000000000 --- a/MainWindow.resx +++ /dev/null @@ -1,2484 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 497, 2 - - - 625, 2 - - - 87, 2 - - - 176, 2 - - - 266, 2 - - - 400, 47 - - - 737, 2 - - - 839, 2 - - - - - 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 - 0f4HUYAlDK9yFIQAAAAASUVORK5CYII= - - - - 1022, 2 - - - 931, 2 - - - 1022, 2 - - - 931, 2 - - - 1120, 2 - - - 1240, 2 - - - 65 - - - - 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 - AgYBAQMiCgo4NxISyQ4EBFkCAAAMAAAABAAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAA - AwAAAAMAAAAEAAAABQMCAQMbFA4IdVc6xIdkRvVfQi3fKR0UtAEAADcDAwMEAAECBwAAABMAAAEMAAAA - BQAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAYCAQUAAAArAAAAWAAAAGMAAABlOBIT1BUGBrkBAAB3AAAAagAAAGYAAABkAAAAYwAAAGMAAABjAAAA - YwAAAGMAAABjAAAAYwAAAGQAAAB4AAAAigAAAHkHBgR8nXla9qOCY/+igmT+lm5V+gEAAIMAAABjAwkQ - fwURH7UAAQGkAAAAiwAAAHEAAABkAAAAYwAAAGMAAABjAAAAYwAAAGMAAABiAAAAUwAAACIAAAADAAAA - AAkCAg4HAgILDQUEBg0FBFcjDgrPIw4K7SENCu4cCwjvVTAp+TsXGPsaCQj1GAkH8xkKCPAeDAnvIg4K - 7iMOCu4jDgruIw4K7iIOCu4iDgruIg4K7iIOCu9QTk34T09P+jAtLPc0JRz3t5R0/reXdf+xknL/clE9 - /B8NCfAiDgruG0x99zCE0P8ne739F1+M+hYPEvQiDgrvIw4K7h8NCe4eDQnuIQ4K7iIOCu4hDgrtFQkG - 2AIAAJkAAAA2AAAAAiAJCXILAwNAGAsISEIbFPJGHRX+XSog/lEiGv9PLSX+uaWY/pR6i/+YdH3+gmBj - /0MiIf46GRT+Wykf/mMrIf9kLSP+ZCsh/mQtIv9jLCH+Yish/lYrI/+CgYH+hoaG/oeHh/+Hblz+y6uL - /suqiP/EooP+SzAk/jIUD/8+GRP+NHSv/0GK1P49hc7+O5DO/z8iI/5aJRv+WSQa/0ssHf4wGxP+LRMO - /zwYEv5LHxb+OBcR/yANCu4CAACPAAAAGEQWFsYVBgZ+SyIbzU0fF/9UJyD+cj0y/mY4Mv+dpq3+rXGL - /pt2i/+hjqf+mrDL/7mYpf5PLSv+lnFr/raLgv+3jIP+tomB/raIgP+0hn3+s4V8/n5kX/+jo6P+oKCg - /pKSkv+ce2P+17GW/taxk//Al33+YFtX/mhlZP8/QEb+Rpbe/1Sb5/5PluH+OYK2/3ZMRf6XYFX+jVlO - /6B4Vf6jfFr+kWpO/2E9LP5lKR7+aywf/zcWEf4TCAbMAAAAOkAVFUw/FxbZPhsY+V04LP9TPjf/RyQg - /2lHQ/+astb/h3OC/5iOof+Jdob/mnKK/6FliP98Wl3/pJaR/8e5s//HubP/0MG6/9rJwv/gz8f/3s3E - /4SAf//AwMD/u7u7/52al/+8j3n/2KqY/9isl/+kfmr/d3d2/4aGhv9PdZP/ZK3w/2Wu+f9lqvH/LmiL - /01EQv9qWlf/f2RX/62LbP+piGf/pIVm/5FwXf+LWE7/djAj/00fF/8jDwrnAAAARToaGgNbMTG8wKad - /smiov+SrLv+fVt1/kMiG/+Lr7T+o8nq/s647P/Swuf+o5W1/5Jlg/5vT03+OR4O/j0fD/86Hg7+OCIM - /kQuDP9TOw/+VDwQ/ouJh//Ozs7+y8vL/qeUjP/Hlo/+15+X/tekmv+QcWb+oKCg/qOjo/9Gg7D+csf5 - /27C/v5iufP+RGB0/4CAgP53dnX+eV5J/8Cigv69nXv+uZd5/3xnWf61o5/+eTgr/1MhGP4mEAvpAAAA - RikUFR1ySE3emoeZ/qBvfP+Hh4r+kcPJ/ks3Ov9XSlP+fazH/rek1/+wsJv+yLjd/6ybpv6zlbf+rois - /rOJtP+wj6H+i36C/jkdFv8zIAj+QDAU/rOzs//Q0ND+0NDQ/o+Ce/+wqaL+ycXF/sKbmv+gjYj+v7+/ - /q2vsP9KpdD+c9/+/3HY/v5Rsd7+a3B1/5CQkP6FhYX+nn5k/9Swj/7QrYz+upJ1/0dBO/5UTk3+Qyci - /0AaE/4mEAzpAAAARjQXGG+klKz/q4il/6CRov/i2vH/jc3y/1U6Qv+GRmr/UCcp/56mpv/Lzqn/wLy+ - /8Oy1f/Eptr/xKjd/8Ck4P+1hbn/uIGe/7Snr/9IKB3/XlFB/8jIyP/R0dH/z8/P/2JXQ/9+YCn/nIpl - /4V9dv/Jycj/zs7O/5qstP9szdn/etnh/3Tp9v9Mpb7/nJyc/6+vr/+PjIj/v5V7/9evlv/XsZX/nHlk - /3BwcP+IiIj/gYGB/zIXEv8mEAzpAAAARlo4O66st9L+pneY/rykyv/PveP+ubzq/l1IT/+QUXf+eDpX - /oiKef+1uJj+tq23/56PpP6TiJr+iHyS/oFxi/99bIv+eVl6/oVpff+CcXX+UkI9/q6trP/FxcX+vLy8 - /m1UJf+PYhT+d1UX/qysq//Q0ND+0NDQ/omJhf+If2j+6ODf/5iytP5yrLv+wsLC/8XFxf6Zhnv+z5+R - /9inmP7VqZj+hGlb/5OTk/6VlZX+e3h4/0AaE/4mEAzpAAAARm1FSoyyeaH/rG+b/8y13f+hmob/s7eN - /5egm/9zRFv/cUFl/11sfP9dhJv/TYSw/0WLv/9Ckcv/Q5bS/0WY0v9IlM3/T4y//1OAq/9ggp//TVVn - /0BCRP9rZVr/cl49/5FnHf+ichz/h2w8/7m5uf/Gxsb/0dHR/2BcV/8lGwz/LCUd/zQvJ/+8vb3/z8/P - /87Ozv+mg3v/u5ya/8aXk//RmZH/hndx/7W1tf+zs7P/al1a/00gF/8mEAvpAAAARl83QCCMXW3qsnOj - /r2Yv/++rrv+rbSA/pmij/9Ogqz+K4fP/iGa7f8XmvH+F5z1/xee9/4Xn/j+F5/4/heg+P8Xn/j+F5/4 - /hee9/8XnfX+KKL0/kas8f9Unc3+YH+N/k9OQP9EMhH+RjQW/pORjv/m5ub+srGx/jo2MP8aFA3+HhcP - /1VUUv7Ozs7+0dHR/8jIyP47NjP+qayr/83R0f6kgnz+tLGv/8rKyv7AwMD+Wz45/1MiGP4mEAvpAAAA - RkEiJgIrDQ14kWxv/NzG2/+/qcL+comp/iOK1f8Wlu7+F531/hig+v8Yovz+GKP8/xmi/P4co/v+IKT6 - /iKl+v8hpPn+HqP5/hqi+v8Yofr+F6H7/heh+v8Xn/n+G5/2/kOs8/9mncT+JkZd/gsOD/8pKCj+Dw0K - /h8WCf8xIgz+OikP/4qHg/7CwsL+wcHB/7a2tf4zKBb+MiYW/y8nH/59fHv+0NDQ/9DQ0P6trKz+ZDsz - /1YjGf4mEAvpAAAARiANDRtbLS3ZzK68/s2+2f9djMP+F5Dl/hab8/8Yofr+GKP9/hyk/P8vqvv+SLL5 - /1259/5qvPX+cr/0/njB8/96wvP+d8Hz/nG/9P9ku/X+ULT2/jeq9/8go/j+F6H6/heh+v8doPf+Z7ry - /hk6U/8DAwP+BAMD/gUFBP8JBwb+BgUG/xIREP66urr+urq6/21tbf4NCgr+CggI/xEQEP6xsbH+0dHR - /9HR0f6PjY3+fEpA/1gkGv4nEAzpAAAARjEVFYDDnKL/287k/2KUzP8Vkef/F5z1/xii/P8bpP3/MKv7 - /1C1+P9ctfP/XrLt/12t6P9ZpuD/VZ/W/1Wb0P9andH/ZabY/3m24/+Mw+v/nc7x/5nP8/+Ex/T/Yrr1 - /y6m9v8Xnvf/IJ3x/zdjg/8OCgb/FxEL/xkTDP8XEQv/GBMO/xcTDv8dFxD/GxYP/yMbD/8nHhH/JB0S - /y4rJ/+vr6//ycnJ/8TExP+KgYD/kltQ/1gkGv8nEAzpAAAARnlpbdvRrbP+kbHZ/hWO5P8Wm/T+GKL8 - /h2l/f80rPr+Qqz0/jOe6f8wjtL+SHuT/1djVv5bSjL+UD4f/lJAHf9ZRB3+ZU8k/n9qOP9ra1H+Yn2C - /mKSr/97tN7+oM7w/ozI8v89pu/+FZPr/iZxpf9IMg7+WT8U/k03Ff9FMhL+VjsS/1I5EP5NNRL+RTET - /044Ev5RORP+VjwW/1c/GP5pWDv+ta+m/392af61nZj+n2Va/1klG/4mEAzpAAAARpWChv2rhY/+JIrY - /haY8P8Yofr+G6T9/iin+f8rofH+GY3h/kt/nv+dglL+r4dH/6p/Pv6pfjn+oHYy/qyAPP+ofzr+u5RX - /rWLS/+ugkL+solK/q2ERf+cg1X+e46Q/mWbwv9OoN7+FIbb/hx5vf9rVC7+n3g7/qZ7Pf+uhEn+rYNF - /6R7Pv6shVL+poFL/5l3Qv6CXib+aEsV/2BJGP5PPRP+QDIQ/0UzFP6zmZL+n2dc/1gkGv4mEAzpAAAA - RpqDhftki7f/FJDn/xee9/8Yo/3/GaL6/xub8v8ajd//Z3eC/6OAW//Fn2z/x6Bu/8KbZv/KpXn/xKBx - /8qnd//Ipnf/zq2F/9Wzi//RrYL/wJpm/8qibv/Mp3j/wpxq/72ccP+RlpH/P4a8/xV0wf+QfWH/yqZ9 - /7+dcf+KfFz/dnFU/2xyWf+AbUr/v5dl/7qXZv+slVH/z7Zb/+fLaP/rzWj/5spo/8awXv+Th2T/bEU5 - /1QiGf8nEAzpAAAARnJhaNIhjNv+Fpfv/hii+/8Xovz+FZ31/hWQ5v93k6L+xKBx/seea//MoWz+v5VW - /8efaf7DnWj+vplo/sGfdv+tjWL+podd/pt9UP+piFz+vppp/sypef+fm3r+col4/nGJeP9mdV7+uJdq - /pOVif+6mGf+yqV0/oeqi/8Twcf+Gdjg/zLk6/5hoZn+p4li/8WpUP7hwE/+7MpW/+3LWv7ry1/+6spb - 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 - /0AzHv5NfSz+juuS/kHsSP89rDv+RTYO/muCQf+457b+aO1t/kvrUv9QiU/+NScO/kCckv9k6O3+AOjx - /gPr8/8A7vf+AOXu/iyuqv+aysP+ke7y/xzl7f4A7PX+AO/4/wDm7/4fbmz+kIJK/+raof7iwlP+275Y - /6SSS/7Os1X+58VS/+bEUv7bvFD+VE4lmk2k6xQ7ldvufMLy/z+w+v8Yovz/F5z0/ztfdf9OPR//UDcK - /5yLgv/r5O7/0LzX/3doZP9IShT/huGJ/1HqV/9H5k7/M0Mg/z8sDf9UaDD/kvGV/0fxTv9L6FH/RFUj - /0tqR/985On/K+jv/wDt9v8A7PX/AODp/0mLdv+QhWL/i9DM/7709v9g7PH/Gufv/wDe5v8YgoP/Oy8b - /7ite//t4LL/5Mx3/+PGYf/kx2P/5stu/+HJcP+6oUH3KScPXEeg5wE5luCmfr7t/ma99/8ao/v+F5/5 - /jaS0P84MSD+TDQJ/mJLJf+hkIj+kX95/2RSPf5CLwv+Z7Rg/nfqe/9A7Ej+TtRT/kF0N/89ijH+SulQ - /kbuTf885UP+PXsu/kU4G/9awsP+ku7x/j/o7/8T4en+Bc3U/lFPN/9lTjj+XFdA/2Kqqf617fD+oO3w - /xLP1/4XgID+NCYY/0g2Gf6Cc0H+uq56/9DDjP7j1Jj+0rh1/5RxPP43IBHpAAAARgAAAABPouU/WaXf - /IPG9P81rPn/GKL7/x2e9P9DY3X/QCwJ/1w+C/9rUy//kIOD/4yDgP9BMxv/S3Em/6Dro/9R5Vf/SOhO - /0XmS/9P5VX/Z+ls/3Lpdv851j//VXYn/21OH/9Pfmb/kOHl/4Hj5/8p0Nf/J4mE/z0xJP9LPS//SDko - /0E4Kf8mW1n/JW5v/yVhX/8qOjT/LyUb/zMnGv82KBf/LyMS/zYqG//czMP/soJ3/10oH/8nEAzpAAAA - RgAAAABlnM0EU5XM7ZDH7/9sv/b+HKP6/heg+v81n+b+Njs4/ks2E/+ZhYD+zL3S/8i20P6PgXz+YU0d - /n3Edf+u6rD+kOOS/o7fjv+B1H/+fMd1/mKvU/9ZeTH+Y0sh/m9UJ/9kTSX+gI9z/l1yYf9SVT3+VUcz - /lxLN/9SRDP+XU08/z41Lv4zLSj+MSsn/zQuJ/46MSf+RTUl/0Y2I/5ENST+LSYc/y8mHP7cy8j+sYB3 - /10pH/4oEAzpAAAARgAAAAAAAAAArKm16lyk3P+SzPP+TLP4/hii+/8Xn/j+R5nQ/i4vK/9dUUb+uq+1 - /7Wns/5+bl/+YEwr/l9aMP9caTP+YGIy/mRaL/9mVi7+bFgy/nhfNv9xWTD+ZE4r/mROK/9nUCv+oYNe - /oBrVP9aSTb+T0U5/lJHPf9aTkH+Z1lG/2VZSv5dUUT+S0M8/0hAOv5IQTr+TEI4/1dINf5XRzP+PzYq - /zQpHv7cy8f+sH91/18qIP4nEAzpAAAARgAAAAAAAAAAyq2o6n+gw/+Fvun/icn0/zar+P8Yofv/GJ73 - /06Yyv80Nzf/SkI4/2FYTf9jWU3/Y1lM/2VZS/9mWkn/a1tE/29dQP9uXUL/bF1I/3RlT/9uYk7/Y1lN - /2VaTv9oXU7/l4Nu/4d6bf9kWUz/XFVM/1JMRf9VTkj/XldQ/2BZUf9nXFH/bGFS/21hUv9hWlH/YlhP - /2lcS/9rXEj/Ukc5/zsuH//czMj/s4N6/14pH/8nEAzpAAAARgAAAAAAAAAAzK2o6s62sv9dj7/+msvu - /oLH9f8wqfj+GKH6/hif9/9KoNv+QlBZ/0VAOv5lXlb+cGpj/nJrZf9wa2X+cWtk/nNtY/95b2H+fHBd - /nlvY/95cGL+eG9j/nhvY/98cmP+m4pz/qOTgf9tY1n+UVdZ/i9cfv9LSUX+bmlj/3BqZf54b2X+hXZh - /52MdP53bmb+dW5m/3pwZv5+cWD+YlhO/z8xIv7g0c7+sYF4/18rIf4nEAzpAAAARgAAAAAAAAAAza+p - 6ta7tv+XcW7+Q3yv/qHP8P+Cx/X+NKr4/hih+v8Xn/j+N6Xv/1R9mf5AREX+V1RP/nJuav98eXb+gX56 - /oB9ev+AfXr+gH57/oOAfP+Ggn3+i4N6/pKHc/+bim3+lYRp/oJ+d/9Qe5n+XKje/jiY3v9NU1f+g355 - /4aBff6HgXz+i4R7/5SJe/6MhHv+h4J8/4eCff6LhX7+cWtl/zwxJ/7f0Mz+s4N6/1woHv4oEAzpAAAA - RgAAAAAAAAAAzrCr6ta8t/+aaF7/Riwp/0aFtP+iz/D/i8r0/0Ww9/8Zofr/F6H6/xuf9v9FpOT/VH6c - /0pVXf9QUFD/ZWNg/3Vzb/9/e3j/hIB8/4WAev+BfHP/d3Fp/2dmY/9WbHj/Onyo/yCR4P8YmvH/H5/0 - /2O58v9PY3L/j4yK/5uYlf+dmZX/npqV/6Cblf+jnZf/oJuW/6CcmP+fm5f/g356/z80K//g0c3/tIZ9 - /10oHv8nEAzpAAAARgAAAAAAAAAAz7Gs6ta8t/+baF7+RCAU/mpkVf9kncn+lsfr/pvQ9P9lvPb+KKb4 - /xih+v4XoPr+F572/jGl8/9DnNr+SYm2/k58nP9QdpL+TnWQ/kt4mP9Afqn+NYjD/ieW4v8YmfD+F5v0 - /hef+P8Yovv+GKH6/hua8P9JcY/+nJmX/7Wyr/60sq7+tbGu/7Wxrv61sq/+t7Ow/7i0sf64tbH+mJOP - /0o+Mv7h09D+tIZ9/14pIP4nEAzpAAAARgAAAAAAAAAA0bWv6tnBvf+dbGP+RB8T/m9kUP/MyMD+hq/P - /niz4f+q1fP+isr1/1a29/4opvn+GKH6/hih+/8XoPr+F5/4/hed9v8XnPX+Fpz0/hec9f8Xnfb+F573 - /hig+f8Yofv+GKL8/h+l/P8hpPr+F531/hWS6f81d6j+paSj/8nHxv7JyMb+ysjG/8vJx/7Mycf+zcrH - /87LyP7Oy8j+pqOf/0o/NP7h08/+tYd+/14pH/4oEAzpAAAARgAAAAAAAAAA0rex6tnBvP+camH/Qx4T - /21iTf/Y0sf/5uLa/8LS3P9rqdr/jMDo/6nV9P+LyvX/ab72/0Ow+P8qp/n/HaP6/xii+/8Yovv/GKL8 - /xii/P8Zovz/HaT7/yio+/86rvr/Ubb5/2G69v9LrvH/GZHm/xKE2f9Rlsz/0dHR/9zc2//d3Nv/3dzb - /97d3P/e3dz/397c/+De3f/f3dv/paCb/05AL//i08//tIV8/10pIP8nEAzpAAAARgAAAAAAAAAA07iz - 6tvEwP+hcmj+QR0T/l1ROv/Nw7D+7eni/vHu6f/u7er+rszj/2mo2/5+uOT+otDx/p7R9P+Ny/T+fsX1 - /nDA9v9nvff+Y7z3/mW89/9qvvf+b7/2/nG/9P9uu/L+ZLTt/kuk5f8vkdv+U5/a/q7N5v/n6er+7Ovq - /+zr6v7s6+r+7Ovq/+zr6v7s7Ov+7ezr/+vq6f7a2NX+e3Jo/1A6IP7Zw77+rHlw/10pH/4nEAzpAAAA - RgAAAAAAAAAA1by36t3Hw/+8lY3+Rx4W/jIhEP9cU0L+g31x/oyHfv+NiH/+jId+/4mGf/5qe4X+QHKZ - /kuMv/9lp9r+ebfm/oS/6v+Iwu3+iMPt/oC/7P9vten+X6vk/kmd3f85jMv+NXms/k10kP97goP+j4qA - /pmTi/+WkYv+i4aB/4qGgf6IhYL+h4WD/4eFg/6HhYL+iIWD/4WCgP5ybWf+RTgm/2VENP63i4P+mltP - /14qIP4nEAzoAAAARQAAAAAAAAAA3cjE6eHOyv/WvLf/kWFY/0QbFP86GRH/PB4U/z0fFf8+HxX/PR4V - /zwfFv87HhX/Oh0U/zsgGv89Kir/OzhF/zdFXv80TW3/NU9w/zNPcP81SWb/OT5Q/z0xNf8+JB7/PB8V - /zsdE/86HBP/ORwT/zsdFf9AIxv/Oh4W/zYbE/82GhP/NRoT/zQaFP80GRT/MxkT/zMZE/80GBD/Rx4U - /307Lv+fZFn/kEw//1soHv8qEQ3kAQAANAAAAAAAAAAA7uTiz+vg3f/cxsH+1724/rmRif+cbGP+lWNZ - /pZlW/+UYVf+k2BW/5NfVf6TYFb+kV1T/pFcUv+PWlD+kFtR/o1YTv+NWE3+i1ZL/otVSv+KVEn+iFJH - /ohRRv+HT0X+hU1D/oVOQv+DS0D+gko+/oJKP/+BRzz+fkQ5/31DOP5+Qzj+fEI3/3k/NP55PjL+dzww - /3Y7L/52Oi7+gUA0/5NRRP6UUkX+i0c6/0keFv4pEQyzCwQDEAAAAAAAAAAA8+3sVfLq6Pzt4uD+49LO - /tzGwv/aw77+28XA/trCvf/Xvrn+1ru2/9W6tf7StrH+0rWv/tCzrf/Or6n+zKym/s2tp//KqKL+yKag - /seknv/Fopv+wp2W/sGbk/+/mJD+vpeP/ruRif+6kIf+uIyE/reKgf+0hn3+soN6/7B/df6ufXP+q3hu - /6l0af6ncWf+omle/6NqYP6fZFj+nmJW/5tdUP6PTD/+Zy4j/1AkHOwaCwg1GAkHAQAAAAAAAAAAAAAA - APXv7lnx6efa49LP+tzHwvrbxcH628S/+tjAvPrawr762cG9+te+ufrVvLf61bu2+tS6tPrUubT60rax - +tG0rvrPsKv6zrCq+s2vqfrMraf6za2o+sqpo/rJqKL6x6We+siln/rEoJn6xKCZ+sOel/rBnJT6v5iQ - +sCakvq9lIz6u5KJ+rqQiPq5job6uIyD+raIf/q0hn36s4R7+rB/dvqjcmj3jmBXwkspIzM2GhUBAAAA - AP4f/8H//wAA+AAAAAAHAADgAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAIAAAAAAAAAAwAAAAAAAAADAAAAAAAAAAMAAAAAAAAAAwAAA - AAAAAADAAAAAAAAAAMAAAAAAAAAAwAAAAAAAAADAAAAAAAAAAMAAAAAAAAAAwAAAAAAAAADAAAAAAAAA - AMAAAAAAAAAAwAAAAAAAAADgAAAAAAEAACgAAAAgAAAAQAAAAAEAIAAAAAAAgBAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwICGAHAgIfAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAACkeFD4bEwyJAQEATwMCAQ0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAwEACQAAADUCAABEKw4Org0EBIkAAABLAAAARgAAAEQAAABEAAAA - RAAAAEQAAABEAAAARwAAAF4DAgFRZ1A6vqaBYf+KZ031AQAAYAEFCVICCA6CAAAAZQAAAEsAAABEAAAA - RAAAAEQAAABEAAAAPAAAABAAAAAACwMDIAkDAw4hDgqgLBIN8CcQDPRTNy75Ty0v+y4WFfceDAn1KhEN - 9C4TDvQuEw70LhMO9C0SDfQ2JCH1ZWVl/EdFRPmgf2L9u5p5/4JiTP4mEAv1JT9f+DOEzv4mc6r8IhMV - 9i0SDfQiDgr0JA8L9CkRDPQhDgrpBgIBmQAAABQxDw+pLxUQkUsfF/9sNiv/a05I/7WOmP+ghp7/pJ+z - /4BbYP94T0j/pXBm/6ZxZv+kbmT/pG5j/4NsZ/+bm5v/hH14/8uliP/TsJH/dV9S/1RGQ/89bZ7/TpXh - /z6Jx/91RDz/h01B/4tmR/90Ujz/WC0g/2EoHf8qEQ30AQAAVUEWFmdbODLxfWph/1g+Pv92YG7/lKKu - /6iYtP+cg5v/oW2H/3FbUf+aiXz/oY+A/7Ofif+6pIv/mZaV/8HBwf+kkIX/1qeY/9Gjkf9+dXD/hYWG - /1Gg4P9msvr/RX6o/2FZWP9xW0//sJBw/6uLa/+YfG//gUAz/0UcFP4IAwJ0MBYXQqmLlv+ec33/kKu7 - /044Nv97pcH/vK3N/76xzP+qlKT/gV10/4pfd/9yYWP/MhwO/zwrDv+2trb/z8/P/5qFff/Ou7r/vJCK - /6urq/+EnKz/bND2/3PQ+/9Re5P/i4uL/5J+bv/PrYv/wJt8/1tTTf9dQDr/PxkT/wkDAnVlREqooo+t - /7iowP+yz/P/akJU/2gzRf+kqpX/zMjC/8Cr0f+9pND/s5fL/6t6n/+eipL/WUc6/8HBwf/Ly8v/alQt - /450Qv+inpr/zs7O/4CosP+d0tX/dNrn/4iWnv+ysrL/q4l1/9eulv+riHP/fn5+/4SDg/80FhH/CQQD - dYRgbr+reqT/wanQ/7Kxnv98bnL/fkZt/25+gf9ri6f/V4Ws/0+EsP9Pg6//Unii/15wkP9QVmL/c3Ny - /4uAbf+PZh3/i2gp/729vf/Pz8//XVRG/2FYT/9mcnL/y8zM/7i2tf++kor/0J2W/5yAdv+tra3/g3x6 - /0IbFP8JAwJ1VjA3QaBvivbEpMX/q6eQ/2aWq/8oiNL/HJzy/xee9v8YoPn/F6D6/xeg+f8XoPn/F5/4 - /x+h9v85pu7/SI66/1hqbP82Lhz/gX9+/5GQjv80Kx3/LB8N/4iHhf/Q0ND/mZiX/2RgWf+Oioj/uKyq - /8vLy/94Y1//SB0V/wkDAnUrERI/mHJ49sK72P87jtP/Fpny/xih+v8epfz/NKz6/0my+P9XtvX/X7j1 - /1239f9StPb/Qa/3/yim+f8Yofr/HqL4/1aq4/8OHir/AwMD/wkHBv8RDQn/Xlxc/7+/v/9gXlz/GRML - /zw4Nf/Ozs7/zc3N/3FQSf9LHhb/CQQCdWlERLvVy+H/N5HZ/xec9P8ao/z/M6z7/06w8/9Np+f/UpXF - /019o/9Hdpj/VoGf/3iju/97tNz/kMjv/4DF9P85qfX/G5vy/ytLX/8jGQv/IBgN/yUbDv8rIA//KR8Q - /zElEf8xJRP/TUY7/8/Pz/+1tLT/kWVc/0wfF/8JBAN1nX+C+WWZy/8WmPD/GaP8/ymn+f8omur/TIWl - /5B+VP+Xby7/kWkp/5xzLv+kfDn/pHk3/6N+Qv+If1//hJui/3Ot2P8ikOD/LWOG/4lmLf+SbDP/lG41 - /4pnM/+JaTv/f18u/2lKFv9hSBj/T0Ag/2lVQP+qenH/Sx4W/wkEAnWNhpL2GY7i/xig+v8Yofr/GZXq - /26Gkv+4lGz/yaNz/8unev/NqX3/zqt+/82thf/PrIH/xKBu/8umdP+2lGn/noZj/3GMmv9MfaD/wJxv - /5ecev9ikoD/bJKC/6WFWf+6mln/0bVW/+rLYv/pymL/y7Nd/4RpTf9EHBT/CQQCdTNhjsMYmO//GaP8 - /xWb8/9Ohab/qIlg/6OCWv+yj1X/hoJE/3iGQv90l1D/ZphI/2ORSf9xbD//jIle/yO+wf88z9T/i3pM - /6uCQv+0jFD/ap58/yjc4/8L5e3/bYlp/9i5Tf/szF//6tJ9/+rXlP/u1Hn/6Mlg/1E8I/8JBAN1JYTN - zimk9f8Yovv/F5Dj/4p+a//KuM3/0cLT/3x/NP9D3Un/Q+9L/2DuZv+A7YT/Xu1k/1HmVv9ZgU3/NNzj - /wHi6/9wbT7/jmgo/2VVJP+DYyX/etnW/xrp8P86taL/28Nn/8iqRf+LaCL/a04Y/8Ozev/wz1//oIg+ - /wgDAnUhjt7pNqv4/xih+/8edrP/qJBz/97Q4//fy+f/nJBk/2/kcv9D8Er/c7FO/6enXv+w2Zj/Vu9c - /1C8TP9d1dX/BuLr/3aLbP96qor/KNjf/3WEcf+FuKL/U+vx/xPX2//CtHP/sJJI/6t8O/+BYSP/zK5K - /+/MWv+rkT3/CAMCdSmR3/E+rvn/GKH6/x5klP9/ZTf/0sPH/+DN6P9yXED/c8ls/0btTf9Lcy3/Vj8X - /1KAMf9W7Vz/O7M7/0ukoP8e4+r/LW9g/zh7Z/8X3+f/Jra4/0NQRf9o5+z/AuTt/0BcTP96Z0D/sZVC - /+bFVv/sy1z/38BX/2xMI/8JBAN1NZfg6key+P8Yofv/HGWZ/1FEMP+fkpL/4tHp/3Fmbv9RkFD/We5f - /0XQTP82bzj/Nrc9/0LtSv8dZyL/F1lc/z7k6/8QiIz/KoGB/x/g6P8D4uv/J19f/1LAw/8X6fH/FXV3 - /4NyMf/px1T/7s9m/9fBef+9lXX/TSEZ/wkEA3VAm+PMWLf2/xii+/8febj/VEUr/3toU//j1en/opOi - /0FgJv907Hj/TvFV/3/ug/9g7Wb/P95H/yImGf8oODL/T9/l/xHGy/8toJ3/G+Ts/yTm7v8K09r/Hamt - /xnu9/8PqKz/p5ZQ/+nIV/+SgDr/jH10/7ychf96ZT3/CAUDgjyY4pZvvfP/HqX8/yCX5/9COyz/VkIg - /9fK2P/OvNT/ST8Y/3jfev9B6Uj/SF0m/5m8hf9z7nj/Ub1W/zEvGv9avrz/Debv/wjf5v8E5/D/XsK+ - /3nr7/8N5+//Ae/4/wrR2P95cET/5s97/8WrTf+OfUj/2LtX/+PCUv9rYTC3QZzlSWy16/85rfr/F573 - /ztZaP9QORD/qZqT/9TF2f9pV0f/baxe/1HrWP9Ckz3/Oi8Q/3DLa/9F70z/RYw1/0yCbf9d6u//Auv0 - /wDg6f9keF3/hqWT/6nt8P9V6/H/Bdbe/zQxIv+qnXD/5tWU/+fRgv/lznv/x69Z/zszFIVPo+gGVaTi - 3mi99v8Yovv/MJDQ/z4vEv9eQhP/e2tb/2RXR/9KZSb/f+mD/0bpTf9L2FD/Vuhb/1bmXP9Fly//WlAs - /4TY2P9q4uj/F62u/0E0Jf9KOyr/P11W/1GXmP8ffn//Lygf/zkqGP9IOhr/h3hX/8Shgv9RJhr/CQQD - dQAAAABrm8ifhcLu/zuu+f8YoPj/Pm6L/08+If/FuMn/xbXL/19NJf9+sW3/hMF4/36zbP92pF//ZIpB - /2NTJf9pUCb/fXZU/19kUP9TSDT/V0g3/11OPP9HPjT/OTIt/zkyK/9DNyr/Szso/zswIf9oXFT/wJqS - /08iGv8KBAN1AAAAAL6qq5xyptP/h8j0/yWl+v8gofb/QGV8/1ZNRv9zaF//YlVE/2RWQv9nVz//a1k6 - /2xbQP94ZUj/ZlhD/2VYRP+Kdl3/emxc/1xSR/9SS0T/X1ZN/2NaUP9kWU7/YVdM/1xTSv9mV0X/U0g6 - /21fVf/DnZb/TyIa/wkEAnUAAAAAzK6onLytsf9wpND/fcX1/yKk+f8govf/Rn2i/0lIRf9pZF3/dW9p - /3Rvav91cGj/e3Jl/3tzaf99dGn/gndm/5aGb/+OgXL/TmVz/y5bfP9sZmH/d3Fr/4N4aP+Qg3H/eXJs - /351a/9uZVr/cmVa/8Odlv9PIhr/CgQDdQAAAADOsKucz7Gs/1A6P/91q9T/hMf1/yyo+P8YoPn/OZzf - /0xwif9WWl3/bGpn/316d/+EgX3/hYF8/4B6c/91c2z/W3qJ/zKKx/87qfP/VprK/3x5dv+Wko//mJSP - /56Xj/+alZD/mpWR/4eCfv9yZl7/xKCZ/04iGf8KBAN1AAAAANCzrZzSta//VCYa/3Z7df9+s9z/mM7z - /1C09/8dovr/F5/5/yyj8v83k9H/PIW3/zyBsP84hLj/LY3P/x+Z7P8Xnfb/GKH6/xih+v8hlOP/hIWF - /7q3tf+6t7T/u7i1/725tv++urf/p6Of/3puZf/FoZr/TyIa/wkEA3UAAAAA0raxnNK2sP9TJhr/jYNx - /9vb1v+Tvdz/i8Hp/4/M9f9Vtvf/MKr5/x2j+v8Yofv/GKH6/xih+/8ao/v/Jaf7/zqu+v9Ns/f/Iprt - /xWH2v+qtb7/19fW/9jX1v/Z2Nf/29nX/9za2P+3tLD/fW9k/8Whmv9PIhr/CgQDdQAAAADUubSc1765 - /1YpH/9sX0n/0szC/9/c1v/AzNP/ga3P/3q04f+Qx+//kMz0/33E9f9xwPX/cL/1/3O/9P9vu/D/VKnn - /0ea1/9qo8z/ws/Y/9vZ1//a2df/2tnY/9rZ2P/a2dj/1tTT/4iAdv99ZFL/toqB/08iGv8JBAN1AAAA - ANvGwZzdx8P/lWtj/zobEf9CKyH/SDIo/0gyKP9HMij/RDIt/zU7S/88U3D/SWqN/1B0mf9IcJb/PmCD - /zNIYv89Oj//RzMp/0cyJ/9MNy7/STQs/0MuKP9CLij/QS4p/0AtKf8+Kyb/PSEX/4ZMQP+ZWU3/TiIa - /wsEA2oAAAAA7uTieerd2//aw77/vZiQ/6yDe/+rgHj/qHx0/6d6cf+meXD/o3Vs/6Jzaf+gcWj/n29m - /5xsYv+bamH/mWZc/5dkWv+VYVb/k15U/5FcUf+OV0z/jFVK/4tSR/+HTkP/hUo//4NHO/+HSDz/lVNG - /4hFOP9EHBXwDgUEJAAAAAD07ewI8+3sp+nb2PjeycX83MbC/NvEwPzZwb382MC7/NW7tvzVurX807ex - /NG0rvzNr6j8za6o/MuqpPzIpqD8x6Sd/MWhmvzBnJT8wJqS/L2Vjfy7kor8uI2E/LWHfvyzhHv8sH92 - /K58c/yncmj8hlNJ4UQjHUsAAAAA+f+H/8AAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAACAAAAAgAAA - AIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAAEoAAAAEAAAACAAAAABACAAAAAAAEAEAAAAAAAAAAAA - AAAAAAAAAAAAGxsbYyoqKsgrKyvKKysryisrK8orKyvKKioqyioqKsoqKirKKioqyikpKcopKSnKKCgo - yigoKMogICDCAwMDQISEhPajnpX/sqmY/6+nl/+tpJX/qqKT/6qhkv+poJD/p56O/6Kai/+dloj/mpOF - /5iQgv+hmYr/kpKR/x4eHrGTk5P9d10v/35YEv9nTx3/U084/1BOOf9VRiT/X0IP/3FOEP92UhD/eVQR - /31XEf9+VxL/aEoU/6KZiv8lJSW4l5eX/XBpVf9ZlbL/ULL0/2C7+P9mvvf/Ybv3/1ao3v9fg4//SjkY - /zYnDv8sIA7/KR8Q/x0XDv+GhYL/JSUluJeeo/1Fndn/Vrj5/2ievf9RZ3L/cXdv/5uej/+Xsrv/bLjs - /x80Qv8ZEwv/HxcM/yIaD/8SDgr/hYSD/yYmJrh0pcn9TLT5/26ctP+gfUf/knhA/5GFSf+QfUT/goVY - /2qKdv+ShGf/XJV+/0iId/+4nEP/4MZq/8KtYf8nJiG4ZK3g/Uqv8v+nlHX/q6ug/0zkUf9nylD/X+Ne - /023jf8xsaT/e5l1/3eZe/8b1tn/wKlR/4VmLv/avWD/XVInuG+15v1KpuP/o39G/728uv9ZzFX/dqRS - /2LRU/9Yp17/LcHA/0W7r/8/qqL/K9zh/4eUav/VtU//2sJt/zQxJbiHut/9T7Lz/zMqHP+joZ7/Y6hk - /1DPVf9d3WH/IEMk/yrN1P8VzdP/Mtng/xHY3/9CmYT/0rdY/6+jfP9zZzbPnrvR/Wm/+P9AXGX/c2JH - /3aGYf9L1E//SaZE/0HCQf9UnZH/G93j/1FcRv9QtrP/JnRw/39ySv/KuXv/XlYzv7S5vP2Bttv/Uqvm - /05OQv+Ge2b/Ynk5/2p7O/9jXib/cFw6/05HMP9SQS7/LSMa/zMnHP8yJRb/npuY/ycnJ7i7u7v9W2Nl - /4vE6v9Vrej/Tmdx/1ZJMf9nVTn/X1A5/21mV/9Kc4z/UWd0/2BWSf9aUEb/Vkk5/5+cmf8nJye4v7+/ - /XFnVv+dn5n/mMLg/3bE9/9Ys+//TJ/W/0yj3f9UtfX/XLn2/1aJrf+WkIj/lo+J/4R+eP+in5v/Jycn - uMLCwv16c2b/29TJ/9fTyv+9ztn/sNDn/5/L6/+YyOr/ncfl/7DK3v/Lzc7/0M7N/9LQzf+2sq7/pqKe - /ycnJ7jS0tL9XFdP/4eDfP+JhYD/hYOA/4WDgP+Fg3//hoR//4iFf/+KhoH/iYaD/4SCgP+DgYD/aGNd - /5eVkv8nJye07+/vstTU1P3Gxsb9w8PD/b+/v/27u7v9uLi4/bS0tP2wsLD9q6ur/aenp/2ioqL9nZ2d - /Zqamv2Li4v0KSkpTgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAA= - - - \ No newline at end of file diff --git a/MainWindow.vb b/MainWindow.vb deleted file mode 100644 index ded9fa925..000000000 --- a/MainWindow.vb +++ /dev/null @@ -1,5017 +0,0 @@ -Imports System.Linq -Imports iBMSC.Editor - - -Public Class MainWindow - - - 'Public Structure MARGINS - ' Public Left As Integer - ' Public Right As Integer - ' Public Top As Integer - ' Public Bottom As Integer - 'End Structure - - ' _ - 'Public Shared Function DwmIsCompositionEnabled(ByRef en As Integer) As Integer - 'End Function - ' _ - 'Public Shared Function DwmExtendFrameIntoClientArea(ByVal hwnd As IntPtr, ByRef margin As MARGINS) As Integer - 'End Function - Public Declare Function SendMessage Lib "user32.dll" Alias "SendMessageA" (ByVal hwnd As IntPtr, ByVal wMsg As Integer, ByVal wParam As Integer, ByVal lParam As Integer) As Integer - Public Declare Function ReleaseCapture Lib "user32.dll" Alias "ReleaseCapture" () As Integer - - 'Private Declare Auto Function GetWindowLong Lib "user32" (ByVal hWnd As IntPtr, ByVal nIndex As Integer) As Integer - 'Private Declare Auto Function SetWindowLong Lib "user32" (ByVal hWnd As IntPtr, ByVal nIndex As Integer, ByVal dwNewLong As Integer) As Integer - 'Private Declare Function SetWindowPos Lib "user32.dll" (ByVal hWnd As IntPtr, ByVal hWndInsertAfter As IntPtr, ByVal x As Integer, ByVal y As Integer, ByVal cx As Integer, ByVal cy As Integer, ByVal wFlags As Integer) As Integer - ' _ - 'Private Shared Function SetWindowText(ByVal hwnd As IntPtr, ByVal lpString As String) As Boolean - 'End Function - - 'Private Const GWL_STYLE As Integer = -16 - 'Private Const WS_CAPTION As Integer = &HC00000 - 'Private Const SWP_NOSIZE As Integer = &H1 - 'Private Const SWP_NOMOVE As Integer = &H2 - 'Private Const SWP_NOZORDER As Integer = &H4 - 'Private Const SWP_NOACTIVATE As Integer = &H10 - 'Private Const SWP_FRAMECHANGED As Integer = &H20 - 'Private Const SWP_REFRESH As Integer = SWP_NOZORDER Or SWP_NOSIZE Or SWP_NOMOVE Or SWP_NOACTIVATE Or SWP_FRAMECHANGED - - - Dim MeasureLength(999) As Double - Dim MeasureBottom(999) As Double - - Public Function MeasureUpper(idx As Integer) As Double - Return MeasureBottom(idx) + MeasureLength(idx) - End Function - - - Dim Notes() As Note = {New Note(niBPM, -1, 1200000, 0, False)} - Dim mColumn(999) As Integer '0 = no column, 1 = 1 column, etc. - Dim GreatestVPosition As Double '+ 2000 = -VS.Minimum - - Dim VSValue As Integer = 0 'Store value before ValueChange event - Dim HSValue As Integer = 0 'Store value before ValueChange event - - 'Dim SortingMethod As Integer = 1 - Dim MiddleButtonMoveMethod As Integer = 0 - Dim TextEncoding As System.Text.Encoding = System.Text.Encoding.UTF8 - Dim DispLang As String = "" 'Display Language - Dim Recent() As String = {"", "", "", "", ""} - Dim NTInput As Boolean = True - Dim ShowFileName As Boolean = False - - Dim BeepWhileSaved As Boolean = True - Dim BPMx1296 As Boolean = False - Dim STOPx1296 As Boolean = False - - Dim IsInitializing As Boolean = True - Dim FirstMouseEnter As Boolean = True - - Dim WAVMultiSelect As Boolean = True - Dim WAVChangeLabel As Boolean = True - Dim BeatChangeMode As Integer = 0 - - 'Dim FloatTolerance As Double = 0.0001R - Dim BMSGridLimit As Double = 1.0R - - Dim LnObj As Integer = 0 '0 for none, 1-1295 for 01-ZZ - - 'IO - Dim FileName As String = "Untitled.bms" - Dim RandomFileName As String = "___TempRandom" & GenerateRandomString(6, False) & ".bmsc" - Public RandomFile(2) As String - 'Dim TitlePath As New Drawing2D.GraphicsPath - Dim InitPath As String = "" - Dim IsSaved As Boolean = True - - 'Variables for Drag/Drop - Dim DDFileName() As String = {} - Dim SupportedFileExtension() As String = {".bms", ".bme", ".bml", ".pms", ".txt", ".sm", ".ibmsc"} - Dim SupportedAudioExtension() As String = {".wav", ".mp3", ".ogg"} - - 'Variables for theme - 'Dim SaveTheme As Boolean = True - - 'Variables for undo/redo - Dim sUndo(99) As UndoRedo.LinkedURCmd - Dim sRedo(99) As UndoRedo.LinkedURCmd - Dim sI As Integer = 0 - - 'Variables for select tool - Dim DisableVerticalMove As Boolean = False - Dim KMouseOver As Integer = -1 'Mouse is on which note (for drawing green outline) - Dim LastMouseDownLocation As PointF = New Point(-1, -1) 'Mouse is clicked on which point (location for display) (for selection box) - Dim pMouseMove As PointF = New Point(-1, -1) 'Mouse is moved to which point (location for display) (for selection box) - 'Dim KMouseDown As Integer = -1 'Mouse is clicked on which note (for moving) - Dim deltaVPosition As Double = 0 'difference between mouse and VPosition of K - Dim bAdjustLength As Boolean 'If adjusting note length instead of moving it - Dim bAdjustUpper As Boolean 'true = Adjusting upper end, false = adjusting lower end - Dim bAdjustSingle As Boolean 'true if there is only one note to be adjusted - Dim tempY As Integer - Dim tempV As Integer - Dim tempX As Integer - Dim tempH As Integer - Dim MiddleButtonLocation As New Point(0, 0) - Dim MiddleButtonClicked As Boolean = False - Dim MouseMoveStatus As Point = New Point(0, 0) 'mouse is moved to which point (For Status Panel) - 'Dim uCol As Integer 'temp variables for undo, original enabled columnindex - 'Dim uVPos As Double 'temp variables for undo, original vposition - 'Dim uPairWithI As Double 'temp variables for undo, original note length - Dim uAdded As Boolean 'temp variables for undo, if undo command is added - 'Dim uNote As Note 'temp variables for undo, original note - Dim SelectedNotes(-1) As Note 'temp notes for undo - Dim ctrlPressed As Boolean = False 'Indicates if the CTRL key is pressed while mousedown - Dim DuplicatedSelectedNotes As Boolean = False 'Indicates if duplicate notes of select/unselect note - - 'Variables for write tool - Dim ShouldDrawTempNote As Boolean = False - Dim SelectedColumn As Integer = -1 - Dim TempVPosition As Double = -1.0# - Dim TempLength As Double = 0.0# - - 'Variables for post effects tool - Dim vSelStart As Double = 192.0# - Dim vSelLength As Double = 0.0# - Dim vSelHalf As Double = 0.0# - Dim vSelMouseOverLine As Integer = 0 '0 = nothing, 1 = start, 2 = half, 3 = end - Dim vSelAdjust As Boolean = False - Dim vSelK() As Note = {} - Dim vSelPStart As Double = 192.0# - Dim vSelPLength As Double = 0.0# - Dim vSelPHalf As Double = 0.0# - - 'Variables for Full-Screen Mode - Dim isFullScreen As Boolean = False - Dim previousWindowState As FormWindowState = FormWindowState.Normal - Dim previousWindowPosition As New Rectangle(0, 0, 0, 0) - - 'Variables misc - Dim menuVPosition As Double = 0.0# - Dim tempResize As Integer = 0 - - '----AutoSave Options - Dim PreviousAutoSavedFileName As String = "" - Dim AutoSaveInterval As Integer = 120000 - - '----ErrorCheck Options - Dim ErrorCheck As Boolean = True - - '----Header Options - Dim hWAV(1295) As String - Dim hBPM(1295) As Long 'x10000 - Dim hSTOP(1295) As Long - Dim hSCROLL(1295) As Long - - '----Grid Options - Dim gSnap As Boolean = True - Dim gShowGrid As Boolean = True 'Grid - Dim gShowSubGrid As Boolean = True 'Sub - Dim gShowBG As Boolean = True 'BG Color - Dim gShowMeasureNumber As Boolean = True 'Measure Label - Dim gShowVerticalLine As Boolean = True 'Vertical - Dim gShowMeasureBar As Boolean = True 'Measure Barline - Dim gShowC As Boolean = True 'Column Caption - Dim gDivide As Integer = 16 - Dim gSub As Integer = 4 - Dim gSlash As Integer = 192 - Dim gxHeight As Single = 1.0! - Dim gxWidth As Single = 1.0! - Dim gWheel As Integer = 96 - Dim gPgUpDn As Integer = 384 - - Dim gDisplayBGAColumn As Boolean = True - Dim gSCROLL As Boolean = True - Dim gSTOP As Boolean = True - Dim gBPM As Boolean = True - 'Dim gA8 As Boolean = False - Dim iPlayer As Integer = 0 - Dim gColumns As Integer = 46 - - - '----Visual Options - Dim vo As New visualSettings() - - Public Sub setVO(ByVal xvo As visualSettings) - vo = xvo - End Sub - - '----Preview Options - Structure PlayerArguments - Public Path As String - Public aBegin As String - Public aHere As String - Public aStop As String - Public Sub New(ByVal xPath As String, ByVal xBegin As String, ByVal xHere As String, ByVal xStop As String) - Path = xPath - aBegin = xBegin - aHere = xHere - aStop = xStop - End Sub - End Structure - - Public pArgs() As PlayerArguments = {New PlayerArguments("\mBMplay.exe", - """""", - "-s """"", - "-t"), - New PlayerArguments("\uBMplay.exe", - "-P -N0 """"", - "-P -N """"", - "-S"), - New PlayerArguments("\o2play.exe", - "-P -N0 """"", - "-P -N """"", - "-S")} - Public CurrentPlayer As Integer = 0 - Dim PreviewOnClick As Boolean = True - Dim PreviewErrorCheck As Boolean = False - Dim ClickStopPreview As Boolean = True - Dim pTempFileNames() As String = {} - - '----Split Panel Options - Dim PanelWidth() As Single = {0, 100, 0} - Dim PanelHScroll() As Integer = {0, 0, 0} - Dim PanelVScroll() As Double = {0, 0, 0} - Dim spLock() As Boolean = {False, False, False} - Dim spDiff() As Integer = {0, 0, 0} - Dim PanelFocus As Integer = 1 '0 = Left, 1 = Middle, 2 = Right - Dim spMouseOver As Integer = 1 - - Dim AutoFocusMouseEnter As Boolean = False - Dim FirstClickDisabled As Boolean = True - Dim tempFirstMouseDown As Boolean = False - - Dim spMain() As Panel = {} - - '----Find Delete Replace Options - Dim fdriMesL As Integer - Dim fdriMesU As Integer - Dim fdriLblL As Integer - Dim fdriLblU As Integer - Dim fdriValL As Integer - Dim fdriValU As Integer - Dim fdriCol() As Integer - - - Public Sub New() - InitializeComponent() - Audio.Initialize() - End Sub - - ''' - ''' - ''' - ''' Original horizontal position. - ''' HS.Value - - - Private Function HorizontalPositiontoDisplay(ByVal xHPosition As Integer, ByVal xHSVal As Long) As Integer - Return CInt(xHPosition * gxWidth - xHSVal * gxWidth) - End Function - - ''' - ''' - ''' - ''' Original vertical position. - ''' VS.Value - ''' Height of the panel. (DisplayRectangle, but not ClipRectangle) - - - Private Function NoteRowToPanelHeight(ByVal xVPosition As Double, ByVal xVSVal As Long, ByVal xTHeight As Integer) As Integer - Return xTHeight - CInt((xVPosition + xVSVal) * gxHeight) - 1 - End Function - - Public Function MeasureAtDisplacement(ByVal xVPos As Double) As Integer - 'Return Math.Floor((xVPos + FloatTolerance) / 192) - 'Return Math.Floor(xVPos / 192) - Dim xI1 As Integer - For xI1 = 1 To 999 - If xVPos < MeasureBottom(xI1) Then Exit For - Next - Return xI1 - 1 - End Function - - Private Function GetMaxVPosition() As Double - Return MeasureUpper(999) - End Function - - Private Function SnapToGrid(ByVal xVPos As Double) As Double - Dim xOffset As Double = MeasureBottom(MeasureAtDisplacement(xVPos)) - Dim xRatio As Double = 192.0R / gDivide - Return Math.Floor((xVPos - xOffset) / xRatio) * xRatio + xOffset - End Function - - Private Sub CalculateGreatestVPosition() - 'If K Is Nothing Then Exit Sub - Dim xI1 As Integer - GreatestVPosition = 0 - - If NTInput Then - For xI1 = UBound(Notes) To 0 Step -1 - If Notes(xI1).VPosition + Notes(xI1).Length > GreatestVPosition Then GreatestVPosition = Notes(xI1).VPosition + Notes(xI1).Length - Next - Else - For xI1 = UBound(Notes) To 0 Step -1 - If Notes(xI1).VPosition > GreatestVPosition Then GreatestVPosition = Notes(xI1).VPosition - Next - End If - - Dim xI2 As Integer = -CInt(IIf(GreatestVPosition + 2000 > GetMaxVPosition(), GetMaxVPosition, GreatestVPosition + 2000)) - MainPanelScroll.Minimum = xI2 - LeftPanelScroll.Minimum = xI2 - RightPanelScroll.Minimum = xI2 - End Sub - - - Private Sub SortByVPositionInsertion() 'Insertion Sort - If UBound(Notes) <= 0 Then Exit Sub - Dim xNote As Note - Dim xI1 As Integer - Dim xI2 As Integer - For xI1 = 2 To UBound(Notes) - xNote = Notes(xI1) - For xI2 = xI1 - 1 To 1 Step -1 - If Notes(xI2).VPosition > xNote.VPosition Then - Notes(xI2 + 1) = Notes(xI2) - ' If KMouseDown = xI2 Then KMouseDown += 1 - If xI2 = 1 Then - Notes(xI2) = xNote - ' If KMouseDown = xI1 Then KMouseDown = xI2 - Exit For - End If - Else - Notes(xI2 + 1) = xNote - ' If KMouseDown = xI1 Then KMouseDown = xI2 + 1 - Exit For - End If - Next - Next - - End Sub - - Private Sub SortByVPositionQuick(ByVal xMin As Integer, ByVal xMax As Integer) 'Quick Sort - Dim xNote As Note - Dim iHi As Integer - Dim iLo As Integer - Dim xI1 As Integer - - ' If min >= max, the list contains 0 or 1 items so it is sorted. - If xMin >= xMax Then Exit Sub - - ' Pick the dividing value. - xI1 = CInt((xMax - xMin) / 2) + xMin - xNote = Notes(xI1) - - ' Swap it to the front. - Notes(xI1) = Notes(xMin) - - iLo = xMin - iHi = xMax - Do - ' Look down from hi for a value < med_value. - Do While Notes(iHi).VPosition >= xNote.VPosition - iHi = iHi - 1 - If iHi <= iLo Then Exit Do - Loop - If iHi <= iLo Then - Notes(iLo) = xNote - Exit Do - End If - - ' Swap the lo and hi values. - Notes(iLo) = Notes(iHi) - - ' Look up from lo for a value >= med_value. - iLo = iLo + 1 - Do While Notes(iLo).VPosition < xNote.VPosition - iLo = iLo + 1 - If iLo >= iHi Then Exit Do - Loop - If iLo >= iHi Then - iLo = iHi - Notes(iHi) = xNote - Exit Do - End If - - ' Swap the lo and hi values. - Notes(iHi) = Notes(iLo) - Loop - - ' Sort the two sublists. - SortByVPositionQuick(xMin, iLo - 1) - SortByVPositionQuick(iLo + 1, xMax) - End Sub - - Private Sub SortByVPositionQuick3(ByVal xMin As Integer, ByVal xMax As Integer) - Dim xxMin As Integer - Dim xxMax As Integer - Dim xxMid As Integer - Dim xNote As Note - Dim xNoteMid As Note - Dim xI1 As Integer - Dim xI2 As Integer - Dim xI3 As Integer - - 'If xMax = 0 Then - ' xMin = LBound(K1) - ' xMax = UBound(K1) - 'End If - xxMin = xMin - xxMax = xMax - xxMid = xMax - xMin + 1 - xI1 = CInt(Int(xxMid * Rnd())) + xMin - xI2 = CInt(Int(xxMid * Rnd())) + xMin - xI3 = CInt(Int(xxMid * Rnd())) + xMin - If Notes(xI1).VPosition <= Notes(xI2).VPosition And Notes(xI2).VPosition <= Notes(xI3).VPosition Then - xxMid = xI2 - Else - If Notes(xI2).VPosition <= Notes(xI1).VPosition And Notes(xI1).VPosition <= Notes(xI3).VPosition Then - xxMid = xI1 - Else - xxMid = xI3 - End If - End If - xNoteMid = Notes(xxMid) - Do - Do While Notes(xxMin).VPosition < xNoteMid.VPosition And xxMin < xMax - xxMin = xxMin + 1 - Loop - Do While xNoteMid.VPosition < Notes(xxMax).VPosition And xxMax > xMin - xxMax = xxMax - 1 - Loop - If xxMin <= xxMax Then - xNote = Notes(xxMin) - Notes(xxMin) = Notes(xxMax) - Notes(xxMax) = xNote - xxMin = xxMin + 1 - xxMax = xxMax - 1 - End If - Loop Until xxMin > xxMax - If xxMax - xMin < xMax - xxMin Then - If xMin < xxMax Then SortByVPositionQuick3(xMin, xxMax) - If xxMin < xMax Then SortByVPositionQuick3(xxMin, xMax) - Else - If xxMin < xMax Then SortByVPositionQuick3(xxMin, xMax) - If xMin < xxMax Then SortByVPositionQuick3(xMin, xxMax) - End If - End Sub - - - Private Sub UpdateMeasureBottom() - MeasureBottom(0) = 0.0# - For xI1 As Integer = 0 To 998 - MeasureBottom(xI1 + 1) = MeasureBottom(xI1) + MeasureLength(xI1) - Next - End Sub - - Private Function PathIsValid(ByVal sPath As String) As Boolean - Return File.Exists(sPath) Or Directory.Exists(sPath) - End Function - - Public Function PrevCodeToReal(ByVal InitStr As String) As String - Dim xFileName As String = IIf(Not PathIsValid(FileName), - IIf(InitPath = "", My.Application.Info.DirectoryPath, InitPath), - ExcludeFileName(FileName)) _ - & "\___TempBMS.bmsc" - Dim xMeasure As Integer = MeasureAtDisplacement(Math.Abs(PanelVScroll(PanelFocus))) - Dim xS1 As String = Replace(InitStr, "", My.Application.Info.DirectoryPath) - Dim xS2 As String = Replace(xS1, "", xMeasure) - Dim xS3 As String = Replace(xS2, "", xFileName) - Return xS3 - End Function - - Private Sub SetFileName(ByVal xFileName As String) - FileName = xFileName.Trim - InitPath = ExcludeFileName(FileName) - SetIsSaved(IsSaved) - End Sub - - Private Sub SetIsSaved(ByVal isSaved As Boolean) - 'pttl.Refresh() - 'pIsSaved.Visible = Not xBool - Dim xVersion As String = My.Application.Info.Version.Major & "." & My.Application.Info.Version.Minor & - IIf(My.Application.Info.Version.Build = 0, "", "." & My.Application.Info.Version.Build) - Text = IIf(isSaved, "", "*") & GetFileName(FileName) & " - " & My.Application.Info.Title & " " & xVersion - Me.IsSaved = isSaved - End Sub - - Private Sub PreviewNote(ByVal xFileLocation As String, ByVal bStop As Boolean) - If bStop Then - Audio.StopPlaying() - End If - Audio.Play(xFileLocation) - End Sub - - Private Sub AddNote(note As Note, - Optional ByVal xSelected As Boolean = False, - Optional ByVal OverWrite As Boolean = True, - Optional ByVal SortAndUpdatePairing As Boolean = True) - - If note.VPosition < 0 Or note.VPosition >= GetMaxVPosition() Then Exit Sub - - Dim xI1 As Integer = 1 - - If OverWrite Then - Do While xI1 <= UBound(Notes) - If Notes(xI1).VPosition = note.VPosition And - Notes(xI1).ColumnIndex = note.ColumnIndex Then - RemoveNote(xI1) - Else - xI1 += 1 - End If - Loop - End If - - ReDim Preserve Notes(UBound(Notes) + 1) - note.Selected = note.Selected And nEnabled(note.ColumnIndex) - Notes(UBound(Notes)) = note - - If SortAndUpdatePairing Then SortByVPositionInsertion() : UpdatePairing() - CalculateTotalPlayableNotes() - End Sub - - Private Sub RemoveNote(ByVal I As Integer, Optional ByVal SortAndUpdatePairing As Boolean = True) - KMouseOver = -1 - Dim xI2 As Integer - - If TBWavIncrease.Checked Then - If Notes(I).Value = LWAV.SelectedIndex * 10000 Then - DecreaseCurrentWav() - End If - End If - - For xI2 = I + 1 To UBound(Notes) - Notes(xI2 - 1) = Notes(xI2) - Next - ReDim Preserve Notes(UBound(Notes) - 1) - If SortAndUpdatePairing Then SortByVPositionInsertion() : UpdatePairing() - - End Sub - - Private Sub AddNotesFromClipboard(Optional ByVal xSelected As Boolean = True, Optional ByVal SortAndUpdatePairing As Boolean = True) - Dim xStrLine() As String = Split(Clipboard.GetText, vbCrLf) - - Dim xI1 As Integer - For xI1 = 0 To UBound(Notes) - Notes(xI1).Selected = False - Next - - Dim xVS As Long = PanelVScroll(PanelFocus) - Dim xTempVP As Double - Dim xKbu() As Note = Notes - - If xStrLine(0) = "iBMSC Clipboard Data" Then - If NTInput Then ReDim Preserve Notes(0) - - 'paste - Dim xStrSub() As String - For xI1 = 1 To UBound(xStrLine) - If xStrLine(xI1).Trim = "" Then Continue For - xStrSub = Split(xStrLine(xI1), " ") - xTempVP = Val(xStrSub(1)) + MeasureBottom(MeasureAtDisplacement(-xVS) + 1) - If UBound(xStrSub) = 5 And xTempVP >= 0 And xTempVP < GetMaxVPosition() Then - ReDim Preserve Notes(UBound(Notes) + 1) - With Notes(UBound(Notes)) - .ColumnIndex = Val(xStrSub(0)) - .VPosition = xTempVP - .Value = Val(xStrSub(2)) - .LongNote = CBool(Val(xStrSub(3))) - .Hidden = CBool(Val(xStrSub(4))) - .Landmine = CBool(Val(xStrSub(5))) - .Selected = xSelected - End With - End If - Next - - 'convert - If NTInput Then - ConvertBMSE2NT() - - For xI1 = 1 To UBound(Notes) - Notes(xI1 - 1) = Notes(xI1) - Next - ReDim Preserve Notes(UBound(Notes) - 1) - - Dim xKn() As Note = Notes - Notes = xKbu - - Dim xIStart As Integer = Notes.Length - ReDim Preserve Notes(UBound(Notes) + xKn.Length) - - For xI1 = xIStart To UBound(Notes) - Notes(xI1) = xKn(xI1 - xIStart) - Next - End If - - ElseIf xStrLine(0) = "iBMSC Clipboard Data xNT" Then - If Not NTInput Then ReDim Preserve Notes(0) - - 'paste - Dim xStrSub() As String - For xI1 = 1 To UBound(xStrLine) - If xStrLine(xI1).Trim = "" Then Continue For - xStrSub = Split(xStrLine(xI1), " ") - xTempVP = Val(xStrSub(1)) + MeasureBottom(MeasureAtDisplacement(-xVS) + 1) - If UBound(xStrSub) = 5 And xTempVP >= 0 And xTempVP < GetMaxVPosition() Then - ReDim Preserve Notes(UBound(Notes) + 1) - With Notes(UBound(Notes)) - .ColumnIndex = Val(xStrSub(0)) - .VPosition = xTempVP - .Value = Val(xStrSub(2)) - .Length = Val(xStrSub(3)) - .Hidden = CBool(Val(xStrSub(4))) - .Landmine = CBool(Val(xStrSub(5))) - .Selected = xSelected - End With - End If - Next - - 'convert - If Not NTInput Then - ConvertNT2BMSE() - - For xI1 = 1 To UBound(Notes) - Notes(xI1 - 1) = Notes(xI1) - Next - ReDim Preserve Notes(UBound(Notes) - 1) - - Dim xKn() As Note = Notes - Notes = xKbu - - Dim xIStart As Integer = Notes.Length - ReDim Preserve Notes(UBound(Notes) + xKn.Length) - - For xI1 = xIStart To UBound(Notes) - Notes(xI1) = xKn(xI1 - xIStart) - Next - End If - - ElseIf xStrLine(0) = "BMSE ClipBoard Object Data Format" Then - If NTInput Then ReDim Preserve Notes(0) - - 'paste - For xI1 = 1 To UBound(xStrLine) - ' zdr: holy crap this is obtuse - Dim posStr = Mid(xStrLine(xI1), 5, 7) - Dim vPos = Val(posStr) + MeasureBottom(MeasureAtDisplacement(-xVS) + 1) - - Dim bmsIdent = Mid(xStrLine(xI1), 1, 3) - Dim lineCol = BMSEChannelToColumnIndex(bmsIdent) - - Dim Value = Val(Mid(xStrLine(xI1), 12)) * 10000 - - Dim attribute = Mid(xStrLine(xI1), 4, 1) - - Dim validCol = Len(xStrLine(xI1)) > 11 And lineCol > 0 - Dim inRange = vPos >= 0 And vPos < GetMaxVPosition() - If validCol And inRange Then - ReDim Preserve Notes(UBound(Notes) + 1) - - With Notes(UBound(Notes)) - .ColumnIndex = lineCol - .VPosition = vPos - .Value = Value - .LongNote = attribute = "2" - .Hidden = attribute = "1" - .Selected = xSelected And nEnabled(.ColumnIndex) - End With - End If - Next - - 'convert - If NTInput Then - ConvertBMSE2NT() - - For xI1 = 1 To UBound(Notes) - Notes(xI1 - 1) = Notes(xI1) - Next - ReDim Preserve Notes(UBound(Notes) - 1) - - Dim xKn() As Note = Notes - Notes = xKbu - - Dim xIStart As Integer = Notes.Length - ReDim Preserve Notes(UBound(Notes) + xKn.Length) - - For xI1 = xIStart To UBound(Notes) - Notes(xI1) = xKn(xI1 - xIStart) - Next - End If - End If - - If SortAndUpdatePairing Then SortByVPositionInsertion() : UpdatePairing() - CalculateTotalPlayableNotes() - End Sub - - Private Sub CopyNotes(Optional ByVal Unselect As Boolean = True) - Dim xStrAll As String = "iBMSC Clipboard Data" & IIf(NTInput, " xNT", "") - Dim xI1 As Integer - Dim MinMeasure As Double = 999 - - For xI1 = 1 To UBound(Notes) - If Notes(xI1).Selected And MeasureAtDisplacement(Notes(xI1).VPosition) < MinMeasure Then MinMeasure = MeasureAtDisplacement(Notes(xI1).VPosition) - Next - MinMeasure = MeasureBottom(MinMeasure) - - If Not NTInput Then - For xI1 = 1 To UBound(Notes) - If Notes(xI1).Selected Then - xStrAll &= vbCrLf & Notes(xI1).ColumnIndex.ToString & " " & - (Notes(xI1).VPosition - MinMeasure).ToString & " " & - Notes(xI1).Value.ToString & " " & - CInt(Notes(xI1).LongNote).ToString & " " & - CInt(Notes(xI1).Hidden).ToString & " " & - CInt(Notes(xI1).Landmine).ToString - Notes(xI1).Selected = Not Unselect - End If - Next - - Else - For xI1 = 1 To UBound(Notes) - If Notes(xI1).Selected Then - xStrAll &= vbCrLf & Notes(xI1).ColumnIndex.ToString & " " & - (Notes(xI1).VPosition - MinMeasure).ToString & " " & - Notes(xI1).Value.ToString & " " & - Notes(xI1).Length.ToString & " " & - CInt(Notes(xI1).Hidden).ToString & " " & - CInt(Notes(xI1).Landmine).ToString - Notes(xI1).Selected = Not Unselect - End If - Next - End If - - Clipboard.SetText(xStrAll) - End Sub - - Private Sub RemoveNotes(Optional ByVal SortAndUpdatePairing As Boolean = True) - If UBound(Notes) = 0 Then Exit Sub - - KMouseOver = -1 - Dim xI1 As Integer = 1 - Dim xI2 As Integer - Do - If Notes(xI1).Selected Then - For xI2 = xI1 + 1 To UBound(Notes) - Notes(xI2 - 1) = Notes(xI2) - Next - ReDim Preserve Notes(UBound(Notes) - 1) - xI1 = 0 - End If - xI1 += 1 - Loop While xI1 < UBound(Notes) + 1 - If SortAndUpdatePairing Then SortByVPositionInsertion() : UpdatePairing() - CalculateTotalPlayableNotes() - End Sub - - Private Function EnabledColumnIndexToColumnArrayIndex(ByVal cEnabled As Integer) As Integer - Dim xI1 As Integer = 0 - Do - If xI1 >= gColumns Then Exit Do - If Not nEnabled(xI1) Then cEnabled += 1 - If xI1 >= cEnabled Then Exit Do - xI1 += 1 - Loop - Return cEnabled - End Function - - Private Function ColumnArrayIndexToEnabledColumnIndex(ByVal cReal As Integer) As Integer - Dim xI1 As Integer - For xI1 = 0 To cReal - 1 - If Not nEnabled(xI1) Then cReal -= 1 - Next - Return cReal - End Function - - Private Sub Form1_FormClosed(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosedEventArgs) Handles Me.FormClosed - If pTempFileNames IsNot Nothing Then - For Each xStr As String In pTempFileNames - IO.File.Delete(xStr) - Next - End If - If PreviousAutoSavedFileName <> "" Then IO.File.Delete(PreviousAutoSavedFileName) - End Sub - - Private Sub Form1_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing - Dim xStrAll As String - Dim xRandomFile As Boolean = GetFileName(FileName).StartsWith("___TempRandom") - If Not IsSaved Then - Dim xStr As String = Strings.Messages.SaveOnExit - If e.CloseReason = CloseReason.WindowsShutDown Then xStr = Strings.Messages.SaveOnExit1 - If e.CloseReason = CloseReason.TaskManagerClosing Then xStr = Strings.Messages.SaveOnExit2 - - Dim xResult As MsgBoxResult = MsgBox(xStr, MsgBoxStyle.YesNoCancel Or MsgBoxStyle.Question, Me.Text) - - If xResult = MsgBoxResult.Yes AndAlso Not xRandomFile Then - If ExcludeFileName(FileName) = "" Then - Dim xDSave As New SaveFileDialog - xDSave.Filter = Strings.FileType._bms & "|*.bms;*.bme;*.bml;*.pms;*.txt|" & - Strings.FileType.BMS & "|*.bms|" & - Strings.FileType.BME & "|*.bme|" & - Strings.FileType.BML & "|*.bml|" & - Strings.FileType.PMS & "|*.pms|" & - Strings.FileType.TXT & "|*.txt|" & - Strings.FileType._all & "|*.*" - xDSave.DefaultExt = "bms" - xDSave.InitialDirectory = InitPath - - If xDSave.ShowDialog = Windows.Forms.DialogResult.Cancel Then e.Cancel = True : Exit Sub - SetFileName(xDSave.FileName) - End If - xStrAll = SaveBMS() - My.Computer.FileSystem.WriteAllText(FileName, xStrAll, False, TextEncoding) - NewRecent(FileName) - If BeepWhileSaved Then Beep() - End If - - If xResult = MsgBoxResult.Cancel Then e.Cancel = True - End If - - If xRandomFile Then - xStrAll = SaveRandomBMS() - My.Computer.FileSystem.WriteAllText(FileName, xStrAll, False, TextEncoding) - If BeepWhileSaved Then Beep() - End If - - If Not e.Cancel Then - 'If SaveTheme Then - ' My.Computer.FileSystem.WriteAllText(My.Application.Info.DirectoryPath & "\Skin.cff", SaveSkinCFF, False, System.Text.Encoding.Unicode) - 'Else - ' My.Computer.FileSystem.WriteAllText(My.Application.Info.DirectoryPath & "\Skin.cff", "", False, System.Text.Encoding.Unicode) - 'End If - ' - 'My.Computer.FileSystem.WriteAllText(My.Application.Info.DirectoryPath & "\PlayerArgs.cff", SavePlayerCFF, False, System.Text.Encoding.Unicode) - 'My.Computer.FileSystem.WriteAllText(My.Application.Info.DirectoryPath & "\Config.cff", SaveCFF, False, System.Text.Encoding.Unicode) - 'My.Computer.FileSystem.WriteAllText(My.Application.Info.DirectoryPath & "\PreConfig.cff", "", False, System.Text.Encoding.Unicode) - Me.SaveSettings(My.Application.Info.DirectoryPath & "\iBMSC.Settings.xml", False) - End If - End Sub - - Private Function FilterFileBySupported(ByVal xFile() As String, ByVal xFilter() As String) As String() - Dim xPath(-1) As String - For xI1 As Integer = 0 To UBound(xFile) - If My.Computer.FileSystem.FileExists(xFile(xI1)) And Array.IndexOf(xFilter, Path.GetExtension(xFile(xI1))) <> -1 Then - ReDim Preserve xPath(UBound(xPath) + 1) - xPath(UBound(xPath)) = xFile(xI1) - End If - - If My.Computer.FileSystem.DirectoryExists(xFile(xI1)) Then - Dim xFileNames() As FileInfo = My.Computer.FileSystem.GetDirectoryInfo(xFile(xI1)).GetFiles() - For Each xStr As FileInfo In xFileNames - If Array.IndexOf(xFilter, xStr.Extension) = -1 Then Continue For - ReDim Preserve xPath(UBound(xPath) + 1) - xPath(UBound(xPath)) = xStr.FullName - Next - End If - Next - - Return xPath - End Function - - Private Sub InitializeNewBMS() - 'ReDim K(0) - 'With K(0) - ' .ColumnIndex = niBPM - ' .VPosition = -1 - ' .LongNote = False - ' .Selected = False - ' .Value = 1200000 - 'End With - - THTitle.Text = "" - THArtist.Text = "" - THGenre.Text = "" - THBPM.Value = 120 - If CHPlayer.SelectedIndex = -1 Then CHPlayer.SelectedIndex = 0 - CHRank.SelectedIndex = 3 - THPlayLevel.Text = "" - THSubTitle.Text = "" - THSubArtist.Text = "" - THStageFile.Text = "" - THBanner.Text = "" - THBackBMP.Text = "" - CHDifficulty.SelectedIndex = 0 - THExRank.Text = "" - THTotal.Text = "" - THComment.Text = "" - 'THLnType.Text = "1" - CHLnObj.SelectedIndex = 0 - - TExpansion.Text = "" - - LBeat.Items.Clear() - For xI1 As Integer = 0 To 999 - MeasureLength(xI1) = 192.0R - MeasureBottom(xI1) = xI1 * 192.0R - LBeat.Items.Add(Add3Zeros(xI1) & ": 1 ( 4 / 4 )") - Next - End Sub - - Private Sub InitializeOpenBMS() - CHPlayer.SelectedIndex = 0 - 'THLnType.Text = "" - End Sub - - Private Sub Form1_DragEnter(ByVal sender As Object, ByVal e As DragEventArgs) Handles Me.DragEnter - If e.Data.GetDataPresent(DataFormats.FileDrop) Then - e.Effect = DragDropEffects.Copy - DDFileName = FilterFileBySupported(CType(e.Data.GetData(DataFormats.FileDrop), String()), SupportedFileExtension) - Else - e.Effect = DragDropEffects.None - End If - RefreshPanelAll() - End Sub - - Private Sub Form1_DragLeave(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.DragLeave - ReDim DDFileName(-1) - RefreshPanelAll() - End Sub - - Private Sub Form1_DragDrop(ByVal sender As Object, ByVal e As DragEventArgs) Handles Me.DragDrop - ReDim DDFileName(-1) - ' If Not e.Data.GetDataPresent(DataFormats.FileDrop) Then Return - - Dim xOrigPath() As String = CType(e.Data.GetData(DataFormats.FileDrop), String()) - ' Dim xPath() As String = FilterFileBySupported(xOrigPath, SupportedFileExtension) - ' If xPath.Length > 0 Then - Dim xProg As New fLoadFileProgress(xOrigPath, IsSaved) - xProg.ShowDialog(Me) - ' End If - - RefreshPanelAll() - End Sub - - Private Sub setFullScreen(ByVal value As Boolean) - If value Then - If Me.WindowState = FormWindowState.Minimized Then Exit Sub - - Me.SuspendLayout() - previousWindowPosition.Location = Me.Location - previousWindowPosition.Size = Me.Size - previousWindowState = Me.WindowState - - Me.WindowState = FormWindowState.Normal - Me.FormBorderStyle = Windows.Forms.FormBorderStyle.None - Me.WindowState = FormWindowState.Maximized - ToolStripContainer1.TopToolStripPanelVisible = False - - Me.ResumeLayout() - isFullScreen = True - Else - Me.SuspendLayout() - Me.FormBorderStyle = Windows.Forms.FormBorderStyle.Sizable - ToolStripContainer1.TopToolStripPanelVisible = True - Me.WindowState = FormWindowState.Normal - - Me.WindowState = previousWindowState - If Me.WindowState = FormWindowState.Normal Then - Me.Location = previousWindowPosition.Location - Me.Size = previousWindowPosition.Size - End If - - Me.ResumeLayout() - isFullScreen = False - End If - End Sub - - Private Sub Form1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown - Select Case e.KeyCode - Case Keys.F11 - setFullScreen(Not isFullScreen) - End Select - End Sub - - Private Sub Form1_KeyUp(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyUp - RefreshPanelAll() - POStatusRefresh() - End Sub - - Friend Sub ReadFile(ByVal xPath As String) - Select Case LCase(Path.GetExtension(xPath)) - Case ".bms", ".bme", ".bml", ".pms", ".txt" - OpenBMS(My.Computer.FileSystem.ReadAllText(xPath, TextEncoding)) - ClearUndo() - NewRecent(xPath) - SetFileName(xPath) - SetIsSaved(True) - - Case ".sm" - If OpenSM(My.Computer.FileSystem.ReadAllText(xPath, TextEncoding)) Then Return - InitPath = ExcludeFileName(xPath) - ClearUndo() - SetFileName("Untitled.bms") - SetIsSaved(False) - - Case ".ibmsc" - OpeniBMSC(xPath) - InitPath = ExcludeFileName(xPath) - NewRecent(xPath) - SetFileName("Imported_" & GetFileName(xPath)) - SetIsSaved(False) - - Case Else - OpenBMS(My.Computer.FileSystem.ReadAllText(xPath, TextEncoding)) - ClearUndo() - NewRecent(xPath) - SetFileName(xPath) - SetIsSaved(True) - - End Select - End Sub - - - Public Function GCD(ByVal NumA As Double, ByVal NumB As Double) As Double - Dim xNMax As Double = NumA - Dim xNMin As Double = NumB - If NumA < NumB Then - xNMax = NumB - xNMin = NumA - End If - Do While xNMin >= BMSGridLimit - GCD = xNMax - Math.Floor(xNMax / xNMin) * xNMin - xNMax = xNMin - xNMin = GCD - Loop - GCD = xNMax - End Function - - Private Shared Function LoadCursorFromFile(ByVal fileName As String) As IntPtr - End Function - Public Shared Function ActuallyLoadCursor(ByVal path As String) As Cursor - Return New Cursor(LoadCursorFromFile(path)) - End Function - - Private Sub Unload() Handles MyBase.Disposed - Audio.Finalize() - End Sub - - Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load - 'On Error Resume Next - Me.TopMost = True - Me.SuspendLayout() - Me.Visible = False - - 'POBMP.Dispose() - 'POBGA.Dispose() - - 'Me.MaximizedBounds = Screen.GetWorkingArea(Me) - 'Me.Visible = False - SetFileName(FileName) - 'Me.ShowCaption = False - 'SetWindowText(Me.Handle.ToInt32, FileName) - - InitializeNewBMS() - 'nBeatD.SelectedIndex = 4 - - Try - Dim xTempFileName As String = RandomFileName(".cur") - My.Computer.FileSystem.WriteAllBytes(xTempFileName, My.Resources.CursorResizeDown, False) - Dim xDownCursor As Cursor = ActuallyLoadCursor(xTempFileName) - My.Computer.FileSystem.WriteAllBytes(xTempFileName, My.Resources.CursorResizeLeft, False) - Dim xLeftCursor As Cursor = ActuallyLoadCursor(xTempFileName) - My.Computer.FileSystem.WriteAllBytes(xTempFileName, My.Resources.CursorResizeRight, False) - Dim xRightCursor As Cursor = ActuallyLoadCursor(xTempFileName) - File.Delete(xTempFileName) - - POWAVResizer.Cursor = xDownCursor - POBeatResizer.Cursor = xDownCursor - POExpansionResizer.Cursor = xDownCursor - - POptionsResizer.Cursor = xLeftCursor - - SpL.Cursor = xRightCursor - SpR.Cursor = xLeftCursor - Catch ex As Exception - - End Try - - spMain = New Panel() {PMainInL, PMainIn, PMainInR} - - Dim xI1 As Integer - - sUndo(0) = New UndoRedo.NoOperation - sUndo(1) = New UndoRedo.NoOperation - sRedo(0) = New UndoRedo.NoOperation - sRedo(1) = New UndoRedo.NoOperation - sI = 0 - - LWAV.Items.Clear() - For xI1 = 1 To 1295 - LWAV.Items.Add(C10to36(xI1) & ":") - Next - LWAV.SelectedIndex = 0 - CHPlayer.SelectedIndex = 0 - - CalculateGreatestVPosition() - TBLangRefresh_Click(TBLangRefresh, Nothing) - TBThemeRefresh_Click(TBThemeRefresh, Nothing) - - POHeaderPart2.Visible = False - POGridPart2.Visible = False - POWaveFormPart2.Visible = False - - If My.Computer.FileSystem.FileExists(My.Application.Info.DirectoryPath & "\iBMSC.Settings.xml") Then - LoadSettings(My.Application.Info.DirectoryPath & "\iBMSC.Settings.xml") - 'Else - '---- Settings for first-time start-up --------------------------------------------------------------------------- - 'Me.LoadLocale(My.Application.Info.DirectoryPath & "\Data\chs.Lang.xml") - '----------------------------------------------------------------------------------------------------------------- - End If - 'On Error GoTo 0 - SetIsSaved(True) - - Dim xStr() As String = Environment.GetCommandLineArgs - 'Dim xStr() As String = {Application.ExecutablePath, "C:\Users\User\Desktop\yang run xuan\SoFtwArES\Games\O2Mania\music\SHOOT!\shoot! -NM-.bms"} - - If xStr.Length = 2 Then - ReadFile(xStr(1)) - If LCase(Path.GetExtension(xStr(1))) = ".ibmsc" AndAlso GetFileName(xStr(1)).StartsWith("AutoSave_", True, Nothing) Then GoTo 1000 - End If - - 'pIsSaved.Visible = Not IsSaved - IsInitializing = False - - If Process.GetProcessesByName(Process.GetCurrentProcess.ProcessName).Length > 1 Then GoTo 1000 - Dim xFiles() As FileInfo = My.Computer.FileSystem.GetDirectoryInfo(My.Application.Info.DirectoryPath).GetFiles("AutoSave_*.IBMSC") - If xFiles Is Nothing OrElse xFiles.Length = 0 Then GoTo 1000 - - 'Me.TopMost = True - If MsgBox(Replace(Strings.Messages.RestoreAutosavedFile, "{}", xFiles.Length), MsgBoxStyle.YesNo Or MsgBoxStyle.MsgBoxSetForeground) = MsgBoxResult.Yes Then - For Each xF As FileInfo In xFiles - 'MsgBox(xF.FullName) - System.Diagnostics.Process.Start(Application.ExecutablePath, """" & xF.FullName & """") - Next - End If - - For Each xF As FileInfo In xFiles - ReDim Preserve pTempFileNames(UBound(pTempFileNames) + 1) - pTempFileNames(UBound(pTempFileNames)) = xF.FullName - Next - -1000: - IsInitializing = False - POStatusRefresh() - Me.ResumeLayout() - - tempResize = Me.WindowState - Me.TopMost = False - Me.WindowState = tempResize - - Me.Visible = True - End Sub - - Private Sub UpdatePairing() - Dim i As Integer, j As Integer - - If NTInput Then - For i = 0 To UBound(Notes) - Notes(i).HasError = False - Notes(i).LNPair = 0 - If Notes(i).Length < 0 Then Notes(i).Length = 0 - Next - - For i = 1 To UBound(Notes) - If Notes(i).Length <> 0 Then - For j = i + 1 To UBound(Notes) - If Notes(j).VPosition > Notes(i).VPosition + Notes(i).Length Then Exit For - If Notes(j).ColumnIndex = Notes(i).ColumnIndex Then Notes(j).HasError = True - Next - Else - For j = i + 1 To UBound(Notes) - If Notes(j).VPosition > Notes(i).VPosition Then Exit For - If Notes(j).ColumnIndex = Notes(i).ColumnIndex Then Notes(j).HasError = True - Next - - If Notes(i).Value \ 10000 = LnObj AndAlso Not IsColumnNumeric(Notes(i).ColumnIndex) Then - For j = i - 1 To 1 Step -1 - If Notes(j).ColumnIndex <> Notes(i).ColumnIndex Then Continue For - If Notes(j).Hidden Then Continue For - - If Notes(j).Length <> 0 OrElse Notes(j).Value \ 10000 = LnObj Then - Notes(i).HasError = True - Else - Notes(i).LNPair = j - Notes(j).LNPair = i - End If - Exit For - Next - If j = 0 Then - Notes(i).HasError = True - End If - End If - End If - Next - - Else - For i = 0 To UBound(Notes) - Notes(i).HasError = False - Notes(i).LNPair = 0 - Next - - For i = 1 To UBound(Notes) - - If Notes(i).LongNote Then - 'LongNote: If overlapping a note, then error. - ' Else if already matched by a LongNote below, then match it. - ' Otherwise match anything above. - ' If ShortNote above then error on above. - ' If nothing above then error. - For j = i - 1 To 1 Step -1 - If Notes(j).ColumnIndex <> Notes(i).ColumnIndex Then Continue For - If Notes(j).VPosition = Notes(i).VPosition Then - Notes(i).HasError = True - GoTo EndSearch - ElseIf Notes(j).LongNote And Notes(j).LNPair = i Then - Notes(i).LNPair = j - GoTo EndSearch - Else - Exit For - End If - Next - - For j = i + 1 To UBound(Notes) - If Notes(j).ColumnIndex <> Notes(i).ColumnIndex Then Continue For - Notes(i).LNPair = j - Notes(j).LNPair = i - If Not Notes(j).LongNote AndAlso Notes(j).Value \ 10000 <> LnObj Then - Notes(j).HasError = True - End If - Exit For - Next - - If j = UBound(Notes) + 1 Then - Notes(i).HasError = True - End If -EndSearch: - - ElseIf Notes(i).Value \ 10000 = LnObj And - Not IsColumnNumeric(Notes(i).ColumnIndex) Then - 'LnObj: Match anything below. - ' If matching a LongNote not matching back, then error on below. - ' If overlapping a note, then error. - ' If mathcing a LnObj below, then error on below. - ' If nothing below, then error. - For j = i - 1 To 1 Step -1 - If Notes(i).ColumnIndex <> Notes(j).ColumnIndex Then Continue For - If Notes(j).LNPair <> 0 And Notes(j).LNPair <> i Then - Notes(j).HasError = True - End If - Notes(i).LNPair = j - Notes(j).LNPair = i - If Notes(i).VPosition = Notes(j).VPosition Then - Notes(i).HasError = True - End If - If Notes(j).Value \ 10000 = LnObj Then - Notes(j).HasError = True - End If - Exit For - Next - - If j = 0 Then - Notes(i).HasError = True - End If - - Else - 'ShortNote: If overlapping a note, then error. - For j = i - 1 To 1 Step -1 - If Notes(j).VPosition < Notes(i).VPosition Then Exit For - If Notes(j).ColumnIndex <> Notes(i).ColumnIndex Then Continue For - Notes(i).HasError = True - Exit For - Next - - End If - Next - - - End If - - Dim currentMS = 0.0# - Dim currentBPM = Notes(0).Value / 10000 - Dim currentBPMVPosition = 0.0# - For i = 1 To UBound(Notes) - If Notes(i).ColumnIndex = niBPM Then - currentMS += (Notes(i).VPosition - currentBPMVPosition) / currentBPM * 1250 - currentBPM = Notes(i).Value / 10000 - currentBPMVPosition = Notes(i).VPosition - End If - 'K(i).TimeOffset = currentMS + (K(i).VPosition - currentBPMVPosition) / currentBPM * 1250 - Next - End Sub - - - - Public Sub ExceptionSave(ByVal Path As String) - SaveiBMSC(Path) - End Sub - - ''' - ''' True if pressed cancel. False elsewise. - ''' - ''' True if pressed cancel. False elsewise. - - Private Function ClosingPopSave() As Boolean - If Not IsSaved Then - Dim xResult As MsgBoxResult = MsgBox(Strings.Messages.SaveOnExit, MsgBoxStyle.YesNoCancel Or MsgBoxStyle.Question, Me.Text) - - If xResult = MsgBoxResult.Yes Then - If ExcludeFileName(FileName) = "" Then - Dim xDSave As New SaveFileDialog - xDSave.Filter = Strings.FileType._bms & "|*.bms;*.bme;*.bml;*.pms;*.txt|" & - Strings.FileType.BMS & "|*.bms|" & - Strings.FileType.BME & "|*.bme|" & - Strings.FileType.BML & "|*.bml|" & - Strings.FileType.PMS & "|*.pms|" & - Strings.FileType.TXT & "|*.txt|" & - Strings.FileType._all & "|*.*" - xDSave.DefaultExt = "bms" - xDSave.InitialDirectory = InitPath - - If xDSave.ShowDialog = Windows.Forms.DialogResult.Cancel Then Return True - SetFileName(xDSave.FileName) - End If - Dim xStrAll As String = SaveBMS() - My.Computer.FileSystem.WriteAllText(FileName, xStrAll, False, TextEncoding) - NewRecent(FileName) - If BeepWhileSaved Then Beep() - End If - - If xResult = MsgBoxResult.Cancel Then Return True - End If - Return False - End Function - - Private Sub TBNew_Click(ByVal sender As System.Object, ByVal e As EventArgs) Handles TBNew.Click, mnNew.Click - - 'KMouseDown = -1 - ReDim SelectedNotes(-1) - KMouseOver = -1 - If ClosingPopSave() Then Exit Sub - - ClearUndo() - InitializeNewBMS() - - ReDim Notes(0) - ReDim mColumn(999) - ReDim hWAV(1295) - ReDim hBPM(1295) 'x10000 - ReDim hSTOP(1295) - ReDim hSCROLL(1295) - THGenre.Text = "" - THTitle.Text = "" - THArtist.Text = "" - THPlayLevel.Text = "" - - With Notes(0) - .ColumnIndex = niBPM - .VPosition = -1 - '.LongNote = False - '.Selected = False - .Value = 1200000 - End With - THBPM.Value = 120 - - LWAV.Items.Clear() - Dim xI1 As Integer - For xI1 = 1 To 1295 - LWAV.Items.Add(C10to36(xI1) & ": " & hWAV(xI1)) - Next - LWAV.SelectedIndex = 0 - - SetFileName("Untitled.bms") - SetIsSaved(True) - 'pIsSaved.Visible = Not IsSaved - - CalculateTotalPlayableNotes() - CalculateGreatestVPosition() - RefreshPanelAll() - POStatusRefresh() - End Sub - - Private Sub TBNewC_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) 'Handles TBNewC.Click - 'KMouseDown = -1 - ReDim SelectedNotes(-1) - KMouseOver = -1 - If ClosingPopSave() Then Exit Sub - - ClearUndo() - - ReDim Notes(0) - ReDim mColumn(999) - ReDim hWAV(1295) - ReDim hBPM(1295) 'x10000 - ReDim hSTOP(1295) - ReDim hSCROLL(1295) - THGenre.Text = "" - THTitle.Text = "" - THArtist.Text = "" - THPlayLevel.Text = "" - - With Notes(0) - .ColumnIndex = niBPM - .VPosition = -1 - '.LongNote = False - '.Selected = False - .Value = 1200000 - End With - THBPM.Value = 120 - - SetFileName("Untitled.bms") - SetIsSaved(True) - 'pIsSaved.Visible = Not IsSaved - - If MsgBox("Please copy your code to clipboard and click OK.", MsgBoxStyle.OkCancel, "Create from code") = MsgBoxResult.Cancel Then Exit Sub - OpenBMS(Clipboard.GetText) - End Sub - - Private Sub TBOpen_ButtonClick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBOpen.ButtonClick, mnOpen.Click - 'KMouseDown = -1 - ReDim SelectedNotes(-1) - KMouseOver = -1 - If ClosingPopSave() Then Exit Sub - - Dim xDOpen As New OpenFileDialog - xDOpen.Filter = Strings.FileType._bms & "|*.bms;*.bme;*.bml;*.pms;*.txt|" & - Strings.FileType.BMS & "|*.bms|" & - Strings.FileType.BME & "|*.bme|" & - Strings.FileType.BML & "|*.bml|" & - Strings.FileType.PMS & "|*.pms|" & - Strings.FileType.TXT & "|*.txt|" & - Strings.FileType._all & "|*.*" - xDOpen.DefaultExt = "bms" - xDOpen.InitialDirectory = IIf(ExcludeFileName(FileName) = "", InitPath, ExcludeFileName(FileName)) - - If xDOpen.ShowDialog = Windows.Forms.DialogResult.Cancel Then Exit Sub - InitPath = ExcludeFileName(xDOpen.FileName) - OpenBMS(My.Computer.FileSystem.ReadAllText(xDOpen.FileName, TextEncoding)) - ClearUndo() - SetFileName(xDOpen.FileName) - NewRecent(FileName) - SetIsSaved(True) - 'pIsSaved.Visible = Not IsSaved - End Sub - - Private Sub TBImportIBMSC_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBImportIBMSC.Click, mnImportIBMSC.Click - 'KMouseDown = -1 - ReDim SelectedNotes(-1) - KMouseOver = -1 - If ClosingPopSave() Then Return - - Dim xDOpen As New OpenFileDialog - xDOpen.Filter = Strings.FileType.IBMSC & "|*.ibmsc" - xDOpen.DefaultExt = "ibmsc" - xDOpen.InitialDirectory = IIf(ExcludeFileName(FileName) = "", InitPath, ExcludeFileName(FileName)) - - If xDOpen.ShowDialog = Windows.Forms.DialogResult.Cancel Then Return - InitPath = ExcludeFileName(xDOpen.FileName) - SetFileName("Imported_" & GetFileName(xDOpen.FileName)) - OpeniBMSC(xDOpen.FileName) - NewRecent(xDOpen.FileName) - SetIsSaved(False) - 'pIsSaved.Visible = Not IsSaved - End Sub - - Private Sub TBImportSM_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBImportSM.Click, mnImportSM.Click - 'KMouseDown = -1 - ReDim SelectedNotes(-1) - KMouseOver = -1 - If ClosingPopSave() Then Exit Sub - - Dim xDOpen As New OpenFileDialog - xDOpen.Filter = Strings.FileType.SM & "|*.sm" - xDOpen.DefaultExt = "sm" - xDOpen.InitialDirectory = IIf(ExcludeFileName(FileName) = "", InitPath, ExcludeFileName(FileName)) - - If xDOpen.ShowDialog = Windows.Forms.DialogResult.Cancel Then Exit Sub - If OpenSM(My.Computer.FileSystem.ReadAllText(xDOpen.FileName, TextEncoding)) Then Exit Sub - InitPath = ExcludeFileName(xDOpen.FileName) - SetFileName("Untitled.bms") - ClearUndo() - SetIsSaved(False) - 'pIsSaved.Visible = Not IsSaved - End Sub - - Private Sub TBSave_ButtonClick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBSave.ButtonClick, mnSave.Click - 'KMouseDown = -1 - ReDim SelectedNotes(-1) - KMouseOver = -1 - - If ExcludeFileName(FileName) = "" Then - Dim xDSave As New SaveFileDialog - xDSave.Filter = Strings.FileType._bms & "|*.bms;*.bme;*.bml;*.pms;*.txt|" & - Strings.FileType.BMS & "|*.bms|" & - Strings.FileType.BME & "|*.bme|" & - Strings.FileType.BML & "|*.bml|" & - Strings.FileType.PMS & "|*.pms|" & - Strings.FileType.TXT & "|*.txt|" & - Strings.FileType._all & "|*.*" - xDSave.DefaultExt = "bms" - xDSave.InitialDirectory = InitPath - - If xDSave.ShowDialog = Windows.Forms.DialogResult.Cancel Then Exit Sub - InitPath = ExcludeFileName(xDSave.FileName) - SetFileName(xDSave.FileName) - End If - Dim xStrAll As String = SaveBMS() - My.Computer.FileSystem.WriteAllText(FileName, xStrAll, False, TextEncoding) - NewRecent(FileName) - SetFileName(FileName) - SetIsSaved(True) - 'pIsSaved.Visible = Not IsSaved - If BeepWhileSaved Then Beep() - End Sub - - Private Sub TBSaveAs_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBSaveAs.Click, mnSaveAs.Click - 'KMouseDown = -1 - ReDim SelectedNotes(-1) - KMouseOver = -1 - - Dim xDSave As New SaveFileDialog - xDSave.Filter = Strings.FileType._bms & "|*.bms;*.bme;*.bml;*.pms;*.txt|" & - Strings.FileType.BMS & "|*.bms|" & - Strings.FileType.BME & "|*.bme|" & - Strings.FileType.BML & "|*.bml|" & - Strings.FileType.PMS & "|*.pms|" & - Strings.FileType.TXT & "|*.txt|" & - Strings.FileType._all & "|*.*" - xDSave.DefaultExt = "bms" - xDSave.InitialDirectory = IIf(ExcludeFileName(FileName) = "", InitPath, ExcludeFileName(FileName)) - - If xDSave.ShowDialog = Windows.Forms.DialogResult.Cancel Then Exit Sub - InitPath = ExcludeFileName(xDSave.FileName) - SetFileName(xDSave.FileName) - Dim xStrAll As String = SaveBMS() - My.Computer.FileSystem.WriteAllText(FileName, xStrAll, False, TextEncoding) - NewRecent(FileName) - SetFileName(FileName) - SetIsSaved(True) - 'pIsSaved.Visible = Not IsSaved - If BeepWhileSaved Then Beep() - End Sub - - Private Sub TBExport_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBExport.Click, mnExport.Click - 'KMouseDown = -1 - ReDim SelectedNotes(-1) - KMouseOver = -1 - - Dim xDSave As New SaveFileDialog - xDSave.Filter = Strings.FileType.IBMSC & "|*.ibmsc" - xDSave.DefaultExt = "ibmsc" - xDSave.InitialDirectory = IIf(ExcludeFileName(FileName) = "", InitPath, ExcludeFileName(FileName)) - If xDSave.ShowDialog = Windows.Forms.DialogResult.Cancel Then Exit Sub - - SaveiBMSC(xDSave.FileName) - 'My.Computer.FileSystem.WriteAllText(xDSave.FileName, xStrAll, False, TextEncoding) - NewRecent(FileName) - If BeepWhileSaved Then Beep() - End Sub - - - - Private Sub VSGotFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles MainPanelScroll.GotFocus, LeftPanelScroll.GotFocus, RightPanelScroll.GotFocus - PanelFocus = sender.Tag - spMain(PanelFocus).Focus() - End Sub - - Private Sub VSValueChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles MainPanelScroll.ValueChanged, LeftPanelScroll.ValueChanged, RightPanelScroll.ValueChanged - Dim iI As Integer = sender.Tag - - ' az: We got a wheel event when we're zooming in/out - If My.Computer.Keyboard.CtrlKeyDown Then - sender.Value = VSValue ' Undo the scroll - Exit Sub - End If - - If iI = PanelFocus And Not LastMouseDownLocation = New Point(-1, -1) And Not VSValue = -1 Then LastMouseDownLocation.Y += (VSValue - sender.Value) * gxHeight - PanelVScroll(iI) = sender.Value - - If spLock((iI + 1) Mod 3) Then - Dim xVS As Integer = PanelVScroll(iI) + spDiff(iI) - If xVS > 0 Then xVS = 0 - If xVS < MainPanelScroll.Minimum Then xVS = MainPanelScroll.Minimum - Select Case iI - Case 0 : MainPanelScroll.Value = xVS - Case 1 : RightPanelScroll.Value = xVS - Case 2 : LeftPanelScroll.Value = xVS - End Select - End If - - If spLock((iI + 2) Mod 3) Then - Dim xVS As Integer = PanelVScroll(iI) - spDiff((iI + 2) Mod 3) - If xVS > 0 Then xVS = 0 - If xVS < MainPanelScroll.Minimum Then xVS = MainPanelScroll.Minimum - Select Case iI - Case 0 : RightPanelScroll.Value = xVS - Case 1 : LeftPanelScroll.Value = xVS - Case 2 : MainPanelScroll.Value = xVS - End Select - End If - - spDiff(iI) = PanelVScroll((iI + 1) Mod 3) - PanelVScroll(iI) - spDiff((iI + 2) Mod 3) = PanelVScroll(iI) - PanelVScroll((iI + 2) Mod 3) - - VSValue = sender.Value - RefreshPanel(iI, spMain(iI).DisplayRectangle) - End Sub - - Private Sub cVSLock_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cVSLockL.CheckedChanged, cVSLock.CheckedChanged, cVSLockR.CheckedChanged - Dim iI As Integer = sender.Tag - spLock(iI) = sender.Checked - If Not spLock(iI) Then Return - - spDiff(iI) = PanelVScroll((iI + 1) Mod 3) - PanelVScroll(iI) - spDiff((iI + 2) Mod 3) = PanelVScroll(iI) - PanelVScroll((iI + 2) Mod 3) - - 'POHeaderB.Text = spDiff(0) & "_" & spDiff(1) & "_" & spDiff(2) - End Sub - - Private Sub HSGotFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles HS.GotFocus, HSL.GotFocus, HSR.GotFocus - PanelFocus = sender.Tag - spMain(PanelFocus).Focus() - End Sub - - Private Sub HSValueChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles HS.ValueChanged, HSL.ValueChanged, HSR.ValueChanged - Dim iI As Integer = sender.Tag - If Not LastMouseDownLocation = New Point(-1, -1) And Not HSValue = -1 Then LastMouseDownLocation.X += (HSValue - sender.Value) * gxWidth - PanelHScroll(iI) = sender.Value - HSValue = sender.Value - RefreshPanel(iI, spMain(iI).DisplayRectangle) - End Sub - - Private Sub TBSelect_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBSelect.Click, mnSelect.Click - TBSelect.Checked = True - TBWrite.Checked = False - TBTimeSelect.Checked = False - mnSelect.Checked = True - mnWrite.Checked = False - mnTimeSelect.Checked = False - - FStatus2.Visible = False - FStatus.Visible = True - - ShouldDrawTempNote = False - SelectedColumn = -1 - TempVPosition = -1 - TempLength = 0 - - vSelStart = MeasureBottom(MeasureAtDisplacement(-PanelVScroll(PanelFocus)) + 1) - vSelLength = 0 - - RefreshPanelAll() - POStatusRefresh() - End Sub - - Private Sub TBWrite_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBWrite.Click, mnWrite.Click - TBSelect.Checked = False - TBWrite.Checked = True - TBTimeSelect.Checked = False - mnSelect.Checked = False - mnWrite.Checked = True - mnTimeSelect.Checked = False - - FStatus2.Visible = False - FStatus.Visible = True - - ShouldDrawTempNote = True - SelectedColumn = -1 - TempVPosition = -1 - TempLength = 0 - - vSelStart = MeasureBottom(MeasureAtDisplacement(-PanelVScroll(PanelFocus)) + 1) - vSelLength = 0 - - RefreshPanelAll() - POStatusRefresh() - End Sub - - Private Sub TBPostEffects_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBTimeSelect.Click, mnTimeSelect.Click - TBSelect.Checked = False - TBWrite.Checked = False - TBTimeSelect.Checked = True - mnSelect.Checked = False - mnWrite.Checked = False - mnTimeSelect.Checked = True - - FStatus.Visible = False - FStatus2.Visible = True - - vSelMouseOverLine = 0 - ShouldDrawTempNote = False - SelectedColumn = -1 - TempVPosition = -1 - TempLength = 0 - ValidateSelection() - - Dim xI1 As Integer - For xI1 = 0 To UBound(Notes) - Notes(xI1).Selected = False - Next - RefreshPanelAll() - POStatusRefresh() - End Sub - - Private Sub CGHeight_ValueChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles CGHeight.ValueChanged - gxHeight = CSng(CGHeight.Value) - CGHeight2.Value = IIf(CGHeight.Value * 4 < CGHeight2.Maximum, CDec(CGHeight.Value * 4), CGHeight2.Maximum) - RefreshPanelAll() - End Sub - - Private Sub CGHeight2_Scroll(ByVal sender As Object, ByVal e As System.EventArgs) Handles CGHeight2.Scroll - CGHeight.Value = CGHeight2.Value / 4 - End Sub - - Private Sub CGWidth_ValueChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles CGWidth.ValueChanged - gxWidth = CSng(CGWidth.Value) - CGWidth2.Value = IIf(CGWidth.Value * 4 < CGWidth2.Maximum, CDec(CGWidth.Value * 4), CGWidth2.Maximum) - - HS.LargeChange = PMainIn.Width / gxWidth - If HS.Value > HS.Maximum - HS.LargeChange + 1 Then HS.Value = HS.Maximum - HS.LargeChange + 1 - HSL.LargeChange = PMainInL.Width / gxWidth - If HSL.Value > HSL.Maximum - HSL.LargeChange + 1 Then HSL.Value = HSL.Maximum - HSL.LargeChange + 1 - HSR.LargeChange = PMainInR.Width / gxWidth - If HSR.Value > HSR.Maximum - HSR.LargeChange + 1 Then HSR.Value = HSR.Maximum - HSR.LargeChange + 1 - - RefreshPanelAll() - End Sub - - Private Sub CGWidth2_Scroll(ByVal sender As Object, ByVal e As System.EventArgs) Handles CGWidth2.Scroll - CGWidth.Value = CGWidth2.Value / 4 - End Sub - - Private Sub CGDivide_ValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CGDivide.ValueChanged - gDivide = CGDivide.Value - RefreshPanelAll() - End Sub - Private Sub CGSub_ValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CGSub.ValueChanged - gSub = CGSub.Value - RefreshPanelAll() - End Sub - Private Sub BGSlash_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BGSlash.Click - Dim xd As Integer = Val(InputBox(Strings.Messages.PromptSlashValue, , gSlash)) - If xd = 0 Then Exit Sub - If xd > CGDivide.Maximum Then xd = CGDivide.Maximum - If xd < CGDivide.Minimum Then xd = CGDivide.Minimum - gSlash = xd - End Sub - - - Private Sub CGSnap_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CGSnap.CheckedChanged - gSnap = CGSnap.Checked - RefreshPanelAll() - End Sub - - - - Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick - Dim xI1 As Integer - - Select Case PanelFocus - Case 0 - With LeftPanelScroll - xI1 = .Value + (tempY / 5) / gxHeight - If xI1 > 0 Then xI1 = 0 - If xI1 < .Minimum Then xI1 = .Minimum - .Value = xI1 - End With - With HSL - xI1 = .Value + (tempX / 10) / gxWidth - If xI1 > .Maximum - .LargeChange + 1 Then xI1 = .Maximum - .LargeChange + 1 - If xI1 < .Minimum Then xI1 = .Minimum - .Value = xI1 - End With - - Case 1 - With MainPanelScroll - xI1 = .Value + (tempY / 5) / gxHeight - If xI1 > 0 Then xI1 = 0 - If xI1 < .Minimum Then xI1 = .Minimum - .Value = xI1 - End With - With HS - xI1 = .Value + (tempX / 10) / gxWidth - If xI1 > .Maximum - .LargeChange + 1 Then xI1 = .Maximum - .LargeChange + 1 - If xI1 < .Minimum Then xI1 = .Minimum - .Value = xI1 - End With - - Case 2 - With RightPanelScroll - xI1 = .Value + (tempY / 5) / gxHeight - If xI1 > 0 Then xI1 = 0 - If xI1 < .Minimum Then xI1 = .Minimum - .Value = xI1 - End With - With HSR - xI1 = .Value + (tempX / 10) / gxWidth - If xI1 > .Maximum - .LargeChange + 1 Then xI1 = .Maximum - .LargeChange + 1 - If xI1 < .Minimum Then xI1 = .Minimum - .Value = xI1 - End With - End Select - - Dim xMEArgs As New System.Windows.Forms.MouseEventArgs(Windows.Forms.MouseButtons.Left, 0, MouseMoveStatus.X, MouseMoveStatus.Y, 0) - PMainInMouseMove(spMain(PanelFocus), xMEArgs) - - End Sub - - Private Sub TimerMiddle_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TimerMiddle.Tick - If Not MiddleButtonClicked Then TimerMiddle.Enabled = False : Return - - Dim xI1 As Integer - - Select Case PanelFocus - Case 0 - With LeftPanelScroll - xI1 = .Value + (Cursor.Position.Y - MiddleButtonLocation.Y) / 5 / gxHeight - If xI1 > 0 Then xI1 = 0 - If xI1 < .Minimum Then xI1 = .Minimum - .Value = xI1 - End With - With HSL - xI1 = .Value + (Cursor.Position.X - MiddleButtonLocation.X) / 5 / gxWidth - If xI1 > .Maximum - .LargeChange + 1 Then xI1 = .Maximum - .LargeChange + 1 - If xI1 < .Minimum Then xI1 = .Minimum - .Value = xI1 - End With - - Case 1 - With MainPanelScroll - xI1 = .Value + (Cursor.Position.Y - MiddleButtonLocation.Y) / 5 / gxHeight - If xI1 > 0 Then xI1 = 0 - If xI1 < .Minimum Then xI1 = .Minimum - .Value = xI1 - End With - With HS - xI1 = .Value + (Cursor.Position.X - MiddleButtonLocation.X) / 5 / gxWidth - If xI1 > .Maximum - .LargeChange + 1 Then xI1 = .Maximum - .LargeChange + 1 - If xI1 < .Minimum Then xI1 = .Minimum - .Value = xI1 - End With - - Case 2 - With RightPanelScroll - xI1 = .Value + (Cursor.Position.Y - MiddleButtonLocation.Y) / 5 / gxHeight - If xI1 > 0 Then xI1 = 0 - If xI1 < .Minimum Then xI1 = .Minimum - .Value = xI1 - End With - With HSR - xI1 = .Value + (Cursor.Position.X - MiddleButtonLocation.X) / 5 / gxWidth - If xI1 > .Maximum - .LargeChange + 1 Then xI1 = .Maximum - .LargeChange + 1 - If xI1 < .Minimum Then xI1 = .Minimum - .Value = xI1 - End With - End Select - - Dim xMEArgs As New System.Windows.Forms.MouseEventArgs(Windows.Forms.MouseButtons.Left, 0, MouseMoveStatus.X, MouseMoveStatus.Y, 0) - PMainInMouseMove(spMain(PanelFocus), xMEArgs) - End Sub - - Private Sub ValidateWavListView() - Try - Dim xRect As Rectangle = LWAV.GetItemRectangle(LWAV.SelectedIndex) - If xRect.Top + xRect.Height > LWAV.DisplayRectangle.Height Then SendMessage(LWAV.Handle, &H115, 1, 0) - Catch ex As Exception - End Try - End Sub - - Private Sub LWAV_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles LWAV.Click - If TBWrite.Checked Then FSW.Text = C10to36(LWAV.SelectedIndex + 1) - - PreviewNote("", True) - If Not PreviewOnClick Then Exit Sub - If hWAV(LWAV.SelectedIndex + 1) = "" Then Exit Sub - - Dim xFileLocation As String = IIf(ExcludeFileName(FileName) = "", InitPath, ExcludeFileName(FileName)) & "\" & hWAV(LWAV.SelectedIndex + 1) - PreviewNote(xFileLocation, False) - End Sub - - Private Sub LWAV_DoubleClick(ByVal sender As Object, ByVal e As System.EventArgs) Handles LWAV.DoubleClick - Dim xDWAV As New OpenFileDialog - xDWAV.DefaultExt = "wav" - xDWAV.Filter = Strings.FileType._wave & "|*.wav;*.ogg;*.mp3|" & - Strings.FileType.WAV & "|*.wav|" & - Strings.FileType.OGG & "|*.ogg|" & - Strings.FileType.MP3 & "|*.mp3|" & - Strings.FileType._all & "|*.*" - xDWAV.InitialDirectory = IIf(ExcludeFileName(FileName) = "", InitPath, ExcludeFileName(FileName)) - - If xDWAV.ShowDialog = Windows.Forms.DialogResult.Cancel Then Exit Sub - InitPath = ExcludeFileName(xDWAV.FileName) - hWAV(LWAV.SelectedIndex + 1) = GetFileName(xDWAV.FileName) - LWAV.Items.Item(LWAV.SelectedIndex) = C10to36(LWAV.SelectedIndex + 1) & ": " & GetFileName(xDWAV.FileName) - If IsSaved Then SetIsSaved(False) - End Sub - - Private Sub LWAV_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles LWAV.KeyDown - Select Case e.KeyCode - Case Keys.Space - LWAV_Click(sender, e) - Case Keys.Enter - LWAV_DoubleClick(sender, e) - Case Keys.Delete - hWAV(LWAV.SelectedIndex + 1) = "" - LWAV.Items.Item(LWAV.SelectedIndex) = C10to36(LWAV.SelectedIndex + 1) & ": " - If IsSaved Then SetIsSaved(False) - End Select - End Sub - - Private Sub TBErrorCheck_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBErrorCheck.Click, mnErrorCheck.Click - ErrorCheck = sender.Checked - TBErrorCheck.Checked = ErrorCheck - mnErrorCheck.Checked = ErrorCheck - TBErrorCheck.Image = IIf(TBErrorCheck.Checked, My.Resources.x16CheckError, My.Resources.x16CheckErrorN) - mnErrorCheck.Image = IIf(TBErrorCheck.Checked, My.Resources.x16CheckError, My.Resources.x16CheckErrorN) - RefreshPanelAll() - End Sub - - Private Sub TBPreviewOnClick_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBPreviewOnClick.Click, mnPreviewOnClick.Click - PreviewNote("", True) - PreviewOnClick = sender.Checked - TBPreviewOnClick.Checked = PreviewOnClick - mnPreviewOnClick.Checked = PreviewOnClick - TBPreviewOnClick.Image = IIf(PreviewOnClick, My.Resources.x16PreviewOnClick, My.Resources.x16PreviewOnClickN) - mnPreviewOnClick.Image = IIf(PreviewOnClick, My.Resources.x16PreviewOnClick, My.Resources.x16PreviewOnClickN) - End Sub - - 'Private Sub TBPreviewErrorCheck_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) - ' PreviewErrorCheck = TBPreviewErrorCheck.Checked - ' TBPreviewErrorCheck.Image = IIf(PreviewErrorCheck, My.Resources.x16PreviewCheck, My.Resources.x16PreviewCheckN) - 'End Sub - - Private Sub TBShowFileName_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBShowFileName.Click, mnShowFileName.Click - ShowFileName = sender.Checked - TBShowFileName.Checked = ShowFileName - mnShowFileName.Checked = ShowFileName - TBShowFileName.Image = IIf(ShowFileName, My.Resources.x16ShowFileName, My.Resources.x16ShowFileNameN) - mnShowFileName.Image = IIf(ShowFileName, My.Resources.x16ShowFileName, My.Resources.x16ShowFileNameN) - RefreshPanelAll() - End Sub - - Private Sub TBCut_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBCut.Click, mnCut.Click - Dim xUndo As UndoRedo.LinkedURCmd = Nothing - Dim xRedo As UndoRedo.LinkedURCmd = New UndoRedo.Void - Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo - Me.RedoRemoveNoteSelected(True, xUndo, xRedo) - 'Dim xRedo As String = sCmdKDs() - 'Dim xUndo As String = sCmdKs(True) - - CopyNotes(False) - RemoveNotes(False) - AddUndo(xUndo, xBaseRedo.Next) - - SortByVPositionInsertion() - UpdatePairing() - CalculateTotalPlayableNotes() - RefreshPanelAll() - POStatusRefresh() - CalculateGreatestVPosition() - End Sub - - Private Sub TBCopy_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBCopy.Click, mnCopy.Click - CopyNotes() - RefreshPanelAll() - POStatusRefresh() - End Sub - - Private Sub TBPaste_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBPaste.Click, mnPaste.Click - AddNotesFromClipboard() - - Dim xUndo As UndoRedo.LinkedURCmd = Nothing - Dim xRedo As UndoRedo.LinkedURCmd = New UndoRedo.Void - Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo - Me.RedoAddNoteSelected(True, xUndo, xRedo) - AddUndo(xUndo, xBaseRedo.Next) - - 'AddUndo(sCmdKDs(), sCmdKs(True)) - - SortByVPositionInsertion() - UpdatePairing() - CalculateTotalPlayableNotes() - RefreshPanelAll() - POStatusRefresh() - CalculateGreatestVPosition() - End Sub - - 'Private Function pArgPath(ByVal I As Integer) - ' Return Mid(pArgs(I), 1, InStr(pArgs(I), vbCrLf) - 1) - 'End Function - - Private Function GetFileName(ByVal s As String) As String - Dim fslash As Integer = InStrRev(s, "/") - Dim bslash As Integer = InStrRev(s, "\") - Return Mid(s, IIf(fslash > bslash, fslash, bslash) + 1) - End Function - - Private Function ExcludeFileName(ByVal s As String) As String - Dim fslash As Integer = InStrRev(s, "/") - Dim bslash As Integer = InStrRev(s, "\") - If (bslash Or fslash) = 0 Then Return "" - Return Mid(s, 1, IIf(fslash > bslash, fslash, bslash) - 1) - End Function - - Private Sub PlayerMissingPrompt() - Dim xArg As MainWindow.PlayerArguments = pArgs(CurrentPlayer) - MsgBox(Strings.Messages.CannotFind.Replace("{}", PrevCodeToReal(xArg.Path)) & vbCrLf & - Strings.Messages.PleaseRespecifyPath, MsgBoxStyle.Critical, Strings.Messages.PlayerNotFound) - - Dim xDOpen As New OpenFileDialog - xDOpen.InitialDirectory = IIf(ExcludeFileName(PrevCodeToReal(xArg.Path)) = "", - My.Application.Info.DirectoryPath, - ExcludeFileName(PrevCodeToReal(xArg.Path))) - xDOpen.FileName = PrevCodeToReal(xArg.Path) - xDOpen.Filter = Strings.FileType.EXE & "|*.exe" - xDOpen.DefaultExt = "exe" - If xDOpen.ShowDialog = Windows.Forms.DialogResult.Cancel Then Exit Sub - - 'pArgs(CurrentPlayer) = Replace(xDOpen.FileName, My.Application.Info.DirectoryPath, "") & _ - ' Mid(pArgs(CurrentPlayer), InStr(pArgs(CurrentPlayer), vbCrLf)) - 'xStr = Split(pArgs(CurrentPlayer), vbCrLf) - pArgs(CurrentPlayer).Path = Replace(xDOpen.FileName, My.Application.Info.DirectoryPath, "") - xArg = pArgs(CurrentPlayer) - End Sub - - Private Sub TBPlay_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBPlay.Click, mnPlay.Click - 'Dim xStr() As String = Split(pArgs(CurrentPlayer), vbCrLf) - Dim xArg As MainWindow.PlayerArguments = pArgs(CurrentPlayer) - - If Not File.Exists(PrevCodeToReal(xArg.Path)) Then - PlayerMissingPrompt() - xArg = pArgs(CurrentPlayer) - End If - - ' az: Treat it like we cancelled the operation - If Not File.Exists(PrevCodeToReal(xArg.Path)) Then - Exit Sub - End If - - Dim xStrAll As String = SaveBMS() - Dim xFileName As String = IIf(Not PathIsValid(FileName), - IIf(InitPath = "", My.Application.Info.DirectoryPath, InitPath), - ExcludeFileName(FileName)) & "\___TempBMS.bmsc" - My.Computer.FileSystem.WriteAllText(xFileName, xStrAll, False, TextEncoding) - - AddTempFileList(xFileName) - System.Diagnostics.Process.Start(PrevCodeToReal(xArg.Path), PrevCodeToReal(xArg.aHere)) - End Sub - - Private Sub TBPlayB_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBPlayB.Click, mnPlayB.Click - 'Dim xStr() As String = Split(pArgs(CurrentPlayer), vbCrLf) - Dim xArg As MainWindow.PlayerArguments = pArgs(CurrentPlayer) - - If Not File.Exists(PrevCodeToReal(xArg.Path)) Then - PlayerMissingPrompt() - xArg = pArgs(CurrentPlayer) - End If - - If Not File.Exists(PrevCodeToReal(xArg.Path)) Then - Exit Sub - End If - - Dim xStrAll As String = SaveBMS() - Dim xFileName As String = IIf(Not PathIsValid(FileName), - IIf(InitPath = "", My.Application.Info.DirectoryPath, InitPath), - ExcludeFileName(FileName)) & "\___TempBMS.bmsc" - My.Computer.FileSystem.WriteAllText(xFileName, xStrAll, False, TextEncoding) - - AddTempFileList(xFileName) - - System.Diagnostics.Process.Start(PrevCodeToReal(xArg.Path), PrevCodeToReal(xArg.aBegin)) - End Sub - - Private Sub TBStop_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBStop.Click, mnStop.Click - 'Dim xStr() As String = Split(pArgs(CurrentPlayer), vbCrLf) - Dim xArg As MainWindow.PlayerArguments = pArgs(CurrentPlayer) - - If Not File.Exists(PrevCodeToReal(xArg.Path)) Then - PlayerMissingPrompt() - xArg = pArgs(CurrentPlayer) - End If - - If Not File.Exists(PrevCodeToReal(xArg.Path)) Then - Exit Sub - End If - - System.Diagnostics.Process.Start(PrevCodeToReal(xArg.Path), PrevCodeToReal(xArg.aStop)) - End Sub - - Private Sub AddTempFileList(ByVal s As String) - Dim xAdd As Boolean = True - If pTempFileNames IsNot Nothing Then - For Each xStr1 As String In pTempFileNames - If xStr1 = s Then xAdd = False : Exit For - Next - End If - - If xAdd Then - ReDim Preserve pTempFileNames(UBound(pTempFileNames) + 1) - pTempFileNames(UBound(pTempFileNames)) = s - End If - End Sub - - Private Sub TBStatistics_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBStatistics.Click, mnStatistics.Click - SortByVPositionInsertion() - UpdatePairing() - - Dim data(6, 5) As Integer - For i As Integer = 1 To UBound(Notes) - With Notes(i) - Dim row As Integer = -1 - Select Case .ColumnIndex - ' Case niSCROLL : row = 0 - Case niBPM : row = 0 - Case niSTOP : row = 1 - Case niA1, niA2, niA3, niA4, niA5, niA6, niA7, niA8 : row = 2 - Case niD1, niD2, niD3, niD4, niD5, niD6, niD7, niD8 : row = 3 - Case Is >= niB : row = 4 - Case Else : row = 5 - End Select - - -StartCount: If Not NTInput Then - If Not .LongNote Then data(row, 0) += 1 - If .LongNote Then data(row, 1) += 1 - If .Value \ 10000 = LnObj Then data(row, 2) += 1 - If .Hidden Then data(row, 3) += 1 - If .HasError Then data(row, 4) += 1 - data(row, 5) += 1 - - Else - Dim noteUnit As Integer = 1 - If .Length = 0 Then data(row, 0) += 1 - If .Length <> 0 Then data(row, 1) += 2 : noteUnit = 2 - - If .Value \ 10000 = LnObj Then data(row, 2) += noteUnit - If .Hidden Then data(row, 3) += noteUnit - If .HasError Then data(row, 4) += noteUnit - data(row, 5) += noteUnit - - End If - - If row <> 6 Then row = 6 : GoTo StartCount - End With - Next - - Dim dStat As New dgStatisticsLegacy(data) - dStat.ShowDialog() - End Sub - - Private Sub TBStatisticsAdvanced_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnStatisticsAdvanced.Click - SortByVPositionInsertion() - UpdatePairing() - Dim rows = 26 - 2 ' TableLayoutPanel1.RowCount doesn't work - Dim cols = 8 - 2 ' Size of tables including names sub 2 - Dim Labels As New Strings.fStatistics() - Dim rowLabels = {Labels.lSCROLL, Labels.lBPM, Labels.lSTOP, Labels.lA1, Labels.lA2, Labels.lA3, Labels.lA4, Labels.lA5, Labels.lA6, Labels.lA7, Labels.lA8, Labels.lD1, Labels.lD2, Labels.lD3, Labels.lD4, Labels.lD5, Labels.lD6, Labels.lD7, Labels.lD8, Labels.lA, Labels.lD, Labels.lBGA, Labels.lBGM, Labels.lNotes, Labels.lTotal} - Dim colLabels = {Labels.lShort, Labels.lLong, Labels.lLnObj, Labels.lHidden, Labels.lLandmines, Labels.lErrors, Labels.lTotal} - Dim data(rows, cols) As Integer - - For i As Integer = 1 To UBound(Notes) - With Notes(i) - Dim row As Integer - Select Case .ColumnIndex - Case niSCROLL : row = 1 - 1 - Case niBPM : row = 2 - 1 - Case niSTOP : row = 3 - 1 - Case niA1 : row = 4 - 1 - Case niA2 : row = 5 - 1 - Case niA3 : row = 6 - 1 - Case niA4 : row = 7 - 1 - Case niA5 : row = 8 - 1 - Case niA6 : row = 9 - 1 - Case niA7 : row = 10 - 1 - Case niA8 : row = 11 - 1 - Case niD1 : row = 12 - 1 - Case niD2 : row = 13 - 1 - Case niD3 : row = 14 - 1 - Case niD4 : row = 15 - 1 - Case niD5 : row = 16 - 1 - Case niD6 : row = 17 - 1 - Case niD7 : row = 18 - 1 - Case niD8 : row = 19 - 1 - Case Is >= niB : row = 23 - 1 - Case Else : row = 22 - 1 - End Select - - -StartCount: If Not NTInput Then - If Not (.LongNote Or .Hidden Or .Landmine Or .Hidden Or .Value \ 10000 = LnObj) Then data(row, 0) += 1 - If .LongNote Then data(row, 1) += 1 - If .Value \ 10000 = LnObj Then data(row, 2) += 1 - If .Hidden Then data(row, 3) += 1 - If .Landmine Then data(row, 4) += 1 - If .HasError Then data(row, 5) += 1 - - Else - If Not (.LongNote Or .Hidden Or .Landmine Or .Hidden Or .Value \ 10000 = LnObj) Then data(row, 0) += 1 - If .Length <> 0 Then data(row, 1) += 1 - If .Value \ 10000 = LnObj Then data(row, 2) += 1 - If .Hidden Then data(row, 3) += 1 - If .Landmine Then data(row, 4) += 1 - If .HasError Then data(row, 5) += 1 - - End If - - End With - Next - - ' Calculate Total notes on column and row - For r As Integer = 0 To rows - 1 - For c As Integer = 0 To cols - 1 - data(r, cols) += data(r, c) ' Total in row - - ' Ignore rows "A1-A8" and "D1-D8" - Select Case r - Case 19 To 20 : Continue For - Case Else : data(rows, c) += data(r, c) ' Total in column - End Select - - Select Case r - Case 3 To 10 : data(19, c) += data(r, c) : data(23, c) += data(r, c) - Case 11 To 18 : data(20, c) += data(r, c) : data(23, c) += data(r, c) - End Select - Next - Next - data(rows, cols) = UBound(Notes) - ' Change to the whole table cause more convenient - Dim dStat As New dgStatistics(data, rowLabels, colLabels) - dStat.ShowDialog() - End Sub - - ''' - ''' Remark: Pls sort and updatepairing before this process. - ''' - - Private Sub CalculateTotalPlayableNotes() - Dim xI1 As Integer - Dim xIAll As Integer = 0 - - If Not NTInput Then - For xI1 = 1 To UBound(Notes) - If Notes(xI1).ColumnIndex >= niA1 And Notes(xI1).ColumnIndex <= niD8 Then xIAll += 1 - Next - - Else - For xI1 = 1 To UBound(Notes) - If Notes(xI1).ColumnIndex >= niA1 And Notes(xI1).ColumnIndex <= niD8 Then - If Not (Notes(xI1).LongNote Or Notes(xI1).Hidden Or Notes(xI1).Landmine Or Notes(xI1).Hidden Or Notes(xI1).Value \ 10000 = LnObj) Then xIAll += 1 - ' If Notes(xI1).Length <> 0 Then xIAll += 1 - End If - Next - End If - - TBTotalValue.Text = xIAll * 7.605 / (0.01 * xIAll + 6.5) - TBStatistics.Text = xIAll - End Sub - - Public Function GetMouseVPosition(Optional snap As Boolean = True) - Dim panHeight = spMain(PanelFocus).Height - Dim panDisplacement = PanelVScroll(PanelFocus) - Dim vpos = (panHeight - panDisplacement * gxHeight - MouseMoveStatus.Y - 1) / gxHeight - If snap Then - Return SnapToGrid(vpos) - Else - Return vpos - End If - End Function - - Private Sub POStatusRefresh() - - If TBSelect.Checked Then - Dim xI1 As Integer = KMouseOver - If xI1 < 0 Then - - TempVPosition = GetMouseVPosition(gSnap) - - SelectedColumn = GetColumnAtX(MouseMoveStatus.X, PanelHScroll(PanelFocus)) - - Dim xMeasure As Integer = MeasureAtDisplacement(TempVPosition) - Dim xMLength As Double = MeasureLength(xMeasure) - Dim xVposMod As Double = TempVPosition - MeasureBottom(xMeasure) - Dim xGCD As Double = GCD(IIf(xVposMod = 0, xMLength, xVposMod), xMLength) - - FSP1.Text = (xVposMod * gDivide / 192).ToString & " / " & (xMLength * gDivide / 192).ToString & " " - FSP2.Text = xVposMod.ToString & " / " & xMLength & " " - FSP3.Text = CInt(xVposMod / xGCD).ToString & " / " & CInt(xMLength / xGCD).ToString & " " - FSP4.Text = TempVPosition.ToString() & " " - TimeStatusLabel.Text = GetTimeFromVPosition(TempVPosition).ToString("F4") - FSC.Text = nTitle(SelectedColumn) - FSW.Text = "" - FSM.Text = Add3Zeros(xMeasure) - FST.Text = "" - FSH.Text = "" - FSE.Text = "" - - Else - Dim xMeasure As Integer = MeasureAtDisplacement(Notes(xI1).VPosition) - Dim xMLength As Double = MeasureLength(xMeasure) - Dim xVposMod As Double = Notes(xI1).VPosition - MeasureBottom(xMeasure) - Dim xGCD As Double = GCD(IIf(xVposMod = 0, xMLength, xVposMod), xMLength) - - FSP1.Text = (xVposMod * gDivide / 192).ToString & " / " & (xMLength * gDivide / 192).ToString & " " - FSP2.Text = xVposMod.ToString & " / " & xMLength & " " - FSP3.Text = CInt(xVposMod / xGCD).ToString & " / " & CInt(xMLength / xGCD).ToString & " " - FSP4.Text = Notes(xI1).VPosition.ToString() & " " - TimeStatusLabel.Text = GetTimeFromVPosition(TempVPosition).ToString("F4") - FSC.Text = nTitle(Notes(xI1).ColumnIndex) - FSW.Text = IIf(IsColumnNumeric(Notes(xI1).ColumnIndex), - Notes(xI1).Value / 10000, - C10to36(Notes(xI1).Value \ 10000)) - FSM.Text = Add3Zeros(xMeasure) - FST.Text = IIf(NTInput, Strings.StatusBar.Length & " = " & Notes(xI1).Length, IIf(Notes(xI1).LongNote, Strings.StatusBar.LongNote, "")) - FSH.Text = IIf(Notes(xI1).Hidden, Strings.StatusBar.Hidden, "") - FSE.Text = IIf(Notes(xI1).HasError, Strings.StatusBar.Err, "") - - End If - - ElseIf TBWrite.Checked Then - If SelectedColumn < 0 Then Exit Sub - - Dim xMeasure As Integer = MeasureAtDisplacement(TempVPosition) - Dim xMLength As Double = MeasureLength(xMeasure) - Dim xVposMod As Double = TempVPosition - MeasureBottom(xMeasure) - Dim xGCD As Double = GCD(IIf(xVposMod = 0, xMLength, xVposMod), xMLength) - - FSP1.Text = (xVposMod * gDivide / 192).ToString & " / " & (xMLength * gDivide / 192).ToString & " " - FSP2.Text = xVposMod.ToString & " / " & xMLength & " " - FSP3.Text = CInt(xVposMod / xGCD).ToString & " / " & CInt(xMLength / xGCD).ToString & " " - FSP4.Text = TempVPosition.ToString() & " " - TimeStatusLabel.Text = GetTimeFromVPosition(TempVPosition).ToString("F4") - FSC.Text = nTitle(SelectedColumn) - FSW.Text = C10to36(LWAV.SelectedIndex + 1) - FSM.Text = Add3Zeros(xMeasure) - FST.Text = IIf(NTInput, TempLength, IIf(My.Computer.Keyboard.ShiftKeyDown, Strings.StatusBar.LongNote, "")) - FSH.Text = IIf(My.Computer.Keyboard.CtrlKeyDown, Strings.StatusBar.Hidden, "") - - ElseIf TBTimeSelect.Checked Then - FSSS.Text = vSelStart - FSSL.Text = vSelLength - FSSH.Text = vSelHalf - - End If - FStatus.Invalidate() - End Sub - - Private Function GetTimeFromVPosition(vpos As Double) As Double - Dim timing_notes = (From note In Notes - Where note.ColumnIndex = niBPM Or note.ColumnIndex = niSTOP - Group By Column = note.ColumnIndex - Into NoteGroups = Group).ToDictionary(Function(x) x.Column, Function(x) x.NoteGroups) - - Dim bpm_notes = timing_notes.Item(niBPM) - - Dim stop_notes As IEnumerable(Of Note) = Nothing - - If timing_notes.ContainsKey(niSTOP) Then - stop_notes = timing_notes.Item(niSTOP) - End If - - - Dim stop_contrib As Double - Dim bpm_contrib As Double - - For i = 0 To bpm_notes.Count() - 1 - ' az: sum bpm contribution first - Dim duration = 0.0 - Dim current_note = bpm_notes.ElementAt(i) - Dim notevpos = Math.Max(0, current_note.VPosition) - - If i + 1 <> bpm_notes.Count() Then - Dim next_note = bpm_notes.ElementAt(i + 1) - duration = next_note.VPosition - notevpos - Else - duration = vpos - notevpos - End If - - Dim current_bps = 60 / (current_note.Value / 10000) - bpm_contrib += current_bps * duration / 48 - - If stop_notes Is Nothing Then Continue For - - Dim stops = From stp In stop_notes - Where stp.VPosition >= notevpos And - stp.VPosition < notevpos + duration - - Dim stop_beats = stops.Sum(Function(x) x.Value / 10000.0) / 48 - stop_contrib += current_bps * stop_beats - - Next - - Return stop_contrib + bpm_contrib - End Function - - Private Sub POBMirror_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles POBMirror.Click - Dim xI1 As Integer - Dim xI2 As Integer - Dim xUndo As UndoRedo.LinkedURCmd = Nothing - Dim xRedo As UndoRedo.LinkedURCmd = New UndoRedo.Void - Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo - 'xRedo &= sCmdKM(niA1, .VPosition, .Value, IIf(NTInput, .Length, .LongNote), .Hidden, RealColumnToEnabled(niA7) - RealColumnToEnabled(niA1), 0, True) & vbCrLf - 'xUndo &= sCmdKM(niA7, .VPosition, .Value, IIf(NTInput, .Length, .LongNote), .Hidden, RealColumnToEnabled(niA1) - RealColumnToEnabled(niA7), 0, True) & vbCrLf - - ' Array 0: Unmodified array - ' Array 1: Modified array based on range - ' Array R: Array 1 reversed - Dim xniArray0 = New Integer() {niA1, niA2, niA3, niA4, niA5, niA6, niA7, niA8, niD1, niD2, niD3, niD4, niD5, niD6, niD7, niD8} - ' Dim xniArray1 = Integer() ' xniArray0 - - ' New function: Declare an array to see the range of selected notes. B columns ignored. - - Dim xRangeL As Integer = niB ' Big number - Dim xRangeR As Integer = 0 ' Smol number - - ' Range finder - For xI1 = 1 To UBound(Notes) - If Not Notes(xI1).Selected Then Continue For - If xRangeL > Notes(xI1).ColumnIndex Then xRangeL = Notes(xI1).ColumnIndex - If xRangeR < Notes(xI1).ColumnIndex Then xRangeR = Notes(xI1).ColumnIndex - Next - - ' Modify xniArray based on range - ' Out of range - If xRangeL > niD8 Or xRangeR < niA1 Then GoTo DoNothing - - ' Semi-in Range - ' Cut off left side - If xRangeL < niA1 Then - xRangeL = 0 - GoTo MirrorSkip1 - End If - - For xI1 = 0 To xniArray0.Length - If xniArray0(xI1) = xRangeL Then - xRangeL = xI1 - Exit For - End If - Next - -MirrorSkip1: - ' Cut off right side - If xRangeR > niD8 Then - xRangeR = xniArray0.Length - GoTo MirrorSkip2 - End If - - For xI1 = 0 To xniArray0.Length - If xniArray0(xI1) = xRangeR Then - xRangeR = xI1 + 1 - Exit For - End If - Next - -MirrorSkip2: - - Dim xniArray1(xRangeR - xRangeL - 1) - For xI1 = 0 To xRangeR - xRangeL - 1 - xniArray1(xI1) = xniArray0(xI1 + xRangeL) - Next - - Dim xniArrayR = xniArray1.Reverse() - Dim xniArrayLen = xniArray1.Length - - Dim xCol As Integer - For xI1 = 1 To UBound(Notes) - If Not Notes(xI1).Selected Then Continue For - - xCol = Notes(xI1).ColumnIndex - ' MsgBox("Test" & "xCol: " & xCol & " xI1: " & xI1) - For xI2 = 0 To xniArrayLen - 1 - ' MsgBox("Test 2 xI2: " & xI2) - If xCol = xniArray1(xI2) Then - xCol = xniArrayR(xI2) - Exit For - End If - - Next - - Me.RedoMoveNote(Notes(xI1), xCol, Notes(xI1).VPosition, xUndo, xRedo) - Notes(xI1).ColumnIndex = xCol - Next - -DoNothing: - - AddUndo(xUndo, xBaseRedo.Next) - UpdatePairing() - RefreshPanelAll() - End Sub - - - Private Sub POBFlip_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles POBFlip.Click - Dim xI1 As Integer - Dim xI2 As Integer - Dim xUndo As UndoRedo.LinkedURCmd = Nothing - Dim xRedo As UndoRedo.LinkedURCmd = New UndoRedo.Void - Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo - - ' Array 1: Unmodified array - ' Array R: Flipped array - Dim xniArray1 = New Integer() {niA1, niA2, niA3, niA4, niA5, niA6, niA7, niA8, niD1, niD2, niD3, niD4, niD5, niD6, niD7, niD8} - Dim xniArrayR = New Integer() {niD8, niD1, niD2, niD3, niD4, niD5, niD6, niD7, niA2, niA3, niA4, niA5, niA6, niA7, niA8, niA1} - - Dim xniArrayLen = xniArray1.Length - - Dim xCol As Integer - For xI1 = 1 To UBound(Notes) - If Not Notes(xI1).Selected Then Continue For - - xCol = Notes(xI1).ColumnIndex - For xI2 = 0 To xniArrayLen - 1 - If xCol = xniArray1(xI2) Then - xCol = xniArrayR(xI2) - Exit For - End If - - Next - - Me.RedoMoveNote(Notes(xI1), xCol, Notes(xI1).VPosition, xUndo, xRedo) - Notes(xI1).ColumnIndex = xCol - Next - - AddUndo(xUndo, xBaseRedo.Next) - UpdatePairing() - RefreshPanelAll() - End Sub - - Private Sub POBRandom_Click(sender As Object, e As EventArgs) Handles POBRandom.Click - Dim xI1 As Integer - Dim xI2 As Integer - Dim xUndo As UndoRedo.LinkedURCmd = Nothing - Dim xRedo As UndoRedo.LinkedURCmd = New UndoRedo.Void - Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo - 'xRedo &= sCmdKM(niA1, .VPosition, .Value, IIf(NTInput, .Length, .LongNote), .Hidden, RealColumnToEnabled(niA7) - RealColumnToEnabled(niA1), 0, True) & vbCrLf - 'xUndo &= sCmdKM(niA7, .VPosition, .Value, IIf(NTInput, .Length, .LongNote), .Hidden, RealColumnToEnabled(niA1) - RealColumnToEnabled(niA7), 0, True) & vbCrLf - - ' Array 0: Unmodified array - ' Array 1: Modified array based on range - ' Array R: Array 1 reversed - Dim xniArray0 = New Integer() {niA1, niA2, niA3, niA4, niA5, niA6, niA7, niA8, niD1, niD2, niD3, niD4, niD5, niD6, niD7, niD8} - ' Dim xniArray1 = Integer() ' xniArray0 - - ' New function: Declare an array to see the range of selected notes. B columns ignored. - - Dim xRangeL As Integer = niB ' Big number - Dim xRangeR As Integer = 0 ' Smol number - - ' Range finder - For xI1 = 1 To UBound(Notes) - If Not Notes(xI1).Selected Then Continue For - If xRangeL > Notes(xI1).ColumnIndex Then xRangeL = Notes(xI1).ColumnIndex - If xRangeR < Notes(xI1).ColumnIndex Then xRangeR = Notes(xI1).ColumnIndex - Next - - ' Modify xniArray based on range - ' Out of range - If xRangeL > niD8 Or xRangeR < niA1 Then GoTo DoNothing - - ' Semi-in Range - ' Cut off left side - If xRangeL < niA1 Then - xRangeL = 0 - GoTo Skip1 - End If - - For xI1 = 0 To xniArray0.Length - If xniArray0(xI1) = xRangeL Then - xRangeL = xI1 - Exit For - End If - Next - -Skip1: - ' Cut off right side - If xRangeR > niD8 Then - xRangeR = xniArray0.Length - GoTo Skip2 - End If - - For xI1 = 0 To xniArray0.Length - If xniArray0(xI1) = xRangeR Then - xRangeR = xI1 + 1 - Exit For - End If - Next - -Skip2: - - Dim xniArray1(xRangeR - xRangeL - 1) - For xI1 = 0 To xRangeR - xRangeL - 1 - xniArray1(xI1) = xniArray0(xI1 + xRangeL) - Next - - Dim xniArrayLen = xniArray1.Length - ' xniArrayR: Randomized array - Dim xniArrayR = xniArray1.Clone() - Shuffle(xniArrayR, xniArrayLen) - - Dim xCol As Integer - For xI1 = 1 To UBound(Notes) - If Not Notes(xI1).Selected Then Continue For - - xCol = Notes(xI1).ColumnIndex - For xI2 = 0 To xniArrayLen - 1 - If xCol = xniArray1(xI2) Then - xCol = xniArrayR(xI2) - Exit For - End If - - Next - - Me.RedoMoveNote(Notes(xI1), xCol, Notes(xI1).VPosition, xUndo, xRedo) - Notes(xI1).ColumnIndex = xCol - Next - -DoNothing: - - AddUndo(xUndo, xBaseRedo.Next) - UpdatePairing() - RefreshPanelAll() - End Sub - - Private Sub POBSRandom_Click(sender As Object, e As EventArgs) Handles POBSRandom.Click - Dim xI1 As Integer - Dim xI2 As Integer - Dim xUndo As UndoRedo.LinkedURCmd = Nothing - Dim xRedo As UndoRedo.LinkedURCmd = New UndoRedo.Void - Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo - 'xRedo &= sCmdKM(niA1, .VPosition, .Value, IIf(NTInput, .Length, .LongNote), .Hidden, RealColumnToEnabled(niA7) - RealColumnToEnabled(niA1), 0, True) & vbCrLf - 'xUndo &= sCmdKM(niA7, .VPosition, .Value, IIf(NTInput, .Length, .LongNote), .Hidden, RealColumnToEnabled(niA1) - RealColumnToEnabled(niA7), 0, True) & vbCrLf - - ' Array 0: Unmodified array - ' Array 1: Modified array based on range - ' Array R: Array 1 reversed - Dim xniArray0 = New Integer() {niA1, niA2, niA3, niA4, niA5, niA6, niA7, niA8, niD1, niD2, niD3, niD4, niD5, niD6, niD7, niD8} - ' Dim xniArray1 = Integer() ' xniArray0 - - ' New function: Declare an array to see the range of selected notes. B columns ignored. - - Dim xRangeL As Integer = niB ' Big number - Dim xRangeR As Integer = 0 ' Smol number - - ' Range finder - For xI1 = 1 To UBound(Notes) - If Not Notes(xI1).Selected Then Continue For - If xRangeL > Notes(xI1).ColumnIndex Then xRangeL = Notes(xI1).ColumnIndex - If xRangeR < Notes(xI1).ColumnIndex Then xRangeR = Notes(xI1).ColumnIndex - Next - - ' Modify xniArray based on range - ' Out of range - If xRangeL > niD8 Or xRangeR < niA1 Then GoTo DoNothing - - ' Semi-in Range - ' Cut off left side - If xRangeL < niA1 Then - xRangeL = 0 - GoTo Skip1 - End If - - For xI1 = 0 To xniArray0.Length - If xniArray0(xI1) = xRangeL Then - xRangeL = xI1 - Exit For - End If - Next - -Skip1: - ' Cut off right side - If xRangeR > niD8 Then - xRangeR = xniArray0.Length - GoTo Skip2 - End If - - For xI1 = 0 To xniArray0.Length - If xniArray0(xI1) = xRangeR Then - xRangeR = xI1 + 1 - Exit For - End If - Next - -Skip2: - - Dim xniArray1(xRangeR - xRangeL - 1) - For xI1 = 0 To xRangeR - xRangeL - 1 - xniArray1(xI1) = xniArray0(xI1 + xRangeL) - Next - - Dim xniArrayLen = xniArray1.Length - ' xniArrayR: Randomized array - Dim xniArrayR = xniArray1.Clone() - - Dim xCol As Integer - For xI1 = 1 To UBound(Notes) - If Not Notes(xI1).Selected Then Continue For - Shuffle(xniArrayR, xniArrayLen) - xCol = Notes(xI1).ColumnIndex - For xI2 = 0 To xniArrayLen - 1 - If xCol = xniArray1(xI2) Then - xCol = xniArrayR(xI2) - Exit For - End If - - Next - - Me.RedoMoveNote(Notes(xI1), xCol, Notes(xI1).VPosition, xUndo, xRedo) - Notes(xI1).ColumnIndex = xCol - Next - -DoNothing: - - AddUndo(xUndo, xBaseRedo.Next) - UpdatePairing() - RefreshPanelAll() - End Sub - - Private Sub POBSort_Click(sender As Object, e As EventArgs) Handles POBSort.Click - Dim xI1 As Integer - Dim xI2 As Integer - Dim xUndo As UndoRedo.LinkedURCmd = Nothing - Dim xRedo As UndoRedo.LinkedURCmd = New UndoRedo.Void - Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo - - ' Array 1: Unmodified array - Dim xniArray1 = New Integer() {niA1, niA2, niA3, niA4, niA5, niA6, niA7, niA8, niD1, niD2, niD3, niD4, niD5, niD6, niD7, niD8} - - Dim xniArrayLen = xniArray1.Length - - Dim xCol As Integer - Dim vPos As Integer = -1 - Dim xIArray(0) As Integer - Dim xValueArray(0) As Integer - Dim xI3 As Integer = 0 - Dim xITemp As Integer - Dim xValueTemp As Integer - Dim xSorted As Boolean = False - For xI1 = 1 To UBound(Notes) - - If Not Notes(xI1).Selected Then Continue For - ' If starting a new row or same VPosition - If xI3 = 0 Or vPos = Notes(xI1).VPosition Then -RestartSorting: xSorted = False - ReDim Preserve xIArray(xI3) - ReDim Preserve xValueArray(xI3) - vPos = Notes(xI1).VPosition - xIArray(xI3) = xI1 - xValueArray(xI3) = Notes(xI1).Value - xI3 += 1 - Else - ' Start sorting in a row - ' xI4: First item in the sort loop, xI2: The nth swap/comparison - ' Sorting process (4 items, c for comparison between 2 items): - ' cccc - ' ccc - ' cc - ' c - - For xI4 = 0 To xI3 - 2 - For xI2 = 0 To xI3 - 2 - xI4 - If xValueArray(xI2) > xValueArray(xI2 + 1) Then - xITemp = xIArray(xI2 + 1) - xIArray(xI2 + 1) = xIArray(xI2) - xIArray(xI2) = xITemp - - xValueTemp = xValueArray(xI2 + 1) - xValueArray(xI2 + 1) = xValueArray(xI2) - xValueArray(xI2) = xValueTemp - End If - Next - Next - - For xI4 = 0 To xI3 - 1 - Me.RedoMoveNote(Notes(xIArray(xI4)), xniArray1(xI4), Notes(xIArray(xI4)).VPosition, xUndo, xRedo) - Notes(xIArray(xI4)).ColumnIndex = xniArray1(xI4) - ' Me.RedoMoveNote(Notes(xI1), xCol, Notes(xI1).VPosition, xUndo, xRedo) - ' Notes(xI1).ColumnIndex = xCol - Next - xI3 = 0 - xSorted = True - GoTo RestartSorting - End If - - Next - - If Not xSorted Then - For xI4 = 0 To xI3 - 2 - For xI2 = xI4 To xI3 - 2 - If xValueArray(xI2) > xValueArray(xI2 + 1) Then - xITemp = xIArray(xI2 + 1) - xIArray(xI2 + 1) = xIArray(xI2) - xIArray(xI2) = xITemp - - xValueTemp = xValueArray(xI2 + 1) - xValueArray(xI2 + 1) = xValueArray(xI2) - xValueArray(xI2) = xValueTemp - End If - Next - Next - - For xI4 = 0 To xI3 - 1 - Me.RedoMoveNote(Notes(xIArray(xI4)), xniArray1(xI4), Notes(xIArray(xI4)).VPosition, xUndo, xRedo) - Notes(xIArray(xI4)).ColumnIndex = xniArray1(xI4) - Next - End If - - AddUndo(xUndo, xBaseRedo.Next) - UpdatePairing() - RefreshPanelAll() - End Sub - - - Private Sub ValidateSelection() - If vSelStart < 0 Then vSelLength += vSelStart : vSelHalf += vSelStart : vSelStart = 0 - If vSelStart > GetMaxVPosition() - 1 Then vSelLength += vSelStart - GetMaxVPosition() + 1 : vSelHalf += vSelStart - GetMaxVPosition() + 1 : vSelStart = GetMaxVPosition() - 1 - If vSelStart + vSelLength < 0 Then vSelLength = -vSelStart - If vSelStart + vSelLength > GetMaxVPosition() - 1 Then vSelLength = GetMaxVPosition() - 1 - vSelStart - - If Math.Sign(vSelHalf) <> Math.Sign(vSelLength) Then vSelHalf = 0 - If Math.Abs(vSelHalf) > Math.Abs(vSelLength) Then vSelHalf = vSelLength - End Sub - - - - Private Sub TVCM_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TVCM.KeyDown - If e.KeyCode = Keys.Enter Then - TVCM.Text = Val(TVCM.Text) - If Val(TVCM.Text) <= 0 Then - MsgBox(Strings.Messages.NegativeFactorError, MsgBoxStyle.Critical, Strings.Messages.Err) - TVCM.Text = 1 - TVCM.Focus() - TVCM.SelectAll() - Else - BVCApply_Click(BVCApply, New System.EventArgs) - End If - End If - End Sub - - Private Sub TVCM_LostFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles TVCM.LostFocus - TVCM.Text = Val(TVCM.Text) - If Val(TVCM.Text) <= 0 Then - MsgBox(Strings.Messages.NegativeFactorError, MsgBoxStyle.Critical, Strings.Messages.Err) - TVCM.Text = 1 - TVCM.Focus() - TVCM.SelectAll() - End If - End Sub - - Private Sub TVCD_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TVCD.KeyDown - If e.KeyCode = Keys.Enter Then - TVCD.Text = Val(TVCD.Text) - If Val(TVCD.Text) <= 0 Then - MsgBox(Strings.Messages.NegativeDivisorError, MsgBoxStyle.Critical, Strings.Messages.Err) - TVCD.Text = 1 - TVCD.Focus() - TVCD.SelectAll() - Else - BVCApply_Click(BVCApply, New System.EventArgs) - End If - End If - End Sub - - Private Sub TVCD_LostFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles TVCD.LostFocus - TVCD.Text = Val(TVCD.Text) - If Val(TVCD.Text) <= 0 Then - MsgBox(Strings.Messages.NegativeDivisorError, MsgBoxStyle.Critical, Strings.Messages.Err) - TVCD.Text = 1 - TVCD.Focus() - TVCD.SelectAll() - End If - End Sub - - Private Sub TVCBPM_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TVCBPM.KeyDown - If e.KeyCode = Keys.Enter Then - TVCBPM.Text = Val(TVCBPM.Text) - If Val(TVCBPM.Text) <= 0 Then - MsgBox(Strings.Messages.NegativeDivisorError, MsgBoxStyle.Critical, Strings.Messages.Err) - TVCBPM.Text = Notes(0).Value / 10000 - TVCBPM.Focus() - TVCBPM.SelectAll() - Else - BVCCalculate_Click(BVCCalculate, New System.EventArgs) - End If - End If - End Sub - - Private Sub TVCBPM_LostFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles TVCBPM.LostFocus - TVCBPM.Text = Val(TVCBPM.Text) - If Val(TVCBPM.Text) <= 0 Then - MsgBox(Strings.Messages.NegativeDivisorError, MsgBoxStyle.Critical, Strings.Messages.Err) - TVCBPM.Text = Notes(0).Value / 10000 - TVCBPM.Focus() - TVCBPM.SelectAll() - End If - End Sub - - Private Function FindNoteIndex(note As Note) As Integer - Dim xI1 As Integer - If NTInput Then - For xI1 = 1 To UBound(Notes) - If Notes(xI1).equalsNT(note) Then Return xI1 - Next - Else - For xI1 = 1 To UBound(Notes) - If Notes(xI1).equalsBMSE(note) Then Return xI1 - Next - End If - Return xI1 - End Function - - - - - Private Function sIA() As Integer - Return IIf(sI > 98, 0, sI + 1) - End Function - - Private Function sIM() As Integer - Return IIf(sI < 1, 99, sI - 1) - End Function - - - - Private Sub TBUndo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBUndo.Click, mnUndo.Click - KMouseOver = -1 - 'KMouseDown = -1 - ReDim SelectedNotes(-1) - If sUndo(sI).ofType = UndoRedo.opNoOperation Then Exit Sub - PerformCommand(sUndo(sI)) - sI = sIM() - - TBUndo.Enabled = sUndo(sI).ofType <> UndoRedo.opNoOperation - TBRedo.Enabled = sRedo(sIA).ofType <> UndoRedo.opNoOperation - mnUndo.Enabled = sUndo(sI).ofType <> UndoRedo.opNoOperation - mnRedo.Enabled = sRedo(sIA).ofType <> UndoRedo.opNoOperation - End Sub - - Private Sub TBRedo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBRedo.Click, mnRedo.Click - KMouseOver = -1 - 'KMouseDown = -1 - ReDim SelectedNotes(-1) - If sRedo(sIA).ofType = UndoRedo.opNoOperation Then Exit Sub - PerformCommand(sRedo(sIA)) - sI = sIA() - - TBUndo.Enabled = sUndo(sI).ofType <> UndoRedo.opNoOperation - TBRedo.Enabled = sRedo(sIA).ofType <> UndoRedo.opNoOperation - mnUndo.Enabled = sUndo(sI).ofType <> UndoRedo.opNoOperation - mnRedo.Enabled = sRedo(sIA).ofType <> UndoRedo.opNoOperation - End Sub - - 'Undo appends before, Redo appends after. - 'After a sequence of Commands, - ' Undo will be the first one to execute, - ' Redo will be the last one to execute. - 'Remember to save the first Redo. - - 'In case where undo is Nothing: Dont worry. - 'In case where redo is Nothing: - ' If only one redo is in a sequence, put Nothing. - ' If several redo are in a sequence, - ' Create Void first. - ' Record its reference into a seperate copy. (xBaseRedo = xRedo) - ' Use this xRedo as the BaseRedo. - ' When calling AddUndo subroutine, use xBaseRedo.Next as cRedo. - - 'Dim xUndo As UndoRedo.LinkedURCmd = Nothing - 'Dim xRedo As UndoRedo.LinkedURCmd = Nothing - '... 'Me.RedoRemoveNote(K(xI1), True, xUndo, xRedo) - 'AddUndo(xUndo, xRedo) - - 'Dim xUndo As UndoRedo.LinkedURCmd = Nothing - 'Dim xRedo As New UndoRedo.Void - 'Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo - '... 'Me.RedoRemoveNote(K(xI1), True, xUndo, xRedo) - 'AddUndo(xUndo, xBaseRedo.Next) - - - - Private Sub TBAbout_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) - Dim Aboutboxx1 As New AboutBox1() - 'If My.Computer.FileSystem.FileExists(My.Application.Info.DirectoryPath & "\About.png") Then - Aboutboxx1.bBitmap = My.Resources.About0 - 'Aboutboxx1.SelectBitmap() - Aboutboxx1.ClientSize = New Size(1000, 500) - Aboutboxx1.ClickToCopy.Visible = True - Aboutboxx1.ShowDialog(Me) - 'Else - ' MsgBox(locale.Messages.cannotfind & " ""About.png""", MsgBoxStyle.Critical, locale.Messages.err) - 'End If - End Sub - - Private Sub TBVOptions_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBVOptions.Click, mnVOptions.Click - - Dim xDiag As New OpVisual(vo, column, LWAV.Font) - xDiag.ShowDialog(Me) - UpdateColumnsX() - RefreshPanelAll() - End Sub - - Private Sub TBVCOptions_Click(sender As Object, e As EventArgs) Handles mnVCOptions.Click - Dim xDiag As New OpVisualCO(vo, column, LWAV.Font) - xDiag.ShowDialog(Me) - UpdateColumnsX() - RefreshPanelAll() - End Sub - - - Private Sub AddToPOWAV(ByVal xPath() As String) - Dim xIndices(LWAV.SelectedIndices.Count - 1) As Integer - LWAV.SelectedIndices.CopyTo(xIndices, 0) - If xIndices.Length = 0 Then Exit Sub - - If xIndices.Length < xPath.Length Then - Dim i As Integer = xIndices.Length - Dim currWavIndex As Integer = xIndices(UBound(xIndices)) + 1 - ReDim Preserve xIndices(UBound(xPath)) - - Do While i < xIndices.Length And currWavIndex <= 1294 - Do While currWavIndex <= 1294 AndAlso hWAV(currWavIndex + 1) <> "" - currWavIndex += 1 - Loop - If currWavIndex > 1294 Then Exit Do - - xIndices(i) = currWavIndex - currWavIndex += 1 - i += 1 - Loop - - If currWavIndex > 1294 Then - ReDim Preserve xPath(i - 1) - ReDim Preserve xIndices(i - 1) - End If - End If - - 'Dim xI2 As Integer = 0 - For xI1 As Integer = 0 To UBound(xPath) - 'If xI2 > UBound(xIndices) Then Exit For - 'hWAV(xIndices(xI2) + 1) = GetFileName(xPath(xI1)) - 'LWAV.Items.Item(xIndices(xI2)) = C10to36(xIndices(xI2) + 1) & ": " & GetFileName(xPath(xI1)) - hWAV(xIndices(xI1) + 1) = GetFileName(xPath(xI1)) - LWAV.Items.Item(xIndices(xI1)) = C10to36(xIndices(xI1) + 1) & ": " & GetFileName(xPath(xI1)) - 'xI2 += 1 - Next - - LWAV.SelectedIndices.Clear() - For xI1 As Integer = 0 To IIf(UBound(xIndices) < UBound(xPath), UBound(xIndices), UBound(xPath)) - LWAV.SelectedIndices.Add(xIndices(xI1)) - Next - - If IsSaved Then SetIsSaved(False) - RefreshPanelAll() - End Sub - - Private Sub POWAV_DragDrop(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles POWAV.DragDrop - ReDim DDFileName(-1) - If Not e.Data.GetDataPresent(DataFormats.FileDrop) Then Return - - Dim xOrigPath() As String = CType(e.Data.GetData(DataFormats.FileDrop), String()) - Dim xPath() As String = FilterFileBySupported(xOrigPath, SupportedAudioExtension) - Array.Sort(xPath) - If xPath.Length = 0 Then - RefreshPanelAll() - Exit Sub - End If - - AddToPOWAV(xPath) - End Sub - - Private Sub POWAV_DragEnter(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles POWAV.DragEnter - If e.Data.GetDataPresent(DataFormats.FileDrop) Then - e.Effect = DragDropEffects.Copy - DDFileName = FilterFileBySupported(CType(e.Data.GetData(DataFormats.FileDrop), String()), SupportedAudioExtension) - Else - e.Effect = DragDropEffects.None - End If - RefreshPanelAll() - End Sub - - Private Sub POWAV_DragLeave(ByVal sender As Object, ByVal e As System.EventArgs) Handles POWAV.DragLeave - ReDim DDFileName(-1) - RefreshPanelAll() - End Sub - - Private Sub POWAV_Resize(ByVal sender As Object, ByVal e As System.EventArgs) Handles POWAV.Resize - LWAV.Height = sender.Height - 25 - End Sub - Private Sub POBeat_Resize(ByVal sender As Object, ByVal e As System.EventArgs) Handles POBeat.Resize - LBeat.Height = POBeat.Height - 25 - End Sub - Private Sub POExpansion_Resize(ByVal sender As Object, ByVal e As System.EventArgs) Handles POExpansion.Resize - TExpansion.Height = POExpansion.Height - 2 - End Sub - - Private Sub mn_DropDownClosed(ByVal sender As Object, ByVal e As System.EventArgs) - sender.ForeColor = Color.White - End Sub - Private Sub mn_DropDownOpened(ByVal sender As Object, ByVal e As System.EventArgs) - sender.ForeColor = Color.Black - End Sub - Private Sub mn_MouseEnter(ByVal sender As Object, ByVal e As System.EventArgs) - If sender.Pressed Then Return - sender.ForeColor = Color.Black - End Sub - Private Sub mn_MouseLeave(ByVal sender As Object, ByVal e As System.EventArgs) - If sender.Pressed Then Return - sender.ForeColor = Color.White - End Sub - - Private Sub TBPOptions_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBPOptions.Click, mnPOptions.Click - Dim xDOp As New OpPlayer(CurrentPlayer) - xDOp.ShowDialog(Me) - End Sub - - Private Sub THGenre_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles _ - THGenre.TextChanged, THTitle.TextChanged, THArtist.TextChanged, THPlayLevel.TextChanged, CHRank.SelectedIndexChanged, TExpansion.TextChanged, - THSubTitle.TextChanged, THSubArtist.TextChanged, THStageFile.TextChanged, THBanner.TextChanged, THBackBMP.TextChanged, - CHDifficulty.SelectedIndexChanged, THExRank.TextChanged, THTotal.TextChanged, THComment.TextChanged - If IsSaved Then SetIsSaved(False) - End Sub - - Private Sub CHLnObj_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CHLnObj.SelectedIndexChanged - If IsSaved Then SetIsSaved(False) - LnObj = CHLnObj.SelectedIndex - UpdatePairing() - RefreshPanelAll() - End Sub - - Private Sub ConvertBMSE2NT() - ReDim SelectedNotes(-1) - SortByVPositionInsertion() - - For i2 As Integer = 0 To UBound(Notes) - Notes(i2).Length = 0.0# - Next - - Dim i As Integer = 1 - Dim j As Integer = 0 - Dim xUbound As Integer = UBound(Notes) - - Do While i <= xUbound - If Not Notes(i).LongNote Then i += 1 : Continue Do - - For j = i + 1 To xUbound - If Notes(j).ColumnIndex <> Notes(i).ColumnIndex Then Continue For - - If Notes(j).LongNote Then - Notes(i).Length = Notes(j).VPosition - Notes(i).VPosition - For j2 As Integer = j To xUbound - 1 - Notes(j2) = Notes(j2 + 1) - Next - xUbound -= 1 - Exit For - - ElseIf Notes(j).Value \ 10000 = LnObj Then - Exit For - - End If - Next - - i += 1 - Loop - - ReDim Preserve Notes(xUbound) - - For i = 0 To xUbound - Notes(i).LongNote = False - Next - - SortByVPositionInsertion() - UpdatePairing() - CalculateTotalPlayableNotes() - End Sub - - Private Sub ConvertNT2BMSE() - ReDim SelectedNotes(-1) - Dim xK(0) As Note - xK(0) = Notes(0) - - For xI1 As Integer = 1 To UBound(Notes) - ReDim Preserve xK(UBound(xK) + 1) - With xK(UBound(xK)) - .ColumnIndex = Notes(xI1).ColumnIndex - .LongNote = Notes(xI1).Length > 0 - .Landmine = Notes(xI1).Landmine - .Value = Notes(xI1).Value - .VPosition = Notes(xI1).VPosition - .Selected = Notes(xI1).Selected - .Hidden = Notes(xI1).Hidden - End With - - If Notes(xI1).Length > 0 Then - ReDim Preserve xK(UBound(xK) + 1) - With xK(UBound(xK)) - .ColumnIndex = Notes(xI1).ColumnIndex - .LongNote = True - .Landmine = False - .Value = Notes(xI1).Value - .VPosition = Notes(xI1).VPosition + Notes(xI1).Length - .Selected = Notes(xI1).Selected - .Hidden = Notes(xI1).Hidden - End With - End If - Next - - Notes = xK - - SortByVPositionInsertion() - UpdatePairing() - CalculateTotalPlayableNotes() - End Sub - - Private Sub TBWavIncrease_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBWavIncrease.Click - Dim xUndo As UndoRedo.LinkedURCmd = Nothing - Dim xRedo As UndoRedo.LinkedURCmd = New UndoRedo.Void - Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo - - TBWavIncrease.Checked = Not sender.Checked - Me.RedoWavIncrease(TBWavIncrease.Checked, xUndo, xRedo) - AddUndo(xUndo, xBaseRedo.Next) - End Sub - - Private Sub TBNTInput_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBNTInput.Click, mnNTInput.Click - 'Dim xUndo As String = "NT_" & CInt(NTInput) & "_0" & vbCrLf & "KZ" & vbCrLf & sCmdKsAll(False) - 'Dim xRedo As String = "NT_" & CInt(Not NTInput) & "_1" - Dim xUndo As UndoRedo.LinkedURCmd = Nothing - Dim xRedo As UndoRedo.LinkedURCmd = New UndoRedo.Void - Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo - - Me.RedoRemoveNoteAll(False, xUndo, xRedo) - - NTInput = sender.Checked - - TBNTInput.Checked = NTInput - mnNTInput.Checked = NTInput - POBLong.Enabled = Not NTInput - POBLongShort.Enabled = Not NTInput - - bAdjustLength = False - bAdjustUpper = False - - Me.RedoNT(NTInput, False, xUndo, xRedo) - If NTInput Then - ConvertBMSE2NT() - Else - ConvertNT2BMSE() - End If - Me.RedoAddNoteAll(False, xUndo, xRedo) - - AddUndo(xUndo, xBaseRedo.Next) - RefreshPanelAll() - End Sub - - Private Sub THBPM_ValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles THBPM.ValueChanged - If Notes IsNot Nothing Then Notes(0).Value = THBPM.Value * 10000 : RefreshPanelAll() - If IsSaved Then SetIsSaved(False) - End Sub - - Private Sub TWPosition_ValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TWPosition.ValueChanged - wPosition = TWPosition.Value - TWPosition2.Value = IIf(wPosition > TWPosition2.Maximum, TWPosition2.Maximum, wPosition) - RefreshPanelAll() - End Sub - - Private Sub TWLeft_ValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TWLeft.ValueChanged - wLeft = TWLeft.Value - TWLeft2.Value = IIf(wLeft > TWLeft2.Maximum, TWLeft2.Maximum, wLeft) - RefreshPanelAll() - End Sub - - Private Sub TWWidth_ValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TWWidth.ValueChanged - wWidth = TWWidth.Value - TWWidth2.Value = IIf(wWidth > TWWidth2.Maximum, TWWidth2.Maximum, wWidth) - RefreshPanelAll() - End Sub - - Private Sub TWPrecision_ValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TWPrecision.ValueChanged - wPrecision = TWPrecision.Value - TWPrecision2.Value = IIf(wPrecision > TWPrecision2.Maximum, TWPrecision2.Maximum, wPrecision) - RefreshPanelAll() - End Sub - - Private Sub TWTransparency_ValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TWTransparency.ValueChanged - TWTransparency2.Value = TWTransparency.Value - vo.pBGMWav.Color = Color.FromArgb(TWTransparency.Value, vo.pBGMWav.Color) - RefreshPanelAll() - End Sub - - Private Sub TWSaturation_ValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TWSaturation.ValueChanged - Dim xColor As Color = vo.pBGMWav.Color - TWSaturation2.Value = TWSaturation.Value - vo.pBGMWav.Color = HSL2RGB(xColor.GetHue, TWSaturation.Value, xColor.GetBrightness * 1000, xColor.A) - RefreshPanelAll() - End Sub - - Private Sub TWPosition2_Scroll(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TWPosition2.Scroll - TWPosition.Value = TWPosition2.Value - End Sub - - Private Sub TWLeft2_Scroll(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TWLeft2.Scroll - TWLeft.Value = TWLeft2.Value - End Sub - - Private Sub TWWidth2_Scroll(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TWWidth2.Scroll - TWWidth.Value = TWWidth2.Value - End Sub - - Private Sub TWPrecision2_Scroll(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TWPrecision2.Scroll - TWPrecision.Value = TWPrecision2.Value - End Sub - - Private Sub TWTransparency2_Scroll(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TWTransparency2.Scroll - TWTransparency.Value = TWTransparency2.Value - End Sub - - Private Sub TWSaturation2_Scroll(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TWSaturation2.Scroll - TWSaturation.Value = TWSaturation2.Value - End Sub - - Private Sub TBLangDef_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBLangDef.Click - DispLang = "" - MsgBox(Strings.Messages.PreferencePostpone, MsgBoxStyle.Information) - End Sub - - Private Sub TBLangRefresh_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBLangRefresh.Click - For xI1 As Integer = cmnLanguage.Items.Count - 1 To 3 Step -1 - Try - cmnLanguage.Items.RemoveAt(xI1) - Catch ex As Exception - End Try - Next - - If Not Directory.Exists(My.Application.Info.DirectoryPath & "\Data") Then My.Computer.FileSystem.CreateDirectory(My.Application.Info.DirectoryPath & "\Data") - Dim xFileNames() As FileInfo = My.Computer.FileSystem.GetDirectoryInfo(My.Application.Info.DirectoryPath & "\Data").GetFiles("*.Lang.xml") - - For Each xStr As FileInfo In xFileNames - LoadLocaleXML(xStr) - Next - End Sub - - - Private Sub UpdateColumnsX() - column(0).Left = 0 - 'If col(0).Width = 0 Then col(0).Visible = False - - For xI1 As Integer = 1 To UBound(column) - column(xI1).Left = column(xI1 - 1).Left + IIf(column(xI1 - 1).isVisible, column(xI1 - 1).Width, 0) - 'If col(xI1).Width = 0 Then col(xI1).Visible = False - Next - HSL.Maximum = nLeft(gColumns) + column(niB).Width - HS.Maximum = nLeft(gColumns) + column(niB).Width - HSR.Maximum = nLeft(gColumns) + column(niB).Width - End Sub - - Private Sub CHPlayer_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CHPlayer.SelectedIndexChanged - If CHPlayer.SelectedIndex = -1 Then CHPlayer.SelectedIndex = 0 - - iPlayer = CHPlayer.SelectedIndex - Dim xGP2 As Boolean = iPlayer <> 0 - column(niD1).isVisible = xGP2 - column(niD2).isVisible = xGP2 - column(niD3).isVisible = xGP2 - column(niD4).isVisible = xGP2 - column(niD5).isVisible = xGP2 - column(niD6).isVisible = xGP2 - column(niD7).isVisible = xGP2 - column(niD8).isVisible = xGP2 - column(niS3).isVisible = xGP2 - - For xI1 As Integer = 1 To UBound(Notes) - Notes(xI1).Selected = Notes(xI1).Selected And nEnabled(Notes(xI1).ColumnIndex) - Next - 'AddUndo(xUndo, xRedo) - UpdateColumnsX() - - If IsInitializing Then Exit Sub - RefreshPanelAll() - End Sub - - Private Sub CGB_ValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CGB.ValueChanged - gColumns = niB + CGB.Value - 1 - UpdateColumnsX() - RefreshPanelAll() - End Sub - - Private Sub TBGOptions_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBGOptions.Click, mnGOptions.Click - Dim xTE As Integer - Select Case UCase(EncodingToString(TextEncoding)) ' az: wow seriously? is there really no better way? - Case "SYSTEM ANSI" : xTE = 0 - Case "LITTLE ENDIAN UTF16" : xTE = 1 - Case "ASCII" : xTE = 2 - Case "BIG ENDIAN UTF16" : xTE = 3 - Case "LITTLE ENDIAN UTF32" : xTE = 4 - Case "UTF7" : xTE = 5 - Case "UTF8" : xTE = 6 - Case "SJIS" : xTE = 7 - Case "EUC-KR" : xTE = 8 - Case Else : xTE = 0 - End Select - - Dim xDiag As New OpGeneral(gWheel, gPgUpDn, MiddleButtonMoveMethod, xTE, 192.0R / BMSGridLimit, - AutoSaveInterval, BeepWhileSaved, BPMx1296, STOPx1296, - AutoFocusMouseEnter, FirstClickDisabled, ClickStopPreview) - - If xDiag.ShowDialog() = Windows.Forms.DialogResult.OK Then - With xDiag - gWheel = .zWheel - gPgUpDn = .zPgUpDn - TextEncoding = .zEncoding - 'SortingMethod = .zSort - MiddleButtonMoveMethod = .zMiddle - AutoSaveInterval = .zAutoSave - BMSGridLimit = 192.0R / .zGridPartition - BeepWhileSaved = .cBeep.Checked - BPMx1296 = .cBpm1296.Checked - STOPx1296 = .cStop1296.Checked - AutoFocusMouseEnter = .cMEnterFocus.Checked - FirstClickDisabled = .cMClickFocus.Checked - ClickStopPreview = .cMStopPreview.Checked - ' KeyBindDP = .cMKeyBindDP.Checked - End With - If AutoSaveInterval Then AutoSaveTimer.Interval = AutoSaveInterval - AutoSaveTimer.Enabled = AutoSaveInterval - End If - End Sub - - Private Sub POBLong_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles POBLong.Click - If NTInput Then Exit Sub - - Dim xUndo As UndoRedo.LinkedURCmd = Nothing - Dim xRedo As UndoRedo.LinkedURCmd = New UndoRedo.Void - Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo - - For xI1 As Integer = 1 To UBound(Notes) - If Not Notes(xI1).Selected Then Continue For - - Me.RedoLongNoteModify(Notes(xI1), Notes(xI1).VPosition, True, xUndo, xRedo) - Notes(xI1).LongNote = True - Next - AddUndo(xUndo, xBaseRedo.Next) - SortByVPositionInsertion() - UpdatePairing() - RefreshPanelAll() - End Sub - - Private Sub POBNormal_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles POBShort.Click - Dim xUndo As UndoRedo.LinkedURCmd = Nothing - Dim xRedo As UndoRedo.LinkedURCmd = New UndoRedo.Void - Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo - - If Not NTInput Then - For xI1 As Integer = 1 To UBound(Notes) - If Not Notes(xI1).Selected Then Continue For - - Me.RedoLongNoteModify(Notes(xI1), Notes(xI1).VPosition, 0, xUndo, xRedo) - Notes(xI1).LongNote = False - Next - - Else - For xI1 As Integer = 1 To UBound(Notes) - If Not Notes(xI1).Selected Then Continue For - - Me.RedoLongNoteModify(Notes(xI1), Notes(xI1).VPosition, 0, xUndo, xRedo) - Notes(xI1).Length = 0 - Next - End If - - AddUndo(xUndo, xBaseRedo.Next) - SortByVPositionInsertion() - UpdatePairing() - RefreshPanelAll() - End Sub - - Private Sub POBNormalLong_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles POBLongShort.Click - If NTInput Then Exit Sub - - Dim xUndo As UndoRedo.LinkedURCmd = Nothing - Dim xRedo As UndoRedo.LinkedURCmd = New UndoRedo.Void - Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo - - For xI1 As Integer = 1 To UBound(Notes) - If Not Notes(xI1).Selected Then Continue For - - Me.RedoLongNoteModify(Notes(xI1), Notes(xI1).VPosition, Not Notes(xI1).LongNote, xUndo, xRedo) - Notes(xI1).LongNote = Not Notes(xI1).LongNote - Next - - AddUndo(xUndo, xBaseRedo.Next) - SortByVPositionInsertion() - UpdatePairing() - RefreshPanelAll() - End Sub - - Private Sub POBHidden_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles POBHidden.Click - Dim xUndo As UndoRedo.LinkedURCmd = Nothing - Dim xRedo As UndoRedo.LinkedURCmd = New UndoRedo.Void - Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo - - For xI1 As Integer = 1 To UBound(Notes) - If Not Notes(xI1).Selected Then Continue For - - Me.RedoHiddenNoteModify(Notes(xI1), True, True, xUndo, xRedo) - Notes(xI1).Hidden = True - Next - AddUndo(xUndo, xBaseRedo.Next) - SortByVPositionInsertion() - UpdatePairing() - RefreshPanelAll() - End Sub - - Private Sub POBVisible_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles POBVisible.Click - Dim xUndo As UndoRedo.LinkedURCmd = Nothing - Dim xRedo As UndoRedo.LinkedURCmd = New UndoRedo.Void - Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo - - For xI1 As Integer = 1 To UBound(Notes) - If Not Notes(xI1).Selected Then Continue For - - Me.RedoHiddenNoteModify(Notes(xI1), False, True, xUndo, xRedo) - Notes(xI1).Hidden = False - Next - AddUndo(xUndo, xBaseRedo.Next) - SortByVPositionInsertion() - UpdatePairing() - RefreshPanelAll() - End Sub - - Private Sub POBHiddenVisible_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles POBHiddenVisible.Click - Dim xUndo As UndoRedo.LinkedURCmd = Nothing - Dim xRedo As UndoRedo.LinkedURCmd = New UndoRedo.Void - Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo - - For xI1 As Integer = 1 To UBound(Notes) - If Not Notes(xI1).Selected Then Continue For - - Me.RedoHiddenNoteModify(Notes(xI1), Not Notes(xI1).Hidden, True, xUndo, xRedo) - Notes(xI1).Hidden = Not Notes(xI1).Hidden - Next - AddUndo(xUndo, xBaseRedo.Next) - SortByVPositionInsertion() - UpdatePairing() - RefreshPanelAll() - End Sub - - Private Sub POBModify_Click(ByVal sender As System.Object, ByVal e As EventArgs) Handles POBModify.Click - Dim xNum As Boolean = False - Dim xLbl As Boolean = False - Dim xI1 As Integer - - For xI1 = 1 To UBound(Notes) - If Notes(xI1).Selected AndAlso IsColumnNumeric(Notes(xI1).ColumnIndex) Then xNum = True : Exit For - Next - For xI1 = 1 To UBound(Notes) - If Notes(xI1).Selected AndAlso Not IsColumnNumeric(Notes(xI1).ColumnIndex) Then xLbl = True : Exit For - Next - If Not (xNum Or xLbl) Then Exit Sub - - If xNum Then - Dim xD1 As Double = Val(InputBox(Strings.Messages.PromptEnterNumeric, Text)) * 10000 - If Not xD1 = 0 Then - If xD1 <= 0 Then xD1 = 1 - - Dim xUndo As UndoRedo.LinkedURCmd = Nothing - Dim xRedo As UndoRedo.LinkedURCmd = New UndoRedo.Void - Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo - - For xI1 = 1 To UBound(Notes) - If Not IsColumnNumeric(Notes(xI1).ColumnIndex) Then Continue For - If Not Notes(xI1).Selected Then Continue For - - Me.RedoRelabelNote(Notes(xI1), xD1, xUndo, xRedo) - Notes(xI1).Value = xD1 - Next - AddUndo(xUndo, xBaseRedo.Next) - End If - End If - - If xLbl Then - Dim xStr As String = UCase(Trim(InputBox(Strings.Messages.PromptEnter, Me.Text))) - - If Len(xStr) = 0 Then GoTo Jump2 - If xStr = "00" Or xStr = "0" Then GoTo Jump1 - If Not Len(xStr) = 1 And Not Len(xStr) = 2 Then GoTo Jump1 - - Dim xI3 As Integer = Asc(Mid(xStr, 1, 1)) - If Not ((xI3 >= 48 And xI3 <= 57) Or (xI3 >= 65 And xI3 <= 90)) Then GoTo Jump1 - If Len(xStr) = 2 Then - Dim xI4 As Integer = Asc(Mid(xStr, 2, 1)) - If Not ((xI4 >= 48 And xI4 <= 57) Or (xI4 >= 65 And xI4 <= 90)) Then GoTo Jump1 - End If - Dim xVal As Integer = C36to10(xStr) * 10000 - - Dim xUndo As UndoRedo.LinkedURCmd = Nothing - Dim xRedo As UndoRedo.LinkedURCmd = New UndoRedo.Void - Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo - - For xI1 = 1 To UBound(Notes) - If IsColumnNumeric(Notes(xI1).ColumnIndex) Then Continue For - If Not Notes(xI1).Selected Then Continue For - - Me.RedoRelabelNote(Notes(xI1), xVal, xUndo, xRedo) - Notes(xI1).Value = xVal - Next - AddUndo(xUndo, xBaseRedo.Next) - GoTo Jump2 -Jump1: - MsgBox(Strings.Messages.InvalidLabel, MsgBoxStyle.Critical, Strings.Messages.Err) -Jump2: - End If - - RefreshPanelAll() - End Sub - - Private Sub TBMyO2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBMyO2.Click, mnMyO2.Click - Dim xDiag As New dgMyO2 - xDiag.Show() - End Sub - - - Private Sub TBFind_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBFind.Click, mnFind.Click - Dim xDiag As New diagFind(gColumns, Strings.Messages.Err, Strings.Messages.InvalidLabel) - xDiag.Show() - End Sub - - Private Function fdrCheck(ByVal xNote As Note) As Boolean - Return xNote.VPosition >= MeasureBottom(fdriMesL) And xNote.VPosition < MeasureBottom(fdriMesU) + MeasureLength(fdriMesU) AndAlso - IIf(IsColumnNumeric(xNote.ColumnIndex), - xNote.Value >= fdriValL And xNote.Value <= fdriValU, - xNote.Value >= fdriLblL And xNote.Value <= fdriLblU) AndAlso - Array.IndexOf(fdriCol, xNote.ColumnIndex - 1) <> -1 - ' lol Fixed - End Function - - Private Function fdrRangeS(ByVal xbLim1 As Boolean, ByVal xbLim2 As Boolean, ByVal xVal As Boolean) As Boolean - Return (Not xbLim1 And xbLim2 And xVal) Or (xbLim1 And Not xbLim2 And Not xVal) Or (xbLim1 And xbLim2) - End Function - - Public Sub fdrSelect(ByVal iRange As Integer, - ByVal xMesL As Integer, ByVal xMesU As Integer, - ByVal xLblL As String, ByVal xLblU As String, - ByVal xValL As Integer, ByVal xValU As Integer, - ByVal iCol() As Integer) - - fdriMesL = xMesL - fdriMesU = xMesU - fdriLblL = C36to10(xLblL) * 10000 - fdriLblU = C36to10(xLblU) * 10000 - fdriValL = xValL - fdriValU = xValU - fdriCol = iCol - - Dim xbSel As Boolean = iRange Mod 2 = 0 - Dim xbUnsel As Boolean = iRange Mod 3 = 0 - Dim xbShort As Boolean = iRange Mod 5 = 0 - Dim xbLong As Boolean = iRange Mod 7 = 0 - Dim xbHidden As Boolean = iRange Mod 11 = 0 - Dim xbVisible As Boolean = iRange Mod 13 = 0 - - Dim xSel(UBound(Notes)) As Boolean - For xI1 As Integer = 1 To UBound(Notes) - xSel(xI1) = Notes(xI1).Selected - Next - - 'Main process - For xI1 As Integer = 1 To UBound(Notes) - ' Dim bbba As Boolean = xbSel And xSel(xI1) - ' Dim bbbb As Boolean = xbUnsel And Not xSel(xI1) - ' Dim bbbc As Boolean = nEnabled(Notes(xI1).ColumnIndex) - ' Dim bbbd As Boolean = fdrRangeS(xbShort, xbLong, IIf(NTInput, Notes(xI1).Length, Notes(xI1).LongNote)) - ' Dim bbbe As Boolean = fdrRangeS(xbVisible, xbHidden, Notes(xI1).Hidden) - ' Dim bbbf As Boolean = fdrCheck(Notes(xI1)) - - If ((xbSel And xSel(xI1)) Or (xbUnsel And Not xSel(xI1))) AndAlso - nEnabled(Notes(xI1).ColumnIndex) AndAlso fdrRangeS(xbShort, xbLong, IIf(NTInput, Notes(xI1).Length, Notes(xI1).LongNote)) And fdrRangeS(xbVisible, xbHidden, Notes(xI1).Hidden) Then - Notes(xI1).Selected = fdrCheck(Notes(xI1)) - End If - Next - - RefreshPanelAll() - Beep() - End Sub - - Public Sub fdrUnselect(ByVal iRange As Integer, - ByVal xMesL As Integer, ByVal xMesU As Integer, - ByVal xLblL As String, ByVal xLblU As String, - ByVal xValL As Integer, ByVal xValU As Integer, - ByVal iCol() As Integer) - - fdriMesL = xMesL - fdriMesU = xMesU - fdriLblL = C36to10(xLblL) * 10000 - fdriLblU = C36to10(xLblU) * 10000 - fdriValL = xValL - fdriValU = xValU - fdriCol = iCol - - Dim xbSel As Boolean = iRange Mod 2 = 0 - Dim xbUnsel As Boolean = iRange Mod 3 = 0 - Dim xbShort As Boolean = iRange Mod 5 = 0 - Dim xbLong As Boolean = iRange Mod 7 = 0 - Dim xbHidden As Boolean = iRange Mod 11 = 0 - Dim xbVisible As Boolean = iRange Mod 13 = 0 - - Dim xSel(UBound(Notes)) As Boolean - For xI1 As Integer = 1 To UBound(Notes) - xSel(xI1) = Notes(xI1).Selected - Next - - 'Main process - For xI1 As Integer = 1 To UBound(Notes) - If ((xbSel And xSel(xI1)) Or (xbUnsel And Not xSel(xI1))) AndAlso - nEnabled(Notes(xI1).ColumnIndex) AndAlso fdrRangeS(xbShort, xbLong, IIf(NTInput, Notes(xI1).Length, Notes(xI1).LongNote)) And fdrRangeS(xbVisible, xbHidden, Notes(xI1).Hidden) Then - Notes(xI1).Selected = Not fdrCheck(Notes(xI1)) - End If - Next - - RefreshPanelAll() - Beep() - End Sub - - Public Sub fdrPrevious(ByVal iRange As Integer, - ByVal xMesL As Integer, ByVal xMesU As Integer, - ByVal xLblL As String, ByVal xLblU As String, - ByVal xValL As Integer, ByVal xValU As Integer, - ByVal iCol() As Integer) - ' P: 1 note on 1 line at a time. Good enough. - fdriMesL = xMesL - fdriMesU = xMesU - fdriLblL = C36to10(xLblL) * 10000 - fdriLblU = C36to10(xLblU) * 10000 - fdriValL = xValL - fdriValU = xValU - fdriCol = iCol - - Dim xbSel As Boolean = iRange Mod 2 = 0 - Dim xbUnsel As Boolean = iRange Mod 3 = 0 - Dim xbShort As Boolean = iRange Mod 5 = 0 - Dim xbLong As Boolean = iRange Mod 7 = 0 - Dim xbHidden As Boolean = iRange Mod 11 = 0 - Dim xbVisible As Boolean = iRange Mod 13 = 0 - - Dim xSel(UBound(Notes)) As Boolean - For xI1 As Integer = 1 To UBound(Notes) - xSel(xI1) = Notes(xI1).Selected - Notes(xI1).Selected = False - Next - - For xI1 = UBound(Notes) To 1 Step -1 - If ((xbSel And xSel(xI1)) Or (xbUnsel And Not xSel(xI1))) AndAlso - nEnabled(Notes(xI1).ColumnIndex) AndAlso fdrRangeS(xbShort, xbLong, IIf(NTInput, Notes(xI1).Length, Notes(xI1).LongNote)) And fdrRangeS(xbVisible, xbHidden, Notes(xI1).Hidden) AndAlso - fdrCheck(Notes(xI1)) AndAlso - Notes(xI1).VPosition < -PanelVScroll(PanelFocus) Then - PanelVScroll(PanelFocus) = -Notes(xI1).VPosition - Notes(xI1).Selected = True - Exit For - End If - Next - - RefreshPanelAll() - Beep() - End Sub - Public Sub fdrNext(ByVal iRange As Integer, - ByVal xMesL As Integer, ByVal xMesU As Integer, - ByVal xLblL As String, ByVal xLblU As String, - ByVal xValL As Integer, ByVal xValU As Integer, - ByVal iCol() As Integer) - ' P: 1 note on 1 line at a time. Good enough. - fdriMesL = xMesL - fdriMesU = xMesU - fdriLblL = C36to10(xLblL) * 10000 - fdriLblU = C36to10(xLblU) * 10000 - fdriValL = xValL - fdriValU = xValU - fdriCol = iCol - - Dim xbSel As Boolean = iRange Mod 2 = 0 - Dim xbUnsel As Boolean = iRange Mod 3 = 0 - Dim xbShort As Boolean = iRange Mod 5 = 0 - Dim xbLong As Boolean = iRange Mod 7 = 0 - Dim xbHidden As Boolean = iRange Mod 11 = 0 - Dim xbVisible As Boolean = iRange Mod 13 = 0 - - Dim xSel(UBound(Notes)) As Boolean - For xI1 As Integer = 1 To UBound(Notes) - xSel(xI1) = Notes(xI1).Selected - Notes(xI1).Selected = False - Next - - For xI1 = 1 To UBound(Notes) - If ((xbSel And xSel(xI1)) Or (xbUnsel And Not xSel(xI1))) AndAlso - nEnabled(Notes(xI1).ColumnIndex) AndAlso fdrRangeS(xbShort, xbLong, IIf(NTInput, Notes(xI1).Length, Notes(xI1).LongNote)) And fdrRangeS(xbVisible, xbHidden, Notes(xI1).Hidden) AndAlso - fdrCheck(Notes(xI1)) AndAlso - Notes(xI1).VPosition > -PanelVScroll(PanelFocus) Then - PanelVScroll(PanelFocus) = -Notes(xI1).VPosition - Notes(xI1).Selected = True - Exit For - End If - Next - - RefreshPanelAll() - Beep() - End Sub - - Public Sub fdrDelete(ByVal iRange As Integer, - ByVal xMesL As Integer, ByVal xMesU As Integer, - ByVal xLblL As String, ByVal xLblU As String, - ByVal xValL As Integer, ByVal xValU As Integer, - ByVal iCol() As Integer) - - fdriMesL = xMesL - fdriMesU = xMesU - fdriLblL = C36to10(xLblL) * 10000 - fdriLblU = C36to10(xLblU) * 10000 - fdriValL = xValL - fdriValU = xValU - fdriCol = iCol - - Dim xbSel As Boolean = iRange Mod 2 = 0 - Dim xbUnsel As Boolean = iRange Mod 3 = 0 - Dim xbShort As Boolean = iRange Mod 5 = 0 - Dim xbLong As Boolean = iRange Mod 7 = 0 - Dim xbHidden As Boolean = iRange Mod 11 = 0 - Dim xbVisible As Boolean = iRange Mod 13 = 0 - - Dim xUndo As UndoRedo.LinkedURCmd = Nothing - Dim xRedo As UndoRedo.LinkedURCmd = New UndoRedo.Void - Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo - - 'Main process - Dim xI1 As Integer = 1 - Do While xI1 <= UBound(Notes) - If ((xbSel And Notes(xI1).Selected) Or (xbUnsel And Not Notes(xI1).Selected)) AndAlso - fdrCheck(Notes(xI1)) AndAlso nEnabled(Notes(xI1).ColumnIndex) AndAlso fdrRangeS(xbShort, xbLong, IIf(NTInput, Notes(xI1).Length, Notes(xI1).LongNote)) And fdrRangeS(xbVisible, xbHidden, Notes(xI1).Hidden) Then - RedoRemoveNote(Notes(xI1), xUndo, xRedo) - RemoveNote(xI1, False) - Else - xI1 += 1 - End If - Loop - - AddUndo(xUndo, xBaseRedo.Next) - SortByVPositionInsertion() - UpdatePairing() - RefreshPanelAll() - CalculateTotalPlayableNotes() - Beep() - End Sub - - Public Sub fdrReplaceL(ByVal iRange As Integer, - ByVal xMesL As Integer, ByVal xMesU As Integer, - ByVal xLblL As String, ByVal xLblU As String, - ByVal xValL As Integer, ByVal xValU As Integer, - ByVal iCol() As Integer, ByVal xReplaceLbl As String) - - fdriMesL = xMesL - fdriMesU = xMesU - fdriLblL = C36to10(xLblL) * 10000 - fdriLblU = C36to10(xLblU) * 10000 - fdriValL = xValL - fdriValU = xValU - fdriCol = iCol - - Dim xbSel As Boolean = iRange Mod 2 = 0 - Dim xbUnsel As Boolean = iRange Mod 3 = 0 - Dim xbShort As Boolean = iRange Mod 5 = 0 - Dim xbLong As Boolean = iRange Mod 7 = 0 - Dim xbHidden As Boolean = iRange Mod 11 = 0 - Dim xbVisible As Boolean = iRange Mod 13 = 0 - - Dim xxLbl As Integer = C36to10(xReplaceLbl) * 10000 - - Dim xUndo As UndoRedo.LinkedURCmd = Nothing - Dim xRedo As UndoRedo.LinkedURCmd = New UndoRedo.Void - Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo - - 'Main process - For xI1 As Integer = 1 To UBound(Notes) - If ((xbSel And Notes(xI1).Selected) Or (xbUnsel And Not Notes(xI1).Selected)) AndAlso - fdrCheck(Notes(xI1)) AndAlso nEnabled(Notes(xI1).ColumnIndex) And Not IsColumnNumeric(Notes(xI1).ColumnIndex) AndAlso fdrRangeS(xbShort, xbLong, IIf(NTInput, Notes(xI1).Length, Notes(xI1).LongNote)) And fdrRangeS(xbVisible, xbHidden, Notes(xI1).Hidden) Then - 'xUndo &= sCmdKC(K(xI1).ColumnIndex, K(xI1).VPosition, xxLbl, IIf(NTInput, K(xI1).Length, K(xI1).LongNote), K(xI1).Hidden, 0, 0, K(xI1).Value, IIf(NTInput, K(xI1).Length, K(xI1).LongNote), K(xI1).Hidden, True) & vbCrLf - 'xRedo &= sCmdKC(K(xI1).ColumnIndex, K(xI1).VPosition, K(xI1).Value, IIf(NTInput, K(xI1).Length, K(xI1).LongNote), K(xI1).Hidden, 0, 0, xxLbl, IIf(NTInput, K(xI1).Length, K(xI1).LongNote), K(xI1).Hidden, True) & vbCrLf - Me.RedoRelabelNote(Notes(xI1), xxLbl, xUndo, xRedo) - Notes(xI1).Value = xxLbl - End If - Next - - AddUndo(xUndo, xBaseRedo.Next) - RefreshPanelAll() - Beep() - End Sub - - Public Sub fdrReplaceV(ByVal iRange As Integer, - ByVal xMesL As Integer, ByVal xMesU As Integer, - ByVal xLblL As String, ByVal xLblU As String, - ByVal xValL As Integer, ByVal xValU As Integer, - ByVal iCol() As Integer, ByVal xReplaceVal As Integer) - - fdriMesL = xMesL - fdriMesU = xMesU - fdriLblL = C36to10(xLblL) * 10000 - fdriLblU = C36to10(xLblU) * 10000 - fdriValL = xValL - fdriValU = xValU - fdriCol = iCol - - Dim xbSel As Boolean = iRange Mod 2 = 0 - Dim xbUnsel As Boolean = iRange Mod 3 = 0 - Dim xbShort As Boolean = iRange Mod 5 = 0 - Dim xbLong As Boolean = iRange Mod 7 = 0 - Dim xbHidden As Boolean = iRange Mod 11 = 0 - Dim xbVisible As Boolean = iRange Mod 13 = 0 - - Dim xUndo As UndoRedo.LinkedURCmd = Nothing - Dim xRedo As UndoRedo.LinkedURCmd = New UndoRedo.Void - Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo - - 'Main process - For xI1 As Integer = 1 To UBound(Notes) - If ((xbSel And Notes(xI1).Selected) Or (xbUnsel And Not Notes(xI1).Selected)) AndAlso - fdrCheck(Notes(xI1)) AndAlso nEnabled(Notes(xI1).ColumnIndex) And IsColumnNumeric(Notes(xI1).ColumnIndex) AndAlso fdrRangeS(xbShort, xbLong, IIf(NTInput, Notes(xI1).Length, Notes(xI1).LongNote)) And fdrRangeS(xbVisible, xbHidden, Notes(xI1).Hidden) Then - 'xUndo &= sCmdKC(K(xI1).ColumnIndex, K(xI1).VPosition, xReplaceVal, IIf(NTInput, K(xI1).Length, K(xI1).LongNote), K(xI1).Hidden, 0, 0, K(xI1).Value, IIf(NTInput, K(xI1).Length, K(xI1).LongNote), K(xI1).Hidden, True) & vbCrLf - 'xRedo &= sCmdKC(K(xI1).ColumnIndex, K(xI1).VPosition, K(xI1).Value, IIf(NTInput, K(xI1).Length, K(xI1).LongNote), K(xI1).Hidden, 0, 0, xReplaceVal, IIf(NTInput, K(xI1).Length, K(xI1).LongNote), K(xI1).Hidden, True) & vbCrLf - Me.RedoRelabelNote(Notes(xI1), xReplaceVal, xUndo, xRedo) - Notes(xI1).Value = xReplaceVal - End If - Next - - AddUndo(xUndo, xBaseRedo.Next) - RefreshPanelAll() - Beep() - End Sub - - Private Sub MInsert_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MInsert.Click - Dim xUndo As UndoRedo.LinkedURCmd = Nothing - Dim xRedo As UndoRedo.LinkedURCmd = New UndoRedo.Void - Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo - - Dim xMeasure As Integer = MeasureAtDisplacement(menuVPosition) - Dim xMLength As Double = MeasureLength(xMeasure) - Dim xVP As Double = MeasureBottom(xMeasure) - - If NTInput Then - Dim xI1 As Integer = 1 - Do While xI1 <= UBound(Notes) - If MeasureAtDisplacement(Notes(xI1).VPosition) >= 999 Then - Me.RedoRemoveNote(Notes(xI1), xUndo, xRedo) - RemoveNote(xI1, False) - Else - xI1 += 1 - End If - Loop - - Dim xdVP As Double - For xI1 = 1 To UBound(Notes) - If Notes(xI1).VPosition >= xVP And Notes(xI1).VPosition + Notes(xI1).Length <= MeasureBottom(999) Then - Me.RedoMoveNote(Notes(xI1), Notes(xI1).ColumnIndex, Notes(xI1).VPosition + xMLength, xUndo, xRedo) - Notes(xI1).VPosition += xMLength - - ElseIf Notes(xI1).VPosition >= xVP Then - xdVP = MeasureBottom(999) - 1 - Notes(xI1).VPosition - Notes(xI1).Length - Me.RedoLongNoteModify(Notes(xI1), Notes(xI1).VPosition + xMLength, Notes(xI1).Length + xdVP, xUndo, xRedo) - Notes(xI1).VPosition += xMLength - Notes(xI1).Length += xdVP - - ElseIf Notes(xI1).VPosition + Notes(xI1).Length >= xVP Then - xdVP = IIf(Notes(xI1).VPosition + Notes(xI1).Length > MeasureBottom(999) - 1, GetMaxVPosition() - 1 - Notes(xI1).VPosition - Notes(xI1).Length, xMLength) - Me.RedoLongNoteModify(Notes(xI1), Notes(xI1).VPosition, Notes(xI1).Length + xdVP, xUndo, xRedo) - Notes(xI1).Length += xdVP - End If - Next - - Else - Dim xI1 As Integer = 1 - Do While xI1 <= UBound(Notes) - If MeasureAtDisplacement(Notes(xI1).VPosition) >= 999 Then - Me.RedoRemoveNote(Notes(xI1), xUndo, xRedo) - RemoveNote(xI1, False) - Else - xI1 += 1 - End If - Loop - - For xI1 = 1 To UBound(Notes) - If Notes(xI1).VPosition >= xVP Then - Me.RedoMoveNote(Notes(xI1), Notes(xI1).ColumnIndex, Notes(xI1).VPosition + xMLength, xUndo, xRedo) - Notes(xI1).VPosition += xMLength - End If - Next - End If - - For xI1 As Integer = 999 To xMeasure + 1 Step -1 - MeasureLength(xI1) = MeasureLength(xI1 - 1) - Next - UpdateMeasureBottom() - - AddUndo(xUndo, xBaseRedo.Next) - UpdatePairing() - CalculateGreatestVPosition() - CalculateTotalPlayableNotes() - RefreshPanelAll() - End Sub - - Private Sub MRemove_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MRemove.Click - Dim xUndo As UndoRedo.LinkedURCmd = Nothing - Dim xRedo As UndoRedo.LinkedURCmd = New UndoRedo.Void - Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo - - Dim xMeasure As Integer = MeasureAtDisplacement(menuVPosition) - Dim xMLength As Double = MeasureLength(xMeasure) - Dim xVP As Double = MeasureBottom(xMeasure) - - If NTInput Then - Dim xI1 As Integer = 1 - Do While xI1 <= UBound(Notes) - If MeasureAtDisplacement(Notes(xI1).VPosition) = xMeasure And MeasureAtDisplacement(Notes(xI1).VPosition + Notes(xI1).Length) = xMeasure Then - Me.RedoRemoveNote(Notes(xI1), xUndo, xRedo) - RemoveNote(xI1, False) - Else - xI1 += 1 - End If - Loop - - Dim xdVP As Double - xVP = MeasureBottom(xMeasure) - For xI1 = 1 To UBound(Notes) - If Notes(xI1).VPosition >= xVP + xMLength Then - Me.RedoMoveNote(Notes(xI1), Notes(xI1).ColumnIndex, Notes(xI1).VPosition - xMLength, xUndo, xRedo) - Notes(xI1).VPosition -= xMLength - - ElseIf Notes(xI1).VPosition >= xVP Then - xdVP = xMLength + xVP - Notes(xI1).VPosition - Me.RedoLongNoteModify(Notes(xI1), Notes(xI1).VPosition + xdVP - xMLength, Notes(xI1).Length - xdVP, xUndo, xRedo) - Notes(xI1).VPosition += xdVP - xMLength - Notes(xI1).Length -= xdVP - - ElseIf Notes(xI1).VPosition + Notes(xI1).Length >= xVP Then - xdVP = IIf(Notes(xI1).VPosition + Notes(xI1).Length >= xVP + xMLength, xMLength, Notes(xI1).VPosition + Notes(xI1).Length - xVP + 1) - Me.RedoLongNoteModify(Notes(xI1), Notes(xI1).VPosition, Notes(xI1).Length - xdVP, xUndo, xRedo) - Notes(xI1).Length -= xdVP - End If - Next - - Else - Dim xI1 As Integer = 1 - Do While xI1 <= UBound(Notes) - If MeasureAtDisplacement(Notes(xI1).VPosition) = xMeasure Then - Me.RedoRemoveNote(Notes(xI1), xUndo, xRedo) - RemoveNote(xI1, False) - Else - xI1 += 1 - End If - Loop - - xVP = MeasureBottom(xMeasure) - For xI1 = 1 To UBound(Notes) - If Notes(xI1).VPosition >= xVP Then - Me.RedoMoveNote(Notes(xI1), Notes(xI1).ColumnIndex, Notes(xI1).VPosition - xMLength, xUndo, xRedo) - Notes(xI1).VPosition -= xMLength - End If - Next - End If - - For xI1 As Integer = 999 To xMeasure + 1 Step -1 - MeasureLength(xI1 - 1) = MeasureLength(xI1) - Next - UpdateMeasureBottom() - - AddUndo(xUndo, xBaseRedo.Next) - SortByVPositionInsertion() - UpdatePairing() - CalculateGreatestVPosition() - CalculateTotalPlayableNotes() - RefreshPanelAll() - End Sub - - Private Sub TBThemeDef_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBThemeDef.Click - Dim xTempFileName As String = My.Application.Info.DirectoryPath & "\____TempFile.Theme.xml" - My.Computer.FileSystem.WriteAllText(xTempFileName, My.Resources.O2Mania_Theme, False, System.Text.Encoding.Unicode) - LoadSettings(xTempFileName) - System.IO.File.Delete(xTempFileName) - - RefreshPanelAll() - End Sub - - Private Sub TBThemeSave_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBThemeSave.Click - Dim xDiag As New SaveFileDialog - xDiag.Filter = Strings.FileType.THEME_XML & "|*.Theme.xml" - xDiag.DefaultExt = "Theme.xml" - xDiag.InitialDirectory = My.Application.Info.DirectoryPath & "\Data" - If xDiag.ShowDialog = Windows.Forms.DialogResult.Cancel Then Exit Sub - - Me.SaveSettings(xDiag.FileName, True) - If BeepWhileSaved Then Beep() - TBThemeRefresh_Click(TBThemeRefresh, New System.EventArgs) - End Sub - - Private Sub TBThemeRefresh_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBThemeRefresh.Click - For xI1 As Integer = cmnTheme.Items.Count - 1 To 5 Step -1 - Try - cmnTheme.Items.RemoveAt(xI1) - Catch ex As Exception - End Try - Next - - If Not Directory.Exists(My.Application.Info.DirectoryPath & "\Data") Then My.Computer.FileSystem.CreateDirectory(My.Application.Info.DirectoryPath & "\Data") - Dim xFileNames() As FileInfo = My.Computer.FileSystem.GetDirectoryInfo(My.Application.Info.DirectoryPath & "\Data").GetFiles("*.Theme.xml") - For Each xStr As FileInfo In xFileNames - cmnTheme.Items.Add(xStr.Name, Nothing, AddressOf LoadTheme) - Next - End Sub - - Private Sub TBThemeLoadComptability_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBThemeLoadComptability.Click - Dim xDiag As New OpenFileDialog - xDiag.Filter = Strings.FileType.TH & "|*.th" - xDiag.DefaultExt = "th" - xDiag.InitialDirectory = My.Application.Info.DirectoryPath - If My.Computer.FileSystem.DirectoryExists(My.Application.Info.DirectoryPath & "\Theme") Then xDiag.InitialDirectory = My.Application.Info.DirectoryPath & "\Theme" - If xDiag.ShowDialog = Windows.Forms.DialogResult.Cancel Then Exit Sub - - Me.LoadThemeComptability(xDiag.FileName) - RefreshPanelAll() - End Sub - - ''' - ''' Will return Double.PositiveInfinity if canceled. - ''' - Private Function InputBoxDouble(ByVal Prompt As String, ByVal LBound As Double, ByVal UBound As Double, Optional ByVal Title As String = "", Optional ByVal DefaultResponse As String = "") As Double - Dim xStr As String = InputBox(Prompt, Title, DefaultResponse) - If xStr = "" Then Return Double.PositiveInfinity - - InputBoxDouble = Val(xStr) - If InputBoxDouble > UBound Then InputBoxDouble = UBound - If InputBoxDouble < LBound Then InputBoxDouble = LBound - End Function - - Private Sub FSSS_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles FSSS.Click - Dim xMax As Double = IIf(vSelLength > 0, GetMaxVPosition() - vSelLength, GetMaxVPosition) - Dim xMin As Double = IIf(vSelLength < 0, -vSelLength, 0) - Dim xDouble As Double = InputBoxDouble("Please enter a number between " & xMin & " and " & xMax & ".", xMin, xMax, , vSelStart) - If xDouble = Double.PositiveInfinity Then Return - - vSelStart = xDouble - ValidateSelection() - RefreshPanelAll() - POStatusRefresh() - End Sub - - Private Sub FSSL_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles FSSL.Click - Dim xMax As Double = GetMaxVPosition() - vSelStart - Dim xMin As Double = -vSelStart - Dim xDouble As Double = InputBoxDouble("Please enter a number between " & xMin & " and " & xMax & ".", xMin, xMax, , vSelLength) - If xDouble = Double.PositiveInfinity Then Return - - vSelLength = xDouble - ValidateSelection() - RefreshPanelAll() - POStatusRefresh() - End Sub - - Private Sub FSSH_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles FSSH.Click - Dim xMax As Double = IIf(vSelLength > 0, vSelLength, 0) - Dim xMin As Double = IIf(vSelLength > 0, 0, -vSelLength) - Dim xDouble As Double = InputBoxDouble("Please enter a number between " & xMin & " and " & xMax & ".", xMin, xMax, , vSelHalf) - If xDouble = Double.PositiveInfinity Then Return - - vSelHalf = xDouble - ValidateSelection() - RefreshPanelAll() - POStatusRefresh() - End Sub - - Private Sub BVCReverse_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BVCReverse.Click - vSelStart += vSelLength - vSelHalf -= vSelLength - vSelLength *= -1 - ValidateSelection() - RefreshPanelAll() - POStatusRefresh() - End Sub - - Private Sub AutoSaveTimer_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles AutoSaveTimer.Tick - Dim xTime As Date = Now - Dim xFileName As String - With xTime - xFileName = My.Application.Info.DirectoryPath & "\AutoSave_" & - .Year & "_" & .Month & "_" & .Day & "_" & .Hour & "_" & .Minute & "_" & .Second & "_" & .Millisecond & ".IBMSC" - End With - 'My.Computer.FileSystem.WriteAllText(xFileName, SaveiBMSC, False, System.Text.Encoding.Unicode) - SaveiBMSC(xFileName) - - On Error Resume Next - If PreviousAutoSavedFileName <> "" Then IO.File.Delete(PreviousAutoSavedFileName) - On Error GoTo 0 - - PreviousAutoSavedFileName = xFileName - End Sub - - Private Sub CWAVMultiSelect_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CWAVMultiSelect.CheckedChanged - WAVMultiSelect = CWAVMultiSelect.Checked - LWAV.SelectionMode = IIf(WAVMultiSelect, SelectionMode.MultiExtended, SelectionMode.One) - End Sub - - Private Sub CWAVChangeLabel_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CWAVChangeLabel.CheckedChanged - WAVChangeLabel = CWAVChangeLabel.Checked - End Sub - - Private Sub BWAVUp_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BWAVUp.Click - If LWAV.SelectedIndex = -1 Then Return - - Dim xUndo As UndoRedo.LinkedURCmd = Nothing - Dim xRedo As UndoRedo.LinkedURCmd = New UndoRedo.Void - Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo - - Dim xIndices(LWAV.SelectedIndices.Count - 1) As Integer - LWAV.SelectedIndices.CopyTo(xIndices, 0) - - Dim xS As Integer - For xS = 0 To 1294 - If Array.IndexOf(xIndices, xS) = -1 Then Exit For - Next - - Dim xStr As String = "" - Dim xIndex As Integer = -1 - For xI1 As Integer = xS To 1294 - xIndex = Array.IndexOf(xIndices, xI1) - If xIndex <> -1 Then - xStr = hWAV(xI1 + 1) - hWAV(xI1 + 1) = hWAV(xI1) - hWAV(xI1) = xStr - - LWAV.Items.Item(xI1) = C10to36(xI1 + 1) & ": " & hWAV(xI1 + 1) - LWAV.Items.Item(xI1 - 1) = C10to36(xI1) & ": " & hWAV(xI1) - - If Not WAVChangeLabel Then GoTo 1100 - - Dim xL1 As String = C10to36(xI1) - Dim xL2 As String = C10to36(xI1 + 1) - For xI2 As Integer = 1 To UBound(Notes) - If IsColumnNumeric(Notes(xI2).ColumnIndex) Then Continue For - - If C10to36(Notes(xI2).Value \ 10000) = xL1 Then - Me.RedoRelabelNote(Notes(xI2), xI1 * 10000 + 10000, xUndo, xRedo) - Notes(xI2).Value = xI1 * 10000 + 10000 - - ElseIf C10to36(Notes(xI2).Value \ 10000) = xL2 Then - Me.RedoRelabelNote(Notes(xI2), xI1 * 10000, xUndo, xRedo) - Notes(xI2).Value = xI1 * 10000 - - End If - Next - -1100: xIndices(xIndex) += -1 - End If - Next - - LWAV.SelectedIndices.Clear() - For xI1 As Integer = 0 To UBound(xIndices) - LWAV.SelectedIndices.Add(xIndices(xI1)) - Next - - AddUndo(xUndo, xBaseRedo.Next) - RefreshPanelAll() - POStatusRefresh() - End Sub - - Private Sub BWAVDown_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BWAVDown.Click - If LWAV.SelectedIndex = -1 Then Return - - Dim xUndo As UndoRedo.LinkedURCmd = Nothing - Dim xRedo As UndoRedo.LinkedURCmd = New UndoRedo.Void - Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo - - Dim xIndices(LWAV.SelectedIndices.Count - 1) As Integer - LWAV.SelectedIndices.CopyTo(xIndices, 0) - - Dim xS As Integer - For xS = 1294 To 0 Step -1 - If Array.IndexOf(xIndices, xS) = -1 Then Exit For - Next - - Dim xStr As String = "" - Dim xIndex As Integer = -1 - For xI1 As Integer = xS To 0 Step -1 - xIndex = Array.IndexOf(xIndices, xI1) - If xIndex <> -1 Then - xStr = hWAV(xI1 + 1) - hWAV(xI1 + 1) = hWAV(xI1 + 2) - hWAV(xI1 + 2) = xStr - - LWAV.Items.Item(xI1) = C10to36(xI1 + 1) & ": " & hWAV(xI1 + 1) - LWAV.Items.Item(xI1 + 1) = C10to36(xI1 + 2) & ": " & hWAV(xI1 + 2) - - If Not WAVChangeLabel Then GoTo 1100 - - Dim xL1 As String = C10to36(xI1 + 2) - Dim xL2 As String = C10to36(xI1 + 1) - For xI2 As Integer = 1 To UBound(Notes) - If IsColumnNumeric(Notes(xI2).ColumnIndex) Then Continue For - - If C10to36(Notes(xI2).Value \ 10000) = xL1 Then - Me.RedoRelabelNote(Notes(xI2), xI1 * 10000 + 10000, xUndo, xRedo) - Notes(xI2).Value = xI1 * 10000 + 10000 - - ElseIf C10to36(Notes(xI2).Value \ 10000) = xL2 Then - Me.RedoRelabelNote(Notes(xI2), xI1 * 10000 + 20000, xUndo, xRedo) - Notes(xI2).Value = xI1 * 10000 + 20000 - - End If - Next - -1100: xIndices(xIndex) += 1 - End If - Next - - LWAV.SelectedIndices.Clear() - For xI1 As Integer = 0 To UBound(xIndices) - LWAV.SelectedIndices.Add(xIndices(xI1)) - Next - - AddUndo(xUndo, xBaseRedo.Next) - RefreshPanelAll() - POStatusRefresh() - End Sub - - Private Sub BWAVBrowse_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BWAVBrowse.Click - Dim xDWAV As New OpenFileDialog - xDWAV.DefaultExt = "wav" - xDWAV.Filter = Strings.FileType._wave & "|*.wav;*.ogg;*.mp3|" & - Strings.FileType.WAV & "|*.wav|" & - Strings.FileType.OGG & "|*.ogg|" & - Strings.FileType.MP3 & "|*.mp3|" & - Strings.FileType._all & "|*.*" - xDWAV.InitialDirectory = IIf(ExcludeFileName(FileName) = "", InitPath, ExcludeFileName(FileName)) - xDWAV.Multiselect = WAVMultiSelect - - If xDWAV.ShowDialog = Windows.Forms.DialogResult.Cancel Then Exit Sub - InitPath = ExcludeFileName(xDWAV.FileName) - - AddToPOWAV(xDWAV.FileNames) - End Sub - - Private Sub BWAVRemove_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BWAVRemove.Click - Dim xIndices(LWAV.SelectedIndices.Count - 1) As Integer - LWAV.SelectedIndices.CopyTo(xIndices, 0) - For xI1 As Integer = 0 To UBound(xIndices) - hWAV(xIndices(xI1) + 1) = "" - LWAV.Items.Item(xIndices(xI1)) = C10to36(xIndices(xI1) + 1) & ": " - Next - - LWAV.SelectedIndices.Clear() - For xI1 As Integer = 0 To UBound(xIndices) - LWAV.SelectedIndices.Add(xIndices(xI1)) - Next - - If IsSaved Then SetIsSaved(False) - RefreshPanelAll() - POStatusRefresh() - End Sub - - Private Sub mnMain_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles mnMain.MouseDown ', TBMain.MouseDown ', pttl.MouseDown, pIsSaved.MouseDown - If e.Button = Windows.Forms.MouseButtons.Left Then - ReleaseCapture() - SendMessage(Me.Handle, &H112, &HF012, 0) - If e.Clicks = 2 Then - If Me.WindowState = FormWindowState.Maximized Then Me.WindowState = FormWindowState.Normal Else Me.WindowState = FormWindowState.Maximized - End If - ElseIf e.Button = Windows.Forms.MouseButtons.Right Then - 'mnSys.Show(sender, e.Location) - End If - End Sub - - Private Sub mnSelectAll_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnSelectAll.Click - If Not (PMainIn.Focused OrElse PMainInL.Focused Or PMainInR.Focused) Then Exit Sub - For xI1 As Integer = 1 To UBound(Notes) - Notes(xI1).Selected = nEnabled(Notes(xI1).ColumnIndex) - Next - If TBTimeSelect.Checked Then - CalculateGreatestVPosition() - vSelStart = 0 - vSelLength = MeasureBottom(MeasureAtDisplacement(GreatestVPosition)) + MeasureLength(MeasureAtDisplacement(GreatestVPosition)) - End If - RefreshPanelAll() - POStatusRefresh() - End Sub - - Private Sub mnDelete_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnDelete.Click - If Not (PMainIn.Focused OrElse PMainInL.Focused Or PMainInR.Focused) Then Exit Sub - - Dim xUndo As UndoRedo.LinkedURCmd = Nothing - Dim xRedo As UndoRedo.LinkedURCmd = New UndoRedo.Void - Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo - - Me.RedoRemoveNoteSelected(True, xUndo, xRedo) - RemoveNotes(True) - - AddUndo(xUndo, xBaseRedo.Next) - CalculateGreatestVPosition() - CalculateTotalPlayableNotes() - RefreshPanelAll() - POStatusRefresh() - End Sub - - Private Sub mnUpdate_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) - Process.Start("http://www.cs.mcgill.ca/~ryang6/iBMSC/") - End Sub - - Private Sub mnUpdateC_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) - Process.Start("http://bbs.rohome.net/thread-1074065-1-1.html") - End Sub - - Private Sub mnQuit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnQuit.Click - Close() - End Sub - - - Private Sub EnableDWM() - mnMain.BackColor = Color.Black - 'TBMain.BackColor = Color.FromArgb(64, 64, 64) - - For Each xmn As ToolStripMenuItem In mnMain.Items - xmn.ForeColor = Color.White - AddHandler xmn.DropDownClosed, AddressOf mn_DropDownClosed - AddHandler xmn.DropDownOpened, AddressOf mn_DropDownOpened - AddHandler xmn.MouseEnter, AddressOf mn_MouseEnter - AddHandler xmn.MouseLeave, AddressOf mn_MouseLeave - Next - End Sub - - Private Sub DisableDWM() - mnMain.BackColor = SystemColors.Control - 'TBMain.BackColor = SystemColors.Control - - For Each xmn As ToolStripMenuItem In mnMain.Items - xmn.ForeColor = SystemColors.ControlText - RemoveHandler xmn.DropDownClosed, AddressOf mn_DropDownClosed - RemoveHandler xmn.DropDownOpened, AddressOf mn_DropDownOpened - RemoveHandler xmn.MouseEnter, AddressOf mn_MouseEnter - RemoveHandler xmn.MouseLeave, AddressOf mn_MouseLeave - Next - End Sub - - Private Sub ttlIcon_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) - 'ttlIcon.Image = My.Resources.icon2_16 - 'mnSys.Show(ttlIcon, 0, ttlIcon.Height) - End Sub - Private Sub ttlIcon_MouseEnter(ByVal sender As Object, ByVal e As System.EventArgs) - 'ttlIcon.Image = My.Resources.icon2_16_highlight - End Sub - Private Sub ttlIcon_MouseLeave(ByVal sender As Object, ByVal e As System.EventArgs) - 'ttlIcon.Image = My.Resources.icon2_16 - End Sub - - Private Sub mnSMenu_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnSMenu.CheckedChanged - mnMain.Visible = mnSMenu.Checked - End Sub - Private Sub mnSTB_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnSTB.CheckedChanged - TBMain.Visible = mnSTB.Checked - End Sub - Private Sub mnSOP_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnSOP.CheckedChanged - POptions.Visible = mnSOP.Checked - End Sub - Private Sub mnSStatus_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnSStatus.CheckedChanged - pStatus.Visible = mnSStatus.Checked - End Sub - Private Sub mnSLSplitter_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnSLSplitter.CheckedChanged - SpL.Visible = mnSLSplitter.Checked - End Sub - Private Sub mnSRSplitter_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnSRSplitter.CheckedChanged - SpR.Visible = mnSRSplitter.Checked - End Sub - Private Sub CGShow_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CGShow.CheckedChanged - gShowGrid = CGShow.Checked - RefreshPanelAll() - End Sub - Private Sub CGShowS_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CGShowS.CheckedChanged - gShowSubGrid = CGShowS.Checked - RefreshPanelAll() - End Sub - Private Sub CGShowBG_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CGShowBG.CheckedChanged - gShowBG = CGShowBG.Checked - RefreshPanelAll() - End Sub - Private Sub CGShowM_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CGShowM.CheckedChanged - gShowMeasureNumber = CGShowM.Checked - RefreshPanelAll() - End Sub - Private Sub CGShowV_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CGShowV.CheckedChanged - gShowVerticalLine = CGShowV.Checked - RefreshPanelAll() - End Sub - Private Sub CGShowMB_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CGShowMB.CheckedChanged - gShowMeasureBar = CGShowMB.Checked - RefreshPanelAll() - End Sub - Private Sub CGShowC_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CGShowC.CheckedChanged - gShowC = CGShowC.Checked - RefreshPanelAll() - End Sub - Private Sub CGBLP_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CGBLP.CheckedChanged - gDisplayBGAColumn = CGBLP.Checked - - column(niBGA).isVisible = gDisplayBGAColumn - column(niLAYER).isVisible = gDisplayBGAColumn - column(niPOOR).isVisible = gDisplayBGAColumn - column(niS4).isVisible = gDisplayBGAColumn - - If IsInitializing Then Exit Sub - For xI1 As Integer = 1 To UBound(Notes) - Notes(xI1).Selected = Notes(xI1).Selected And nEnabled(Notes(xI1).ColumnIndex) - Next - 'AddUndo(xUndo, xRedo) - UpdateColumnsX() - RefreshPanelAll() - End Sub - Private Sub CGSCROLL_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CGSCROLL.CheckedChanged - gSCROLL = CGSCROLL.Checked - - column(niSCROLL).isVisible = gSCROLL - - If IsInitializing Then Exit Sub - For xI1 As Integer = 1 To UBound(Notes) - Notes(xI1).Selected = Notes(xI1).Selected And nEnabled(Notes(xI1).ColumnIndex) - Next - 'AddUndo(xUndo, xRedo) - UpdateColumnsX() - RefreshPanelAll() - End Sub - Private Sub CGSTOP_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CGSTOP.CheckedChanged - gSTOP = CGSTOP.Checked - - column(niSTOP).isVisible = gSTOP - - If IsInitializing Then Exit Sub - For xI1 As Integer = 1 To UBound(Notes) - Notes(xI1).Selected = Notes(xI1).Selected And nEnabled(Notes(xI1).ColumnIndex) - Next - 'AddUndo(xUndo, xRedo) - UpdateColumnsX() - RefreshPanelAll() - End Sub - Private Sub CGBPM_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CGBPM.CheckedChanged - 'Dim xUndo As UndoRedo.LinkedURCmd = Nothing - 'Dim xRedo As UndoRedo.LinkedURCmd = Nothing - 'Me.RedoChangeVisibleColumns(gBLP, gSTOP, iPlayer, gBLP, CGSTOP.Checked, iPlayer, xUndo, xRedo) - gBPM = CGBPM.Checked - - column(niBPM).isVisible = gBPM - - If IsInitializing Then Exit Sub - For xI1 As Integer = 1 To UBound(Notes) - Notes(xI1).Selected = Notes(xI1).Selected And nEnabled(Notes(xI1).ColumnIndex) - Next - 'AddUndo(xUndo, xRedo) - UpdateColumnsX() - RefreshPanelAll() - End Sub - - Private Sub CGDisableVertical_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CGDisableVertical.CheckedChanged - DisableVerticalMove = CGDisableVertical.Checked - End Sub - - Private Sub CBeatPreserve_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CBeatPreserve.Click, CBeatMeasure.Click, CBeatCut.Click, CBeatScale.Click - 'If Not sender.Checked Then Exit Sub - Dim xBeatList() As RadioButton = {CBeatPreserve, CBeatMeasure, CBeatCut, CBeatScale} - BeatChangeMode = Array.IndexOf(Of RadioButton)(xBeatList, sender) - 'For xI1 As Integer = 0 To mnBeat.Items.Count - 1 - 'If xI1 <> BeatChangeMode Then CType(mnBeat.Items(xI1), ToolStripMenuItem).Checked = False - 'Next - 'sender.Checked = True - End Sub - - - Private Sub tBeatValue_LostFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles tBeatValue.LostFocus - Dim a As Double - If Double.TryParse(tBeatValue.Text, a) Then - If a <= 0.0# Or a >= 1000.0# Then tBeatValue.BackColor = Color.FromArgb(&HFFFFC0C0) Else tBeatValue.BackColor = Nothing - - tBeatValue.Text = a - End If - End Sub - - - - Private Sub ApplyBeat(ByVal xRatio As Double, ByVal xDisplay As String) - SortByVPositionInsertion() - - Dim xUndo As UndoRedo.LinkedURCmd = Nothing - Dim xRedo As UndoRedo.LinkedURCmd = New UndoRedo.Void - Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo - - Me.RedoChangeMeasureLengthSelected(192 * xRatio, xUndo, xRedo) - - Dim xIndices(LBeat.SelectedIndices.Count - 1) As Integer - LBeat.SelectedIndices.CopyTo(xIndices, 0) - - - For Each xI1 As Integer In xIndices - Dim dLength As Double = xRatio * 192.0R - MeasureLength(xI1) - Dim dRatio As Double = xRatio * 192.0R / MeasureLength(xI1) - - Dim xBottom As Double = 0 - For xI2 As Integer = 0 To xI1 - 1 - xBottom += MeasureLength(xI2) - Next - Dim xUpBefore As Double = xBottom + MeasureLength(xI1) - Dim xUpAfter As Double = xUpBefore + dLength - - Select Case BeatChangeMode - Case 1 -case2: Dim xI0 As Integer - - If NTInput Then - For xI0 = 1 To UBound(Notes) - If Notes(xI0).VPosition >= xUpBefore Then Exit For - If Notes(xI0).VPosition + Notes(xI0).Length >= xUpBefore Then - Me.RedoLongNoteModify(Notes(xI0), Notes(xI0).VPosition, Notes(xI0).Length + dLength, xUndo, xRedo) - Notes(xI0).Length += dLength - End If - Next - Else - For xI0 = 1 To UBound(Notes) - If Notes(xI0).VPosition >= xUpBefore Then Exit For - Next - End If - - For xI9 As Integer = xI0 To UBound(Notes) - Me.RedoLongNoteModify(Notes(xI9), Notes(xI9).VPosition + dLength, Notes(xI9).Length, xUndo, xRedo) - Notes(xI9).VPosition += dLength - Next - - Case 2 - If dLength < 0 Then - If NTInput Then - Dim xI0 As Integer = 1 - Dim xU As Integer = UBound(Notes) - Do While xI0 <= xU - If Notes(xI0).VPosition < xUpAfter Then - If Notes(xI0).VPosition + Notes(xI0).Length >= xUpAfter And Notes(xI0).VPosition + Notes(xI0).Length < xUpBefore Then - Dim nLen As Double = xUpAfter - Notes(xI0).VPosition - 1.0R - Me.RedoLongNoteModify(Notes(xI0), Notes(xI0).VPosition, nLen, xUndo, xRedo) - Notes(xI0).Length = nLen - End If - ElseIf Notes(xI0).VPosition < xUpBefore Then - If Notes(xI0).VPosition + Notes(xI0).Length < xUpBefore Then - Me.RedoRemoveNote(Notes(xI0), xUndo, xRedo) - RemoveNote(xI0) - xI0 -= 1 - xU -= 1 - Else - Dim nLen As Double = Notes(xI0).Length - xUpBefore + Notes(xI0).VPosition - Me.RedoLongNoteModify(Notes(xI0), xUpBefore, nLen, xUndo, xRedo) - Notes(xI0).Length = nLen - Notes(xI0).VPosition = xUpBefore - End If - End If - xI0 += 1 - Loop - Else - Dim xI0 As Integer - Dim xI9 As Integer - For xI0 = 1 To UBound(Notes) - If Notes(xI0).VPosition >= xUpAfter Then Exit For - Next - For xI9 = xI0 To UBound(Notes) - If Notes(xI9).VPosition >= xUpBefore Then Exit For - Next - - For xI8 As Integer = xI0 To xI9 - 1 - Me.RedoRemoveNote(Notes(xI8), xUndo, xRedo) - Next - For xI8 As Integer = xI9 To UBound(Notes) - Notes(xI8 - xI9 + xI0) = Notes(xI8) - Next - ReDim Preserve Notes(UBound(Notes) - xI9 + xI0) - End If - End If - - GoTo case2 - - Case 3 - If NTInput Then - For xI0 As Integer = 1 To UBound(Notes) - If Notes(xI0).VPosition < xBottom Then - If Notes(xI0).VPosition + Notes(xI0).Length > xUpBefore Then - Me.RedoLongNoteModify(Notes(xI0), Notes(xI0).VPosition, Notes(xI0).Length + dLength, xUndo, xRedo) - Notes(xI0).Length += dLength - ElseIf Notes(xI0).VPosition + Notes(xI0).Length > xBottom Then - Dim nLen As Double = (Notes(xI0).Length + Notes(xI0).VPosition - xBottom) * dRatio + xBottom - Notes(xI0).VPosition - Me.RedoLongNoteModify(Notes(xI0), Notes(xI0).VPosition, nLen, xUndo, xRedo) - Notes(xI0).Length = nLen - End If - ElseIf Notes(xI0).VPosition < xUpBefore Then - If Notes(xI0).VPosition + Notes(xI0).Length > xUpBefore Then - Dim nLen As Double = (xUpBefore - Notes(xI0).VPosition) * dRatio + Notes(xI0).VPosition + Notes(xI0).Length - xUpBefore - Dim nVPos As Double = (Notes(xI0).VPosition - xBottom) * dRatio + xBottom - Me.RedoLongNoteModify(Notes(xI0), nVPos, nLen, xUndo, xRedo) - Notes(xI0).Length = nLen - Notes(xI0).VPosition = nVPos - Else - Dim nLen As Double = Notes(xI0).Length * dRatio - Dim nVPos As Double = (Notes(xI0).VPosition - xBottom) * dRatio + xBottom - Me.RedoLongNoteModify(Notes(xI0), nVPos, nLen, xUndo, xRedo) - Notes(xI0).Length = nLen - Notes(xI0).VPosition = nVPos - End If - Else - Me.RedoLongNoteModify(Notes(xI0), Notes(xI0).VPosition + dLength, Notes(xI0).Length, xUndo, xRedo) - Notes(xI0).VPosition += dLength - End If - Next - Else - Dim xI0 As Integer - Dim xI9 As Integer - For xI0 = 1 To UBound(Notes) - If Notes(xI0).VPosition >= xBottom Then Exit For - Next - For xI9 = xI0 To UBound(Notes) - If Notes(xI9).VPosition >= xUpBefore Then Exit For - Next - - For xI8 As Integer = xI0 To xI9 - 1 - Dim nVP As Double = (Notes(xI8).VPosition - xBottom) * dRatio + xBottom - Me.RedoLongNoteModify(Notes(xI0), nVP, Notes(xI0).Length, xUndo, xRedo) - Notes(xI8).VPosition = nVP - Next - - 'GoTo case2 - - For xI8 As Integer = xI9 To UBound(Notes) - Me.RedoLongNoteModify(Notes(xI8), Notes(xI8).VPosition + dLength, Notes(xI8).Length, xUndo, xRedo) - Notes(xI8).VPosition += dLength - Next - End If - - End Select - - MeasureLength(xI1) = xRatio * 192.0R - LBeat.Items(xI1) = Add3Zeros(xI1) & ": " & xDisplay - Next - UpdateMeasureBottom() - 'xUndo &= vbCrLf & xUndo2 - 'xRedo &= vbCrLf & xRedo2 - - LBeat.SelectedIndices.Clear() - For xI1 As Integer = 0 To UBound(xIndices) - LBeat.SelectedIndices.Add(xIndices(xI1)) - Next - - AddUndo(xUndo, xBaseRedo.Next) - SortByVPositionInsertion() - UpdatePairing() - CalculateTotalPlayableNotes() - CalculateGreatestVPosition() - RefreshPanelAll() - POStatusRefresh() - End Sub - - Private Sub BBeatApply_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BBeatApply.Click - Dim xxD As Integer = nBeatD.Value - Dim xxN As Integer = nBeatN.Value - Dim xxRatio As Double = xxN / xxD - - ApplyBeat(xxRatio, xxRatio & " ( " & xxN & " / " & xxD & " ) ") - End Sub - - Private Sub BBeatApplyV_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BBeatApplyV.Click - Dim a As Double - If Double.TryParse(tBeatValue.Text, a) Then - If a <= 0.0# Or a >= 1000.0# Then System.Media.SystemSounds.Hand.Play() : Exit Sub - - Dim xxD As Long = GetDenominator(a) - - ApplyBeat(a, a & IIf(xxD > 10000, "", " ( " & CLng(a * xxD) & " / " & xxD & " ) ")) - End If - End Sub - - - Private Sub BHStageFile_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BHStageFile.Click, BHBanner.Click, BHBackBMP.Click - Dim xDiag As New OpenFileDialog - xDiag.Filter = Strings.FileType._image & "|*.bmp;*.png;*.jpg;*.gif|" & - Strings.FileType._all & "|*.*" - xDiag.InitialDirectory = IIf(ExcludeFileName(FileName) = "", InitPath, ExcludeFileName(FileName)) - xDiag.DefaultExt = "png" - - If xDiag.ShowDialog = Windows.Forms.DialogResult.Cancel Then Exit Sub - InitPath = ExcludeFileName(xDiag.FileName) - - If [Object].ReferenceEquals(sender, BHStageFile) Then - THStageFile.Text = GetFileName(xDiag.FileName) - ElseIf [Object].ReferenceEquals(sender, BHBanner) Then - THBanner.Text = GetFileName(xDiag.FileName) - ElseIf [Object].ReferenceEquals(sender, BHBackBMP) Then - THBackBMP.Text = GetFileName(xDiag.FileName) - End If - End Sub - - Private Sub Switches_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles _ - POHeaderSwitch.CheckedChanged, - POGridSwitch.CheckedChanged, - POWaveFormSwitch.CheckedChanged, - POWAVSwitch.CheckedChanged, - POBeatSwitch.CheckedChanged, - POExpansionSwitch.CheckedChanged - - Try - Dim Source As CheckBox = CType(sender, CheckBox) - Dim Target As Panel = Nothing - - If Object.ReferenceEquals(sender, Nothing) Then : Exit Sub - ElseIf Object.ReferenceEquals(sender, POHeaderSwitch) Then : Target = POHeaderInner - ElseIf Object.ReferenceEquals(sender, POGridSwitch) Then : Target = POGridInner - ElseIf Object.ReferenceEquals(sender, POWaveFormSwitch) Then : Target = POWaveFormInner - ElseIf Object.ReferenceEquals(sender, POWAVSwitch) Then : Target = POWAVInner - ElseIf Object.ReferenceEquals(sender, POBeatSwitch) Then : Target = POBeatInner - ElseIf Object.ReferenceEquals(sender, POExpansionSwitch) Then : Target = POExpansionInner - End If - - If Source.Checked Then - Target.Visible = True - Else - Target.Visible = False - End If - - Catch ex As Exception - - End Try - End Sub - - Private Sub Expanders_CheckChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles _ - POHeaderExpander.CheckedChanged, - POGridExpander.CheckedChanged, - POWaveFormExpander.CheckedChanged, - POWAVExpander.CheckedChanged, - POBeatExpander.CheckedChanged - - Try - Dim Source As CheckBox = CType(sender, CheckBox) - Dim Target As Panel = Nothing - 'Dim TargetParent As Panel = Nothing - - If Object.ReferenceEquals(sender, Nothing) Then : Exit Sub - ElseIf Object.ReferenceEquals(sender, POHeaderExpander) Then : Target = POHeaderPart2 ' : TargetParent = POHeaderInner - ElseIf Object.ReferenceEquals(sender, POGridExpander) Then : Target = POGridPart2 ' : TargetParent = POGridInner - ElseIf Object.ReferenceEquals(sender, POWaveFormExpander) Then : Target = POWaveFormPart2 ' : TargetParent = POWaveFormInner - ElseIf Object.ReferenceEquals(sender, POWAVExpander) Then : Target = POWAVPart2 ' : TargetParent = POWaveFormInner - ElseIf Object.ReferenceEquals(sender, POBeatExpander) Then : Target = POBeatPart2 ' : TargetParent = POWaveFormInner - End If - - If Source.Checked Then - Target.Visible = True - 'Source.Image = My.Resources.Collapse - Else - Target.Visible = False - 'Source.Image = My.Resources.Expand - End If - - Catch ex As Exception - - End Try - - End Sub - - Private Sub VerticalResizer_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles POWAVResizer.MouseDown, POBeatResizer.MouseDown, POExpansionResizer.MouseDown - tempResize = e.Y - End Sub - - Private Sub HorizontalResizer_MouseDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles POptionsResizer.MouseDown, SpL.MouseDown, SpR.MouseDown - tempResize = e.X - End Sub - - Private Sub POResizer_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles POWAVResizer.MouseMove, POBeatResizer.MouseMove, POExpansionResizer.MouseMove - If e.Button <> Windows.Forms.MouseButtons.Left Then Exit Sub - If e.Y = tempResize Then Exit Sub - - Try - Dim Source As Button = CType(sender, Button) - Dim Target As Panel = Source.Parent - - Dim xHeight As Integer = Target.Height + e.Y - tempResize - If xHeight < 10 Then xHeight = 10 - Target.Height = xHeight - - Target.Refresh() - Catch ex As Exception - - End Try - End Sub - - Private Sub POptionsResizer_MouseMove(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles POptionsResizer.MouseMove - If e.Button <> Windows.Forms.MouseButtons.Left Then Exit Sub - If e.X = tempResize Then Exit Sub - - Try - Dim xWidth As Integer = POptionsScroll.Width - e.X + tempResize - If xWidth < 25 Then xWidth = 25 - POptionsScroll.Width = xWidth - - Me.Refresh() - Application.DoEvents() - Catch ex As Exception - - End Try - End Sub - - Private Sub SpR_MouseMove(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles SpR.MouseMove - If e.Button <> Windows.Forms.MouseButtons.Left Then Exit Sub - If e.X = tempResize Then Exit Sub - - Try - Dim xWidth As Integer = PMainR.Width - e.X + tempResize - If xWidth < 0 Then xWidth = 0 - PMainR.Width = xWidth - - Me.ToolStripContainer1.Refresh() - Application.DoEvents() - Catch ex As Exception - - End Try - End Sub - - Private Sub SpL_MouseMove(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles SpL.MouseMove - If e.Button <> Windows.Forms.MouseButtons.Left Then Exit Sub - If e.X = tempResize Then Exit Sub - - Try - Dim xWidth As Integer = PMainL.Width + e.X - tempResize - If xWidth < 0 Then xWidth = 0 - PMainL.Width = xWidth - - Me.ToolStripContainer1.Refresh() - Application.DoEvents() - Catch ex As Exception - - End Try - End Sub - - Private Sub mnGotoMeasure_Click(sender As Object, e As EventArgs) Handles mnGotoMeasure.Click - Dim s = InputBox(Strings.Messages.PromptEnterMeasure, "Enter Measure") - - ' Interpolation, Value = F + (C - F) * (i - Floor(i)) - Dim i As Double - If Double.TryParse(s, i) AndAlso i > 0 AndAlso i < 999 Then PanelVScroll(PanelFocus) = -(MeasureBottom(Math.Floor(i)) + (MeasureBottom(Math.Ceiling(i)) - MeasureBottom(Math.Floor(i))) * (i - Math.Floor(i))) - End Sub - - - ' Generic shuffle for basic type arrays - Public Function Shuffle(Of T)(items As T(), Len As Integer) - Dim temp As T - Dim j As Int32 - - For i As Int32 = items.Count - 1 To 0 Step -1 - ' Pick an item for position i. - j = Int(Len * Rnd()) - ' Swap - temp = items(i) - items(i) = items(j) - items(j) = temp - Next i - Return items - End Function - - Private Sub Expand_Load(sender As Object, e As EventArgs) Handles ECSelectSection.Click - ReDim RandomFile(2) - Dim xDOp As New OpExpand() - Dim ReadText As String - Try - xDOp.ShowDialog(Me) - Catch - Exit Sub - End Try - - If RandomFile(1) = "-" Then Exit Sub - Dim RandomFilePath = ExcludeFileName(FileName) & "\" & RandomFileName - ' Picks another random filename because the programme somehow generated the same exact RandomFileName as a previous instance. 1 in 2-billion chance btw - Do Until Not My.Computer.FileSystem.FileExists(RandomFilePath) - RandomFileName = "___TempRandom" & GenerateRandomString(6, False) & ".bmsc" - RandomFilePath = ExcludeFileName(FileName) & "\" & RandomFileName - Loop - RandomFile(1) = GenerateHeaderMeta() & GenerateHeaderIndexedData() & RandomFile(1) - ' Dim xStrHeader As String = GenerateHeaderMeta() - ' xStrHeader &= GenerateHeaderIndexedData() - My.Computer.FileSystem.WriteAllText(RandomFilePath, RandomFile(1), False, TextEncoding) - System.Diagnostics.Process.Start(My.Application.Info.DirectoryPath & "\" & My.Application.Info.ProductName & ".exe", RandomFilePath) - Do Until False - Threading.Thread.Sleep(3000) - ReadText = My.Computer.FileSystem.ReadAllText(RandomFilePath, TextEncoding) - If ReadText.EndsWith("*---------------------- RANDOM DATA FIELD") Then - Exit Do - End If - Loop - RandomFile(1) = "" - For Each xStrLine In Split(ReadText, vbCrLf) - If xStrLine <> "" AndAlso xStrLine <> "*---------------------- RANDOM DATA FIELD" Then - RandomFile(1) &= xStrLine & vbCrLf - End If - Next - TExpansion.Text = Join(RandomFile, vbCrLf) - AddTempFileList(RandomFilePath) - End Sub - - Public Function GenerateRandomString(ByRef len As Integer, ByRef upper As Boolean) As String - Dim rand As New Random() - Dim allowableChars() As Char = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLOMNOPQRSTUVWXYZ0123456789".ToCharArray() - Dim final As String = String.Empty - For i As Integer = 0 To len - 1 - final += allowableChars(rand.Next(allowableChars.Length - 1)) - Next - - Return IIf(upper, final.ToUpper(), final) - End Function - -End Class diff --git a/Option Windows/OpExpand.Designer.vb b/Option Windows/OpExpand.Designer.vb deleted file mode 100644 index 467840612..000000000 --- a/Option Windows/OpExpand.Designer.vb +++ /dev/null @@ -1,93 +0,0 @@ - -Partial Class OpExpand - Inherits System.Windows.Forms.Form - - 'Form overrides dispose to clean up the component list. - - Protected Overrides Sub Dispose(ByVal disposing As Boolean) - Try - If disposing AndAlso components IsNot Nothing Then - components.Dispose() - End If - Finally - MyBase.Dispose(disposing) - End Try - End Sub - - 'Required by the Windows Form Designer - Private components As System.ComponentModel.IContainer - - 'NOTE: The following procedure is required by the Windows Form Designer - 'It can be modified using the Windows Form Designer. - 'Do not modify it using the code editor. - - Private Sub InitializeComponent() - Me.Label5 = New System.Windows.Forms.Label() - Me.Cancel_Button = New System.Windows.Forms.Button() - Me.OK_Button = New System.Windows.Forms.Button() - Me.ExpansionCodeList = New System.Windows.Forms.ListBox() - Me.SuspendLayout() - ' - 'Label5 - ' - Me.Label5.AutoSize = True - Me.Label5.Location = New System.Drawing.Point(12, 9) - Me.Label5.Name = "Label5" - Me.Label5.Size = New System.Drawing.Size(124, 13) - Me.Label5.TabIndex = 69 - Me.Label5.Text = "Current Expansion Code:" - ' - 'Cancel_Button - ' - Me.Cancel_Button.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) - Me.Cancel_Button.DialogResult = System.Windows.Forms.DialogResult.Cancel - Me.Cancel_Button.FlatStyle = System.Windows.Forms.FlatStyle.System - Me.Cancel_Button.Location = New System.Drawing.Point(144, 426) - Me.Cancel_Button.Name = "Cancel_Button" - Me.Cancel_Button.Size = New System.Drawing.Size(126, 23) - Me.Cancel_Button.TabIndex = 67 - Me.Cancel_Button.Text = "Cancel" - ' - 'OK_Button - ' - Me.OK_Button.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left), System.Windows.Forms.AnchorStyles) - Me.OK_Button.DialogResult = System.Windows.Forms.DialogResult.OK - Me.OK_Button.FlatStyle = System.Windows.Forms.FlatStyle.System - Me.OK_Button.Location = New System.Drawing.Point(12, 426) - Me.OK_Button.Name = "OK_Button" - Me.OK_Button.Size = New System.Drawing.Size(126, 23) - Me.OK_Button.TabIndex = 66 - Me.OK_Button.Text = "OK" - ' - 'ExpansionCodeList - ' - Me.ExpansionCodeList.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.ExpansionCodeList.FormattingEnabled = True - Me.ExpansionCodeList.Location = New System.Drawing.Point(12, 25) - Me.ExpansionCodeList.Name = "ExpansionCodeList" - Me.ExpansionCodeList.Size = New System.Drawing.Size(260, 394) - Me.ExpansionCodeList.TabIndex = 70 - ' - 'OpExpand - ' - Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!) - Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font - Me.ClientSize = New System.Drawing.Size(284, 461) - Me.Controls.Add(Me.ExpansionCodeList) - Me.Controls.Add(Me.Label5) - Me.Controls.Add(Me.Cancel_Button) - Me.Controls.Add(Me.OK_Button) - Me.Name = "OpExpand" - Me.Text = "Select Expansion Code" - Me.ResumeLayout(False) - Me.PerformLayout() - - End Sub - - Friend WithEvents Label5 As Label - Friend WithEvents Cancel_Button As Button - Friend WithEvents OK_Button As Button - Friend WithEvents ExpansionCodeList As ListBox -End Class diff --git a/Option Windows/OpExpand.resx b/Option Windows/OpExpand.resx deleted file mode 100644 index 29dcb1b3a..000000000 --- a/Option Windows/OpExpand.resx +++ /dev/null @@ -1,120 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - \ No newline at end of file diff --git a/Option Windows/OpExpand.vb b/Option Windows/OpExpand.vb deleted file mode 100644 index de010abe0..000000000 --- a/Option Windows/OpExpand.vb +++ /dev/null @@ -1,110 +0,0 @@ -Public Class OpExpand - - Dim TExpansionTextSplit() As String = Split(MainWindow.TExpansion.Text, vbCrLf, , CompareMethod.Text) - Dim CurrSelection As Integer = -1 - Dim RangeL As Integer = -1 - Dim RangeU As Integer = -1 - Dim xStack As Integer = 0 - Private Sub OK_Button_Click(sender As Object, e As EventArgs) Handles OK_Button.Click, ExpansionCodeList.DoubleClick - ' If no line selected - If CurrSelection = -1 Then - MsgBox("Error: No line selected.") - Exit Sub - End If - - ' Find the first line of the currect #if section, right after #if - For L = CurrSelection To 0 Step -1 - If SWIC(ExpansionCodeList.Items(L), "#ENDIF") AndAlso L <> CurrSelection Then - xStack += 1 - End If - - If SWIC(ExpansionCodeList.Items(L), "#IF") Then - If xStack > 0 Then - xStack -= 1 - Else - RangeL = L + 1 - Exit For - End If - - End If - Next - ' Find the last line of the currect #if section, right before #endif - For U = CurrSelection To TExpansionTextSplit.Length - 1 - If SWIC(ExpansionCodeList.Items(U), "#IF") AndAlso U <> CurrSelection Then - xStack += 1 - End If - - If SWIC(ExpansionCodeList.Items(U), "#ENDIF") Then - If xStack > 0 Then - xStack -= 1 - Else - RangeU = U - 1 - Exit For - End If - - End If - Next - - ' If RangeL or RangeU's values have not been found - If RangeL = -1 Or RangeU = -1 Then - MsgBox("Error: #IF Section not detected.") - MainWindow.RandomFile(1) = "-" - Exit Sub - End If - - ' Split expansion code into 3 parts - Dim TExpansionTextSelected(RangeL - 1) As String - For i = 0 To RangeL - 1 - TExpansionTextSelected(i) = TExpansionTextSplit(i) - Next - MainWindow.RandomFile(0) = Join(TExpansionTextSelected, vbCrLf) - ReDim TExpansionTextSelected(RangeU - RangeL) - For i = RangeL To RangeU - TExpansionTextSelected(i - RangeL) = TExpansionTextSplit(i) - Next - MainWindow.RandomFile(1) = Join(TExpansionTextSelected, vbCrLf) - ReDim TExpansionTextSelected(TExpansionTextSplit.Length - 1 - RangeU - 1) - For i = RangeU + 1 To TExpansionTextSplit.Length - 1 - TExpansionTextSelected(i - RangeU - 1) = TExpansionTextSplit(i) - Next - MainWindow.RandomFile(2) = Join(TExpansionTextSelected, vbCrLf) - Me.Close() - End Sub - - Private Sub Cancel_Button_Click(sender As Object, e As EventArgs) Handles Cancel_Button.Click - Me.DialogResult = System.Windows.Forms.DialogResult.Cancel - Me.Close() - End Sub - - Public Sub New() - InitializeComponent() - - ' If no expansion text - If MainWindow.TExpansion.Text = "" Then - MsgBox("Error: Expansion code is empty.") - Me.Close() - Exit Sub - End If - - ' List expansion code per line - ExpansionCodeList.Items.Clear() - For Each xStrLine In TExpansionTextSplit - ExpansionCodeList.Items.Add(xStrLine) - Next - End Sub - - Private Sub ExpansionCodeList_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles ExpansionCodeList.Click - CurrSelection = ExpansionCodeList.SelectedIndex - End Sub - - Private Function SWIC(str As String, strHash As String) As Boolean ' Copied from ChartIO.vb - Return str.StartsWith(strHash, StringComparison.CurrentCultureIgnoreCase) - End Function - - Private Function ExcludeFileName(ByVal s As String) As String ' Copied from MainWindow.vb - Dim fslash As Integer = InStrRev(s, "/") - Dim bslash As Integer = InStrRev(s, "\") - If (bslash Or fslash) = 0 Then Return "" - Return Mid(s, 1, IIf(fslash > bslash, fslash, bslash) - 1) - End Function -End Class \ No newline at end of file diff --git a/Option Windows/OpPlayer.vb b/Option Windows/OpPlayer.vb deleted file mode 100644 index 43b7040af..000000000 --- a/Option Windows/OpPlayer.vb +++ /dev/null @@ -1,213 +0,0 @@ -Imports System.Windows.Forms - -Public Class OpPlayer - Dim pArg() As MainWindow.PlayerArguments - 'Dim ImplicitChange As Boolean = False - Dim CurrPlayer As Integer = -1 - - Private Sub OK_Button_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OK_Button.Click - DialogResult = DialogResult.OK - Close() - - MainWindow.pArgs = pArg.Clone - MainWindow.CurrentPlayer = CurrPlayer - - Dispose() - End Sub - - Private Sub Cancel_Button_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Cancel_Button.Click - Me.DialogResult = System.Windows.Forms.DialogResult.Cancel - Me.Close() - Me.Dispose() - End Sub - - Private Sub OpPlayer_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load - Me.Font = MainWindow.Font - - Me.Text = Strings.fopPlayer.Title - Label1.Text = Strings.fopPlayer.Path - Label2.Text = Strings.fopPlayer.PlayFromBeginning - Label3.Text = Strings.fopPlayer.PlayFromHere - Label4.Text = Strings.fopPlayer.StopPlaying - BAdd.Text = Strings.fopPlayer.Add - BRemove.Text = Strings.fopPlayer.Remove - Label6.Text = Strings.fopPlayer.References & vbCrLf & - " = " & Strings.fopPlayer.DirectoryOfApp & vbCrLf & - " = " & Strings.fopPlayer.CurrMeasure & vbCrLf & - " = " & Strings.fopPlayer.FileName - OK_Button.Text = Strings.OK - Cancel_Button.Text = Strings.Cancel - BDefault.Text = Strings.fopPlayer.RestoreDefault - End Sub - - Private Sub LPlayer_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles LPlayer.Click - If pArg Is Nothing OrElse pArg.Length = 0 Then Exit Sub - - CurrPlayer = LPlayer.SelectedIndex - ShowInTextbox() - End Sub - - Private Sub LPlayer_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles LPlayer.KeyDown - LPlayer_Click(sender, New EventArgs) - End Sub - - Private Sub BPrevAdd_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BAdd.Click - ReDim Preserve pArg(UBound(pArg) + 1) - CurrPlayer += 1 - For xI1 As Integer = UBound(pArg) To CurrPlayer Step -1 - pArg(xI1) = pArg(xI1 - 1) - Next - - LPlayer.Items.Insert(CurrPlayer, - GetFileName(pArg(CurrPlayer - 1).Path)) - LPlayer.SelectedIndex += 1 - End Sub - - Private Sub BPrevDelete_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BRemove.Click - If LPlayer.Items.Count = 1 Then - MsgBox(Strings.Messages.PreviewDelError, MsgBoxStyle.Exclamation) - Exit Sub - End If - - For xI1 As Integer = CurrPlayer To UBound(pArg) - 1 - pArg(xI1) = pArg(xI1 + 1) - Next - ReDim Preserve pArg(UBound(pArg) - 1) - - 'RemoveHandler LPlayer.SelectedIndexChanged, AddressOf LPlayer_SelectedIndexChanged - LPlayer.Items.RemoveAt(CurrPlayer) - 'AddHandler LPlayer.SelectedIndexChanged, AddressOf LPlayer_SelectedIndexChanged - - LPlayer.SelectedIndex = IIf(CurrPlayer > UBound(pArg), CurrPlayer - 1, CurrPlayer) - CurrPlayer = Math.Min(CurrPlayer, UBound(pArg)) - ShowInTextbox() - End Sub - - Private Sub BPrevBrowse_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BBrowse.Click - Dim xDOpen As New OpenFileDialog - xDOpen.InitialDirectory = IIf(Path.GetDirectoryName(Replace(TPath.Text, "", My.Application.Info.DirectoryPath)) = "", - My.Application.Info.DirectoryPath, - Path.GetDirectoryName(Replace(TPath.Text, "", My.Application.Info.DirectoryPath))) - xDOpen.Filter = Strings.FileType.EXE & "|*.exe" - xDOpen.DefaultExt = "exe" - If xDOpen.ShowDialog = Windows.Forms.DialogResult.Cancel Then Exit Sub - TPath.Text = Replace(xDOpen.FileName, My.Application.Info.DirectoryPath, "") - End Sub - - Private Sub BPrevDefault_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BDefault.Click - 'ImplicitChange = True - If MsgBox(Strings.Messages.RestoreDefaultSettings, MsgBoxStyle.Question + MsgBoxStyle.YesNo) = MsgBoxResult.No Then Exit Sub - - pArg = New MainWindow.PlayerArguments() {New MainWindow.PlayerArguments("\mBMplay.exe", - """""", - "-s """"", - "-t"), - New MainWindow.PlayerArguments("\uBMplay.exe", - "-P -N0 """"", - "-P -N """"", - "-S"), - New MainWindow.PlayerArguments("\o2play.exe", - "-P -N0 """"", - "-P -N """"", - "-S")} - CurrPlayer = 0 - ResetLPlayer_ShowInTextbox() - 'ImplicitChange = False - End Sub - - 'Affect LPlayer and all textboxes - Private Sub ResetLPlayer_ShowInTextbox() - LPlayer.Items.Clear() - For xI1 As Integer = 0 To UBound(pArg) - LPlayer.Items.Add(GetFileName(pArg(xI1).Path)) - Next - 'RemoveHandler LPlayer.SelectedIndexChanged, AddressOf LPlayer_SelectedIndexChanged - LPlayer.SelectedIndex = CurrPlayer - 'AddHandler LPlayer.SelectedIndexChanged, AddressOf LPlayer_SelectedIndexChanged - ShowInTextbox() - 'ImplicitChange = False - End Sub - - 'affect current LPlayer index value - Private Sub LPlayerChangeCurrIndex(ByVal xStr As String) - 'RemoveHandler LPlayer.SelectedIndexChanged, AddressOf LPlayer_SelectedIndexChanged - LPlayer.Items.Item(CurrPlayer) = GetFileName(xStr) - 'AddHandler LPlayer.SelectedIndexChanged, AddressOf LPlayer_SelectedIndexChanged - End Sub - - 'Affect pArgs - Private Sub SavePArg() - pArg(CurrPlayer).Path = TPath.Text - pArg(CurrPlayer).aBegin = TPlayB.Text - pArg(CurrPlayer).aHere = TPlay.Text - pArg(CurrPlayer).aStop = TStop.Text - 'pArg(CurrPlayer) = TPath.Text & vbCrLf & _ - ' TPlayB.Text & vbCrLf & _ - ' TPlay.Text & vbCrLf & _ - ' TStop.Text - End Sub - - 'affect all textboxes - Private Sub ShowInTextbox() - 'ImplicitChange = True - 'Dim xStr() As String = Split(pArg(CurrPlayer), vbCrLf) - 'If xStr.Length <> 4 Then ReDim Preserve xStr(3) - TPath.Text = pArg(CurrPlayer).Path - TPlayB.Text = pArg(CurrPlayer).aBegin - TPlay.Text = pArg(CurrPlayer).aHere - TStop.Text = pArg(CurrPlayer).aStop - ValidateTextBox() - 'ImplicitChange = False - End Sub - - Private Sub ValidateTextBox() - For Each xT As TextBox In New TextBox() {TPath, TPlayB, TPlay, TStop} - Dim xText As String = xT.Text.Replace("", "").Replace("", "").Replace("", "").Replace("""", "") - Dim xContainsInvalidChar As Boolean = False - - For Each xC As Char In Path.GetInvalidPathChars - If xText.IndexOf(xC) <> -1 Then - xContainsInvalidChar = True - Exit For - End If - Next - - If xContainsInvalidChar Then - xT.BackColor = Color.FromArgb(&HFFFFC0C0) - Else - xT.BackColor = Nothing - End If - Next - End Sub - - Public Sub New(ByVal xCurrPlayer As Integer) - InitializeComponent() - - pArg = MainWindow.pArgs.Clone - CurrPlayer = xCurrPlayer - ResetLPlayer_ShowInTextbox() - End Sub - - Private Sub TPath_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TPath.KeyUp, TPlay.KeyUp, TPlayB.KeyUp, TStop.KeyUp - SavePArg() - If [Object].ReferenceEquals(sender, TPath) Then _ - LPlayerChangeCurrIndex(pArg(CurrPlayer).Path) - End Sub - - Private Sub TPath_LostFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles TPath.LostFocus, TPlay.LostFocus, TPlayB.LostFocus, TStop.LostFocus - SavePArg() - If [Object].ReferenceEquals(sender, TPath) Then _ - LPlayerChangeCurrIndex(pArg(CurrPlayer).Path) - ValidateTextBox() - End Sub - - 'Private Function pArgPath(ByVal I As Integer) - ' Return Mid(pArg(I), 1, InStr(pArg(I), vbCrLf) - 1) - 'End Function - - Private Function GetFileName(ByVal s As String) As String - Dim fslash As Integer = InStrRev(s, "/") - Dim bslash As Integer = InStrRev(s, "\") - Return Mid(s, IIf(fslash > bslash, fslash, bslash) + 1) - End Function -End Class diff --git a/app.config b/app.config deleted file mode 100644 index 1d1f08676..000000000 --- a/app.config +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - diff --git a/iBMSC.vbproj b/iBMSC.vbproj deleted file mode 100644 index 150ca9a42..000000000 --- a/iBMSC.vbproj +++ /dev/null @@ -1,356 +0,0 @@ - - - - - Debug - AnyCPU - {35281D99-2A97-4AA0-AC1E-6CDC78999A3D} - WinExe - iBMSC.My.MyApplication - iBMSC - pBMSC - 512 - WindowsForms - v4.8 - false - - publish\ - true - Disk - false - Foreground - 7 - Days - false - false - true - 0 - 1.0.0.%2a - false - true - - - AnyCPU - true - full - true - true - bin\Debug\ - pBMSC.xml - 41999,42016,42017,42018,42019,42020,42021,42022,42032,42036 - false - - - AnyCPU - pdbonly - false - true - true - bin\Release\ - pBMSC.xml - 41999,42016,42017,42018,42019,42020,42021,42022,42032,42036 - false - - - On - - - Binary - - - Off - - - On - - - Icon.ico - - - My Project\app.manifest - - - true - bin\test\ - pBMSC.xml - true - 41999,42016,42017,42018,42019,42020,42021,42022,42032,42036 - pdbonly - AnyCPU - - - - ..\packages\CSCore.1.2.1.1\lib\net35-client\CSCore.dll - - - ..\packages\NVorbis.0.8.5.0\lib\NVorbis.dll - - - - - - - - - - - - - - - - - - - - - - - - - - - Form - - - - Component1.vb - - - Component - - - - - Form - - - AboutBox1.vb - - - Form - - - - ColorPicker.vb - - - Form - - - dgImportSM.vb - - - Form - - - dgMyO2.vb - - - Form - - - dgStatistics.vb - - - Form - - - diagFind.vb - - - Form - - - fLoadFileProgress.vb - - - Form - - - SplashScreen1.vb - - - Form - - - Form - - - Form - - - Form - - - - MainWindow.vb - - - Form - - - Form - - - Form - - - OpExpand.vb - - - Form - - - Form - - - Form - - - - Form - - - - - - - True - Application.myapp - True - - - True - True - Resources.resx - - - True - Settings.settings - True - - - OpGeneral.vb - - - Form - - - OpPlayer.vb - - - Form - - - OpVisual.vb - - - Form - - - OpVisual.vb - - - Form - - - - - Form - - - - - - AboutBox1.vb - - - ColorPicker.vb - - - dgImportSM.vb - - - dgMyO2.vb - - - dgMyO2.vb - - - dgStatistics.vb - - - diagFind.vb - - - fLoadFileProgress.vb - - - SplashScreen1.vb - - - MainWindow.vb - - - VbMyResourcesResXFileCodeGenerator - Resources.Designer.vb - My.Resources - Designer - - - OpExpand.vb - - - OpGeneral.vb - - - OpPlayer.vb - - - OpVisual.vb - - - OpVisualCO.vb - - - - - - - MyApplicationCodeGenerator - Application.Designer.vb - - - SettingsSingleFileGenerator - My - Settings.Designer.vb - - - - - - False - .NET Framework 3.5 SP1 Client Profile - false - - - False - .NET Framework 3.5 SP1 - true - - - - - - - - - - \ No newline at end of file diff --git a/packages.config b/packages.config deleted file mode 100644 index 8b3357a22..000000000 --- a/packages.config +++ /dev/null @@ -1,5 +0,0 @@ - - - - - \ No newline at end of file From 01c81de77e179c67c4522f9f6b0cb05d42cda20f Mon Sep 17 00:00:00 2001 From: psyk2642 <60137590+psyk2642@users.noreply.github.com> Date: Fri, 11 Mar 2022 20:08:31 +0800 Subject: [PATCH 044/257] #Random Support + Miscellaneous - Revised GoToMeasure, now you can go to decimal measures - Added mBMplay as the default player (with proper arguments) for new users. For old users, you can click the "Restore Default" button - Prevents notes in the expansion field from being shown - Supports nested #Random editing (only the main and expansion data field are supported). Further testing required. I must thank whoever laid down the foundation with Expansion Code --- iBMSC/Audio.vb | 249 +- iBMSC/ChartIO.vb | 2502 ++++---- iBMSC/MainWindow.designer.vb | 6683 ++++++++++----------- iBMSC/MainWindow.resx | 80 +- iBMSC/MainWindow.vb | 82 +- iBMSC/Option Windows/OpExpand.Designer.vb | 93 + iBMSC/Option Windows/OpExpand.resx | 120 + iBMSC/Option Windows/OpExpand.vb | 110 + iBMSC/Option Windows/OpPlayer.vb | 422 +- iBMSC/app.config | 46 +- iBMSC/iBMSC.vbproj | 20 +- iBMSC/packages.config | 8 +- 12 files changed, 5446 insertions(+), 4969 deletions(-) create mode 100644 iBMSC/Option Windows/OpExpand.Designer.vb create mode 100644 iBMSC/Option Windows/OpExpand.resx create mode 100644 iBMSC/Option Windows/OpExpand.vb diff --git a/iBMSC/Audio.vb b/iBMSC/Audio.vb index c526f337e..2a42b0a0b 100644 --- a/iBMSC/Audio.vb +++ b/iBMSC/Audio.vb @@ -1,134 +1,131 @@ -Imports NVorbis -Imports CSCore -Imports CSCore.Codecs -Imports CSCore.SoundOut - -Module Audio - Dim Output As WasapiOut - Dim Source As IWaveSource - - Public Sub Initialize() - Output = New WasapiOut() - CodecFactory.Instance.Register("ogg", New CodecFactoryEntry(Function(s) - Return New NVorbisSource(s).ToWaveSource() - End Function, ".ogg")) - End Sub - - Public Sub Finalize() - Output.Stop() - Output.Dispose() - Output = Nothing - End Sub - - Public Function CheckFilename(ByVal filename As String) As String - If File.Exists(filename) Then - Return filename - End If - Dim ext = Path.GetExtension(filename) - If String.Compare(ext, ".ogg") = 0 Then - Dim wpath = Path.ChangeExtension(filename, ".wav") - Return IIf(File.Exists(wpath), wpath, filename) - End If - If String.Compare(ext, ".wav") = 0 Then - Dim opath = Path.ChangeExtension(filename, ".ogg") - Return IIf(File.Exists(opath), opath, filename) - End If - Return filename - End Function - - Public Sub Play(ByVal filename As String) - ' Try - If Source IsNot Nothing Then - Output.Stop() - Source.Dispose() - Source = Nothing - End If +Imports NVorbis +Imports CSCore +Imports CSCore.Codecs +Imports CSCore.SoundOut - If filename Is "" Then - Return - End If +Module Audio + Dim Output As WasapiOut + Dim Source As IWaveSource - Dim fn = CheckFilename(filename) + Public Sub Initialize() + Output = New WasapiOut() + CodecFactory.Instance.Register("ogg", New CodecFactoryEntry(Function(s) + Return New NVorbisSource(s).ToWaveSource() + End Function, ".ogg")) + End Sub - If Not File.Exists(fn) Or FileLen(fn) = 0 Then + Public Sub Finalize() + Output.Stop() + Output.Dispose() + Output = Nothing + End Sub + + Public Function CheckFilename(ByVal filename As String) As String + If File.Exists(filename) Then + Return filename + End If + Dim ext = Path.GetExtension(filename) + If String.Compare(ext, ".ogg") = 0 Then + Dim wpath = Path.ChangeExtension(filename, ".wav") + Return IIf(File.Exists(wpath), wpath, filename) + End If + If String.Compare(ext, ".wav") = 0 Then + Dim opath = Path.ChangeExtension(filename, ".ogg") + Return IIf(File.Exists(opath), opath, filename) + End If + Return filename + End Function + + Public Sub Play(ByVal filename As String) + If Source IsNot Nothing Then + Output.Stop() + Source.Dispose() + Source = Nothing + End If + + If filename Is "" Then Return End If - Source = CodecFactory.Instance.GetCodec(fn) + Dim fn = CheckFilename(filename) + + ' P: How to catch without crashing + Try + Source = CodecFactory.Instance.GetCodec(fn) Output.Initialize(Source) Output.Play() - ' Catch ex As Exception - ' MsgBox("Error: " + ex.Message) - ' Exit Sub - ' End Try - End Sub - - Public Sub StopPlaying() - Output.Stop() - End Sub -End Module - -Class NVorbisSource - Implements CSCore.ISampleSource - Dim _stream As Stream - Dim _vorbisReader As VorbisReader - Dim _waveFormat As WaveFormat - Dim _disposed As Boolean - - Public Sub New(stream As Stream) - If stream Is Nothing Or Not stream.CanRead Then - Throw New ArgumentException("stream") - End If - _stream = stream - _vorbisReader = New VorbisReader(stream, Nothing) - _waveFormat = New WaveFormat(_vorbisReader.SampleRate, 32, _vorbisReader.Channels, AudioEncoding.IeeeFloat) - End Sub - - Public ReadOnly Property CanSeek As Boolean Implements IAudioSource.CanSeek - Get - Return _stream.CanSeek - End Get - End Property - - Public ReadOnly Property WaveFormat As WaveFormat Implements IAudioSource.WaveFormat - Get - Return _waveFormat - End Get - End Property - - Public ReadOnly Property Length As Long Implements IAudioSource.Length - Get - Return IIf(CanSeek, _vorbisReader.TotalTime.TotalSeconds * _waveFormat.SampleRate * _waveFormat.Channels, 0) - End Get - End Property - - Public Property Position As Long Implements IAudioSource.Position - Get - Return IIf(CanSeek, _vorbisReader.DecodedTime.TotalSeconds * _vorbisReader.SampleRate * _vorbisReader.Channels, 0) - End Get - Set(value As Long) - If Not CanSeek Then - Throw New InvalidOperationException("Can't seek this stream.") - End If - If value < 0 Or value >= Length Then - Throw New ArgumentOutOfRangeException("value") - End If - _vorbisReader.DecodedTime = TimeSpan.FromSeconds(value / _vorbisReader.SampleRate / _vorbisReader.Channels) - End Set - End Property - - - Public Function Read(buffer As Single(), offset As Integer, count As Integer) As Integer Implements ISampleSource.Read - Return _vorbisReader.ReadSamples(buffer, offset, count) - End Function - - Public Sub Dispose() Implements IDisposable.Dispose - If Not _disposed Then - '_vorbisReader.Dispose() - Else - 'Throw New ObjectDisposedException("NVorbisSource") - End If - _disposed = True - End Sub - -End Class + Catch ex As Exception + MsgBox("Error: " + ex.Message) + Exit Sub + End Try + End Sub + + Public Sub StopPlaying() + Output.Stop() + End Sub +End Module + +Class NVorbisSource + Implements CSCore.ISampleSource + Dim _stream As Stream + Dim _vorbisReader As VorbisReader + Dim _waveFormat As WaveFormat + Dim _disposed As Boolean + + Public Sub New(stream As Stream) + If stream Is Nothing Or Not stream.CanRead Then + Throw New ArgumentException("stream") + End If + _stream = stream + _vorbisReader = New VorbisReader(stream, Nothing) + _waveFormat = New WaveFormat(_vorbisReader.SampleRate, 32, _vorbisReader.Channels, AudioEncoding.IeeeFloat) + End Sub + + Public ReadOnly Property CanSeek As Boolean Implements IAudioSource.CanSeek + Get + Return _stream.CanSeek + End Get + End Property + + Public ReadOnly Property WaveFormat As WaveFormat Implements IAudioSource.WaveFormat + Get + Return _waveFormat + End Get + End Property + + Public ReadOnly Property Length As Long Implements IAudioSource.Length + Get + Return IIf(CanSeek, _vorbisReader.TotalTime.TotalSeconds * _waveFormat.SampleRate * _waveFormat.Channels, 0) + End Get + End Property + + Public Property Position As Long Implements IAudioSource.Position + Get + Return IIf(CanSeek, _vorbisReader.DecodedTime.TotalSeconds * _vorbisReader.SampleRate * _vorbisReader.Channels, 0) + End Get + Set(value As Long) + If Not CanSeek Then + Throw New InvalidOperationException("Can't seek this stream.") + End If + If value < 0 Or value >= Length Then + Throw New ArgumentOutOfRangeException("value") + End If + _vorbisReader.DecodedTime = TimeSpan.FromSeconds(value / _vorbisReader.SampleRate / _vorbisReader.Channels) + End Set + End Property + + + Public Function Read(buffer As Single(), offset As Integer, count As Integer) As Integer Implements ISampleSource.Read + Return _vorbisReader.ReadSamples(buffer, offset, count) + End Function + + Public Sub Dispose() Implements IDisposable.Dispose + If Not _disposed Then + '_vorbisReader.Dispose() + Else + 'Throw New ObjectDisposedException("NVorbisSource") + End If + _disposed = True + End Sub + +End Class diff --git a/iBMSC/ChartIO.vb b/iBMSC/ChartIO.vb index 544660c98..943579527 100644 --- a/iBMSC/ChartIO.vb +++ b/iBMSC/ChartIO.vb @@ -1,1211 +1,1291 @@ -Imports iBMSC.Editor - -Partial Public Class MainWindow - Private Sub OpenBMS(ByVal xStrAll As String) - KMouseOver = -1 - - 'Line feed validation: will remove some empty lines - xStrAll = Replace(Replace(Replace(xStrAll, vbLf, vbCr), vbCr & vbCr, vbCr), vbCr, vbCrLf) - - Dim xStrLine() As String = Split(xStrAll, vbCrLf, , CompareMethod.Text) - Dim xI1 As Integer - Dim sLine As String - Dim xExpansion As String = "" - ReDim Notes(0) - ReDim mColumn(999) - ReDim hWAV(1295) - ReDim hBPM(1295) 'x10000 - ReDim hSTOP(1295) - ReDim hSCROLL(1295) - Me.InitializeNewBMS() - Me.InitializeOpenBMS() - - With Notes(0) - .ColumnIndex = niBPM - .VPosition = -1 - '.LongNote = False - '.Selected = False - .Value = 1200000 - End With - - 'random, setRandom 0 - 'endRandom 0 - 'if +1 - 'else 0 - 'endif -1 - 'switch, setSwitch +1 - 'case, skip, def 0 - 'endSw -1 - Dim xStack As Integer = 0 - - For Each sLine In xStrLine - Dim sLineTrim As String = sLine.Trim - If xStack > 0 Then GoTo Expansion - - If sLineTrim.StartsWith("#") And Mid(sLineTrim, 5, 3) = "02:" Then - Dim xIndex As Integer = Val(Mid(sLineTrim, 2, 3)) - Dim xRatio As Double = Val(Mid(sLineTrim, 8)) - Dim xxD As Long = GetDenominator(xRatio) - MeasureLength(xIndex) = xRatio * 192.0R - LBeat.Items(xIndex) = Add3Zeros(xIndex) & ": " & xRatio & IIf(xxD > 10000, "", " ( " & CLng(xRatio * xxD) & " / " & xxD & " ) ") - - ElseIf sLineTrim.StartsWith("#WAV", StringComparison.CurrentCultureIgnoreCase) Then - hWAV(C36to10(Mid(sLineTrim, Len("#WAV") + 1, 2))) = Mid(sLineTrim, Len("#WAV") + 4) - - ElseIf sLineTrim.StartsWith("#BMP", StringComparison.CurrentCultureIgnoreCase) Then - hBMP(C36to10(Mid(sLineTrim, Len("#BMP") + 1, 2))) = Mid(sLineTrim, Len("#BMP") + 4) - - ElseIf sLineTrim.StartsWith("#BPM", StringComparison.CurrentCultureIgnoreCase) And Not Mid(sLineTrim, Len("#BPM") + 1, 1).Trim = "" Then 'If BPM## - ' zdr: No limits on BPM editing.. they don't make much sense. - hBPM(C36to10(Mid(sLineTrim, Len("#BPM") + 1, 2))) = Val(Mid(sLineTrim, Len("#BPM") + 4)) * 10000 - - 'No limits on STOPs either. - ElseIf sLineTrim.StartsWith("#STOP", StringComparison.CurrentCultureIgnoreCase) Then - hSTOP(C36to10(Mid(sLineTrim, Len("#STOP") + 1, 2))) = Val(Mid(sLineTrim, Len("#STOP") + 4)) * 10000 - - ElseIf sLineTrim.StartsWith("#SCROLL", StringComparison.CurrentCultureIgnoreCase) Then - hSCROLL(C36to10(Mid(sLineTrim, Len("#SCROLL") + 1, 2))) = Val(Mid(sLineTrim, Len("#SCROLL") + 4)) * 10000 - - - ElseIf sLineTrim.StartsWith("#TITLE", StringComparison.CurrentCultureIgnoreCase) Then - THTitle.Text = Mid(sLineTrim, Len("#TITLE") + 1).Trim - - ElseIf sLineTrim.StartsWith("#ARTIST", StringComparison.CurrentCultureIgnoreCase) Then - THArtist.Text = Mid(sLineTrim, Len("#ARTIST") + 1).Trim - - ElseIf sLineTrim.StartsWith("#GENRE", StringComparison.CurrentCultureIgnoreCase) Then - THGenre.Text = Mid(sLineTrim, Len("#GENRE") + 1).Trim - - ElseIf sLineTrim.StartsWith("#BPM", StringComparison.CurrentCultureIgnoreCase) Then 'If BPM #### - Notes(0).Value = Val(Mid(sLineTrim, Len("#BPM") + 1).Trim) * 10000 - THBPM.Value = Notes(0).Value / 10000 - - ElseIf sLineTrim.StartsWith("#PLAYER", StringComparison.CurrentCultureIgnoreCase) Then - Dim xInt As Integer = Val(Mid(sLineTrim, Len("#PLAYER") + 1).Trim) - If xInt >= 1 And xInt <= 4 Then _ - CHPlayer.SelectedIndex = xInt - 1 - - ElseIf sLineTrim.StartsWith("#RANK", StringComparison.CurrentCultureIgnoreCase) Then - Dim xInt As Integer = Val(Mid(sLineTrim, Len("#RANK") + 1).Trim) - If xInt >= 0 And xInt <= 4 Then _ - CHRank.SelectedIndex = xInt - - ElseIf sLineTrim.StartsWith("#PLAYLEVEL", StringComparison.CurrentCultureIgnoreCase) Then - THPlayLevel.Text = Mid(sLineTrim, Len("#PLAYLEVEL") + 1).Trim - - - ElseIf sLineTrim.StartsWith("#SUBTITLE", StringComparison.CurrentCultureIgnoreCase) Then - THSubTitle.Text = Mid(sLineTrim, Len("#SUBTITLE") + 1).Trim - - ElseIf sLineTrim.StartsWith("#SUBARTIST", StringComparison.CurrentCultureIgnoreCase) Then - THSubArtist.Text = Mid(sLineTrim, Len("#SUBARTIST") + 1).Trim - - ElseIf sLineTrim.StartsWith("#STAGEFILE", StringComparison.CurrentCultureIgnoreCase) Then - THStageFile.Text = Mid(sLineTrim, Len("#STAGEFILE") + 1).Trim - - ElseIf sLineTrim.StartsWith("#BANNER", StringComparison.CurrentCultureIgnoreCase) Then - THBanner.Text = Mid(sLineTrim, Len("#BANNER") + 1).Trim - - ElseIf sLineTrim.StartsWith("#BACKBMP", StringComparison.CurrentCultureIgnoreCase) Then - THBackBMP.Text = Mid(sLineTrim, Len("#BACKBMP") + 1).Trim - - ElseIf sLineTrim.StartsWith("#DIFFICULTY", StringComparison.CurrentCultureIgnoreCase) Then - Try - CHDifficulty.SelectedIndex = Integer.Parse(Mid(sLineTrim, Len("#DIFFICULTY") + 1).Trim) - Catch ex As Exception - End Try - - ElseIf sLineTrim.StartsWith("#DEFEXRANK", StringComparison.CurrentCultureIgnoreCase) Then - THExRank.Text = Mid(sLineTrim, Len("#DEFEXRANK") + 1).Trim - - ElseIf sLineTrim.StartsWith("#TOTAL", StringComparison.CurrentCultureIgnoreCase) Then - Dim xStr As String = Mid(sLineTrim, Len("#TOTAL") + 1).Trim - 'If xStr.EndsWith("%") Then xStr = Mid(xStr, 1, Len(xStr) - 1) - THTotal.Text = xStr - - ElseIf sLineTrim.StartsWith("#COMMENT", StringComparison.CurrentCultureIgnoreCase) Then - Dim xStr As String = Mid(sLineTrim, Len("#COMMENT") + 1).Trim - If xStr.StartsWith("""") Then xStr = Mid(xStr, 2) - If xStr.EndsWith("""") Then xStr = Mid(xStr, 1, Len(xStr) - 1) - THComment.Text = xStr - - ElseIf sLineTrim.StartsWith("#LNTYPE", StringComparison.CurrentCultureIgnoreCase) Then - 'THLnType.Text = Mid(sLineTrim, Len("#LNTYPE") + 1).Trim - If Val(Mid(sLineTrim, Len("#LNTYPE") + 1).Trim) = 1 Then CHLnObj.SelectedIndex = 0 - - ElseIf sLineTrim.StartsWith("#LNOBJ", StringComparison.CurrentCultureIgnoreCase) Then - Dim xValue As Integer = C36to10(Mid(sLineTrim, Len("#LNOBJ") + 1).Trim) - CHLnObj.SelectedIndex = xValue - - 'TODO: LNOBJ value validation - - 'ElseIf sLineTrim.StartsWith("#LNTYPE", StringComparison.CurrentCultureIgnoreCase) Then - ' CAdLNTYPE.Checked = True - ' If Mid(sLineTrim, 9) = "" Or Mid(sLineTrim, 9) = "1" Or Mid(sLineTrim, 9) = "01" Then CAdLNTYPEb.Text = "1" - ' CAdLNTYPEb.Text = Mid(sLineTrim, 9) - - ElseIf sLineTrim.StartsWith("#") And Mid(sLineTrim, 7, 1) = ":" Then 'If the line contains Ks - Dim xIdentifier As String = Mid(sLineTrim, 5, 2) - If BMSChannelToColumn(xIdentifier) = 0 Then GoTo AddExpansion - - Else -Expansion: If sLineTrim.StartsWith("#IF", StringComparison.CurrentCultureIgnoreCase) Then - xStack += 1 : GoTo AddExpansion - ElseIf sLineTrim.StartsWith("#ENDIF", StringComparison.CurrentCultureIgnoreCase) Then - xStack -= 1 : GoTo AddExpansion - ElseIf sLineTrim.StartsWith("#SWITCH", StringComparison.CurrentCultureIgnoreCase) Then - xStack += 1 : GoTo AddExpansion - ElseIf sLineTrim.StartsWith("#SETSWITCH", StringComparison.CurrentCultureIgnoreCase) Then - xStack += 1 : GoTo AddExpansion - ElseIf sLineTrim.StartsWith("#ENDSW", StringComparison.CurrentCultureIgnoreCase) Then - xStack -= 1 : GoTo AddExpansion - - ElseIf sLineTrim.StartsWith("#") Then -AddExpansion: xExpansion &= sLine & vbCrLf - End If - - End If - Next - - UpdateMeasureBottom() - - xStack = 0 - For Each sLine In xStrLine - Dim sLineTrim As String = sLine.Trim - If xStack > 0 Then Continue For - - If Not (sLineTrim.StartsWith("#") And Mid(sLineTrim, 7, 1) = ":") Then Continue For 'If the line contains Ks - - ' >> Measure = Mid(sLine, 2, 3) - ' >> Column Identifier = Mid(sLine, 5, 2) - ' >> K = Mid(sLine, xI1, 2) - Dim xMeasure As Integer = Val(Mid(sLineTrim, 2, 3)) - Dim Channel As String = Mid(sLineTrim, 5, 2) - If BMSChannelToColumn(Channel) = 0 Then Continue For - - If Channel = "01" Then mColumn(xMeasure) += 1 'If the identifier is 01 then add a B column in that measure - For xI1 = 8 To Len(sLineTrim) - 1 Step 2 'For all Ks within that line ( - 1 can be ommitted ) - If Mid(sLineTrim, xI1, 2) = "00" Then Continue For 'If the K is not 00 - - ReDim Preserve Notes(Notes.Length) - - With Notes(UBound(Notes)) - .ColumnIndex = BMSChannelToColumn(Channel) + - IIf(Channel = "01", 1, 0) * (mColumn(xMeasure) - 1) - .LongNote = IsChannelLongNote(Channel) - .Hidden = IsChannelHidden(Channel) - .Landmine = IsChannelLandmine(Channel) - .Selected = False - .VPosition = MeasureBottom(xMeasure) + MeasureLength(xMeasure) * (xI1 / 2 - 4) / ((Len(sLineTrim) - 7) / 2) - .Value = C36to10(Mid(sLineTrim, xI1, 2)) * 10000 - - If Channel = "03" Then .Value = Convert.ToInt32(Mid(sLineTrim, xI1, 2), 16) * 10000 - If Channel = "08" Then .Value = hBPM(C36to10(Mid(sLineTrim, xI1, 2))) - If Channel = "09" Then .Value = hSTOP(C36to10(Mid(sLineTrim, xI1, 2))) - If Channel = "SC" Then .Value = hSCROLL(C36to10(Mid(sLineTrim, xI1, 2))) - End With - - Next - Next - - If NTInput Then ConvertBMSE2NT() - - LWAV.Visible = False - LWAV.Items.Clear() - LBMP.Visible = False - LBMP.Items.Clear() - For xI1 = 1 To 1295 - LWAV.Items.Add(C10to36(xI1) & ": " & hWAV(xI1)) - LBMP.Items.Add(C10to36(xI1) & ": " & hBMP(xI1)) - Next - LWAV.SelectedIndex = 0 - LWAV.Visible = True - LBMP.SelectedIndex = 0 - LBMP.Visible = True - - TExpansion.Text = xExpansion - - SortByVPositionQuick(0, UBound(Notes)) - UpdatePairing() - CalculateTotalPlayableNotes() - CalculateGreatestVPosition() - RefreshPanelAll() - POStatusRefresh() - End Sub - - ReadOnly BMSChannelList() As String = {"01", "03", "04", "06", "07", "08", "09", - "11", "12", "13", "14", "15", "16", "18", "19", - "21", "22", "23", "24", "25", "26", "28", "29", - "31", "32", "33", "34", "35", "36", "38", "39", - "41", "42", "43", "44", "45", "46", "48", "49", - "51", "52", "53", "54", "55", "56", "58", "59", - "61", "62", "63", "64", "65", "66", "68", "69", - "D1", "D2", "D3", "D4", "D5", "D6", "D8", "D9", - "E1", "E2", "E3", "E4", "E5", "E6", "E8", "E9", - "SC"} - ' 71 through 89 are reserved - '"71", "72", "73", "74", "75", "76", "78", "79", - '"81", "82", "83", "84", "85", "86", "88", "89", - - - Private Function SaveBMS() As String - CalculateGreatestVPosition() - SortByVPositionInsertion() - UpdatePairing() - Dim MeasureIndex As Integer - Dim hasOverlapping As Boolean = False - 'Dim xStrAll As String = "" 'for all - Dim xStrMeasure(MeasureAtDisplacement(GreatestVPosition) + 1) As String - - ' We regenerate these when traversing the bms event list. - ReDim hBPM(0) - ReDim hSTOP(0) - ReDim hSCROLL(0) - - Dim xNTInput As Boolean = NTInput - Dim xKBackUp() As Note = Notes - If xNTInput Then - NTInput = False - ConvertNT2BMSE() - End If - - Dim tempNote As Note 'Temp K - - Dim xprevNotes(-1) As Note 'Notes too close to the next measure - - For MeasureIndex = 0 To MeasureAtDisplacement(GreatestVPosition) + 1 'For xI1 in each measure - xStrMeasure(MeasureIndex) = vbCrLf - - Dim consistentDecimalStr = WriteDecimalWithDot(MeasureLength(MeasureIndex) / 192.0R) - - ' Handle fractional measure - If MeasureLength(MeasureIndex) <> 192.0R Then xStrMeasure(MeasureIndex) &= "#" & Add3Zeros(MeasureIndex) & "02:" & consistentDecimalStr & vbCrLf - - ' Get note count in current measure - Dim LowerLimit As Integer = Nothing - Dim UpperLimit As Integer = Nothing - GetMeasureLimits(MeasureIndex, LowerLimit, UpperLimit) - - If UpperLimit - LowerLimit = 0 Then Continue For 'If there is no K in the current measure then end this loop - - ' Get notes from this measure - Dim xUPrevText As Integer = UBound(xprevNotes) - Dim NotesInMeasure(UpperLimit - LowerLimit + xUPrevText) As Note - - ' Copy notes from previous array - For i = 0 To xUPrevText - NotesInMeasure(i) = xprevNotes(i) - Next - - ' Copy notes in current measure - For i = LowerLimit To UpperLimit - 1 - NotesInMeasure(i - LowerLimit + xprevNotes.Length) = Notes(i) - Next - - ' Find greatest column. - ' Since background tracks have the highest column values - ' this - niB will yield the number of B columns. - Dim GreatestColumn = 0 - For Each tempNote In NotesInMeasure - GreatestColumn = Math.Max(tempNote.ColumnIndex, GreatestColumn) - Next - - ReDim xprevNotes(-1) - xStrMeasure(MeasureIndex) &= GenerateBackgroundTracks(MeasureIndex, hasOverlapping, NotesInMeasure, GreatestColumn, xprevNotes) - xStrMeasure(MeasureIndex) &= GenerateKeyTracks(MeasureIndex, hasOverlapping, NotesInMeasure, xprevNotes) - Next - - ' Warn about 255 limit if neccesary. - If hasOverlapping Then MsgBox(Strings.Messages.SaveWarning & vbCrLf & - Strings.Messages.NoteOverlapError & vbCrLf & - Strings.Messages.SavedFileWillContainErrors, MsgBoxStyle.Exclamation) - If UBound(hBPM) > IIf(BPMx1296, 1295, 255) Then MsgBox(Strings.Messages.SaveWarning & vbCrLf & - Strings.Messages.BPMOverflowError & UBound(hBPM) & " > " & IIf(BPMx1296, 1295, 255) & vbCrLf & - Strings.Messages.SavedFileWillContainErrors, MsgBoxStyle.Exclamation) - If UBound(hSTOP) > IIf(STOPx1296, 1295, 255) Then MsgBox(Strings.Messages.SaveWarning & vbCrLf & - Strings.Messages.STOPOverflowError & UBound(hSTOP) & " > " & IIf(STOPx1296, 1295, 255) & vbCrLf & - Strings.Messages.SavedFileWillContainErrors, MsgBoxStyle.Exclamation) - If UBound(hSCROLL) > 1295 Then MsgBox(Strings.Messages.SaveWarning & vbCrLf & - Strings.Messages.SCROLLOverflowError & UBound(hSCROLL) & " > " & 1295 & vbCrLf & - Strings.Messages.SavedFileWillContainErrors, MsgBoxStyle.Exclamation) - - ' Add expansion text - Dim xStrExp As String = vbCrLf & "*---------------------- EXPANSION FIELD" & vbCrLf & TExpansion.Text & vbCrLf & vbCrLf - If TExpansion.Text = "" Then xStrExp = "" - - ' Output main data field. - Dim xStrMain As String = "*---------------------- MAIN DATA FIELD" & vbCrLf & vbCrLf & Join(xStrMeasure, "") & vbCrLf - - If xNTInput Then - Notes = xKBackUp - NTInput = True - End If - - ' Generate headers now, since we have the unique BPM/STOP/etc declarations. - Dim xStrHeader As String = GenerateHeaderMeta() - xStrHeader &= GenerateHeaderIndexedData() - - Dim xStrAll As String = xStrHeader & vbCrLf & xStrExp & vbCrLf & xStrMain - Return xStrAll - End Function - - Private Function GenerateHeaderMeta() As String - Dim xStrHeader As String = vbCrLf & "*---------------------- HEADER FIELD" & vbCrLf & vbCrLf - xStrHeader &= "#PLAYER " & (CHPlayer.SelectedIndex + 1) & vbCrLf - xStrHeader &= "#GENRE " & THGenre.Text & vbCrLf - xStrHeader &= "#TITLE " & THTitle.Text & vbCrLf - xStrHeader &= "#ARTIST " & THArtist.Text & vbCrLf - xStrHeader &= "#BPM " & WriteDecimalWithDot(Notes(0).Value / 10000) & vbCrLf - xStrHeader &= "#PLAYLEVEL " & THPlayLevel.Text & vbCrLf - xStrHeader &= "#RANK " & CHRank.SelectedIndex & vbCrLf - xStrHeader &= vbCrLf - If THSubTitle.Text <> "" Then xStrHeader &= "#SUBTITLE " & THSubTitle.Text & vbCrLf - If THSubArtist.Text <> "" Then xStrHeader &= "#SUBARTIST " & THSubArtist.Text & vbCrLf - If THStageFile.Text <> "" Then xStrHeader &= "#STAGEFILE " & THStageFile.Text & vbCrLf - If THBanner.Text <> "" Then xStrHeader &= "#BANNER " & THBanner.Text & vbCrLf - If THBackBMP.Text <> "" Then xStrHeader &= "#BACKBMP " & THBackBMP.Text & vbCrLf - xStrHeader &= vbCrLf - If CHDifficulty.SelectedIndex Then xStrHeader &= "#DIFFICULTY " & CHDifficulty.SelectedIndex & vbCrLf - If THExRank.Text <> "" Then xStrHeader &= "#DEFEXRANK " & THExRank.Text & vbCrLf - If THTotal.Text <> "" Then xStrHeader &= "#TOTAL " & THTotal.Text & vbCrLf - If THComment.Text <> "" Then xStrHeader &= "#COMMENT """ & THComment.Text & """" & vbCrLf - 'If THLnType.Text <> "" Then xStrHeader &= "#LNTYPE " & THLnType.Text & vbCrLf - If CHLnObj.SelectedIndex > 0 Then xStrHeader &= "#LNOBJ " & C10to36(CHLnObj.SelectedIndex) & vbCrLf _ - Else xStrHeader &= "#LNTYPE 1" & vbCrLf - xStrHeader &= vbCrLf - Return xStrHeader - End Function - - Private Function GenerateHeaderIndexedData() As String - Dim xStrHeader As String = "" - - For i = 1 To UBound(hWAV) - If Not hWAV(i) = "" Then xStrHeader &= "#WAV" & C10to36(i) & - " " & hWAV(i) & vbCrLf - Next - For i = 1 To UBound(hBMP) - If Not hBMP(i) = "" Then xStrHeader &= "#BMP" & C10to36(i) & - " " & hBMP(i) & vbCrLf - Next - For i = 1 To UBound(hBPM) - xStrHeader &= "#BPM" & - IIf(BPMx1296, C10to36(i), Mid("0" & Hex(i), Len(Hex(i)))) & - " " & WriteDecimalWithDot(hBPM(i) / 10000) & vbCrLf - Next - For i = 1 To UBound(hSTOP) - xStrHeader &= "#STOP" & - IIf(STOPx1296, C10to36(i), Mid("0" & Hex(i), Len(Hex(i)))) & - " " & WriteDecimalWithDot(hSTOP(i) / 10000) & vbCrLf - Next - For i = 1 To UBound(hSCROLL) - xStrHeader &= "#SCROLL" & - C10to36(i) & " " & WriteDecimalWithDot(hSCROLL(i) / 10000) & vbCrLf - Next - - Return xStrHeader - End Function - - Private Sub GetMeasureLimits(MeasureIndex As Integer, ByRef LowerLimit As Integer, ByRef UpperLimit As Integer) - Dim NoteCount = UBound(Notes) - LowerLimit = 0 - - For i = 1 To NoteCount 'Collect Ks in the same measure - If MeasureAtDisplacement(Notes(i).VPosition) >= MeasureIndex Then - LowerLimit = i - Exit For - End If 'Lower limit found - Next - - UpperLimit = 0 - - For i = LowerLimit To NoteCount - If MeasureAtDisplacement(Notes(i).VPosition) > MeasureIndex Then - UpperLimit = i - Exit For 'Upper limit found - End If - Next - - If UpperLimit < LowerLimit Then UpperLimit = NoteCount + 1 - End Sub - - Private Function GenerateKeyTracks(MeasureIndex As Integer, ByRef hasOverlapping As Boolean, NotesInMeasure() As Note, ByRef xprevNotes() As Note) As String - Dim CurrentBMSChannel As String - Dim Ret As String = "" - - For Each CurrentBMSChannel In BMSChannelList 'Start rendering other notes - Dim relativeMeasurePos(-1) 'Ks in the same column - Dim NoteStrings(-1) 'Ks in the same column - - ' Background tracks take care of this. - If CurrentBMSChannel = "01" Then Continue For - - - For NoteIndex = 0 To UBound(NotesInMeasure) 'Find Ks in the same column (xI4 is TK index) - - Dim currentNote As Note = NotesInMeasure(NoteIndex) - If GetBMSChannelBy(currentNote) = CurrentBMSChannel Then - - ReDim Preserve relativeMeasurePos(UBound(relativeMeasurePos) + 1) - ReDim Preserve NoteStrings(UBound(NoteStrings) + 1) - relativeMeasurePos(UBound(relativeMeasurePos)) = currentNote.VPosition - MeasureBottom(MeasureAtDisplacement(currentNote.VPosition)) - If relativeMeasurePos(UBound(relativeMeasurePos)) < 0 Then relativeMeasurePos(UBound(relativeMeasurePos)) = 0 - - If CurrentBMSChannel = "03" Then 'If integer bpm - NoteStrings(UBound(NoteStrings)) = Mid("0" & Hex(currentNote.Value \ 10000), Len(Hex(currentNote.Value \ 10000))) - ElseIf CurrentBMSChannel = "08" Then 'If bpm requires declaration - Dim BpmIndex - For BpmIndex = 1 To UBound(hBPM) ' find BPM value in existing array - If currentNote.Value = hBPM(BpmIndex) Then Exit For - Next - If BpmIndex > UBound(hBPM) Then ' Didn't find it, add it - ReDim Preserve hBPM(UBound(hBPM) + 1) - hBPM(UBound(hBPM)) = currentNote.Value - End If - NoteStrings(UBound(NoteStrings)) = IIf(BPMx1296, C10to36(BpmIndex), Mid("0" & Hex(BpmIndex), Len(Hex(BpmIndex)))) - ElseIf CurrentBMSChannel = "09" Then 'If STOP - Dim StopIndex - For StopIndex = 1 To UBound(hSTOP) ' find STOP value in existing array - If currentNote.Value = hSTOP(StopIndex) Then Exit For - Next - - If StopIndex > UBound(hSTOP) Then ' Didn't find it, add it - ReDim Preserve hSTOP(UBound(hSTOP) + 1) - hSTOP(UBound(hSTOP)) = currentNote.Value - End If - NoteStrings(UBound(NoteStrings)) = IIf(STOPx1296, C10to36(StopIndex), Mid("0" & Hex(StopIndex), Len(Hex(StopIndex)))) - ElseIf CurrentBMSChannel = "SC" Then 'If SCROLL - Dim ScrollIndex - For ScrollIndex = 1 To UBound(hSCROLL) ' find SCROLL value in existing array - If currentNote.Value = hSCROLL(ScrollIndex) Then Exit For - Next - - If ScrollIndex > UBound(hSCROLL) Then ' Didn't find it, add it - ReDim Preserve hSCROLL(UBound(hSCROLL) + 1) - hSCROLL(UBound(hSCROLL)) = currentNote.Value - End If - NoteStrings(UBound(NoteStrings)) = C10to36(ScrollIndex) - Else - NoteStrings(UBound(NoteStrings)) = C10to36(currentNote.Value \ 10000) - End If - End If - Next - - If relativeMeasurePos.Length = 0 Then Continue For - - Dim xGCD As Double = MeasureLength(MeasureIndex) - For i = 0 To UBound(relativeMeasurePos) 'find greatest common divisor - If relativeMeasurePos(i) > 0 Then xGCD = GCD(xGCD, relativeMeasurePos(i)) - Next - - Dim xStrKey() As String - ReDim xStrKey(CInt(MeasureLength(MeasureIndex) / xGCD) - 1) - For i = 0 To UBound(xStrKey) 'assign 00 to all keys - xStrKey(i) = "00" - Next - - For i = 0 To UBound(relativeMeasurePos) 'assign K texts - If CInt(relativeMeasurePos(i) / xGCD) > UBound(xStrKey) Then - ReDim Preserve xprevNotes(UBound(xprevNotes) + 1) - With xprevNotes(UBound(xprevNotes)) - .ColumnIndex = BMSChannelToColumn(BMSChannelList(CurrentBMSChannel)) - .LongNote = IsChannelLongNote(BMSChannelList(CurrentBMSChannel)) - .Hidden = IsChannelHidden(BMSChannelList(CurrentBMSChannel)) - .VPosition = MeasureBottom(MeasureIndex) - .Value = C36to10(NoteStrings(i)) - End With - If BMSChannelList(CurrentBMSChannel) = "08" Then _ - xprevNotes(UBound(xprevNotes)).Value = IIf(BPMx1296, hBPM(C36to10(NoteStrings(i))), hBPM(Convert.ToInt32(NoteStrings(i), 16))) - If BMSChannelList(CurrentBMSChannel) = "09" Then _ - xprevNotes(UBound(xprevNotes)).Value = IIf(STOPx1296, hSTOP(C36to10(NoteStrings(i))), hSTOP(Convert.ToInt32(NoteStrings(i), 16))) - If BMSChannelList(CurrentBMSChannel) = "SC" Then _ - xprevNotes(UBound(xprevNotes)).Value = hSCROLL(C36to10(NoteStrings(i))) - Continue For - End If - If xStrKey(CInt(relativeMeasurePos(i) / xGCD)) <> "00" Then - hasOverlapping = True - End If - - xStrKey(CInt(relativeMeasurePos(i) / xGCD)) = NoteStrings(i) - Next - - Ret &= "#" & Add3Zeros(MeasureIndex) & CurrentBMSChannel & ":" & Join(xStrKey, "") & vbCrLf - Next - - Return Ret - End Function - - Private Function GenerateBackgroundTracks(MeasureIndex As Integer, ByRef hasOverlapping As Boolean, NotesInMeasure() As Note, GreatestColumn As Integer, ByRef xprevNotes() As Note) As String - Dim relativeNotePositions() As Double 'Ks in the same column - Dim noteStrings() As String 'Ks in the same column - Dim Ret As String = "" - - For ColIndex = niB To GreatestColumn 'Start rendering B notes (xI3 is columnindex) - ReDim relativeNotePositions(-1) 'Ks in the same column - ReDim noteStrings(-1) 'Ks in the same column - - For I = 0 To UBound(NotesInMeasure) 'Find Ks in the same column (xI4 is TK index) - If NotesInMeasure(I).ColumnIndex = ColIndex Then - - ReDim Preserve relativeNotePositions(UBound(relativeNotePositions) + 1) - ReDim Preserve noteStrings(UBound(noteStrings) + 1) - - relativeNotePositions(UBound(relativeNotePositions)) = NotesInMeasure(I).VPosition - MeasureBottom(MeasureAtDisplacement(NotesInMeasure(I).VPosition)) - If relativeNotePositions(UBound(relativeNotePositions)) < 0 Then relativeNotePositions(UBound(relativeNotePositions)) = 0 - - noteStrings(UBound(noteStrings)) = C10to36(NotesInMeasure(I).Value \ 10000) - End If - Next - - Dim xGCD As Double = MeasureLength(MeasureIndex) - For i = 0 To UBound(relativeNotePositions) 'find greatest common divisor - If relativeNotePositions(i) > 0 Then xGCD = GCD(xGCD, relativeNotePositions(i)) - Next - - Dim xStrKey(CInt(MeasureLength(MeasureIndex) / xGCD) - 1) As String - For i = 0 To UBound(xStrKey) 'assign 00 to all keys - xStrKey(i) = "00" - Next - - For i = 0 To UBound(relativeNotePositions) 'assign K texts - If CInt(relativeNotePositions(i) / xGCD) > UBound(xStrKey) Then - - ReDim Preserve xprevNotes(UBound(xprevNotes) + 1) - - With xprevNotes(UBound(xprevNotes)) - .ColumnIndex = ColIndex - .VPosition = MeasureBottom(MeasureIndex) - .Value = C36to10(noteStrings(i)) - End With - - Continue For - End If - If xStrKey(CInt(relativeNotePositions(i) / xGCD)) <> "00" Then hasOverlapping = True - xStrKey(CInt(relativeNotePositions(i) / xGCD)) = noteStrings(i) - Next - - Ret &= "#" & Add3Zeros(MeasureIndex) & "01:" & Join(xStrKey, "") & vbCrLf - Next - - Return Ret - End Function - - Private Function OpenSM(ByVal xStrAll As String) As Boolean - KMouseOver = -1 - - Dim xStrLine() As String = Split(xStrAll, vbCrLf) - 'Remove comments starting with "//" - For xI1 As Integer = 0 To UBound(xStrLine) - If xStrLine(xI1).Contains("//") Then xStrLine(xI1) = Mid(xStrLine(xI1), 1, InStr(xStrLine(xI1), "//") - 1) - Next - - xStrAll = Join(xStrLine, "") - xStrLine = Split(xStrAll, ";") - - Dim iDiff As Integer = 0 - Dim iCurrentDiff As Integer = 0 - Dim xTempSplit() As String = Split(xStrAll, "#NOTES:") - Dim xTempStr() As String = {} - If xTempSplit.Length > 2 Then - ReDim Preserve xTempStr(UBound(xTempSplit) - 1) - For xI1 As Integer = 1 To UBound(xTempSplit) - xTempSplit(xI1) = Mid(xTempSplit(xI1), InStr(xTempSplit(xI1), ":") + 1) - xTempSplit(xI1) = Mid(xTempSplit(xI1), InStr(xTempSplit(xI1), ":") + 1).Trim - xTempStr(xI1 - 1) = Mid(xTempSplit(xI1), 1, InStr(xTempSplit(xI1), ":") - 1) - xTempSplit(xI1) = Mid(xTempSplit(xI1), InStr(xTempSplit(xI1), ":") + 1).Trim - xTempStr(xI1 - 1) &= " : " & Mid(xTempSplit(xI1), 1, InStr(xTempSplit(xI1), ":") - 1) - Next - - Dim xDiag As New dgImportSM(xTempStr) - If xDiag.ShowDialog() = Windows.Forms.DialogResult.Cancel Then Return True - iDiff = xDiag.iResult - End If - - Dim sL As String - ReDim Notes(0) - ReDim mColumn(999) - ReDim hWAV(1295) - ReDim hBMP(1295) - ReDim hBPM(1295) 'x10000 - ReDim hSTOP(1295) - ReDim hSCROLL(1295) - Me.InitializeNewBMS() - - With Notes(0) - .ColumnIndex = niBPM - .VPosition = -1 - '.LongNote = False - '.Selected = False - .Value = 1200000 - End With - - For Each sL In xStrLine - If UCase(sL).StartsWith("#TITLE:") Then - THTitle.Text = Mid(sL, Len("#TITLE:") + 1) - - ElseIf UCase(sL).StartsWith("#SUBTITLE:") Then - If Not UCase(sL).EndsWith("#SUBTITLE:") Then THTitle.Text &= " " & Mid(sL, Len("#SUBTITLE:") + 1) - - ElseIf UCase(sL).StartsWith("#ARTIST:") Then - THArtist.Text = Mid(sL, Len("#ARTIST:") + 1) - - ElseIf UCase(sL).StartsWith("#GENRE:") Then - THGenre.Text = Mid(sL, Len("#GENRE:") + 1) - - ElseIf UCase(sL).StartsWith("#BPMS:") Then - Dim xLine As String = Mid(sL, Len("#BPMS:") + 1) - Dim xItem() As String = Split(xLine, ",") - - Dim xVal1 As Double - Dim xVal2 As Double - - For xI1 As Integer = 0 To UBound(xItem) - xVal1 = Mid(xItem(xI1), 1, InStr(xItem(xI1), "=") - 1) - xVal2 = Mid(xItem(xI1), InStr(xItem(xI1), "=") + 1) - - If xVal1 <> 0 Then - ReDim Preserve Notes(Notes.Length) - With Notes(UBound(Notes)) - .ColumnIndex = niBPM - '.LongNote = False - '.Hidden = False - '.Selected = False - .VPosition = xVal1 * 48 - .Value = xVal2 * 10000 - End With - Else - Notes(0).Value = xVal2 * 10000 - End If - Next - - ElseIf UCase(sL).StartsWith("#NOTES:") Then - If iCurrentDiff <> iDiff Then iCurrentDiff += 1 : GoTo Jump1 - - iCurrentDiff += 1 - Dim xLine As String = Mid(sL, Len("#NOTES:") + 1) - Dim xItem() As String = Split(xLine, ":") - For xI1 As Integer = 0 To UBound(xItem) - xItem(xI1) = xItem(xI1).Trim - Next - - If xItem.Length <> 6 Then GoTo Jump1 - - THPlayLevel.Text = xItem(3) - - Dim xM() As String = Split(xItem(5), ",") - For xI1 As Integer = 0 To UBound(xM) - xM(xI1) = xM(xI1).Trim - Next - - For xI1 As Integer = 0 To UBound(xM) - For xI2 As Integer = 0 To Len(xM(xI1)) - 1 Step 4 - If xM(xI1)(xI2) <> "0" Then - ReDim Preserve Notes(Notes.Length) - With Notes(UBound(Notes)) - .ColumnIndex = niA1 - .LongNote = xM(xI1)(xI2) = "2" Or xM(xI1)(xI2) = "3" - '.Hidden = False - '.Selected = False - .VPosition = (192 \ (Len(xM(xI1)) \ 4)) * xI2 \ 4 + xI1 * 192 - .Value = 10000 - End With - End If - If xM(xI1)(xI2 + 1) <> "0" Then - ReDim Preserve Notes(Notes.Length) - With Notes(UBound(Notes)) - .ColumnIndex = niA2 - .LongNote = xM(xI1)(xI2 + 1) = "2" Or xM(xI1)(xI2 + 1) = "3" - '.Hidden = False - '.Selected = False - .VPosition = (192 \ (Len(xM(xI1)) \ 4)) * xI2 \ 4 + xI1 * 192 - .Value = 10000 - End With - End If - If xM(xI1)(xI2 + 2) <> "0" Then - ReDim Preserve Notes(Notes.Length) - With Notes(UBound(Notes)) - .ColumnIndex = niA3 - .LongNote = xM(xI1)(xI2 + 2) = "2" Or xM(xI1)(xI2 + 2) = "3" - '.Hidden = False - '.Selected = False - .VPosition = (192 \ (Len(xM(xI1)) \ 4)) * xI2 \ 4 + xI1 * 192 - .Value = 10000 - End With - End If - If xM(xI1)(xI2 + 3) <> "0" Then - ReDim Preserve Notes(Notes.Length) - With Notes(UBound(Notes)) - .ColumnIndex = niA4 - .LongNote = xM(xI1)(xI2 + 3) = "2" Or xM(xI1)(xI2 + 3) = "3" - '.Hidden = False - '.Selected = False - .VPosition = (192 \ (Len(xM(xI1)) \ 4)) * xI2 \ 4 + xI1 * 192 - .Value = 10000 - End With - End If - Next - Next -Jump1: - End If - Next - - If NTInput Then ConvertBMSE2NT() - - LWAV.Visible = False - LWAV.Items.Clear() - LBMP.Visible = False - LBMP.Items.Clear() - For xI1 As Integer = 1 To 1295 - LWAV.Items.Add(C10to36(xI1) & ": " & hWAV(xI1)) - LBMP.Items.Add(C10to36(xI1) & ": " & hBMP(xI1)) - Next - LWAV.SelectedIndex = 0 - LWAV.Visible = True - LBMP.SelectedIndex = 0 - LBMP.Visible = True - - THBPM.Value = Notes(0).Value / 10000 - SortByVPositionQuick(0, UBound(Notes)) - UpdatePairing() - CalculateTotalPlayableNotes() - CalculateGreatestVPosition() - RefreshPanelAll() - POStatusRefresh() - Return False - End Function - - ''' Do not clear Undo. - Private Sub OpeniBMSC(ByVal Path As String) - KMouseOver = -1 - - Dim br As New BinaryReader(New FileStream(Path, FileMode.Open, FileAccess.Read), System.Text.Encoding.Unicode) - - If br.ReadInt32 <> &H534D4269 Then GoTo EndOfSub - If br.ReadByte <> CByte(&H43) Then GoTo EndOfSub - Dim xMajor As Integer = br.ReadByte - Dim xMinor As Integer = br.ReadByte - Dim xBuild As Integer = br.ReadByte - - ClearUndo() - ReDim Notes(0) - ReDim mColumn(999) - ReDim hWAV(1295) - ReDim hBMP(1295) - Me.InitializeNewBMS() - Me.InitializeOpenBMS() - - With Notes(0) - .ColumnIndex = niBPM - .VPosition = -1 - '.LongNote = False - '.Selected = False - .Value = 1200000 - End With - - Do Until br.BaseStream.Position >= br.BaseStream.Length - Dim BlockID As Integer = br.ReadInt32() - - Select Case BlockID - - Case &H66657250 'Preferences - Dim xPref As Integer = br.ReadInt32 - - NTInput = xPref And &H1 - TBNTInput.Checked = NTInput - mnNTInput.Checked = NTInput - POBLong.Enabled = Not NTInput - POBLongShort.Enabled = Not NTInput - - ErrorCheck = xPref And &H2 - TBErrorCheck.Checked = ErrorCheck - TBErrorCheck_Click(TBErrorCheck, New System.EventArgs) - - PreviewOnClick = xPref And &H4 - TBPreviewOnClick.Checked = PreviewOnClick - TBPreviewOnClick_Click(TBPreviewOnClick, New System.EventArgs) - - ShowFileName = xPref And &H8 - TBShowFileName.Checked = ShowFileName - TBShowFileName_Click(TBShowFileName, New System.EventArgs) - - mnSMenu.Checked = xPref And &H100 - mnSTB.Checked = xPref And &H200 - mnSOP.Checked = xPref And &H400 - mnSStatus.Checked = xPref And &H800 - mnSLSplitter.Checked = xPref And &H1000 - mnSRSplitter.Checked = xPref And &H2000 - - CGShow.Checked = xPref And &H4000 - CGShowS.Checked = xPref And &H8000 - CGShowBG.Checked = xPref And &H10000 - CGShowM.Checked = xPref And &H20000 - CGShowMB.Checked = xPref And &H40000 - CGShowV.Checked = xPref And &H80000 - CGShowC.Checked = xPref And &H100000 - CGBLP.Checked = xPref And &H200000 - CGSTOP.Checked = xPref And &H400000 - CGSCROLL.Checked = xPref And &H20000000 - CGBPM.Checked = xPref And &H800000 - - CGSnap.Checked = xPref And &H1000000 - CGDisableVertical.Checked = xPref And &H2000000 - cVSLockL.Checked = xPref And &H4000000 - cVSLock.Checked = xPref And &H8000000 - cVSLockR.Checked = xPref And &H10000000 - - CGDivide.Value = br.ReadInt32 - CGSub.Value = br.ReadInt32 - gSlash = br.ReadInt32 - CGHeight.Value = br.ReadSingle - CGWidth.Value = br.ReadSingle - CGB.Value = br.ReadInt32 - - Case &H64616548 'Header - THTitle.Text = br.ReadString - THArtist.Text = br.ReadString - THGenre.Text = br.ReadString - Notes(0).Value = br.ReadInt64 - Dim xPlayerRank As Integer = br.ReadByte - THPlayLevel.Text = br.ReadString - - CHPlayer.SelectedIndex = xPlayerRank And &HF - CHRank.SelectedIndex = xPlayerRank >> 4 - - THSubTitle.Text = br.ReadString - THSubArtist.Text = br.ReadString - 'THMaker.Text = br.ReadString - THStageFile.Text = br.ReadString - THBanner.Text = br.ReadString - THBackBMP.Text = br.ReadString - 'THMidiFile.Text = br.ReadString - CHDifficulty.SelectedIndex = br.ReadByte - THExRank.Text = br.ReadString - THTotal.Text = br.ReadString - 'THVolWAV.Text = br.ReadString - THComment.Text = br.ReadString - 'THLnType.Text = br.ReadString - CHLnObj.SelectedIndex = br.ReadInt16 - - Case &H564157 'WAV List - Dim xWAVOptions As Integer = br.ReadByte - WAVMultiSelect = xWAVOptions And &H1 - CWAVMultiSelect.Checked = WAVMultiSelect - CWAVMultiSelect_CheckedChanged(CWAVMultiSelect, New EventArgs) - WAVChangeLabel = xWAVOptions And &H2 - CWAVChangeLabel.Checked = WAVChangeLabel - CWAVChangeLabel_CheckedChanged(CWAVChangeLabel, New EventArgs) - - Dim xWAVCount As Integer = br.ReadInt32 - For xxi As Integer = 1 To xWAVCount - Dim xI As Integer = br.ReadInt16 - hWAV(xI) = br.ReadString - Next - - Case &H504D42 'BMP List - - Dim xBMPCount As Integer = br.ReadInt32 - For xxi As Integer = 1 To xBMPCount - Dim xI As Integer = br.ReadInt16 - hBMP(xI) = br.ReadString - Next - - Case &H74616542 'Beat - nBeatN.Value = br.ReadInt16 - nBeatD.Value = br.ReadInt16 - 'nBeatD.SelectedIndex = br.ReadByte - - Dim xBeatChangeMode As Integer = br.ReadByte - Dim xBeatChangeList As RadioButton() = {CBeatPreserve, CBeatMeasure, CBeatCut, CBeatScale} - xBeatChangeList(xBeatChangeMode).Checked = True - CBeatPreserve_Click(xBeatChangeList(xBeatChangeMode), New System.EventArgs) - - Dim xBeatCount As Integer = br.ReadInt32 - For xxi As Integer = 1 To xBeatCount - Dim xIndex As Integer = br.ReadInt16 - MeasureLength(xIndex) = br.ReadDouble - Dim xRatio As Double = MeasureLength(xIndex) / 192.0R - Dim xxD As Long = GetDenominator(xRatio) - LBeat.Items(xIndex) = Add3Zeros(xIndex) & ": " & xRatio & IIf(xxD > 10000, "", " ( " & CLng(xRatio * xxD) & " / " & xxD & " ) ") - Next - - Case &H6E707845 'Expansion Code - TExpansion.Text = br.ReadString - - Case &H65746F4E 'Note - Dim xNoteUbound As Integer = br.ReadInt32 - ReDim Preserve Notes(xNoteUbound) - For i As Integer = 1 To UBound(Notes) - Notes(i).FromBinReader(br) - Next - - Case &H6F646E55 'Undo / Redo Commands - Dim URCount As Integer = br.ReadInt32 'Should be 100 - sI = br.ReadInt32 - - For xI As Integer = 0 To 99 - Dim xUndoCount As Integer = br.ReadInt32 - Dim xBaseUndo As New UndoRedo.Void - Dim xIteratorUndo As UndoRedo.LinkedURCmd = xBaseUndo - - For xxj As Integer = 1 To xUndoCount - Dim xByteLen As Integer = br.ReadInt32 - Dim xByte() As Byte = br.ReadBytes(xByteLen) - xIteratorUndo.Next = UndoRedo.fromBytes(xByte) - xIteratorUndo = xIteratorUndo.Next - Next - - sUndo(xI) = xBaseUndo.Next - - Dim xRedoCount As Integer = br.ReadInt32 - Dim xBaseRedo As New UndoRedo.Void - Dim xIteratorRedo As UndoRedo.LinkedURCmd = xBaseRedo - For xxj As Integer = 1 To xRedoCount - Dim xByteLen As Integer = br.ReadInt32 - Dim xByte() As Byte = br.ReadBytes(xByteLen) - xIteratorRedo.Next = UndoRedo.fromBytes(xByte) - xIteratorRedo = xIteratorRedo.Next - Next - sRedo(xI) = xBaseRedo.Next - Next - - End Select - Loop - -EndOfSub: - br.Close() - - TBUndo.Enabled = sUndo(sI).ofType <> UndoRedo.opNoOperation - TBRedo.Enabled = sRedo(sIA).ofType <> UndoRedo.opNoOperation - mnUndo.Enabled = sUndo(sI).ofType <> UndoRedo.opNoOperation - mnRedo.Enabled = sRedo(sIA).ofType <> UndoRedo.opNoOperation - - LBMP.Visible = False - LBMP.Items.Clear() - LWAV.Visible = False - LWAV.Items.Clear() - For xI1 As Integer = 1 To 1295 - LWAV.Items.Add(C10to36(xI1) & ": " & hWAV(xI1)) - LBMP.Items.Add(C10to36(xI1) & ": " & hBMP(xI1)) - Next - LWAV.SelectedIndex = 0 - LWAV.Visible = True - LBMP.SelectedIndex = 0 - LBMP.Visible = True - - THBPM.Value = Notes(0).Value / 10000 - SortByVPositionQuick(0, UBound(Notes)) - UpdatePairing() - UpdateMeasureBottom() - CalculateTotalPlayableNotes() - CalculateGreatestVPosition() - RefreshPanelAll() - POStatusRefresh() - End Sub - - Private Sub SaveiBMSC(ByVal Path As String) - CalculateGreatestVPosition() - SortByVPositionInsertion() - UpdatePairing() - - Try - - Dim bw As New BinaryWriter(New IO.FileStream(Path, FileMode.Create), System.Text.Encoding.Unicode) - - 'bw.Write("iBMSC".ToCharArray) - bw.Write(&H534D4269) - bw.Write(CByte(&H43)) - bw.Write(CByte(My.Application.Info.Version.Major)) - bw.Write(CByte(My.Application.Info.Version.Minor)) - bw.Write(CByte(My.Application.Info.Version.Build)) - - 'Preferences - 'bw.Write("Pref".ToCharArray) - bw.Write(&H66657250) - Dim xPref As Integer = 0 - If NTInput Then xPref = xPref Or &H1 - If ErrorCheck Then xPref = xPref Or &H2 - If PreviewOnClick Then xPref = xPref Or &H4 - If ShowFileName Then xPref = xPref Or &H8 - If mnSMenu.Checked Then xPref = xPref Or &H100 - If mnSTB.Checked Then xPref = xPref Or &H200 - If mnSOP.Checked Then xPref = xPref Or &H400 - If mnSStatus.Checked Then xPref = xPref Or &H800 - If mnSLSplitter.Checked Then xPref = xPref Or &H1000 - If mnSRSplitter.Checked Then xPref = xPref Or &H2000 - If gShowGrid Then xPref = xPref Or &H4000 - If gShowSubGrid Then xPref = xPref Or &H8000 - If gShowBG Then xPref = xPref Or &H10000 - If gShowMeasureNumber Then xPref = xPref Or &H20000 - If gShowMeasureBar Then xPref = xPref Or &H40000 - If gShowVerticalLine Then xPref = xPref Or &H80000 - If gShowC Then xPref = xPref Or &H100000 - If gDisplayBGAColumn Then xPref = xPref Or &H200000 - If gSTOP Then xPref = xPref Or &H400000 - If gBPM Then xPref = xPref Or &H800000 - If gSCROLL Then xPref = xPref Or &H20000000 - If gSnap Then xPref = xPref Or &H1000000 - If DisableVerticalMove Then xPref = xPref Or &H2000000 - If spLock(0) Then xPref = xPref Or &H4000000 - If spLock(1) Then xPref = xPref Or &H8000000 - If spLock(2) Then xPref = xPref Or &H10000000 - bw.Write(xPref) - bw.Write(BitConverter.GetBytes(gDivide)) - bw.Write(BitConverter.GetBytes(gSub)) - bw.Write(BitConverter.GetBytes(gSlash)) - bw.Write(BitConverter.GetBytes(gxHeight)) - bw.Write(BitConverter.GetBytes(gxWidth)) - bw.Write(BitConverter.GetBytes(gColumns)) - - 'Header - 'bw.Write("Head".ToCharArray) - bw.Write(&H64616548) - bw.Write(THTitle.Text) - bw.Write(THArtist.Text) - bw.Write(THGenre.Text) - bw.Write(Notes(0).Value) - Dim xPlayer As Integer = CHPlayer.SelectedIndex - Dim xRank As Integer = CHRank.SelectedIndex << 4 - bw.Write(CByte(xPlayer Or xRank)) - bw.Write(THPlayLevel.Text) - - bw.Write(THSubTitle.Text) - bw.Write(THSubArtist.Text) - 'bw.Write(THMaker.Text) - bw.Write(THStageFile.Text) - bw.Write(THBanner.Text) - bw.Write(THBackBMP.Text) - 'bw.Write(THMidiFile.Text) - bw.Write(CByte(CHDifficulty.SelectedIndex)) - bw.Write(THExRank.Text) - bw.Write(THTotal.Text) - 'bw.Write(THVolWAV.Text) - bw.Write(THComment.Text) - 'bw.Write(THLnType.Text) - bw.Write(CShort(CHLnObj.SelectedIndex)) - - 'Wav List - 'bw.Write(("WAV" & vbNullChar).ToCharArray) - bw.Write(&H564157) - - Dim xWAVOptions As Integer = 0 - If WAVMultiSelect Then xWAVOptions = xWAVOptions Or &H1 - If WAVChangeLabel Then xWAVOptions = xWAVOptions Or &H2 - bw.Write(CByte(xWAVOptions)) - - Dim xWAVCount As Integer = 0 - For i As Integer = 1 To UBound(hWAV) - If hWAV(i) <> "" Then xWAVCount += 1 - Next - bw.Write(xWAVCount) - - For i As Integer = 1 To UBound(hWAV) - If hWAV(i) = "" Then Continue For - bw.Write(CShort(i)) - bw.Write(hWAV(i)) - Next - - 'Bmp List - 'bw.Write(("BMP" & vbNullChar).ToCharArray) - bw.Write(&H504D42) - - Dim xBMPCount As Integer = 0 - For i As Integer = 1 To UBound(hBMP) - If hBMP(i) <> "" Then xBMPCount += 1 - Next - bw.Write(xBMPCount) - - For i As Integer = 1 To UBound(hBMP) - If hBMP(i) = "" Then Continue For - bw.Write(CShort(i)) - bw.Write(hBMP(i)) - Next - - 'Beat - 'bw.Write("Beat".ToCharArray) - bw.Write(&H74616542) - 'Dim xNumerator As Short = nBeatN.Value - 'Dim xDenominator As Short = nBeatD.Value - 'Dim xBeatChangeMode As Byte = BeatChangeMode - bw.Write(CShort(nBeatN.Value)) - bw.Write(CShort(nBeatD.Value)) - bw.Write(CByte(BeatChangeMode)) - - Dim xBeatCount As Integer = 0 - For i As Integer = 0 To UBound(MeasureLength) - If MeasureLength(i) <> 192.0R Then xBeatCount += 1 - Next - bw.Write(xBeatCount) - - For i As Integer = 0 To UBound(MeasureLength) - If MeasureLength(i) = 192.0R Then Continue For - bw.Write(CShort(i)) - bw.Write(MeasureLength(i)) - Next - - 'Expansion Code - 'bw.Write("Expn".ToCharArray) - bw.Write(&H6E707845) - bw.Write(TExpansion.Text) - - 'Note - 'bw.Write("Note".ToCharArray) - bw.Write(&H65746F4E) - bw.Write(UBound(Notes)) - For i As Integer = 1 To UBound(Notes) - Notes(i).WriteBinWriter(bw) - Next - - 'Undo / Redo Commands - 'bw.Write("Undo".ToCharArray) - bw.Write(&H6F646E55) - bw.Write(100) - bw.Write(sI) - - For i As Integer = 0 To 99 - 'UndoCommandsCount - Dim countUndo As Integer = 0 - Dim pUndo As UndoRedo.LinkedURCmd = sUndo(i) - While pUndo IsNot Nothing - countUndo += 1 - pUndo = pUndo.Next - End While - bw.Write(countUndo) - - 'UndoCommands - pUndo = sUndo(i) - For xxi As Integer = 1 To countUndo - Dim bUndo() As Byte = pUndo.toBytes - bw.Write(bUndo.Length) 'Length - bw.Write(bUndo) 'Command - pUndo = pUndo.Next - Next - - 'RedoCommandsCount - Dim countRedo As Integer = 0 - Dim pRedo As UndoRedo.LinkedURCmd = sRedo(i) - While pRedo IsNot Nothing - countRedo += 1 - pRedo = pRedo.Next - End While - bw.Write(countRedo) - - 'RedoCommands - pRedo = sRedo(i) - For xxi As Integer = 1 To countRedo - Dim bRedo() As Byte = pRedo.toBytes - bw.Write(bRedo.Length) - bw.Write(bRedo) - pRedo = pRedo.Next - Next - Next - - bw.Close() - - Catch ex As Exception - - MsgBox(ex.Message) - - End Try - - End Sub - -End Class +Imports iBMSC.Editor + +Partial Public Class MainWindow + Private Sub OpenBMS(ByVal xStrAll As String) + KMouseOver = -1 + + 'Line feed validation: will remove some empty lines + xStrAll = Replace(Replace(Replace(xStrAll, vbLf, vbCr), vbCr & vbCr, vbCr), vbCr, vbCrLf) + + Dim xStrLine() As String = Split(xStrAll, vbCrLf, , CompareMethod.Text) + Dim xStrLine2(xStrLine.Length) As String ' Create a second array which removes expansion codes from the second for loop + Dim xI1 As Integer + Dim sLine As String + Dim xExpansion As String = "" + ReDim Notes(0) + ReDim mColumn(999) + ReDim hWAV(1295) + ReDim hBPM(1295) 'x10000 + ReDim hSTOP(1295) + ReDim hSCROLL(1295) + Me.InitializeNewBMS() + Me.InitializeOpenBMS() + + With Notes(0) + .ColumnIndex = niBPM + .VPosition = -1 + '.LongNote = False + '.Selected = False + .Value = 1200000 + End With + + 'old list below, not sure what this means + 'random, setRandom 0 + 'endRandom 0 + 'if +1 + 'else 0 + 'endif -1 + 'switch, setSwitch +1 + 'case, skip, def 0 + 'endSw -1 + + 'P: I'm gonna do what's called a pro gamer move + + Dim xStack As Integer = 0 + Dim nLine As Integer = -1 + + For Each sLine In xStrLine + Dim sLineTrim As String = sLine.Trim + If xStack > 0 Then GoTo Expansion + + + If sLineTrim.StartsWith("#") And Mid(sLineTrim, 5, 3) = "02:" Then + Dim xIndex As Integer = Val(Mid(sLineTrim, 2, 3)) + Dim xRatio As Double = Val(Mid(sLineTrim, 8)) + Dim xxD As Long = GetDenominator(xRatio) + MeasureLength(xIndex) = xRatio * 192.0R + LBeat.Items(xIndex) = Add3Zeros(xIndex) & ": " & xRatio & IIf(xxD > 10000, "", " ( " & CLng(xRatio * xxD) & " / " & xxD & " ) ") + GoTo AddToxStrLine2 + + ElseIf SWIC(sLineTrim, "#WAV") Then + hWAV(C36to10(Mid(sLineTrim, Len("#WAV") + 1, 2))) = Mid(sLineTrim, Len("#WAV") + 4) + GoTo AddToxStrLine2 + + ElseIf SWIC(sLineTrim, "#BPM") And Not Mid(sLineTrim, Len("#BPM") + 1, 1).Trim = "" Then 'If BPM## + ' zdr: No limits on BPM editing.. they don't make much sense. + hBPM(C36to10(Mid(sLineTrim, Len("#BPM") + 1, 2))) = Val(Mid(sLineTrim, Len("#BPM") + 4)) * 10000 + GoTo AddToxStrLine2 + + 'No limits on STOPs either. + ElseIf SWIC(sLineTrim, "#STOP") Then + hSTOP(C36to10(Mid(sLineTrim, Len("#STOP") + 1, 2))) = Val(Mid(sLineTrim, Len("#STOP") + 4)) * 10000 + GoTo AddToxStrLine2 + + ElseIf SWIC(sLineTrim, "#SCROLL") Then + hSCROLL(C36to10(Mid(sLineTrim, Len("#SCROLL") + 1, 2))) = Val(Mid(sLineTrim, Len("#SCROLL") + 4)) * 10000 + GoTo AddToxStrLine2 + + ElseIf SWIC(sLineTrim, "#TITLE") Then + THTitle.Text = Mid(sLineTrim, Len("#TITLE") + 1).Trim + GoTo AddToxStrLine2 + + ElseIf SWIC(sLineTrim, "#ARTIST") Then + THArtist.Text = Mid(sLineTrim, Len("#ARTIST") + 1).Trim + GoTo AddToxStrLine2 + + ElseIf SWIC(sLineTrim, "#GENRE") Then + THGenre.Text = Mid(sLineTrim, Len("#GENRE") + 1).Trim + GoTo AddToxStrLine2 + + ElseIf SWIC(sLineTrim, "#BPM") Then 'If BPM #### + Notes(0).Value = Val(Mid(sLineTrim, Len("#BPM") + 1).Trim) * 10000 + THBPM.Value = Notes(0).Value / 10000 + GoTo AddToxStrLine2 + + ElseIf SWIC(sLineTrim, "#PLAYER") Then + Dim xInt As Integer = Val(Mid(sLineTrim, Len("#PLAYER") + 1).Trim) + If xInt >= 1 And xInt <= 4 Then _ + CHPlayer.SelectedIndex = xInt - 1 + GoTo AddToxStrLine2 + + ElseIf SWIC(sLineTrim, "#RANK") Then + Dim xInt As Integer = Val(Mid(sLineTrim, Len("#RANK") + 1).Trim) + If xInt >= 0 And xInt <= 4 Then _ + CHRank.SelectedIndex = xInt + GoTo AddToxStrLine2 + + ElseIf SWIC(sLineTrim, "#PLAYLEVEL") Then + THPlayLevel.Text = Mid(sLineTrim, Len("#PLAYLEVEL") + 1).Trim + GoTo AddToxStrLine2 + + ElseIf SWIC(sLineTrim, "#SUBTITLE") Then + THSubTitle.Text = Mid(sLineTrim, Len("#SUBTITLE") + 1).Trim + GoTo AddToxStrLine2 + + ElseIf SWIC(sLineTrim, "#SUBARTIST") Then + THSubArtist.Text = Mid(sLineTrim, Len("#SUBARTIST") + 1).Trim + GoTo AddToxStrLine2 + + ElseIf SWIC(sLineTrim, "#STAGEFILE") Then + THStageFile.Text = Mid(sLineTrim, Len("#STAGEFILE") + 1).Trim + GoTo AddToxStrLine2 + + ElseIf SWIC(sLineTrim, "#BANNER") Then + THBanner.Text = Mid(sLineTrim, Len("#BANNER") + 1).Trim + GoTo AddToxStrLine2 + + ElseIf SWIC(sLineTrim, "#BACKBMP") Then + THBackBMP.Text = Mid(sLineTrim, Len("#BACKBMP") + 1).Trim + GoTo AddToxStrLine2 + + ElseIf SWIC(sLineTrim, "#DIFFICULTY") Then + Try + CHDifficulty.SelectedIndex = Integer.Parse(Mid(sLineTrim, Len("#DIFFICULTY") + 1).Trim) + Catch ex As Exception + End Try + GoTo AddToxStrLine2 + + ElseIf SWIC(sLineTrim, "#DEFEXRANK") Then + THExRank.Text = Mid(sLineTrim, Len("#DEFEXRANK") + 1).Trim + GoTo AddToxStrLine2 + + ElseIf SWIC(sLineTrim, "#TOTAL") Then + Dim xStr As String = Mid(sLineTrim, Len("#TOTAL") + 1).Trim + 'If xStr.EndsWith("%") Then xStr = Mid(xStr, 1, Len(xStr) - 1) + THTotal.Text = xStr + GoTo AddToxStrLine2 + + ElseIf SWIC(sLineTrim, "#COMMENT") Then + Dim xStr As String = Mid(sLineTrim, Len("#COMMENT") + 1).Trim + If xStr.StartsWith("""") Then xStr = Mid(xStr, 2) + If xStr.EndsWith("""") Then xStr = Mid(xStr, 1, Len(xStr) - 1) + THComment.Text = xStr + GoTo AddToxStrLine2 + + ElseIf SWIC(sLineTrim, "#LNTYPE") Then + 'THLnType.Text = Mid(sLineTrim, Len("#LNTYPE") + 1).Trim + If Val(Mid(sLineTrim, Len("#LNTYPE") + 1).Trim) = 1 Then CHLnObj.SelectedIndex = 0 + GoTo AddToxStrLine2 + + ElseIf SWIC(sLineTrim, "#LNOBJ") Then + Dim xValue As Integer = C36to10(Mid(sLineTrim, Len("#LNOBJ") + 1).Trim) + CHLnObj.SelectedIndex = xValue + GoTo AddToxStrLine2 + + 'TODO: LNOBJ value validation + + 'ElseIf SWIC(sLineTrim,"#LNTYPE") Then + ' CAdLNTYPE.Checked = True + ' If Mid(sLineTrim, 9) = "" Or Mid(sLineTrim, 9) = "1" Or Mid(sLineTrim, 9) = "01" Then CAdLNTYPEb.Text = "1" + ' CAdLNTYPEb.Text = Mid(sLineTrim, 9) + + ElseIf sLineTrim.StartsWith("#") And Mid(sLineTrim, 7, 1) = ":" Then 'If the line contains Ks + Dim xIdentifier As String = Mid(sLineTrim, 5, 2) + If BMSChannelToColumn(xIdentifier) = 0 Then GoTo AddExpansion + + ' If does not belong to expansion code, execute below +AddToxStrLine2: nLine += 1 + xStrLine2(nLine) = sLineTrim + + Else +Expansion: If SWIC(sLineTrim, "#IF") Or SWIC(sLineTrim, "#SWITCH") Or SWIC(sLineTrim, "#SETSWITCH") Then + xStack += 1 : GoTo AddExpansion + ElseIf SWIC(sLineTrim, "#ENDIF") Or SWIC(sLineTrim, "#ENDSW") Then + xStack -= 1 : GoTo AddExpansion + + ElseIf sLineTrim.StartsWith("#") Then +AddExpansion: xExpansion &= sLine & vbCrLf + + End If + + End If + Next + + UpdateMeasureBottom() + + ReDim Preserve xStrLine2(nLine) + + ' BPM must be updated before loading notes, do not combine loops + For Each sLineTrim In xStrLine2 + + If Not (sLineTrim.StartsWith("#") And Mid(sLineTrim, 7, 1) = ":") Then Continue For 'If the line contains Ks ' P: The hell is a K + + ' >> Measure = Mid(sLine, 2, 3) + ' >> Column Identifier = Mid(sLine, 5, 2) + ' >> K = Mid(sLine, xI1, 2) + Dim xMeasure As Integer = Val(Mid(sLineTrim, 2, 3)) + Dim Channel As String = Mid(sLineTrim, 5, 2) + If BMSChannelToColumn(Channel) = 0 Then Continue For + + If Channel = "01" Then mColumn(xMeasure) += 1 'If the identifier is 01 then add a B column in that measure + For xI1 = 8 To Len(sLineTrim) - 1 Step 2 'For all Ks within that line ( - 1 can be ommitted ) + If Mid(sLineTrim, xI1, 2) = "00" Then Continue For 'If the K is not 00 + + ReDim Preserve Notes(Notes.Length) + + With Notes(UBound(Notes)) + .ColumnIndex = BMSChannelToColumn(Channel) + + IIf(Channel = "01", 1, 0) * (mColumn(xMeasure) - 1) + .LongNote = IsChannelLongNote(Channel) + .Hidden = IsChannelHidden(Channel) + .Landmine = IsChannelLandmine(Channel) + .Selected = False + .VPosition = MeasureBottom(xMeasure) + MeasureLength(xMeasure) * (xI1 / 2 - 4) / ((Len(sLineTrim) - 7) / 2) + .Value = C36to10(Mid(sLineTrim, xI1, 2)) * 10000 + + If Channel = "03" Then .Value = Convert.ToInt32(Mid(sLineTrim, xI1, 2), 16) * 10000 + If Channel = "08" Then .Value = hBPM(C36to10(Mid(sLineTrim, xI1, 2))) + If Channel = "09" Then .Value = hSTOP(C36to10(Mid(sLineTrim, xI1, 2))) + If Channel = "SC" Then .Value = hSCROLL(C36to10(Mid(sLineTrim, xI1, 2))) + End With + + Next + Next + + If NTInput Then ConvertBMSE2NT() + + LWAV.Visible = False + LWAV.Items.Clear() + For xI1 = 1 To 1295 + LWAV.Items.Add(C10to36(xI1) & ": " & hWAV(xI1)) + Next + LWAV.SelectedIndex = 0 + LWAV.Visible = True + + TExpansion.Text = xExpansion + + SortByVPositionQuick(0, UBound(Notes)) + UpdatePairing() + CalculateTotalPlayableNotes() + CalculateGreatestVPosition() + RefreshPanelAll() + POStatusRefresh() + End Sub + + ReadOnly BMSChannelList() As String = {"01", "03", "04", "06", "07", "08", "09", + "11", "12", "13", "14", "15", "16", "18", "19", + "21", "22", "23", "24", "25", "26", "28", "29", + "31", "32", "33", "34", "35", "36", "38", "39", + "41", "42", "43", "44", "45", "46", "48", "49", + "51", "52", "53", "54", "55", "56", "58", "59", + "61", "62", "63", "64", "65", "66", "68", "69", + "D1", "D2", "D3", "D4", "D5", "D6", "D8", "D9", + "E1", "E2", "E3", "E4", "E5", "E6", "E8", "E9", + "SC"} + ' 71 through 89 are reserved + '"71", "72", "73", "74", "75", "76", "78", "79", + '"81", "82", "83", "84", "85", "86", "88", "89", + + Private Function SWIC(str As String, strHash As String) As Boolean ' StartsWith, IgnoreCase + Return str.StartsWith(strHash, StringComparison.CurrentCultureIgnoreCase) + End Function + + Private Function SaveBMS() As String + CalculateGreatestVPosition() + SortByVPositionInsertion() + UpdatePairing() + Dim MeasureIndex As Integer + Dim hasOverlapping As Boolean = False + 'Dim xStrAll As String = "" 'for all + Dim xStrMeasure(MeasureAtDisplacement(GreatestVPosition) + 1) As String + + ' We regenerate these when traversing the bms event list. + ReDim hBPM(0) + ReDim hSTOP(0) + ReDim hSCROLL(0) + + Dim xNTInput As Boolean = NTInput + Dim xKBackUp() As Note = Notes + If xNTInput Then + NTInput = False + ConvertNT2BMSE() + End If + + Dim tempNote As Note 'Temp K + + Dim xprevNotes(-1) As Note 'Notes too close to the next measure + + For MeasureIndex = 0 To MeasureAtDisplacement(GreatestVPosition) + 1 'For xI1 in each measure + xStrMeasure(MeasureIndex) = vbCrLf + + Dim consistentDecimalStr = WriteDecimalWithDot(MeasureLength(MeasureIndex) / 192.0R) + + ' Handle fractional measure + If MeasureLength(MeasureIndex) <> 192.0R Then xStrMeasure(MeasureIndex) &= "#" & Add3Zeros(MeasureIndex) & "02:" & consistentDecimalStr & vbCrLf + + ' Get note count in current measure + Dim LowerLimit As Integer = Nothing + Dim UpperLimit As Integer = Nothing + GetMeasureLimits(MeasureIndex, LowerLimit, UpperLimit) + + If UpperLimit - LowerLimit = 0 Then Continue For 'If there is no K in the current measure then end this loop + + ' Get notes from this measure + Dim xUPrevText As Integer = UBound(xprevNotes) + Dim NotesInMeasure(UpperLimit - LowerLimit + xUPrevText) As Note + + ' Copy notes from previous array + For i = 0 To xUPrevText + NotesInMeasure(i) = xprevNotes(i) + Next + + ' Copy notes in current measure + For i = LowerLimit To UpperLimit - 1 + NotesInMeasure(i - LowerLimit + xprevNotes.Length) = Notes(i) + Next + + ' Find greatest column. + ' Since background tracks have the highest column values + ' this - niB will yield the number of B columns. + Dim GreatestColumn = 0 + For Each tempNote In NotesInMeasure + GreatestColumn = Math.Max(tempNote.ColumnIndex, GreatestColumn) + Next + + ReDim xprevNotes(-1) + xStrMeasure(MeasureIndex) &= GenerateBackgroundTracks(MeasureIndex, hasOverlapping, NotesInMeasure, GreatestColumn, xprevNotes) + xStrMeasure(MeasureIndex) &= GenerateKeyTracks(MeasureIndex, hasOverlapping, NotesInMeasure, xprevNotes) + Next + + ' Warn about 255 limit if neccesary. + If hasOverlapping Then MsgBox(Strings.Messages.SaveWarning & vbCrLf & + Strings.Messages.NoteOverlapError & vbCrLf & + Strings.Messages.SavedFileWillContainErrors, MsgBoxStyle.Exclamation) + If UBound(hBPM) > IIf(BPMx1296, 1295, 255) Then MsgBox(Strings.Messages.SaveWarning & vbCrLf & + Strings.Messages.BPMOverflowError & UBound(hBPM) & " > " & IIf(BPMx1296, 1295, 255) & vbCrLf & + Strings.Messages.SavedFileWillContainErrors, MsgBoxStyle.Exclamation) + If UBound(hSTOP) > IIf(STOPx1296, 1295, 255) Then MsgBox(Strings.Messages.SaveWarning & vbCrLf & + Strings.Messages.STOPOverflowError & UBound(hSTOP) & " > " & IIf(STOPx1296, 1295, 255) & vbCrLf & + Strings.Messages.SavedFileWillContainErrors, MsgBoxStyle.Exclamation) + If UBound(hSCROLL) > 1295 Then MsgBox(Strings.Messages.SaveWarning & vbCrLf & + Strings.Messages.SCROLLOverflowError & UBound(hSCROLL) & " > " & 1295 & vbCrLf & + Strings.Messages.SavedFileWillContainErrors, MsgBoxStyle.Exclamation) + + ' Add expansion text + Dim xStrExp As String = vbCrLf & "*---------------------- EXPANSION FIELD" & vbCrLf & TExpansion.Text & vbCrLf & vbCrLf + If TExpansion.Text = "" Then xStrExp = "" + + ' Output main data field. + Dim xStrMain As String = "*---------------------- MAIN DATA FIELD" & vbCrLf & vbCrLf & Join(xStrMeasure, "") & vbCrLf + + If xNTInput Then + Notes = xKBackUp + NTInput = True + End If + + ' Generate headers now, since we have the unique BPM/STOP/etc declarations. + Dim xStrHeader As String = GenerateHeaderMeta() + xStrHeader &= GenerateHeaderIndexedData() + + Dim xStrAll As String = xStrHeader & vbCrLf & xStrExp & vbCrLf & xStrMain + Return xStrAll + End Function + + Private Function SaveRandomBMS() As String + ' Straight up copied and pasted from SaveBMS. Optimization will be later. + CalculateGreatestVPosition() + SortByVPositionInsertion() + UpdatePairing() + Dim MeasureIndex As Integer + Dim hasOverlapping As Boolean = False + 'Dim xStrAll As String = "" 'for all + Dim xStrMeasure(MeasureAtDisplacement(GreatestVPosition) + 1) As String + + ' We regenerate these when traversing the bms event list. + ReDim hBPM(0) + ReDim hSTOP(0) + ReDim hSCROLL(0) + + Dim xNTInput As Boolean = NTInput + Dim xKBackUp() As Note = Notes + If xNTInput Then + NTInput = False + ConvertNT2BMSE() + End If + + Dim tempNote As Note 'Temp K + + Dim xprevNotes(-1) As Note 'Notes too close to the next measure + + For MeasureIndex = 0 To MeasureAtDisplacement(GreatestVPosition) + 1 'For xI1 in each measure + xStrMeasure(MeasureIndex) = vbCrLf + + Dim consistentDecimalStr = WriteDecimalWithDot(MeasureLength(MeasureIndex) / 192.0R) + + ' Handle fractional measure + If MeasureLength(MeasureIndex) <> 192.0R Then xStrMeasure(MeasureIndex) &= "#" & Add3Zeros(MeasureIndex) & "02:" & consistentDecimalStr & vbCrLf + + ' Get note count in current measure + Dim LowerLimit As Integer = Nothing + Dim UpperLimit As Integer = Nothing + GetMeasureLimits(MeasureIndex, LowerLimit, UpperLimit) + + If UpperLimit - LowerLimit = 0 Then Continue For 'If there is no K in the current measure then end this loop + + ' Get notes from this measure + Dim xUPrevText As Integer = UBound(xprevNotes) + Dim NotesInMeasure(UpperLimit - LowerLimit + xUPrevText) As Note + + ' Copy notes from previous array + For i = 0 To xUPrevText + NotesInMeasure(i) = xprevNotes(i) + Next + + ' Copy notes in current measure + For i = LowerLimit To UpperLimit - 1 + NotesInMeasure(i - LowerLimit + xprevNotes.Length) = Notes(i) + Next + + ' Find greatest column. + ' Since background tracks have the highest column values + ' this - niB will yield the number of B columns. + Dim GreatestColumn = 0 + For Each tempNote In NotesInMeasure + GreatestColumn = Math.Max(tempNote.ColumnIndex, GreatestColumn) + Next + + ReDim xprevNotes(-1) + xStrMeasure(MeasureIndex) &= GenerateBackgroundTracks(MeasureIndex, hasOverlapping, NotesInMeasure, GreatestColumn, xprevNotes) + xStrMeasure(MeasureIndex) &= GenerateKeyTracks(MeasureIndex, hasOverlapping, NotesInMeasure, xprevNotes) + Next + + ' Warn about 255 limit if neccesary. + If hasOverlapping Then MsgBox(Strings.Messages.SaveWarning & vbCrLf & + Strings.Messages.NoteOverlapError & vbCrLf & + Strings.Messages.SavedFileWillContainErrors, MsgBoxStyle.Exclamation) + If UBound(hBPM) > IIf(BPMx1296, 1295, 255) Then MsgBox(Strings.Messages.SaveWarning & vbCrLf & + Strings.Messages.BPMOverflowError & UBound(hBPM) & " > " & IIf(BPMx1296, 1295, 255) & vbCrLf & + Strings.Messages.SavedFileWillContainErrors, MsgBoxStyle.Exclamation) + If UBound(hSTOP) > IIf(STOPx1296, 1295, 255) Then MsgBox(Strings.Messages.SaveWarning & vbCrLf & + Strings.Messages.STOPOverflowError & UBound(hSTOP) & " > " & IIf(STOPx1296, 1295, 255) & vbCrLf & + Strings.Messages.SavedFileWillContainErrors, MsgBoxStyle.Exclamation) + If UBound(hSCROLL) > 1295 Then MsgBox(Strings.Messages.SaveWarning & vbCrLf & + Strings.Messages.SCROLLOverflowError & UBound(hSCROLL) & " > " & 1295 & vbCrLf & + Strings.Messages.SavedFileWillContainErrors, MsgBoxStyle.Exclamation) + + ' Add expansion text + Dim xStrExp As String = vbCrLf & TExpansion.Text & vbCrLf & vbCrLf + If TExpansion.Text = "" Then xStrExp = "" + + ' Output main data field. + Dim xStrMain As String = vbCrLf & Join(xStrMeasure, "") & vbCrLf + + If xNTInput Then + Notes = xKBackUp + NTInput = True + End If + + Dim xStrAll As String = xStrExp & vbCrLf & xStrMain & vbCrLf & "*---------------------- RANDOM DATA FIELD" + Return xStrAll + End Function + + Private Function GenerateHeaderMeta() As String + Dim xStrHeader As String = vbCrLf & "*---------------------- HEADER FIELD" & vbCrLf & vbCrLf + xStrHeader &= "#PLAYER " & (CHPlayer.SelectedIndex + 1) & vbCrLf + xStrHeader &= "#GENRE " & THGenre.Text & vbCrLf + xStrHeader &= "#TITLE " & THTitle.Text & vbCrLf + xStrHeader &= "#ARTIST " & THArtist.Text & vbCrLf + xStrHeader &= "#BPM " & WriteDecimalWithDot(Notes(0).Value / 10000) & vbCrLf + xStrHeader &= "#PLAYLEVEL " & THPlayLevel.Text & vbCrLf + xStrHeader &= "#RANK " & CHRank.SelectedIndex & vbCrLf + xStrHeader &= vbCrLf + If THSubTitle.Text <> "" Then xStrHeader &= "#SUBTITLE " & THSubTitle.Text & vbCrLf + If THSubArtist.Text <> "" Then xStrHeader &= "#SUBARTIST " & THSubArtist.Text & vbCrLf + If THStageFile.Text <> "" Then xStrHeader &= "#STAGEFILE " & THStageFile.Text & vbCrLf + If THBanner.Text <> "" Then xStrHeader &= "#BANNER " & THBanner.Text & vbCrLf + If THBackBMP.Text <> "" Then xStrHeader &= "#BACKBMP " & THBackBMP.Text & vbCrLf + xStrHeader &= vbCrLf + If CHDifficulty.SelectedIndex Then xStrHeader &= "#DIFFICULTY " & CHDifficulty.SelectedIndex & vbCrLf + If THExRank.Text <> "" Then xStrHeader &= "#DEFEXRANK " & THExRank.Text & vbCrLf + If THTotal.Text <> "" Then xStrHeader &= "#TOTAL " & THTotal.Text & vbCrLf + If THComment.Text <> "" Then xStrHeader &= "#COMMENT """ & THComment.Text & """" & vbCrLf + 'If THLnType.Text <> "" Then xStrHeader &= "#LNTYPE " & THLnType.Text & vbCrLf + If CHLnObj.SelectedIndex > 0 Then xStrHeader &= "#LNOBJ " & C10to36(CHLnObj.SelectedIndex) & vbCrLf _ + Else xStrHeader &= "#LNTYPE 1" & vbCrLf + xStrHeader &= vbCrLf + Return xStrHeader + End Function + + Private Function GenerateHeaderIndexedData() As String + Dim xStrHeader As String = "" + + For i = 1 To UBound(hWAV) + If Not hWAV(i) = "" Then xStrHeader &= "#WAV" & C10to36(i) & + " " & hWAV(i) & vbCrLf + Next + For i = 1 To UBound(hBPM) + xStrHeader &= "#BPM" & + IIf(BPMx1296, C10to36(i), Mid("0" & Hex(i), Len(Hex(i)))) & + " " & WriteDecimalWithDot(hBPM(i) / 10000) & vbCrLf + Next + For i = 1 To UBound(hSTOP) + xStrHeader &= "#STOP" & + IIf(STOPx1296, C10to36(i), Mid("0" & Hex(i), Len(Hex(i)))) & + " " & WriteDecimalWithDot(hSTOP(i) / 10000) & vbCrLf + Next + For i = 1 To UBound(hSCROLL) + xStrHeader &= "#SCROLL" & + C10to36(i) & " " & WriteDecimalWithDot(hSCROLL(i) / 10000) & vbCrLf + Next + + Return xStrHeader + End Function + + Private Sub GetMeasureLimits(MeasureIndex As Integer, ByRef LowerLimit As Integer, ByRef UpperLimit As Integer) + Dim NoteCount = UBound(Notes) + LowerLimit = 0 + + For i = 1 To NoteCount 'Collect Ks in the same measure + If MeasureAtDisplacement(Notes(i).VPosition) >= MeasureIndex Then + LowerLimit = i + Exit For + End If 'Lower limit found + Next + + UpperLimit = 0 + + For i = LowerLimit To NoteCount + If MeasureAtDisplacement(Notes(i).VPosition) > MeasureIndex Then + UpperLimit = i + Exit For 'Upper limit found + End If + Next + + If UpperLimit < LowerLimit Then UpperLimit = NoteCount + 1 + End Sub + + Private Function GenerateKeyTracks(MeasureIndex As Integer, ByRef hasOverlapping As Boolean, NotesInMeasure() As Note, ByRef xprevNotes() As Note) As String + Dim CurrentBMSChannel As String + Dim Ret As String = "" + + For Each CurrentBMSChannel In BMSChannelList 'Start rendering other notes + Dim relativeMeasurePos(-1) 'Ks in the same column + Dim NoteStrings(-1) 'Ks in the same column + + ' Background tracks take care of this. + If CurrentBMSChannel = "01" Then Continue For + + + For NoteIndex = 0 To UBound(NotesInMeasure) 'Find Ks in the same column (xI4 is TK index) + + Dim currentNote As Note = NotesInMeasure(NoteIndex) + If GetBMSChannelBy(currentNote) = CurrentBMSChannel Then + + ReDim Preserve relativeMeasurePos(UBound(relativeMeasurePos) + 1) + ReDim Preserve NoteStrings(UBound(NoteStrings) + 1) + relativeMeasurePos(UBound(relativeMeasurePos)) = currentNote.VPosition - MeasureBottom(MeasureAtDisplacement(currentNote.VPosition)) + If relativeMeasurePos(UBound(relativeMeasurePos)) < 0 Then relativeMeasurePos(UBound(relativeMeasurePos)) = 0 + + If CurrentBMSChannel = "03" Then 'If integer bpm + NoteStrings(UBound(NoteStrings)) = Mid("0" & Hex(currentNote.Value \ 10000), Len(Hex(currentNote.Value \ 10000))) + ElseIf CurrentBMSChannel = "08" Then 'If bpm requires declaration + Dim BpmIndex + For BpmIndex = 1 To UBound(hBPM) ' find BPM value in existing array + If currentNote.Value = hBPM(BpmIndex) Then Exit For + Next + If BpmIndex > UBound(hBPM) Then ' Didn't find it, add it + ReDim Preserve hBPM(UBound(hBPM) + 1) + hBPM(UBound(hBPM)) = currentNote.Value + End If + NoteStrings(UBound(NoteStrings)) = IIf(BPMx1296, C10to36(BpmIndex), Mid("0" & Hex(BpmIndex), Len(Hex(BpmIndex)))) + ElseIf CurrentBMSChannel = "09" Then 'If STOP + Dim StopIndex + For StopIndex = 1 To UBound(hSTOP) ' find STOP value in existing array + If currentNote.Value = hSTOP(StopIndex) Then Exit For + Next + + If StopIndex > UBound(hSTOP) Then ' Didn't find it, add it + ReDim Preserve hSTOP(UBound(hSTOP) + 1) + hSTOP(UBound(hSTOP)) = currentNote.Value + End If + NoteStrings(UBound(NoteStrings)) = IIf(STOPx1296, C10to36(StopIndex), Mid("0" & Hex(StopIndex), Len(Hex(StopIndex)))) + ElseIf CurrentBMSChannel = "SC" Then 'If SCROLL + Dim ScrollIndex + For ScrollIndex = 1 To UBound(hSCROLL) ' find SCROLL value in existing array + If currentNote.Value = hSCROLL(ScrollIndex) Then Exit For + Next + + If ScrollIndex > UBound(hSCROLL) Then ' Didn't find it, add it + ReDim Preserve hSCROLL(UBound(hSCROLL) + 1) + hSCROLL(UBound(hSCROLL)) = currentNote.Value + End If + NoteStrings(UBound(NoteStrings)) = C10to36(ScrollIndex) + Else + NoteStrings(UBound(NoteStrings)) = C10to36(currentNote.Value \ 10000) + End If + End If + Next + + If relativeMeasurePos.Length = 0 Then Continue For + + Dim xGCD As Double = MeasureLength(MeasureIndex) + For i = 0 To UBound(relativeMeasurePos) 'find greatest common divisor + If relativeMeasurePos(i) > 0 Then xGCD = GCD(xGCD, relativeMeasurePos(i)) + Next + + Dim xStrKey() As String + ReDim xStrKey(CInt(MeasureLength(MeasureIndex) / xGCD) - 1) + For i = 0 To UBound(xStrKey) 'assign 00 to all keys + xStrKey(i) = "00" + Next + + For i = 0 To UBound(relativeMeasurePos) 'assign K texts + If CInt(relativeMeasurePos(i) / xGCD) > UBound(xStrKey) Then + ReDim Preserve xprevNotes(UBound(xprevNotes) + 1) + With xprevNotes(UBound(xprevNotes)) + .ColumnIndex = BMSChannelToColumn(BMSChannelList(CurrentBMSChannel)) + .LongNote = IsChannelLongNote(BMSChannelList(CurrentBMSChannel)) + .Hidden = IsChannelHidden(BMSChannelList(CurrentBMSChannel)) + .VPosition = MeasureBottom(MeasureIndex) + .Value = C36to10(NoteStrings(i)) + End With + If BMSChannelList(CurrentBMSChannel) = "08" Then _ + xprevNotes(UBound(xprevNotes)).Value = IIf(BPMx1296, hBPM(C36to10(NoteStrings(i))), hBPM(Convert.ToInt32(NoteStrings(i), 16))) + If BMSChannelList(CurrentBMSChannel) = "09" Then _ + xprevNotes(UBound(xprevNotes)).Value = IIf(STOPx1296, hSTOP(C36to10(NoteStrings(i))), hSTOP(Convert.ToInt32(NoteStrings(i), 16))) + If BMSChannelList(CurrentBMSChannel) = "SC" Then _ + xprevNotes(UBound(xprevNotes)).Value = hSCROLL(C36to10(NoteStrings(i))) + Continue For + End If + If xStrKey(CInt(relativeMeasurePos(i) / xGCD)) <> "00" Then + hasOverlapping = True + End If + + xStrKey(CInt(relativeMeasurePos(i) / xGCD)) = NoteStrings(i) + Next + + Ret &= "#" & Add3Zeros(MeasureIndex) & CurrentBMSChannel & ":" & Join(xStrKey, "") & vbCrLf + Next + + Return Ret + End Function + + Private Function GenerateBackgroundTracks(MeasureIndex As Integer, ByRef hasOverlapping As Boolean, NotesInMeasure() As Note, GreatestColumn As Integer, ByRef xprevNotes() As Note) As String + Dim relativeNotePositions() As Double 'Ks in the same column + Dim noteStrings() As String 'Ks in the same column + Dim Ret As String = "" + + For ColIndex = niB To GreatestColumn 'Start rendering B notes (xI3 is columnindex) + ReDim relativeNotePositions(-1) 'Ks in the same column + ReDim noteStrings(-1) 'Ks in the same column + + For I = 0 To UBound(NotesInMeasure) 'Find Ks in the same column (xI4 is TK index) + If NotesInMeasure(I).ColumnIndex = ColIndex Then + + ReDim Preserve relativeNotePositions(UBound(relativeNotePositions) + 1) + ReDim Preserve noteStrings(UBound(noteStrings) + 1) + + relativeNotePositions(UBound(relativeNotePositions)) = NotesInMeasure(I).VPosition - MeasureBottom(MeasureAtDisplacement(NotesInMeasure(I).VPosition)) + If relativeNotePositions(UBound(relativeNotePositions)) < 0 Then relativeNotePositions(UBound(relativeNotePositions)) = 0 + + noteStrings(UBound(noteStrings)) = C10to36(NotesInMeasure(I).Value \ 10000) + End If + Next + + Dim xGCD As Double = MeasureLength(MeasureIndex) + For i = 0 To UBound(relativeNotePositions) 'find greatest common divisor + If relativeNotePositions(i) > 0 Then xGCD = GCD(xGCD, relativeNotePositions(i)) + Next + + Dim xStrKey(CInt(MeasureLength(MeasureIndex) / xGCD) - 1) As String + For i = 0 To UBound(xStrKey) 'assign 00 to all keys + xStrKey(i) = "00" + Next + + For i = 0 To UBound(relativeNotePositions) 'assign K texts + If CInt(relativeNotePositions(i) / xGCD) > UBound(xStrKey) Then + + ReDim Preserve xprevNotes(UBound(xprevNotes) + 1) + + With xprevNotes(UBound(xprevNotes)) + .ColumnIndex = ColIndex + .VPosition = MeasureBottom(MeasureIndex) + .Value = C36to10(noteStrings(i)) + End With + + Continue For + End If + If xStrKey(CInt(relativeNotePositions(i) / xGCD)) <> "00" Then hasOverlapping = True + xStrKey(CInt(relativeNotePositions(i) / xGCD)) = noteStrings(i) + Next + + Ret &= "#" & Add3Zeros(MeasureIndex) & "01:" & Join(xStrKey, "") & vbCrLf + Next + + Return Ret + End Function + + Private Function OpenSM(ByVal xStrAll As String) As Boolean + KMouseOver = -1 + + Dim xStrLine() As String = Split(xStrAll, vbCrLf) + 'Remove comments starting with "//" + For xI1 As Integer = 0 To UBound(xStrLine) + If xStrLine(xI1).Contains("//") Then xStrLine(xI1) = Mid(xStrLine(xI1), 1, InStr(xStrLine(xI1), "//") - 1) + Next + + xStrAll = Join(xStrLine, "") + xStrLine = Split(xStrAll, ";") + + Dim iDiff As Integer = 0 + Dim iCurrentDiff As Integer = 0 + Dim xTempSplit() As String = Split(xStrAll, "#NOTES:") + Dim xTempStr() As String = {} + If xTempSplit.Length > 2 Then + ReDim Preserve xTempStr(UBound(xTempSplit) - 1) + For xI1 As Integer = 1 To UBound(xTempSplit) + xTempSplit(xI1) = Mid(xTempSplit(xI1), InStr(xTempSplit(xI1), ":") + 1) + xTempSplit(xI1) = Mid(xTempSplit(xI1), InStr(xTempSplit(xI1), ":") + 1).Trim + xTempStr(xI1 - 1) = Mid(xTempSplit(xI1), 1, InStr(xTempSplit(xI1), ":") - 1) + xTempSplit(xI1) = Mid(xTempSplit(xI1), InStr(xTempSplit(xI1), ":") + 1).Trim + xTempStr(xI1 - 1) &= " : " & Mid(xTempSplit(xI1), 1, InStr(xTempSplit(xI1), ":") - 1) + Next + + Dim xDiag As New dgImportSM(xTempStr) + If xDiag.ShowDialog() = Windows.Forms.DialogResult.Cancel Then Return True + iDiff = xDiag.iResult + End If + + Dim sL As String + ReDim Notes(0) + ReDim mColumn(999) + ReDim hWAV(1295) + ReDim hBPM(1295) 'x10000 + ReDim hSTOP(1295) + ReDim hSCROLL(1295) + Me.InitializeNewBMS() + + With Notes(0) + .ColumnIndex = niBPM + .VPosition = -1 + '.LongNote = False + '.Selected = False + .Value = 1200000 + End With + + For Each sL In xStrLine + If UCase(sL).StartsWith("#TITLE:") Then + THTitle.Text = Mid(sL, Len("#TITLE:") + 1) + + ElseIf UCase(sL).StartsWith("#SUBTITLE:") Then + If Not UCase(sL).EndsWith("#SUBTITLE:") Then THTitle.Text &= " " & Mid(sL, Len("#SUBTITLE:") + 1) + + ElseIf UCase(sL).StartsWith("#ARTIST:") Then + THArtist.Text = Mid(sL, Len("#ARTIST:") + 1) + + ElseIf UCase(sL).StartsWith("#GENRE:") Then + THGenre.Text = Mid(sL, Len("#GENRE:") + 1) + + ElseIf UCase(sL).StartsWith("#BPMS:") Then + Dim xLine As String = Mid(sL, Len("#BPMS:") + 1) + Dim xItem() As String = Split(xLine, ",") + + Dim xVal1 As Double + Dim xVal2 As Double + + For xI1 As Integer = 0 To UBound(xItem) + xVal1 = Mid(xItem(xI1), 1, InStr(xItem(xI1), "=") - 1) + xVal2 = Mid(xItem(xI1), InStr(xItem(xI1), "=") + 1) + + If xVal1 <> 0 Then + ReDim Preserve Notes(Notes.Length) + With Notes(UBound(Notes)) + .ColumnIndex = niBPM + '.LongNote = False + '.Hidden = False + '.Selected = False + .VPosition = xVal1 * 48 + .Value = xVal2 * 10000 + End With + Else + Notes(0).Value = xVal2 * 10000 + End If + Next + + ElseIf UCase(sL).StartsWith("#NOTES:") Then + If iCurrentDiff <> iDiff Then iCurrentDiff += 1 : GoTo Jump1 + + iCurrentDiff += 1 + Dim xLine As String = Mid(sL, Len("#NOTES:") + 1) + Dim xItem() As String = Split(xLine, ":") + For xI1 As Integer = 0 To UBound(xItem) + xItem(xI1) = xItem(xI1).Trim + Next + + If xItem.Length <> 6 Then GoTo Jump1 + + THPlayLevel.Text = xItem(3) + + Dim xM() As String = Split(xItem(5), ",") + For xI1 As Integer = 0 To UBound(xM) + xM(xI1) = xM(xI1).Trim + Next + + For xI1 As Integer = 0 To UBound(xM) + For xI2 As Integer = 0 To Len(xM(xI1)) - 1 Step 4 + If xM(xI1)(xI2) <> "0" Then + ReDim Preserve Notes(Notes.Length) + With Notes(UBound(Notes)) + .ColumnIndex = niA1 + .LongNote = xM(xI1)(xI2) = "2" Or xM(xI1)(xI2) = "3" + '.Hidden = False + '.Selected = False + .VPosition = (192 \ (Len(xM(xI1)) \ 4)) * xI2 \ 4 + xI1 * 192 + .Value = 10000 + End With + End If + If xM(xI1)(xI2 + 1) <> "0" Then + ReDim Preserve Notes(Notes.Length) + With Notes(UBound(Notes)) + .ColumnIndex = niA2 + .LongNote = xM(xI1)(xI2 + 1) = "2" Or xM(xI1)(xI2 + 1) = "3" + '.Hidden = False + '.Selected = False + .VPosition = (192 \ (Len(xM(xI1)) \ 4)) * xI2 \ 4 + xI1 * 192 + .Value = 10000 + End With + End If + If xM(xI1)(xI2 + 2) <> "0" Then + ReDim Preserve Notes(Notes.Length) + With Notes(UBound(Notes)) + .ColumnIndex = niA3 + .LongNote = xM(xI1)(xI2 + 2) = "2" Or xM(xI1)(xI2 + 2) = "3" + '.Hidden = False + '.Selected = False + .VPosition = (192 \ (Len(xM(xI1)) \ 4)) * xI2 \ 4 + xI1 * 192 + .Value = 10000 + End With + End If + If xM(xI1)(xI2 + 3) <> "0" Then + ReDim Preserve Notes(Notes.Length) + With Notes(UBound(Notes)) + .ColumnIndex = niA4 + .LongNote = xM(xI1)(xI2 + 3) = "2" Or xM(xI1)(xI2 + 3) = "3" + '.Hidden = False + '.Selected = False + .VPosition = (192 \ (Len(xM(xI1)) \ 4)) * xI2 \ 4 + xI1 * 192 + .Value = 10000 + End With + End If + Next + Next +Jump1: + End If + Next + + If NTInput Then ConvertBMSE2NT() + + LWAV.Visible = False + LWAV.Items.Clear() + For xI1 As Integer = 1 To 1295 + LWAV.Items.Add(C10to36(xI1) & ": " & hWAV(xI1)) + Next + LWAV.SelectedIndex = 0 + LWAV.Visible = True + + THBPM.Value = Notes(0).Value / 10000 + SortByVPositionQuick(0, UBound(Notes)) + UpdatePairing() + CalculateTotalPlayableNotes() + CalculateGreatestVPosition() + RefreshPanelAll() + POStatusRefresh() + Return False + End Function + + ''' Do not clear Undo. + Private Sub OpeniBMSC(ByVal Path As String) + KMouseOver = -1 + + Dim br As New BinaryReader(New FileStream(Path, FileMode.Open, FileAccess.Read), System.Text.Encoding.Unicode) + + If br.ReadInt32 <> &H534D4269 Then GoTo EndOfSub + If br.ReadByte <> CByte(&H43) Then GoTo EndOfSub + Dim xMajor As Integer = br.ReadByte + Dim xMinor As Integer = br.ReadByte + Dim xBuild As Integer = br.ReadByte + + ClearUndo() + ReDim Notes(0) + ReDim mColumn(999) + ReDim hWAV(1295) + Me.InitializeNewBMS() + Me.InitializeOpenBMS() + + With Notes(0) + .ColumnIndex = niBPM + .VPosition = -1 + '.LongNote = False + '.Selected = False + .Value = 1200000 + End With + + Do Until br.BaseStream.Position >= br.BaseStream.Length + Dim BlockID As Integer = br.ReadInt32() + + Select Case BlockID + + Case &H66657250 'Preferences + Dim xPref As Integer = br.ReadInt32 + + NTInput = xPref And &H1 + TBNTInput.Checked = NTInput + mnNTInput.Checked = NTInput + POBLong.Enabled = Not NTInput + POBLongShort.Enabled = Not NTInput + + ErrorCheck = xPref And &H2 + TBErrorCheck.Checked = ErrorCheck + TBErrorCheck_Click(TBErrorCheck, New System.EventArgs) + + PreviewOnClick = xPref And &H4 + TBPreviewOnClick.Checked = PreviewOnClick + TBPreviewOnClick_Click(TBPreviewOnClick, New System.EventArgs) + + ShowFileName = xPref And &H8 + TBShowFileName.Checked = ShowFileName + TBShowFileName_Click(TBShowFileName, New System.EventArgs) + + mnSMenu.Checked = xPref And &H100 + mnSTB.Checked = xPref And &H200 + mnSOP.Checked = xPref And &H400 + mnSStatus.Checked = xPref And &H800 + mnSLSplitter.Checked = xPref And &H1000 + mnSRSplitter.Checked = xPref And &H2000 + + CGShow.Checked = xPref And &H4000 + CGShowS.Checked = xPref And &H8000 + CGShowBG.Checked = xPref And &H10000 + CGShowM.Checked = xPref And &H20000 + CGShowMB.Checked = xPref And &H40000 + CGShowV.Checked = xPref And &H80000 + CGShowC.Checked = xPref And &H100000 + CGBLP.Checked = xPref And &H200000 + CGSTOP.Checked = xPref And &H400000 + CGSCROLL.Checked = xPref And &H20000000 + CGBPM.Checked = xPref And &H800000 + + CGSnap.Checked = xPref And &H1000000 + CGDisableVertical.Checked = xPref And &H2000000 + cVSLockL.Checked = xPref And &H4000000 + cVSLock.Checked = xPref And &H8000000 + cVSLockR.Checked = xPref And &H10000000 + + CGDivide.Value = br.ReadInt32 + CGSub.Value = br.ReadInt32 + gSlash = br.ReadInt32 + CGHeight.Value = br.ReadSingle + CGWidth.Value = br.ReadSingle + CGB.Value = br.ReadInt32 + + Case &H64616548 'Header + THTitle.Text = br.ReadString + THArtist.Text = br.ReadString + THGenre.Text = br.ReadString + Notes(0).Value = br.ReadInt64 + Dim xPlayerRank As Integer = br.ReadByte + THPlayLevel.Text = br.ReadString + + CHPlayer.SelectedIndex = xPlayerRank And &HF + CHRank.SelectedIndex = xPlayerRank >> 4 + + THSubTitle.Text = br.ReadString + THSubArtist.Text = br.ReadString + 'THMaker.Text = br.ReadString + THStageFile.Text = br.ReadString + THBanner.Text = br.ReadString + THBackBMP.Text = br.ReadString + 'THMidiFile.Text = br.ReadString + CHDifficulty.SelectedIndex = br.ReadByte + THExRank.Text = br.ReadString + THTotal.Text = br.ReadString + 'THVolWAV.Text = br.ReadString + THComment.Text = br.ReadString + 'THLnType.Text = br.ReadString + CHLnObj.SelectedIndex = br.ReadInt16 + + Case &H564157 'WAV List + Dim xWAVOptions As Integer = br.ReadByte + WAVMultiSelect = xWAVOptions And &H1 + CWAVMultiSelect.Checked = WAVMultiSelect + CWAVMultiSelect_CheckedChanged(CWAVMultiSelect, New EventArgs) + WAVChangeLabel = xWAVOptions And &H2 + CWAVChangeLabel.Checked = WAVChangeLabel + CWAVChangeLabel_CheckedChanged(CWAVChangeLabel, New EventArgs) + + Dim xWAVCount As Integer = br.ReadInt32 + For xxi As Integer = 1 To xWAVCount + Dim xI As Integer = br.ReadInt16 + hWAV(xI) = br.ReadString + Next + + Case &H74616542 'Beat + nBeatN.Value = br.ReadInt16 + nBeatD.Value = br.ReadInt16 + 'nBeatD.SelectedIndex = br.ReadByte + + Dim xBeatChangeMode As Integer = br.ReadByte + Dim xBeatChangeList As RadioButton() = {CBeatPreserve, CBeatMeasure, CBeatCut, CBeatScale} + xBeatChangeList(xBeatChangeMode).Checked = True + CBeatPreserve_Click(xBeatChangeList(xBeatChangeMode), New System.EventArgs) + + Dim xBeatCount As Integer = br.ReadInt32 + For xxi As Integer = 1 To xBeatCount + Dim xIndex As Integer = br.ReadInt16 + MeasureLength(xIndex) = br.ReadDouble + Dim xRatio As Double = MeasureLength(xIndex) / 192.0R + Dim xxD As Long = GetDenominator(xRatio) + LBeat.Items(xIndex) = Add3Zeros(xIndex) & ": " & xRatio & IIf(xxD > 10000, "", " ( " & CLng(xRatio * xxD) & " / " & xxD & " ) ") + Next + + Case &H6E707845 'Expansion Code + TExpansion.Text = br.ReadString + + Case &H65746F4E 'Note + Dim xNoteUbound As Integer = br.ReadInt32 + ReDim Preserve Notes(xNoteUbound) + For i As Integer = 1 To UBound(Notes) + Notes(i).FromBinReader(br) + Next + + Case &H6F646E55 'Undo / Redo Commands + Dim URCount As Integer = br.ReadInt32 'Should be 100 + sI = br.ReadInt32 + + For xI As Integer = 0 To 99 + Dim xUndoCount As Integer = br.ReadInt32 + Dim xBaseUndo As New UndoRedo.Void + Dim xIteratorUndo As UndoRedo.LinkedURCmd = xBaseUndo + + For xxj As Integer = 1 To xUndoCount + Dim xByteLen As Integer = br.ReadInt32 + Dim xByte() As Byte = br.ReadBytes(xByteLen) + xIteratorUndo.Next = UndoRedo.fromBytes(xByte) + xIteratorUndo = xIteratorUndo.Next + Next + + sUndo(xI) = xBaseUndo.Next + + Dim xRedoCount As Integer = br.ReadInt32 + Dim xBaseRedo As New UndoRedo.Void + Dim xIteratorRedo As UndoRedo.LinkedURCmd = xBaseRedo + For xxj As Integer = 1 To xRedoCount + Dim xByteLen As Integer = br.ReadInt32 + Dim xByte() As Byte = br.ReadBytes(xByteLen) + xIteratorRedo.Next = UndoRedo.fromBytes(xByte) + xIteratorRedo = xIteratorRedo.Next + Next + sRedo(xI) = xBaseRedo.Next + Next + + End Select + Loop + +EndOfSub: + br.Close() + + TBUndo.Enabled = sUndo(sI).ofType <> UndoRedo.opNoOperation + TBRedo.Enabled = sRedo(sIA).ofType <> UndoRedo.opNoOperation + mnUndo.Enabled = sUndo(sI).ofType <> UndoRedo.opNoOperation + mnRedo.Enabled = sRedo(sIA).ofType <> UndoRedo.opNoOperation + + LWAV.Visible = False + LWAV.Items.Clear() + For xI1 As Integer = 1 To 1295 + LWAV.Items.Add(C10to36(xI1) & ": " & hWAV(xI1)) + Next + LWAV.SelectedIndex = 0 + LWAV.Visible = True + + THBPM.Value = Notes(0).Value / 10000 + SortByVPositionQuick(0, UBound(Notes)) + UpdatePairing() + UpdateMeasureBottom() + CalculateTotalPlayableNotes() + CalculateGreatestVPosition() + RefreshPanelAll() + POStatusRefresh() + End Sub + + Private Sub SaveiBMSC(ByVal Path As String) + CalculateGreatestVPosition() + SortByVPositionInsertion() + UpdatePairing() + + Try + + Dim bw As New BinaryWriter(New IO.FileStream(Path, FileMode.Create), System.Text.Encoding.Unicode) + + 'bw.Write("iBMSC".ToCharArray) + bw.Write(&H534D4269) + bw.Write(CByte(&H43)) + bw.Write(CByte(My.Application.Info.Version.Major)) + bw.Write(CByte(My.Application.Info.Version.Minor)) + bw.Write(CByte(My.Application.Info.Version.Build)) + + 'Preferences + 'bw.Write("Pref".ToCharArray) + bw.Write(&H66657250) + Dim xPref As Integer = 0 + If NTInput Then xPref = xPref Or &H1 + If ErrorCheck Then xPref = xPref Or &H2 + If PreviewOnClick Then xPref = xPref Or &H4 + If ShowFileName Then xPref = xPref Or &H8 + If mnSMenu.Checked Then xPref = xPref Or &H100 + If mnSTB.Checked Then xPref = xPref Or &H200 + If mnSOP.Checked Then xPref = xPref Or &H400 + If mnSStatus.Checked Then xPref = xPref Or &H800 + If mnSLSplitter.Checked Then xPref = xPref Or &H1000 + If mnSRSplitter.Checked Then xPref = xPref Or &H2000 + If gShowGrid Then xPref = xPref Or &H4000 + If gShowSubGrid Then xPref = xPref Or &H8000 + If gShowBG Then xPref = xPref Or &H10000 + If gShowMeasureNumber Then xPref = xPref Or &H20000 + If gShowMeasureBar Then xPref = xPref Or &H40000 + If gShowVerticalLine Then xPref = xPref Or &H80000 + If gShowC Then xPref = xPref Or &H100000 + If gDisplayBGAColumn Then xPref = xPref Or &H200000 + If gSTOP Then xPref = xPref Or &H400000 + If gBPM Then xPref = xPref Or &H800000 + If gSCROLL Then xPref = xPref Or &H20000000 + If gSnap Then xPref = xPref Or &H1000000 + If DisableVerticalMove Then xPref = xPref Or &H2000000 + If spLock(0) Then xPref = xPref Or &H4000000 + If spLock(1) Then xPref = xPref Or &H8000000 + If spLock(2) Then xPref = xPref Or &H10000000 + bw.Write(xPref) + bw.Write(BitConverter.GetBytes(gDivide)) + bw.Write(BitConverter.GetBytes(gSub)) + bw.Write(BitConverter.GetBytes(gSlash)) + bw.Write(BitConverter.GetBytes(gxHeight)) + bw.Write(BitConverter.GetBytes(gxWidth)) + bw.Write(BitConverter.GetBytes(gColumns)) + + 'Header + 'bw.Write("Head".ToCharArray) + bw.Write(&H64616548) + bw.Write(THTitle.Text) + bw.Write(THArtist.Text) + bw.Write(THGenre.Text) + bw.Write(Notes(0).Value) + Dim xPlayer As Integer = CHPlayer.SelectedIndex + Dim xRank As Integer = CHRank.SelectedIndex << 4 + bw.Write(CByte(xPlayer Or xRank)) + bw.Write(THPlayLevel.Text) + + bw.Write(THSubTitle.Text) + bw.Write(THSubArtist.Text) + 'bw.Write(THMaker.Text) + bw.Write(THStageFile.Text) + bw.Write(THBanner.Text) + bw.Write(THBackBMP.Text) + 'bw.Write(THMidiFile.Text) + bw.Write(CByte(CHDifficulty.SelectedIndex)) + bw.Write(THExRank.Text) + bw.Write(THTotal.Text) + 'bw.Write(THVolWAV.Text) + bw.Write(THComment.Text) + 'bw.Write(THLnType.Text) + bw.Write(CShort(CHLnObj.SelectedIndex)) + + 'Wav List + 'bw.Write(("WAV" & vbNullChar).ToCharArray) + bw.Write(&H564157) + + Dim xWAVOptions As Integer = 0 + If WAVMultiSelect Then xWAVOptions = xWAVOptions Or &H1 + If WAVChangeLabel Then xWAVOptions = xWAVOptions Or &H2 + bw.Write(CByte(xWAVOptions)) + + Dim xWAVCount As Integer = 0 + For i As Integer = 1 To UBound(hWAV) + If hWAV(i) <> "" Then xWAVCount += 1 + Next + bw.Write(xWAVCount) + + For i As Integer = 1 To UBound(hWAV) + If hWAV(i) = "" Then Continue For + bw.Write(CShort(i)) + bw.Write(hWAV(i)) + Next + + 'Beat + 'bw.Write("Beat".ToCharArray) + bw.Write(&H74616542) + 'Dim xNumerator As Short = nBeatN.Value + 'Dim xDenominator As Short = nBeatD.Value + 'Dim xBeatChangeMode As Byte = BeatChangeMode + bw.Write(CShort(nBeatN.Value)) + bw.Write(CShort(nBeatD.Value)) + bw.Write(CByte(BeatChangeMode)) + + Dim xBeatCount As Integer = 0 + For i As Integer = 0 To UBound(MeasureLength) + If MeasureLength(i) <> 192.0R Then xBeatCount += 1 + Next + bw.Write(xBeatCount) + + For i As Integer = 0 To UBound(MeasureLength) + If MeasureLength(i) = 192.0R Then Continue For + bw.Write(CShort(i)) + bw.Write(MeasureLength(i)) + Next + + 'Expansion Code + 'bw.Write("Expn".ToCharArray) + bw.Write(&H6E707845) + bw.Write(TExpansion.Text) + + 'Note + 'bw.Write("Note".ToCharArray) + bw.Write(&H65746F4E) + bw.Write(UBound(Notes)) + For i As Integer = 1 To UBound(Notes) + Notes(i).WriteBinWriter(bw) + Next + + 'Undo / Redo Commands + 'bw.Write("Undo".ToCharArray) + bw.Write(&H6F646E55) + bw.Write(100) + bw.Write(sI) + + For i As Integer = 0 To 99 + 'UndoCommandsCount + Dim countUndo As Integer = 0 + Dim pUndo As UndoRedo.LinkedURCmd = sUndo(i) + While pUndo IsNot Nothing + countUndo += 1 + pUndo = pUndo.Next + End While + bw.Write(countUndo) + + 'UndoCommands + pUndo = sUndo(i) + For xxi As Integer = 1 To countUndo + Dim bUndo() As Byte = pUndo.toBytes + bw.Write(bUndo.Length) 'Length + bw.Write(bUndo) 'Command + pUndo = pUndo.Next + Next + + 'RedoCommandsCount + Dim countRedo As Integer = 0 + Dim pRedo As UndoRedo.LinkedURCmd = sRedo(i) + While pRedo IsNot Nothing + countRedo += 1 + pRedo = pRedo.Next + End While + bw.Write(countRedo) + + 'RedoCommands + pRedo = sRedo(i) + For xxi As Integer = 1 To countRedo + Dim bRedo() As Byte = pRedo.toBytes + bw.Write(bRedo.Length) + bw.Write(bRedo) + pRedo = pRedo.Next + Next + Next + + bw.Close() + + Catch ex As Exception + + MsgBox(ex.Message) + + End Try + + End Sub + +End Class diff --git a/iBMSC/MainWindow.designer.vb b/iBMSC/MainWindow.designer.vb index ceffdd231..9127b201a 100644 --- a/iBMSC/MainWindow.designer.vb +++ b/iBMSC/MainWindow.designer.vb @@ -33,152 +33,8 @@ Partial Class MainWindow Me.TBThemeRefresh = New System.Windows.Forms.ToolStripMenuItem() Me.TBThemeLoadComptability = New System.Windows.Forms.ToolStripMenuItem() Me.ToolStripSeparator6 = New System.Windows.Forms.ToolStripSeparator() - Me.TBTheme = New System.Windows.Forms.ToolStripDropDownButton() Me.mnTheme = New System.Windows.Forms.ToolStripMenuItem() - Me.POptionsScroll = New System.Windows.Forms.Panel() - Me.POptions = New System.Windows.Forms.Panel() - Me.POExpansion = New System.Windows.Forms.Panel() - Me.POExpansionInner = New System.Windows.Forms.Panel() - Me.TExpansion = New System.Windows.Forms.TextBox() - Me.POExpansionResizer = New System.Windows.Forms.Button() - Me.POExpansionSwitch = New System.Windows.Forms.CheckBox() - Me.POBeat = New System.Windows.Forms.Panel() - Me.POBeatInner = New System.Windows.Forms.TableLayoutPanel() - Me.POBeatExpander = New System.Windows.Forms.CheckBox() - Me.POBeatResizer = New System.Windows.Forms.Button() - Me.TableLayoutPanel7 = New System.Windows.Forms.TableLayoutPanel() - Me.nBeatD = New System.Windows.Forms.NumericUpDown() - Me.BBeatApplyV = New System.Windows.Forms.Button() - Me.nBeatN = New System.Windows.Forms.NumericUpDown() - Me.BBeatApply = New System.Windows.Forms.Button() - Me.Label7 = New System.Windows.Forms.Label() - Me.tBeatValue = New System.Windows.Forms.TextBox() - Me.LBeat = New System.Windows.Forms.ListBox() - Me.POBeatPart2 = New System.Windows.Forms.TableLayoutPanel() - Me.CBeatScale = New System.Windows.Forms.RadioButton() - Me.CBeatCut = New System.Windows.Forms.RadioButton() - Me.CBeatMeasure = New System.Windows.Forms.RadioButton() - Me.CBeatPreserve = New System.Windows.Forms.RadioButton() - Me.POBeatSwitch = New System.Windows.Forms.CheckBox() - Me.POWAV = New System.Windows.Forms.Panel() - Me.POWAVInner = New System.Windows.Forms.TableLayoutPanel() - Me.POWAVExpander = New System.Windows.Forms.CheckBox() - Me.LWAV = New System.Windows.Forms.ListBox() - Me.FlowLayoutPanel3 = New System.Windows.Forms.FlowLayoutPanel() - Me.BWAVUp = New System.Windows.Forms.Button() - Me.BWAVDown = New System.Windows.Forms.Button() - Me.BWAVBrowse = New System.Windows.Forms.Button() - Me.BWAVRemove = New System.Windows.Forms.Button() - Me.POWAVResizer = New System.Windows.Forms.Button() - Me.POWAVPart2 = New System.Windows.Forms.TableLayoutPanel() - Me.CWAVMultiSelect = New System.Windows.Forms.CheckBox() - Me.CWAVChangeLabel = New System.Windows.Forms.CheckBox() - Me.POWAVSwitch = New System.Windows.Forms.CheckBox() - Me.POWaveForm = New System.Windows.Forms.Panel() - Me.POWaveFormInner = New System.Windows.Forms.Panel() - Me.POWaveFormPart2 = New System.Windows.Forms.TableLayoutPanel() - Me.TWSaturation = New System.Windows.Forms.NumericUpDown() - Me.PictureBox2 = New System.Windows.Forms.PictureBox() - Me.TWTransparency = New System.Windows.Forms.NumericUpDown() - Me.PictureBox3 = New System.Windows.Forms.PictureBox() - Me.TWPrecision = New System.Windows.Forms.NumericUpDown() - Me.PictureBox4 = New System.Windows.Forms.PictureBox() - Me.TWWidth = New System.Windows.Forms.NumericUpDown() - Me.PictureBox5 = New System.Windows.Forms.PictureBox() - Me.TWLeft = New System.Windows.Forms.NumericUpDown() - Me.PictureBox6 = New System.Windows.Forms.PictureBox() - Me.TWSaturation2 = New System.Windows.Forms.TrackBar() - Me.TWLeft2 = New System.Windows.Forms.TrackBar() - Me.TWTransparency2 = New System.Windows.Forms.TrackBar() - Me.TWWidth2 = New System.Windows.Forms.TrackBar() - Me.TWPrecision2 = New System.Windows.Forms.TrackBar() - Me.POWaveFormExpander = New System.Windows.Forms.CheckBox() - Me.POWaveFormPart1 = New System.Windows.Forms.TableLayoutPanel() - Me.TableLayoutPanel1 = New System.Windows.Forms.TableLayoutPanel() - Me.FlowLayoutPanel1 = New System.Windows.Forms.FlowLayoutPanel() - Me.BWLoad = New System.Windows.Forms.Button() - Me.BWClear = New System.Windows.Forms.Button() - Me.BWLock = New System.Windows.Forms.CheckBox() - Me.TWFileName = New System.Windows.Forms.TextBox() - Me.TableLayoutPanel6 = New System.Windows.Forms.TableLayoutPanel() - Me.PictureBox1 = New System.Windows.Forms.PictureBox() - Me.TWPosition2 = New System.Windows.Forms.TrackBar() - Me.TWPosition = New System.Windows.Forms.NumericUpDown() - Me.POWaveFormSwitch = New System.Windows.Forms.CheckBox() - Me.POGrid = New System.Windows.Forms.Panel() - Me.POGridInner = New System.Windows.Forms.Panel() - Me.POGridPart2 = New System.Windows.Forms.TableLayoutPanel() - Me.TableLayoutPanel5 = New System.Windows.Forms.TableLayoutPanel() - Me.FlowLayoutPanel2 = New System.Windows.Forms.FlowLayoutPanel() - Me.cVSLockL = New System.Windows.Forms.CheckBox() - Me.cVSLock = New System.Windows.Forms.CheckBox() - Me.cVSLockR = New System.Windows.Forms.CheckBox() - Me.Label5 = New System.Windows.Forms.Label() - Me.TableLayoutPanel4 = New System.Windows.Forms.TableLayoutPanel() - Me.Label1 = New System.Windows.Forms.Label() - Me.CGB = New System.Windows.Forms.NumericUpDown() - Me.POGridExpander = New System.Windows.Forms.CheckBox() - Me.POGridPart1 = New System.Windows.Forms.TableLayoutPanel() - Me.TableLayoutPanel3 = New System.Windows.Forms.TableLayoutPanel() - Me.PictureBox9 = New System.Windows.Forms.PictureBox() - Me.CGHeight2 = New System.Windows.Forms.TrackBar() - Me.CGHeight = New System.Windows.Forms.NumericUpDown() - Me.PictureBox10 = New System.Windows.Forms.PictureBox() - Me.CGWidth2 = New System.Windows.Forms.TrackBar() - Me.CGWidth = New System.Windows.Forms.NumericUpDown() - Me.CGDisableVertical = New System.Windows.Forms.CheckBox() - Me.CGSnap = New System.Windows.Forms.CheckBox() - Me.TableLayoutPanel2 = New System.Windows.Forms.TableLayoutPanel() - Me.PictureBox7 = New System.Windows.Forms.PictureBox() - Me.CGDivide = New System.Windows.Forms.NumericUpDown() - Me.CGSub = New System.Windows.Forms.NumericUpDown() - Me.BGSlash = New System.Windows.Forms.Button() - Me.POGridSwitch = New System.Windows.Forms.CheckBox() - Me.POHeader = New System.Windows.Forms.Panel() - Me.POHeaderInner = New System.Windows.Forms.Panel() - Me.POHeaderPart2 = New System.Windows.Forms.TableLayoutPanel() - Me.CHDifficulty = New System.Windows.Forms.ComboBox() - Me.Label13 = New System.Windows.Forms.Label() - Me.THExRank = New System.Windows.Forms.TextBox() - Me.Label25 = New System.Windows.Forms.Label() - Me.CHLnObj = New System.Windows.Forms.ComboBox() - Me.Label23 = New System.Windows.Forms.Label() - Me.Label21 = New System.Windows.Forms.Label() - Me.THComment = New System.Windows.Forms.TextBox() - Me.Label24 = New System.Windows.Forms.Label() - Me.Label15 = New System.Windows.Forms.Label() - Me.THTotal = New System.Windows.Forms.TextBox() - Me.Label20 = New System.Windows.Forms.Label() - Me.BHStageFile = New System.Windows.Forms.Button() - Me.BHBanner = New System.Windows.Forms.Button() - Me.Label19 = New System.Windows.Forms.Label() - Me.BHBackBMP = New System.Windows.Forms.Button() - Me.Label17 = New System.Windows.Forms.Label() - Me.Label16 = New System.Windows.Forms.Label() - Me.Label12 = New System.Windows.Forms.Label() - Me.THBackBMP = New System.Windows.Forms.TextBox() - Me.Label11 = New System.Windows.Forms.Label() - Me.THBanner = New System.Windows.Forms.TextBox() - Me.THStageFile = New System.Windows.Forms.TextBox() - Me.THSubTitle = New System.Windows.Forms.TextBox() - Me.THSubArtist = New System.Windows.Forms.TextBox() - Me.POHeaderExpander = New System.Windows.Forms.CheckBox() - Me.POHeaderPart1 = New System.Windows.Forms.TableLayoutPanel() - Me.Label3 = New System.Windows.Forms.Label() - Me.THPlayLevel = New System.Windows.Forms.TextBox() - Me.CHRank = New System.Windows.Forms.ComboBox() - Me.Label10 = New System.Windows.Forms.Label() - Me.CHPlayer = New System.Windows.Forms.ComboBox() - Me.Label4 = New System.Windows.Forms.Label() - Me.THGenre = New System.Windows.Forms.TextBox() - Me.THBPM = New System.Windows.Forms.NumericUpDown() - Me.Label2 = New System.Windows.Forms.Label() - Me.THArtist = New System.Windows.Forms.TextBox() - Me.THTitle = New System.Windows.Forms.TextBox() - Me.Label9 = New System.Windows.Forms.Label() - Me.Label8 = New System.Windows.Forms.Label() - Me.Label6 = New System.Windows.Forms.Label() - Me.POHeaderSwitch = New System.Windows.Forms.CheckBox() + Me.TBTheme = New System.Windows.Forms.ToolStripDropDownButton() Me.Timer1 = New System.Windows.Forms.Timer(Me.components) Me.Menu1 = New System.Windows.Forms.ContextMenuStrip(Me.components) Me.MInsert = New System.Windows.Forms.ToolStripMenuItem() @@ -360,120 +216,263 @@ Partial Class MainWindow Me.PMainInL = New System.Windows.Forms.Panel() Me.LeftPanelScroll = New System.Windows.Forms.VScrollBar() Me.HSL = New System.Windows.Forms.HScrollBar() - Me.TBTotal = New System.Windows.Forms.ToolStrip() - Me.TBTotalValue = New System.Windows.Forms.ToolStripLabel() Me.POptionsResizer = New System.Windows.Forms.Button() Me.ToolTipUniversal = New System.Windows.Forms.ToolTip(Me.components) - Me.cmnLanguage.SuspendLayout() - Me.cmnTheme.SuspendLayout() - Me.POptionsScroll.SuspendLayout() - Me.POptions.SuspendLayout() - Me.POExpansion.SuspendLayout() - Me.POExpansionInner.SuspendLayout() - Me.POBeat.SuspendLayout() - Me.POBeatInner.SuspendLayout() - Me.TableLayoutPanel7.SuspendLayout() - CType(Me.nBeatD, System.ComponentModel.ISupportInitialize).BeginInit() - CType(Me.nBeatN, System.ComponentModel.ISupportInitialize).BeginInit() - Me.POBeatPart2.SuspendLayout() - Me.POWAV.SuspendLayout() - Me.POWAVInner.SuspendLayout() - Me.FlowLayoutPanel3.SuspendLayout() - Me.POWAVPart2.SuspendLayout() - Me.POWaveForm.SuspendLayout() - Me.POWaveFormInner.SuspendLayout() - Me.POWaveFormPart2.SuspendLayout() - CType(Me.TWSaturation, System.ComponentModel.ISupportInitialize).BeginInit() - CType(Me.PictureBox2, System.ComponentModel.ISupportInitialize).BeginInit() - CType(Me.TWTransparency, System.ComponentModel.ISupportInitialize).BeginInit() - CType(Me.PictureBox3, System.ComponentModel.ISupportInitialize).BeginInit() - CType(Me.TWPrecision, System.ComponentModel.ISupportInitialize).BeginInit() - CType(Me.PictureBox4, System.ComponentModel.ISupportInitialize).BeginInit() - CType(Me.TWWidth, System.ComponentModel.ISupportInitialize).BeginInit() - CType(Me.PictureBox5, System.ComponentModel.ISupportInitialize).BeginInit() - CType(Me.TWLeft, System.ComponentModel.ISupportInitialize).BeginInit() - CType(Me.PictureBox6, System.ComponentModel.ISupportInitialize).BeginInit() - CType(Me.TWSaturation2, System.ComponentModel.ISupportInitialize).BeginInit() - CType(Me.TWLeft2, System.ComponentModel.ISupportInitialize).BeginInit() - CType(Me.TWTransparency2, System.ComponentModel.ISupportInitialize).BeginInit() - CType(Me.TWWidth2, System.ComponentModel.ISupportInitialize).BeginInit() - CType(Me.TWPrecision2, System.ComponentModel.ISupportInitialize).BeginInit() - Me.POWaveFormPart1.SuspendLayout() - Me.TableLayoutPanel1.SuspendLayout() - Me.FlowLayoutPanel1.SuspendLayout() - Me.TableLayoutPanel6.SuspendLayout() - CType(Me.PictureBox1, System.ComponentModel.ISupportInitialize).BeginInit() - CType(Me.TWPosition2, System.ComponentModel.ISupportInitialize).BeginInit() - CType(Me.TWPosition, System.ComponentModel.ISupportInitialize).BeginInit() - Me.POGrid.SuspendLayout() - Me.POGridInner.SuspendLayout() - Me.POGridPart2.SuspendLayout() - Me.TableLayoutPanel5.SuspendLayout() - Me.FlowLayoutPanel2.SuspendLayout() - Me.TableLayoutPanel4.SuspendLayout() - CType(Me.CGB, System.ComponentModel.ISupportInitialize).BeginInit() - Me.POGridPart1.SuspendLayout() - Me.TableLayoutPanel3.SuspendLayout() - CType(Me.PictureBox9, System.ComponentModel.ISupportInitialize).BeginInit() - CType(Me.CGHeight2, System.ComponentModel.ISupportInitialize).BeginInit() - CType(Me.CGHeight, System.ComponentModel.ISupportInitialize).BeginInit() - CType(Me.PictureBox10, System.ComponentModel.ISupportInitialize).BeginInit() - CType(Me.CGWidth2, System.ComponentModel.ISupportInitialize).BeginInit() - CType(Me.CGWidth, System.ComponentModel.ISupportInitialize).BeginInit() - Me.TableLayoutPanel2.SuspendLayout() - CType(Me.PictureBox7, System.ComponentModel.ISupportInitialize).BeginInit() - CType(Me.CGDivide, System.ComponentModel.ISupportInitialize).BeginInit() - CType(Me.CGSub, System.ComponentModel.ISupportInitialize).BeginInit() - Me.POHeader.SuspendLayout() - Me.POHeaderInner.SuspendLayout() - Me.POHeaderPart2.SuspendLayout() - Me.POHeaderPart1.SuspendLayout() - CType(Me.THBPM, System.ComponentModel.ISupportInitialize).BeginInit() - Me.Menu1.SuspendLayout() - Me.mnMain.SuspendLayout() - Me.cmnConversion.SuspendLayout() - Me.TBMain.SuspendLayout() - Me.pStatus.SuspendLayout() - Me.FStatus2.SuspendLayout() - Me.FStatus.SuspendLayout() - Me.ToolStripContainer1.ContentPanel.SuspendLayout() - Me.ToolStripContainer1.TopToolStripPanel.SuspendLayout() - Me.ToolStripContainer1.SuspendLayout() - Me.PMain.SuspendLayout() - Me.PMainR.SuspendLayout() - Me.PMainL.SuspendLayout() - Me.TBTotal.SuspendLayout() - Me.SuspendLayout() - ' - 'cmnLanguage - ' - Me.cmnLanguage.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.TBLangDef, Me.TBLangRefresh, Me.ToolStripSeparator9}) - Me.cmnLanguage.Name = "cmnLanguage" - Me.cmnLanguage.OwnerItem = Me.mnLanguage - Me.cmnLanguage.Size = New System.Drawing.Size(121, 54) - ' - 'TBLangDef - ' - Me.TBLangDef.Name = "TBLangDef" - Me.TBLangDef.Size = New System.Drawing.Size(120, 22) - Me.TBLangDef.Text = "(Default)" - ' - 'TBLangRefresh - ' - Me.TBLangRefresh.Image = Global.iBMSC.My.Resources.Resources.x16Refresh - Me.TBLangRefresh.Name = "TBLangRefresh" - Me.TBLangRefresh.Size = New System.Drawing.Size(120, 22) - Me.TBLangRefresh.Text = "Refresh" - ' - 'ToolStripSeparator9 - ' - Me.ToolStripSeparator9.Name = "ToolStripSeparator9" - Me.ToolStripSeparator9.Size = New System.Drawing.Size(117, 6) - ' - 'TBLanguage - ' - Me.TBLanguage.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image - Me.TBLanguage.DropDown = Me.cmnLanguage + Me.cVSLockR = New System.Windows.Forms.CheckBox() + Me.cVSLock = New System.Windows.Forms.CheckBox() + Me.cVSLockL = New System.Windows.Forms.CheckBox() + Me.BWLock = New System.Windows.Forms.CheckBox() + Me.BWClear = New System.Windows.Forms.Button() + Me.BWLoad = New System.Windows.Forms.Button() + Me.BWAVRemove = New System.Windows.Forms.Button() + Me.BWAVBrowse = New System.Windows.Forms.Button() + Me.BWAVDown = New System.Windows.Forms.Button() + Me.BWAVUp = New System.Windows.Forms.Button() + Me.POptions = New System.Windows.Forms.Panel() + Me.POExpansion = New System.Windows.Forms.Panel() + Me.POExpansionInner = New System.Windows.Forms.Panel() + Me.ECSelectSection = New System.Windows.Forms.Button() + Me.TExpansion = New System.Windows.Forms.TextBox() + Me.POExpansionResizer = New System.Windows.Forms.Button() + Me.POExpansionSwitch = New System.Windows.Forms.CheckBox() + Me.POBeat = New System.Windows.Forms.Panel() + Me.POBeatInner = New System.Windows.Forms.TableLayoutPanel() + Me.POBeatExpander = New System.Windows.Forms.CheckBox() + Me.POBeatResizer = New System.Windows.Forms.Button() + Me.TableLayoutPanel7 = New System.Windows.Forms.TableLayoutPanel() + Me.nBeatD = New System.Windows.Forms.NumericUpDown() + Me.BBeatApplyV = New System.Windows.Forms.Button() + Me.nBeatN = New System.Windows.Forms.NumericUpDown() + Me.BBeatApply = New System.Windows.Forms.Button() + Me.Label7 = New System.Windows.Forms.Label() + Me.tBeatValue = New System.Windows.Forms.TextBox() + Me.LBeat = New System.Windows.Forms.ListBox() + Me.POBeatPart2 = New System.Windows.Forms.TableLayoutPanel() + Me.CBeatScale = New System.Windows.Forms.RadioButton() + Me.CBeatCut = New System.Windows.Forms.RadioButton() + Me.CBeatMeasure = New System.Windows.Forms.RadioButton() + Me.CBeatPreserve = New System.Windows.Forms.RadioButton() + Me.POBeatSwitch = New System.Windows.Forms.CheckBox() + Me.POWAV = New System.Windows.Forms.Panel() + Me.POWAVInner = New System.Windows.Forms.TableLayoutPanel() + Me.POWAVExpander = New System.Windows.Forms.CheckBox() + Me.LWAV = New System.Windows.Forms.ListBox() + Me.FlowLayoutPanel3 = New System.Windows.Forms.FlowLayoutPanel() + Me.POWAVResizer = New System.Windows.Forms.Button() + Me.POWAVPart2 = New System.Windows.Forms.TableLayoutPanel() + Me.CWAVMultiSelect = New System.Windows.Forms.CheckBox() + Me.CWAVChangeLabel = New System.Windows.Forms.CheckBox() + Me.POWAVSwitch = New System.Windows.Forms.CheckBox() + Me.POWaveForm = New System.Windows.Forms.Panel() + Me.POWaveFormInner = New System.Windows.Forms.Panel() + Me.POWaveFormPart2 = New System.Windows.Forms.TableLayoutPanel() + Me.TWSaturation = New System.Windows.Forms.NumericUpDown() + Me.PictureBox2 = New System.Windows.Forms.PictureBox() + Me.TWTransparency = New System.Windows.Forms.NumericUpDown() + Me.PictureBox3 = New System.Windows.Forms.PictureBox() + Me.TWPrecision = New System.Windows.Forms.NumericUpDown() + Me.PictureBox4 = New System.Windows.Forms.PictureBox() + Me.TWWidth = New System.Windows.Forms.NumericUpDown() + Me.PictureBox5 = New System.Windows.Forms.PictureBox() + Me.TWLeft = New System.Windows.Forms.NumericUpDown() + Me.PictureBox6 = New System.Windows.Forms.PictureBox() + Me.TWSaturation2 = New System.Windows.Forms.TrackBar() + Me.TWLeft2 = New System.Windows.Forms.TrackBar() + Me.TWTransparency2 = New System.Windows.Forms.TrackBar() + Me.TWWidth2 = New System.Windows.Forms.TrackBar() + Me.TWPrecision2 = New System.Windows.Forms.TrackBar() + Me.POWaveFormExpander = New System.Windows.Forms.CheckBox() + Me.POWaveFormPart1 = New System.Windows.Forms.TableLayoutPanel() + Me.TableLayoutPanel1 = New System.Windows.Forms.TableLayoutPanel() + Me.FlowLayoutPanel1 = New System.Windows.Forms.FlowLayoutPanel() + Me.TWFileName = New System.Windows.Forms.TextBox() + Me.TableLayoutPanel6 = New System.Windows.Forms.TableLayoutPanel() + Me.PictureBox1 = New System.Windows.Forms.PictureBox() + Me.TWPosition2 = New System.Windows.Forms.TrackBar() + Me.TWPosition = New System.Windows.Forms.NumericUpDown() + Me.POWaveFormSwitch = New System.Windows.Forms.CheckBox() + Me.POGrid = New System.Windows.Forms.Panel() + Me.POGridInner = New System.Windows.Forms.Panel() + Me.POGridPart2 = New System.Windows.Forms.TableLayoutPanel() + Me.TableLayoutPanel5 = New System.Windows.Forms.TableLayoutPanel() + Me.FlowLayoutPanel2 = New System.Windows.Forms.FlowLayoutPanel() + Me.Label5 = New System.Windows.Forms.Label() + Me.TableLayoutPanel4 = New System.Windows.Forms.TableLayoutPanel() + Me.Label1 = New System.Windows.Forms.Label() + Me.CGB = New System.Windows.Forms.NumericUpDown() + Me.POGridExpander = New System.Windows.Forms.CheckBox() + Me.POGridPart1 = New System.Windows.Forms.TableLayoutPanel() + Me.TableLayoutPanel3 = New System.Windows.Forms.TableLayoutPanel() + Me.PictureBox9 = New System.Windows.Forms.PictureBox() + Me.CGHeight2 = New System.Windows.Forms.TrackBar() + Me.CGHeight = New System.Windows.Forms.NumericUpDown() + Me.PictureBox10 = New System.Windows.Forms.PictureBox() + Me.CGWidth2 = New System.Windows.Forms.TrackBar() + Me.CGWidth = New System.Windows.Forms.NumericUpDown() + Me.CGDisableVertical = New System.Windows.Forms.CheckBox() + Me.CGSnap = New System.Windows.Forms.CheckBox() + Me.TableLayoutPanel2 = New System.Windows.Forms.TableLayoutPanel() + Me.PictureBox7 = New System.Windows.Forms.PictureBox() + Me.CGDivide = New System.Windows.Forms.NumericUpDown() + Me.CGSub = New System.Windows.Forms.NumericUpDown() + Me.BGSlash = New System.Windows.Forms.Button() + Me.POGridSwitch = New System.Windows.Forms.CheckBox() + Me.POHeader = New System.Windows.Forms.Panel() + Me.POHeaderInner = New System.Windows.Forms.Panel() + Me.POHeaderPart2 = New System.Windows.Forms.TableLayoutPanel() + Me.CHDifficulty = New System.Windows.Forms.ComboBox() + Me.Label13 = New System.Windows.Forms.Label() + Me.THExRank = New System.Windows.Forms.TextBox() + Me.Label25 = New System.Windows.Forms.Label() + Me.CHLnObj = New System.Windows.Forms.ComboBox() + Me.Label23 = New System.Windows.Forms.Label() + Me.Label21 = New System.Windows.Forms.Label() + Me.THComment = New System.Windows.Forms.TextBox() + Me.Label24 = New System.Windows.Forms.Label() + Me.Label15 = New System.Windows.Forms.Label() + Me.THTotal = New System.Windows.Forms.TextBox() + Me.Label20 = New System.Windows.Forms.Label() + Me.BHStageFile = New System.Windows.Forms.Button() + Me.BHBanner = New System.Windows.Forms.Button() + Me.Label19 = New System.Windows.Forms.Label() + Me.BHBackBMP = New System.Windows.Forms.Button() + Me.Label17 = New System.Windows.Forms.Label() + Me.Label16 = New System.Windows.Forms.Label() + Me.Label12 = New System.Windows.Forms.Label() + Me.THBackBMP = New System.Windows.Forms.TextBox() + Me.Label11 = New System.Windows.Forms.Label() + Me.THBanner = New System.Windows.Forms.TextBox() + Me.THStageFile = New System.Windows.Forms.TextBox() + Me.THSubTitle = New System.Windows.Forms.TextBox() + Me.THSubArtist = New System.Windows.Forms.TextBox() + Me.POHeaderExpander = New System.Windows.Forms.CheckBox() + Me.POHeaderPart1 = New System.Windows.Forms.TableLayoutPanel() + Me.Label3 = New System.Windows.Forms.Label() + Me.THPlayLevel = New System.Windows.Forms.TextBox() + Me.CHRank = New System.Windows.Forms.ComboBox() + Me.Label10 = New System.Windows.Forms.Label() + Me.CHPlayer = New System.Windows.Forms.ComboBox() + Me.Label4 = New System.Windows.Forms.Label() + Me.THGenre = New System.Windows.Forms.TextBox() + Me.THBPM = New System.Windows.Forms.NumericUpDown() + Me.Label2 = New System.Windows.Forms.Label() + Me.THArtist = New System.Windows.Forms.TextBox() + Me.THTitle = New System.Windows.Forms.TextBox() + Me.Label9 = New System.Windows.Forms.Label() + Me.Label8 = New System.Windows.Forms.Label() + Me.Label6 = New System.Windows.Forms.Label() + Me.POHeaderSwitch = New System.Windows.Forms.CheckBox() + Me.POptionsScroll = New System.Windows.Forms.Panel() + Me.TBTotalValue = New System.Windows.Forms.ToolStripLabel() + Me.cmnLanguage.SuspendLayout() + Me.cmnTheme.SuspendLayout() + Me.Menu1.SuspendLayout() + Me.mnMain.SuspendLayout() + Me.cmnConversion.SuspendLayout() + Me.TBMain.SuspendLayout() + Me.pStatus.SuspendLayout() + Me.FStatus2.SuspendLayout() + Me.FStatus.SuspendLayout() + Me.ToolStripContainer1.ContentPanel.SuspendLayout() + Me.ToolStripContainer1.TopToolStripPanel.SuspendLayout() + Me.ToolStripContainer1.SuspendLayout() + Me.PMain.SuspendLayout() + Me.PMainR.SuspendLayout() + Me.PMainL.SuspendLayout() + Me.POptions.SuspendLayout() + Me.POExpansion.SuspendLayout() + Me.POExpansionInner.SuspendLayout() + Me.POBeat.SuspendLayout() + Me.POBeatInner.SuspendLayout() + Me.TableLayoutPanel7.SuspendLayout() + CType(Me.nBeatD, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.nBeatN, System.ComponentModel.ISupportInitialize).BeginInit() + Me.POBeatPart2.SuspendLayout() + Me.POWAV.SuspendLayout() + Me.POWAVInner.SuspendLayout() + Me.FlowLayoutPanel3.SuspendLayout() + Me.POWAVPart2.SuspendLayout() + Me.POWaveForm.SuspendLayout() + Me.POWaveFormInner.SuspendLayout() + Me.POWaveFormPart2.SuspendLayout() + CType(Me.TWSaturation, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.PictureBox2, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.TWTransparency, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.PictureBox3, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.TWPrecision, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.PictureBox4, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.TWWidth, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.PictureBox5, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.TWLeft, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.PictureBox6, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.TWSaturation2, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.TWLeft2, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.TWTransparency2, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.TWWidth2, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.TWPrecision2, System.ComponentModel.ISupportInitialize).BeginInit() + Me.POWaveFormPart1.SuspendLayout() + Me.TableLayoutPanel1.SuspendLayout() + Me.FlowLayoutPanel1.SuspendLayout() + Me.TableLayoutPanel6.SuspendLayout() + CType(Me.PictureBox1, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.TWPosition2, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.TWPosition, System.ComponentModel.ISupportInitialize).BeginInit() + Me.POGrid.SuspendLayout() + Me.POGridInner.SuspendLayout() + Me.POGridPart2.SuspendLayout() + Me.TableLayoutPanel5.SuspendLayout() + Me.FlowLayoutPanel2.SuspendLayout() + Me.TableLayoutPanel4.SuspendLayout() + CType(Me.CGB, System.ComponentModel.ISupportInitialize).BeginInit() + Me.POGridPart1.SuspendLayout() + Me.TableLayoutPanel3.SuspendLayout() + CType(Me.PictureBox9, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.CGHeight2, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.CGHeight, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.PictureBox10, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.CGWidth2, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.CGWidth, System.ComponentModel.ISupportInitialize).BeginInit() + Me.TableLayoutPanel2.SuspendLayout() + CType(Me.PictureBox7, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.CGDivide, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.CGSub, System.ComponentModel.ISupportInitialize).BeginInit() + Me.POHeader.SuspendLayout() + Me.POHeaderInner.SuspendLayout() + Me.POHeaderPart2.SuspendLayout() + Me.POHeaderPart1.SuspendLayout() + CType(Me.THBPM, System.ComponentModel.ISupportInitialize).BeginInit() + Me.POptionsScroll.SuspendLayout() + Me.SuspendLayout() + ' + 'cmnLanguage + ' + Me.cmnLanguage.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.TBLangDef, Me.TBLangRefresh, Me.ToolStripSeparator9}) + Me.cmnLanguage.Name = "cmnLanguage" + Me.cmnLanguage.OwnerItem = Me.mnLanguage + Me.cmnLanguage.Size = New System.Drawing.Size(121, 54) + ' + 'TBLangDef + ' + Me.TBLangDef.Name = "TBLangDef" + Me.TBLangDef.Size = New System.Drawing.Size(120, 22) + Me.TBLangDef.Text = "(Default)" + ' + 'TBLangRefresh + ' + Me.TBLangRefresh.Image = Global.iBMSC.My.Resources.Resources.x16Refresh + Me.TBLangRefresh.Name = "TBLangRefresh" + Me.TBLangRefresh.Size = New System.Drawing.Size(120, 22) + Me.TBLangRefresh.Text = "Refresh" + ' + 'ToolStripSeparator9 + ' + Me.ToolStripSeparator9.Name = "ToolStripSeparator9" + Me.ToolStripSeparator9.Size = New System.Drawing.Size(117, 6) + ' + 'TBLanguage + ' + Me.TBLanguage.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image + Me.TBLanguage.DropDown = Me.cmnLanguage Me.TBLanguage.Image = Global.iBMSC.My.Resources.Resources.x16Language Me.TBLanguage.ImageTransparentColor = System.Drawing.Color.Magenta Me.TBLanguage.Name = "TBLanguage" @@ -492,7 +491,7 @@ Partial Class MainWindow ' Me.cmnTheme.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.TBThemeDef, Me.TBThemeSave, Me.TBThemeRefresh, Me.TBThemeLoadComptability, Me.ToolStripSeparator6}) Me.cmnTheme.Name = "cmnLanguage" - Me.cmnTheme.OwnerItem = Me.mnTheme + Me.cmnTheme.OwnerItem = Me.TBTheme Me.cmnTheme.Size = New System.Drawing.Size(246, 98) ' 'TBThemeDef @@ -526,7 +525,15 @@ Partial Class MainWindow Me.ToolStripSeparator6.Name = "ToolStripSeparator6" Me.ToolStripSeparator6.Size = New System.Drawing.Size(242, 6) ' - 'TBTheme + 'mnTheme + ' + Me.mnTheme.DropDown = Me.cmnTheme + Me.mnTheme.Image = Global.iBMSC.My.Resources.Resources.x16Theme + Me.mnTheme.Name = "mnTheme" + Me.mnTheme.Size = New System.Drawing.Size(253, 22) + Me.mnTheme.Text = "&Theme" + ' + 'TBTheme ' Me.TBTheme.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image Me.TBTheme.DropDown = Me.cmnTheme @@ -536,3549 +543,3557 @@ Partial Class MainWindow Me.TBTheme.Size = New System.Drawing.Size(29, 22) Me.TBTheme.Text = "Theme" ' - 'mnTheme + 'Timer1 ' - Me.mnTheme.DropDown = Me.cmnTheme - Me.mnTheme.Image = Global.iBMSC.My.Resources.Resources.x16Theme - Me.mnTheme.Name = "mnTheme" - Me.mnTheme.Size = New System.Drawing.Size(253, 22) - Me.mnTheme.Text = "&Theme" + Me.Timer1.Interval = 15 ' - 'POptionsScroll + 'Menu1 ' - Me.POptionsScroll.AutoScroll = True - Me.POptionsScroll.Controls.Add(Me.POptions) - Me.POptionsScroll.Dock = System.Windows.Forms.DockStyle.Right - Me.POptionsScroll.Location = New System.Drawing.Point(958, 0) - Me.POptionsScroll.Name = "POptionsScroll" - Me.POptionsScroll.Size = New System.Drawing.Size(200, 781) - Me.POptionsScroll.TabIndex = 28 + Me.Menu1.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.MInsert, Me.MRemove}) + Me.Menu1.Name = "Menu1" + Me.Menu1.Size = New System.Drawing.Size(166, 48) ' - 'POptions + 'MInsert ' - Me.POptions.AutoSize = True - Me.POptions.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink - Me.POptions.Controls.Add(Me.POExpansion) - Me.POptions.Controls.Add(Me.POBeat) - Me.POptions.Controls.Add(Me.POWAV) - Me.POptions.Controls.Add(Me.POWaveForm) - Me.POptions.Controls.Add(Me.POGrid) - Me.POptions.Controls.Add(Me.POHeader) - Me.POptions.Dock = System.Windows.Forms.DockStyle.Top - Me.POptions.Location = New System.Drawing.Point(0, 0) - Me.POptions.Name = "POptions" - Me.POptions.Size = New System.Drawing.Size(183, 1722) - Me.POptions.TabIndex = 29 + Me.MInsert.Image = Global.iBMSC.My.Resources.Resources.x16Add + Me.MInsert.Name = "MInsert" + Me.MInsert.Size = New System.Drawing.Size(165, 22) + Me.MInsert.Text = "Insert Measure" ' - 'POExpansion + 'MRemove ' - Me.POExpansion.AutoSize = True - Me.POExpansion.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink - Me.POExpansion.Controls.Add(Me.POExpansionInner) - Me.POExpansion.Controls.Add(Me.POExpansionSwitch) - Me.POExpansion.Dock = System.Windows.Forms.DockStyle.Top - Me.POExpansion.Location = New System.Drawing.Point(0, 1452) - Me.POExpansion.Name = "POExpansion" - Me.POExpansion.Size = New System.Drawing.Size(183, 270) - Me.POExpansion.TabIndex = 6 + Me.MRemove.Image = Global.iBMSC.My.Resources.Resources.x16Remove + Me.MRemove.Name = "MRemove" + Me.MRemove.Size = New System.Drawing.Size(165, 22) + Me.MRemove.Text = "Remove Measure" ' - 'POExpansionInner + 'AutoSaveTimer ' - Me.POExpansionInner.Controls.Add(Me.TExpansion) - Me.POExpansionInner.Controls.Add(Me.POExpansionResizer) - Me.POExpansionInner.Dock = System.Windows.Forms.DockStyle.Top - Me.POExpansionInner.Font = New System.Drawing.Font("Consolas", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) - Me.POExpansionInner.Location = New System.Drawing.Point(0, 20) - Me.POExpansionInner.Name = "POExpansionInner" - Me.POExpansionInner.Size = New System.Drawing.Size(183, 250) - Me.POExpansionInner.TabIndex = 7 - Me.POExpansionInner.Visible = False + Me.AutoSaveTimer.Enabled = True + Me.AutoSaveTimer.Interval = 300000 ' - 'TExpansion + 'mnMain ' - Me.TExpansion.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle - Me.TExpansion.Dock = System.Windows.Forms.DockStyle.Fill - Me.TExpansion.HideSelection = False - Me.TExpansion.Location = New System.Drawing.Point(0, 0) - Me.TExpansion.Multiline = True - Me.TExpansion.Name = "TExpansion" - Me.TExpansion.ScrollBars = System.Windows.Forms.ScrollBars.Vertical - Me.TExpansion.Size = New System.Drawing.Size(183, 245) - Me.TExpansion.TabIndex = 1002 - Me.TExpansion.WordWrap = False + Me.mnMain.AccessibleRole = System.Windows.Forms.AccessibleRole.MenuBar + Me.mnMain.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch + Me.mnMain.Dock = System.Windows.Forms.DockStyle.None + Me.mnMain.GripMargin = New System.Windows.Forms.Padding(2) + Me.mnMain.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.mnFile, Me.mnEdit, Me.mnSys, Me.mnOptions, Me.mnConversion, Me.mnPreview}) + Me.mnMain.LayoutStyle = System.Windows.Forms.ToolStripLayoutStyle.Flow + Me.mnMain.Location = New System.Drawing.Point(0, 0) + Me.mnMain.Name = "mnMain" + Me.mnMain.Size = New System.Drawing.Size(952, 23) + Me.mnMain.TabIndex = 57 ' - 'POExpansionResizer + 'mnFile ' - Me.POExpansionResizer.Dock = System.Windows.Forms.DockStyle.Bottom - Me.POExpansionResizer.FlatAppearance.BorderSize = 0 - Me.POExpansionResizer.FlatStyle = System.Windows.Forms.FlatStyle.Flat - Me.POExpansionResizer.Location = New System.Drawing.Point(0, 245) - Me.POExpansionResizer.Margin = New System.Windows.Forms.Padding(0) - Me.POExpansionResizer.Name = "POExpansionResizer" - Me.POExpansionResizer.Size = New System.Drawing.Size(183, 5) - Me.POExpansionResizer.TabIndex = 65 - Me.POExpansionResizer.TabStop = False - Me.POExpansionResizer.UseVisualStyleBackColor = True + Me.mnFile.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.mnNew, Me.mnOpen, Me.mnImportSM, Me.mnImportIBMSC, Me.ToolStripSeparator14, Me.mnSave, Me.mnSaveAs, Me.mnExport, Me.ToolStripSeparator15, Me.mnOpenR0, Me.mnOpenR1, Me.mnOpenR2, Me.mnOpenR3, Me.mnOpenR4, Me.ToolStripSeparator16, Me.mnQuit}) + Me.mnFile.Name = "mnFile" + Me.mnFile.Size = New System.Drawing.Size(37, 19) + Me.mnFile.Text = "&File" ' - 'POExpansionSwitch + 'mnNew ' - Me.POExpansionSwitch.Appearance = System.Windows.Forms.Appearance.Button - Me.POExpansionSwitch.BackColor = System.Drawing.SystemColors.Control - Me.POExpansionSwitch.Cursor = System.Windows.Forms.Cursors.Hand - Me.POExpansionSwitch.Dock = System.Windows.Forms.DockStyle.Top - Me.POExpansionSwitch.Font = New System.Drawing.Font("Segoe UI", 9.0!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) - Me.POExpansionSwitch.Location = New System.Drawing.Point(0, 0) - Me.POExpansionSwitch.Name = "POExpansionSwitch" - Me.POExpansionSwitch.Size = New System.Drawing.Size(183, 20) - Me.POExpansionSwitch.TabIndex = 1001 - Me.POExpansionSwitch.TabStop = False - Me.POExpansionSwitch.Text = "Expansion Code" - Me.POExpansionSwitch.TextAlign = System.Drawing.ContentAlignment.MiddleCenter - Me.POExpansionSwitch.UseCompatibleTextRendering = True - Me.POExpansionSwitch.UseVisualStyleBackColor = False + Me.mnNew.Image = Global.iBMSC.My.Resources.Resources.x16New + Me.mnNew.Name = "mnNew" + Me.mnNew.ShortcutKeys = CType((System.Windows.Forms.Keys.Control Or System.Windows.Forms.Keys.N), System.Windows.Forms.Keys) + Me.mnNew.Size = New System.Drawing.Size(240, 22) + Me.mnNew.Text = "&New" ' - 'POBeat + 'mnOpen ' - Me.POBeat.AutoSize = True - Me.POBeat.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink - Me.POBeat.Controls.Add(Me.POBeatInner) - Me.POBeat.Controls.Add(Me.POBeatSwitch) - Me.POBeat.Dock = System.Windows.Forms.DockStyle.Top - Me.POBeat.Location = New System.Drawing.Point(0, 1182) - Me.POBeat.Name = "POBeat" - Me.POBeat.Size = New System.Drawing.Size(183, 270) - Me.POBeat.TabIndex = 5 + Me.mnOpen.Image = Global.iBMSC.My.Resources.Resources.x16Open + Me.mnOpen.Name = "mnOpen" + Me.mnOpen.ShortcutKeys = CType((System.Windows.Forms.Keys.Control Or System.Windows.Forms.Keys.O), System.Windows.Forms.Keys) + Me.mnOpen.Size = New System.Drawing.Size(240, 22) + Me.mnOpen.Text = "&Open" ' - 'POBeatInner + 'mnImportSM ' - Me.POBeatInner.ColumnCount = 1 - Me.POBeatInner.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100.0!)) - Me.POBeatInner.Controls.Add(Me.POBeatExpander, 0, 1) - Me.POBeatInner.Controls.Add(Me.POBeatResizer, 0, 4) - Me.POBeatInner.Controls.Add(Me.TableLayoutPanel7, 0, 0) - Me.POBeatInner.Controls.Add(Me.LBeat, 0, 3) - Me.POBeatInner.Controls.Add(Me.POBeatPart2, 0, 2) - Me.POBeatInner.Dock = System.Windows.Forms.DockStyle.Top - Me.POBeatInner.Location = New System.Drawing.Point(0, 20) - Me.POBeatInner.Name = "POBeatInner" - Me.POBeatInner.RowCount = 5 - Me.POBeatInner.RowStyles.Add(New System.Windows.Forms.RowStyle()) - Me.POBeatInner.RowStyles.Add(New System.Windows.Forms.RowStyle()) - Me.POBeatInner.RowStyles.Add(New System.Windows.Forms.RowStyle()) - Me.POBeatInner.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100.0!)) - Me.POBeatInner.RowStyles.Add(New System.Windows.Forms.RowStyle()) - Me.POBeatInner.Size = New System.Drawing.Size(183, 250) - Me.POBeatInner.TabIndex = 6 - Me.POBeatInner.Visible = False + Me.mnImportSM.Image = Global.iBMSC.My.Resources.Resources.x16Import2 + Me.mnImportSM.Name = "mnImportSM" + Me.mnImportSM.Size = New System.Drawing.Size(240, 22) + Me.mnImportSM.Text = "Import from .S&M file" ' - 'POBeatExpander + 'mnImportIBMSC ' - Me.POBeatExpander.Appearance = System.Windows.Forms.Appearance.Button - Me.POBeatExpander.AutoSize = True - Me.POBeatExpander.Cursor = System.Windows.Forms.Cursors.Hand - Me.POBeatExpander.Dock = System.Windows.Forms.DockStyle.Top - Me.POBeatExpander.FlatAppearance.BorderSize = 0 - Me.POBeatExpander.FlatStyle = System.Windows.Forms.FlatStyle.Popup - Me.POBeatExpander.Location = New System.Drawing.Point(0, 54) - Me.POBeatExpander.Margin = New System.Windows.Forms.Padding(0) - Me.POBeatExpander.Name = "POBeatExpander" - Me.POBeatExpander.Size = New System.Drawing.Size(183, 25) - Me.POBeatExpander.TabIndex = 901 - Me.POBeatExpander.TabStop = False - Me.POBeatExpander.Text = "Expand..." - Me.POBeatExpander.TextAlign = System.Drawing.ContentAlignment.MiddleCenter - Me.POBeatExpander.UseVisualStyleBackColor = False + Me.mnImportIBMSC.Image = Global.iBMSC.My.Resources.Resources.x16Import2 + Me.mnImportIBMSC.Name = "mnImportIBMSC" + Me.mnImportIBMSC.Size = New System.Drawing.Size(240, 22) + Me.mnImportIBMSC.Text = "Import from .&IBMSC file" ' - 'POBeatResizer + 'ToolStripSeparator14 ' - Me.POBeatInner.SetColumnSpan(Me.POBeatResizer, 2) - Me.POBeatResizer.Dock = System.Windows.Forms.DockStyle.Top - Me.POBeatResizer.FlatAppearance.BorderSize = 0 - Me.POBeatResizer.FlatStyle = System.Windows.Forms.FlatStyle.Flat - Me.POBeatResizer.Location = New System.Drawing.Point(0, 245) - Me.POBeatResizer.Margin = New System.Windows.Forms.Padding(0) - Me.POBeatResizer.Name = "POBeatResizer" - Me.POBeatResizer.Size = New System.Drawing.Size(183, 5) - Me.POBeatResizer.TabIndex = 64 - Me.POBeatResizer.TabStop = False - Me.POBeatResizer.UseVisualStyleBackColor = True + Me.ToolStripSeparator14.Name = "ToolStripSeparator14" + Me.ToolStripSeparator14.Size = New System.Drawing.Size(237, 6) ' - 'TableLayoutPanel7 + 'mnSave ' - Me.TableLayoutPanel7.AutoSize = True - Me.TableLayoutPanel7.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink - Me.TableLayoutPanel7.ColumnCount = 4 - Me.TableLayoutPanel7.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 30.0!)) - Me.TableLayoutPanel7.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle()) - Me.TableLayoutPanel7.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 30.0!)) - Me.TableLayoutPanel7.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 40.0!)) - Me.TableLayoutPanel7.Controls.Add(Me.nBeatD, 2, 0) - Me.TableLayoutPanel7.Controls.Add(Me.BBeatApplyV, 3, 1) - Me.TableLayoutPanel7.Controls.Add(Me.nBeatN, 0, 0) - Me.TableLayoutPanel7.Controls.Add(Me.BBeatApply, 3, 0) - Me.TableLayoutPanel7.Controls.Add(Me.Label7, 1, 0) - Me.TableLayoutPanel7.Controls.Add(Me.tBeatValue, 0, 1) - Me.TableLayoutPanel7.Dock = System.Windows.Forms.DockStyle.Fill - Me.TableLayoutPanel7.Location = New System.Drawing.Point(0, 0) - Me.TableLayoutPanel7.Margin = New System.Windows.Forms.Padding(0) - Me.TableLayoutPanel7.Name = "TableLayoutPanel7" - Me.TableLayoutPanel7.RowCount = 2 - Me.TableLayoutPanel7.RowStyles.Add(New System.Windows.Forms.RowStyle()) - Me.TableLayoutPanel7.RowStyles.Add(New System.Windows.Forms.RowStyle()) - Me.TableLayoutPanel7.Size = New System.Drawing.Size(183, 54) - Me.TableLayoutPanel7.TabIndex = 63 + Me.mnSave.Image = Global.iBMSC.My.Resources.Resources.x16Save + Me.mnSave.Name = "mnSave" + Me.mnSave.ShortcutKeys = CType((System.Windows.Forms.Keys.Control Or System.Windows.Forms.Keys.S), System.Windows.Forms.Keys) + Me.mnSave.Size = New System.Drawing.Size(240, 22) + Me.mnSave.Text = "&Save" ' - 'nBeatD + 'mnSaveAs ' - Me.nBeatD.Dock = System.Windows.Forms.DockStyle.Fill - Me.nBeatD.Location = New System.Drawing.Point(66, 3) - Me.nBeatD.Maximum = New Decimal(New Integer() {10000, 0, 0, 0}) - Me.nBeatD.Minimum = New Decimal(New Integer() {1, 0, 0, 0}) - Me.nBeatD.Name = "nBeatD" - Me.nBeatD.Size = New System.Drawing.Size(45, 23) - Me.nBeatD.TabIndex = 803 - Me.nBeatD.Value = New Decimal(New Integer() {4, 0, 0, 0}) + Me.mnSaveAs.Image = Global.iBMSC.My.Resources.Resources.x16SaveAs + Me.mnSaveAs.Name = "mnSaveAs" + Me.mnSaveAs.ShortcutKeys = CType(((System.Windows.Forms.Keys.Control Or System.Windows.Forms.Keys.Alt) _ + Or System.Windows.Forms.Keys.S), System.Windows.Forms.Keys) + Me.mnSaveAs.Size = New System.Drawing.Size(240, 22) + Me.mnSaveAs.Text = "Save &As..." ' - 'BBeatApplyV + 'mnExport ' - Me.BBeatApplyV.AutoSize = True - Me.BBeatApplyV.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink - Me.BBeatApplyV.Dock = System.Windows.Forms.DockStyle.Fill - Me.BBeatApplyV.Location = New System.Drawing.Point(114, 29) - Me.BBeatApplyV.Margin = New System.Windows.Forms.Padding(0, 0, 3, 0) - Me.BBeatApplyV.Name = "BBeatApplyV" - Me.BBeatApplyV.Size = New System.Drawing.Size(66, 25) - Me.BBeatApplyV.TabIndex = 806 - Me.BBeatApplyV.Text = "Apply" - Me.BBeatApplyV.UseVisualStyleBackColor = True + Me.mnExport.Image = Global.iBMSC.My.Resources.Resources.x16Export + Me.mnExport.Name = "mnExport" + Me.mnExport.ShortcutKeys = CType(((System.Windows.Forms.Keys.Control Or System.Windows.Forms.Keys.Shift) _ + Or System.Windows.Forms.Keys.E), System.Windows.Forms.Keys) + Me.mnExport.Size = New System.Drawing.Size(240, 22) + Me.mnExport.Text = "&Export .IBMSC file" ' - 'nBeatN + 'ToolStripSeparator15 ' - Me.nBeatN.Dock = System.Windows.Forms.DockStyle.Fill - Me.nBeatN.Location = New System.Drawing.Point(3, 3) - Me.nBeatN.Maximum = New Decimal(New Integer() {99999, 0, 0, 0}) - Me.nBeatN.Minimum = New Decimal(New Integer() {1, 0, 0, 0}) - Me.nBeatN.Name = "nBeatN" - Me.nBeatN.Size = New System.Drawing.Size(45, 23) - Me.nBeatN.TabIndex = 802 - Me.nBeatN.Value = New Decimal(New Integer() {4, 0, 0, 0}) + Me.ToolStripSeparator15.Name = "ToolStripSeparator15" + Me.ToolStripSeparator15.Size = New System.Drawing.Size(237, 6) ' - 'BBeatApply + 'mnOpenR0 ' - Me.BBeatApply.AutoSize = True - Me.BBeatApply.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink - Me.BBeatApply.Dock = System.Windows.Forms.DockStyle.Fill - Me.BBeatApply.Location = New System.Drawing.Point(114, 2) - Me.BBeatApply.Margin = New System.Windows.Forms.Padding(0, 2, 3, 2) - Me.BBeatApply.Name = "BBeatApply" - Me.BBeatApply.Size = New System.Drawing.Size(66, 25) - Me.BBeatApply.TabIndex = 804 - Me.BBeatApply.Text = "Apply" - Me.BBeatApply.UseVisualStyleBackColor = True + Me.mnOpenR0.Enabled = False + Me.mnOpenR0.Name = "mnOpenR0" + Me.mnOpenR0.ShortcutKeys = CType((System.Windows.Forms.Keys.Alt Or System.Windows.Forms.Keys.D1), System.Windows.Forms.Keys) + Me.mnOpenR0.Size = New System.Drawing.Size(240, 22) + Me.mnOpenR0.Tag = "0" + Me.mnOpenR0.Text = "Recent #0" ' - 'Label7 + 'mnOpenR1 ' - Me.Label7.Anchor = System.Windows.Forms.AnchorStyles.None - Me.Label7.AutoSize = True - Me.Label7.Location = New System.Drawing.Point(51, 7) - Me.Label7.Margin = New System.Windows.Forms.Padding(0) - Me.Label7.Name = "Label7" - Me.Label7.Size = New System.Drawing.Size(12, 15) - Me.Label7.TabIndex = 31 - Me.Label7.Text = "/" - Me.Label7.TextAlign = System.Drawing.ContentAlignment.MiddleCenter + Me.mnOpenR1.Enabled = False + Me.mnOpenR1.Name = "mnOpenR1" + Me.mnOpenR1.ShortcutKeys = CType((System.Windows.Forms.Keys.Alt Or System.Windows.Forms.Keys.D2), System.Windows.Forms.Keys) + Me.mnOpenR1.Size = New System.Drawing.Size(240, 22) + Me.mnOpenR1.Tag = "1" + Me.mnOpenR1.Text = "Recent #1" ' - 'tBeatValue + 'mnOpenR2 ' - Me.TableLayoutPanel7.SetColumnSpan(Me.tBeatValue, 3) - Me.tBeatValue.Dock = System.Windows.Forms.DockStyle.Fill - Me.tBeatValue.Location = New System.Drawing.Point(3, 30) - Me.tBeatValue.Margin = New System.Windows.Forms.Padding(3, 1, 3, 0) - Me.tBeatValue.Name = "tBeatValue" - Me.tBeatValue.Size = New System.Drawing.Size(108, 23) - Me.tBeatValue.TabIndex = 805 - Me.tBeatValue.Text = "1" + Me.mnOpenR2.Enabled = False + Me.mnOpenR2.Name = "mnOpenR2" + Me.mnOpenR2.ShortcutKeys = CType((System.Windows.Forms.Keys.Alt Or System.Windows.Forms.Keys.D3), System.Windows.Forms.Keys) + Me.mnOpenR2.Size = New System.Drawing.Size(240, 22) + Me.mnOpenR2.Tag = "2" + Me.mnOpenR2.Text = "Recent #2" ' - 'LBeat + 'mnOpenR3 ' - Me.LBeat.Dock = System.Windows.Forms.DockStyle.Fill - Me.LBeat.Font = New System.Drawing.Font("Consolas", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) - Me.LBeat.IntegralHeight = False - Me.LBeat.ItemHeight = 14 - Me.LBeat.Items.AddRange(New Object() {"000: 15.984375 (1023/64)"}) - Me.LBeat.Location = New System.Drawing.Point(3, 155) - Me.LBeat.Margin = New System.Windows.Forms.Padding(3, 0, 3, 0) - Me.LBeat.Name = "LBeat" - Me.LBeat.SelectionMode = System.Windows.Forms.SelectionMode.MultiExtended - Me.LBeat.Size = New System.Drawing.Size(177, 90) - Me.LBeat.TabIndex = 906 + Me.mnOpenR3.Enabled = False + Me.mnOpenR3.Name = "mnOpenR3" + Me.mnOpenR3.ShortcutKeys = CType((System.Windows.Forms.Keys.Alt Or System.Windows.Forms.Keys.D4), System.Windows.Forms.Keys) + Me.mnOpenR3.Size = New System.Drawing.Size(240, 22) + Me.mnOpenR3.Tag = "3" + Me.mnOpenR3.Text = "Recent #3" ' - 'POBeatPart2 + 'mnOpenR4 ' - Me.POBeatPart2.AutoSize = True - Me.POBeatPart2.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink - Me.POBeatPart2.ColumnCount = 1 - Me.POBeatPart2.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100.0!)) - Me.POBeatPart2.Controls.Add(Me.CBeatScale, 0, 3) - Me.POBeatPart2.Controls.Add(Me.CBeatCut, 0, 2) - Me.POBeatPart2.Controls.Add(Me.CBeatMeasure, 0, 1) - Me.POBeatPart2.Controls.Add(Me.CBeatPreserve, 0, 0) - Me.POBeatPart2.Dock = System.Windows.Forms.DockStyle.Fill - Me.POBeatPart2.Location = New System.Drawing.Point(0, 79) - Me.POBeatPart2.Margin = New System.Windows.Forms.Padding(0) - Me.POBeatPart2.Name = "POBeatPart2" - Me.POBeatPart2.RowCount = 4 - Me.POBeatPart2.RowStyles.Add(New System.Windows.Forms.RowStyle()) - Me.POBeatPart2.RowStyles.Add(New System.Windows.Forms.RowStyle()) - Me.POBeatPart2.RowStyles.Add(New System.Windows.Forms.RowStyle()) - Me.POBeatPart2.RowStyles.Add(New System.Windows.Forms.RowStyle()) - Me.POBeatPart2.Size = New System.Drawing.Size(183, 76) - Me.POBeatPart2.TabIndex = 66 - Me.POBeatPart2.Visible = False + Me.mnOpenR4.Enabled = False + Me.mnOpenR4.Name = "mnOpenR4" + Me.mnOpenR4.ShortcutKeys = CType((System.Windows.Forms.Keys.Alt Or System.Windows.Forms.Keys.D5), System.Windows.Forms.Keys) + Me.mnOpenR4.Size = New System.Drawing.Size(240, 22) + Me.mnOpenR4.Tag = "4" + Me.mnOpenR4.Text = "Recent #4" ' - 'CBeatScale + 'ToolStripSeparator16 ' - Me.CBeatScale.AutoSize = True - Me.CBeatScale.Location = New System.Drawing.Point(3, 57) - Me.CBeatScale.Margin = New System.Windows.Forms.Padding(3, 0, 3, 0) - Me.CBeatScale.Name = "CBeatScale" - Me.CBeatScale.Size = New System.Drawing.Size(151, 19) - Me.CBeatScale.TabIndex = 905 - Me.CBeatScale.Text = "Scale to measure length" - Me.CBeatScale.UseVisualStyleBackColor = True + Me.ToolStripSeparator16.Name = "ToolStripSeparator16" + Me.ToolStripSeparator16.Size = New System.Drawing.Size(237, 6) ' - 'CBeatCut + 'mnQuit ' - Me.CBeatCut.AutoEllipsis = True - Me.CBeatCut.Dock = System.Windows.Forms.DockStyle.Fill - Me.CBeatCut.Location = New System.Drawing.Point(3, 38) - Me.CBeatCut.Margin = New System.Windows.Forms.Padding(3, 0, 3, 0) - Me.CBeatCut.Name = "CBeatCut" - Me.CBeatCut.Size = New System.Drawing.Size(177, 19) - Me.CBeatCut.TabIndex = 904 - Me.CBeatCut.Text = "Keep measure position and cut overflow" - Me.CBeatCut.UseVisualStyleBackColor = True + Me.mnQuit.Name = "mnQuit" + Me.mnQuit.Size = New System.Drawing.Size(240, 22) + Me.mnQuit.Text = "&Quit" ' - 'CBeatMeasure + 'mnEdit ' - Me.CBeatMeasure.AutoSize = True - Me.CBeatMeasure.Location = New System.Drawing.Point(3, 19) - Me.CBeatMeasure.Margin = New System.Windows.Forms.Padding(3, 0, 3, 0) - Me.CBeatMeasure.Name = "CBeatMeasure" - Me.CBeatMeasure.Size = New System.Drawing.Size(145, 19) - Me.CBeatMeasure.TabIndex = 903 - Me.CBeatMeasure.Text = "Keep measure position" - Me.CBeatMeasure.UseVisualStyleBackColor = True + Me.mnEdit.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.mnUndo, Me.mnRedo, Me.ToolStripSeparator17, Me.mnCut, Me.mnCopy, Me.mnPaste, Me.mnDelete, Me.mnSelectAll, Me.mnGotoMeasure, Me.ToolStripSeparator18, Me.mnFind, Me.mnStatistics, Me.mnStatisticsAdvanced, Me.ToolStripSeparator19, Me.mnTimeSelect, Me.mnSelect, Me.mnWrite, Me.ToolStripSeparator23, Me.mnMyO2}) + Me.mnEdit.Name = "mnEdit" + Me.mnEdit.Size = New System.Drawing.Size(39, 19) + Me.mnEdit.Text = "&Edit" ' - 'CBeatPreserve + 'mnUndo ' - Me.CBeatPreserve.AutoSize = True - Me.CBeatPreserve.Checked = True - Me.CBeatPreserve.Location = New System.Drawing.Point(3, 0) - Me.CBeatPreserve.Margin = New System.Windows.Forms.Padding(3, 0, 3, 0) - Me.CBeatPreserve.Name = "CBeatPreserve" - Me.CBeatPreserve.Size = New System.Drawing.Size(145, 19) - Me.CBeatPreserve.TabIndex = 902 - Me.CBeatPreserve.TabStop = True - Me.CBeatPreserve.Text = "Keep absolute position" - Me.CBeatPreserve.UseVisualStyleBackColor = True + Me.mnUndo.Enabled = False + Me.mnUndo.Image = Global.iBMSC.My.Resources.Resources.x16Undo + Me.mnUndo.Name = "mnUndo" + Me.mnUndo.ShortcutKeyDisplayString = "Ctrl+Z" + Me.mnUndo.Size = New System.Drawing.Size(256, 22) + Me.mnUndo.Text = "&Undo" ' - 'POBeatSwitch + 'mnRedo ' - Me.POBeatSwitch.Appearance = System.Windows.Forms.Appearance.Button - Me.POBeatSwitch.BackColor = System.Drawing.SystemColors.Control - Me.POBeatSwitch.Cursor = System.Windows.Forms.Cursors.Hand - Me.POBeatSwitch.Dock = System.Windows.Forms.DockStyle.Top - Me.POBeatSwitch.Font = New System.Drawing.Font("Segoe UI", 9.0!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) - Me.POBeatSwitch.Location = New System.Drawing.Point(0, 0) - Me.POBeatSwitch.Name = "POBeatSwitch" - Me.POBeatSwitch.Size = New System.Drawing.Size(183, 20) - Me.POBeatSwitch.TabIndex = 801 - Me.POBeatSwitch.TabStop = False - Me.POBeatSwitch.Text = "Beat" - Me.POBeatSwitch.TextAlign = System.Drawing.ContentAlignment.MiddleCenter - Me.POBeatSwitch.UseCompatibleTextRendering = True - Me.POBeatSwitch.UseVisualStyleBackColor = False + Me.mnRedo.Enabled = False + Me.mnRedo.Image = Global.iBMSC.My.Resources.Resources.x16Redo + Me.mnRedo.Name = "mnRedo" + Me.mnRedo.ShortcutKeyDisplayString = "Ctrl+Y" + Me.mnRedo.Size = New System.Drawing.Size(256, 22) + Me.mnRedo.Text = "&Redo" ' - 'POWAV + 'ToolStripSeparator17 ' - Me.POWAV.AllowDrop = True - Me.POWAV.AutoSize = True - Me.POWAV.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink - Me.POWAV.Controls.Add(Me.POWAVInner) - Me.POWAV.Controls.Add(Me.POWAVSwitch) - Me.POWAV.Dock = System.Windows.Forms.DockStyle.Top - Me.POWAV.Location = New System.Drawing.Point(0, 912) - Me.POWAV.Name = "POWAV" - Me.POWAV.Size = New System.Drawing.Size(183, 270) - Me.POWAV.TabIndex = 4 + Me.ToolStripSeparator17.Name = "ToolStripSeparator17" + Me.ToolStripSeparator17.Size = New System.Drawing.Size(253, 6) ' - 'POWAVInner + 'mnCut ' - Me.POWAVInner.ColumnCount = 1 - Me.POWAVInner.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100.0!)) - Me.POWAVInner.Controls.Add(Me.POWAVExpander, 0, 1) - Me.POWAVInner.Controls.Add(Me.LWAV, 0, 3) - Me.POWAVInner.Controls.Add(Me.FlowLayoutPanel3, 0, 0) - Me.POWAVInner.Controls.Add(Me.POWAVResizer, 0, 4) - Me.POWAVInner.Controls.Add(Me.POWAVPart2, 0, 2) - Me.POWAVInner.Dock = System.Windows.Forms.DockStyle.Top - Me.POWAVInner.Location = New System.Drawing.Point(0, 20) - Me.POWAVInner.Name = "POWAVInner" - Me.POWAVInner.RowCount = 5 - Me.POWAVInner.RowStyles.Add(New System.Windows.Forms.RowStyle()) - Me.POWAVInner.RowStyles.Add(New System.Windows.Forms.RowStyle()) - Me.POWAVInner.RowStyles.Add(New System.Windows.Forms.RowStyle()) - Me.POWAVInner.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100.0!)) - Me.POWAVInner.RowStyles.Add(New System.Windows.Forms.RowStyle()) - Me.POWAVInner.Size = New System.Drawing.Size(183, 250) - Me.POWAVInner.TabIndex = 5 + Me.mnCut.Image = Global.iBMSC.My.Resources.Resources.x16Cut + Me.mnCut.Name = "mnCut" + Me.mnCut.ShortcutKeyDisplayString = "Ctrl+X" + Me.mnCut.Size = New System.Drawing.Size(256, 22) + Me.mnCut.Text = "Cu&t" ' - 'POWAVExpander + 'mnCopy ' - Me.POWAVExpander.Appearance = System.Windows.Forms.Appearance.Button - Me.POWAVExpander.AutoSize = True - Me.POWAVExpander.Cursor = System.Windows.Forms.Cursors.Hand - Me.POWAVExpander.Dock = System.Windows.Forms.DockStyle.Top - Me.POWAVExpander.FlatAppearance.BorderSize = 0 - Me.POWAVExpander.FlatStyle = System.Windows.Forms.FlatStyle.Popup - Me.POWAVExpander.Location = New System.Drawing.Point(0, 30) - Me.POWAVExpander.Margin = New System.Windows.Forms.Padding(0) - Me.POWAVExpander.Name = "POWAVExpander" - Me.POWAVExpander.Size = New System.Drawing.Size(183, 25) - Me.POWAVExpander.TabIndex = 701 - Me.POWAVExpander.TabStop = False - Me.POWAVExpander.Text = "Expand..." - Me.POWAVExpander.TextAlign = System.Drawing.ContentAlignment.MiddleCenter - Me.POWAVExpander.UseVisualStyleBackColor = False + Me.mnCopy.Image = Global.iBMSC.My.Resources.Resources.x16Copy + Me.mnCopy.Name = "mnCopy" + Me.mnCopy.ShortcutKeyDisplayString = "Ctrl+C" + Me.mnCopy.Size = New System.Drawing.Size(256, 22) + Me.mnCopy.Text = "&Copy" ' - 'LWAV + 'mnPaste ' - Me.LWAV.Dock = System.Windows.Forms.DockStyle.Fill - Me.LWAV.Font = New System.Drawing.Font("Consolas", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) - Me.LWAV.IntegralHeight = False - Me.LWAV.ItemHeight = 14 - Me.LWAV.Location = New System.Drawing.Point(3, 93) - Me.LWAV.Margin = New System.Windows.Forms.Padding(3, 0, 3, 0) - Me.LWAV.Name = "LWAV" - Me.LWAV.SelectionMode = System.Windows.Forms.SelectionMode.MultiExtended - Me.LWAV.Size = New System.Drawing.Size(177, 152) - Me.LWAV.TabIndex = 704 + Me.mnPaste.Image = Global.iBMSC.My.Resources.Resources.x16Paste + Me.mnPaste.Name = "mnPaste" + Me.mnPaste.ShortcutKeyDisplayString = "Ctrl+V" + Me.mnPaste.Size = New System.Drawing.Size(256, 22) + Me.mnPaste.Text = "&Paste" ' - 'FlowLayoutPanel3 + 'mnDelete ' - Me.FlowLayoutPanel3.AutoSize = True - Me.FlowLayoutPanel3.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink - Me.FlowLayoutPanel3.Controls.Add(Me.BWAVUp) - Me.FlowLayoutPanel3.Controls.Add(Me.BWAVDown) - Me.FlowLayoutPanel3.Controls.Add(Me.BWAVBrowse) - Me.FlowLayoutPanel3.Controls.Add(Me.BWAVRemove) - Me.FlowLayoutPanel3.Location = New System.Drawing.Point(3, 3) - Me.FlowLayoutPanel3.Name = "FlowLayoutPanel3" - Me.FlowLayoutPanel3.Size = New System.Drawing.Size(96, 24) - Me.FlowLayoutPanel3.TabIndex = 26 - Me.FlowLayoutPanel3.WrapContents = False + Me.mnDelete.Image = Global.iBMSC.My.Resources.Resources.x16Remove + Me.mnDelete.Name = "mnDelete" + Me.mnDelete.ShortcutKeyDisplayString = "Del" + Me.mnDelete.Size = New System.Drawing.Size(256, 22) + Me.mnDelete.Text = "De&lete" ' - 'BWAVUp + 'mnSelectAll ' - Me.BWAVUp.Image = Global.iBMSC.My.Resources.Resources.x16Up - Me.BWAVUp.Location = New System.Drawing.Point(0, 0) - Me.BWAVUp.Margin = New System.Windows.Forms.Padding(0) - Me.BWAVUp.Name = "BWAVUp" - Me.BWAVUp.Size = New System.Drawing.Size(24, 24) - Me.BWAVUp.TabIndex = 602 - Me.ToolTipUniversal.SetToolTip(Me.BWAVUp, "Move Up") - Me.BWAVUp.UseVisualStyleBackColor = True + Me.mnSelectAll.Name = "mnSelectAll" + Me.mnSelectAll.ShortcutKeyDisplayString = "Ctrl+A" + Me.mnSelectAll.Size = New System.Drawing.Size(256, 22) + Me.mnSelectAll.Text = "Select &All" ' - 'BWAVDown + 'mnGotoMeasure ' - Me.BWAVDown.Image = Global.iBMSC.My.Resources.Resources.x16Down - Me.BWAVDown.Location = New System.Drawing.Point(24, 0) - Me.BWAVDown.Margin = New System.Windows.Forms.Padding(0) - Me.BWAVDown.Name = "BWAVDown" - Me.BWAVDown.Size = New System.Drawing.Size(24, 24) - Me.BWAVDown.TabIndex = 603 - Me.ToolTipUniversal.SetToolTip(Me.BWAVDown, "Move Down") - Me.BWAVDown.UseVisualStyleBackColor = True + Me.mnGotoMeasure.Name = "mnGotoMeasure" + Me.mnGotoMeasure.ShortcutKeys = CType((System.Windows.Forms.Keys.Control Or System.Windows.Forms.Keys.G), System.Windows.Forms.Keys) + Me.mnGotoMeasure.Size = New System.Drawing.Size(256, 22) + Me.mnGotoMeasure.Text = "Go To Measure..." ' - 'BWAVBrowse + 'ToolStripSeparator18 ' - Me.BWAVBrowse.Image = Global.iBMSC.My.Resources.Resources.x16PlayerBrowse - Me.BWAVBrowse.Location = New System.Drawing.Point(48, 0) - Me.BWAVBrowse.Margin = New System.Windows.Forms.Padding(0) - Me.BWAVBrowse.Name = "BWAVBrowse" - Me.BWAVBrowse.Size = New System.Drawing.Size(24, 24) - Me.BWAVBrowse.TabIndex = 604 - Me.ToolTipUniversal.SetToolTip(Me.BWAVBrowse, "Browse") - Me.BWAVBrowse.UseVisualStyleBackColor = True + Me.ToolStripSeparator18.Name = "ToolStripSeparator18" + Me.ToolStripSeparator18.Size = New System.Drawing.Size(253, 6) ' - 'BWAVRemove + 'mnFind ' - Me.BWAVRemove.Image = Global.iBMSC.My.Resources.Resources.x16Remove - Me.BWAVRemove.Location = New System.Drawing.Point(72, 0) - Me.BWAVRemove.Margin = New System.Windows.Forms.Padding(0) - Me.BWAVRemove.Name = "BWAVRemove" - Me.BWAVRemove.Size = New System.Drawing.Size(24, 24) - Me.BWAVRemove.TabIndex = 605 - Me.ToolTipUniversal.SetToolTip(Me.BWAVRemove, "Remove") - Me.BWAVRemove.UseVisualStyleBackColor = True + Me.mnFind.Image = Global.iBMSC.My.Resources.Resources.x16Find + Me.mnFind.Name = "mnFind" + Me.mnFind.ShortcutKeys = CType((System.Windows.Forms.Keys.Control Or System.Windows.Forms.Keys.F), System.Windows.Forms.Keys) + Me.mnFind.Size = New System.Drawing.Size(256, 22) + Me.mnFind.Text = "&Find / Delete / Replace" ' - 'POWAVResizer + 'mnStatistics ' - Me.POWAVResizer.Dock = System.Windows.Forms.DockStyle.Top - Me.POWAVResizer.FlatAppearance.BorderSize = 0 - Me.POWAVResizer.FlatStyle = System.Windows.Forms.FlatStyle.Flat - Me.POWAVResizer.Location = New System.Drawing.Point(0, 245) - Me.POWAVResizer.Margin = New System.Windows.Forms.Padding(0) - Me.POWAVResizer.Name = "POWAVResizer" - Me.POWAVResizer.Size = New System.Drawing.Size(183, 5) - Me.POWAVResizer.TabIndex = 33 - Me.POWAVResizer.TabStop = False - Me.POWAVResizer.UseVisualStyleBackColor = True + Me.mnStatistics.Image = Global.iBMSC.My.Resources.Resources.x16Statistics + Me.mnStatistics.Name = "mnStatistics" + Me.mnStatistics.ShortcutKeys = CType((System.Windows.Forms.Keys.Control Or System.Windows.Forms.Keys.T), System.Windows.Forms.Keys) + Me.mnStatistics.Size = New System.Drawing.Size(256, 22) + Me.mnStatistics.Text = "St&atistics" ' - 'POWAVPart2 + 'mnStatisticsAdvanced ' - Me.POWAVPart2.AutoSize = True - Me.POWAVPart2.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink - Me.POWAVPart2.ColumnCount = 1 - Me.POWAVPart2.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100.0!)) - Me.POWAVPart2.Controls.Add(Me.CWAVMultiSelect, 0, 0) - Me.POWAVPart2.Controls.Add(Me.CWAVChangeLabel, 0, 1) - Me.POWAVPart2.Dock = System.Windows.Forms.DockStyle.Fill - Me.POWAVPart2.Location = New System.Drawing.Point(0, 55) - Me.POWAVPart2.Margin = New System.Windows.Forms.Padding(0) - Me.POWAVPart2.Name = "POWAVPart2" - Me.POWAVPart2.RowCount = 2 - Me.POWAVPart2.RowStyles.Add(New System.Windows.Forms.RowStyle()) - Me.POWAVPart2.RowStyles.Add(New System.Windows.Forms.RowStyle()) - Me.POWAVPart2.Size = New System.Drawing.Size(183, 38) - Me.POWAVPart2.TabIndex = 35 - Me.POWAVPart2.Visible = False + Me.mnStatisticsAdvanced.Image = Global.iBMSC.My.Resources.Resources.x16Statistics + Me.mnStatisticsAdvanced.Name = "mnStatisticsAdvanced" + Me.mnStatisticsAdvanced.ShortcutKeys = CType(((System.Windows.Forms.Keys.Control Or System.Windows.Forms.Keys.Shift) _ + Or System.Windows.Forms.Keys.T), System.Windows.Forms.Keys) + Me.mnStatisticsAdvanced.Size = New System.Drawing.Size(256, 22) + Me.mnStatisticsAdvanced.Text = "Statistics (Ad&vanced)" ' - 'CWAVMultiSelect + 'ToolStripSeparator19 ' - Me.CWAVMultiSelect.AutoSize = True - Me.CWAVMultiSelect.Checked = True - Me.CWAVMultiSelect.CheckState = System.Windows.Forms.CheckState.Checked - Me.CWAVMultiSelect.Location = New System.Drawing.Point(3, 0) - Me.CWAVMultiSelect.Margin = New System.Windows.Forms.Padding(3, 0, 3, 0) - Me.CWAVMultiSelect.Name = "CWAVMultiSelect" - Me.CWAVMultiSelect.Size = New System.Drawing.Size(154, 19) - Me.CWAVMultiSelect.TabIndex = 702 - Me.CWAVMultiSelect.Text = "Allow Multiple Selection" - Me.CWAVMultiSelect.UseVisualStyleBackColor = True + Me.ToolStripSeparator19.Name = "ToolStripSeparator19" + Me.ToolStripSeparator19.Size = New System.Drawing.Size(253, 6) ' - 'CWAVChangeLabel + 'mnTimeSelect ' - Me.CWAVChangeLabel.AutoSize = True - Me.CWAVChangeLabel.Checked = True - Me.CWAVChangeLabel.CheckState = System.Windows.Forms.CheckState.Checked - Me.CWAVChangeLabel.Location = New System.Drawing.Point(3, 19) - Me.CWAVChangeLabel.Margin = New System.Windows.Forms.Padding(3, 0, 3, 0) - Me.CWAVChangeLabel.Name = "CWAVChangeLabel" - Me.CWAVChangeLabel.Size = New System.Drawing.Size(155, 19) - Me.CWAVChangeLabel.TabIndex = 703 - Me.CWAVChangeLabel.Text = "Synchronize Note Labels" - Me.CWAVChangeLabel.UseVisualStyleBackColor = True + Me.mnTimeSelect.CheckOnClick = True + Me.mnTimeSelect.Image = Global.iBMSC.My.Resources.Resources.x16TimeSelection + Me.mnTimeSelect.Name = "mnTimeSelect" + Me.mnTimeSelect.ShortcutKeys = System.Windows.Forms.Keys.F1 + Me.mnTimeSelect.Size = New System.Drawing.Size(256, 22) + Me.mnTimeSelect.Text = "T&ime Selection Tool" ' - 'POWAVSwitch + 'mnSelect ' - Me.POWAVSwitch.Appearance = System.Windows.Forms.Appearance.Button - Me.POWAVSwitch.BackColor = System.Drawing.SystemColors.Control - Me.POWAVSwitch.Checked = True - Me.POWAVSwitch.CheckState = System.Windows.Forms.CheckState.Checked - Me.POWAVSwitch.Cursor = System.Windows.Forms.Cursors.Hand - Me.POWAVSwitch.Dock = System.Windows.Forms.DockStyle.Top - Me.POWAVSwitch.Font = New System.Drawing.Font("Segoe UI", 9.0!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) - Me.POWAVSwitch.Location = New System.Drawing.Point(0, 0) - Me.POWAVSwitch.Name = "POWAVSwitch" - Me.POWAVSwitch.Size = New System.Drawing.Size(183, 20) - Me.POWAVSwitch.TabIndex = 601 - Me.POWAVSwitch.TabStop = False - Me.POWAVSwitch.Text = "#WAV (Sounds List)" - Me.POWAVSwitch.TextAlign = System.Drawing.ContentAlignment.MiddleCenter - Me.POWAVSwitch.UseCompatibleTextRendering = True - Me.POWAVSwitch.UseVisualStyleBackColor = False + Me.mnSelect.Checked = True + Me.mnSelect.CheckOnClick = True + Me.mnSelect.CheckState = System.Windows.Forms.CheckState.Checked + Me.mnSelect.Image = Global.iBMSC.My.Resources.Resources.x16Select + Me.mnSelect.Name = "mnSelect" + Me.mnSelect.ShortcutKeys = System.Windows.Forms.Keys.F2 + Me.mnSelect.Size = New System.Drawing.Size(256, 22) + Me.mnSelect.Text = "&Select Tool" ' - 'POWaveForm + 'mnWrite ' - Me.POWaveForm.AutoSize = True - Me.POWaveForm.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink - Me.POWaveForm.Controls.Add(Me.POWaveFormInner) - Me.POWaveForm.Controls.Add(Me.POWaveFormSwitch) - Me.POWaveForm.Dock = System.Windows.Forms.DockStyle.Top - Me.POWaveForm.Location = New System.Drawing.Point(0, 669) - Me.POWaveForm.Name = "POWaveForm" - Me.POWaveForm.Size = New System.Drawing.Size(183, 243) - Me.POWaveForm.TabIndex = 3 + Me.mnWrite.CheckOnClick = True + Me.mnWrite.Image = Global.iBMSC.My.Resources.Resources.x16Pen + Me.mnWrite.Name = "mnWrite" + Me.mnWrite.ShortcutKeys = System.Windows.Forms.Keys.F3 + Me.mnWrite.Size = New System.Drawing.Size(256, 22) + Me.mnWrite.Text = "&Write Tool" ' - 'POWaveFormInner + 'ToolStripSeparator23 ' - Me.POWaveFormInner.AutoSize = True - Me.POWaveFormInner.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink - Me.POWaveFormInner.Controls.Add(Me.POWaveFormPart2) - Me.POWaveFormInner.Controls.Add(Me.POWaveFormExpander) - Me.POWaveFormInner.Controls.Add(Me.POWaveFormPart1) - Me.POWaveFormInner.Dock = System.Windows.Forms.DockStyle.Top - Me.POWaveFormInner.Location = New System.Drawing.Point(0, 20) - Me.POWaveFormInner.Name = "POWaveFormInner" - Me.POWaveFormInner.Size = New System.Drawing.Size(183, 223) - Me.POWaveFormInner.TabIndex = 29 - Me.POWaveFormInner.Visible = False + Me.ToolStripSeparator23.Name = "ToolStripSeparator23" + Me.ToolStripSeparator23.Size = New System.Drawing.Size(253, 6) ' - 'POWaveFormPart2 + 'mnMyO2 ' - Me.POWaveFormPart2.AutoSize = True - Me.POWaveFormPart2.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink - Me.POWaveFormPart2.ColumnCount = 3 - Me.POWaveFormPart2.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle()) - Me.POWaveFormPart2.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 70.0!)) - Me.POWaveFormPart2.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 30.0!)) - Me.POWaveFormPart2.Controls.Add(Me.TWSaturation, 2, 4) - Me.POWaveFormPart2.Controls.Add(Me.PictureBox2, 0, 0) - Me.POWaveFormPart2.Controls.Add(Me.TWTransparency, 2, 3) - Me.POWaveFormPart2.Controls.Add(Me.PictureBox3, 0, 1) - Me.POWaveFormPart2.Controls.Add(Me.TWPrecision, 2, 2) - Me.POWaveFormPart2.Controls.Add(Me.PictureBox4, 0, 2) - Me.POWaveFormPart2.Controls.Add(Me.TWWidth, 2, 1) - Me.POWaveFormPart2.Controls.Add(Me.PictureBox5, 0, 3) - Me.POWaveFormPart2.Controls.Add(Me.TWLeft, 2, 0) - Me.POWaveFormPart2.Controls.Add(Me.PictureBox6, 0, 4) - Me.POWaveFormPart2.Controls.Add(Me.TWSaturation2, 1, 4) - Me.POWaveFormPart2.Controls.Add(Me.TWLeft2, 1, 0) - Me.POWaveFormPart2.Controls.Add(Me.TWTransparency2, 1, 3) - Me.POWaveFormPart2.Controls.Add(Me.TWWidth2, 1, 1) - Me.POWaveFormPart2.Controls.Add(Me.TWPrecision2, 1, 2) - Me.POWaveFormPart2.Dock = System.Windows.Forms.DockStyle.Top - Me.POWaveFormPart2.Location = New System.Drawing.Point(0, 83) - Me.POWaveFormPart2.Name = "POWaveFormPart2" - Me.POWaveFormPart2.RowCount = 5 - Me.POWaveFormPart2.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 28.0!)) - Me.POWaveFormPart2.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 28.0!)) - Me.POWaveFormPart2.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 28.0!)) - Me.POWaveFormPart2.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 28.0!)) - Me.POWaveFormPart2.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 28.0!)) - Me.POWaveFormPart2.Size = New System.Drawing.Size(183, 140) - Me.POWaveFormPart2.TabIndex = 5 - ' - 'TWSaturation + Me.mnMyO2.Image = Global.iBMSC.My.Resources.Resources.x16MyO2 + Me.mnMyO2.Name = "mnMyO2" + Me.mnMyO2.Size = New System.Drawing.Size(256, 22) + Me.mnMyO2.Text = "MyO2 ToolBox (Chinese Only)" ' - Me.TWSaturation.Dock = System.Windows.Forms.DockStyle.Fill - Me.TWSaturation.Increment = New Decimal(New Integer() {50, 0, 0, 0}) - Me.TWSaturation.Location = New System.Drawing.Point(137, 112) - Me.TWSaturation.Margin = New System.Windows.Forms.Padding(0, 0, 3, 0) - Me.TWSaturation.Maximum = New Decimal(New Integer() {1000, 0, 0, 0}) - Me.TWSaturation.Name = "TWSaturation" - Me.TWSaturation.Size = New System.Drawing.Size(43, 23) - Me.TWSaturation.TabIndex = 511 + 'mnSys ' - 'PictureBox2 + Me.mnSys.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.mnSMenu, Me.mnSTB, Me.mnSOP, Me.mnSStatus, Me.mnSLSplitter, Me.mnSRSplitter, Me.ToolStripSeparator21, Me.CGShow, Me.CGShowS, Me.CGShowBG, Me.CGShowM, Me.CGShowMB, Me.CGShowV, Me.CGShowC, Me.ToolStripSeparator22, Me.CGBPM, Me.CGSTOP, Me.CGSCROLL, Me.CGBLP}) + Me.mnSys.Name = "mnSys" + Me.mnSys.Size = New System.Drawing.Size(44, 19) + Me.mnSys.Text = "&View" ' - Me.PictureBox2.Image = Global.iBMSC.My.Resources.Resources.WAVLeft - Me.PictureBox2.Location = New System.Drawing.Point(3, 0) - Me.PictureBox2.Margin = New System.Windows.Forms.Padding(3, 0, 3, 0) - Me.PictureBox2.Name = "PictureBox2" - Me.PictureBox2.Size = New System.Drawing.Size(24, 24) - Me.PictureBox2.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize - Me.PictureBox2.TabIndex = 60 - Me.PictureBox2.TabStop = False + 'mnSMenu ' - 'TWTransparency + Me.mnSMenu.Checked = True + Me.mnSMenu.CheckOnClick = True + Me.mnSMenu.CheckState = System.Windows.Forms.CheckState.Checked + Me.mnSMenu.Name = "mnSMenu" + Me.mnSMenu.Size = New System.Drawing.Size(210, 22) + Me.mnSMenu.Text = "&Main Menu" + Me.mnSMenu.Visible = False ' - Me.TWTransparency.Dock = System.Windows.Forms.DockStyle.Fill - Me.TWTransparency.Increment = New Decimal(New Integer() {10, 0, 0, 0}) - Me.TWTransparency.Location = New System.Drawing.Point(137, 84) - Me.TWTransparency.Margin = New System.Windows.Forms.Padding(0, 0, 3, 0) - Me.TWTransparency.Maximum = New Decimal(New Integer() {255, 0, 0, 0}) - Me.TWTransparency.Name = "TWTransparency" - Me.TWTransparency.Size = New System.Drawing.Size(43, 23) - Me.TWTransparency.TabIndex = 509 - Me.TWTransparency.Value = New Decimal(New Integer() {80, 0, 0, 0}) + 'mnSTB ' - 'PictureBox3 + Me.mnSTB.Checked = True + Me.mnSTB.CheckOnClick = True + Me.mnSTB.CheckState = System.Windows.Forms.CheckState.Checked + Me.mnSTB.Name = "mnSTB" + Me.mnSTB.Size = New System.Drawing.Size(210, 22) + Me.mnSTB.Text = "&ToolBar" ' - Me.PictureBox3.Image = Global.iBMSC.My.Resources.Resources.WAVWidth - Me.PictureBox3.Location = New System.Drawing.Point(3, 28) - Me.PictureBox3.Margin = New System.Windows.Forms.Padding(3, 0, 3, 0) - Me.PictureBox3.Name = "PictureBox3" - Me.PictureBox3.Size = New System.Drawing.Size(24, 24) - Me.PictureBox3.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize - Me.PictureBox3.TabIndex = 61 - Me.PictureBox3.TabStop = False + 'mnSOP ' - 'TWPrecision + Me.mnSOP.Checked = True + Me.mnSOP.CheckOnClick = True + Me.mnSOP.CheckState = System.Windows.Forms.CheckState.Checked + Me.mnSOP.Name = "mnSOP" + Me.mnSOP.Size = New System.Drawing.Size(210, 22) + Me.mnSOP.Text = "&Options Panel" ' - Me.TWPrecision.Dock = System.Windows.Forms.DockStyle.Fill - Me.TWPrecision.Location = New System.Drawing.Point(137, 56) - Me.TWPrecision.Margin = New System.Windows.Forms.Padding(0, 0, 3, 0) - Me.TWPrecision.Maximum = New Decimal(New Integer() {50, 0, 0, 0}) - Me.TWPrecision.Name = "TWPrecision" - Me.TWPrecision.Size = New System.Drawing.Size(43, 23) - Me.TWPrecision.TabIndex = 507 - Me.TWPrecision.Value = New Decimal(New Integer() {5, 0, 0, 0}) + 'mnSStatus ' - 'PictureBox4 + Me.mnSStatus.Checked = True + Me.mnSStatus.CheckOnClick = True + Me.mnSStatus.CheckState = System.Windows.Forms.CheckState.Checked + Me.mnSStatus.Name = "mnSStatus" + Me.mnSStatus.Size = New System.Drawing.Size(210, 22) + Me.mnSStatus.Text = "&Status Bar" ' - Me.PictureBox4.Image = Global.iBMSC.My.Resources.Resources.WAVPrecision - Me.PictureBox4.Location = New System.Drawing.Point(3, 56) - Me.PictureBox4.Margin = New System.Windows.Forms.Padding(3, 0, 3, 0) - Me.PictureBox4.Name = "PictureBox4" - Me.PictureBox4.Size = New System.Drawing.Size(24, 24) - Me.PictureBox4.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize - Me.PictureBox4.TabIndex = 62 - Me.PictureBox4.TabStop = False + 'mnSLSplitter ' - 'TWWidth + Me.mnSLSplitter.CheckOnClick = True + Me.mnSLSplitter.Name = "mnSLSplitter" + Me.mnSLSplitter.ShortcutKeys = CType((System.Windows.Forms.Keys.Alt Or System.Windows.Forms.Keys.Left), System.Windows.Forms.Keys) + Me.mnSLSplitter.Size = New System.Drawing.Size(210, 22) + Me.mnSLSplitter.Text = "&Left Splitter" ' - Me.TWWidth.Dock = System.Windows.Forms.DockStyle.Fill - Me.TWWidth.Increment = New Decimal(New Integer() {10, 0, 0, 0}) - Me.TWWidth.Location = New System.Drawing.Point(137, 28) - Me.TWWidth.Margin = New System.Windows.Forms.Padding(0, 0, 3, 0) - Me.TWWidth.Maximum = New Decimal(New Integer() {1000, 0, 0, 0}) - Me.TWWidth.Name = "TWWidth" - Me.TWWidth.Size = New System.Drawing.Size(43, 23) - Me.TWWidth.TabIndex = 505 - Me.TWWidth.Value = New Decimal(New Integer() {200, 0, 0, 0}) + 'mnSRSplitter ' - 'PictureBox5 + Me.mnSRSplitter.CheckOnClick = True + Me.mnSRSplitter.Name = "mnSRSplitter" + Me.mnSRSplitter.ShortcutKeys = CType((System.Windows.Forms.Keys.Alt Or System.Windows.Forms.Keys.Right), System.Windows.Forms.Keys) + Me.mnSRSplitter.Size = New System.Drawing.Size(210, 22) + Me.mnSRSplitter.Text = "&Right Splitter" ' - Me.PictureBox5.Image = Global.iBMSC.My.Resources.Resources.WAVTransparency - Me.PictureBox5.Location = New System.Drawing.Point(3, 84) - Me.PictureBox5.Margin = New System.Windows.Forms.Padding(3, 0, 3, 0) - Me.PictureBox5.Name = "PictureBox5" - Me.PictureBox5.Size = New System.Drawing.Size(24, 24) - Me.PictureBox5.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize - Me.PictureBox5.TabIndex = 67 - Me.PictureBox5.TabStop = False + 'ToolStripSeparator21 ' - 'TWLeft + Me.ToolStripSeparator21.Name = "ToolStripSeparator21" + Me.ToolStripSeparator21.Size = New System.Drawing.Size(207, 6) ' - Me.TWLeft.Dock = System.Windows.Forms.DockStyle.Fill - Me.TWLeft.Increment = New Decimal(New Integer() {5, 0, 0, 0}) - Me.TWLeft.Location = New System.Drawing.Point(137, 0) - Me.TWLeft.Margin = New System.Windows.Forms.Padding(0, 0, 3, 0) - Me.TWLeft.Maximum = New Decimal(New Integer() {800, 0, 0, 0}) - Me.TWLeft.Name = "TWLeft" - Me.TWLeft.Size = New System.Drawing.Size(43, 23) - Me.TWLeft.TabIndex = 503 - Me.TWLeft.Value = New Decimal(New Integer() {50, 0, 0, 0}) + 'CGShow ' - 'PictureBox6 + Me.CGShow.Checked = True + Me.CGShow.CheckOnClick = True + Me.CGShow.CheckState = System.Windows.Forms.CheckState.Checked + Me.CGShow.Name = "CGShow" + Me.CGShow.Size = New System.Drawing.Size(210, 22) + Me.CGShow.Text = "Grid" ' - Me.PictureBox6.Image = Global.iBMSC.My.Resources.Resources.WAVSaturation - Me.PictureBox6.Location = New System.Drawing.Point(3, 112) - Me.PictureBox6.Margin = New System.Windows.Forms.Padding(3, 0, 3, 0) - Me.PictureBox6.Name = "PictureBox6" - Me.PictureBox6.Size = New System.Drawing.Size(24, 24) - Me.PictureBox6.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize - Me.PictureBox6.TabIndex = 66 - Me.PictureBox6.TabStop = False + 'CGShowS ' - 'TWSaturation2 + Me.CGShowS.Checked = True + Me.CGShowS.CheckOnClick = True + Me.CGShowS.CheckState = System.Windows.Forms.CheckState.Checked + Me.CGShowS.Name = "CGShowS" + Me.CGShowS.Size = New System.Drawing.Size(210, 22) + Me.CGShowS.Text = "Sub" ' - Me.TWSaturation2.Dock = System.Windows.Forms.DockStyle.Fill - Me.TWSaturation2.LargeChange = 200 - Me.TWSaturation2.Location = New System.Drawing.Point(30, 112) - Me.TWSaturation2.Margin = New System.Windows.Forms.Padding(0) - Me.TWSaturation2.Maximum = 1000 - Me.TWSaturation2.Name = "TWSaturation2" - Me.TWSaturation2.Size = New System.Drawing.Size(107, 28) - Me.TWSaturation2.SmallChange = 50 - Me.TWSaturation2.TabIndex = 510 - Me.TWSaturation2.TickFrequency = 200 + 'CGShowBG ' - 'TWLeft2 + Me.CGShowBG.Checked = True + Me.CGShowBG.CheckOnClick = True + Me.CGShowBG.CheckState = System.Windows.Forms.CheckState.Checked + Me.CGShowBG.Name = "CGShowBG" + Me.CGShowBG.Size = New System.Drawing.Size(210, 22) + Me.CGShowBG.Text = "BackGround" ' - Me.TWLeft2.Dock = System.Windows.Forms.DockStyle.Fill - Me.TWLeft2.LargeChange = 50 - Me.TWLeft2.Location = New System.Drawing.Point(30, 0) - Me.TWLeft2.Margin = New System.Windows.Forms.Padding(0) - Me.TWLeft2.Maximum = 800 - Me.TWLeft2.Name = "TWLeft2" - Me.TWLeft2.Size = New System.Drawing.Size(107, 28) - Me.TWLeft2.SmallChange = 10 - Me.TWLeft2.TabIndex = 502 - Me.TWLeft2.TickFrequency = 100 - Me.TWLeft2.Value = 50 + 'CGShowM ' - 'TWTransparency2 + Me.CGShowM.Checked = True + Me.CGShowM.CheckOnClick = True + Me.CGShowM.CheckState = System.Windows.Forms.CheckState.Checked + Me.CGShowM.Name = "CGShowM" + Me.CGShowM.Size = New System.Drawing.Size(210, 22) + Me.CGShowM.Text = "Measure Index" ' - Me.TWTransparency2.Dock = System.Windows.Forms.DockStyle.Fill - Me.TWTransparency2.LargeChange = 64 - Me.TWTransparency2.Location = New System.Drawing.Point(30, 84) - Me.TWTransparency2.Margin = New System.Windows.Forms.Padding(0) - Me.TWTransparency2.Maximum = 255 - Me.TWTransparency2.Name = "TWTransparency2" - Me.TWTransparency2.Size = New System.Drawing.Size(107, 28) - Me.TWTransparency2.SmallChange = 8 - Me.TWTransparency2.TabIndex = 508 - Me.TWTransparency2.TickFrequency = 64 - Me.TWTransparency2.Value = 80 + 'CGShowMB ' - 'TWWidth2 + Me.CGShowMB.Checked = True + Me.CGShowMB.CheckOnClick = True + Me.CGShowMB.CheckState = System.Windows.Forms.CheckState.Checked + Me.CGShowMB.Name = "CGShowMB" + Me.CGShowMB.Size = New System.Drawing.Size(210, 22) + Me.CGShowMB.Text = "Measure Line" ' - Me.TWWidth2.Dock = System.Windows.Forms.DockStyle.Fill - Me.TWWidth2.LargeChange = 50 - Me.TWWidth2.Location = New System.Drawing.Point(30, 28) - Me.TWWidth2.Margin = New System.Windows.Forms.Padding(0) - Me.TWWidth2.Maximum = 1000 - Me.TWWidth2.Name = "TWWidth2" - Me.TWWidth2.Size = New System.Drawing.Size(107, 28) - Me.TWWidth2.SmallChange = 10 - Me.TWWidth2.TabIndex = 504 - Me.TWWidth2.TickFrequency = 100 - Me.TWWidth2.Value = 200 + 'CGShowV ' - 'TWPrecision2 + Me.CGShowV.Checked = True + Me.CGShowV.CheckOnClick = True + Me.CGShowV.CheckState = System.Windows.Forms.CheckState.Checked + Me.CGShowV.Name = "CGShowV" + Me.CGShowV.Size = New System.Drawing.Size(210, 22) + Me.CGShowV.Text = "Vertical Line" ' - Me.TWPrecision2.Dock = System.Windows.Forms.DockStyle.Fill - Me.TWPrecision2.LargeChange = 4 - Me.TWPrecision2.Location = New System.Drawing.Point(30, 56) - Me.TWPrecision2.Margin = New System.Windows.Forms.Padding(0) - Me.TWPrecision2.Maximum = 50 - Me.TWPrecision2.Name = "TWPrecision2" - Me.TWPrecision2.Size = New System.Drawing.Size(107, 28) - Me.TWPrecision2.TabIndex = 506 - Me.TWPrecision2.TickFrequency = 5 - Me.TWPrecision2.Value = 5 + 'CGShowC ' - 'POWaveFormExpander + Me.CGShowC.Checked = True + Me.CGShowC.CheckOnClick = True + Me.CGShowC.CheckState = System.Windows.Forms.CheckState.Checked + Me.CGShowC.Name = "CGShowC" + Me.CGShowC.Size = New System.Drawing.Size(210, 22) + Me.CGShowC.Text = "Column Caption" ' - Me.POWaveFormExpander.Appearance = System.Windows.Forms.Appearance.Button - Me.POWaveFormExpander.AutoSize = True - Me.POWaveFormExpander.Cursor = System.Windows.Forms.Cursors.Hand - Me.POWaveFormExpander.Dock = System.Windows.Forms.DockStyle.Top - Me.POWaveFormExpander.FlatAppearance.BorderSize = 0 - Me.POWaveFormExpander.FlatStyle = System.Windows.Forms.FlatStyle.Popup - Me.POWaveFormExpander.Location = New System.Drawing.Point(0, 58) - Me.POWaveFormExpander.Margin = New System.Windows.Forms.Padding(0) - Me.POWaveFormExpander.Name = "POWaveFormExpander" - Me.POWaveFormExpander.Size = New System.Drawing.Size(183, 25) - Me.POWaveFormExpander.TabIndex = 501 - Me.POWaveFormExpander.TabStop = False - Me.POWaveFormExpander.Text = "Expand..." - Me.POWaveFormExpander.TextAlign = System.Drawing.ContentAlignment.MiddleCenter - Me.POWaveFormExpander.UseVisualStyleBackColor = False + 'ToolStripSeparator22 ' - 'POWaveFormPart1 + Me.ToolStripSeparator22.Name = "ToolStripSeparator22" + Me.ToolStripSeparator22.Size = New System.Drawing.Size(207, 6) ' - Me.POWaveFormPart1.AutoSize = True - Me.POWaveFormPart1.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink - Me.POWaveFormPart1.ColumnCount = 1 - Me.POWaveFormPart1.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100.0!)) - Me.POWaveFormPart1.Controls.Add(Me.TableLayoutPanel1, 0, 0) - Me.POWaveFormPart1.Controls.Add(Me.TableLayoutPanel6, 0, 1) - Me.POWaveFormPart1.Dock = System.Windows.Forms.DockStyle.Top - Me.POWaveFormPart1.Location = New System.Drawing.Point(0, 0) - Me.POWaveFormPart1.Name = "POWaveFormPart1" - Me.POWaveFormPart1.RowCount = 2 - Me.POWaveFormPart1.RowStyles.Add(New System.Windows.Forms.RowStyle()) - Me.POWaveFormPart1.RowStyles.Add(New System.Windows.Forms.RowStyle()) - Me.POWaveFormPart1.Size = New System.Drawing.Size(183, 58) - Me.POWaveFormPart1.TabIndex = 4 + 'CGBPM ' - 'TableLayoutPanel1 + Me.CGBPM.Checked = True + Me.CGBPM.CheckOnClick = True + Me.CGBPM.CheckState = System.Windows.Forms.CheckState.Checked + Me.CGBPM.Name = "CGBPM" + Me.CGBPM.ShortcutKeys = CType((System.Windows.Forms.Keys.Alt Or System.Windows.Forms.Keys.B), System.Windows.Forms.Keys) + Me.CGBPM.Size = New System.Drawing.Size(210, 22) + Me.CGBPM.Text = "BPM" ' - Me.TableLayoutPanel1.AutoSize = True - Me.TableLayoutPanel1.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink - Me.TableLayoutPanel1.ColumnCount = 2 - Me.TableLayoutPanel1.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle()) - Me.TableLayoutPanel1.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100.0!)) - Me.TableLayoutPanel1.Controls.Add(Me.FlowLayoutPanel1, 0, 0) - Me.TableLayoutPanel1.Controls.Add(Me.TWFileName, 1, 0) - Me.TableLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Fill - Me.TableLayoutPanel1.Location = New System.Drawing.Point(0, 0) - Me.TableLayoutPanel1.Margin = New System.Windows.Forms.Padding(0) - Me.TableLayoutPanel1.Name = "TableLayoutPanel1" - Me.TableLayoutPanel1.RowCount = 1 - Me.TableLayoutPanel1.RowStyles.Add(New System.Windows.Forms.RowStyle()) - Me.TableLayoutPanel1.Size = New System.Drawing.Size(183, 30) - Me.TableLayoutPanel1.TabIndex = 0 + 'CGSTOP ' - 'FlowLayoutPanel1 + Me.CGSTOP.Checked = True + Me.CGSTOP.CheckOnClick = True + Me.CGSTOP.CheckState = System.Windows.Forms.CheckState.Checked + Me.CGSTOP.Name = "CGSTOP" + Me.CGSTOP.ShortcutKeys = CType((System.Windows.Forms.Keys.Alt Or System.Windows.Forms.Keys.S), System.Windows.Forms.Keys) + Me.CGSTOP.Size = New System.Drawing.Size(210, 22) + Me.CGSTOP.Text = "STOP" ' - Me.FlowLayoutPanel1.AutoSize = True - Me.FlowLayoutPanel1.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink - Me.FlowLayoutPanel1.Controls.Add(Me.BWLoad) - Me.FlowLayoutPanel1.Controls.Add(Me.BWClear) - Me.FlowLayoutPanel1.Controls.Add(Me.BWLock) - Me.FlowLayoutPanel1.Location = New System.Drawing.Point(3, 3) - Me.FlowLayoutPanel1.Name = "FlowLayoutPanel1" - Me.FlowLayoutPanel1.Size = New System.Drawing.Size(72, 24) - Me.FlowLayoutPanel1.TabIndex = 72 - Me.FlowLayoutPanel1.WrapContents = False + 'CGSCROLL ' - 'BWLoad + Me.CGSCROLL.Checked = True + Me.CGSCROLL.CheckOnClick = True + Me.CGSCROLL.CheckState = System.Windows.Forms.CheckState.Checked + Me.CGSCROLL.Name = "CGSCROLL" + Me.CGSCROLL.ShortcutKeys = CType((System.Windows.Forms.Keys.Alt Or System.Windows.Forms.Keys.C), System.Windows.Forms.Keys) + Me.CGSCROLL.Size = New System.Drawing.Size(210, 22) + Me.CGSCROLL.Text = "SCROLL" ' - Me.BWLoad.Image = Global.iBMSC.My.Resources.Resources.x16Add - Me.BWLoad.Location = New System.Drawing.Point(0, 0) - Me.BWLoad.Margin = New System.Windows.Forms.Padding(0) - Me.BWLoad.Name = "BWLoad" - Me.BWLoad.Size = New System.Drawing.Size(24, 24) - Me.BWLoad.TabIndex = 402 - Me.ToolTipUniversal.SetToolTip(Me.BWLoad, "Load WaveForm") - Me.BWLoad.UseVisualStyleBackColor = True + 'CGBLP ' - 'BWClear + Me.CGBLP.Checked = True + Me.CGBLP.CheckOnClick = True + Me.CGBLP.CheckState = System.Windows.Forms.CheckState.Checked + Me.CGBLP.Name = "CGBLP" + Me.CGBLP.ShortcutKeys = CType((System.Windows.Forms.Keys.Alt Or System.Windows.Forms.Keys.G), System.Windows.Forms.Keys) + Me.CGBLP.Size = New System.Drawing.Size(210, 22) + Me.CGBLP.Text = "BGA / Layer / Poor" ' - Me.BWClear.Image = Global.iBMSC.My.Resources.Resources.x16Remove - Me.BWClear.Location = New System.Drawing.Point(24, 0) - Me.BWClear.Margin = New System.Windows.Forms.Padding(0) - Me.BWClear.Name = "BWClear" - Me.BWClear.Size = New System.Drawing.Size(24, 24) - Me.BWClear.TabIndex = 403 - Me.ToolTipUniversal.SetToolTip(Me.BWClear, "Clear WaveForm") - Me.BWClear.UseVisualStyleBackColor = True + 'mnOptions ' - 'BWLock + Me.mnOptions.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.mnNTInput, Me.mnErrorCheck, Me.mnPreviewOnClick, Me.mnShowFileName, Me.ToolStripSeparator20, Me.mnGOptions, Me.mnVOptions, Me.mnVCOptions, Me.mnPOptions, Me.mnLanguage, Me.mnTheme}) + Me.mnOptions.Name = "mnOptions" + Me.mnOptions.Size = New System.Drawing.Size(61, 19) + Me.mnOptions.Text = "&Options" ' - Me.BWLock.Appearance = System.Windows.Forms.Appearance.Button - Me.BWLock.Checked = True - Me.BWLock.CheckState = System.Windows.Forms.CheckState.Checked - Me.BWLock.Image = Global.iBMSC.My.Resources.Resources.x16Lock - Me.BWLock.Location = New System.Drawing.Point(48, 0) - Me.BWLock.Margin = New System.Windows.Forms.Padding(0) - Me.BWLock.Name = "BWLock" - Me.BWLock.Size = New System.Drawing.Size(24, 24) - Me.BWLock.TabIndex = 404 - Me.ToolTipUniversal.SetToolTip(Me.BWLock, "Lock to BGM") - Me.BWLock.UseVisualStyleBackColor = True + 'mnNTInput ' - 'TWFileName + Me.mnNTInput.Checked = True + Me.mnNTInput.CheckOnClick = True + Me.mnNTInput.CheckState = System.Windows.Forms.CheckState.Checked + Me.mnNTInput.Image = Global.iBMSC.My.Resources.Resources.x16NTInput + Me.mnNTInput.Name = "mnNTInput" + Me.mnNTInput.ShortcutKeys = System.Windows.Forms.Keys.F8 + Me.mnNTInput.Size = New System.Drawing.Size(253, 22) + Me.mnNTInput.Text = "L&N Input Style - NT/BMSE" ' - Me.TWFileName.Dock = System.Windows.Forms.DockStyle.Fill - Me.TWFileName.Location = New System.Drawing.Point(81, 3) - Me.TWFileName.Name = "TWFileName" - Me.TWFileName.ReadOnly = True - Me.TWFileName.Size = New System.Drawing.Size(99, 23) - Me.TWFileName.TabIndex = 405 - Me.TWFileName.Text = "(None)" + 'mnErrorCheck ' - 'TableLayoutPanel6 + Me.mnErrorCheck.Checked = True + Me.mnErrorCheck.CheckOnClick = True + Me.mnErrorCheck.CheckState = System.Windows.Forms.CheckState.Checked + Me.mnErrorCheck.Image = Global.iBMSC.My.Resources.Resources.x16CheckError + Me.mnErrorCheck.Name = "mnErrorCheck" + Me.mnErrorCheck.Size = New System.Drawing.Size(253, 22) + Me.mnErrorCheck.Text = "&Error Check" ' - Me.TableLayoutPanel6.AutoSize = True - Me.TableLayoutPanel6.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink - Me.TableLayoutPanel6.ColumnCount = 3 - Me.TableLayoutPanel6.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle()) - Me.TableLayoutPanel6.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 60.0!)) - Me.TableLayoutPanel6.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 40.0!)) - Me.TableLayoutPanel6.Controls.Add(Me.PictureBox1, 0, 0) - Me.TableLayoutPanel6.Controls.Add(Me.TWPosition2, 1, 0) - Me.TableLayoutPanel6.Controls.Add(Me.TWPosition, 2, 0) - Me.TableLayoutPanel6.Dock = System.Windows.Forms.DockStyle.Fill - Me.TableLayoutPanel6.Location = New System.Drawing.Point(0, 30) - Me.TableLayoutPanel6.Margin = New System.Windows.Forms.Padding(0) - Me.TableLayoutPanel6.Name = "TableLayoutPanel6" - Me.TableLayoutPanel6.RowCount = 1 - Me.TableLayoutPanel6.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 28.0!)) - Me.TableLayoutPanel6.Size = New System.Drawing.Size(183, 28) - Me.TableLayoutPanel6.TabIndex = 1 + 'mnPreviewOnClick ' - 'PictureBox1 + Me.mnPreviewOnClick.Checked = True + Me.mnPreviewOnClick.CheckOnClick = True + Me.mnPreviewOnClick.CheckState = System.Windows.Forms.CheckState.Checked + Me.mnPreviewOnClick.Image = Global.iBMSC.My.Resources.Resources.x16PreviewOnClick + Me.mnPreviewOnClick.Name = "mnPreviewOnClick" + Me.mnPreviewOnClick.Size = New System.Drawing.Size(253, 22) + Me.mnPreviewOnClick.Text = "Preview on &Click" ' - Me.PictureBox1.Image = Global.iBMSC.My.Resources.Resources.WAVOffset - Me.PictureBox1.Location = New System.Drawing.Point(3, 0) - Me.PictureBox1.Margin = New System.Windows.Forms.Padding(3, 0, 3, 0) - Me.PictureBox1.Name = "PictureBox1" - Me.PictureBox1.Size = New System.Drawing.Size(24, 24) - Me.PictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize - Me.PictureBox1.TabIndex = 59 - Me.PictureBox1.TabStop = False + 'mnShowFileName ' - 'TWPosition2 + Me.mnShowFileName.CheckOnClick = True + Me.mnShowFileName.Image = Global.iBMSC.My.Resources.Resources.x16ShowFileNameN + Me.mnShowFileName.Name = "mnShowFileName" + Me.mnShowFileName.Size = New System.Drawing.Size(253, 22) + Me.mnShowFileName.Text = "Show &File Name on Notes" ' - Me.TWPosition2.Dock = System.Windows.Forms.DockStyle.Fill - Me.TWPosition2.Enabled = False - Me.TWPosition2.LargeChange = 24 - Me.TWPosition2.Location = New System.Drawing.Point(30, 0) - Me.TWPosition2.Margin = New System.Windows.Forms.Padding(0) - Me.TWPosition2.Maximum = 960 - Me.TWPosition2.Name = "TWPosition2" - Me.TWPosition2.Size = New System.Drawing.Size(91, 28) - Me.TWPosition2.TabIndex = 406 - Me.TWPosition2.TickFrequency = 192 + 'ToolStripSeparator20 ' - 'TWPosition + Me.ToolStripSeparator20.Name = "ToolStripSeparator20" + Me.ToolStripSeparator20.Size = New System.Drawing.Size(250, 6) ' - Me.TWPosition.DecimalPlaces = 2 - Me.TWPosition.Dock = System.Windows.Forms.DockStyle.Fill - Me.TWPosition.Enabled = False - Me.TWPosition.Location = New System.Drawing.Point(121, 0) - Me.TWPosition.Margin = New System.Windows.Forms.Padding(0, 0, 3, 0) - Me.TWPosition.Maximum = New Decimal(New Integer() {192000, 0, 0, 0}) - Me.TWPosition.Name = "TWPosition" - Me.TWPosition.Size = New System.Drawing.Size(59, 23) - Me.TWPosition.TabIndex = 407 + 'mnGOptions ' - 'POWaveFormSwitch + Me.mnGOptions.Image = Global.iBMSC.My.Resources.Resources.x16GeneralOptions + Me.mnGOptions.Name = "mnGOptions" + Me.mnGOptions.ShortcutKeys = System.Windows.Forms.Keys.F10 + Me.mnGOptions.Size = New System.Drawing.Size(253, 22) + Me.mnGOptions.Text = "&General Options" ' - Me.POWaveFormSwitch.Appearance = System.Windows.Forms.Appearance.Button - Me.POWaveFormSwitch.BackColor = System.Drawing.SystemColors.Control - Me.POWaveFormSwitch.Cursor = System.Windows.Forms.Cursors.Hand - Me.POWaveFormSwitch.Dock = System.Windows.Forms.DockStyle.Top - Me.POWaveFormSwitch.Font = New System.Drawing.Font("Segoe UI", 9.0!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) - Me.POWaveFormSwitch.Location = New System.Drawing.Point(0, 0) - Me.POWaveFormSwitch.Name = "POWaveFormSwitch" - Me.POWaveFormSwitch.Size = New System.Drawing.Size(183, 20) - Me.POWaveFormSwitch.TabIndex = 401 - Me.POWaveFormSwitch.TabStop = False - Me.POWaveFormSwitch.Text = "WaveForm" - Me.POWaveFormSwitch.TextAlign = System.Drawing.ContentAlignment.MiddleCenter - Me.POWaveFormSwitch.UseCompatibleTextRendering = True - Me.POWaveFormSwitch.UseVisualStyleBackColor = False + 'mnVOptions ' - 'POGrid + Me.mnVOptions.Image = Global.iBMSC.My.Resources.Resources.x16VisualOptions + Me.mnVOptions.Name = "mnVOptions" + Me.mnVOptions.ShortcutKeys = System.Windows.Forms.Keys.F12 + Me.mnVOptions.Size = New System.Drawing.Size(253, 22) + Me.mnVOptions.Text = "&Visual Options" ' - Me.POGrid.AutoSize = True - Me.POGrid.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink - Me.POGrid.Controls.Add(Me.POGridInner) - Me.POGrid.Controls.Add(Me.POGridSwitch) - Me.POGrid.Dock = System.Windows.Forms.DockStyle.Top - Me.POGrid.Location = New System.Drawing.Point(0, 439) - Me.POGrid.Name = "POGrid" - Me.POGrid.Size = New System.Drawing.Size(183, 230) - Me.POGrid.TabIndex = 2 + 'mnVCOptions ' - 'POGridInner + Me.mnVCOptions.Image = Global.iBMSC.My.Resources.Resources.x16VisualOptions + Me.mnVCOptions.Name = "mnVCOptions" + Me.mnVCOptions.ShortcutKeys = CType((System.Windows.Forms.Keys.Shift Or System.Windows.Forms.Keys.F12), System.Windows.Forms.Keys) + Me.mnVCOptions.Size = New System.Drawing.Size(253, 22) + Me.mnVCOptions.Text = "C&olor Override Options" ' - Me.POGridInner.AutoSize = True - Me.POGridInner.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink - Me.POGridInner.Controls.Add(Me.POGridPart2) - Me.POGridInner.Controls.Add(Me.POGridExpander) - Me.POGridInner.Controls.Add(Me.POGridPart1) - Me.POGridInner.Dock = System.Windows.Forms.DockStyle.Top - Me.POGridInner.Location = New System.Drawing.Point(0, 20) - Me.POGridInner.Name = "POGridInner" - Me.POGridInner.Size = New System.Drawing.Size(183, 210) - Me.POGridInner.TabIndex = 3 + 'mnPOptions ' - 'POGridPart2 + Me.mnPOptions.Image = Global.iBMSC.My.Resources.Resources.x16PlayerOptions + Me.mnPOptions.Name = "mnPOptions" + Me.mnPOptions.ShortcutKeys = System.Windows.Forms.Keys.F9 + Me.mnPOptions.Size = New System.Drawing.Size(253, 22) + Me.mnPOptions.Text = "&Player Options" ' - Me.POGridPart2.AutoSize = True - Me.POGridPart2.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink - Me.POGridPart2.ColumnCount = 1 - Me.POGridPart2.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100.0!)) - Me.POGridPart2.Controls.Add(Me.TableLayoutPanel5, 0, 1) - Me.POGridPart2.Controls.Add(Me.TableLayoutPanel4, 0, 0) - Me.POGridPart2.Dock = System.Windows.Forms.DockStyle.Top - Me.POGridPart2.Location = New System.Drawing.Point(0, 152) - Me.POGridPart2.Name = "POGridPart2" - Me.POGridPart2.RowCount = 2 - Me.POGridPart2.RowStyles.Add(New System.Windows.Forms.RowStyle()) - Me.POGridPart2.RowStyles.Add(New System.Windows.Forms.RowStyle()) - Me.POGridPart2.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20.0!)) - Me.POGridPart2.Size = New System.Drawing.Size(183, 58) - Me.POGridPart2.TabIndex = 0 + 'mnConversion ' - 'TableLayoutPanel5 + Me.mnConversion.DropDown = Me.cmnConversion + Me.mnConversion.Name = "mnConversion" + Me.mnConversion.Size = New System.Drawing.Size(84, 19) + Me.mnConversion.Text = "&Conversions" ' - Me.TableLayoutPanel5.AutoSize = True - Me.TableLayoutPanel5.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink - Me.TableLayoutPanel5.ColumnCount = 2 - Me.TableLayoutPanel5.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle()) - Me.TableLayoutPanel5.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100.0!)) - Me.TableLayoutPanel5.Controls.Add(Me.FlowLayoutPanel2, 1, 0) - Me.TableLayoutPanel5.Controls.Add(Me.Label5, 0, 0) - Me.TableLayoutPanel5.Dock = System.Windows.Forms.DockStyle.Fill - Me.TableLayoutPanel5.Location = New System.Drawing.Point(0, 29) - Me.TableLayoutPanel5.Margin = New System.Windows.Forms.Padding(0) - Me.TableLayoutPanel5.Name = "TableLayoutPanel5" - Me.TableLayoutPanel5.RowCount = 1 - Me.TableLayoutPanel5.RowStyles.Add(New System.Windows.Forms.RowStyle()) - Me.TableLayoutPanel5.Size = New System.Drawing.Size(183, 29) - Me.TableLayoutPanel5.TabIndex = 46 + 'cmnConversion ' - 'FlowLayoutPanel2 + Me.cmnConversion.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.POBLong, Me.POBShort, Me.POBLongShort, Me.ToolStripSeparator10, Me.POBHidden, Me.POBVisible, Me.POBHiddenVisible, Me.ToolStripSeparator11, Me.POBModify, Me.POBMirror, Me.POBFlip, Me.POBRandom, Me.POBSRandom, Me.POBSort}) + Me.cmnConversion.Name = "cmnLanguage" + Me.cmnConversion.OwnerItem = Me.POConvert + Me.cmnConversion.Size = New System.Drawing.Size(222, 280) ' - Me.FlowLayoutPanel2.AutoSize = True - Me.FlowLayoutPanel2.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink - Me.FlowLayoutPanel2.Controls.Add(Me.cVSLockL) - Me.FlowLayoutPanel2.Controls.Add(Me.cVSLock) - Me.FlowLayoutPanel2.Controls.Add(Me.cVSLockR) - Me.FlowLayoutPanel2.Location = New System.Drawing.Point(114, 3) - Me.FlowLayoutPanel2.Name = "FlowLayoutPanel2" - Me.FlowLayoutPanel2.Size = New System.Drawing.Size(66, 23) - Me.FlowLayoutPanel2.TabIndex = 72 - Me.FlowLayoutPanel2.WrapContents = False + 'POBLong ' - 'cVSLockL + Me.POBLong.Enabled = False + Me.POBLong.Image = Global.iBMSC.My.Resources.Resources.ConvertNotesL + Me.POBLong.Name = "POBLong" + Me.POBLong.Size = New System.Drawing.Size(221, 22) + Me.POBLong.Text = "→ &Long Note" ' - Me.cVSLockL.Appearance = System.Windows.Forms.Appearance.Button - Me.cVSLockL.FlatStyle = System.Windows.Forms.FlatStyle.Popup - Me.cVSLockL.Image = Global.iBMSC.My.Resources.Resources.x16Lock - Me.cVSLockL.Location = New System.Drawing.Point(0, 0) - Me.cVSLockL.Margin = New System.Windows.Forms.Padding(0) - Me.cVSLockL.Name = "cVSLockL" - Me.cVSLockL.Size = New System.Drawing.Size(23, 23) - Me.cVSLockL.TabIndex = 303 - Me.cVSLockL.Tag = "0" - Me.ToolTipUniversal.SetToolTip(Me.cVSLockL, "Lock Left Editing Panel") + 'POBShort ' - 'cVSLock + Me.POBShort.Image = Global.iBMSC.My.Resources.Resources.ConvertNotesN + Me.POBShort.Name = "POBShort" + Me.POBShort.Size = New System.Drawing.Size(221, 22) + Me.POBShort.Text = "→ &Short Note" ' - Me.cVSLock.Appearance = System.Windows.Forms.Appearance.Button - Me.cVSLock.FlatStyle = System.Windows.Forms.FlatStyle.Popup - Me.cVSLock.Image = Global.iBMSC.My.Resources.Resources.x16Lock - Me.cVSLock.Location = New System.Drawing.Point(23, 0) - Me.cVSLock.Margin = New System.Windows.Forms.Padding(0) - Me.cVSLock.Name = "cVSLock" - Me.cVSLock.Size = New System.Drawing.Size(23, 23) - Me.cVSLock.TabIndex = 304 - Me.cVSLock.Tag = "1" - Me.ToolTipUniversal.SetToolTip(Me.cVSLock, "Lock Middle Editing Panel") + 'POBLongShort ' - 'cVSLockR + Me.POBLongShort.Enabled = False + Me.POBLongShort.Image = Global.iBMSC.My.Resources.Resources.ConvertNotes + Me.POBLongShort.Name = "POBLongShort" + Me.POBLongShort.Size = New System.Drawing.Size(221, 22) + Me.POBLongShort.Text = "Long Note ↔ Short Note" ' - Me.cVSLockR.Appearance = System.Windows.Forms.Appearance.Button - Me.cVSLockR.FlatStyle = System.Windows.Forms.FlatStyle.Popup - Me.cVSLockR.Image = Global.iBMSC.My.Resources.Resources.x16Lock - Me.cVSLockR.Location = New System.Drawing.Point(46, 0) - Me.cVSLockR.Margin = New System.Windows.Forms.Padding(0) - Me.cVSLockR.Name = "cVSLockR" - Me.cVSLockR.Size = New System.Drawing.Size(23, 23) - Me.cVSLockR.TabIndex = 305 - Me.cVSLockR.Tag = "2" - Me.ToolTipUniversal.SetToolTip(Me.cVSLockR, "Lock Right Editing Panel") + 'ToolStripSeparator10 ' - 'Label5 + Me.ToolStripSeparator10.Name = "ToolStripSeparator10" + Me.ToolStripSeparator10.Size = New System.Drawing.Size(218, 6) ' - Me.Label5.AutoSize = True - Me.Label5.Dock = System.Windows.Forms.DockStyle.Fill - Me.Label5.Location = New System.Drawing.Point(3, 0) - Me.Label5.Name = "Label5" - Me.Label5.Size = New System.Drawing.Size(105, 29) - Me.Label5.TabIndex = 303 - Me.Label5.Text = "Vertical Scroll Lock" - Me.Label5.TextAlign = System.Drawing.ContentAlignment.MiddleRight + 'POBHidden ' - 'TableLayoutPanel4 + Me.POBHidden.Image = Global.iBMSC.My.Resources.Resources.ConvertNotesH + Me.POBHidden.Name = "POBHidden" + Me.POBHidden.Size = New System.Drawing.Size(221, 22) + Me.POBHidden.Text = "→ &Hidden Note" ' - Me.TableLayoutPanel4.AutoSize = True - Me.TableLayoutPanel4.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink - Me.TableLayoutPanel4.ColumnCount = 2 - Me.TableLayoutPanel4.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle()) - Me.TableLayoutPanel4.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100.0!)) - Me.TableLayoutPanel4.Controls.Add(Me.Label1, 0, 0) - Me.TableLayoutPanel4.Controls.Add(Me.CGB, 1, 0) - Me.TableLayoutPanel4.Dock = System.Windows.Forms.DockStyle.Fill - Me.TableLayoutPanel4.Location = New System.Drawing.Point(0, 0) - Me.TableLayoutPanel4.Margin = New System.Windows.Forms.Padding(0) - Me.TableLayoutPanel4.Name = "TableLayoutPanel4" - Me.TableLayoutPanel4.RowCount = 1 - Me.TableLayoutPanel4.RowStyles.Add(New System.Windows.Forms.RowStyle()) - Me.TableLayoutPanel4.Size = New System.Drawing.Size(183, 29) - Me.TableLayoutPanel4.TabIndex = 44 + 'POBVisible ' - 'Label1 + Me.POBVisible.Image = Global.iBMSC.My.Resources.Resources.ConvertNotesV + Me.POBVisible.Name = "POBVisible" + Me.POBVisible.Size = New System.Drawing.Size(221, 22) + Me.POBVisible.Text = "→ &Visible Note" ' - Me.Label1.AutoSize = True - Me.Label1.Dock = System.Windows.Forms.DockStyle.Fill - Me.Label1.Location = New System.Drawing.Point(3, 0) - Me.Label1.Name = "Label1" - Me.Label1.Size = New System.Drawing.Size(126, 29) - Me.Label1.TabIndex = 302 - Me.Label1.Text = "Number of B Columns" - Me.Label1.TextAlign = System.Drawing.ContentAlignment.MiddleRight + 'POBHiddenVisible ' - 'CGB + Me.POBHiddenVisible.Image = Global.iBMSC.My.Resources.Resources.ConvertNotesHV + Me.POBHiddenVisible.Name = "POBHiddenVisible" + Me.POBHiddenVisible.Size = New System.Drawing.Size(221, 22) + Me.POBHiddenVisible.Text = "Hidden Note ↔ Visible Note" ' - Me.CGB.Dock = System.Windows.Forms.DockStyle.Fill - Me.CGB.Location = New System.Drawing.Point(135, 3) - Me.CGB.Maximum = New Decimal(New Integer() {999, 0, 0, 0}) - Me.CGB.Minimum = New Decimal(New Integer() {1, 0, 0, 0}) - Me.CGB.Name = "CGB" - Me.CGB.Size = New System.Drawing.Size(45, 23) - Me.CGB.TabIndex = 302 - Me.CGB.Value = New Decimal(New Integer() {15, 0, 0, 0}) + 'ToolStripSeparator11 ' - 'POGridExpander + Me.ToolStripSeparator11.Name = "ToolStripSeparator11" + Me.ToolStripSeparator11.Size = New System.Drawing.Size(218, 6) ' - Me.POGridExpander.Appearance = System.Windows.Forms.Appearance.Button - Me.POGridExpander.AutoSize = True - Me.POGridExpander.Cursor = System.Windows.Forms.Cursors.Hand - Me.POGridExpander.Dock = System.Windows.Forms.DockStyle.Top - Me.POGridExpander.FlatAppearance.BorderSize = 0 - Me.POGridExpander.FlatStyle = System.Windows.Forms.FlatStyle.Popup - Me.POGridExpander.Location = New System.Drawing.Point(0, 127) - Me.POGridExpander.Margin = New System.Windows.Forms.Padding(0) - Me.POGridExpander.Name = "POGridExpander" - Me.POGridExpander.Size = New System.Drawing.Size(183, 25) - Me.POGridExpander.TabIndex = 301 - Me.POGridExpander.TabStop = False - Me.POGridExpander.Text = "Expand..." - Me.POGridExpander.TextAlign = System.Drawing.ContentAlignment.MiddleCenter - Me.POGridExpander.UseVisualStyleBackColor = False + 'POBModify ' - 'POGridPart1 + Me.POBModify.Image = Global.iBMSC.My.Resources.Resources.x16ModifyLabel + Me.POBModify.Name = "POBModify" + Me.POBModify.Size = New System.Drawing.Size(221, 22) + Me.POBModify.Text = "Modify &Labels" ' - Me.POGridPart1.AutoSize = True - Me.POGridPart1.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink - Me.POGridPart1.ColumnCount = 1 - Me.POGridPart1.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100.0!)) - Me.POGridPart1.Controls.Add(Me.TableLayoutPanel3, 0, 1) - Me.POGridPart1.Controls.Add(Me.CGDisableVertical, 0, 3) - Me.POGridPart1.Controls.Add(Me.CGSnap, 0, 2) - Me.POGridPart1.Controls.Add(Me.TableLayoutPanel2, 0, 0) - Me.POGridPart1.Dock = System.Windows.Forms.DockStyle.Top - Me.POGridPart1.Location = New System.Drawing.Point(0, 0) - Me.POGridPart1.Name = "POGridPart1" - Me.POGridPart1.RowCount = 4 - Me.POGridPart1.RowStyles.Add(New System.Windows.Forms.RowStyle()) - Me.POGridPart1.RowStyles.Add(New System.Windows.Forms.RowStyle()) - Me.POGridPart1.RowStyles.Add(New System.Windows.Forms.RowStyle()) - Me.POGridPart1.RowStyles.Add(New System.Windows.Forms.RowStyle()) - Me.POGridPart1.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20.0!)) - Me.POGridPart1.Size = New System.Drawing.Size(183, 127) - Me.POGridPart1.TabIndex = 11 + 'POBMirror ' - 'TableLayoutPanel3 + Me.POBMirror.Image = Global.iBMSC.My.Resources.Resources.x16Mirror + Me.POBMirror.Name = "POBMirror" + Me.POBMirror.Size = New System.Drawing.Size(221, 22) + Me.POBMirror.Text = "&Mirror" ' - Me.TableLayoutPanel3.AutoSize = True - Me.TableLayoutPanel3.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink - Me.TableLayoutPanel3.ColumnCount = 3 - Me.TableLayoutPanel3.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle()) - Me.TableLayoutPanel3.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 70.0!)) - Me.TableLayoutPanel3.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 30.0!)) - Me.TableLayoutPanel3.Controls.Add(Me.PictureBox9, 0, 0) - Me.TableLayoutPanel3.Controls.Add(Me.CGHeight2, 1, 0) - Me.TableLayoutPanel3.Controls.Add(Me.CGHeight, 2, 0) - Me.TableLayoutPanel3.Controls.Add(Me.PictureBox10, 0, 1) - Me.TableLayoutPanel3.Controls.Add(Me.CGWidth2, 1, 1) - Me.TableLayoutPanel3.Controls.Add(Me.CGWidth, 2, 1) - Me.TableLayoutPanel3.Dock = System.Windows.Forms.DockStyle.Fill - Me.TableLayoutPanel3.Location = New System.Drawing.Point(0, 30) - Me.TableLayoutPanel3.Margin = New System.Windows.Forms.Padding(0) - Me.TableLayoutPanel3.Name = "TableLayoutPanel3" - Me.TableLayoutPanel3.RowCount = 2 - Me.TableLayoutPanel3.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 28.0!)) - Me.TableLayoutPanel3.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 28.0!)) - Me.TableLayoutPanel3.Size = New System.Drawing.Size(183, 56) - Me.TableLayoutPanel3.TabIndex = 12 - ' - 'PictureBox9 + 'POBFlip ' - Me.PictureBox9.Image = Global.iBMSC.My.Resources.Resources.lgheight - Me.PictureBox9.Location = New System.Drawing.Point(3, 0) - Me.PictureBox9.Margin = New System.Windows.Forms.Padding(3, 0, 3, 0) - Me.PictureBox9.Name = "PictureBox9" - Me.PictureBox9.Size = New System.Drawing.Size(24, 24) - Me.PictureBox9.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize - Me.PictureBox9.TabIndex = 27 - Me.PictureBox9.TabStop = False + Me.POBFlip.Image = Global.iBMSC.My.Resources.Resources.x16Flip + Me.POBFlip.Name = "POBFlip" + Me.POBFlip.Size = New System.Drawing.Size(221, 22) + Me.POBFlip.Text = "&Flip" ' - 'CGHeight2 + 'POBRandom ' - Me.CGHeight2.Dock = System.Windows.Forms.DockStyle.Fill - Me.CGHeight2.LargeChange = 4 - Me.CGHeight2.Location = New System.Drawing.Point(30, 0) - Me.CGHeight2.Margin = New System.Windows.Forms.Padding(0) - Me.CGHeight2.Maximum = 20 - Me.CGHeight2.Minimum = 1 - Me.CGHeight2.Name = "CGHeight2" - Me.CGHeight2.Size = New System.Drawing.Size(107, 28) - Me.CGHeight2.TabIndex = 205 - Me.CGHeight2.TickFrequency = 2 - Me.CGHeight2.Value = 4 + Me.POBRandom.Image = Global.iBMSC.My.Resources.Resources.x16Mirror + Me.POBRandom.Name = "POBRandom" + Me.POBRandom.Size = New System.Drawing.Size(221, 22) + Me.POBRandom.Text = "&Random" ' - 'CGHeight + 'POBSRandom ' - Me.CGHeight.DecimalPlaces = 2 - Me.CGHeight.Dock = System.Windows.Forms.DockStyle.Fill - Me.CGHeight.Increment = New Decimal(New Integer() {25, 0, 0, 131072}) - Me.CGHeight.Location = New System.Drawing.Point(137, 0) - Me.CGHeight.Margin = New System.Windows.Forms.Padding(0, 0, 3, 0) - Me.CGHeight.Maximum = New Decimal(New Integer() {99, 0, 0, 0}) - Me.CGHeight.Minimum = New Decimal(New Integer() {25, 0, 0, 131072}) - Me.CGHeight.Name = "CGHeight" - Me.CGHeight.Size = New System.Drawing.Size(43, 23) - Me.CGHeight.TabIndex = 206 - Me.CGHeight.Value = New Decimal(New Integer() {1, 0, 0, 0}) + Me.POBSRandom.Image = Global.iBMSC.My.Resources.Resources.x16Mirror + Me.POBSRandom.Name = "POBSRandom" + Me.POBSRandom.Size = New System.Drawing.Size(221, 22) + Me.POBSRandom.Text = "S-R&andom" ' - 'PictureBox10 + 'POBSort ' - Me.PictureBox10.Image = Global.iBMSC.My.Resources.Resources.lgwidth - Me.PictureBox10.Location = New System.Drawing.Point(3, 28) - Me.PictureBox10.Margin = New System.Windows.Forms.Padding(3, 0, 3, 0) - Me.PictureBox10.Name = "PictureBox10" - Me.PictureBox10.Size = New System.Drawing.Size(24, 24) - Me.PictureBox10.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize - Me.PictureBox10.TabIndex = 28 - Me.PictureBox10.TabStop = False + Me.POBSort.Image = Global.iBMSC.My.Resources.Resources.lgwidth + Me.POBSort.Name = "POBSort" + Me.POBSort.Size = New System.Drawing.Size(221, 22) + Me.POBSort.Text = "S&ort" ' - 'CGWidth2 + 'mnPreview ' - Me.CGWidth2.Dock = System.Windows.Forms.DockStyle.Fill - Me.CGWidth2.LargeChange = 4 - Me.CGWidth2.Location = New System.Drawing.Point(30, 28) - Me.CGWidth2.Margin = New System.Windows.Forms.Padding(0) - Me.CGWidth2.Maximum = 20 - Me.CGWidth2.Minimum = 1 - Me.CGWidth2.Name = "CGWidth2" - Me.CGWidth2.Size = New System.Drawing.Size(107, 28) - Me.CGWidth2.TabIndex = 207 - Me.CGWidth2.TickFrequency = 2 - Me.CGWidth2.Value = 4 + Me.mnPreview.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.mnPlayB, Me.mnPlay, Me.mnStop}) + Me.mnPreview.Name = "mnPreview" + Me.mnPreview.Size = New System.Drawing.Size(60, 19) + Me.mnPreview.Text = "&Preview" ' - 'CGWidth + 'mnPlayB ' - Me.CGWidth.DecimalPlaces = 2 - Me.CGWidth.Dock = System.Windows.Forms.DockStyle.Fill - Me.CGWidth.Increment = New Decimal(New Integer() {25, 0, 0, 131072}) - Me.CGWidth.Location = New System.Drawing.Point(137, 28) - Me.CGWidth.Margin = New System.Windows.Forms.Padding(0, 0, 3, 0) - Me.CGWidth.Maximum = New Decimal(New Integer() {99, 0, 0, 0}) - Me.CGWidth.Minimum = New Decimal(New Integer() {25, 0, 0, 131072}) - Me.CGWidth.Name = "CGWidth" - Me.CGWidth.Size = New System.Drawing.Size(43, 23) - Me.CGWidth.TabIndex = 208 - Me.CGWidth.Value = New Decimal(New Integer() {1, 0, 0, 0}) + Me.mnPlayB.Image = Global.iBMSC.My.Resources.Resources.x16PlayB + Me.mnPlayB.Name = "mnPlayB" + Me.mnPlayB.ShortcutKeys = System.Windows.Forms.Keys.F5 + Me.mnPlayB.Size = New System.Drawing.Size(201, 22) + Me.mnPlayB.Text = "Play from &beginning" ' - 'CGDisableVertical + 'mnPlay ' - Me.CGDisableVertical.AutoSize = True - Me.CGDisableVertical.Location = New System.Drawing.Point(3, 108) - Me.CGDisableVertical.Margin = New System.Windows.Forms.Padding(3, 0, 3, 0) - Me.CGDisableVertical.Name = "CGDisableVertical" - Me.CGDisableVertical.Size = New System.Drawing.Size(162, 19) - Me.CGDisableVertical.TabIndex = 210 - Me.CGDisableVertical.Text = "Disable vertical moves (D)" - Me.CGDisableVertical.UseVisualStyleBackColor = True + Me.mnPlay.Image = Global.iBMSC.My.Resources.Resources.x16Play + Me.mnPlay.Name = "mnPlay" + Me.mnPlay.ShortcutKeys = System.Windows.Forms.Keys.F6 + Me.mnPlay.Size = New System.Drawing.Size(201, 22) + Me.mnPlay.Text = "&Play from here" ' - 'CGSnap + 'mnStop ' - Me.CGSnap.AutoSize = True - Me.CGSnap.Checked = True - Me.CGSnap.CheckState = System.Windows.Forms.CheckState.Checked - Me.CGSnap.Location = New System.Drawing.Point(3, 89) - Me.CGSnap.Margin = New System.Windows.Forms.Padding(3, 3, 3, 0) - Me.CGSnap.Name = "CGSnap" - Me.CGSnap.Size = New System.Drawing.Size(109, 19) - Me.CGSnap.TabIndex = 209 - Me.CGSnap.Text = "Snap to grid (G)" - Me.CGSnap.UseVisualStyleBackColor = True + Me.mnStop.Image = Global.iBMSC.My.Resources.Resources.x16Stop + Me.mnStop.Name = "mnStop" + Me.mnStop.ShortcutKeys = System.Windows.Forms.Keys.F7 + Me.mnStop.Size = New System.Drawing.Size(201, 22) + Me.mnStop.Text = "&Stop" ' - 'TableLayoutPanel2 + 'POConvert ' - Me.TableLayoutPanel2.AutoSize = True - Me.TableLayoutPanel2.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink - Me.TableLayoutPanel2.ColumnCount = 4 - Me.TableLayoutPanel2.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle()) - Me.TableLayoutPanel2.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50.0!)) - Me.TableLayoutPanel2.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50.0!)) - Me.TableLayoutPanel2.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle()) - Me.TableLayoutPanel2.Controls.Add(Me.PictureBox7, 0, 0) - Me.TableLayoutPanel2.Controls.Add(Me.CGDivide, 1, 0) - Me.TableLayoutPanel2.Controls.Add(Me.CGSub, 2, 0) - Me.TableLayoutPanel2.Controls.Add(Me.BGSlash, 3, 0) - Me.TableLayoutPanel2.Dock = System.Windows.Forms.DockStyle.Fill - Me.TableLayoutPanel2.Location = New System.Drawing.Point(0, 0) - Me.TableLayoutPanel2.Margin = New System.Windows.Forms.Padding(0) - Me.TableLayoutPanel2.Name = "TableLayoutPanel2" - Me.TableLayoutPanel2.RowCount = 1 - Me.TableLayoutPanel2.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100.0!)) - Me.TableLayoutPanel2.Size = New System.Drawing.Size(183, 30) - Me.TableLayoutPanel2.TabIndex = 11 + Me.POConvert.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image + Me.POConvert.DropDown = Me.cmnConversion + Me.POConvert.Image = Global.iBMSC.My.Resources.Resources.ConvertNotes + Me.POConvert.ImageTransparentColor = System.Drawing.Color.Magenta + Me.POConvert.Name = "POConvert" + Me.POConvert.Size = New System.Drawing.Size(29, 22) + Me.POConvert.Text = "Convert Notes" ' - 'PictureBox7 + 'TBMain ' - Me.PictureBox7.Anchor = System.Windows.Forms.AnchorStyles.None - Me.PictureBox7.Image = Global.iBMSC.My.Resources.Resources.lgpartition - Me.PictureBox7.Location = New System.Drawing.Point(3, 3) - Me.PictureBox7.Name = "PictureBox7" - Me.PictureBox7.Size = New System.Drawing.Size(24, 24) - Me.PictureBox7.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize - Me.PictureBox7.TabIndex = 25 - Me.PictureBox7.TabStop = False + Me.TBMain.AccessibleRole = System.Windows.Forms.AccessibleRole.ToolBar + Me.TBMain.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch + Me.TBMain.Dock = System.Windows.Forms.DockStyle.None + Me.TBMain.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.TBNew, Me.TBOpen, Me.TBSave, Me.ToolStripSeparator1, Me.TBCut, Me.TBCopy, Me.TBPaste, Me.TBFind, Me.ToolStripSeparator24, Me.TBStatistics, Me.POConvert, Me.TBMyO2, Me.ToolStripSeparator4, Me.TBErrorCheck, Me.TBPreviewOnClick, Me.TBShowFileName, Me.ToolStripSeparator8, Me.TBNTInput, Me.TBWavIncrease, Me.ToolStripSeparator2, Me.TBUndo, Me.TBRedo, Me.ToolStripSeparator5, Me.TBTimeSelect, Me.TBSelect, Me.TBWrite, Me.ToolStripSeparator3, Me.TBPlayB, Me.TBPlay, Me.TBStop, Me.TBPOptions, Me.ToolStripSeparator7, Me.TBVOptions, Me.TBGOptions, Me.TBLanguage, Me.TBTheme, Me.POBStorm, Me.TBTotalValue}) + Me.TBMain.Location = New System.Drawing.Point(3, 23) + Me.TBMain.Name = "TBMain" + Me.TBMain.Size = New System.Drawing.Size(764, 25) + Me.TBMain.TabIndex = 64 + Me.TBMain.Text = "Main Toolbar" ' - 'CGDivide + 'TBNew ' - Me.CGDivide.Dock = System.Windows.Forms.DockStyle.Fill - Me.CGDivide.Location = New System.Drawing.Point(33, 3) - Me.CGDivide.Maximum = New Decimal(New Integer() {1920, 0, 0, 0}) - Me.CGDivide.Minimum = New Decimal(New Integer() {1, 0, 0, 0}) - Me.CGDivide.Name = "CGDivide" - Me.CGDivide.Size = New System.Drawing.Size(58, 23) - Me.CGDivide.TabIndex = 202 - Me.CGDivide.Value = New Decimal(New Integer() {16, 0, 0, 0}) + Me.TBNew.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image + Me.TBNew.Image = Global.iBMSC.My.Resources.Resources.x16New + Me.TBNew.ImageTransparentColor = System.Drawing.Color.Transparent + Me.TBNew.Name = "TBNew" + Me.TBNew.Size = New System.Drawing.Size(23, 22) + Me.TBNew.Text = "New (Ctrl+N)" ' - 'CGSub + 'TBOpen ' - Me.CGSub.Dock = System.Windows.Forms.DockStyle.Fill - Me.CGSub.Location = New System.Drawing.Point(97, 3) - Me.CGSub.Maximum = New Decimal(New Integer() {1920, 0, 0, 0}) - Me.CGSub.Minimum = New Decimal(New Integer() {1, 0, 0, 0}) - Me.CGSub.Name = "CGSub" - Me.CGSub.Size = New System.Drawing.Size(58, 23) - Me.CGSub.TabIndex = 203 - Me.CGSub.Value = New Decimal(New Integer() {4, 0, 0, 0}) + Me.TBOpen.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image + Me.TBOpen.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.TBOpenR0, Me.TBOpenR1, Me.TBOpenR2, Me.TBOpenR3, Me.TBOpenR4, Me.ToolStripSeparator12, Me.TBImportSM, Me.TBImportIBMSC}) + Me.TBOpen.Image = Global.iBMSC.My.Resources.Resources.x16Open + Me.TBOpen.ImageTransparentColor = System.Drawing.Color.Magenta + Me.TBOpen.Name = "TBOpen" + Me.TBOpen.Size = New System.Drawing.Size(32, 22) + Me.TBOpen.Text = "Open (Ctrl+O)" ' - 'BGSlash + 'TBOpenR0 ' - Me.BGSlash.Anchor = System.Windows.Forms.AnchorStyles.None - Me.BGSlash.Image = Global.iBMSC.My.Resources.Resources.Shortcut - Me.BGSlash.Location = New System.Drawing.Point(158, 4) - Me.BGSlash.Margin = New System.Windows.Forms.Padding(0, 0, 3, 0) - Me.BGSlash.Name = "BGSlash" - Me.BGSlash.Size = New System.Drawing.Size(22, 22) - Me.BGSlash.TabIndex = 204 - Me.BGSlash.UseVisualStyleBackColor = True + Me.TBOpenR0.Enabled = False + Me.TBOpenR0.Name = "TBOpenR0" + Me.TBOpenR0.Size = New System.Drawing.Size(199, 22) + Me.TBOpenR0.Tag = "0" + Me.TBOpenR0.Text = "Recent #0" ' - 'POGridSwitch + 'TBOpenR1 ' - Me.POGridSwitch.Appearance = System.Windows.Forms.Appearance.Button - Me.POGridSwitch.BackColor = System.Drawing.SystemColors.Control - Me.POGridSwitch.Checked = True - Me.POGridSwitch.CheckState = System.Windows.Forms.CheckState.Checked - Me.POGridSwitch.Cursor = System.Windows.Forms.Cursors.Hand - Me.POGridSwitch.Dock = System.Windows.Forms.DockStyle.Top - Me.POGridSwitch.Font = New System.Drawing.Font("Segoe UI", 9.0!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) - Me.POGridSwitch.Location = New System.Drawing.Point(0, 0) - Me.POGridSwitch.Name = "POGridSwitch" - Me.POGridSwitch.Size = New System.Drawing.Size(183, 20) - Me.POGridSwitch.TabIndex = 201 - Me.POGridSwitch.TabStop = False - Me.POGridSwitch.Text = "Grid" - Me.POGridSwitch.TextAlign = System.Drawing.ContentAlignment.MiddleCenter - Me.POGridSwitch.UseCompatibleTextRendering = True - Me.POGridSwitch.UseVisualStyleBackColor = False + Me.TBOpenR1.Enabled = False + Me.TBOpenR1.Name = "TBOpenR1" + Me.TBOpenR1.Size = New System.Drawing.Size(199, 22) + Me.TBOpenR1.Tag = "1" + Me.TBOpenR1.Text = "Recent #1" ' - 'POHeader + 'TBOpenR2 ' - Me.POHeader.AutoSize = True - Me.POHeader.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink - Me.POHeader.Controls.Add(Me.POHeaderInner) - Me.POHeader.Controls.Add(Me.POHeaderSwitch) - Me.POHeader.Dock = System.Windows.Forms.DockStyle.Top - Me.POHeader.Location = New System.Drawing.Point(0, 0) - Me.POHeader.Name = "POHeader" - Me.POHeader.Size = New System.Drawing.Size(183, 439) - Me.POHeader.TabIndex = 1 + Me.TBOpenR2.Enabled = False + Me.TBOpenR2.Name = "TBOpenR2" + Me.TBOpenR2.Size = New System.Drawing.Size(199, 22) + Me.TBOpenR2.Tag = "2" + Me.TBOpenR2.Text = "Recent #2" ' - 'POHeaderInner + 'TBOpenR3 ' - Me.POHeaderInner.AutoSize = True - Me.POHeaderInner.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink - Me.POHeaderInner.Controls.Add(Me.POHeaderPart2) - Me.POHeaderInner.Controls.Add(Me.POHeaderExpander) - Me.POHeaderInner.Controls.Add(Me.POHeaderPart1) - Me.POHeaderInner.Dock = System.Windows.Forms.DockStyle.Top - Me.POHeaderInner.Location = New System.Drawing.Point(0, 20) - Me.POHeaderInner.Name = "POHeaderInner" - Me.POHeaderInner.Size = New System.Drawing.Size(183, 419) - Me.POHeaderInner.TabIndex = 2 + Me.TBOpenR3.Enabled = False + Me.TBOpenR3.Name = "TBOpenR3" + Me.TBOpenR3.Size = New System.Drawing.Size(199, 22) + Me.TBOpenR3.Tag = "3" + Me.TBOpenR3.Text = "Recent #3" ' - 'POHeaderPart2 + 'TBOpenR4 ' - Me.POHeaderPart2.AutoSize = True - Me.POHeaderPart2.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink - Me.POHeaderPart2.ColumnCount = 3 - Me.POHeaderPart2.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle()) - Me.POHeaderPart2.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100.0!)) - Me.POHeaderPart2.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle()) - Me.POHeaderPart2.Controls.Add(Me.CHDifficulty, 1, 5) - Me.POHeaderPart2.Controls.Add(Me.Label13, 2, 6) - Me.POHeaderPart2.Controls.Add(Me.THExRank, 1, 6) - Me.POHeaderPart2.Controls.Add(Me.Label25, 2, 7) - Me.POHeaderPart2.Controls.Add(Me.CHLnObj, 1, 9) - Me.POHeaderPart2.Controls.Add(Me.Label23, 0, 6) - Me.POHeaderPart2.Controls.Add(Me.Label21, 0, 5) - Me.POHeaderPart2.Controls.Add(Me.THComment, 1, 8) - Me.POHeaderPart2.Controls.Add(Me.Label24, 0, 9) - Me.POHeaderPart2.Controls.Add(Me.Label15, 0, 0) - Me.POHeaderPart2.Controls.Add(Me.THTotal, 1, 7) - Me.POHeaderPart2.Controls.Add(Me.Label20, 0, 7) - Me.POHeaderPart2.Controls.Add(Me.BHStageFile, 2, 2) - Me.POHeaderPart2.Controls.Add(Me.BHBanner, 2, 3) - Me.POHeaderPart2.Controls.Add(Me.Label19, 0, 8) - Me.POHeaderPart2.Controls.Add(Me.BHBackBMP, 2, 4) - Me.POHeaderPart2.Controls.Add(Me.Label17, 0, 1) - Me.POHeaderPart2.Controls.Add(Me.Label16, 0, 2) - Me.POHeaderPart2.Controls.Add(Me.Label12, 0, 3) - Me.POHeaderPart2.Controls.Add(Me.THBackBMP, 1, 4) - Me.POHeaderPart2.Controls.Add(Me.Label11, 0, 4) - Me.POHeaderPart2.Controls.Add(Me.THBanner, 1, 3) - Me.POHeaderPart2.Controls.Add(Me.THStageFile, 1, 2) - Me.POHeaderPart2.Controls.Add(Me.THSubTitle, 1, 0) - Me.POHeaderPart2.Controls.Add(Me.THSubArtist, 1, 1) - Me.POHeaderPart2.Dock = System.Windows.Forms.DockStyle.Top - Me.POHeaderPart2.Location = New System.Drawing.Point(0, 186) - Me.POHeaderPart2.Name = "POHeaderPart2" - Me.POHeaderPart2.RowCount = 10 - Me.POHeaderPart2.RowStyles.Add(New System.Windows.Forms.RowStyle()) - Me.POHeaderPart2.RowStyles.Add(New System.Windows.Forms.RowStyle()) - Me.POHeaderPart2.RowStyles.Add(New System.Windows.Forms.RowStyle()) - Me.POHeaderPart2.RowStyles.Add(New System.Windows.Forms.RowStyle()) - Me.POHeaderPart2.RowStyles.Add(New System.Windows.Forms.RowStyle()) - Me.POHeaderPart2.RowStyles.Add(New System.Windows.Forms.RowStyle()) - Me.POHeaderPart2.RowStyles.Add(New System.Windows.Forms.RowStyle()) - Me.POHeaderPart2.RowStyles.Add(New System.Windows.Forms.RowStyle()) - Me.POHeaderPart2.RowStyles.Add(New System.Windows.Forms.RowStyle()) - Me.POHeaderPart2.RowStyles.Add(New System.Windows.Forms.RowStyle()) - Me.POHeaderPart2.Size = New System.Drawing.Size(183, 233) - Me.POHeaderPart2.TabIndex = 27 + Me.TBOpenR4.Enabled = False + Me.TBOpenR4.Name = "TBOpenR4" + Me.TBOpenR4.Size = New System.Drawing.Size(199, 22) + Me.TBOpenR4.Tag = "4" + Me.TBOpenR4.Text = "Recent #4" ' - 'CHDifficulty + 'ToolStripSeparator12 ' - Me.POHeaderPart2.SetColumnSpan(Me.CHDifficulty, 2) - Me.CHDifficulty.Dock = System.Windows.Forms.DockStyle.Top - Me.CHDifficulty.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList - Me.CHDifficulty.FlatStyle = System.Windows.Forms.FlatStyle.System - Me.CHDifficulty.Items.AddRange(New Object() {"None", "1 - EZ / Beginner", "2 - NM / Normal", "3 - HD / Hyper", "4 - MX / Another", "5 - SC / Insane"}) - Me.CHDifficulty.Location = New System.Drawing.Point(67, 118) - Me.CHDifficulty.Margin = New System.Windows.Forms.Padding(0) - Me.CHDifficulty.Name = "CHDifficulty" - Me.CHDifficulty.Size = New System.Drawing.Size(116, 23) - Me.CHDifficulty.TabIndex = 110 + Me.ToolStripSeparator12.Name = "ToolStripSeparator12" + Me.ToolStripSeparator12.Size = New System.Drawing.Size(196, 6) ' - 'Label13 + 'TBImportSM ' - Me.Label13.AutoSize = True - Me.Label13.Dock = System.Windows.Forms.DockStyle.Fill - Me.Label13.Location = New System.Drawing.Point(158, 141) - Me.Label13.Margin = New System.Windows.Forms.Padding(3, 0, 0, 0) - Me.Label13.Name = "Label13" - Me.Label13.Size = New System.Drawing.Size(25, 23) - Me.Label13.TabIndex = 63 - Me.Label13.Text = "(%)" - Me.Label13.TextAlign = System.Drawing.ContentAlignment.MiddleLeft + Me.TBImportSM.Image = Global.iBMSC.My.Resources.Resources.x16Import2 + Me.TBImportSM.Name = "TBImportSM" + Me.TBImportSM.Size = New System.Drawing.Size(199, 22) + Me.TBImportSM.Text = "Import from .SM file" ' - 'THExRank + 'TBImportIBMSC ' - Me.THExRank.Dock = System.Windows.Forms.DockStyle.Fill - Me.THExRank.Location = New System.Drawing.Point(67, 141) - Me.THExRank.Margin = New System.Windows.Forms.Padding(0) - Me.THExRank.Name = "THExRank" - Me.THExRank.Size = New System.Drawing.Size(88, 23) - Me.THExRank.TabIndex = 111 + Me.TBImportIBMSC.Image = Global.iBMSC.My.Resources.Resources.x16Import2 + Me.TBImportIBMSC.Name = "TBImportIBMSC" + Me.TBImportIBMSC.Size = New System.Drawing.Size(199, 22) + Me.TBImportIBMSC.Text = "Import from .IBMSC file" ' - 'Label25 + 'TBSave ' - Me.Label25.AutoSize = True - Me.Label25.Dock = System.Windows.Forms.DockStyle.Fill - Me.Label25.Location = New System.Drawing.Point(158, 164) - Me.Label25.Margin = New System.Windows.Forms.Padding(3, 0, 0, 0) - Me.Label25.Name = "Label25" - Me.Label25.Size = New System.Drawing.Size(25, 23) - Me.Label25.TabIndex = 23 - Me.Label25.Text = "(%)" - Me.Label25.TextAlign = System.Drawing.ContentAlignment.MiddleLeft + Me.TBSave.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image + Me.TBSave.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.TBSaveAs, Me.TBExport}) + Me.TBSave.Image = Global.iBMSC.My.Resources.Resources.x16Save + Me.TBSave.ImageTransparentColor = System.Drawing.Color.Magenta + Me.TBSave.Name = "TBSave" + Me.TBSave.Size = New System.Drawing.Size(32, 22) + Me.TBSave.Text = "Save (Ctrl+S)" ' - 'CHLnObj + 'TBSaveAs ' - Me.POHeaderPart2.SetColumnSpan(Me.CHLnObj, 2) - Me.CHLnObj.Dock = System.Windows.Forms.DockStyle.Top - Me.CHLnObj.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList - Me.CHLnObj.FlatStyle = System.Windows.Forms.FlatStyle.System - Me.CHLnObj.Items.AddRange(New Object() {"None (#LnType 1)", "01", "02", "03", "04", "05", "06", "07", "08", "09", "0A", "0B", "0C", "0D", "0E", "0F", "0G", "0H", "0I", "0J", "0K", "0L", "0M", "0N", "0O", "0P", "0Q", "0R", "0S", "0T", "0U", "0V", "0W", "0X", "0Y", "0Z", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "1A", "1B", "1C", "1D", "1E", "1F", "1G", "1H", "1I", "1J", "1K", "1L", "1M", "1N", "1O", "1P", "1Q", "1R", "1S", "1T", "1U", "1V", "1W", "1X", "1Y", "1Z", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "2A", "2B", "2C", "2D", "2E", "2F", "2G", "2H", "2I", "2J", "2K", "2L", "2M", "2N", "2O", "2P", "2Q", "2R", "2S", "2T", "2U", "2V", "2W", "2X", "2Y", "2Z", "30", "31", "32", "33", "34", "35", "36", "37", "38", "39", "3A", "3B", "3C", "3D", "3E", "3F", "3G", "3H", "3I", "3J", "3K", "3L", "3M", "3N", "3O", "3P", "3Q", "3R", "3S", "3T", "3U", "3V", "3W", "3X", "3Y", "3Z", "40", "41", "42", "43", "44", "45", "46", "47", "48", "49", "4A", "4B", "4C", "4D", "4E", "4F", "4G", "4H", "4I", "4J", "4K", "4L", "4M", "4N", "4O", "4P", "4Q", "4R", "4S", "4T", "4U", "4V", "4W", "4X", "4Y", "4Z", "50", "51", "52", "53", "54", "55", "56", "57", "58", "59", "5A", "5B", "5C", "5D", "5E", "5F", "5G", "5H", "5I", "5J", "5K", "5L", "5M", "5N", "5O", "5P", "5Q", "5R", "5S", "5T", "5U", "5V", "5W", "5X", "5Y", "5Z", "60", "61", "62", "63", "64", "65", "66", "67", "68", "69", "6A", "6B", "6C", "6D", "6E", "6F", "6G", "6H", "6I", "6J", "6K", "6L", "6M", "6N", "6O", "6P", "6Q", "6R", "6S", "6T", "6U", "6V", "6W", "6X", "6Y", "6Z", "70", "71", "72", "73", "74", "75", "76", "77", "78", "79", "7A", "7B", "7C", "7D", "7E", "7F", "7G", "7H", "7I", "7J", "7K", "7L", "7M", "7N", "7O", "7P", "7Q", "7R", "7S", "7T", "7U", "7V", "7W", "7X", "7Y", "7Z", "80", "81", "82", "83", "84", "85", "86", "87", "88", "89", "8A", "8B", "8C", "8D", "8E", "8F", "8G", "8H", "8I", "8J", "8K", "8L", "8M", "8N", "8O", "8P", "8Q", "8R", "8S", "8T", "8U", "8V", "8W", "8X", "8Y", "8Z", "90", "91", "92", "93", "94", "95", "96", "97", "98", "99", "9A", "9B", "9C", "9D", "9E", "9F", "9G", "9H", "9I", "9J", "9K", "9L", "9M", "9N", "9O", "9P", "9Q", "9R", "9S", "9T", "9U", "9V", "9W", "9X", "9Y", "9Z", "A0", "A1", "A2", "A3", "A4", "A5", "A6", "A7", "A8", "A9", "AA", "AB", "AC", "AD", "AE", "AF", "AG", "AH", "AI", "AJ", "AK", "AL", "AM", "AN", "AO", "AP", "AQ", "AR", "AS", "AT", "AU", "AV", "AW", "AX", "AY", "AZ", "B0", "B1", "B2", "B3", "B4", "B5", "B6", "B7", "B8", "B9", "BA", "BB", "BC", "BD", "BE", "BF", "BG", "BH", "BI", "BJ", "BK", "BL", "BM", "BN", "BO", "BP", "BQ", "BR", "BS", "BT", "BU", "BV", "BW", "BX", "BY", "BZ", "C0", "C1", "C2", "C3", "C4", "C5", "C6", "C7", "C8", "C9", "CA", "CB", "CC", "CD", "CE", "CF", "CG", "CH", "CI", "CJ", "CK", "CL", "CM", "CN", "CO", "CP", "CQ", "CR", "CS", "CT", "CU", "CV", "CW", "CX", "CY", "CZ", "D0", "D1", "D2", "D3", "D4", "D5", "D6", "D7", "D8", "D9", "DA", "DB", "DC", "DD", "DE", "DF", "DG", "DH", "DI", "DJ", "DK", "DL", "DM", "DN", "DO", "DP", "DQ", "DR", "DS", "DT", "DU", "DV", "DW", "DX", "DY", "DZ", "E0", "E1", "E2", "E3", "E4", "E5", "E6", "E7", "E8", "E9", "EA", "EB", "EC", "ED", "EE", "EF", "EG", "EH", "EI", "EJ", "EK", "EL", "EM", "EN", "EO", "EP", "EQ", "ER", "ES", "ET", "EU", "EV", "EW", "EX", "EY", "EZ", "F0", "F1", "F2", "F3", "F4", "F5", "F6", "F7", "F8", "F9", "FA", "FB", "FC", "FD", "FE", "FF", "FG", "FH", "FI", "FJ", "FK", "FL", "FM", "FN", "FO", "FP", "FQ", "FR", "FS", "FT", "FU", "FV", "FW", "FX", "FY", "FZ", "G0", "G1", "G2", "G3", "G4", "G5", "G6", "G7", "G8", "G9", "GA", "GB", "GC", "GD", "GE", "GF", "GG", "GH", "GI", "GJ", "GK", "GL", "GM", "GN", "GO", "GP", "GQ", "GR", "GS", "GT", "GU", "GV", "GW", "GX", "GY", "GZ", "H0", "H1", "H2", "H3", "H4", "H5", "H6", "H7", "H8", "H9", "HA", "HB", "HC", "HD", "HE", "HF", "HG", "HH", "HI", "HJ", "HK", "HL", "HM", "HN", "HO", "HP", "HQ", "HR", "HS", "HT", "HU", "HV", "HW", "HX", "HY", "HZ", "I0", "I1", "I2", "I3", "I4", "I5", "I6", "I7", "I8", "I9", "IA", "IB", "IC", "ID", "IE", "IF", "IG", "IH", "II", "IJ", "IK", "IL", "IM", "IN", "IO", "IP", "IQ", "IR", "IS", "IT", "IU", "IV", "IW", "IX", "IY", "IZ", "J0", "J1", "J2", "J3", "J4", "J5", "J6", "J7", "J8", "J9", "JA", "JB", "JC", "JD", "JE", "JF", "JG", "JH", "JI", "JJ", "JK", "JL", "JM", "JN", "JO", "JP", "JQ", "JR", "JS", "JT", "JU", "JV", "JW", "JX", "JY", "JZ", "K0", "K1", "K2", "K3", "K4", "K5", "K6", "K7", "K8", "K9", "KA", "KB", "KC", "KD", "KE", "KF", "KG", "KH", "KI", "KJ", "KK", "KL", "KM", "KN", "KO", "KP", "KQ", "KR", "KS", "KT", "KU", "KV", "KW", "KX", "KY", "KZ", "L0", "L1", "L2", "L3", "L4", "L5", "L6", "L7", "L8", "L9", "LA", "LB", "LC", "LD", "LE", "LF", "LG", "LH", "LI", "LJ", "LK", "LL", "LM", "LN", "LO", "LP", "LQ", "LR", "LS", "LT", "LU", "LV", "LW", "LX", "LY", "LZ", "M0", "M1", "M2", "M3", "M4", "M5", "M6", "M7", "M8", "M9", "MA", "MB", "MC", "MD", "ME", "MF", "MG", "MH", "MI", "MJ", "MK", "ML", "MM", "MN", "MO", "MP", "MQ", "MR", "MS", "MT", "MU", "MV", "MW", "MX", "MY", "MZ", "N0", "N1", "N2", "N3", "N4", "N5", "N6", "N7", "N8", "N9", "NA", "NB", "NC", "ND", "NE", "NF", "NG", "NH", "NI", "NJ", "NK", "NL", "NM", "NN", "NO", "NP", "NQ", "NR", "NS", "NT", "NU", "NV", "NW", "NX", "NY", "NZ", "O0", "O1", "O2", "O3", "O4", "O5", "O6", "O7", "O8", "O9", "OA", "OB", "OC", "OD", "OE", "OF", "OG", "OH", "OI", "OJ", "OK", "OL", "OM", "ON", "OO", "OP", "OQ", "OR", "OS", "OT", "OU", "OV", "OW", "OX", "OY", "OZ", "P0", "P1", "P2", "P3", "P4", "P5", "P6", "P7", "P8", "P9", "PA", "PB", "PC", "PD", "PE", "PF", "PG", "PH", "PI", "PJ", "PK", "PL", "PM", "PN", "PO", "PP", "PQ", "PR", "PS", "PT", "PU", "PV", "PW", "PX", "PY", "PZ", "Q0", "Q1", "Q2", "Q3", "Q4", "Q5", "Q6", "Q7", "Q8", "Q9", "QA", "QB", "QC", "QD", "QE", "QF", "QG", "QH", "QI", "QJ", "QK", "QL", "QM", "QN", "QO", "QP", "QQ", "QR", "QS", "QT", "QU", "QV", "QW", "QX", "QY", "QZ", "R0", "R1", "R2", "R3", "R4", "R5", "R6", "R7", "R8", "R9", "RA", "RB", "RC", "RD", "RE", "RF", "RG", "RH", "RI", "RJ", "RK", "RL", "RM", "RN", "RO", "RP", "RQ", "RR", "RS", "RT", "RU", "RV", "RW", "RX", "RY", "RZ", "S0", "S1", "S2", "S3", "S4", "S5", "S6", "S7", "S8", "S9", "SA", "SB", "SC", "SD", "SE", "SF", "SG", "SH", "SI", "SJ", "SK", "SL", "SM", "SN", "SO", "SP", "SQ", "SR", "SS", "ST", "SU", "SV", "SW", "SX", "SY", "SZ", "T0", "T1", "T2", "T3", "T4", "T5", "T6", "T7", "T8", "T9", "TA", "TB", "TC", "TD", "TE", "TF", "TG", "TH", "TI", "TJ", "TK", "TL", "TM", "TN", "TO", "TP", "TQ", "TR", "TS", "TT", "TU", "TV", "TW", "TX", "TY", "TZ", "U0", "U1", "U2", "U3", "U4", "U5", "U6", "U7", "U8", "U9", "UA", "UB", "UC", "UD", "UE", "UF", "UG", "UH", "UI", "UJ", "UK", "UL", "UM", "UN", "UO", "UP", "UQ", "UR", "US", "UT", "UU", "UV", "UW", "UX", "UY", "UZ", "V0", "V1", "V2", "V3", "V4", "V5", "V6", "V7", "V8", "V9", "VA", "VB", "VC", "VD", "VE", "VF", "VG", "VH", "VI", "VJ", "VK", "VL", "VM", "VN", "VO", "VP", "VQ", "VR", "VS", "VT", "VU", "VV", "VW", "VX", "VY", "VZ", "W0", "W1", "W2", "W3", "W4", "W5", "W6", "W7", "W8", "W9", "WA", "WB", "WC", "WD", "WE", "WF", "WG", "WH", "WI", "WJ", "WK", "WL", "WM", "WN", "WO", "WP", "WQ", "WR", "WS", "WT", "WU", "WV", "WW", "WX", "WY", "WZ", "X0", "X1", "X2", "X3", "X4", "X5", "X6", "X7", "X8", "X9", "XA", "XB", "XC", "XD", "XE", "XF", "XG", "XH", "XI", "XJ", "XK", "XL", "XM", "XN", "XO", "XP", "XQ", "XR", "XS", "XT", "XU", "XV", "XW", "XX", "XY", "XZ", "Y0", "Y1", "Y2", "Y3", "Y4", "Y5", "Y6", "Y7", "Y8", "Y9", "YA", "YB", "YC", "YD", "YE", "YF", "YG", "YH", "YI", "YJ", "YK", "YL", "YM", "YN", "YO", "YP", "YQ", "YR", "YS", "YT", "YU", "YV", "YW", "YX", "YY", "YZ", "Z0", "Z1", "Z2", "Z3", "Z4", "Z5", "Z6", "Z7", "Z8", "Z9", "ZA", "ZB", "ZC", "ZD", "ZE", "ZF", "ZG", "ZH", "ZI", "ZJ", "ZK", "ZL", "ZM", "ZN", "ZO", "ZP", "ZQ", "ZR", "ZS", "ZT", "ZU", "ZV", "ZW", "ZX", "ZY", "ZZ"}) - Me.CHLnObj.Location = New System.Drawing.Point(67, 210) - Me.CHLnObj.Margin = New System.Windows.Forms.Padding(0) - Me.CHLnObj.Name = "CHLnObj" - Me.CHLnObj.Size = New System.Drawing.Size(116, 23) - Me.CHLnObj.TabIndex = 114 + Me.TBSaveAs.Image = Global.iBMSC.My.Resources.Resources.x16SaveAs + Me.TBSaveAs.Name = "TBSaveAs" + Me.TBSaveAs.Size = New System.Drawing.Size(168, 22) + Me.TBSaveAs.Text = "Save As..." ' - 'Label23 + 'TBExport ' - Me.Label23.Anchor = System.Windows.Forms.AnchorStyles.Right - Me.Label23.AutoSize = True - Me.Label23.Location = New System.Drawing.Point(19, 145) - Me.Label23.Name = "Label23" - Me.Label23.Size = New System.Drawing.Size(45, 15) - Me.Label23.TabIndex = 26 - Me.Label23.Text = "ExRank" - Me.Label23.TextAlign = System.Drawing.ContentAlignment.MiddleRight + Me.TBExport.Image = Global.iBMSC.My.Resources.Resources.x16Export + Me.TBExport.Name = "TBExport" + Me.TBExport.Size = New System.Drawing.Size(168, 22) + Me.TBExport.Text = "Export .IBMSC file" ' - 'Label21 + 'ToolStripSeparator1 ' - Me.Label21.Anchor = System.Windows.Forms.AnchorStyles.Right - Me.Label21.AutoSize = True - Me.Label21.Location = New System.Drawing.Point(9, 122) - Me.Label21.Name = "Label21" - Me.Label21.Size = New System.Drawing.Size(55, 15) - Me.Label21.TabIndex = 25 - Me.Label21.Text = "Difficulty" - Me.Label21.TextAlign = System.Drawing.ContentAlignment.MiddleRight + Me.ToolStripSeparator1.Name = "ToolStripSeparator1" + Me.ToolStripSeparator1.Size = New System.Drawing.Size(6, 25) ' - 'THComment + 'TBCut ' - Me.POHeaderPart2.SetColumnSpan(Me.THComment, 2) - Me.THComment.Dock = System.Windows.Forms.DockStyle.Fill - Me.THComment.Location = New System.Drawing.Point(67, 187) - Me.THComment.Margin = New System.Windows.Forms.Padding(0) - Me.THComment.Name = "THComment" - Me.THComment.Size = New System.Drawing.Size(116, 23) - Me.THComment.TabIndex = 113 + Me.TBCut.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image + Me.TBCut.Image = Global.iBMSC.My.Resources.Resources.x16Cut + Me.TBCut.ImageTransparentColor = System.Drawing.Color.Magenta + Me.TBCut.Name = "TBCut" + Me.TBCut.Size = New System.Drawing.Size(23, 22) + Me.TBCut.Text = "Cut (Ctrl+X)" ' - 'Label24 + 'TBCopy ' - Me.Label24.Anchor = System.Windows.Forms.AnchorStyles.Right - Me.Label24.AutoSize = True - Me.Label24.Location = New System.Drawing.Point(25, 214) - Me.Label24.Name = "Label24" - Me.Label24.Size = New System.Drawing.Size(39, 15) - Me.Label24.TabIndex = 27 - Me.Label24.Text = "LnObj" - Me.Label24.TextAlign = System.Drawing.ContentAlignment.MiddleRight + Me.TBCopy.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image + Me.TBCopy.Image = Global.iBMSC.My.Resources.Resources.x16Copy + Me.TBCopy.ImageTransparentColor = System.Drawing.Color.Magenta + Me.TBCopy.Name = "TBCopy" + Me.TBCopy.Size = New System.Drawing.Size(23, 22) + Me.TBCopy.Text = "Copy (Ctrl+C)" ' - 'Label15 + 'TBPaste ' - Me.Label15.Anchor = System.Windows.Forms.AnchorStyles.Right - Me.Label15.AutoSize = True - Me.Label15.Location = New System.Drawing.Point(15, 4) - Me.Label15.Name = "Label15" - Me.Label15.Size = New System.Drawing.Size(49, 15) - Me.Label15.TabIndex = 6 - Me.Label15.Text = "SubTitle" - Me.Label15.TextAlign = System.Drawing.ContentAlignment.MiddleRight + Me.TBPaste.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image + Me.TBPaste.Image = Global.iBMSC.My.Resources.Resources.x16Paste + Me.TBPaste.ImageTransparentColor = System.Drawing.Color.Magenta + Me.TBPaste.Name = "TBPaste" + Me.TBPaste.Size = New System.Drawing.Size(23, 22) + Me.TBPaste.Text = "Paste (Ctrl+V)" ' - 'THTotal + 'TBFind ' - Me.THTotal.Dock = System.Windows.Forms.DockStyle.Fill - Me.THTotal.Location = New System.Drawing.Point(67, 164) - Me.THTotal.Margin = New System.Windows.Forms.Padding(0) - Me.THTotal.Name = "THTotal" - Me.THTotal.Size = New System.Drawing.Size(88, 23) - Me.THTotal.TabIndex = 112 + Me.TBFind.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image + Me.TBFind.Image = Global.iBMSC.My.Resources.Resources.x16Find + Me.TBFind.ImageTransparentColor = System.Drawing.Color.Magenta + Me.TBFind.Name = "TBFind" + Me.TBFind.Size = New System.Drawing.Size(23, 22) + Me.TBFind.Text = "Find / Delete / Replace (Ctrl+F)" ' - 'Label20 + 'ToolStripSeparator24 ' - Me.Label20.Anchor = System.Windows.Forms.AnchorStyles.Right - Me.Label20.AutoSize = True - Me.Label20.Location = New System.Drawing.Point(32, 168) - Me.Label20.Name = "Label20" - Me.Label20.Size = New System.Drawing.Size(32, 15) - Me.Label20.TabIndex = 5 - Me.Label20.Text = "Total" - Me.Label20.TextAlign = System.Drawing.ContentAlignment.MiddleRight + Me.ToolStripSeparator24.Name = "ToolStripSeparator24" + Me.ToolStripSeparator24.Size = New System.Drawing.Size(6, 25) ' - 'BHStageFile + 'TBStatistics ' - Me.BHStageFile.Dock = System.Windows.Forms.DockStyle.Fill - Me.BHStageFile.FlatStyle = System.Windows.Forms.FlatStyle.System - Me.BHStageFile.Location = New System.Drawing.Point(158, 46) - Me.BHStageFile.Margin = New System.Windows.Forms.Padding(3, 0, 0, 0) - Me.BHStageFile.Name = "BHStageFile" - Me.BHStageFile.Size = New System.Drawing.Size(25, 24) - Me.BHStageFile.TabIndex = 105 - Me.BHStageFile.Text = "..." - Me.BHStageFile.UseVisualStyleBackColor = True + Me.TBStatistics.Font = New System.Drawing.Font("Segoe UI", 9.0!, System.Drawing.FontStyle.Bold) + Me.TBStatistics.Image = Global.iBMSC.My.Resources.Resources.x16Statistics + Me.TBStatistics.ImageTransparentColor = System.Drawing.Color.Magenta + Me.TBStatistics.Name = "TBStatistics" + Me.TBStatistics.Size = New System.Drawing.Size(34, 22) + Me.TBStatistics.Text = "0" + Me.TBStatistics.ToolTipText = "Statistics (Ctrl+T)" ' - 'BHBanner + 'TBMyO2 ' - Me.BHBanner.Dock = System.Windows.Forms.DockStyle.Fill - Me.BHBanner.FlatStyle = System.Windows.Forms.FlatStyle.System - Me.BHBanner.Location = New System.Drawing.Point(158, 70) - Me.BHBanner.Margin = New System.Windows.Forms.Padding(3, 0, 0, 0) - Me.BHBanner.Name = "BHBanner" - Me.BHBanner.Size = New System.Drawing.Size(25, 24) - Me.BHBanner.TabIndex = 107 - Me.BHBanner.Text = "..." - Me.BHBanner.UseVisualStyleBackColor = True + Me.TBMyO2.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image + Me.TBMyO2.Image = Global.iBMSC.My.Resources.Resources.x16MyO2 + Me.TBMyO2.ImageTransparentColor = System.Drawing.Color.Magenta + Me.TBMyO2.Name = "TBMyO2" + Me.TBMyO2.Size = New System.Drawing.Size(23, 22) + Me.TBMyO2.Text = "MyO2 ToolBox (Chinese Only)" ' - 'Label19 + 'ToolStripSeparator4 ' - Me.Label19.Anchor = System.Windows.Forms.AnchorStyles.Right - Me.Label19.AutoSize = True - Me.Label19.Location = New System.Drawing.Point(3, 191) - Me.Label19.Name = "Label19" - Me.Label19.Size = New System.Drawing.Size(61, 15) - Me.Label19.TabIndex = 13 - Me.Label19.Text = "Comment" - Me.Label19.TextAlign = System.Drawing.ContentAlignment.MiddleRight + Me.ToolStripSeparator4.Name = "ToolStripSeparator4" + Me.ToolStripSeparator4.Size = New System.Drawing.Size(6, 25) ' - 'BHBackBMP + 'TBErrorCheck ' - Me.BHBackBMP.Dock = System.Windows.Forms.DockStyle.Fill - Me.BHBackBMP.FlatStyle = System.Windows.Forms.FlatStyle.System - Me.BHBackBMP.Location = New System.Drawing.Point(158, 94) - Me.BHBackBMP.Margin = New System.Windows.Forms.Padding(3, 0, 0, 0) - Me.BHBackBMP.Name = "BHBackBMP" - Me.BHBackBMP.Size = New System.Drawing.Size(25, 24) - Me.BHBackBMP.TabIndex = 109 - Me.BHBackBMP.Text = "..." - Me.BHBackBMP.UseVisualStyleBackColor = True + Me.TBErrorCheck.Checked = True + Me.TBErrorCheck.CheckOnClick = True + Me.TBErrorCheck.CheckState = System.Windows.Forms.CheckState.Checked + Me.TBErrorCheck.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image + Me.TBErrorCheck.Image = Global.iBMSC.My.Resources.Resources.x16CheckError + Me.TBErrorCheck.ImageTransparentColor = System.Drawing.Color.Magenta + Me.TBErrorCheck.Name = "TBErrorCheck" + Me.TBErrorCheck.Size = New System.Drawing.Size(23, 22) + Me.TBErrorCheck.Text = "Error Check" ' - 'Label17 + 'TBPreviewOnClick ' - Me.Label17.Anchor = System.Windows.Forms.AnchorStyles.Right - Me.Label17.AutoSize = True - Me.Label17.Location = New System.Drawing.Point(9, 27) - Me.Label17.Name = "Label17" - Me.Label17.Size = New System.Drawing.Size(55, 15) - Me.Label17.TabIndex = 7 - Me.Label17.Text = "SubArtist" - Me.Label17.TextAlign = System.Drawing.ContentAlignment.MiddleRight + Me.TBPreviewOnClick.Checked = True + Me.TBPreviewOnClick.CheckOnClick = True + Me.TBPreviewOnClick.CheckState = System.Windows.Forms.CheckState.Checked + Me.TBPreviewOnClick.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image + Me.TBPreviewOnClick.Image = Global.iBMSC.My.Resources.Resources.x16PreviewOnClick + Me.TBPreviewOnClick.ImageTransparentColor = System.Drawing.Color.Magenta + Me.TBPreviewOnClick.Name = "TBPreviewOnClick" + Me.TBPreviewOnClick.Size = New System.Drawing.Size(23, 22) + Me.TBPreviewOnClick.Text = "Preview On Click" ' - 'Label16 + 'TBShowFileName ' - Me.Label16.Anchor = System.Windows.Forms.AnchorStyles.Right - Me.Label16.AutoSize = True - Me.Label16.Location = New System.Drawing.Point(7, 50) - Me.Label16.Name = "Label16" - Me.Label16.Size = New System.Drawing.Size(57, 15) - Me.Label16.TabIndex = 9 - Me.Label16.Text = "Stage File" - Me.Label16.TextAlign = System.Drawing.ContentAlignment.MiddleRight + Me.TBShowFileName.CheckOnClick = True + Me.TBShowFileName.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image + Me.TBShowFileName.Image = Global.iBMSC.My.Resources.Resources.x16ShowFileNameN + Me.TBShowFileName.ImageTransparentColor = System.Drawing.Color.Magenta + Me.TBShowFileName.Name = "TBShowFileName" + Me.TBShowFileName.Size = New System.Drawing.Size(23, 22) + Me.TBShowFileName.Text = "Show File Name on Notes" ' - 'Label12 + 'ToolStripSeparator8 ' - Me.Label12.Anchor = System.Windows.Forms.AnchorStyles.Right - Me.Label12.AutoSize = True - Me.Label12.Location = New System.Drawing.Point(20, 74) - Me.Label12.Name = "Label12" - Me.Label12.Size = New System.Drawing.Size(44, 15) - Me.Label12.TabIndex = 13 - Me.Label12.Text = "Banner" - Me.Label12.TextAlign = System.Drawing.ContentAlignment.MiddleRight + Me.ToolStripSeparator8.Name = "ToolStripSeparator8" + Me.ToolStripSeparator8.Size = New System.Drawing.Size(6, 25) ' - 'THBackBMP + 'TBNTInput ' - Me.THBackBMP.Dock = System.Windows.Forms.DockStyle.Fill - Me.THBackBMP.Location = New System.Drawing.Point(67, 94) - Me.THBackBMP.Margin = New System.Windows.Forms.Padding(0) - Me.THBackBMP.Name = "THBackBMP" - Me.THBackBMP.Size = New System.Drawing.Size(88, 23) - Me.THBackBMP.TabIndex = 108 + Me.TBNTInput.Checked = True + Me.TBNTInput.CheckOnClick = True + Me.TBNTInput.CheckState = System.Windows.Forms.CheckState.Checked + Me.TBNTInput.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image + Me.TBNTInput.Image = Global.iBMSC.My.Resources.Resources.x16NTInput + Me.TBNTInput.ImageTransparentColor = System.Drawing.Color.Magenta + Me.TBNTInput.Name = "TBNTInput" + Me.TBNTInput.Size = New System.Drawing.Size(23, 22) + Me.TBNTInput.Text = "LongNote Input Style - NoteTool/BMSE" ' - 'Label11 + 'TBWavIncrease ' - Me.Label11.Anchor = System.Windows.Forms.AnchorStyles.Right - Me.Label11.AutoSize = True - Me.Label11.Location = New System.Drawing.Point(4, 98) - Me.Label11.Name = "Label11" - Me.Label11.Size = New System.Drawing.Size(60, 15) - Me.Label11.TabIndex = 16 - Me.Label11.Text = "Back BMP" - Me.Label11.TextAlign = System.Drawing.ContentAlignment.MiddleRight + Me.TBWavIncrease.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image + Me.TBWavIncrease.Image = CType(resources.GetObject("TBWavIncrease.Image"), System.Drawing.Image) + Me.TBWavIncrease.ImageTransparentColor = System.Drawing.Color.Magenta + Me.TBWavIncrease.Name = "TBWavIncrease" + Me.TBWavIncrease.Size = New System.Drawing.Size(23, 22) + Me.TBWavIncrease.Text = "Autoincrease WAV when writing" ' - 'THBanner + 'ToolStripSeparator2 ' - Me.THBanner.Dock = System.Windows.Forms.DockStyle.Fill - Me.THBanner.Location = New System.Drawing.Point(67, 70) - Me.THBanner.Margin = New System.Windows.Forms.Padding(0) - Me.THBanner.Name = "THBanner" - Me.THBanner.Size = New System.Drawing.Size(88, 23) - Me.THBanner.TabIndex = 106 + Me.ToolStripSeparator2.Name = "ToolStripSeparator2" + Me.ToolStripSeparator2.Size = New System.Drawing.Size(6, 25) ' - 'THStageFile + 'TBUndo ' - Me.THStageFile.Dock = System.Windows.Forms.DockStyle.Fill - Me.THStageFile.Location = New System.Drawing.Point(67, 46) - Me.THStageFile.Margin = New System.Windows.Forms.Padding(0) - Me.THStageFile.Name = "THStageFile" - Me.THStageFile.Size = New System.Drawing.Size(88, 23) - Me.THStageFile.TabIndex = 104 + Me.TBUndo.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image + Me.TBUndo.Enabled = False + Me.TBUndo.Image = Global.iBMSC.My.Resources.Resources.x16Undo + Me.TBUndo.ImageTransparentColor = System.Drawing.Color.Magenta + Me.TBUndo.Name = "TBUndo" + Me.TBUndo.Size = New System.Drawing.Size(23, 22) + Me.TBUndo.Text = "Undo (Ctrl+Z)" ' - 'THSubTitle + 'TBRedo ' - Me.POHeaderPart2.SetColumnSpan(Me.THSubTitle, 2) - Me.THSubTitle.Dock = System.Windows.Forms.DockStyle.Fill - Me.THSubTitle.Location = New System.Drawing.Point(67, 0) - Me.THSubTitle.Margin = New System.Windows.Forms.Padding(0) - Me.THSubTitle.Name = "THSubTitle" - Me.THSubTitle.Size = New System.Drawing.Size(116, 23) - Me.THSubTitle.TabIndex = 102 + Me.TBRedo.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image + Me.TBRedo.Enabled = False + Me.TBRedo.Image = Global.iBMSC.My.Resources.Resources.x16Redo + Me.TBRedo.ImageTransparentColor = System.Drawing.Color.Magenta + Me.TBRedo.Name = "TBRedo" + Me.TBRedo.Size = New System.Drawing.Size(23, 22) + Me.TBRedo.Text = "Redo (Ctrl+Y)" ' - 'THSubArtist + 'ToolStripSeparator5 ' - Me.POHeaderPart2.SetColumnSpan(Me.THSubArtist, 2) - Me.THSubArtist.Dock = System.Windows.Forms.DockStyle.Fill - Me.THSubArtist.Location = New System.Drawing.Point(67, 23) - Me.THSubArtist.Margin = New System.Windows.Forms.Padding(0) - Me.THSubArtist.Name = "THSubArtist" - Me.THSubArtist.Size = New System.Drawing.Size(116, 23) - Me.THSubArtist.TabIndex = 103 + Me.ToolStripSeparator5.Name = "ToolStripSeparator5" + Me.ToolStripSeparator5.Size = New System.Drawing.Size(6, 25) ' - 'POHeaderExpander + 'TBTimeSelect ' - Me.POHeaderExpander.Appearance = System.Windows.Forms.Appearance.Button - Me.POHeaderExpander.AutoSize = True - Me.POHeaderExpander.Cursor = System.Windows.Forms.Cursors.Hand - Me.POHeaderExpander.Dock = System.Windows.Forms.DockStyle.Top - Me.POHeaderExpander.FlatAppearance.BorderSize = 0 - Me.POHeaderExpander.FlatStyle = System.Windows.Forms.FlatStyle.Popup - Me.POHeaderExpander.Location = New System.Drawing.Point(0, 161) - Me.POHeaderExpander.Margin = New System.Windows.Forms.Padding(0) - Me.POHeaderExpander.Name = "POHeaderExpander" - Me.POHeaderExpander.Size = New System.Drawing.Size(183, 25) - Me.POHeaderExpander.TabIndex = 101 - Me.POHeaderExpander.TabStop = False - Me.POHeaderExpander.Text = "Expand..." - Me.POHeaderExpander.TextAlign = System.Drawing.ContentAlignment.MiddleCenter - Me.POHeaderExpander.UseVisualStyleBackColor = False + Me.TBTimeSelect.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image + Me.TBTimeSelect.Image = Global.iBMSC.My.Resources.Resources.x16TimeSelection + Me.TBTimeSelect.ImageTransparentColor = System.Drawing.Color.Magenta + Me.TBTimeSelect.Name = "TBTimeSelect" + Me.TBTimeSelect.Size = New System.Drawing.Size(23, 22) + Me.TBTimeSelect.Text = "Time Selection Tool (F1)" ' - 'POHeaderPart1 + 'TBSelect ' - Me.POHeaderPart1.AutoSize = True - Me.POHeaderPart1.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink - Me.POHeaderPart1.ColumnCount = 2 - Me.POHeaderPart1.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle()) - Me.POHeaderPart1.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100.0!)) - Me.POHeaderPart1.Controls.Add(Me.Label3, 0, 0) - Me.POHeaderPart1.Controls.Add(Me.THPlayLevel, 1, 6) - Me.POHeaderPart1.Controls.Add(Me.CHRank, 1, 5) - Me.POHeaderPart1.Controls.Add(Me.Label10, 0, 5) - Me.POHeaderPart1.Controls.Add(Me.CHPlayer, 1, 4) - Me.POHeaderPart1.Controls.Add(Me.Label4, 0, 1) - Me.POHeaderPart1.Controls.Add(Me.THGenre, 1, 2) - Me.POHeaderPart1.Controls.Add(Me.THBPM, 1, 3) - Me.POHeaderPart1.Controls.Add(Me.Label2, 0, 2) - Me.POHeaderPart1.Controls.Add(Me.THArtist, 1, 1) - Me.POHeaderPart1.Controls.Add(Me.THTitle, 1, 0) - Me.POHeaderPart1.Controls.Add(Me.Label9, 0, 3) - Me.POHeaderPart1.Controls.Add(Me.Label8, 0, 4) - Me.POHeaderPart1.Controls.Add(Me.Label6, 0, 6) - Me.POHeaderPart1.Dock = System.Windows.Forms.DockStyle.Top - Me.POHeaderPart1.Location = New System.Drawing.Point(0, 0) - Me.POHeaderPart1.Name = "POHeaderPart1" - Me.POHeaderPart1.RowCount = 7 - Me.POHeaderPart1.RowStyles.Add(New System.Windows.Forms.RowStyle()) - Me.POHeaderPart1.RowStyles.Add(New System.Windows.Forms.RowStyle()) - Me.POHeaderPart1.RowStyles.Add(New System.Windows.Forms.RowStyle()) - Me.POHeaderPart1.RowStyles.Add(New System.Windows.Forms.RowStyle()) - Me.POHeaderPart1.RowStyles.Add(New System.Windows.Forms.RowStyle()) - Me.POHeaderPart1.RowStyles.Add(New System.Windows.Forms.RowStyle()) - Me.POHeaderPart1.RowStyles.Add(New System.Windows.Forms.RowStyle()) - Me.POHeaderPart1.Size = New System.Drawing.Size(183, 161) - Me.POHeaderPart1.TabIndex = 25 + Me.TBSelect.Checked = True + Me.TBSelect.CheckState = System.Windows.Forms.CheckState.Checked + Me.TBSelect.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image + Me.TBSelect.Image = Global.iBMSC.My.Resources.Resources.x16Select + Me.TBSelect.ImageTransparentColor = System.Drawing.Color.Magenta + Me.TBSelect.Name = "TBSelect" + Me.TBSelect.Size = New System.Drawing.Size(23, 22) + Me.TBSelect.Text = "Select Tool (F2)" ' - 'Label3 + 'TBWrite ' - Me.Label3.Anchor = System.Windows.Forms.AnchorStyles.Right - Me.Label3.AutoSize = True - Me.Label3.Location = New System.Drawing.Point(33, 4) - Me.Label3.Name = "Label3" - Me.Label3.Size = New System.Drawing.Size(29, 15) - Me.Label3.TabIndex = 2 - Me.Label3.Text = "Title" - Me.Label3.TextAlign = System.Drawing.ContentAlignment.MiddleRight + Me.TBWrite.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image + Me.TBWrite.Image = Global.iBMSC.My.Resources.Resources.x16Pen + Me.TBWrite.ImageTransparentColor = System.Drawing.Color.Magenta + Me.TBWrite.Name = "TBWrite" + Me.TBWrite.Size = New System.Drawing.Size(23, 22) + Me.TBWrite.Text = "Write Tool (F3)" ' - 'THPlayLevel + 'ToolStripSeparator3 ' - Me.THPlayLevel.Dock = System.Windows.Forms.DockStyle.Fill - Me.THPlayLevel.Location = New System.Drawing.Point(65, 138) - Me.THPlayLevel.Margin = New System.Windows.Forms.Padding(0) - Me.THPlayLevel.Name = "THPlayLevel" - Me.THPlayLevel.Size = New System.Drawing.Size(118, 23) - Me.THPlayLevel.TabIndex = 8 + Me.ToolStripSeparator3.Name = "ToolStripSeparator3" + Me.ToolStripSeparator3.Size = New System.Drawing.Size(6, 25) ' - 'CHRank + 'TBPlayB ' - Me.CHRank.Dock = System.Windows.Forms.DockStyle.Top - Me.CHRank.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList - Me.CHRank.FlatStyle = System.Windows.Forms.FlatStyle.System - Me.CHRank.Items.AddRange(New Object() {"0 - Very Hard", "1 - Hard", "2 - Normal", "3 - Easy", "4 - Very Easy"}) - Me.CHRank.Location = New System.Drawing.Point(65, 115) - Me.CHRank.Margin = New System.Windows.Forms.Padding(0) - Me.CHRank.Name = "CHRank" - Me.CHRank.Size = New System.Drawing.Size(118, 23) - Me.CHRank.TabIndex = 7 + Me.TBPlayB.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image + Me.TBPlayB.Image = Global.iBMSC.My.Resources.Resources.x16PlayB + Me.TBPlayB.ImageTransparentColor = System.Drawing.Color.Magenta + Me.TBPlayB.Name = "TBPlayB" + Me.TBPlayB.Size = New System.Drawing.Size(23, 22) + Me.TBPlayB.Text = "Play from beginning (F5)" ' - 'Label10 + 'TBPlay ' - Me.Label10.Anchor = System.Windows.Forms.AnchorStyles.Right - Me.Label10.AutoSize = True - Me.Label10.Location = New System.Drawing.Point(12, 119) - Me.Label10.Name = "Label10" - Me.Label10.Size = New System.Drawing.Size(50, 15) - Me.Label10.TabIndex = 16 - Me.Label10.Text = "Ranking" - Me.Label10.TextAlign = System.Drawing.ContentAlignment.MiddleRight + Me.TBPlay.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image + Me.TBPlay.Image = Global.iBMSC.My.Resources.Resources.x16Play + Me.TBPlay.ImageTransparentColor = System.Drawing.Color.Magenta + Me.TBPlay.Name = "TBPlay" + Me.TBPlay.Size = New System.Drawing.Size(23, 22) + Me.TBPlay.Text = "Play from here (F6)" ' - 'CHPlayer + 'TBStop ' - Me.CHPlayer.Dock = System.Windows.Forms.DockStyle.Top - Me.CHPlayer.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList - Me.CHPlayer.FlatStyle = System.Windows.Forms.FlatStyle.System - Me.CHPlayer.Items.AddRange(New Object() {"1 - Single Play", "2 - Couple Play", "3 - Double Play"}) - Me.CHPlayer.Location = New System.Drawing.Point(65, 92) - Me.CHPlayer.Margin = New System.Windows.Forms.Padding(0) - Me.CHPlayer.Name = "CHPlayer" - Me.CHPlayer.Size = New System.Drawing.Size(118, 23) - Me.CHPlayer.TabIndex = 6 + Me.TBStop.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image + Me.TBStop.Image = Global.iBMSC.My.Resources.Resources.x16Stop + Me.TBStop.ImageTransparentColor = System.Drawing.Color.Magenta + Me.TBStop.Name = "TBStop" + Me.TBStop.Size = New System.Drawing.Size(23, 22) + Me.TBStop.Text = "Stop (F7)" ' - 'Label4 + 'TBPOptions ' - Me.Label4.Anchor = System.Windows.Forms.AnchorStyles.Right - Me.Label4.AutoSize = True - Me.Label4.Location = New System.Drawing.Point(27, 27) - Me.Label4.Name = "Label4" - Me.Label4.Size = New System.Drawing.Size(35, 15) - Me.Label4.TabIndex = 3 - Me.Label4.Text = "Artist" - Me.Label4.TextAlign = System.Drawing.ContentAlignment.MiddleRight + Me.TBPOptions.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image + Me.TBPOptions.Image = Global.iBMSC.My.Resources.Resources.x16PlayerOptions + Me.TBPOptions.ImageTransparentColor = System.Drawing.Color.Magenta + Me.TBPOptions.Name = "TBPOptions" + Me.TBPOptions.Size = New System.Drawing.Size(23, 22) + Me.TBPOptions.Text = "Player Options (F9)" ' - 'THGenre + 'ToolStripSeparator7 ' - Me.THGenre.Dock = System.Windows.Forms.DockStyle.Fill - Me.THGenre.Location = New System.Drawing.Point(65, 46) - Me.THGenre.Margin = New System.Windows.Forms.Padding(0) - Me.THGenre.Name = "THGenre" - Me.THGenre.Size = New System.Drawing.Size(118, 23) - Me.THGenre.TabIndex = 4 + Me.ToolStripSeparator7.Name = "ToolStripSeparator7" + Me.ToolStripSeparator7.Size = New System.Drawing.Size(6, 25) ' - 'THBPM + 'TBVOptions ' - Me.THBPM.DecimalPlaces = 4 - Me.THBPM.Dock = System.Windows.Forms.DockStyle.Fill - Me.THBPM.Increment = New Decimal(New Integer() {10, 0, 0, 0}) - Me.THBPM.Location = New System.Drawing.Point(65, 69) - Me.THBPM.Margin = New System.Windows.Forms.Padding(0) - Me.THBPM.Maximum = New Decimal(New Integer() {655359999, 0, 0, 262144}) - Me.THBPM.Minimum = New Decimal(New Integer() {1, 0, 0, 262144}) - Me.THBPM.Name = "THBPM" - Me.THBPM.Size = New System.Drawing.Size(118, 23) - Me.THBPM.TabIndex = 5 - Me.THBPM.Value = New Decimal(New Integer() {120, 0, 0, 0}) + Me.TBVOptions.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image + Me.TBVOptions.Image = Global.iBMSC.My.Resources.Resources.x16VisualOptions + Me.TBVOptions.ImageTransparentColor = System.Drawing.Color.Magenta + Me.TBVOptions.Name = "TBVOptions" + Me.TBVOptions.Size = New System.Drawing.Size(23, 22) + Me.TBVOptions.Text = "Visual Options (F12)" ' - 'Label2 + 'TBGOptions ' - Me.Label2.Anchor = System.Windows.Forms.AnchorStyles.Right - Me.Label2.AutoSize = True - Me.Label2.Location = New System.Drawing.Point(24, 50) - Me.Label2.Name = "Label2" - Me.Label2.Size = New System.Drawing.Size(38, 15) - Me.Label2.TabIndex = 4 - Me.Label2.Text = "Genre" - Me.Label2.TextAlign = System.Drawing.ContentAlignment.MiddleRight + Me.TBGOptions.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image + Me.TBGOptions.Image = Global.iBMSC.My.Resources.Resources.x16GeneralOptions + Me.TBGOptions.ImageTransparentColor = System.Drawing.Color.Magenta + Me.TBGOptions.Name = "TBGOptions" + Me.TBGOptions.Size = New System.Drawing.Size(23, 22) + Me.TBGOptions.Text = "General Options (F10)" ' - 'THArtist + 'POBStorm ' - Me.THArtist.Dock = System.Windows.Forms.DockStyle.Fill - Me.THArtist.Location = New System.Drawing.Point(65, 23) - Me.THArtist.Margin = New System.Windows.Forms.Padding(0) - Me.THArtist.Name = "THArtist" - Me.THArtist.Size = New System.Drawing.Size(118, 23) - Me.THArtist.TabIndex = 3 + Me.POBStorm.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image + Me.POBStorm.Image = Global.iBMSC.My.Resources.Resources.x16Storm + Me.POBStorm.ImageTransparentColor = System.Drawing.Color.Magenta + Me.POBStorm.Name = "POBStorm" + Me.POBStorm.Size = New System.Drawing.Size(23, 22) + Me.POBStorm.Text = "Storm" + Me.POBStorm.Visible = False ' - 'THTitle + 'pStatus ' - Me.THTitle.Dock = System.Windows.Forms.DockStyle.Fill - Me.THTitle.Location = New System.Drawing.Point(65, 0) - Me.THTitle.Margin = New System.Windows.Forms.Padding(0) - Me.THTitle.Name = "THTitle" - Me.THTitle.Size = New System.Drawing.Size(118, 23) - Me.THTitle.TabIndex = 2 + Me.pStatus.AutoSize = True + Me.pStatus.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink + Me.pStatus.Controls.Add(Me.FStatus2) + Me.pStatus.Controls.Add(Me.FStatus) + Me.pStatus.Dock = System.Windows.Forms.DockStyle.Bottom + Me.pStatus.Location = New System.Drawing.Point(0, 759) + Me.pStatus.Name = "pStatus" + Me.pStatus.Size = New System.Drawing.Size(952, 22) + Me.pStatus.TabIndex = 62 ' - 'Label9 + 'FStatus2 ' - Me.Label9.Anchor = System.Windows.Forms.AnchorStyles.Right - Me.Label9.AutoSize = True - Me.Label9.Location = New System.Drawing.Point(30, 73) - Me.Label9.Name = "Label9" - Me.Label9.Size = New System.Drawing.Size(32, 15) - Me.Label9.TabIndex = 5 - Me.Label9.Text = "BPM" - Me.Label9.TextAlign = System.Drawing.ContentAlignment.MiddleRight + Me.FStatus2.AccessibleRole = System.Windows.Forms.AccessibleRole.StatusBar + Me.FStatus2.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.FSSS, Me.FSSL, Me.FSSH, Me.BVCReverse, Me.LblMultiply, Me.TVCM, Me.LblDivide, Me.TVCD, Me.BVCApply, Me.TVCBPM, Me.BVCCalculate, Me.BConvertStop}) + Me.FStatus2.Location = New System.Drawing.Point(0, 0) + Me.FStatus2.Name = "FStatus2" + Me.FStatus2.ShowItemToolTips = True + Me.FStatus2.Size = New System.Drawing.Size(952, 22) + Me.FStatus2.TabIndex = 0 + Me.FStatus2.Text = "Status" + Me.FStatus2.Visible = False ' - 'Label8 + 'FSSS ' - Me.Label8.Anchor = System.Windows.Forms.AnchorStyles.Right - Me.Label8.AutoSize = True - Me.Label8.Location = New System.Drawing.Point(23, 96) - Me.Label8.Name = "Label8" - Me.Label8.Size = New System.Drawing.Size(39, 15) - Me.Label8.TabIndex = 13 - Me.Label8.Text = "Player" - Me.Label8.TextAlign = System.Drawing.ContentAlignment.MiddleRight + Me.FSSS.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text + Me.FSSS.Font = New System.Drawing.Font("Segoe UI", 9.0!, System.Drawing.FontStyle.Bold) + Me.FSSS.ImageTransparentColor = System.Drawing.Color.Magenta + Me.FSSS.Name = "FSSS" + Me.FSSS.Size = New System.Drawing.Size(23, 20) + Me.FSSS.Text = "0" + Me.FSSS.ToolTipText = "Selection Start Position" ' - 'Label6 + 'FSSL ' - Me.Label6.Anchor = System.Windows.Forms.AnchorStyles.Right - Me.Label6.AutoSize = True - Me.Label6.Location = New System.Drawing.Point(3, 142) - Me.Label6.Name = "Label6" - Me.Label6.Size = New System.Drawing.Size(59, 15) - Me.Label6.TabIndex = 8 - Me.Label6.Text = "Play Level" - Me.Label6.TextAlign = System.Drawing.ContentAlignment.MiddleRight + Me.FSSL.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text + Me.FSSL.Font = New System.Drawing.Font("Segoe UI", 9.0!, System.Drawing.FontStyle.Bold) + Me.FSSL.ImageTransparentColor = System.Drawing.Color.Magenta + Me.FSSL.Name = "FSSL" + Me.FSSL.Size = New System.Drawing.Size(23, 20) + Me.FSSL.Text = "0" + Me.FSSL.ToolTipText = "Selection Length" ' - 'POHeaderSwitch + 'FSSH ' - Me.POHeaderSwitch.Appearance = System.Windows.Forms.Appearance.Button - Me.POHeaderSwitch.BackColor = System.Drawing.SystemColors.Control - Me.POHeaderSwitch.Checked = True - Me.POHeaderSwitch.CheckState = System.Windows.Forms.CheckState.Checked - Me.POHeaderSwitch.Cursor = System.Windows.Forms.Cursors.Hand - Me.POHeaderSwitch.Dock = System.Windows.Forms.DockStyle.Top - Me.POHeaderSwitch.Font = New System.Drawing.Font("Segoe UI", 9.0!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) - Me.POHeaderSwitch.Location = New System.Drawing.Point(0, 0) - Me.POHeaderSwitch.Name = "POHeaderSwitch" - Me.POHeaderSwitch.Size = New System.Drawing.Size(183, 20) - Me.POHeaderSwitch.TabIndex = 1 - Me.POHeaderSwitch.TabStop = False - Me.POHeaderSwitch.Text = "Header" - Me.POHeaderSwitch.TextAlign = System.Drawing.ContentAlignment.MiddleCenter - Me.POHeaderSwitch.UseCompatibleTextRendering = True - Me.POHeaderSwitch.UseVisualStyleBackColor = False + Me.FSSH.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text + Me.FSSH.Font = New System.Drawing.Font("Segoe UI", 9.0!, System.Drawing.FontStyle.Bold) + Me.FSSH.ImageTransparentColor = System.Drawing.Color.Magenta + Me.FSSH.Name = "FSSH" + Me.FSSH.Size = New System.Drawing.Size(23, 20) + Me.FSSH.Text = "0" + Me.FSSH.ToolTipText = "Selection Split Position" ' - 'Timer1 + 'BVCReverse ' - Me.Timer1.Interval = 15 + Me.BVCReverse.BackColor = System.Drawing.Color.FromArgb(CType(CType(192, Byte), Integer), CType(CType(192, Byte), Integer), CType(CType(255, Byte), Integer)) + Me.BVCReverse.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text + Me.BVCReverse.ImageTransparentColor = System.Drawing.Color.Magenta + Me.BVCReverse.Name = "BVCReverse" + Me.BVCReverse.Size = New System.Drawing.Size(102, 20) + Me.BVCReverse.Text = "Reverse Selection" ' - 'Menu1 + 'LblMultiply ' - Me.Menu1.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.MInsert, Me.MRemove}) - Me.Menu1.Name = "Menu1" - Me.Menu1.Size = New System.Drawing.Size(166, 48) + Me.LblMultiply.Name = "LblMultiply" + Me.LblMultiply.Size = New System.Drawing.Size(15, 17) + Me.LblMultiply.Text = "×" ' - 'MInsert + 'TVCM ' - Me.MInsert.Image = Global.iBMSC.My.Resources.Resources.x16Add - Me.MInsert.Name = "MInsert" - Me.MInsert.Size = New System.Drawing.Size(165, 22) - Me.MInsert.Text = "Insert Measure" + Me.TVCM.BackColor = System.Drawing.Color.FromArgb(CType(CType(255, Byte), Integer), CType(CType(192, Byte), Integer), CType(CType(192, Byte), Integer)) + Me.TVCM.BorderStyle = System.Windows.Forms.BorderStyle.None + Me.TVCM.Font = New System.Drawing.Font("Segoe UI", 9.0!, System.Drawing.FontStyle.Bold) + Me.TVCM.Name = "TVCM" + Me.TVCM.Size = New System.Drawing.Size(60, 22) + Me.TVCM.Text = "2" + Me.TVCM.TextBoxTextAlign = System.Windows.Forms.HorizontalAlignment.Center ' - 'MRemove + 'LblDivide ' - Me.MRemove.Image = Global.iBMSC.My.Resources.Resources.x16Remove - Me.MRemove.Name = "MRemove" - Me.MRemove.Size = New System.Drawing.Size(165, 22) - Me.MRemove.Text = "Remove Measure" + Me.LblDivide.Name = "LblDivide" + Me.LblDivide.Size = New System.Drawing.Size(15, 17) + Me.LblDivide.Text = "÷" ' - 'AutoSaveTimer + 'TVCD ' - Me.AutoSaveTimer.Enabled = True - Me.AutoSaveTimer.Interval = 300000 + Me.TVCD.BackColor = System.Drawing.Color.FromArgb(CType(CType(255, Byte), Integer), CType(CType(192, Byte), Integer), CType(CType(192, Byte), Integer)) + Me.TVCD.BorderStyle = System.Windows.Forms.BorderStyle.None + Me.TVCD.Font = New System.Drawing.Font("Segoe UI", 9.0!, System.Drawing.FontStyle.Bold) + Me.TVCD.Name = "TVCD" + Me.TVCD.Size = New System.Drawing.Size(60, 22) + Me.TVCD.Text = "1" + Me.TVCD.TextBoxTextAlign = System.Windows.Forms.HorizontalAlignment.Center ' - 'mnMain + 'BVCApply ' - Me.mnMain.AccessibleRole = System.Windows.Forms.AccessibleRole.MenuBar - Me.mnMain.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch - Me.mnMain.Dock = System.Windows.Forms.DockStyle.None - Me.mnMain.GripMargin = New System.Windows.Forms.Padding(2) - Me.mnMain.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.mnFile, Me.mnEdit, Me.mnSys, Me.mnOptions, Me.mnConversion, Me.mnPreview}) - Me.mnMain.LayoutStyle = System.Windows.Forms.ToolStripLayoutStyle.Flow - Me.mnMain.Location = New System.Drawing.Point(0, 0) - Me.mnMain.Name = "mnMain" - Me.mnMain.Size = New System.Drawing.Size(952, 23) - Me.mnMain.TabIndex = 57 + Me.BVCApply.BackColor = System.Drawing.Color.FromArgb(CType(CType(192, Byte), Integer), CType(CType(192, Byte), Integer), CType(CType(255, Byte), Integer)) + Me.BVCApply.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text + Me.BVCApply.ImageTransparentColor = System.Drawing.Color.Magenta + Me.BVCApply.Name = "BVCApply" + Me.BVCApply.Size = New System.Drawing.Size(96, 20) + Me.BVCApply.Text = "Expand By Ratio" + Me.BVCApply.ToolTipText = "This will expand notes and selection by the ratio next to this button. Ignores ce" & + "nter bar." ' - 'mnFile + 'TVCBPM ' - Me.mnFile.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.mnNew, Me.mnOpen, Me.mnImportSM, Me.mnImportIBMSC, Me.ToolStripSeparator14, Me.mnSave, Me.mnSaveAs, Me.mnExport, Me.ToolStripSeparator15, Me.mnOpenR0, Me.mnOpenR1, Me.mnOpenR2, Me.mnOpenR3, Me.mnOpenR4, Me.ToolStripSeparator16, Me.mnQuit}) - Me.mnFile.Name = "mnFile" - Me.mnFile.Size = New System.Drawing.Size(37, 19) - Me.mnFile.Text = "&File" + Me.TVCBPM.BackColor = System.Drawing.Color.FromArgb(CType(CType(255, Byte), Integer), CType(CType(192, Byte), Integer), CType(CType(192, Byte), Integer)) + Me.TVCBPM.BorderStyle = System.Windows.Forms.BorderStyle.None + Me.TVCBPM.Font = New System.Drawing.Font("Segoe UI", 9.0!, System.Drawing.FontStyle.Bold) + Me.TVCBPM.Name = "TVCBPM" + Me.TVCBPM.Size = New System.Drawing.Size(80, 22) + Me.TVCBPM.Text = "120" + Me.TVCBPM.TextBoxTextAlign = System.Windows.Forms.HorizontalAlignment.Center ' - 'mnNew + 'BVCCalculate ' - Me.mnNew.Image = Global.iBMSC.My.Resources.Resources.x16New - Me.mnNew.Name = "mnNew" - Me.mnNew.ShortcutKeys = CType((System.Windows.Forms.Keys.Control Or System.Windows.Forms.Keys.N), System.Windows.Forms.Keys) - Me.mnNew.Size = New System.Drawing.Size(240, 22) - Me.mnNew.Text = "&New" + Me.BVCCalculate.BackColor = System.Drawing.Color.FromArgb(CType(CType(192, Byte), Integer), CType(CType(192, Byte), Integer), CType(CType(255, Byte), Integer)) + Me.BVCCalculate.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text + Me.BVCCalculate.ImageTransparentColor = System.Drawing.Color.Magenta + Me.BVCCalculate.Name = "BVCCalculate" + Me.BVCCalculate.Size = New System.Drawing.Size(103, 20) + Me.BVCCalculate.Text = "Relocate By Value" + Me.BVCCalculate.ToolTipText = "This will move notes within the selection and preserve the selection, given the B" & + "PM value next to this button. Considers center bar." ' - 'mnOpen + 'BConvertStop ' - Me.mnOpen.Image = Global.iBMSC.My.Resources.Resources.x16Open - Me.mnOpen.Name = "mnOpen" - Me.mnOpen.ShortcutKeys = CType((System.Windows.Forms.Keys.Control Or System.Windows.Forms.Keys.O), System.Windows.Forms.Keys) - Me.mnOpen.Size = New System.Drawing.Size(240, 22) - Me.mnOpen.Text = "&Open" + Me.BConvertStop.BackColor = System.Drawing.Color.FromArgb(CType(CType(192, Byte), Integer), CType(CType(192, Byte), Integer), CType(CType(255, Byte), Integer)) + Me.BConvertStop.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text + Me.BConvertStop.ImageTransparentColor = System.Drawing.Color.Magenta + Me.BConvertStop.Name = "BConvertStop" + Me.BConvertStop.Size = New System.Drawing.Size(115, 20) + Me.BConvertStop.Text = "Transform Into Stop" + Me.BConvertStop.ToolTipText = "This will move notes within the selection and preserve the selection, given the B" & + "PM value next to this button. Considers center bar." ' - 'mnImportSM + 'FStatus ' - Me.mnImportSM.Image = Global.iBMSC.My.Resources.Resources.x16Import2 - Me.mnImportSM.Name = "mnImportSM" - Me.mnImportSM.Size = New System.Drawing.Size(240, 22) - Me.mnImportSM.Text = "Import from .S&M file" + Me.FStatus.AccessibleRole = System.Windows.Forms.AccessibleRole.StatusBar + Me.FStatus.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.FSC, Me.FSW, Me.FSM, Me.FSP1, Me.FSP3, Me.FSP2, Me.FSP4, Me.TimeStatusLabel, Me.FST, Me.FSH, Me.FSE}) + Me.FStatus.Location = New System.Drawing.Point(0, 0) + Me.FStatus.Name = "FStatus" + Me.FStatus.ShowItemToolTips = True + Me.FStatus.Size = New System.Drawing.Size(952, 22) + Me.FStatus.SizingGrip = False + Me.FStatus.TabIndex = 62 + Me.FStatus.Text = "Status" ' - 'mnImportIBMSC + 'FSC ' - Me.mnImportIBMSC.Image = Global.iBMSC.My.Resources.Resources.x16Import2 - Me.mnImportIBMSC.Name = "mnImportIBMSC" - Me.mnImportIBMSC.Size = New System.Drawing.Size(240, 22) - Me.mnImportIBMSC.Text = "Import from .&IBMSC file" + Me.FSC.AutoSize = False + Me.FSC.Name = "FSC" + Me.FSC.Size = New System.Drawing.Size(70, 17) + Me.FSC.Text = "BPM" + Me.FSC.ToolTipText = "Column Caption" ' - 'ToolStripSeparator14 + 'FSW ' - Me.ToolStripSeparator14.Name = "ToolStripSeparator14" - Me.ToolStripSeparator14.Size = New System.Drawing.Size(237, 6) + Me.FSW.AutoSize = False + Me.FSW.ForeColor = System.Drawing.Color.FromArgb(CType(CType(128, Byte), Integer), CType(CType(64, Byte), Integer), CType(CType(0, Byte), Integer)) + Me.FSW.Name = "FSW" + Me.FSW.Size = New System.Drawing.Size(40, 17) + Me.FSW.Text = "01" + Me.FSW.ToolTipText = "Note Index" ' - 'mnSave + 'FSM ' - Me.mnSave.Image = Global.iBMSC.My.Resources.Resources.x16Save - Me.mnSave.Name = "mnSave" - Me.mnSave.ShortcutKeys = CType((System.Windows.Forms.Keys.Control Or System.Windows.Forms.Keys.S), System.Windows.Forms.Keys) - Me.mnSave.Size = New System.Drawing.Size(240, 22) - Me.mnSave.Text = "&Save" + Me.FSM.AutoSize = False + Me.FSM.ForeColor = System.Drawing.Color.Teal + Me.FSM.Name = "FSM" + Me.FSM.Size = New System.Drawing.Size(40, 17) + Me.FSM.Text = "000" + Me.FSM.ToolTipText = "Measure Index" ' - 'mnSaveAs + 'FSP1 ' - Me.mnSaveAs.Image = Global.iBMSC.My.Resources.Resources.x16SaveAs - Me.mnSaveAs.Name = "mnSaveAs" - Me.mnSaveAs.ShortcutKeys = CType(((System.Windows.Forms.Keys.Control Or System.Windows.Forms.Keys.Alt) _ - Or System.Windows.Forms.Keys.S), System.Windows.Forms.Keys) - Me.mnSaveAs.Size = New System.Drawing.Size(240, 22) - Me.mnSaveAs.Text = "Save &As..." + Me.FSP1.AutoSize = False + Me.FSP1.Font = New System.Drawing.Font("Segoe UI", 9.0!, System.Drawing.FontStyle.Bold) + Me.FSP1.Name = "FSP1" + Me.FSP1.Size = New System.Drawing.Size(170, 17) + Me.FSP1.Text = "9.41176470588235 / 9999" + Me.FSP1.ToolTipText = "Grid Resolution" ' - 'mnExport + 'FSP3 ' - Me.mnExport.Image = Global.iBMSC.My.Resources.Resources.x16Export - Me.mnExport.Name = "mnExport" - Me.mnExport.ShortcutKeys = CType(((System.Windows.Forms.Keys.Control Or System.Windows.Forms.Keys.Shift) _ - Or System.Windows.Forms.Keys.E), System.Windows.Forms.Keys) - Me.mnExport.Size = New System.Drawing.Size(240, 22) - Me.mnExport.Text = "&Export .IBMSC file" + Me.FSP3.AutoSize = False + Me.FSP3.Font = New System.Drawing.Font("Segoe UI", 9.0!, System.Drawing.FontStyle.Bold) + Me.FSP3.ForeColor = System.Drawing.Color.Maroon + Me.FSP3.Name = "FSP3" + Me.FSP3.Size = New System.Drawing.Size(85, 17) + Me.FSP3.Text = "9999 / 9999" + Me.FSP3.ToolTipText = "Reduced Resolution" ' - 'ToolStripSeparator15 + 'FSP2 ' - Me.ToolStripSeparator15.Name = "ToolStripSeparator15" - Me.ToolStripSeparator15.Size = New System.Drawing.Size(237, 6) + Me.FSP2.AutoSize = False + Me.FSP2.Font = New System.Drawing.Font("Segoe UI", 9.0!, System.Drawing.FontStyle.Bold) + Me.FSP2.ForeColor = System.Drawing.Color.Green + Me.FSP2.Name = "FSP2" + Me.FSP2.Size = New System.Drawing.Size(170, 17) + Me.FSP2.Text = "112.941176470588 / 9999" + Me.FSP2.ToolTipText = "Measure Resolution" ' - 'mnOpenR0 + 'FSP4 ' - Me.mnOpenR0.Enabled = False - Me.mnOpenR0.Name = "mnOpenR0" - Me.mnOpenR0.ShortcutKeys = CType((System.Windows.Forms.Keys.Alt Or System.Windows.Forms.Keys.D1), System.Windows.Forms.Keys) - Me.mnOpenR0.Size = New System.Drawing.Size(240, 22) - Me.mnOpenR0.Tag = "0" - Me.mnOpenR0.Text = "Recent #0" + Me.FSP4.AutoSize = False + Me.FSP4.Name = "FSP4" + Me.FSP4.Size = New System.Drawing.Size(115, 17) + Me.FSP4.Text = "112.941176470588" + Me.FSP4.ToolTipText = "Absolute Position" ' - 'mnOpenR1 + 'TimeStatusLabel ' - Me.mnOpenR1.Enabled = False - Me.mnOpenR1.Name = "mnOpenR1" - Me.mnOpenR1.ShortcutKeys = CType((System.Windows.Forms.Keys.Alt Or System.Windows.Forms.Keys.D2), System.Windows.Forms.Keys) - Me.mnOpenR1.Size = New System.Drawing.Size(240, 22) - Me.mnOpenR1.Tag = "1" - Me.mnOpenR1.Text = "Recent #1" + Me.TimeStatusLabel.Name = "TimeStatusLabel" + Me.TimeStatusLabel.Size = New System.Drawing.Size(55, 17) + Me.TimeStatusLabel.Text = "00:00:000" ' - 'mnOpenR2 + 'FST ' - Me.mnOpenR2.Enabled = False - Me.mnOpenR2.Name = "mnOpenR2" - Me.mnOpenR2.ShortcutKeys = CType((System.Windows.Forms.Keys.Alt Or System.Windows.Forms.Keys.D3), System.Windows.Forms.Keys) - Me.mnOpenR2.Size = New System.Drawing.Size(240, 22) - Me.mnOpenR2.Tag = "2" - Me.mnOpenR2.Text = "Recent #2" + Me.FST.ForeColor = System.Drawing.Color.Olive + Me.FST.LinkColor = System.Drawing.Color.FromArgb(CType(CType(0, Byte), Integer), CType(CType(0, Byte), Integer), CType(CType(255, Byte), Integer)) + Me.FST.Name = "FST" + Me.FST.Size = New System.Drawing.Size(64, 17) + Me.FST.Text = "Length = 0" ' - 'mnOpenR3 + 'FSH ' - Me.mnOpenR3.Enabled = False - Me.mnOpenR3.Name = "mnOpenR3" - Me.mnOpenR3.ShortcutKeys = CType((System.Windows.Forms.Keys.Alt Or System.Windows.Forms.Keys.D4), System.Windows.Forms.Keys) - Me.mnOpenR3.Size = New System.Drawing.Size(240, 22) - Me.mnOpenR3.Tag = "3" - Me.mnOpenR3.Text = "Recent #3" + Me.FSH.ForeColor = System.Drawing.Color.Blue + Me.FSH.Name = "FSH" + Me.FSH.Size = New System.Drawing.Size(46, 17) + Me.FSH.Text = "Hidden" ' - 'mnOpenR4 + 'FSE ' - Me.mnOpenR4.Enabled = False - Me.mnOpenR4.Name = "mnOpenR4" - Me.mnOpenR4.ShortcutKeys = CType((System.Windows.Forms.Keys.Alt Or System.Windows.Forms.Keys.D5), System.Windows.Forms.Keys) - Me.mnOpenR4.Size = New System.Drawing.Size(240, 22) - Me.mnOpenR4.Tag = "4" - Me.mnOpenR4.Text = "Recent #4" - ' - 'ToolStripSeparator16 - ' - Me.ToolStripSeparator16.Name = "ToolStripSeparator16" - Me.ToolStripSeparator16.Size = New System.Drawing.Size(237, 6) + Me.FSE.ForeColor = System.Drawing.Color.Red + Me.FSE.Name = "FSE" + Me.FSE.Size = New System.Drawing.Size(32, 17) + Me.FSE.Text = "Error" ' - 'mnQuit + 'TimerMiddle ' - Me.mnQuit.Name = "mnQuit" - Me.mnQuit.Size = New System.Drawing.Size(240, 22) - Me.mnQuit.Text = "&Quit" + Me.TimerMiddle.Interval = 15 ' - 'mnEdit + 'ToolStripContainer1 ' - Me.mnEdit.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.mnUndo, Me.mnRedo, Me.ToolStripSeparator17, Me.mnCut, Me.mnCopy, Me.mnPaste, Me.mnDelete, Me.mnSelectAll, Me.mnGotoMeasure, Me.ToolStripSeparator18, Me.mnFind, Me.mnStatistics, Me.mnStatisticsAdvanced, Me.ToolStripSeparator19, Me.mnTimeSelect, Me.mnSelect, Me.mnWrite, Me.ToolStripSeparator23, Me.mnMyO2}) - Me.mnEdit.Name = "mnEdit" - Me.mnEdit.Size = New System.Drawing.Size(39, 19) - Me.mnEdit.Text = "&Edit" ' - 'mnUndo + 'ToolStripContainer1.ContentPanel ' - Me.mnUndo.Enabled = False - Me.mnUndo.Image = Global.iBMSC.My.Resources.Resources.x16Undo - Me.mnUndo.Name = "mnUndo" - Me.mnUndo.ShortcutKeyDisplayString = "Ctrl+Z" - Me.mnUndo.Size = New System.Drawing.Size(256, 22) - Me.mnUndo.Text = "&Undo" + Me.ToolStripContainer1.ContentPanel.Controls.Add(Me.PMain) + Me.ToolStripContainer1.ContentPanel.Controls.Add(Me.SpR) + Me.ToolStripContainer1.ContentPanel.Controls.Add(Me.SpL) + Me.ToolStripContainer1.ContentPanel.Controls.Add(Me.PMainR) + Me.ToolStripContainer1.ContentPanel.Controls.Add(Me.PMainL) + Me.ToolStripContainer1.ContentPanel.Size = New System.Drawing.Size(952, 711) + Me.ToolStripContainer1.Dock = System.Windows.Forms.DockStyle.Fill + Me.ToolStripContainer1.Location = New System.Drawing.Point(0, 0) + Me.ToolStripContainer1.Name = "ToolStripContainer1" + Me.ToolStripContainer1.Size = New System.Drawing.Size(952, 759) + Me.ToolStripContainer1.TabIndex = 65 + Me.ToolStripContainer1.Text = "ToolStripContainer1" ' - 'mnRedo + 'ToolStripContainer1.TopToolStripPanel ' - Me.mnRedo.Enabled = False - Me.mnRedo.Image = Global.iBMSC.My.Resources.Resources.x16Redo - Me.mnRedo.Name = "mnRedo" - Me.mnRedo.ShortcutKeyDisplayString = "Ctrl+Y" - Me.mnRedo.Size = New System.Drawing.Size(256, 22) - Me.mnRedo.Text = "&Redo" + Me.ToolStripContainer1.TopToolStripPanel.Controls.Add(Me.mnMain) + Me.ToolStripContainer1.TopToolStripPanel.Controls.Add(Me.TBMain) ' - 'ToolStripSeparator17 + 'PMain ' - Me.ToolStripSeparator17.Name = "ToolStripSeparator17" - Me.ToolStripSeparator17.Size = New System.Drawing.Size(253, 6) + Me.PMain.BackColor = System.Drawing.Color.Black + Me.PMain.Controls.Add(Me.PMainIn) + Me.PMain.Controls.Add(Me.MainPanelScroll) + Me.PMain.Controls.Add(Me.HS) + Me.PMain.Dock = System.Windows.Forms.DockStyle.Fill + Me.PMain.Font = New System.Drawing.Font("Verdana", 9.0!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.PMain.ForeColor = System.Drawing.Color.White + Me.PMain.Location = New System.Drawing.Point(5, 0) + Me.PMain.Name = "PMain" + Me.PMain.Size = New System.Drawing.Size(942, 711) + Me.PMain.TabIndex = 58 + Me.PMain.Tag = "1" ' - 'mnCut + 'PMainIn ' - Me.mnCut.Image = Global.iBMSC.My.Resources.Resources.x16Cut - Me.mnCut.Name = "mnCut" - Me.mnCut.ShortcutKeyDisplayString = "Ctrl+X" - Me.mnCut.Size = New System.Drawing.Size(256, 22) - Me.mnCut.Text = "Cu&t" + Me.PMainIn.BackColor = System.Drawing.Color.Black + Me.PMainIn.Dock = System.Windows.Forms.DockStyle.Fill + Me.PMainIn.Font = New System.Drawing.Font("Verdana", 9.0!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.PMainIn.ForeColor = System.Drawing.Color.White + Me.PMainIn.Location = New System.Drawing.Point(0, 0) + Me.PMainIn.Name = "PMainIn" + Me.PMainIn.Size = New System.Drawing.Size(925, 694) + Me.PMainIn.TabIndex = 0 + Me.PMainIn.TabStop = True + Me.PMainIn.Tag = "1" ' - 'mnCopy + 'MainPanelScroll ' - Me.mnCopy.Image = Global.iBMSC.My.Resources.Resources.x16Copy - Me.mnCopy.Name = "mnCopy" - Me.mnCopy.ShortcutKeyDisplayString = "Ctrl+C" - Me.mnCopy.Size = New System.Drawing.Size(256, 22) - Me.mnCopy.Text = "&Copy" + Me.MainPanelScroll.AccessibleRole = System.Windows.Forms.AccessibleRole.ScrollBar + Me.MainPanelScroll.Dock = System.Windows.Forms.DockStyle.Right + Me.MainPanelScroll.LargeChange = 592 + Me.MainPanelScroll.Location = New System.Drawing.Point(925, 0) + Me.MainPanelScroll.Maximum = 591 + Me.MainPanelScroll.Minimum = -10000 + Me.MainPanelScroll.Name = "MainPanelScroll" + Me.MainPanelScroll.Size = New System.Drawing.Size(17, 694) + Me.MainPanelScroll.SmallChange = 12 + Me.MainPanelScroll.TabIndex = 2 + Me.MainPanelScroll.Tag = "1" ' - 'mnPaste + 'HS ' - Me.mnPaste.Image = Global.iBMSC.My.Resources.Resources.x16Paste - Me.mnPaste.Name = "mnPaste" - Me.mnPaste.ShortcutKeyDisplayString = "Ctrl+V" - Me.mnPaste.Size = New System.Drawing.Size(256, 22) - Me.mnPaste.Text = "&Paste" + Me.HS.AccessibleRole = System.Windows.Forms.AccessibleRole.ScrollBar + Me.HS.Dock = System.Windows.Forms.DockStyle.Bottom + Me.HS.LargeChange = 777 + Me.HS.Location = New System.Drawing.Point(0, 694) + Me.HS.Maximum = 1233 + Me.HS.Name = "HS" + Me.HS.Size = New System.Drawing.Size(942, 17) + Me.HS.TabIndex = 3 + Me.HS.Tag = "1" ' - 'mnDelete + 'SpR ' - Me.mnDelete.Image = Global.iBMSC.My.Resources.Resources.x16Remove - Me.mnDelete.Name = "mnDelete" - Me.mnDelete.ShortcutKeyDisplayString = "Del" - Me.mnDelete.Size = New System.Drawing.Size(256, 22) - Me.mnDelete.Text = "De&lete" + Me.SpR.Dock = System.Windows.Forms.DockStyle.Right + Me.SpR.FlatAppearance.BorderSize = 0 + Me.SpR.FlatStyle = System.Windows.Forms.FlatStyle.Flat + Me.SpR.Location = New System.Drawing.Point(947, 0) + Me.SpR.Name = "SpR" + Me.SpR.Size = New System.Drawing.Size(5, 711) + Me.SpR.TabIndex = 59 + Me.SpR.TabStop = False + Me.SpR.UseVisualStyleBackColor = True + Me.SpR.Visible = False ' - 'mnSelectAll + 'SpL ' - Me.mnSelectAll.Name = "mnSelectAll" - Me.mnSelectAll.ShortcutKeyDisplayString = "Ctrl+A" - Me.mnSelectAll.Size = New System.Drawing.Size(256, 22) - Me.mnSelectAll.Text = "Select &All" + Me.SpL.Dock = System.Windows.Forms.DockStyle.Left + Me.SpL.FlatAppearance.BorderSize = 0 + Me.SpL.FlatStyle = System.Windows.Forms.FlatStyle.Flat + Me.SpL.Location = New System.Drawing.Point(0, 0) + Me.SpL.Name = "SpL" + Me.SpL.Size = New System.Drawing.Size(5, 711) + Me.SpL.TabIndex = 60 + Me.SpL.TabStop = False + Me.SpL.UseVisualStyleBackColor = True + Me.SpL.Visible = False ' - 'mnGotoMeasure + 'PMainR ' - Me.mnGotoMeasure.Name = "mnGotoMeasure" - Me.mnGotoMeasure.ShortcutKeys = CType((System.Windows.Forms.Keys.Control Or System.Windows.Forms.Keys.G), System.Windows.Forms.Keys) - Me.mnGotoMeasure.Size = New System.Drawing.Size(256, 22) - Me.mnGotoMeasure.Text = "Go To Measure..." + Me.PMainR.BackColor = System.Drawing.Color.Black + Me.PMainR.Controls.Add(Me.PMainInR) + Me.PMainR.Controls.Add(Me.RightPanelScroll) + Me.PMainR.Controls.Add(Me.HSR) + Me.PMainR.Dock = System.Windows.Forms.DockStyle.Right + Me.PMainR.Font = New System.Drawing.Font("Verdana", 9.0!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.PMainR.ForeColor = System.Drawing.Color.White + Me.PMainR.Location = New System.Drawing.Point(952, 0) + Me.PMainR.Name = "PMainR" + Me.PMainR.Size = New System.Drawing.Size(0, 711) + Me.PMainR.TabIndex = 56 + Me.PMainR.Tag = "2" ' - 'ToolStripSeparator18 + 'PMainInR ' - Me.ToolStripSeparator18.Name = "ToolStripSeparator18" - Me.ToolStripSeparator18.Size = New System.Drawing.Size(253, 6) + Me.PMainInR.BackColor = System.Drawing.Color.Black + Me.PMainInR.Dock = System.Windows.Forms.DockStyle.Fill + Me.PMainInR.Font = New System.Drawing.Font("Verdana", 9.0!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.PMainInR.ForeColor = System.Drawing.Color.White + Me.PMainInR.Location = New System.Drawing.Point(0, 0) + Me.PMainInR.Name = "PMainInR" + Me.PMainInR.Size = New System.Drawing.Size(0, 694) + Me.PMainInR.TabIndex = 0 + Me.PMainInR.TabStop = True + Me.PMainInR.Tag = "2" ' - 'mnFind + 'RightPanelScroll ' - Me.mnFind.Image = Global.iBMSC.My.Resources.Resources.x16Find - Me.mnFind.Name = "mnFind" - Me.mnFind.ShortcutKeys = CType((System.Windows.Forms.Keys.Control Or System.Windows.Forms.Keys.F), System.Windows.Forms.Keys) - Me.mnFind.Size = New System.Drawing.Size(256, 22) - Me.mnFind.Text = "&Find / Delete / Replace" + Me.RightPanelScroll.Dock = System.Windows.Forms.DockStyle.Right + Me.RightPanelScroll.LargeChange = 592 + Me.RightPanelScroll.Location = New System.Drawing.Point(-17, 0) + Me.RightPanelScroll.Maximum = 591 + Me.RightPanelScroll.Minimum = -10000 + Me.RightPanelScroll.Name = "RightPanelScroll" + Me.RightPanelScroll.Size = New System.Drawing.Size(17, 694) + Me.RightPanelScroll.SmallChange = 12 + Me.RightPanelScroll.TabIndex = 2 + Me.RightPanelScroll.Tag = "2" ' - 'mnStatistics + 'HSR ' - Me.mnStatistics.Image = Global.iBMSC.My.Resources.Resources.x16Statistics - Me.mnStatistics.Name = "mnStatistics" - Me.mnStatistics.ShortcutKeys = CType((System.Windows.Forms.Keys.Control Or System.Windows.Forms.Keys.T), System.Windows.Forms.Keys) - Me.mnStatistics.Size = New System.Drawing.Size(256, 22) - Me.mnStatistics.Text = "St&atistics" + Me.HSR.Dock = System.Windows.Forms.DockStyle.Bottom + Me.HSR.LargeChange = 777 + Me.HSR.Location = New System.Drawing.Point(0, 694) + Me.HSR.Maximum = 1233 + Me.HSR.Name = "HSR" + Me.HSR.Size = New System.Drawing.Size(0, 17) + Me.HSR.TabIndex = 3 + Me.HSR.Tag = "2" ' - 'mnStatisticsAdvanced + 'PMainL ' - Me.mnStatisticsAdvanced.Image = Global.iBMSC.My.Resources.Resources.x16Statistics - Me.mnStatisticsAdvanced.Name = "mnStatisticsAdvanced" - Me.mnStatisticsAdvanced.ShortcutKeys = CType(((System.Windows.Forms.Keys.Control Or System.Windows.Forms.Keys.Shift) _ - Or System.Windows.Forms.Keys.T), System.Windows.Forms.Keys) - Me.mnStatisticsAdvanced.Size = New System.Drawing.Size(256, 22) - Me.mnStatisticsAdvanced.Text = "Statistics (Ad&vanced)" + Me.PMainL.BackColor = System.Drawing.Color.Black + Me.PMainL.Controls.Add(Me.PMainInL) + Me.PMainL.Controls.Add(Me.LeftPanelScroll) + Me.PMainL.Controls.Add(Me.HSL) + Me.PMainL.Dock = System.Windows.Forms.DockStyle.Left + Me.PMainL.Font = New System.Drawing.Font("Verdana", 9.0!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.PMainL.ForeColor = System.Drawing.Color.White + Me.PMainL.Location = New System.Drawing.Point(0, 0) + Me.PMainL.Name = "PMainL" + Me.PMainL.Size = New System.Drawing.Size(0, 711) + Me.PMainL.TabIndex = 54 + Me.PMainL.Tag = "0" ' - 'ToolStripSeparator19 + 'PMainInL ' - Me.ToolStripSeparator19.Name = "ToolStripSeparator19" - Me.ToolStripSeparator19.Size = New System.Drawing.Size(253, 6) + Me.PMainInL.BackColor = System.Drawing.Color.Black + Me.PMainInL.Dock = System.Windows.Forms.DockStyle.Fill + Me.PMainInL.Font = New System.Drawing.Font("Verdana", 9.0!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.PMainInL.ForeColor = System.Drawing.Color.White + Me.PMainInL.Location = New System.Drawing.Point(0, 0) + Me.PMainInL.Name = "PMainInL" + Me.PMainInL.Size = New System.Drawing.Size(0, 694) + Me.PMainInL.TabIndex = 0 + Me.PMainInL.TabStop = True + Me.PMainInL.Tag = "0" ' - 'mnTimeSelect + 'LeftPanelScroll ' - Me.mnTimeSelect.CheckOnClick = True - Me.mnTimeSelect.Image = Global.iBMSC.My.Resources.Resources.x16TimeSelection - Me.mnTimeSelect.Name = "mnTimeSelect" - Me.mnTimeSelect.ShortcutKeys = System.Windows.Forms.Keys.F1 - Me.mnTimeSelect.Size = New System.Drawing.Size(256, 22) - Me.mnTimeSelect.Text = "T&ime Selection Tool" - ' - 'mnSelect - ' - Me.mnSelect.Checked = True - Me.mnSelect.CheckOnClick = True - Me.mnSelect.CheckState = System.Windows.Forms.CheckState.Checked - Me.mnSelect.Image = Global.iBMSC.My.Resources.Resources.x16Select - Me.mnSelect.Name = "mnSelect" - Me.mnSelect.ShortcutKeys = System.Windows.Forms.Keys.F2 - Me.mnSelect.Size = New System.Drawing.Size(256, 22) - Me.mnSelect.Text = "&Select Tool" + Me.LeftPanelScroll.Dock = System.Windows.Forms.DockStyle.Right + Me.LeftPanelScroll.LargeChange = 592 + Me.LeftPanelScroll.Location = New System.Drawing.Point(-17, 0) + Me.LeftPanelScroll.Maximum = 591 + Me.LeftPanelScroll.Minimum = -10000 + Me.LeftPanelScroll.Name = "LeftPanelScroll" + Me.LeftPanelScroll.Size = New System.Drawing.Size(17, 694) + Me.LeftPanelScroll.SmallChange = 12 + Me.LeftPanelScroll.TabIndex = 2 + Me.LeftPanelScroll.Tag = "0" ' - 'mnWrite + 'HSL ' - Me.mnWrite.CheckOnClick = True - Me.mnWrite.Image = Global.iBMSC.My.Resources.Resources.x16Pen - Me.mnWrite.Name = "mnWrite" - Me.mnWrite.ShortcutKeys = System.Windows.Forms.Keys.F3 - Me.mnWrite.Size = New System.Drawing.Size(256, 22) - Me.mnWrite.Text = "&Write Tool" + Me.HSL.Dock = System.Windows.Forms.DockStyle.Bottom + Me.HSL.LargeChange = 777 + Me.HSL.Location = New System.Drawing.Point(0, 694) + Me.HSL.Maximum = 1233 + Me.HSL.Name = "HSL" + Me.HSL.Size = New System.Drawing.Size(0, 17) + Me.HSL.TabIndex = 3 + Me.HSL.Tag = "0" ' - 'ToolStripSeparator23 + 'POptionsResizer ' - Me.ToolStripSeparator23.Name = "ToolStripSeparator23" - Me.ToolStripSeparator23.Size = New System.Drawing.Size(253, 6) + Me.POptionsResizer.AutoSize = True + Me.POptionsResizer.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink + Me.POptionsResizer.Dock = System.Windows.Forms.DockStyle.Right + Me.POptionsResizer.FlatAppearance.BorderSize = 0 + Me.POptionsResizer.FlatStyle = System.Windows.Forms.FlatStyle.Flat + Me.POptionsResizer.Location = New System.Drawing.Point(952, 0) + Me.POptionsResizer.Name = "POptionsResizer" + Me.POptionsResizer.Size = New System.Drawing.Size(6, 781) + Me.POptionsResizer.TabIndex = 67 + Me.POptionsResizer.TabStop = False + Me.POptionsResizer.UseVisualStyleBackColor = True ' - 'mnMyO2 + 'cVSLockR ' - Me.mnMyO2.Image = Global.iBMSC.My.Resources.Resources.x16MyO2 - Me.mnMyO2.Name = "mnMyO2" - Me.mnMyO2.Size = New System.Drawing.Size(256, 22) - Me.mnMyO2.Text = "MyO2 ToolBox (Chinese Only)" + Me.cVSLockR.Appearance = System.Windows.Forms.Appearance.Button + Me.cVSLockR.FlatStyle = System.Windows.Forms.FlatStyle.Popup + Me.cVSLockR.Image = Global.iBMSC.My.Resources.Resources.x16Lock + Me.cVSLockR.Location = New System.Drawing.Point(46, 0) + Me.cVSLockR.Margin = New System.Windows.Forms.Padding(0) + Me.cVSLockR.Name = "cVSLockR" + Me.cVSLockR.Size = New System.Drawing.Size(23, 23) + Me.cVSLockR.TabIndex = 305 + Me.cVSLockR.Tag = "2" + Me.ToolTipUniversal.SetToolTip(Me.cVSLockR, "Lock Right Editing Panel") ' - 'mnSys + 'cVSLock ' - Me.mnSys.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.mnSMenu, Me.mnSTB, Me.mnSOP, Me.mnSStatus, Me.mnSLSplitter, Me.mnSRSplitter, Me.ToolStripSeparator21, Me.CGShow, Me.CGShowS, Me.CGShowBG, Me.CGShowM, Me.CGShowMB, Me.CGShowV, Me.CGShowC, Me.ToolStripSeparator22, Me.CGBPM, Me.CGSTOP, Me.CGSCROLL, Me.CGBLP}) - Me.mnSys.Name = "mnSys" - Me.mnSys.Size = New System.Drawing.Size(44, 19) - Me.mnSys.Text = "&View" + Me.cVSLock.Appearance = System.Windows.Forms.Appearance.Button + Me.cVSLock.FlatStyle = System.Windows.Forms.FlatStyle.Popup + Me.cVSLock.Image = Global.iBMSC.My.Resources.Resources.x16Lock + Me.cVSLock.Location = New System.Drawing.Point(23, 0) + Me.cVSLock.Margin = New System.Windows.Forms.Padding(0) + Me.cVSLock.Name = "cVSLock" + Me.cVSLock.Size = New System.Drawing.Size(23, 23) + Me.cVSLock.TabIndex = 304 + Me.cVSLock.Tag = "1" + Me.ToolTipUniversal.SetToolTip(Me.cVSLock, "Lock Middle Editing Panel") ' - 'mnSMenu + 'cVSLockL ' - Me.mnSMenu.Checked = True - Me.mnSMenu.CheckOnClick = True - Me.mnSMenu.CheckState = System.Windows.Forms.CheckState.Checked - Me.mnSMenu.Name = "mnSMenu" - Me.mnSMenu.Size = New System.Drawing.Size(210, 22) - Me.mnSMenu.Text = "&Main Menu" - Me.mnSMenu.Visible = False + Me.cVSLockL.Appearance = System.Windows.Forms.Appearance.Button + Me.cVSLockL.FlatStyle = System.Windows.Forms.FlatStyle.Popup + Me.cVSLockL.Image = Global.iBMSC.My.Resources.Resources.x16Lock + Me.cVSLockL.Location = New System.Drawing.Point(0, 0) + Me.cVSLockL.Margin = New System.Windows.Forms.Padding(0) + Me.cVSLockL.Name = "cVSLockL" + Me.cVSLockL.Size = New System.Drawing.Size(23, 23) + Me.cVSLockL.TabIndex = 303 + Me.cVSLockL.Tag = "0" + Me.ToolTipUniversal.SetToolTip(Me.cVSLockL, "Lock Left Editing Panel") ' - 'mnSTB + 'BWLock ' - Me.mnSTB.Checked = True - Me.mnSTB.CheckOnClick = True - Me.mnSTB.CheckState = System.Windows.Forms.CheckState.Checked - Me.mnSTB.Name = "mnSTB" - Me.mnSTB.Size = New System.Drawing.Size(210, 22) - Me.mnSTB.Text = "&ToolBar" + Me.BWLock.Appearance = System.Windows.Forms.Appearance.Button + Me.BWLock.Checked = True + Me.BWLock.CheckState = System.Windows.Forms.CheckState.Checked + Me.BWLock.Image = Global.iBMSC.My.Resources.Resources.x16Lock + Me.BWLock.Location = New System.Drawing.Point(48, 0) + Me.BWLock.Margin = New System.Windows.Forms.Padding(0) + Me.BWLock.Name = "BWLock" + Me.BWLock.Size = New System.Drawing.Size(24, 24) + Me.BWLock.TabIndex = 404 + Me.ToolTipUniversal.SetToolTip(Me.BWLock, "Lock to BGM") + Me.BWLock.UseVisualStyleBackColor = True ' - 'mnSOP + 'BWClear ' - Me.mnSOP.Checked = True - Me.mnSOP.CheckOnClick = True - Me.mnSOP.CheckState = System.Windows.Forms.CheckState.Checked - Me.mnSOP.Name = "mnSOP" - Me.mnSOP.Size = New System.Drawing.Size(210, 22) - Me.mnSOP.Text = "&Options Panel" + Me.BWClear.Image = Global.iBMSC.My.Resources.Resources.x16Remove + Me.BWClear.Location = New System.Drawing.Point(24, 0) + Me.BWClear.Margin = New System.Windows.Forms.Padding(0) + Me.BWClear.Name = "BWClear" + Me.BWClear.Size = New System.Drawing.Size(24, 24) + Me.BWClear.TabIndex = 403 + Me.ToolTipUniversal.SetToolTip(Me.BWClear, "Clear WaveForm") + Me.BWClear.UseVisualStyleBackColor = True ' - 'mnSStatus + 'BWLoad ' - Me.mnSStatus.Checked = True - Me.mnSStatus.CheckOnClick = True - Me.mnSStatus.CheckState = System.Windows.Forms.CheckState.Checked - Me.mnSStatus.Name = "mnSStatus" - Me.mnSStatus.Size = New System.Drawing.Size(210, 22) - Me.mnSStatus.Text = "&Status Bar" + Me.BWLoad.Image = Global.iBMSC.My.Resources.Resources.x16Add + Me.BWLoad.Location = New System.Drawing.Point(0, 0) + Me.BWLoad.Margin = New System.Windows.Forms.Padding(0) + Me.BWLoad.Name = "BWLoad" + Me.BWLoad.Size = New System.Drawing.Size(24, 24) + Me.BWLoad.TabIndex = 402 + Me.ToolTipUniversal.SetToolTip(Me.BWLoad, "Load WaveForm") + Me.BWLoad.UseVisualStyleBackColor = True ' - 'mnSLSplitter + 'BWAVRemove ' - Me.mnSLSplitter.CheckOnClick = True - Me.mnSLSplitter.Name = "mnSLSplitter" - Me.mnSLSplitter.ShortcutKeys = CType((System.Windows.Forms.Keys.Alt Or System.Windows.Forms.Keys.Left), System.Windows.Forms.Keys) - Me.mnSLSplitter.Size = New System.Drawing.Size(210, 22) - Me.mnSLSplitter.Text = "&Left Splitter" + Me.BWAVRemove.Image = Global.iBMSC.My.Resources.Resources.x16Remove + Me.BWAVRemove.Location = New System.Drawing.Point(72, 0) + Me.BWAVRemove.Margin = New System.Windows.Forms.Padding(0) + Me.BWAVRemove.Name = "BWAVRemove" + Me.BWAVRemove.Size = New System.Drawing.Size(24, 24) + Me.BWAVRemove.TabIndex = 605 + Me.ToolTipUniversal.SetToolTip(Me.BWAVRemove, "Remove") + Me.BWAVRemove.UseVisualStyleBackColor = True ' - 'mnSRSplitter + 'BWAVBrowse ' - Me.mnSRSplitter.CheckOnClick = True - Me.mnSRSplitter.Name = "mnSRSplitter" - Me.mnSRSplitter.ShortcutKeys = CType((System.Windows.Forms.Keys.Alt Or System.Windows.Forms.Keys.Right), System.Windows.Forms.Keys) - Me.mnSRSplitter.Size = New System.Drawing.Size(210, 22) - Me.mnSRSplitter.Text = "&Right Splitter" + Me.BWAVBrowse.Image = Global.iBMSC.My.Resources.Resources.x16PlayerBrowse + Me.BWAVBrowse.Location = New System.Drawing.Point(48, 0) + Me.BWAVBrowse.Margin = New System.Windows.Forms.Padding(0) + Me.BWAVBrowse.Name = "BWAVBrowse" + Me.BWAVBrowse.Size = New System.Drawing.Size(24, 24) + Me.BWAVBrowse.TabIndex = 604 + Me.ToolTipUniversal.SetToolTip(Me.BWAVBrowse, "Browse") + Me.BWAVBrowse.UseVisualStyleBackColor = True ' - 'ToolStripSeparator21 + 'BWAVDown ' - Me.ToolStripSeparator21.Name = "ToolStripSeparator21" - Me.ToolStripSeparator21.Size = New System.Drawing.Size(207, 6) + Me.BWAVDown.Image = Global.iBMSC.My.Resources.Resources.x16Down + Me.BWAVDown.Location = New System.Drawing.Point(24, 0) + Me.BWAVDown.Margin = New System.Windows.Forms.Padding(0) + Me.BWAVDown.Name = "BWAVDown" + Me.BWAVDown.Size = New System.Drawing.Size(24, 24) + Me.BWAVDown.TabIndex = 603 + Me.ToolTipUniversal.SetToolTip(Me.BWAVDown, "Move Down") + Me.BWAVDown.UseVisualStyleBackColor = True ' - 'CGShow + 'BWAVUp ' - Me.CGShow.Checked = True - Me.CGShow.CheckOnClick = True - Me.CGShow.CheckState = System.Windows.Forms.CheckState.Checked - Me.CGShow.Name = "CGShow" - Me.CGShow.Size = New System.Drawing.Size(210, 22) - Me.CGShow.Text = "Grid" + Me.BWAVUp.Image = Global.iBMSC.My.Resources.Resources.x16Up + Me.BWAVUp.Location = New System.Drawing.Point(0, 0) + Me.BWAVUp.Margin = New System.Windows.Forms.Padding(0) + Me.BWAVUp.Name = "BWAVUp" + Me.BWAVUp.Size = New System.Drawing.Size(24, 24) + Me.BWAVUp.TabIndex = 602 + Me.ToolTipUniversal.SetToolTip(Me.BWAVUp, "Move Up") + Me.BWAVUp.UseVisualStyleBackColor = True ' - 'CGShowS + 'POptions ' - Me.CGShowS.Checked = True - Me.CGShowS.CheckOnClick = True - Me.CGShowS.CheckState = System.Windows.Forms.CheckState.Checked - Me.CGShowS.Name = "CGShowS" - Me.CGShowS.Size = New System.Drawing.Size(210, 22) - Me.CGShowS.Text = "Sub" + Me.POptions.AutoSize = True + Me.POptions.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink + Me.POptions.Controls.Add(Me.POExpansion) + Me.POptions.Controls.Add(Me.POBeat) + Me.POptions.Controls.Add(Me.POWAV) + Me.POptions.Controls.Add(Me.POWaveForm) + Me.POptions.Controls.Add(Me.POGrid) + Me.POptions.Controls.Add(Me.POHeader) + Me.POptions.Dock = System.Windows.Forms.DockStyle.Top + Me.POptions.Location = New System.Drawing.Point(0, 0) + Me.POptions.Name = "POptions" + Me.POptions.Size = New System.Drawing.Size(183, 1747) + Me.POptions.TabIndex = 29 ' - 'CGShowBG + 'POExpansion ' - Me.CGShowBG.Checked = True - Me.CGShowBG.CheckOnClick = True - Me.CGShowBG.CheckState = System.Windows.Forms.CheckState.Checked - Me.CGShowBG.Name = "CGShowBG" - Me.CGShowBG.Size = New System.Drawing.Size(210, 22) - Me.CGShowBG.Text = "BackGround" + Me.POExpansion.AutoSize = True + Me.POExpansion.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink + Me.POExpansion.Controls.Add(Me.POExpansionInner) + Me.POExpansion.Controls.Add(Me.POExpansionSwitch) + Me.POExpansion.Dock = System.Windows.Forms.DockStyle.Top + Me.POExpansion.Location = New System.Drawing.Point(0, 1452) + Me.POExpansion.Name = "POExpansion" + Me.POExpansion.Size = New System.Drawing.Size(183, 295) + Me.POExpansion.TabIndex = 6 ' - 'CGShowM + 'POExpansionInner ' - Me.CGShowM.Checked = True - Me.CGShowM.CheckOnClick = True - Me.CGShowM.CheckState = System.Windows.Forms.CheckState.Checked - Me.CGShowM.Name = "CGShowM" - Me.CGShowM.Size = New System.Drawing.Size(210, 22) - Me.CGShowM.Text = "Measure Index" - ' - 'CGShowMB - ' - Me.CGShowMB.Checked = True - Me.CGShowMB.CheckOnClick = True - Me.CGShowMB.CheckState = System.Windows.Forms.CheckState.Checked - Me.CGShowMB.Name = "CGShowMB" - Me.CGShowMB.Size = New System.Drawing.Size(210, 22) - Me.CGShowMB.Text = "Measure Line" - ' - 'CGShowV + Me.POExpansionInner.Controls.Add(Me.ECSelectSection) + Me.POExpansionInner.Controls.Add(Me.TExpansion) + Me.POExpansionInner.Controls.Add(Me.POExpansionResizer) + Me.POExpansionInner.Dock = System.Windows.Forms.DockStyle.Top + Me.POExpansionInner.Font = New System.Drawing.Font("Consolas", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.POExpansionInner.Location = New System.Drawing.Point(0, 20) + Me.POExpansionInner.Name = "POExpansionInner" + Me.POExpansionInner.Size = New System.Drawing.Size(183, 275) + Me.POExpansionInner.TabIndex = 7 + Me.POExpansionInner.Visible = False ' - Me.CGShowV.Checked = True - Me.CGShowV.CheckOnClick = True - Me.CGShowV.CheckState = System.Windows.Forms.CheckState.Checked - Me.CGShowV.Name = "CGShowV" - Me.CGShowV.Size = New System.Drawing.Size(210, 22) - Me.CGShowV.Text = "Vertical Line" + 'ECSelectSection ' - 'CGShowC + Me.ECSelectSection.Anchor = System.Windows.Forms.AnchorStyles.Bottom + Me.ECSelectSection.Font = New System.Drawing.Font("Segoe UI", 9.0!) + Me.ECSelectSection.Location = New System.Drawing.Point(0, 250) + Me.ECSelectSection.Name = "ECSelectSection" + Me.ECSelectSection.Size = New System.Drawing.Size(183, 20) + Me.ECSelectSection.TabIndex = 1003 + Me.ECSelectSection.Text = "Select Section" + Me.ECSelectSection.UseVisualStyleBackColor = True ' - Me.CGShowC.Checked = True - Me.CGShowC.CheckOnClick = True - Me.CGShowC.CheckState = System.Windows.Forms.CheckState.Checked - Me.CGShowC.Name = "CGShowC" - Me.CGShowC.Size = New System.Drawing.Size(210, 22) - Me.CGShowC.Text = "Column Caption" + 'TExpansion ' - 'ToolStripSeparator22 + Me.TExpansion.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle + Me.TExpansion.Dock = System.Windows.Forms.DockStyle.Top + Me.TExpansion.HideSelection = False + Me.TExpansion.Location = New System.Drawing.Point(0, 0) + Me.TExpansion.Multiline = True + Me.TExpansion.Name = "TExpansion" + Me.TExpansion.ScrollBars = System.Windows.Forms.ScrollBars.Vertical + Me.TExpansion.Size = New System.Drawing.Size(183, 245) + Me.TExpansion.TabIndex = 1002 + Me.TExpansion.WordWrap = False ' - Me.ToolStripSeparator22.Name = "ToolStripSeparator22" - Me.ToolStripSeparator22.Size = New System.Drawing.Size(207, 6) + 'POExpansionResizer ' - 'CGBPM + Me.POExpansionResizer.Dock = System.Windows.Forms.DockStyle.Bottom + Me.POExpansionResizer.FlatAppearance.BorderSize = 0 + Me.POExpansionResizer.FlatStyle = System.Windows.Forms.FlatStyle.Flat + Me.POExpansionResizer.Location = New System.Drawing.Point(0, 270) + Me.POExpansionResizer.Margin = New System.Windows.Forms.Padding(0) + Me.POExpansionResizer.Name = "POExpansionResizer" + Me.POExpansionResizer.Size = New System.Drawing.Size(183, 5) + Me.POExpansionResizer.TabIndex = 65 + Me.POExpansionResizer.TabStop = False + Me.POExpansionResizer.UseVisualStyleBackColor = True ' - Me.CGBPM.Checked = True - Me.CGBPM.CheckOnClick = True - Me.CGBPM.CheckState = System.Windows.Forms.CheckState.Checked - Me.CGBPM.Name = "CGBPM" - Me.CGBPM.ShortcutKeys = CType((System.Windows.Forms.Keys.Alt Or System.Windows.Forms.Keys.B), System.Windows.Forms.Keys) - Me.CGBPM.Size = New System.Drawing.Size(210, 22) - Me.CGBPM.Text = "BPM" + 'POExpansionSwitch ' - 'CGSTOP + Me.POExpansionSwitch.Appearance = System.Windows.Forms.Appearance.Button + Me.POExpansionSwitch.BackColor = System.Drawing.SystemColors.Control + Me.POExpansionSwitch.Cursor = System.Windows.Forms.Cursors.Hand + Me.POExpansionSwitch.Dock = System.Windows.Forms.DockStyle.Top + Me.POExpansionSwitch.Font = New System.Drawing.Font("Segoe UI", 9.0!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.POExpansionSwitch.Location = New System.Drawing.Point(0, 0) + Me.POExpansionSwitch.Name = "POExpansionSwitch" + Me.POExpansionSwitch.Size = New System.Drawing.Size(183, 20) + Me.POExpansionSwitch.TabIndex = 1001 + Me.POExpansionSwitch.TabStop = False + Me.POExpansionSwitch.Text = "Expansion Code" + Me.POExpansionSwitch.TextAlign = System.Drawing.ContentAlignment.MiddleCenter + Me.POExpansionSwitch.UseCompatibleTextRendering = True + Me.POExpansionSwitch.UseVisualStyleBackColor = False ' - Me.CGSTOP.Checked = True - Me.CGSTOP.CheckOnClick = True - Me.CGSTOP.CheckState = System.Windows.Forms.CheckState.Checked - Me.CGSTOP.Name = "CGSTOP" - Me.CGSTOP.ShortcutKeys = CType((System.Windows.Forms.Keys.Alt Or System.Windows.Forms.Keys.S), System.Windows.Forms.Keys) - Me.CGSTOP.Size = New System.Drawing.Size(210, 22) - Me.CGSTOP.Text = "STOP" + 'POBeat ' - 'CGSCROLL + Me.POBeat.AutoSize = True + Me.POBeat.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink + Me.POBeat.Controls.Add(Me.POBeatInner) + Me.POBeat.Controls.Add(Me.POBeatSwitch) + Me.POBeat.Dock = System.Windows.Forms.DockStyle.Top + Me.POBeat.Location = New System.Drawing.Point(0, 1182) + Me.POBeat.Name = "POBeat" + Me.POBeat.Size = New System.Drawing.Size(183, 270) + Me.POBeat.TabIndex = 5 ' - Me.CGSCROLL.Checked = True - Me.CGSCROLL.CheckOnClick = True - Me.CGSCROLL.CheckState = System.Windows.Forms.CheckState.Checked - Me.CGSCROLL.Name = "CGSCROLL" - Me.CGSCROLL.ShortcutKeys = CType((System.Windows.Forms.Keys.Alt Or System.Windows.Forms.Keys.C), System.Windows.Forms.Keys) - Me.CGSCROLL.Size = New System.Drawing.Size(210, 22) - Me.CGSCROLL.Text = "SCROLL" + 'POBeatInner ' - 'CGBLP + Me.POBeatInner.ColumnCount = 1 + Me.POBeatInner.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100.0!)) + Me.POBeatInner.Controls.Add(Me.POBeatExpander, 0, 1) + Me.POBeatInner.Controls.Add(Me.POBeatResizer, 0, 4) + Me.POBeatInner.Controls.Add(Me.TableLayoutPanel7, 0, 0) + Me.POBeatInner.Controls.Add(Me.LBeat, 0, 3) + Me.POBeatInner.Controls.Add(Me.POBeatPart2, 0, 2) + Me.POBeatInner.Dock = System.Windows.Forms.DockStyle.Top + Me.POBeatInner.Location = New System.Drawing.Point(0, 20) + Me.POBeatInner.Name = "POBeatInner" + Me.POBeatInner.RowCount = 5 + Me.POBeatInner.RowStyles.Add(New System.Windows.Forms.RowStyle()) + Me.POBeatInner.RowStyles.Add(New System.Windows.Forms.RowStyle()) + Me.POBeatInner.RowStyles.Add(New System.Windows.Forms.RowStyle()) + Me.POBeatInner.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100.0!)) + Me.POBeatInner.RowStyles.Add(New System.Windows.Forms.RowStyle()) + Me.POBeatInner.Size = New System.Drawing.Size(183, 250) + Me.POBeatInner.TabIndex = 6 + Me.POBeatInner.Visible = False ' - Me.CGBLP.Checked = True - Me.CGBLP.CheckOnClick = True - Me.CGBLP.CheckState = System.Windows.Forms.CheckState.Checked - Me.CGBLP.Name = "CGBLP" - Me.CGBLP.ShortcutKeys = CType((System.Windows.Forms.Keys.Alt Or System.Windows.Forms.Keys.G), System.Windows.Forms.Keys) - Me.CGBLP.Size = New System.Drawing.Size(210, 22) - Me.CGBLP.Text = "BGA / Layer / Poor" + 'POBeatExpander ' - 'mnOptions + Me.POBeatExpander.Appearance = System.Windows.Forms.Appearance.Button + Me.POBeatExpander.AutoSize = True + Me.POBeatExpander.Cursor = System.Windows.Forms.Cursors.Hand + Me.POBeatExpander.Dock = System.Windows.Forms.DockStyle.Top + Me.POBeatExpander.FlatAppearance.BorderSize = 0 + Me.POBeatExpander.FlatStyle = System.Windows.Forms.FlatStyle.Popup + Me.POBeatExpander.Location = New System.Drawing.Point(0, 54) + Me.POBeatExpander.Margin = New System.Windows.Forms.Padding(0) + Me.POBeatExpander.Name = "POBeatExpander" + Me.POBeatExpander.Size = New System.Drawing.Size(183, 25) + Me.POBeatExpander.TabIndex = 901 + Me.POBeatExpander.TabStop = False + Me.POBeatExpander.Text = "Expand..." + Me.POBeatExpander.TextAlign = System.Drawing.ContentAlignment.MiddleCenter + Me.POBeatExpander.UseVisualStyleBackColor = False ' - Me.mnOptions.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.mnNTInput, Me.mnErrorCheck, Me.mnPreviewOnClick, Me.mnShowFileName, Me.ToolStripSeparator20, Me.mnGOptions, Me.mnVOptions, Me.mnVCOptions, Me.mnPOptions, Me.mnLanguage, Me.mnTheme}) - Me.mnOptions.Name = "mnOptions" - Me.mnOptions.Size = New System.Drawing.Size(61, 19) - Me.mnOptions.Text = "&Options" + 'POBeatResizer ' - 'mnNTInput + Me.POBeatInner.SetColumnSpan(Me.POBeatResizer, 2) + Me.POBeatResizer.Dock = System.Windows.Forms.DockStyle.Top + Me.POBeatResizer.FlatAppearance.BorderSize = 0 + Me.POBeatResizer.FlatStyle = System.Windows.Forms.FlatStyle.Flat + Me.POBeatResizer.Location = New System.Drawing.Point(0, 245) + Me.POBeatResizer.Margin = New System.Windows.Forms.Padding(0) + Me.POBeatResizer.Name = "POBeatResizer" + Me.POBeatResizer.Size = New System.Drawing.Size(183, 5) + Me.POBeatResizer.TabIndex = 64 + Me.POBeatResizer.TabStop = False + Me.POBeatResizer.UseVisualStyleBackColor = True ' - Me.mnNTInput.Checked = True - Me.mnNTInput.CheckOnClick = True - Me.mnNTInput.CheckState = System.Windows.Forms.CheckState.Checked - Me.mnNTInput.Image = Global.iBMSC.My.Resources.Resources.x16NTInput - Me.mnNTInput.Name = "mnNTInput" - Me.mnNTInput.ShortcutKeys = System.Windows.Forms.Keys.F8 - Me.mnNTInput.Size = New System.Drawing.Size(253, 22) - Me.mnNTInput.Text = "L&N Input Style - NT/BMSE" + 'TableLayoutPanel7 ' - 'mnErrorCheck + Me.TableLayoutPanel7.AutoSize = True + Me.TableLayoutPanel7.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink + Me.TableLayoutPanel7.ColumnCount = 4 + Me.TableLayoutPanel7.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 30.0!)) + Me.TableLayoutPanel7.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle()) + Me.TableLayoutPanel7.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 30.0!)) + Me.TableLayoutPanel7.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 40.0!)) + Me.TableLayoutPanel7.Controls.Add(Me.nBeatD, 2, 0) + Me.TableLayoutPanel7.Controls.Add(Me.BBeatApplyV, 3, 1) + Me.TableLayoutPanel7.Controls.Add(Me.nBeatN, 0, 0) + Me.TableLayoutPanel7.Controls.Add(Me.BBeatApply, 3, 0) + Me.TableLayoutPanel7.Controls.Add(Me.Label7, 1, 0) + Me.TableLayoutPanel7.Controls.Add(Me.tBeatValue, 0, 1) + Me.TableLayoutPanel7.Dock = System.Windows.Forms.DockStyle.Fill + Me.TableLayoutPanel7.Location = New System.Drawing.Point(0, 0) + Me.TableLayoutPanel7.Margin = New System.Windows.Forms.Padding(0) + Me.TableLayoutPanel7.Name = "TableLayoutPanel7" + Me.TableLayoutPanel7.RowCount = 2 + Me.TableLayoutPanel7.RowStyles.Add(New System.Windows.Forms.RowStyle()) + Me.TableLayoutPanel7.RowStyles.Add(New System.Windows.Forms.RowStyle()) + Me.TableLayoutPanel7.Size = New System.Drawing.Size(183, 54) + Me.TableLayoutPanel7.TabIndex = 63 ' - Me.mnErrorCheck.Checked = True - Me.mnErrorCheck.CheckOnClick = True - Me.mnErrorCheck.CheckState = System.Windows.Forms.CheckState.Checked - Me.mnErrorCheck.Image = Global.iBMSC.My.Resources.Resources.x16CheckError - Me.mnErrorCheck.Name = "mnErrorCheck" - Me.mnErrorCheck.Size = New System.Drawing.Size(253, 22) - Me.mnErrorCheck.Text = "&Error Check" + 'nBeatD ' - 'mnPreviewOnClick + Me.nBeatD.Dock = System.Windows.Forms.DockStyle.Fill + Me.nBeatD.Location = New System.Drawing.Point(66, 3) + Me.nBeatD.Maximum = New Decimal(New Integer() {10000, 0, 0, 0}) + Me.nBeatD.Minimum = New Decimal(New Integer() {1, 0, 0, 0}) + Me.nBeatD.Name = "nBeatD" + Me.nBeatD.Size = New System.Drawing.Size(45, 23) + Me.nBeatD.TabIndex = 803 + Me.nBeatD.Value = New Decimal(New Integer() {4, 0, 0, 0}) ' - Me.mnPreviewOnClick.Checked = True - Me.mnPreviewOnClick.CheckOnClick = True - Me.mnPreviewOnClick.CheckState = System.Windows.Forms.CheckState.Checked - Me.mnPreviewOnClick.Image = Global.iBMSC.My.Resources.Resources.x16PreviewOnClick - Me.mnPreviewOnClick.Name = "mnPreviewOnClick" - Me.mnPreviewOnClick.Size = New System.Drawing.Size(253, 22) - Me.mnPreviewOnClick.Text = "Preview on &Click" + 'BBeatApplyV ' - 'mnShowFileName + Me.BBeatApplyV.AutoSize = True + Me.BBeatApplyV.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink + Me.BBeatApplyV.Dock = System.Windows.Forms.DockStyle.Fill + Me.BBeatApplyV.Location = New System.Drawing.Point(114, 29) + Me.BBeatApplyV.Margin = New System.Windows.Forms.Padding(0, 0, 3, 0) + Me.BBeatApplyV.Name = "BBeatApplyV" + Me.BBeatApplyV.Size = New System.Drawing.Size(66, 25) + Me.BBeatApplyV.TabIndex = 806 + Me.BBeatApplyV.Text = "Apply" + Me.BBeatApplyV.UseVisualStyleBackColor = True ' - Me.mnShowFileName.CheckOnClick = True - Me.mnShowFileName.Image = Global.iBMSC.My.Resources.Resources.x16ShowFileNameN - Me.mnShowFileName.Name = "mnShowFileName" - Me.mnShowFileName.Size = New System.Drawing.Size(253, 22) - Me.mnShowFileName.Text = "Show &File Name on Notes" + 'nBeatN ' - 'ToolStripSeparator20 + Me.nBeatN.Dock = System.Windows.Forms.DockStyle.Fill + Me.nBeatN.Location = New System.Drawing.Point(3, 3) + Me.nBeatN.Maximum = New Decimal(New Integer() {99999, 0, 0, 0}) + Me.nBeatN.Minimum = New Decimal(New Integer() {1, 0, 0, 0}) + Me.nBeatN.Name = "nBeatN" + Me.nBeatN.Size = New System.Drawing.Size(45, 23) + Me.nBeatN.TabIndex = 802 + Me.nBeatN.Value = New Decimal(New Integer() {4, 0, 0, 0}) ' - Me.ToolStripSeparator20.Name = "ToolStripSeparator20" - Me.ToolStripSeparator20.Size = New System.Drawing.Size(250, 6) + 'BBeatApply ' - 'mnGOptions + Me.BBeatApply.AutoSize = True + Me.BBeatApply.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink + Me.BBeatApply.Dock = System.Windows.Forms.DockStyle.Fill + Me.BBeatApply.Location = New System.Drawing.Point(114, 2) + Me.BBeatApply.Margin = New System.Windows.Forms.Padding(0, 2, 3, 2) + Me.BBeatApply.Name = "BBeatApply" + Me.BBeatApply.Size = New System.Drawing.Size(66, 25) + Me.BBeatApply.TabIndex = 804 + Me.BBeatApply.Text = "Apply" + Me.BBeatApply.UseVisualStyleBackColor = True ' - Me.mnGOptions.Image = Global.iBMSC.My.Resources.Resources.x16GeneralOptions - Me.mnGOptions.Name = "mnGOptions" - Me.mnGOptions.ShortcutKeys = System.Windows.Forms.Keys.F10 - Me.mnGOptions.Size = New System.Drawing.Size(253, 22) - Me.mnGOptions.Text = "&General Options" + 'Label7 ' - 'mnVOptions + Me.Label7.Anchor = System.Windows.Forms.AnchorStyles.None + Me.Label7.AutoSize = True + Me.Label7.Location = New System.Drawing.Point(51, 7) + Me.Label7.Margin = New System.Windows.Forms.Padding(0) + Me.Label7.Name = "Label7" + Me.Label7.Size = New System.Drawing.Size(12, 15) + Me.Label7.TabIndex = 31 + Me.Label7.Text = "/" + Me.Label7.TextAlign = System.Drawing.ContentAlignment.MiddleCenter ' - Me.mnVOptions.Image = Global.iBMSC.My.Resources.Resources.x16VisualOptions - Me.mnVOptions.Name = "mnVOptions" - Me.mnVOptions.ShortcutKeys = System.Windows.Forms.Keys.F12 - Me.mnVOptions.Size = New System.Drawing.Size(253, 22) - Me.mnVOptions.Text = "&Visual Options" + 'tBeatValue ' - 'mnVCOptions + Me.TableLayoutPanel7.SetColumnSpan(Me.tBeatValue, 3) + Me.tBeatValue.Dock = System.Windows.Forms.DockStyle.Fill + Me.tBeatValue.Location = New System.Drawing.Point(3, 30) + Me.tBeatValue.Margin = New System.Windows.Forms.Padding(3, 1, 3, 0) + Me.tBeatValue.Name = "tBeatValue" + Me.tBeatValue.Size = New System.Drawing.Size(108, 23) + Me.tBeatValue.TabIndex = 805 + Me.tBeatValue.Text = "1" ' - Me.mnVCOptions.Image = Global.iBMSC.My.Resources.Resources.x16VisualOptions - Me.mnVCOptions.Name = "mnVCOptions" - Me.mnVCOptions.ShortcutKeys = CType((System.Windows.Forms.Keys.Shift Or System.Windows.Forms.Keys.F12), System.Windows.Forms.Keys) - Me.mnVCOptions.Size = New System.Drawing.Size(253, 22) - Me.mnVCOptions.Text = "C&olor Override Options" + 'LBeat ' - 'mnPOptions + Me.LBeat.Dock = System.Windows.Forms.DockStyle.Fill + Me.LBeat.Font = New System.Drawing.Font("Consolas", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.LBeat.IntegralHeight = False + Me.LBeat.ItemHeight = 14 + Me.LBeat.Items.AddRange(New Object() {"000: 15.984375 (1023/64)"}) + Me.LBeat.Location = New System.Drawing.Point(3, 155) + Me.LBeat.Margin = New System.Windows.Forms.Padding(3, 0, 3, 0) + Me.LBeat.Name = "LBeat" + Me.LBeat.SelectionMode = System.Windows.Forms.SelectionMode.MultiExtended + Me.LBeat.Size = New System.Drawing.Size(177, 90) + Me.LBeat.TabIndex = 906 ' - Me.mnPOptions.Image = Global.iBMSC.My.Resources.Resources.x16PlayerOptions - Me.mnPOptions.Name = "mnPOptions" - Me.mnPOptions.ShortcutKeys = System.Windows.Forms.Keys.F9 - Me.mnPOptions.Size = New System.Drawing.Size(253, 22) - Me.mnPOptions.Text = "&Player Options" + 'POBeatPart2 ' - 'mnConversion + Me.POBeatPart2.AutoSize = True + Me.POBeatPart2.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink + Me.POBeatPart2.ColumnCount = 1 + Me.POBeatPart2.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100.0!)) + Me.POBeatPart2.Controls.Add(Me.CBeatScale, 0, 3) + Me.POBeatPart2.Controls.Add(Me.CBeatCut, 0, 2) + Me.POBeatPart2.Controls.Add(Me.CBeatMeasure, 0, 1) + Me.POBeatPart2.Controls.Add(Me.CBeatPreserve, 0, 0) + Me.POBeatPart2.Dock = System.Windows.Forms.DockStyle.Fill + Me.POBeatPart2.Location = New System.Drawing.Point(0, 79) + Me.POBeatPart2.Margin = New System.Windows.Forms.Padding(0) + Me.POBeatPart2.Name = "POBeatPart2" + Me.POBeatPart2.RowCount = 4 + Me.POBeatPart2.RowStyles.Add(New System.Windows.Forms.RowStyle()) + Me.POBeatPart2.RowStyles.Add(New System.Windows.Forms.RowStyle()) + Me.POBeatPart2.RowStyles.Add(New System.Windows.Forms.RowStyle()) + Me.POBeatPart2.RowStyles.Add(New System.Windows.Forms.RowStyle()) + Me.POBeatPart2.Size = New System.Drawing.Size(183, 76) + Me.POBeatPart2.TabIndex = 66 + Me.POBeatPart2.Visible = False ' - Me.mnConversion.DropDown = Me.cmnConversion - Me.mnConversion.Name = "mnConversion" - Me.mnConversion.Size = New System.Drawing.Size(84, 19) - Me.mnConversion.Text = "&Conversions" + 'CBeatScale ' - 'cmnConversion + Me.CBeatScale.AutoSize = True + Me.CBeatScale.Location = New System.Drawing.Point(3, 57) + Me.CBeatScale.Margin = New System.Windows.Forms.Padding(3, 0, 3, 0) + Me.CBeatScale.Name = "CBeatScale" + Me.CBeatScale.Size = New System.Drawing.Size(151, 19) + Me.CBeatScale.TabIndex = 905 + Me.CBeatScale.Text = "Scale to measure length" + Me.CBeatScale.UseVisualStyleBackColor = True ' - Me.cmnConversion.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.POBLong, Me.POBShort, Me.POBLongShort, Me.ToolStripSeparator10, Me.POBHidden, Me.POBVisible, Me.POBHiddenVisible, Me.ToolStripSeparator11, Me.POBModify, Me.POBMirror, Me.POBFlip, Me.POBRandom, Me.POBSRandom, Me.POBSort}) - Me.cmnConversion.Name = "cmnLanguage" - Me.cmnConversion.Size = New System.Drawing.Size(222, 280) + 'CBeatCut ' - 'POBLong + Me.CBeatCut.AutoEllipsis = True + Me.CBeatCut.Dock = System.Windows.Forms.DockStyle.Fill + Me.CBeatCut.Location = New System.Drawing.Point(3, 38) + Me.CBeatCut.Margin = New System.Windows.Forms.Padding(3, 0, 3, 0) + Me.CBeatCut.Name = "CBeatCut" + Me.CBeatCut.Size = New System.Drawing.Size(177, 19) + Me.CBeatCut.TabIndex = 904 + Me.CBeatCut.Text = "Keep measure position and cut overflow" + Me.CBeatCut.UseVisualStyleBackColor = True ' - Me.POBLong.Enabled = False - Me.POBLong.Image = Global.iBMSC.My.Resources.Resources.ConvertNotesL - Me.POBLong.Name = "POBLong" - Me.POBLong.Size = New System.Drawing.Size(221, 22) - Me.POBLong.Text = "→ &Long Note" + 'CBeatMeasure ' - 'POBShort + Me.CBeatMeasure.AutoSize = True + Me.CBeatMeasure.Location = New System.Drawing.Point(3, 19) + Me.CBeatMeasure.Margin = New System.Windows.Forms.Padding(3, 0, 3, 0) + Me.CBeatMeasure.Name = "CBeatMeasure" + Me.CBeatMeasure.Size = New System.Drawing.Size(145, 19) + Me.CBeatMeasure.TabIndex = 903 + Me.CBeatMeasure.Text = "Keep measure position" + Me.CBeatMeasure.UseVisualStyleBackColor = True ' - Me.POBShort.Image = Global.iBMSC.My.Resources.Resources.ConvertNotesN - Me.POBShort.Name = "POBShort" - Me.POBShort.Size = New System.Drawing.Size(221, 22) - Me.POBShort.Text = "→ &Short Note" + 'CBeatPreserve ' - 'POBLongShort + Me.CBeatPreserve.AutoSize = True + Me.CBeatPreserve.Checked = True + Me.CBeatPreserve.Location = New System.Drawing.Point(3, 0) + Me.CBeatPreserve.Margin = New System.Windows.Forms.Padding(3, 0, 3, 0) + Me.CBeatPreserve.Name = "CBeatPreserve" + Me.CBeatPreserve.Size = New System.Drawing.Size(145, 19) + Me.CBeatPreserve.TabIndex = 902 + Me.CBeatPreserve.TabStop = True + Me.CBeatPreserve.Text = "Keep absolute position" + Me.CBeatPreserve.UseVisualStyleBackColor = True ' - Me.POBLongShort.Enabled = False - Me.POBLongShort.Image = Global.iBMSC.My.Resources.Resources.ConvertNotes - Me.POBLongShort.Name = "POBLongShort" - Me.POBLongShort.Size = New System.Drawing.Size(221, 22) - Me.POBLongShort.Text = "Long Note ↔ Short Note" + 'POBeatSwitch ' - 'ToolStripSeparator10 + Me.POBeatSwitch.Appearance = System.Windows.Forms.Appearance.Button + Me.POBeatSwitch.BackColor = System.Drawing.SystemColors.Control + Me.POBeatSwitch.Cursor = System.Windows.Forms.Cursors.Hand + Me.POBeatSwitch.Dock = System.Windows.Forms.DockStyle.Top + Me.POBeatSwitch.Font = New System.Drawing.Font("Segoe UI", 9.0!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.POBeatSwitch.Location = New System.Drawing.Point(0, 0) + Me.POBeatSwitch.Name = "POBeatSwitch" + Me.POBeatSwitch.Size = New System.Drawing.Size(183, 20) + Me.POBeatSwitch.TabIndex = 801 + Me.POBeatSwitch.TabStop = False + Me.POBeatSwitch.Text = "Beat" + Me.POBeatSwitch.TextAlign = System.Drawing.ContentAlignment.MiddleCenter + Me.POBeatSwitch.UseCompatibleTextRendering = True + Me.POBeatSwitch.UseVisualStyleBackColor = False ' - Me.ToolStripSeparator10.Name = "ToolStripSeparator10" - Me.ToolStripSeparator10.Size = New System.Drawing.Size(218, 6) + 'POWAV ' - 'POBHidden + Me.POWAV.AllowDrop = True + Me.POWAV.AutoSize = True + Me.POWAV.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink + Me.POWAV.Controls.Add(Me.POWAVInner) + Me.POWAV.Controls.Add(Me.POWAVSwitch) + Me.POWAV.Dock = System.Windows.Forms.DockStyle.Top + Me.POWAV.Location = New System.Drawing.Point(0, 912) + Me.POWAV.Name = "POWAV" + Me.POWAV.Size = New System.Drawing.Size(183, 270) + Me.POWAV.TabIndex = 4 ' - Me.POBHidden.Image = Global.iBMSC.My.Resources.Resources.ConvertNotesH - Me.POBHidden.Name = "POBHidden" - Me.POBHidden.Size = New System.Drawing.Size(221, 22) - Me.POBHidden.Text = "→ &Hidden Note" + 'POWAVInner ' - 'POBVisible + Me.POWAVInner.ColumnCount = 1 + Me.POWAVInner.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100.0!)) + Me.POWAVInner.Controls.Add(Me.POWAVExpander, 0, 1) + Me.POWAVInner.Controls.Add(Me.LWAV, 0, 3) + Me.POWAVInner.Controls.Add(Me.FlowLayoutPanel3, 0, 0) + Me.POWAVInner.Controls.Add(Me.POWAVResizer, 0, 4) + Me.POWAVInner.Controls.Add(Me.POWAVPart2, 0, 2) + Me.POWAVInner.Dock = System.Windows.Forms.DockStyle.Top + Me.POWAVInner.Location = New System.Drawing.Point(0, 20) + Me.POWAVInner.Name = "POWAVInner" + Me.POWAVInner.RowCount = 5 + Me.POWAVInner.RowStyles.Add(New System.Windows.Forms.RowStyle()) + Me.POWAVInner.RowStyles.Add(New System.Windows.Forms.RowStyle()) + Me.POWAVInner.RowStyles.Add(New System.Windows.Forms.RowStyle()) + Me.POWAVInner.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100.0!)) + Me.POWAVInner.RowStyles.Add(New System.Windows.Forms.RowStyle()) + Me.POWAVInner.Size = New System.Drawing.Size(183, 250) + Me.POWAVInner.TabIndex = 5 ' - Me.POBVisible.Image = Global.iBMSC.My.Resources.Resources.ConvertNotesV - Me.POBVisible.Name = "POBVisible" - Me.POBVisible.Size = New System.Drawing.Size(221, 22) - Me.POBVisible.Text = "→ &Visible Note" + 'POWAVExpander ' - 'POBHiddenVisible + Me.POWAVExpander.Appearance = System.Windows.Forms.Appearance.Button + Me.POWAVExpander.AutoSize = True + Me.POWAVExpander.Cursor = System.Windows.Forms.Cursors.Hand + Me.POWAVExpander.Dock = System.Windows.Forms.DockStyle.Top + Me.POWAVExpander.FlatAppearance.BorderSize = 0 + Me.POWAVExpander.FlatStyle = System.Windows.Forms.FlatStyle.Popup + Me.POWAVExpander.Location = New System.Drawing.Point(0, 30) + Me.POWAVExpander.Margin = New System.Windows.Forms.Padding(0) + Me.POWAVExpander.Name = "POWAVExpander" + Me.POWAVExpander.Size = New System.Drawing.Size(183, 25) + Me.POWAVExpander.TabIndex = 701 + Me.POWAVExpander.TabStop = False + Me.POWAVExpander.Text = "Expand..." + Me.POWAVExpander.TextAlign = System.Drawing.ContentAlignment.MiddleCenter + Me.POWAVExpander.UseVisualStyleBackColor = False ' - Me.POBHiddenVisible.Image = Global.iBMSC.My.Resources.Resources.ConvertNotesHV - Me.POBHiddenVisible.Name = "POBHiddenVisible" - Me.POBHiddenVisible.Size = New System.Drawing.Size(221, 22) - Me.POBHiddenVisible.Text = "Hidden Note ↔ Visible Note" + 'LWAV ' - 'ToolStripSeparator11 + Me.LWAV.Dock = System.Windows.Forms.DockStyle.Fill + Me.LWAV.Font = New System.Drawing.Font("Consolas", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.LWAV.IntegralHeight = False + Me.LWAV.ItemHeight = 14 + Me.LWAV.Location = New System.Drawing.Point(3, 93) + Me.LWAV.Margin = New System.Windows.Forms.Padding(3, 0, 3, 0) + Me.LWAV.Name = "LWAV" + Me.LWAV.SelectionMode = System.Windows.Forms.SelectionMode.MultiExtended + Me.LWAV.Size = New System.Drawing.Size(177, 152) + Me.LWAV.TabIndex = 704 ' - Me.ToolStripSeparator11.Name = "ToolStripSeparator11" - Me.ToolStripSeparator11.Size = New System.Drawing.Size(218, 6) + 'FlowLayoutPanel3 ' - 'POBModify + Me.FlowLayoutPanel3.AutoSize = True + Me.FlowLayoutPanel3.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink + Me.FlowLayoutPanel3.Controls.Add(Me.BWAVUp) + Me.FlowLayoutPanel3.Controls.Add(Me.BWAVDown) + Me.FlowLayoutPanel3.Controls.Add(Me.BWAVBrowse) + Me.FlowLayoutPanel3.Controls.Add(Me.BWAVRemove) + Me.FlowLayoutPanel3.Location = New System.Drawing.Point(3, 3) + Me.FlowLayoutPanel3.Name = "FlowLayoutPanel3" + Me.FlowLayoutPanel3.Size = New System.Drawing.Size(96, 24) + Me.FlowLayoutPanel3.TabIndex = 26 + Me.FlowLayoutPanel3.WrapContents = False ' - Me.POBModify.Image = Global.iBMSC.My.Resources.Resources.x16ModifyLabel - Me.POBModify.Name = "POBModify" - Me.POBModify.Size = New System.Drawing.Size(221, 22) - Me.POBModify.Text = "Modify &Labels" - ' - 'POBMirror + 'POWAVResizer ' - Me.POBMirror.Image = Global.iBMSC.My.Resources.Resources.x16Mirror - Me.POBMirror.Name = "POBMirror" - Me.POBMirror.Size = New System.Drawing.Size(221, 22) - Me.POBMirror.Text = "&Mirror" + Me.POWAVResizer.Dock = System.Windows.Forms.DockStyle.Top + Me.POWAVResizer.FlatAppearance.BorderSize = 0 + Me.POWAVResizer.FlatStyle = System.Windows.Forms.FlatStyle.Flat + Me.POWAVResizer.Location = New System.Drawing.Point(0, 245) + Me.POWAVResizer.Margin = New System.Windows.Forms.Padding(0) + Me.POWAVResizer.Name = "POWAVResizer" + Me.POWAVResizer.Size = New System.Drawing.Size(183, 5) + Me.POWAVResizer.TabIndex = 33 + Me.POWAVResizer.TabStop = False + Me.POWAVResizer.UseVisualStyleBackColor = True ' - 'POBFlip + 'POWAVPart2 ' - Me.POBFlip.Image = Global.iBMSC.My.Resources.Resources.x16Flip - Me.POBFlip.Name = "POBFlip" - Me.POBFlip.Size = New System.Drawing.Size(221, 22) - Me.POBFlip.Text = "&Flip" + Me.POWAVPart2.AutoSize = True + Me.POWAVPart2.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink + Me.POWAVPart2.ColumnCount = 1 + Me.POWAVPart2.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100.0!)) + Me.POWAVPart2.Controls.Add(Me.CWAVMultiSelect, 0, 0) + Me.POWAVPart2.Controls.Add(Me.CWAVChangeLabel, 0, 1) + Me.POWAVPart2.Dock = System.Windows.Forms.DockStyle.Fill + Me.POWAVPart2.Location = New System.Drawing.Point(0, 55) + Me.POWAVPart2.Margin = New System.Windows.Forms.Padding(0) + Me.POWAVPart2.Name = "POWAVPart2" + Me.POWAVPart2.RowCount = 2 + Me.POWAVPart2.RowStyles.Add(New System.Windows.Forms.RowStyle()) + Me.POWAVPart2.RowStyles.Add(New System.Windows.Forms.RowStyle()) + Me.POWAVPart2.Size = New System.Drawing.Size(183, 38) + Me.POWAVPart2.TabIndex = 35 + Me.POWAVPart2.Visible = False ' - 'POBRandom + 'CWAVMultiSelect ' - Me.POBRandom.Image = Global.iBMSC.My.Resources.Resources.x16Mirror - Me.POBRandom.Name = "POBRandom" - Me.POBRandom.Size = New System.Drawing.Size(221, 22) - Me.POBRandom.Text = "&Random" + Me.CWAVMultiSelect.AutoSize = True + Me.CWAVMultiSelect.Checked = True + Me.CWAVMultiSelect.CheckState = System.Windows.Forms.CheckState.Checked + Me.CWAVMultiSelect.Location = New System.Drawing.Point(3, 0) + Me.CWAVMultiSelect.Margin = New System.Windows.Forms.Padding(3, 0, 3, 0) + Me.CWAVMultiSelect.Name = "CWAVMultiSelect" + Me.CWAVMultiSelect.Size = New System.Drawing.Size(154, 19) + Me.CWAVMultiSelect.TabIndex = 702 + Me.CWAVMultiSelect.Text = "Allow Multiple Selection" + Me.CWAVMultiSelect.UseVisualStyleBackColor = True ' - 'POBSRandom + 'CWAVChangeLabel ' - Me.POBSRandom.Image = Global.iBMSC.My.Resources.Resources.x16Mirror - Me.POBSRandom.Name = "POBSRandom" - Me.POBSRandom.Size = New System.Drawing.Size(221, 22) - Me.POBSRandom.Text = "S-R&andom" + Me.CWAVChangeLabel.AutoSize = True + Me.CWAVChangeLabel.Checked = True + Me.CWAVChangeLabel.CheckState = System.Windows.Forms.CheckState.Checked + Me.CWAVChangeLabel.Location = New System.Drawing.Point(3, 19) + Me.CWAVChangeLabel.Margin = New System.Windows.Forms.Padding(3, 0, 3, 0) + Me.CWAVChangeLabel.Name = "CWAVChangeLabel" + Me.CWAVChangeLabel.Size = New System.Drawing.Size(155, 19) + Me.CWAVChangeLabel.TabIndex = 703 + Me.CWAVChangeLabel.Text = "Synchronize Note Labels" + Me.CWAVChangeLabel.UseVisualStyleBackColor = True ' - 'POBSort + 'POWAVSwitch ' - Me.POBSort.Image = Global.iBMSC.My.Resources.Resources.lgwidth - Me.POBSort.Name = "POBSort" - Me.POBSort.Size = New System.Drawing.Size(221, 22) - Me.POBSort.Text = "S&ort" + Me.POWAVSwitch.Appearance = System.Windows.Forms.Appearance.Button + Me.POWAVSwitch.BackColor = System.Drawing.SystemColors.Control + Me.POWAVSwitch.Checked = True + Me.POWAVSwitch.CheckState = System.Windows.Forms.CheckState.Checked + Me.POWAVSwitch.Cursor = System.Windows.Forms.Cursors.Hand + Me.POWAVSwitch.Dock = System.Windows.Forms.DockStyle.Top + Me.POWAVSwitch.Font = New System.Drawing.Font("Segoe UI", 9.0!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.POWAVSwitch.Location = New System.Drawing.Point(0, 0) + Me.POWAVSwitch.Name = "POWAVSwitch" + Me.POWAVSwitch.Size = New System.Drawing.Size(183, 20) + Me.POWAVSwitch.TabIndex = 601 + Me.POWAVSwitch.TabStop = False + Me.POWAVSwitch.Text = "#WAV (Sounds List)" + Me.POWAVSwitch.TextAlign = System.Drawing.ContentAlignment.MiddleCenter + Me.POWAVSwitch.UseCompatibleTextRendering = True + Me.POWAVSwitch.UseVisualStyleBackColor = False ' - 'mnPreview + 'POWaveForm ' - Me.mnPreview.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.mnPlayB, Me.mnPlay, Me.mnStop}) - Me.mnPreview.Name = "mnPreview" - Me.mnPreview.Size = New System.Drawing.Size(60, 19) - Me.mnPreview.Text = "&Preview" + Me.POWaveForm.AutoSize = True + Me.POWaveForm.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink + Me.POWaveForm.Controls.Add(Me.POWaveFormInner) + Me.POWaveForm.Controls.Add(Me.POWaveFormSwitch) + Me.POWaveForm.Dock = System.Windows.Forms.DockStyle.Top + Me.POWaveForm.Location = New System.Drawing.Point(0, 669) + Me.POWaveForm.Name = "POWaveForm" + Me.POWaveForm.Size = New System.Drawing.Size(183, 243) + Me.POWaveForm.TabIndex = 3 ' - 'mnPlayB + 'POWaveFormInner ' - Me.mnPlayB.Image = Global.iBMSC.My.Resources.Resources.x16PlayB - Me.mnPlayB.Name = "mnPlayB" - Me.mnPlayB.ShortcutKeys = System.Windows.Forms.Keys.F5 - Me.mnPlayB.Size = New System.Drawing.Size(201, 22) - Me.mnPlayB.Text = "Play from &beginning" + Me.POWaveFormInner.AutoSize = True + Me.POWaveFormInner.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink + Me.POWaveFormInner.Controls.Add(Me.POWaveFormPart2) + Me.POWaveFormInner.Controls.Add(Me.POWaveFormExpander) + Me.POWaveFormInner.Controls.Add(Me.POWaveFormPart1) + Me.POWaveFormInner.Dock = System.Windows.Forms.DockStyle.Top + Me.POWaveFormInner.Location = New System.Drawing.Point(0, 20) + Me.POWaveFormInner.Name = "POWaveFormInner" + Me.POWaveFormInner.Size = New System.Drawing.Size(183, 223) + Me.POWaveFormInner.TabIndex = 29 + Me.POWaveFormInner.Visible = False ' - 'mnPlay + 'POWaveFormPart2 ' - Me.mnPlay.Image = Global.iBMSC.My.Resources.Resources.x16Play - Me.mnPlay.Name = "mnPlay" - Me.mnPlay.ShortcutKeys = System.Windows.Forms.Keys.F6 - Me.mnPlay.Size = New System.Drawing.Size(201, 22) - Me.mnPlay.Text = "&Play from here" + Me.POWaveFormPart2.AutoSize = True + Me.POWaveFormPart2.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink + Me.POWaveFormPart2.ColumnCount = 3 + Me.POWaveFormPart2.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle()) + Me.POWaveFormPart2.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 70.0!)) + Me.POWaveFormPart2.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 30.0!)) + Me.POWaveFormPart2.Controls.Add(Me.TWSaturation, 2, 4) + Me.POWaveFormPart2.Controls.Add(Me.PictureBox2, 0, 0) + Me.POWaveFormPart2.Controls.Add(Me.TWTransparency, 2, 3) + Me.POWaveFormPart2.Controls.Add(Me.PictureBox3, 0, 1) + Me.POWaveFormPart2.Controls.Add(Me.TWPrecision, 2, 2) + Me.POWaveFormPart2.Controls.Add(Me.PictureBox4, 0, 2) + Me.POWaveFormPart2.Controls.Add(Me.TWWidth, 2, 1) + Me.POWaveFormPart2.Controls.Add(Me.PictureBox5, 0, 3) + Me.POWaveFormPart2.Controls.Add(Me.TWLeft, 2, 0) + Me.POWaveFormPart2.Controls.Add(Me.PictureBox6, 0, 4) + Me.POWaveFormPart2.Controls.Add(Me.TWSaturation2, 1, 4) + Me.POWaveFormPart2.Controls.Add(Me.TWLeft2, 1, 0) + Me.POWaveFormPart2.Controls.Add(Me.TWTransparency2, 1, 3) + Me.POWaveFormPart2.Controls.Add(Me.TWWidth2, 1, 1) + Me.POWaveFormPart2.Controls.Add(Me.TWPrecision2, 1, 2) + Me.POWaveFormPart2.Dock = System.Windows.Forms.DockStyle.Top + Me.POWaveFormPart2.Location = New System.Drawing.Point(0, 83) + Me.POWaveFormPart2.Name = "POWaveFormPart2" + Me.POWaveFormPart2.RowCount = 5 + Me.POWaveFormPart2.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 28.0!)) + Me.POWaveFormPart2.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 28.0!)) + Me.POWaveFormPart2.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 28.0!)) + Me.POWaveFormPart2.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 28.0!)) + Me.POWaveFormPart2.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 28.0!)) + Me.POWaveFormPart2.Size = New System.Drawing.Size(183, 140) + Me.POWaveFormPart2.TabIndex = 5 ' - 'mnStop + 'TWSaturation ' - Me.mnStop.Image = Global.iBMSC.My.Resources.Resources.x16Stop - Me.mnStop.Name = "mnStop" - Me.mnStop.ShortcutKeys = System.Windows.Forms.Keys.F7 - Me.mnStop.Size = New System.Drawing.Size(201, 22) - Me.mnStop.Text = "&Stop" + Me.TWSaturation.Dock = System.Windows.Forms.DockStyle.Fill + Me.TWSaturation.Increment = New Decimal(New Integer() {50, 0, 0, 0}) + Me.TWSaturation.Location = New System.Drawing.Point(137, 112) + Me.TWSaturation.Margin = New System.Windows.Forms.Padding(0, 0, 3, 0) + Me.TWSaturation.Maximum = New Decimal(New Integer() {1000, 0, 0, 0}) + Me.TWSaturation.Name = "TWSaturation" + Me.TWSaturation.Size = New System.Drawing.Size(43, 23) + Me.TWSaturation.TabIndex = 511 ' - 'POConvert + 'PictureBox2 ' - Me.POConvert.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image - Me.POConvert.DropDown = Me.cmnConversion - Me.POConvert.Image = Global.iBMSC.My.Resources.Resources.ConvertNotes - Me.POConvert.ImageTransparentColor = System.Drawing.Color.Magenta - Me.POConvert.Name = "POConvert" - Me.POConvert.Size = New System.Drawing.Size(29, 22) - Me.POConvert.Text = "Convert Notes" + Me.PictureBox2.Image = Global.iBMSC.My.Resources.Resources.WAVLeft + Me.PictureBox2.Location = New System.Drawing.Point(3, 0) + Me.PictureBox2.Margin = New System.Windows.Forms.Padding(3, 0, 3, 0) + Me.PictureBox2.Name = "PictureBox2" + Me.PictureBox2.Size = New System.Drawing.Size(24, 24) + Me.PictureBox2.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize + Me.PictureBox2.TabIndex = 60 + Me.PictureBox2.TabStop = False ' - 'TBMain + 'TWTransparency ' - Me.TBMain.AccessibleRole = System.Windows.Forms.AccessibleRole.ToolBar - Me.TBMain.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch - Me.TBMain.Dock = System.Windows.Forms.DockStyle.None - Me.TBMain.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.TBNew, Me.TBOpen, Me.TBSave, Me.ToolStripSeparator1, Me.TBCut, Me.TBCopy, Me.TBPaste, Me.TBFind, Me.ToolStripSeparator24, Me.TBStatistics, Me.POConvert, Me.TBMyO2, Me.ToolStripSeparator4, Me.TBErrorCheck, Me.TBPreviewOnClick, Me.TBShowFileName, Me.ToolStripSeparator8, Me.TBNTInput, Me.TBWavIncrease, Me.ToolStripSeparator2, Me.TBUndo, Me.TBRedo, Me.ToolStripSeparator5, Me.TBTimeSelect, Me.TBSelect, Me.TBWrite, Me.ToolStripSeparator3, Me.TBPlayB, Me.TBPlay, Me.TBStop, Me.TBPOptions, Me.ToolStripSeparator7, Me.TBVOptions, Me.TBGOptions, Me.TBLanguage, Me.TBTheme, Me.POBStorm}) - Me.TBMain.Location = New System.Drawing.Point(3, 23) - Me.TBMain.Name = "TBMain" - Me.TBMain.Size = New System.Drawing.Size(751, 25) - Me.TBMain.TabIndex = 64 - Me.TBMain.Text = "Main Toolbar" + Me.TWTransparency.Dock = System.Windows.Forms.DockStyle.Fill + Me.TWTransparency.Increment = New Decimal(New Integer() {10, 0, 0, 0}) + Me.TWTransparency.Location = New System.Drawing.Point(137, 84) + Me.TWTransparency.Margin = New System.Windows.Forms.Padding(0, 0, 3, 0) + Me.TWTransparency.Maximum = New Decimal(New Integer() {255, 0, 0, 0}) + Me.TWTransparency.Name = "TWTransparency" + Me.TWTransparency.Size = New System.Drawing.Size(43, 23) + Me.TWTransparency.TabIndex = 509 + Me.TWTransparency.Value = New Decimal(New Integer() {80, 0, 0, 0}) ' - 'TBNew + 'PictureBox3 ' - Me.TBNew.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image - Me.TBNew.Image = Global.iBMSC.My.Resources.Resources.x16New - Me.TBNew.ImageTransparentColor = System.Drawing.Color.Transparent - Me.TBNew.Name = "TBNew" - Me.TBNew.Size = New System.Drawing.Size(23, 22) - Me.TBNew.Text = "New (Ctrl+N)" + Me.PictureBox3.Image = Global.iBMSC.My.Resources.Resources.WAVWidth + Me.PictureBox3.Location = New System.Drawing.Point(3, 28) + Me.PictureBox3.Margin = New System.Windows.Forms.Padding(3, 0, 3, 0) + Me.PictureBox3.Name = "PictureBox3" + Me.PictureBox3.Size = New System.Drawing.Size(24, 24) + Me.PictureBox3.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize + Me.PictureBox3.TabIndex = 61 + Me.PictureBox3.TabStop = False ' - 'TBOpen + 'TWPrecision ' - Me.TBOpen.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image - Me.TBOpen.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.TBOpenR0, Me.TBOpenR1, Me.TBOpenR2, Me.TBOpenR3, Me.TBOpenR4, Me.ToolStripSeparator12, Me.TBImportSM, Me.TBImportIBMSC}) - Me.TBOpen.Image = Global.iBMSC.My.Resources.Resources.x16Open - Me.TBOpen.ImageTransparentColor = System.Drawing.Color.Magenta - Me.TBOpen.Name = "TBOpen" - Me.TBOpen.Size = New System.Drawing.Size(32, 22) - Me.TBOpen.Text = "Open (Ctrl+O)" + Me.TWPrecision.Dock = System.Windows.Forms.DockStyle.Fill + Me.TWPrecision.Location = New System.Drawing.Point(137, 56) + Me.TWPrecision.Margin = New System.Windows.Forms.Padding(0, 0, 3, 0) + Me.TWPrecision.Maximum = New Decimal(New Integer() {50, 0, 0, 0}) + Me.TWPrecision.Name = "TWPrecision" + Me.TWPrecision.Size = New System.Drawing.Size(43, 23) + Me.TWPrecision.TabIndex = 507 + Me.TWPrecision.Value = New Decimal(New Integer() {5, 0, 0, 0}) ' - 'TBOpenR0 + 'PictureBox4 ' - Me.TBOpenR0.Enabled = False - Me.TBOpenR0.Name = "TBOpenR0" - Me.TBOpenR0.Size = New System.Drawing.Size(199, 22) - Me.TBOpenR0.Tag = "0" - Me.TBOpenR0.Text = "Recent #0" + Me.PictureBox4.Image = Global.iBMSC.My.Resources.Resources.WAVPrecision + Me.PictureBox4.Location = New System.Drawing.Point(3, 56) + Me.PictureBox4.Margin = New System.Windows.Forms.Padding(3, 0, 3, 0) + Me.PictureBox4.Name = "PictureBox4" + Me.PictureBox4.Size = New System.Drawing.Size(24, 24) + Me.PictureBox4.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize + Me.PictureBox4.TabIndex = 62 + Me.PictureBox4.TabStop = False ' - 'TBOpenR1 + 'TWWidth ' - Me.TBOpenR1.Enabled = False - Me.TBOpenR1.Name = "TBOpenR1" - Me.TBOpenR1.Size = New System.Drawing.Size(199, 22) - Me.TBOpenR1.Tag = "1" - Me.TBOpenR1.Text = "Recent #1" + Me.TWWidth.Dock = System.Windows.Forms.DockStyle.Fill + Me.TWWidth.Increment = New Decimal(New Integer() {10, 0, 0, 0}) + Me.TWWidth.Location = New System.Drawing.Point(137, 28) + Me.TWWidth.Margin = New System.Windows.Forms.Padding(0, 0, 3, 0) + Me.TWWidth.Maximum = New Decimal(New Integer() {1000, 0, 0, 0}) + Me.TWWidth.Name = "TWWidth" + Me.TWWidth.Size = New System.Drawing.Size(43, 23) + Me.TWWidth.TabIndex = 505 + Me.TWWidth.Value = New Decimal(New Integer() {200, 0, 0, 0}) ' - 'TBOpenR2 + 'PictureBox5 ' - Me.TBOpenR2.Enabled = False - Me.TBOpenR2.Name = "TBOpenR2" - Me.TBOpenR2.Size = New System.Drawing.Size(199, 22) - Me.TBOpenR2.Tag = "2" - Me.TBOpenR2.Text = "Recent #2" + Me.PictureBox5.Image = Global.iBMSC.My.Resources.Resources.WAVTransparency + Me.PictureBox5.Location = New System.Drawing.Point(3, 84) + Me.PictureBox5.Margin = New System.Windows.Forms.Padding(3, 0, 3, 0) + Me.PictureBox5.Name = "PictureBox5" + Me.PictureBox5.Size = New System.Drawing.Size(24, 24) + Me.PictureBox5.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize + Me.PictureBox5.TabIndex = 67 + Me.PictureBox5.TabStop = False ' - 'TBOpenR3 + 'TWLeft ' - Me.TBOpenR3.Enabled = False - Me.TBOpenR3.Name = "TBOpenR3" - Me.TBOpenR3.Size = New System.Drawing.Size(199, 22) - Me.TBOpenR3.Tag = "3" - Me.TBOpenR3.Text = "Recent #3" + Me.TWLeft.Dock = System.Windows.Forms.DockStyle.Fill + Me.TWLeft.Increment = New Decimal(New Integer() {5, 0, 0, 0}) + Me.TWLeft.Location = New System.Drawing.Point(137, 0) + Me.TWLeft.Margin = New System.Windows.Forms.Padding(0, 0, 3, 0) + Me.TWLeft.Maximum = New Decimal(New Integer() {800, 0, 0, 0}) + Me.TWLeft.Name = "TWLeft" + Me.TWLeft.Size = New System.Drawing.Size(43, 23) + Me.TWLeft.TabIndex = 503 + Me.TWLeft.Value = New Decimal(New Integer() {50, 0, 0, 0}) ' - 'TBOpenR4 + 'PictureBox6 ' - Me.TBOpenR4.Enabled = False - Me.TBOpenR4.Name = "TBOpenR4" - Me.TBOpenR4.Size = New System.Drawing.Size(199, 22) - Me.TBOpenR4.Tag = "4" - Me.TBOpenR4.Text = "Recent #4" + Me.PictureBox6.Image = Global.iBMSC.My.Resources.Resources.WAVSaturation + Me.PictureBox6.Location = New System.Drawing.Point(3, 112) + Me.PictureBox6.Margin = New System.Windows.Forms.Padding(3, 0, 3, 0) + Me.PictureBox6.Name = "PictureBox6" + Me.PictureBox6.Size = New System.Drawing.Size(24, 24) + Me.PictureBox6.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize + Me.PictureBox6.TabIndex = 66 + Me.PictureBox6.TabStop = False ' - 'ToolStripSeparator12 + 'TWSaturation2 ' - Me.ToolStripSeparator12.Name = "ToolStripSeparator12" - Me.ToolStripSeparator12.Size = New System.Drawing.Size(196, 6) + Me.TWSaturation2.Dock = System.Windows.Forms.DockStyle.Fill + Me.TWSaturation2.LargeChange = 200 + Me.TWSaturation2.Location = New System.Drawing.Point(30, 112) + Me.TWSaturation2.Margin = New System.Windows.Forms.Padding(0) + Me.TWSaturation2.Maximum = 1000 + Me.TWSaturation2.Name = "TWSaturation2" + Me.TWSaturation2.Size = New System.Drawing.Size(107, 28) + Me.TWSaturation2.SmallChange = 50 + Me.TWSaturation2.TabIndex = 510 + Me.TWSaturation2.TickFrequency = 200 ' - 'TBImportSM + 'TWLeft2 ' - Me.TBImportSM.Image = Global.iBMSC.My.Resources.Resources.x16Import2 - Me.TBImportSM.Name = "TBImportSM" - Me.TBImportSM.Size = New System.Drawing.Size(199, 22) - Me.TBImportSM.Text = "Import from .SM file" + Me.TWLeft2.Dock = System.Windows.Forms.DockStyle.Fill + Me.TWLeft2.LargeChange = 50 + Me.TWLeft2.Location = New System.Drawing.Point(30, 0) + Me.TWLeft2.Margin = New System.Windows.Forms.Padding(0) + Me.TWLeft2.Maximum = 800 + Me.TWLeft2.Name = "TWLeft2" + Me.TWLeft2.Size = New System.Drawing.Size(107, 28) + Me.TWLeft2.SmallChange = 10 + Me.TWLeft2.TabIndex = 502 + Me.TWLeft2.TickFrequency = 100 + Me.TWLeft2.Value = 50 ' - 'TBImportIBMSC + 'TWTransparency2 ' - Me.TBImportIBMSC.Image = Global.iBMSC.My.Resources.Resources.x16Import2 - Me.TBImportIBMSC.Name = "TBImportIBMSC" - Me.TBImportIBMSC.Size = New System.Drawing.Size(199, 22) - Me.TBImportIBMSC.Text = "Import from .IBMSC file" + Me.TWTransparency2.Dock = System.Windows.Forms.DockStyle.Fill + Me.TWTransparency2.LargeChange = 64 + Me.TWTransparency2.Location = New System.Drawing.Point(30, 84) + Me.TWTransparency2.Margin = New System.Windows.Forms.Padding(0) + Me.TWTransparency2.Maximum = 255 + Me.TWTransparency2.Name = "TWTransparency2" + Me.TWTransparency2.Size = New System.Drawing.Size(107, 28) + Me.TWTransparency2.SmallChange = 8 + Me.TWTransparency2.TabIndex = 508 + Me.TWTransparency2.TickFrequency = 64 + Me.TWTransparency2.Value = 80 ' - 'TBSave + 'TWWidth2 ' - Me.TBSave.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image - Me.TBSave.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.TBSaveAs, Me.TBExport}) - Me.TBSave.Image = Global.iBMSC.My.Resources.Resources.x16Save - Me.TBSave.ImageTransparentColor = System.Drawing.Color.Magenta - Me.TBSave.Name = "TBSave" - Me.TBSave.Size = New System.Drawing.Size(32, 22) - Me.TBSave.Text = "Save (Ctrl+S)" + Me.TWWidth2.Dock = System.Windows.Forms.DockStyle.Fill + Me.TWWidth2.LargeChange = 50 + Me.TWWidth2.Location = New System.Drawing.Point(30, 28) + Me.TWWidth2.Margin = New System.Windows.Forms.Padding(0) + Me.TWWidth2.Maximum = 1000 + Me.TWWidth2.Name = "TWWidth2" + Me.TWWidth2.Size = New System.Drawing.Size(107, 28) + Me.TWWidth2.SmallChange = 10 + Me.TWWidth2.TabIndex = 504 + Me.TWWidth2.TickFrequency = 100 + Me.TWWidth2.Value = 200 ' - 'TBSaveAs + 'TWPrecision2 ' - Me.TBSaveAs.Image = Global.iBMSC.My.Resources.Resources.x16SaveAs - Me.TBSaveAs.Name = "TBSaveAs" - Me.TBSaveAs.Size = New System.Drawing.Size(168, 22) - Me.TBSaveAs.Text = "Save As..." + Me.TWPrecision2.Dock = System.Windows.Forms.DockStyle.Fill + Me.TWPrecision2.LargeChange = 4 + Me.TWPrecision2.Location = New System.Drawing.Point(30, 56) + Me.TWPrecision2.Margin = New System.Windows.Forms.Padding(0) + Me.TWPrecision2.Maximum = 50 + Me.TWPrecision2.Name = "TWPrecision2" + Me.TWPrecision2.Size = New System.Drawing.Size(107, 28) + Me.TWPrecision2.TabIndex = 506 + Me.TWPrecision2.TickFrequency = 5 + Me.TWPrecision2.Value = 5 ' - 'TBExport + 'POWaveFormExpander ' - Me.TBExport.Image = Global.iBMSC.My.Resources.Resources.x16Export - Me.TBExport.Name = "TBExport" - Me.TBExport.Size = New System.Drawing.Size(168, 22) - Me.TBExport.Text = "Export .IBMSC file" + Me.POWaveFormExpander.Appearance = System.Windows.Forms.Appearance.Button + Me.POWaveFormExpander.AutoSize = True + Me.POWaveFormExpander.Cursor = System.Windows.Forms.Cursors.Hand + Me.POWaveFormExpander.Dock = System.Windows.Forms.DockStyle.Top + Me.POWaveFormExpander.FlatAppearance.BorderSize = 0 + Me.POWaveFormExpander.FlatStyle = System.Windows.Forms.FlatStyle.Popup + Me.POWaveFormExpander.Location = New System.Drawing.Point(0, 58) + Me.POWaveFormExpander.Margin = New System.Windows.Forms.Padding(0) + Me.POWaveFormExpander.Name = "POWaveFormExpander" + Me.POWaveFormExpander.Size = New System.Drawing.Size(183, 25) + Me.POWaveFormExpander.TabIndex = 501 + Me.POWaveFormExpander.TabStop = False + Me.POWaveFormExpander.Text = "Expand..." + Me.POWaveFormExpander.TextAlign = System.Drawing.ContentAlignment.MiddleCenter + Me.POWaveFormExpander.UseVisualStyleBackColor = False ' - 'ToolStripSeparator1 + 'POWaveFormPart1 ' - Me.ToolStripSeparator1.Name = "ToolStripSeparator1" - Me.ToolStripSeparator1.Size = New System.Drawing.Size(6, 25) + Me.POWaveFormPart1.AutoSize = True + Me.POWaveFormPart1.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink + Me.POWaveFormPart1.ColumnCount = 1 + Me.POWaveFormPart1.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100.0!)) + Me.POWaveFormPart1.Controls.Add(Me.TableLayoutPanel1, 0, 0) + Me.POWaveFormPart1.Controls.Add(Me.TableLayoutPanel6, 0, 1) + Me.POWaveFormPart1.Dock = System.Windows.Forms.DockStyle.Top + Me.POWaveFormPart1.Location = New System.Drawing.Point(0, 0) + Me.POWaveFormPart1.Name = "POWaveFormPart1" + Me.POWaveFormPart1.RowCount = 2 + Me.POWaveFormPart1.RowStyles.Add(New System.Windows.Forms.RowStyle()) + Me.POWaveFormPart1.RowStyles.Add(New System.Windows.Forms.RowStyle()) + Me.POWaveFormPart1.Size = New System.Drawing.Size(183, 58) + Me.POWaveFormPart1.TabIndex = 4 ' - 'TBCut + 'TableLayoutPanel1 ' - Me.TBCut.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image - Me.TBCut.Image = Global.iBMSC.My.Resources.Resources.x16Cut - Me.TBCut.ImageTransparentColor = System.Drawing.Color.Magenta - Me.TBCut.Name = "TBCut" - Me.TBCut.Size = New System.Drawing.Size(23, 22) - Me.TBCut.Text = "Cut (Ctrl+X)" + Me.TableLayoutPanel1.AutoSize = True + Me.TableLayoutPanel1.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink + Me.TableLayoutPanel1.ColumnCount = 2 + Me.TableLayoutPanel1.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle()) + Me.TableLayoutPanel1.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100.0!)) + Me.TableLayoutPanel1.Controls.Add(Me.FlowLayoutPanel1, 0, 0) + Me.TableLayoutPanel1.Controls.Add(Me.TWFileName, 1, 0) + Me.TableLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Fill + Me.TableLayoutPanel1.Location = New System.Drawing.Point(0, 0) + Me.TableLayoutPanel1.Margin = New System.Windows.Forms.Padding(0) + Me.TableLayoutPanel1.Name = "TableLayoutPanel1" + Me.TableLayoutPanel1.RowCount = 1 + Me.TableLayoutPanel1.RowStyles.Add(New System.Windows.Forms.RowStyle()) + Me.TableLayoutPanel1.Size = New System.Drawing.Size(183, 30) + Me.TableLayoutPanel1.TabIndex = 0 ' - 'TBCopy + 'FlowLayoutPanel1 ' - Me.TBCopy.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image - Me.TBCopy.Image = Global.iBMSC.My.Resources.Resources.x16Copy - Me.TBCopy.ImageTransparentColor = System.Drawing.Color.Magenta - Me.TBCopy.Name = "TBCopy" - Me.TBCopy.Size = New System.Drawing.Size(23, 22) - Me.TBCopy.Text = "Copy (Ctrl+C)" + Me.FlowLayoutPanel1.AutoSize = True + Me.FlowLayoutPanel1.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink + Me.FlowLayoutPanel1.Controls.Add(Me.BWLoad) + Me.FlowLayoutPanel1.Controls.Add(Me.BWClear) + Me.FlowLayoutPanel1.Controls.Add(Me.BWLock) + Me.FlowLayoutPanel1.Location = New System.Drawing.Point(3, 3) + Me.FlowLayoutPanel1.Name = "FlowLayoutPanel1" + Me.FlowLayoutPanel1.Size = New System.Drawing.Size(72, 24) + Me.FlowLayoutPanel1.TabIndex = 72 + Me.FlowLayoutPanel1.WrapContents = False ' - 'TBPaste + 'TWFileName ' - Me.TBPaste.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image - Me.TBPaste.Image = Global.iBMSC.My.Resources.Resources.x16Paste - Me.TBPaste.ImageTransparentColor = System.Drawing.Color.Magenta - Me.TBPaste.Name = "TBPaste" - Me.TBPaste.Size = New System.Drawing.Size(23, 22) - Me.TBPaste.Text = "Paste (Ctrl+V)" + Me.TWFileName.Dock = System.Windows.Forms.DockStyle.Fill + Me.TWFileName.Location = New System.Drawing.Point(81, 3) + Me.TWFileName.Name = "TWFileName" + Me.TWFileName.ReadOnly = True + Me.TWFileName.Size = New System.Drawing.Size(99, 23) + Me.TWFileName.TabIndex = 405 + Me.TWFileName.Text = "(None)" ' - 'TBFind + 'TableLayoutPanel6 ' - Me.TBFind.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image - Me.TBFind.Image = Global.iBMSC.My.Resources.Resources.x16Find - Me.TBFind.ImageTransparentColor = System.Drawing.Color.Magenta - Me.TBFind.Name = "TBFind" - Me.TBFind.Size = New System.Drawing.Size(23, 22) - Me.TBFind.Text = "Find / Delete / Replace (Ctrl+F)" - ' - 'ToolStripSeparator24 - ' - Me.ToolStripSeparator24.Name = "ToolStripSeparator24" - Me.ToolStripSeparator24.Size = New System.Drawing.Size(6, 25) + Me.TableLayoutPanel6.AutoSize = True + Me.TableLayoutPanel6.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink + Me.TableLayoutPanel6.ColumnCount = 3 + Me.TableLayoutPanel6.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle()) + Me.TableLayoutPanel6.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 60.0!)) + Me.TableLayoutPanel6.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 40.0!)) + Me.TableLayoutPanel6.Controls.Add(Me.PictureBox1, 0, 0) + Me.TableLayoutPanel6.Controls.Add(Me.TWPosition2, 1, 0) + Me.TableLayoutPanel6.Controls.Add(Me.TWPosition, 2, 0) + Me.TableLayoutPanel6.Dock = System.Windows.Forms.DockStyle.Fill + Me.TableLayoutPanel6.Location = New System.Drawing.Point(0, 30) + Me.TableLayoutPanel6.Margin = New System.Windows.Forms.Padding(0) + Me.TableLayoutPanel6.Name = "TableLayoutPanel6" + Me.TableLayoutPanel6.RowCount = 1 + Me.TableLayoutPanel6.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 28.0!)) + Me.TableLayoutPanel6.Size = New System.Drawing.Size(183, 28) + Me.TableLayoutPanel6.TabIndex = 1 ' - 'TBStatistics + 'PictureBox1 ' - Me.TBStatistics.Font = New System.Drawing.Font("Segoe UI", 9.0!, System.Drawing.FontStyle.Bold) - Me.TBStatistics.Image = Global.iBMSC.My.Resources.Resources.x16Statistics - Me.TBStatistics.ImageTransparentColor = System.Drawing.Color.Magenta - Me.TBStatistics.Name = "TBStatistics" - Me.TBStatistics.Size = New System.Drawing.Size(34, 22) - Me.TBStatistics.Text = "0" - Me.TBStatistics.ToolTipText = "Statistics (Ctrl+T)" + Me.PictureBox1.Image = Global.iBMSC.My.Resources.Resources.WAVOffset + Me.PictureBox1.Location = New System.Drawing.Point(3, 0) + Me.PictureBox1.Margin = New System.Windows.Forms.Padding(3, 0, 3, 0) + Me.PictureBox1.Name = "PictureBox1" + Me.PictureBox1.Size = New System.Drawing.Size(24, 24) + Me.PictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize + Me.PictureBox1.TabIndex = 59 + Me.PictureBox1.TabStop = False ' - 'TBMyO2 + 'TWPosition2 ' - Me.TBMyO2.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image - Me.TBMyO2.Image = Global.iBMSC.My.Resources.Resources.x16MyO2 - Me.TBMyO2.ImageTransparentColor = System.Drawing.Color.Magenta - Me.TBMyO2.Name = "TBMyO2" - Me.TBMyO2.Size = New System.Drawing.Size(23, 22) - Me.TBMyO2.Text = "MyO2 ToolBox (Chinese Only)" + Me.TWPosition2.Dock = System.Windows.Forms.DockStyle.Fill + Me.TWPosition2.Enabled = False + Me.TWPosition2.LargeChange = 24 + Me.TWPosition2.Location = New System.Drawing.Point(30, 0) + Me.TWPosition2.Margin = New System.Windows.Forms.Padding(0) + Me.TWPosition2.Maximum = 960 + Me.TWPosition2.Name = "TWPosition2" + Me.TWPosition2.Size = New System.Drawing.Size(91, 28) + Me.TWPosition2.TabIndex = 406 + Me.TWPosition2.TickFrequency = 192 ' - 'ToolStripSeparator4 + 'TWPosition ' - Me.ToolStripSeparator4.Name = "ToolStripSeparator4" - Me.ToolStripSeparator4.Size = New System.Drawing.Size(6, 25) + Me.TWPosition.DecimalPlaces = 2 + Me.TWPosition.Dock = System.Windows.Forms.DockStyle.Fill + Me.TWPosition.Enabled = False + Me.TWPosition.Location = New System.Drawing.Point(121, 0) + Me.TWPosition.Margin = New System.Windows.Forms.Padding(0, 0, 3, 0) + Me.TWPosition.Maximum = New Decimal(New Integer() {192000, 0, 0, 0}) + Me.TWPosition.Name = "TWPosition" + Me.TWPosition.Size = New System.Drawing.Size(59, 23) + Me.TWPosition.TabIndex = 407 ' - 'TBErrorCheck + 'POWaveFormSwitch ' - Me.TBErrorCheck.Checked = True - Me.TBErrorCheck.CheckOnClick = True - Me.TBErrorCheck.CheckState = System.Windows.Forms.CheckState.Checked - Me.TBErrorCheck.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image - Me.TBErrorCheck.Image = Global.iBMSC.My.Resources.Resources.x16CheckError - Me.TBErrorCheck.ImageTransparentColor = System.Drawing.Color.Magenta - Me.TBErrorCheck.Name = "TBErrorCheck" - Me.TBErrorCheck.Size = New System.Drawing.Size(23, 22) - Me.TBErrorCheck.Text = "Error Check" + Me.POWaveFormSwitch.Appearance = System.Windows.Forms.Appearance.Button + Me.POWaveFormSwitch.BackColor = System.Drawing.SystemColors.Control + Me.POWaveFormSwitch.Cursor = System.Windows.Forms.Cursors.Hand + Me.POWaveFormSwitch.Dock = System.Windows.Forms.DockStyle.Top + Me.POWaveFormSwitch.Font = New System.Drawing.Font("Segoe UI", 9.0!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.POWaveFormSwitch.Location = New System.Drawing.Point(0, 0) + Me.POWaveFormSwitch.Name = "POWaveFormSwitch" + Me.POWaveFormSwitch.Size = New System.Drawing.Size(183, 20) + Me.POWaveFormSwitch.TabIndex = 401 + Me.POWaveFormSwitch.TabStop = False + Me.POWaveFormSwitch.Text = "WaveForm" + Me.POWaveFormSwitch.TextAlign = System.Drawing.ContentAlignment.MiddleCenter + Me.POWaveFormSwitch.UseCompatibleTextRendering = True + Me.POWaveFormSwitch.UseVisualStyleBackColor = False ' - 'TBPreviewOnClick + 'POGrid ' - Me.TBPreviewOnClick.Checked = True - Me.TBPreviewOnClick.CheckOnClick = True - Me.TBPreviewOnClick.CheckState = System.Windows.Forms.CheckState.Checked - Me.TBPreviewOnClick.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image - Me.TBPreviewOnClick.Image = Global.iBMSC.My.Resources.Resources.x16PreviewOnClick - Me.TBPreviewOnClick.ImageTransparentColor = System.Drawing.Color.Magenta - Me.TBPreviewOnClick.Name = "TBPreviewOnClick" - Me.TBPreviewOnClick.Size = New System.Drawing.Size(23, 22) - Me.TBPreviewOnClick.Text = "Preview On Click" + Me.POGrid.AutoSize = True + Me.POGrid.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink + Me.POGrid.Controls.Add(Me.POGridInner) + Me.POGrid.Controls.Add(Me.POGridSwitch) + Me.POGrid.Dock = System.Windows.Forms.DockStyle.Top + Me.POGrid.Location = New System.Drawing.Point(0, 439) + Me.POGrid.Name = "POGrid" + Me.POGrid.Size = New System.Drawing.Size(183, 230) + Me.POGrid.TabIndex = 2 ' - 'TBShowFileName + 'POGridInner ' - Me.TBShowFileName.CheckOnClick = True - Me.TBShowFileName.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image - Me.TBShowFileName.Image = Global.iBMSC.My.Resources.Resources.x16ShowFileNameN - Me.TBShowFileName.ImageTransparentColor = System.Drawing.Color.Magenta - Me.TBShowFileName.Name = "TBShowFileName" - Me.TBShowFileName.Size = New System.Drawing.Size(23, 22) - Me.TBShowFileName.Text = "Show File Name on Notes" + Me.POGridInner.AutoSize = True + Me.POGridInner.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink + Me.POGridInner.Controls.Add(Me.POGridPart2) + Me.POGridInner.Controls.Add(Me.POGridExpander) + Me.POGridInner.Controls.Add(Me.POGridPart1) + Me.POGridInner.Dock = System.Windows.Forms.DockStyle.Top + Me.POGridInner.Location = New System.Drawing.Point(0, 20) + Me.POGridInner.Name = "POGridInner" + Me.POGridInner.Size = New System.Drawing.Size(183, 210) + Me.POGridInner.TabIndex = 3 ' - 'ToolStripSeparator8 + 'POGridPart2 ' - Me.ToolStripSeparator8.Name = "ToolStripSeparator8" - Me.ToolStripSeparator8.Size = New System.Drawing.Size(6, 25) + Me.POGridPart2.AutoSize = True + Me.POGridPart2.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink + Me.POGridPart2.ColumnCount = 1 + Me.POGridPart2.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100.0!)) + Me.POGridPart2.Controls.Add(Me.TableLayoutPanel5, 0, 1) + Me.POGridPart2.Controls.Add(Me.TableLayoutPanel4, 0, 0) + Me.POGridPart2.Dock = System.Windows.Forms.DockStyle.Top + Me.POGridPart2.Location = New System.Drawing.Point(0, 152) + Me.POGridPart2.Name = "POGridPart2" + Me.POGridPart2.RowCount = 2 + Me.POGridPart2.RowStyles.Add(New System.Windows.Forms.RowStyle()) + Me.POGridPart2.RowStyles.Add(New System.Windows.Forms.RowStyle()) + Me.POGridPart2.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20.0!)) + Me.POGridPart2.Size = New System.Drawing.Size(183, 58) + Me.POGridPart2.TabIndex = 0 ' - 'TBNTInput + 'TableLayoutPanel5 ' - Me.TBNTInput.Checked = True - Me.TBNTInput.CheckOnClick = True - Me.TBNTInput.CheckState = System.Windows.Forms.CheckState.Checked - Me.TBNTInput.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image - Me.TBNTInput.Image = Global.iBMSC.My.Resources.Resources.x16NTInput - Me.TBNTInput.ImageTransparentColor = System.Drawing.Color.Magenta - Me.TBNTInput.Name = "TBNTInput" - Me.TBNTInput.Size = New System.Drawing.Size(23, 22) - Me.TBNTInput.Text = "LongNote Input Style - NoteTool/BMSE" + Me.TableLayoutPanel5.AutoSize = True + Me.TableLayoutPanel5.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink + Me.TableLayoutPanel5.ColumnCount = 2 + Me.TableLayoutPanel5.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle()) + Me.TableLayoutPanel5.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100.0!)) + Me.TableLayoutPanel5.Controls.Add(Me.FlowLayoutPanel2, 1, 0) + Me.TableLayoutPanel5.Controls.Add(Me.Label5, 0, 0) + Me.TableLayoutPanel5.Dock = System.Windows.Forms.DockStyle.Fill + Me.TableLayoutPanel5.Location = New System.Drawing.Point(0, 29) + Me.TableLayoutPanel5.Margin = New System.Windows.Forms.Padding(0) + Me.TableLayoutPanel5.Name = "TableLayoutPanel5" + Me.TableLayoutPanel5.RowCount = 1 + Me.TableLayoutPanel5.RowStyles.Add(New System.Windows.Forms.RowStyle()) + Me.TableLayoutPanel5.Size = New System.Drawing.Size(183, 29) + Me.TableLayoutPanel5.TabIndex = 46 ' - 'TBWavIncrease + 'FlowLayoutPanel2 ' - Me.TBWavIncrease.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image - Me.TBWavIncrease.Image = CType(resources.GetObject("TBWavIncrease.Image"), System.Drawing.Image) - Me.TBWavIncrease.ImageTransparentColor = System.Drawing.Color.Magenta - Me.TBWavIncrease.Name = "TBWavIncrease" - Me.TBWavIncrease.Size = New System.Drawing.Size(23, 22) - Me.TBWavIncrease.Text = "Autoincrease WAV when writing" + Me.FlowLayoutPanel2.AutoSize = True + Me.FlowLayoutPanel2.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink + Me.FlowLayoutPanel2.Controls.Add(Me.cVSLockL) + Me.FlowLayoutPanel2.Controls.Add(Me.cVSLock) + Me.FlowLayoutPanel2.Controls.Add(Me.cVSLockR) + Me.FlowLayoutPanel2.Location = New System.Drawing.Point(114, 3) + Me.FlowLayoutPanel2.Name = "FlowLayoutPanel2" + Me.FlowLayoutPanel2.Size = New System.Drawing.Size(66, 23) + Me.FlowLayoutPanel2.TabIndex = 72 + Me.FlowLayoutPanel2.WrapContents = False ' - 'ToolStripSeparator2 + 'Label5 ' - Me.ToolStripSeparator2.Name = "ToolStripSeparator2" - Me.ToolStripSeparator2.Size = New System.Drawing.Size(6, 25) + Me.Label5.AutoSize = True + Me.Label5.Dock = System.Windows.Forms.DockStyle.Fill + Me.Label5.Location = New System.Drawing.Point(3, 0) + Me.Label5.Name = "Label5" + Me.Label5.Size = New System.Drawing.Size(105, 29) + Me.Label5.TabIndex = 303 + Me.Label5.Text = "Vertical Scroll Lock" + Me.Label5.TextAlign = System.Drawing.ContentAlignment.MiddleRight ' - 'TBUndo + 'TableLayoutPanel4 ' - Me.TBUndo.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image - Me.TBUndo.Enabled = False - Me.TBUndo.Image = Global.iBMSC.My.Resources.Resources.x16Undo - Me.TBUndo.ImageTransparentColor = System.Drawing.Color.Magenta - Me.TBUndo.Name = "TBUndo" - Me.TBUndo.Size = New System.Drawing.Size(23, 22) - Me.TBUndo.Text = "Undo (Ctrl+Z)" + Me.TableLayoutPanel4.AutoSize = True + Me.TableLayoutPanel4.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink + Me.TableLayoutPanel4.ColumnCount = 2 + Me.TableLayoutPanel4.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle()) + Me.TableLayoutPanel4.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100.0!)) + Me.TableLayoutPanel4.Controls.Add(Me.Label1, 0, 0) + Me.TableLayoutPanel4.Controls.Add(Me.CGB, 1, 0) + Me.TableLayoutPanel4.Dock = System.Windows.Forms.DockStyle.Fill + Me.TableLayoutPanel4.Location = New System.Drawing.Point(0, 0) + Me.TableLayoutPanel4.Margin = New System.Windows.Forms.Padding(0) + Me.TableLayoutPanel4.Name = "TableLayoutPanel4" + Me.TableLayoutPanel4.RowCount = 1 + Me.TableLayoutPanel4.RowStyles.Add(New System.Windows.Forms.RowStyle()) + Me.TableLayoutPanel4.Size = New System.Drawing.Size(183, 29) + Me.TableLayoutPanel4.TabIndex = 44 ' - 'TBRedo + 'Label1 ' - Me.TBRedo.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image - Me.TBRedo.Enabled = False - Me.TBRedo.Image = Global.iBMSC.My.Resources.Resources.x16Redo - Me.TBRedo.ImageTransparentColor = System.Drawing.Color.Magenta - Me.TBRedo.Name = "TBRedo" - Me.TBRedo.Size = New System.Drawing.Size(23, 22) - Me.TBRedo.Text = "Redo (Ctrl+Y)" + Me.Label1.AutoSize = True + Me.Label1.Dock = System.Windows.Forms.DockStyle.Fill + Me.Label1.Location = New System.Drawing.Point(3, 0) + Me.Label1.Name = "Label1" + Me.Label1.Size = New System.Drawing.Size(126, 29) + Me.Label1.TabIndex = 302 + Me.Label1.Text = "Number of B Columns" + Me.Label1.TextAlign = System.Drawing.ContentAlignment.MiddleRight ' - 'ToolStripSeparator5 + 'CGB ' - Me.ToolStripSeparator5.Name = "ToolStripSeparator5" - Me.ToolStripSeparator5.Size = New System.Drawing.Size(6, 25) + Me.CGB.Dock = System.Windows.Forms.DockStyle.Fill + Me.CGB.Location = New System.Drawing.Point(135, 3) + Me.CGB.Maximum = New Decimal(New Integer() {999, 0, 0, 0}) + Me.CGB.Minimum = New Decimal(New Integer() {1, 0, 0, 0}) + Me.CGB.Name = "CGB" + Me.CGB.Size = New System.Drawing.Size(45, 23) + Me.CGB.TabIndex = 302 + Me.CGB.Value = New Decimal(New Integer() {15, 0, 0, 0}) ' - 'TBTimeSelect + 'POGridExpander ' - Me.TBTimeSelect.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image - Me.TBTimeSelect.Image = Global.iBMSC.My.Resources.Resources.x16TimeSelection - Me.TBTimeSelect.ImageTransparentColor = System.Drawing.Color.Magenta - Me.TBTimeSelect.Name = "TBTimeSelect" - Me.TBTimeSelect.Size = New System.Drawing.Size(23, 22) - Me.TBTimeSelect.Text = "Time Selection Tool (F1)" + Me.POGridExpander.Appearance = System.Windows.Forms.Appearance.Button + Me.POGridExpander.AutoSize = True + Me.POGridExpander.Cursor = System.Windows.Forms.Cursors.Hand + Me.POGridExpander.Dock = System.Windows.Forms.DockStyle.Top + Me.POGridExpander.FlatAppearance.BorderSize = 0 + Me.POGridExpander.FlatStyle = System.Windows.Forms.FlatStyle.Popup + Me.POGridExpander.Location = New System.Drawing.Point(0, 127) + Me.POGridExpander.Margin = New System.Windows.Forms.Padding(0) + Me.POGridExpander.Name = "POGridExpander" + Me.POGridExpander.Size = New System.Drawing.Size(183, 25) + Me.POGridExpander.TabIndex = 301 + Me.POGridExpander.TabStop = False + Me.POGridExpander.Text = "Expand..." + Me.POGridExpander.TextAlign = System.Drawing.ContentAlignment.MiddleCenter + Me.POGridExpander.UseVisualStyleBackColor = False ' - 'TBSelect + 'POGridPart1 ' - Me.TBSelect.Checked = True - Me.TBSelect.CheckState = System.Windows.Forms.CheckState.Checked - Me.TBSelect.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image - Me.TBSelect.Image = Global.iBMSC.My.Resources.Resources.x16Select - Me.TBSelect.ImageTransparentColor = System.Drawing.Color.Magenta - Me.TBSelect.Name = "TBSelect" - Me.TBSelect.Size = New System.Drawing.Size(23, 22) - Me.TBSelect.Text = "Select Tool (F2)" + Me.POGridPart1.AutoSize = True + Me.POGridPart1.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink + Me.POGridPart1.ColumnCount = 1 + Me.POGridPart1.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100.0!)) + Me.POGridPart1.Controls.Add(Me.TableLayoutPanel3, 0, 1) + Me.POGridPart1.Controls.Add(Me.CGDisableVertical, 0, 3) + Me.POGridPart1.Controls.Add(Me.CGSnap, 0, 2) + Me.POGridPart1.Controls.Add(Me.TableLayoutPanel2, 0, 0) + Me.POGridPart1.Dock = System.Windows.Forms.DockStyle.Top + Me.POGridPart1.Location = New System.Drawing.Point(0, 0) + Me.POGridPart1.Name = "POGridPart1" + Me.POGridPart1.RowCount = 4 + Me.POGridPart1.RowStyles.Add(New System.Windows.Forms.RowStyle()) + Me.POGridPart1.RowStyles.Add(New System.Windows.Forms.RowStyle()) + Me.POGridPart1.RowStyles.Add(New System.Windows.Forms.RowStyle()) + Me.POGridPart1.RowStyles.Add(New System.Windows.Forms.RowStyle()) + Me.POGridPart1.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20.0!)) + Me.POGridPart1.Size = New System.Drawing.Size(183, 127) + Me.POGridPart1.TabIndex = 11 ' - 'TBWrite + 'TableLayoutPanel3 ' - Me.TBWrite.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image - Me.TBWrite.Image = Global.iBMSC.My.Resources.Resources.x16Pen - Me.TBWrite.ImageTransparentColor = System.Drawing.Color.Magenta - Me.TBWrite.Name = "TBWrite" - Me.TBWrite.Size = New System.Drawing.Size(23, 22) - Me.TBWrite.Text = "Write Tool (F3)" + Me.TableLayoutPanel3.AutoSize = True + Me.TableLayoutPanel3.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink + Me.TableLayoutPanel3.ColumnCount = 3 + Me.TableLayoutPanel3.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle()) + Me.TableLayoutPanel3.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 70.0!)) + Me.TableLayoutPanel3.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 30.0!)) + Me.TableLayoutPanel3.Controls.Add(Me.PictureBox9, 0, 0) + Me.TableLayoutPanel3.Controls.Add(Me.CGHeight2, 1, 0) + Me.TableLayoutPanel3.Controls.Add(Me.CGHeight, 2, 0) + Me.TableLayoutPanel3.Controls.Add(Me.PictureBox10, 0, 1) + Me.TableLayoutPanel3.Controls.Add(Me.CGWidth2, 1, 1) + Me.TableLayoutPanel3.Controls.Add(Me.CGWidth, 2, 1) + Me.TableLayoutPanel3.Dock = System.Windows.Forms.DockStyle.Fill + Me.TableLayoutPanel3.Location = New System.Drawing.Point(0, 30) + Me.TableLayoutPanel3.Margin = New System.Windows.Forms.Padding(0) + Me.TableLayoutPanel3.Name = "TableLayoutPanel3" + Me.TableLayoutPanel3.RowCount = 2 + Me.TableLayoutPanel3.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 28.0!)) + Me.TableLayoutPanel3.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 28.0!)) + Me.TableLayoutPanel3.Size = New System.Drawing.Size(183, 56) + Me.TableLayoutPanel3.TabIndex = 12 ' - 'ToolStripSeparator3 + 'PictureBox9 ' - Me.ToolStripSeparator3.Name = "ToolStripSeparator3" - Me.ToolStripSeparator3.Size = New System.Drawing.Size(6, 25) + Me.PictureBox9.Image = Global.iBMSC.My.Resources.Resources.lgheight + Me.PictureBox9.Location = New System.Drawing.Point(3, 0) + Me.PictureBox9.Margin = New System.Windows.Forms.Padding(3, 0, 3, 0) + Me.PictureBox9.Name = "PictureBox9" + Me.PictureBox9.Size = New System.Drawing.Size(24, 24) + Me.PictureBox9.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize + Me.PictureBox9.TabIndex = 27 + Me.PictureBox9.TabStop = False ' - 'TBPlayB + 'CGHeight2 ' - Me.TBPlayB.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image - Me.TBPlayB.Image = Global.iBMSC.My.Resources.Resources.x16PlayB - Me.TBPlayB.ImageTransparentColor = System.Drawing.Color.Magenta - Me.TBPlayB.Name = "TBPlayB" - Me.TBPlayB.Size = New System.Drawing.Size(23, 22) - Me.TBPlayB.Text = "Play from beginning (F5)" + Me.CGHeight2.Dock = System.Windows.Forms.DockStyle.Fill + Me.CGHeight2.LargeChange = 4 + Me.CGHeight2.Location = New System.Drawing.Point(30, 0) + Me.CGHeight2.Margin = New System.Windows.Forms.Padding(0) + Me.CGHeight2.Maximum = 20 + Me.CGHeight2.Minimum = 1 + Me.CGHeight2.Name = "CGHeight2" + Me.CGHeight2.Size = New System.Drawing.Size(107, 28) + Me.CGHeight2.TabIndex = 205 + Me.CGHeight2.TickFrequency = 2 + Me.CGHeight2.Value = 4 ' - 'TBPlay + 'CGHeight ' - Me.TBPlay.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image - Me.TBPlay.Image = Global.iBMSC.My.Resources.Resources.x16Play - Me.TBPlay.ImageTransparentColor = System.Drawing.Color.Magenta - Me.TBPlay.Name = "TBPlay" - Me.TBPlay.Size = New System.Drawing.Size(23, 22) - Me.TBPlay.Text = "Play from here (F6)" + Me.CGHeight.DecimalPlaces = 2 + Me.CGHeight.Dock = System.Windows.Forms.DockStyle.Fill + Me.CGHeight.Increment = New Decimal(New Integer() {25, 0, 0, 131072}) + Me.CGHeight.Location = New System.Drawing.Point(137, 0) + Me.CGHeight.Margin = New System.Windows.Forms.Padding(0, 0, 3, 0) + Me.CGHeight.Maximum = New Decimal(New Integer() {99, 0, 0, 0}) + Me.CGHeight.Minimum = New Decimal(New Integer() {25, 0, 0, 131072}) + Me.CGHeight.Name = "CGHeight" + Me.CGHeight.Size = New System.Drawing.Size(43, 23) + Me.CGHeight.TabIndex = 206 + Me.CGHeight.Value = New Decimal(New Integer() {1, 0, 0, 0}) ' - 'TBStop + 'PictureBox10 ' - Me.TBStop.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image - Me.TBStop.Image = Global.iBMSC.My.Resources.Resources.x16Stop - Me.TBStop.ImageTransparentColor = System.Drawing.Color.Magenta - Me.TBStop.Name = "TBStop" - Me.TBStop.Size = New System.Drawing.Size(23, 22) - Me.TBStop.Text = "Stop (F7)" + Me.PictureBox10.Image = Global.iBMSC.My.Resources.Resources.lgwidth + Me.PictureBox10.Location = New System.Drawing.Point(3, 28) + Me.PictureBox10.Margin = New System.Windows.Forms.Padding(3, 0, 3, 0) + Me.PictureBox10.Name = "PictureBox10" + Me.PictureBox10.Size = New System.Drawing.Size(24, 24) + Me.PictureBox10.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize + Me.PictureBox10.TabIndex = 28 + Me.PictureBox10.TabStop = False ' - 'TBPOptions + 'CGWidth2 ' - Me.TBPOptions.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image - Me.TBPOptions.Image = Global.iBMSC.My.Resources.Resources.x16PlayerOptions - Me.TBPOptions.ImageTransparentColor = System.Drawing.Color.Magenta - Me.TBPOptions.Name = "TBPOptions" - Me.TBPOptions.Size = New System.Drawing.Size(23, 22) - Me.TBPOptions.Text = "Player Options (F9)" + Me.CGWidth2.Dock = System.Windows.Forms.DockStyle.Fill + Me.CGWidth2.LargeChange = 4 + Me.CGWidth2.Location = New System.Drawing.Point(30, 28) + Me.CGWidth2.Margin = New System.Windows.Forms.Padding(0) + Me.CGWidth2.Maximum = 20 + Me.CGWidth2.Minimum = 1 + Me.CGWidth2.Name = "CGWidth2" + Me.CGWidth2.Size = New System.Drawing.Size(107, 28) + Me.CGWidth2.TabIndex = 207 + Me.CGWidth2.TickFrequency = 2 + Me.CGWidth2.Value = 4 ' - 'ToolStripSeparator7 + 'CGWidth ' - Me.ToolStripSeparator7.Name = "ToolStripSeparator7" - Me.ToolStripSeparator7.Size = New System.Drawing.Size(6, 25) + Me.CGWidth.DecimalPlaces = 2 + Me.CGWidth.Dock = System.Windows.Forms.DockStyle.Fill + Me.CGWidth.Increment = New Decimal(New Integer() {25, 0, 0, 131072}) + Me.CGWidth.Location = New System.Drawing.Point(137, 28) + Me.CGWidth.Margin = New System.Windows.Forms.Padding(0, 0, 3, 0) + Me.CGWidth.Maximum = New Decimal(New Integer() {99, 0, 0, 0}) + Me.CGWidth.Minimum = New Decimal(New Integer() {25, 0, 0, 131072}) + Me.CGWidth.Name = "CGWidth" + Me.CGWidth.Size = New System.Drawing.Size(43, 23) + Me.CGWidth.TabIndex = 208 + Me.CGWidth.Value = New Decimal(New Integer() {1, 0, 0, 0}) ' - 'TBVOptions + 'CGDisableVertical ' - Me.TBVOptions.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image - Me.TBVOptions.Image = Global.iBMSC.My.Resources.Resources.x16VisualOptions - Me.TBVOptions.ImageTransparentColor = System.Drawing.Color.Magenta - Me.TBVOptions.Name = "TBVOptions" - Me.TBVOptions.Size = New System.Drawing.Size(23, 22) - Me.TBVOptions.Text = "Visual Options (F12)" + Me.CGDisableVertical.AutoSize = True + Me.CGDisableVertical.Location = New System.Drawing.Point(3, 108) + Me.CGDisableVertical.Margin = New System.Windows.Forms.Padding(3, 0, 3, 0) + Me.CGDisableVertical.Name = "CGDisableVertical" + Me.CGDisableVertical.Size = New System.Drawing.Size(162, 19) + Me.CGDisableVertical.TabIndex = 210 + Me.CGDisableVertical.Text = "Disable vertical moves (D)" + Me.CGDisableVertical.UseVisualStyleBackColor = True ' - 'TBGOptions + 'CGSnap ' - Me.TBGOptions.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image - Me.TBGOptions.Image = Global.iBMSC.My.Resources.Resources.x16GeneralOptions - Me.TBGOptions.ImageTransparentColor = System.Drawing.Color.Magenta - Me.TBGOptions.Name = "TBGOptions" - Me.TBGOptions.Size = New System.Drawing.Size(23, 22) - Me.TBGOptions.Text = "General Options (F10)" + Me.CGSnap.AutoSize = True + Me.CGSnap.Checked = True + Me.CGSnap.CheckState = System.Windows.Forms.CheckState.Checked + Me.CGSnap.Location = New System.Drawing.Point(3, 89) + Me.CGSnap.Margin = New System.Windows.Forms.Padding(3, 3, 3, 0) + Me.CGSnap.Name = "CGSnap" + Me.CGSnap.Size = New System.Drawing.Size(109, 19) + Me.CGSnap.TabIndex = 209 + Me.CGSnap.Text = "Snap to grid (G)" + Me.CGSnap.UseVisualStyleBackColor = True ' - 'POBStorm + 'TableLayoutPanel2 ' - Me.POBStorm.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image - Me.POBStorm.Image = Global.iBMSC.My.Resources.Resources.x16Storm - Me.POBStorm.ImageTransparentColor = System.Drawing.Color.Magenta - Me.POBStorm.Name = "POBStorm" - Me.POBStorm.Size = New System.Drawing.Size(23, 22) - Me.POBStorm.Text = "Storm" - Me.POBStorm.Visible = False + Me.TableLayoutPanel2.AutoSize = True + Me.TableLayoutPanel2.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink + Me.TableLayoutPanel2.ColumnCount = 4 + Me.TableLayoutPanel2.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle()) + Me.TableLayoutPanel2.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50.0!)) + Me.TableLayoutPanel2.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50.0!)) + Me.TableLayoutPanel2.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle()) + Me.TableLayoutPanel2.Controls.Add(Me.PictureBox7, 0, 0) + Me.TableLayoutPanel2.Controls.Add(Me.CGDivide, 1, 0) + Me.TableLayoutPanel2.Controls.Add(Me.CGSub, 2, 0) + Me.TableLayoutPanel2.Controls.Add(Me.BGSlash, 3, 0) + Me.TableLayoutPanel2.Dock = System.Windows.Forms.DockStyle.Fill + Me.TableLayoutPanel2.Location = New System.Drawing.Point(0, 0) + Me.TableLayoutPanel2.Margin = New System.Windows.Forms.Padding(0) + Me.TableLayoutPanel2.Name = "TableLayoutPanel2" + Me.TableLayoutPanel2.RowCount = 1 + Me.TableLayoutPanel2.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100.0!)) + Me.TableLayoutPanel2.Size = New System.Drawing.Size(183, 30) + Me.TableLayoutPanel2.TabIndex = 11 ' - 'pStatus + 'PictureBox7 ' - Me.pStatus.AutoSize = True - Me.pStatus.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink - Me.pStatus.Controls.Add(Me.FStatus2) - Me.pStatus.Controls.Add(Me.FStatus) - Me.pStatus.Dock = System.Windows.Forms.DockStyle.Bottom - Me.pStatus.Location = New System.Drawing.Point(0, 759) - Me.pStatus.Name = "pStatus" - Me.pStatus.Size = New System.Drawing.Size(952, 22) - Me.pStatus.TabIndex = 62 + Me.PictureBox7.Anchor = System.Windows.Forms.AnchorStyles.None + Me.PictureBox7.Image = Global.iBMSC.My.Resources.Resources.lgpartition + Me.PictureBox7.Location = New System.Drawing.Point(3, 3) + Me.PictureBox7.Name = "PictureBox7" + Me.PictureBox7.Size = New System.Drawing.Size(24, 24) + Me.PictureBox7.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize + Me.PictureBox7.TabIndex = 25 + Me.PictureBox7.TabStop = False ' - 'FStatus2 + 'CGDivide ' - Me.FStatus2.AccessibleRole = System.Windows.Forms.AccessibleRole.StatusBar - Me.FStatus2.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.FSSS, Me.FSSL, Me.FSSH, Me.BVCReverse, Me.LblMultiply, Me.TVCM, Me.LblDivide, Me.TVCD, Me.BVCApply, Me.TVCBPM, Me.BVCCalculate, Me.BConvertStop}) - Me.FStatus2.Location = New System.Drawing.Point(0, 0) - Me.FStatus2.Name = "FStatus2" - Me.FStatus2.ShowItemToolTips = True - Me.FStatus2.Size = New System.Drawing.Size(876, 22) - Me.FStatus2.TabIndex = 0 - Me.FStatus2.Text = "Status" - Me.FStatus2.Visible = False + Me.CGDivide.Dock = System.Windows.Forms.DockStyle.Fill + Me.CGDivide.Location = New System.Drawing.Point(33, 3) + Me.CGDivide.Maximum = New Decimal(New Integer() {1920, 0, 0, 0}) + Me.CGDivide.Minimum = New Decimal(New Integer() {1, 0, 0, 0}) + Me.CGDivide.Name = "CGDivide" + Me.CGDivide.Size = New System.Drawing.Size(58, 23) + Me.CGDivide.TabIndex = 202 + Me.CGDivide.Value = New Decimal(New Integer() {16, 0, 0, 0}) ' - 'FSSS + 'CGSub ' - Me.FSSS.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text - Me.FSSS.Font = New System.Drawing.Font("Segoe UI", 9.0!, System.Drawing.FontStyle.Bold) - Me.FSSS.ImageTransparentColor = System.Drawing.Color.Magenta - Me.FSSS.Name = "FSSS" - Me.FSSS.Size = New System.Drawing.Size(23, 20) - Me.FSSS.Text = "0" - Me.FSSS.ToolTipText = "Selection Start Position" + Me.CGSub.Dock = System.Windows.Forms.DockStyle.Fill + Me.CGSub.Location = New System.Drawing.Point(97, 3) + Me.CGSub.Maximum = New Decimal(New Integer() {1920, 0, 0, 0}) + Me.CGSub.Minimum = New Decimal(New Integer() {1, 0, 0, 0}) + Me.CGSub.Name = "CGSub" + Me.CGSub.Size = New System.Drawing.Size(58, 23) + Me.CGSub.TabIndex = 203 + Me.CGSub.Value = New Decimal(New Integer() {4, 0, 0, 0}) ' - 'FSSL + 'BGSlash ' - Me.FSSL.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text - Me.FSSL.Font = New System.Drawing.Font("Segoe UI", 9.0!, System.Drawing.FontStyle.Bold) - Me.FSSL.ImageTransparentColor = System.Drawing.Color.Magenta - Me.FSSL.Name = "FSSL" - Me.FSSL.Size = New System.Drawing.Size(23, 20) - Me.FSSL.Text = "0" - Me.FSSL.ToolTipText = "Selection Length" + Me.BGSlash.Anchor = System.Windows.Forms.AnchorStyles.None + Me.BGSlash.Image = Global.iBMSC.My.Resources.Resources.Shortcut + Me.BGSlash.Location = New System.Drawing.Point(158, 4) + Me.BGSlash.Margin = New System.Windows.Forms.Padding(0, 0, 3, 0) + Me.BGSlash.Name = "BGSlash" + Me.BGSlash.Size = New System.Drawing.Size(22, 22) + Me.BGSlash.TabIndex = 204 + Me.BGSlash.UseVisualStyleBackColor = True ' - 'FSSH + 'POGridSwitch ' - Me.FSSH.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text - Me.FSSH.Font = New System.Drawing.Font("Segoe UI", 9.0!, System.Drawing.FontStyle.Bold) - Me.FSSH.ImageTransparentColor = System.Drawing.Color.Magenta - Me.FSSH.Name = "FSSH" - Me.FSSH.Size = New System.Drawing.Size(23, 20) - Me.FSSH.Text = "0" - Me.FSSH.ToolTipText = "Selection Split Position" + Me.POGridSwitch.Appearance = System.Windows.Forms.Appearance.Button + Me.POGridSwitch.BackColor = System.Drawing.SystemColors.Control + Me.POGridSwitch.Checked = True + Me.POGridSwitch.CheckState = System.Windows.Forms.CheckState.Checked + Me.POGridSwitch.Cursor = System.Windows.Forms.Cursors.Hand + Me.POGridSwitch.Dock = System.Windows.Forms.DockStyle.Top + Me.POGridSwitch.Font = New System.Drawing.Font("Segoe UI", 9.0!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.POGridSwitch.Location = New System.Drawing.Point(0, 0) + Me.POGridSwitch.Name = "POGridSwitch" + Me.POGridSwitch.Size = New System.Drawing.Size(183, 20) + Me.POGridSwitch.TabIndex = 201 + Me.POGridSwitch.TabStop = False + Me.POGridSwitch.Text = "Grid" + Me.POGridSwitch.TextAlign = System.Drawing.ContentAlignment.MiddleCenter + Me.POGridSwitch.UseCompatibleTextRendering = True + Me.POGridSwitch.UseVisualStyleBackColor = False ' - 'BVCReverse + 'POHeader + ' + Me.POHeader.AutoSize = True + Me.POHeader.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink + Me.POHeader.Controls.Add(Me.POHeaderInner) + Me.POHeader.Controls.Add(Me.POHeaderSwitch) + Me.POHeader.Dock = System.Windows.Forms.DockStyle.Top + Me.POHeader.Location = New System.Drawing.Point(0, 0) + Me.POHeader.Name = "POHeader" + Me.POHeader.Size = New System.Drawing.Size(183, 439) + Me.POHeader.TabIndex = 1 + ' + 'POHeaderInner + ' + Me.POHeaderInner.AutoSize = True + Me.POHeaderInner.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink + Me.POHeaderInner.Controls.Add(Me.POHeaderPart2) + Me.POHeaderInner.Controls.Add(Me.POHeaderExpander) + Me.POHeaderInner.Controls.Add(Me.POHeaderPart1) + Me.POHeaderInner.Dock = System.Windows.Forms.DockStyle.Top + Me.POHeaderInner.Location = New System.Drawing.Point(0, 20) + Me.POHeaderInner.Name = "POHeaderInner" + Me.POHeaderInner.Size = New System.Drawing.Size(183, 419) + Me.POHeaderInner.TabIndex = 2 + ' + 'POHeaderPart2 + ' + Me.POHeaderPart2.AutoSize = True + Me.POHeaderPart2.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink + Me.POHeaderPart2.ColumnCount = 3 + Me.POHeaderPart2.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle()) + Me.POHeaderPart2.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100.0!)) + Me.POHeaderPart2.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle()) + Me.POHeaderPart2.Controls.Add(Me.CHDifficulty, 1, 5) + Me.POHeaderPart2.Controls.Add(Me.Label13, 2, 6) + Me.POHeaderPart2.Controls.Add(Me.THExRank, 1, 6) + Me.POHeaderPart2.Controls.Add(Me.Label25, 2, 7) + Me.POHeaderPart2.Controls.Add(Me.CHLnObj, 1, 9) + Me.POHeaderPart2.Controls.Add(Me.Label23, 0, 6) + Me.POHeaderPart2.Controls.Add(Me.Label21, 0, 5) + Me.POHeaderPart2.Controls.Add(Me.THComment, 1, 8) + Me.POHeaderPart2.Controls.Add(Me.Label24, 0, 9) + Me.POHeaderPart2.Controls.Add(Me.Label15, 0, 0) + Me.POHeaderPart2.Controls.Add(Me.THTotal, 1, 7) + Me.POHeaderPart2.Controls.Add(Me.Label20, 0, 7) + Me.POHeaderPart2.Controls.Add(Me.BHStageFile, 2, 2) + Me.POHeaderPart2.Controls.Add(Me.BHBanner, 2, 3) + Me.POHeaderPart2.Controls.Add(Me.Label19, 0, 8) + Me.POHeaderPart2.Controls.Add(Me.BHBackBMP, 2, 4) + Me.POHeaderPart2.Controls.Add(Me.Label17, 0, 1) + Me.POHeaderPart2.Controls.Add(Me.Label16, 0, 2) + Me.POHeaderPart2.Controls.Add(Me.Label12, 0, 3) + Me.POHeaderPart2.Controls.Add(Me.THBackBMP, 1, 4) + Me.POHeaderPart2.Controls.Add(Me.Label11, 0, 4) + Me.POHeaderPart2.Controls.Add(Me.THBanner, 1, 3) + Me.POHeaderPart2.Controls.Add(Me.THStageFile, 1, 2) + Me.POHeaderPart2.Controls.Add(Me.THSubTitle, 1, 0) + Me.POHeaderPart2.Controls.Add(Me.THSubArtist, 1, 1) + Me.POHeaderPart2.Dock = System.Windows.Forms.DockStyle.Top + Me.POHeaderPart2.Location = New System.Drawing.Point(0, 186) + Me.POHeaderPart2.Name = "POHeaderPart2" + Me.POHeaderPart2.RowCount = 10 + Me.POHeaderPart2.RowStyles.Add(New System.Windows.Forms.RowStyle()) + Me.POHeaderPart2.RowStyles.Add(New System.Windows.Forms.RowStyle()) + Me.POHeaderPart2.RowStyles.Add(New System.Windows.Forms.RowStyle()) + Me.POHeaderPart2.RowStyles.Add(New System.Windows.Forms.RowStyle()) + Me.POHeaderPart2.RowStyles.Add(New System.Windows.Forms.RowStyle()) + Me.POHeaderPart2.RowStyles.Add(New System.Windows.Forms.RowStyle()) + Me.POHeaderPart2.RowStyles.Add(New System.Windows.Forms.RowStyle()) + Me.POHeaderPart2.RowStyles.Add(New System.Windows.Forms.RowStyle()) + Me.POHeaderPart2.RowStyles.Add(New System.Windows.Forms.RowStyle()) + Me.POHeaderPart2.RowStyles.Add(New System.Windows.Forms.RowStyle()) + Me.POHeaderPart2.Size = New System.Drawing.Size(183, 233) + Me.POHeaderPart2.TabIndex = 27 + ' + 'CHDifficulty + ' + Me.POHeaderPart2.SetColumnSpan(Me.CHDifficulty, 2) + Me.CHDifficulty.Dock = System.Windows.Forms.DockStyle.Top + Me.CHDifficulty.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList + Me.CHDifficulty.FlatStyle = System.Windows.Forms.FlatStyle.System + Me.CHDifficulty.Items.AddRange(New Object() {"None", "1 - EZ / Beginner", "2 - NM / Normal", "3 - HD / Hyper", "4 - MX / Another", "5 - SC / Insane"}) + Me.CHDifficulty.Location = New System.Drawing.Point(67, 118) + Me.CHDifficulty.Margin = New System.Windows.Forms.Padding(0) + Me.CHDifficulty.Name = "CHDifficulty" + Me.CHDifficulty.Size = New System.Drawing.Size(116, 23) + Me.CHDifficulty.TabIndex = 110 + ' + 'Label13 + ' + Me.Label13.AutoSize = True + Me.Label13.Dock = System.Windows.Forms.DockStyle.Fill + Me.Label13.Location = New System.Drawing.Point(158, 141) + Me.Label13.Margin = New System.Windows.Forms.Padding(3, 0, 0, 0) + Me.Label13.Name = "Label13" + Me.Label13.Size = New System.Drawing.Size(25, 23) + Me.Label13.TabIndex = 63 + Me.Label13.Text = "(%)" + Me.Label13.TextAlign = System.Drawing.ContentAlignment.MiddleLeft + ' + 'THExRank + ' + Me.THExRank.Dock = System.Windows.Forms.DockStyle.Fill + Me.THExRank.Location = New System.Drawing.Point(67, 141) + Me.THExRank.Margin = New System.Windows.Forms.Padding(0) + Me.THExRank.Name = "THExRank" + Me.THExRank.Size = New System.Drawing.Size(88, 23) + Me.THExRank.TabIndex = 111 + ' + 'Label25 ' - Me.BVCReverse.BackColor = System.Drawing.Color.FromArgb(CType(CType(192, Byte), Integer), CType(CType(192, Byte), Integer), CType(CType(255, Byte), Integer)) - Me.BVCReverse.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text - Me.BVCReverse.ImageTransparentColor = System.Drawing.Color.Magenta - Me.BVCReverse.Name = "BVCReverse" - Me.BVCReverse.Size = New System.Drawing.Size(102, 20) - Me.BVCReverse.Text = "Reverse Selection" + Me.Label25.AutoSize = True + Me.Label25.Dock = System.Windows.Forms.DockStyle.Fill + Me.Label25.Location = New System.Drawing.Point(158, 164) + Me.Label25.Margin = New System.Windows.Forms.Padding(3, 0, 0, 0) + Me.Label25.Name = "Label25" + Me.Label25.Size = New System.Drawing.Size(25, 23) + Me.Label25.TabIndex = 23 + Me.Label25.Text = "(%)" + Me.Label25.TextAlign = System.Drawing.ContentAlignment.MiddleLeft ' - 'LblMultiply + 'CHLnObj ' - Me.LblMultiply.Name = "LblMultiply" - Me.LblMultiply.Size = New System.Drawing.Size(15, 17) - Me.LblMultiply.Text = "×" + Me.POHeaderPart2.SetColumnSpan(Me.CHLnObj, 2) + Me.CHLnObj.Dock = System.Windows.Forms.DockStyle.Top + Me.CHLnObj.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList + Me.CHLnObj.FlatStyle = System.Windows.Forms.FlatStyle.System + Me.CHLnObj.Items.AddRange(New Object() {"None (#LnType 1)", "01", "02", "03", "04", "05", "06", "07", "08", "09", "0A", "0B", "0C", "0D", "0E", "0F", "0G", "0H", "0I", "0J", "0K", "0L", "0M", "0N", "0O", "0P", "0Q", "0R", "0S", "0T", "0U", "0V", "0W", "0X", "0Y", "0Z", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "1A", "1B", "1C", "1D", "1E", "1F", "1G", "1H", "1I", "1J", "1K", "1L", "1M", "1N", "1O", "1P", "1Q", "1R", "1S", "1T", "1U", "1V", "1W", "1X", "1Y", "1Z", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "2A", "2B", "2C", "2D", "2E", "2F", "2G", "2H", "2I", "2J", "2K", "2L", "2M", "2N", "2O", "2P", "2Q", "2R", "2S", "2T", "2U", "2V", "2W", "2X", "2Y", "2Z", "30", "31", "32", "33", "34", "35", "36", "37", "38", "39", "3A", "3B", "3C", "3D", "3E", "3F", "3G", "3H", "3I", "3J", "3K", "3L", "3M", "3N", "3O", "3P", "3Q", "3R", "3S", "3T", "3U", "3V", "3W", "3X", "3Y", "3Z", "40", "41", "42", "43", "44", "45", "46", "47", "48", "49", "4A", "4B", "4C", "4D", "4E", "4F", "4G", "4H", "4I", "4J", "4K", "4L", "4M", "4N", "4O", "4P", "4Q", "4R", "4S", "4T", "4U", "4V", "4W", "4X", "4Y", "4Z", "50", "51", "52", "53", "54", "55", "56", "57", "58", "59", "5A", "5B", "5C", "5D", "5E", "5F", "5G", "5H", "5I", "5J", "5K", "5L", "5M", "5N", "5O", "5P", "5Q", "5R", "5S", "5T", "5U", "5V", "5W", "5X", "5Y", "5Z", "60", "61", "62", "63", "64", "65", "66", "67", "68", "69", "6A", "6B", "6C", "6D", "6E", "6F", "6G", "6H", "6I", "6J", "6K", "6L", "6M", "6N", "6O", "6P", "6Q", "6R", "6S", "6T", "6U", "6V", "6W", "6X", "6Y", "6Z", "70", "71", "72", "73", "74", "75", "76", "77", "78", "79", "7A", "7B", "7C", "7D", "7E", "7F", "7G", "7H", "7I", "7J", "7K", "7L", "7M", "7N", "7O", "7P", "7Q", "7R", "7S", "7T", "7U", "7V", "7W", "7X", "7Y", "7Z", "80", "81", "82", "83", "84", "85", "86", "87", "88", "89", "8A", "8B", "8C", "8D", "8E", "8F", "8G", "8H", "8I", "8J", "8K", "8L", "8M", "8N", "8O", "8P", "8Q", "8R", "8S", "8T", "8U", "8V", "8W", "8X", "8Y", "8Z", "90", "91", "92", "93", "94", "95", "96", "97", "98", "99", "9A", "9B", "9C", "9D", "9E", "9F", "9G", "9H", "9I", "9J", "9K", "9L", "9M", "9N", "9O", "9P", "9Q", "9R", "9S", "9T", "9U", "9V", "9W", "9X", "9Y", "9Z", "A0", "A1", "A2", "A3", "A4", "A5", "A6", "A7", "A8", "A9", "AA", "AB", "AC", "AD", "AE", "AF", "AG", "AH", "AI", "AJ", "AK", "AL", "AM", "AN", "AO", "AP", "AQ", "AR", "AS", "AT", "AU", "AV", "AW", "AX", "AY", "AZ", "B0", "B1", "B2", "B3", "B4", "B5", "B6", "B7", "B8", "B9", "BA", "BB", "BC", "BD", "BE", "BF", "BG", "BH", "BI", "BJ", "BK", "BL", "BM", "BN", "BO", "BP", "BQ", "BR", "BS", "BT", "BU", "BV", "BW", "BX", "BY", "BZ", "C0", "C1", "C2", "C3", "C4", "C5", "C6", "C7", "C8", "C9", "CA", "CB", "CC", "CD", "CE", "CF", "CG", "CH", "CI", "CJ", "CK", "CL", "CM", "CN", "CO", "CP", "CQ", "CR", "CS", "CT", "CU", "CV", "CW", "CX", "CY", "CZ", "D0", "D1", "D2", "D3", "D4", "D5", "D6", "D7", "D8", "D9", "DA", "DB", "DC", "DD", "DE", "DF", "DG", "DH", "DI", "DJ", "DK", "DL", "DM", "DN", "DO", "DP", "DQ", "DR", "DS", "DT", "DU", "DV", "DW", "DX", "DY", "DZ", "E0", "E1", "E2", "E3", "E4", "E5", "E6", "E7", "E8", "E9", "EA", "EB", "EC", "ED", "EE", "EF", "EG", "EH", "EI", "EJ", "EK", "EL", "EM", "EN", "EO", "EP", "EQ", "ER", "ES", "ET", "EU", "EV", "EW", "EX", "EY", "EZ", "F0", "F1", "F2", "F3", "F4", "F5", "F6", "F7", "F8", "F9", "FA", "FB", "FC", "FD", "FE", "FF", "FG", "FH", "FI", "FJ", "FK", "FL", "FM", "FN", "FO", "FP", "FQ", "FR", "FS", "FT", "FU", "FV", "FW", "FX", "FY", "FZ", "G0", "G1", "G2", "G3", "G4", "G5", "G6", "G7", "G8", "G9", "GA", "GB", "GC", "GD", "GE", "GF", "GG", "GH", "GI", "GJ", "GK", "GL", "GM", "GN", "GO", "GP", "GQ", "GR", "GS", "GT", "GU", "GV", "GW", "GX", "GY", "GZ", "H0", "H1", "H2", "H3", "H4", "H5", "H6", "H7", "H8", "H9", "HA", "HB", "HC", "HD", "HE", "HF", "HG", "HH", "HI", "HJ", "HK", "HL", "HM", "HN", "HO", "HP", "HQ", "HR", "HS", "HT", "HU", "HV", "HW", "HX", "HY", "HZ", "I0", "I1", "I2", "I3", "I4", "I5", "I6", "I7", "I8", "I9", "IA", "IB", "IC", "ID", "IE", "IF", "IG", "IH", "II", "IJ", "IK", "IL", "IM", "IN", "IO", "IP", "IQ", "IR", "IS", "IT", "IU", "IV", "IW", "IX", "IY", "IZ", "J0", "J1", "J2", "J3", "J4", "J5", "J6", "J7", "J8", "J9", "JA", "JB", "JC", "JD", "JE", "JF", "JG", "JH", "JI", "JJ", "JK", "JL", "JM", "JN", "JO", "JP", "JQ", "JR", "JS", "JT", "JU", "JV", "JW", "JX", "JY", "JZ", "K0", "K1", "K2", "K3", "K4", "K5", "K6", "K7", "K8", "K9", "KA", "KB", "KC", "KD", "KE", "KF", "KG", "KH", "KI", "KJ", "KK", "KL", "KM", "KN", "KO", "KP", "KQ", "KR", "KS", "KT", "KU", "KV", "KW", "KX", "KY", "KZ", "L0", "L1", "L2", "L3", "L4", "L5", "L6", "L7", "L8", "L9", "LA", "LB", "LC", "LD", "LE", "LF", "LG", "LH", "LI", "LJ", "LK", "LL", "LM", "LN", "LO", "LP", "LQ", "LR", "LS", "LT", "LU", "LV", "LW", "LX", "LY", "LZ", "M0", "M1", "M2", "M3", "M4", "M5", "M6", "M7", "M8", "M9", "MA", "MB", "MC", "MD", "ME", "MF", "MG", "MH", "MI", "MJ", "MK", "ML", "MM", "MN", "MO", "MP", "MQ", "MR", "MS", "MT", "MU", "MV", "MW", "MX", "MY", "MZ", "N0", "N1", "N2", "N3", "N4", "N5", "N6", "N7", "N8", "N9", "NA", "NB", "NC", "ND", "NE", "NF", "NG", "NH", "NI", "NJ", "NK", "NL", "NM", "NN", "NO", "NP", "NQ", "NR", "NS", "NT", "NU", "NV", "NW", "NX", "NY", "NZ", "O0", "O1", "O2", "O3", "O4", "O5", "O6", "O7", "O8", "O9", "OA", "OB", "OC", "OD", "OE", "OF", "OG", "OH", "OI", "OJ", "OK", "OL", "OM", "ON", "OO", "OP", "OQ", "OR", "OS", "OT", "OU", "OV", "OW", "OX", "OY", "OZ", "P0", "P1", "P2", "P3", "P4", "P5", "P6", "P7", "P8", "P9", "PA", "PB", "PC", "PD", "PE", "PF", "PG", "PH", "PI", "PJ", "PK", "PL", "PM", "PN", "PO", "PP", "PQ", "PR", "PS", "PT", "PU", "PV", "PW", "PX", "PY", "PZ", "Q0", "Q1", "Q2", "Q3", "Q4", "Q5", "Q6", "Q7", "Q8", "Q9", "QA", "QB", "QC", "QD", "QE", "QF", "QG", "QH", "QI", "QJ", "QK", "QL", "QM", "QN", "QO", "QP", "QQ", "QR", "QS", "QT", "QU", "QV", "QW", "QX", "QY", "QZ", "R0", "R1", "R2", "R3", "R4", "R5", "R6", "R7", "R8", "R9", "RA", "RB", "RC", "RD", "RE", "RF", "RG", "RH", "RI", "RJ", "RK", "RL", "RM", "RN", "RO", "RP", "RQ", "RR", "RS", "RT", "RU", "RV", "RW", "RX", "RY", "RZ", "S0", "S1", "S2", "S3", "S4", "S5", "S6", "S7", "S8", "S9", "SA", "SB", "SC", "SD", "SE", "SF", "SG", "SH", "SI", "SJ", "SK", "SL", "SM", "SN", "SO", "SP", "SQ", "SR", "SS", "ST", "SU", "SV", "SW", "SX", "SY", "SZ", "T0", "T1", "T2", "T3", "T4", "T5", "T6", "T7", "T8", "T9", "TA", "TB", "TC", "TD", "TE", "TF", "TG", "TH", "TI", "TJ", "TK", "TL", "TM", "TN", "TO", "TP", "TQ", "TR", "TS", "TT", "TU", "TV", "TW", "TX", "TY", "TZ", "U0", "U1", "U2", "U3", "U4", "U5", "U6", "U7", "U8", "U9", "UA", "UB", "UC", "UD", "UE", "UF", "UG", "UH", "UI", "UJ", "UK", "UL", "UM", "UN", "UO", "UP", "UQ", "UR", "US", "UT", "UU", "UV", "UW", "UX", "UY", "UZ", "V0", "V1", "V2", "V3", "V4", "V5", "V6", "V7", "V8", "V9", "VA", "VB", "VC", "VD", "VE", "VF", "VG", "VH", "VI", "VJ", "VK", "VL", "VM", "VN", "VO", "VP", "VQ", "VR", "VS", "VT", "VU", "VV", "VW", "VX", "VY", "VZ", "W0", "W1", "W2", "W3", "W4", "W5", "W6", "W7", "W8", "W9", "WA", "WB", "WC", "WD", "WE", "WF", "WG", "WH", "WI", "WJ", "WK", "WL", "WM", "WN", "WO", "WP", "WQ", "WR", "WS", "WT", "WU", "WV", "WW", "WX", "WY", "WZ", "X0", "X1", "X2", "X3", "X4", "X5", "X6", "X7", "X8", "X9", "XA", "XB", "XC", "XD", "XE", "XF", "XG", "XH", "XI", "XJ", "XK", "XL", "XM", "XN", "XO", "XP", "XQ", "XR", "XS", "XT", "XU", "XV", "XW", "XX", "XY", "XZ", "Y0", "Y1", "Y2", "Y3", "Y4", "Y5", "Y6", "Y7", "Y8", "Y9", "YA", "YB", "YC", "YD", "YE", "YF", "YG", "YH", "YI", "YJ", "YK", "YL", "YM", "YN", "YO", "YP", "YQ", "YR", "YS", "YT", "YU", "YV", "YW", "YX", "YY", "YZ", "Z0", "Z1", "Z2", "Z3", "Z4", "Z5", "Z6", "Z7", "Z8", "Z9", "ZA", "ZB", "ZC", "ZD", "ZE", "ZF", "ZG", "ZH", "ZI", "ZJ", "ZK", "ZL", "ZM", "ZN", "ZO", "ZP", "ZQ", "ZR", "ZS", "ZT", "ZU", "ZV", "ZW", "ZX", "ZY", "ZZ"}) + Me.CHLnObj.Location = New System.Drawing.Point(67, 210) + Me.CHLnObj.Margin = New System.Windows.Forms.Padding(0) + Me.CHLnObj.Name = "CHLnObj" + Me.CHLnObj.Size = New System.Drawing.Size(116, 23) + Me.CHLnObj.TabIndex = 114 ' - 'TVCM + 'Label23 ' - Me.TVCM.BackColor = System.Drawing.Color.FromArgb(CType(CType(255, Byte), Integer), CType(CType(192, Byte), Integer), CType(CType(192, Byte), Integer)) - Me.TVCM.BorderStyle = System.Windows.Forms.BorderStyle.None - Me.TVCM.Font = New System.Drawing.Font("Segoe UI", 9.0!, System.Drawing.FontStyle.Bold) - Me.TVCM.Name = "TVCM" - Me.TVCM.Size = New System.Drawing.Size(60, 22) - Me.TVCM.Text = "2" - Me.TVCM.TextBoxTextAlign = System.Windows.Forms.HorizontalAlignment.Center + Me.Label23.Anchor = System.Windows.Forms.AnchorStyles.Right + Me.Label23.AutoSize = True + Me.Label23.Location = New System.Drawing.Point(19, 145) + Me.Label23.Name = "Label23" + Me.Label23.Size = New System.Drawing.Size(45, 15) + Me.Label23.TabIndex = 26 + Me.Label23.Text = "ExRank" + Me.Label23.TextAlign = System.Drawing.ContentAlignment.MiddleRight ' - 'LblDivide + 'Label21 ' - Me.LblDivide.Name = "LblDivide" - Me.LblDivide.Size = New System.Drawing.Size(15, 17) - Me.LblDivide.Text = "÷" + Me.Label21.Anchor = System.Windows.Forms.AnchorStyles.Right + Me.Label21.AutoSize = True + Me.Label21.Location = New System.Drawing.Point(9, 122) + Me.Label21.Name = "Label21" + Me.Label21.Size = New System.Drawing.Size(55, 15) + Me.Label21.TabIndex = 25 + Me.Label21.Text = "Difficulty" + Me.Label21.TextAlign = System.Drawing.ContentAlignment.MiddleRight ' - 'TVCD + 'THComment ' - Me.TVCD.BackColor = System.Drawing.Color.FromArgb(CType(CType(255, Byte), Integer), CType(CType(192, Byte), Integer), CType(CType(192, Byte), Integer)) - Me.TVCD.BorderStyle = System.Windows.Forms.BorderStyle.None - Me.TVCD.Font = New System.Drawing.Font("Segoe UI", 9.0!, System.Drawing.FontStyle.Bold) - Me.TVCD.Name = "TVCD" - Me.TVCD.Size = New System.Drawing.Size(60, 22) - Me.TVCD.Text = "1" - Me.TVCD.TextBoxTextAlign = System.Windows.Forms.HorizontalAlignment.Center + Me.POHeaderPart2.SetColumnSpan(Me.THComment, 2) + Me.THComment.Dock = System.Windows.Forms.DockStyle.Fill + Me.THComment.Location = New System.Drawing.Point(67, 187) + Me.THComment.Margin = New System.Windows.Forms.Padding(0) + Me.THComment.Name = "THComment" + Me.THComment.Size = New System.Drawing.Size(116, 23) + Me.THComment.TabIndex = 113 ' - 'BVCApply + 'Label24 ' - Me.BVCApply.BackColor = System.Drawing.Color.FromArgb(CType(CType(192, Byte), Integer), CType(CType(192, Byte), Integer), CType(CType(255, Byte), Integer)) - Me.BVCApply.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text - Me.BVCApply.ImageTransparentColor = System.Drawing.Color.Magenta - Me.BVCApply.Name = "BVCApply" - Me.BVCApply.Size = New System.Drawing.Size(96, 20) - Me.BVCApply.Text = "Expand By Ratio" - Me.BVCApply.ToolTipText = "This will expand notes and selection by the ratio next to this button. Ignores ce" & - "nter bar." + Me.Label24.Anchor = System.Windows.Forms.AnchorStyles.Right + Me.Label24.AutoSize = True + Me.Label24.Location = New System.Drawing.Point(25, 214) + Me.Label24.Name = "Label24" + Me.Label24.Size = New System.Drawing.Size(39, 15) + Me.Label24.TabIndex = 27 + Me.Label24.Text = "LnObj" + Me.Label24.TextAlign = System.Drawing.ContentAlignment.MiddleRight ' - 'TVCBPM + 'Label15 ' - Me.TVCBPM.BackColor = System.Drawing.Color.FromArgb(CType(CType(255, Byte), Integer), CType(CType(192, Byte), Integer), CType(CType(192, Byte), Integer)) - Me.TVCBPM.BorderStyle = System.Windows.Forms.BorderStyle.None - Me.TVCBPM.Font = New System.Drawing.Font("Segoe UI", 9.0!, System.Drawing.FontStyle.Bold) - Me.TVCBPM.Name = "TVCBPM" - Me.TVCBPM.Size = New System.Drawing.Size(80, 22) - Me.TVCBPM.Text = "120" - Me.TVCBPM.TextBoxTextAlign = System.Windows.Forms.HorizontalAlignment.Center + Me.Label15.Anchor = System.Windows.Forms.AnchorStyles.Right + Me.Label15.AutoSize = True + Me.Label15.Location = New System.Drawing.Point(15, 4) + Me.Label15.Name = "Label15" + Me.Label15.Size = New System.Drawing.Size(49, 15) + Me.Label15.TabIndex = 6 + Me.Label15.Text = "SubTitle" + Me.Label15.TextAlign = System.Drawing.ContentAlignment.MiddleRight ' - 'BVCCalculate + 'THTotal ' - Me.BVCCalculate.BackColor = System.Drawing.Color.FromArgb(CType(CType(192, Byte), Integer), CType(CType(192, Byte), Integer), CType(CType(255, Byte), Integer)) - Me.BVCCalculate.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text - Me.BVCCalculate.ImageTransparentColor = System.Drawing.Color.Magenta - Me.BVCCalculate.Name = "BVCCalculate" - Me.BVCCalculate.Size = New System.Drawing.Size(103, 20) - Me.BVCCalculate.Text = "Relocate By Value" - Me.BVCCalculate.ToolTipText = "This will move notes within the selection and preserve the selection, given the B" & - "PM value next to this button. Considers center bar." + Me.THTotal.Dock = System.Windows.Forms.DockStyle.Fill + Me.THTotal.Location = New System.Drawing.Point(67, 164) + Me.THTotal.Margin = New System.Windows.Forms.Padding(0) + Me.THTotal.Name = "THTotal" + Me.THTotal.Size = New System.Drawing.Size(88, 23) + Me.THTotal.TabIndex = 112 ' - 'BConvertStop + 'Label20 ' - Me.BConvertStop.BackColor = System.Drawing.Color.FromArgb(CType(CType(192, Byte), Integer), CType(CType(192, Byte), Integer), CType(CType(255, Byte), Integer)) - Me.BConvertStop.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text - Me.BConvertStop.ImageTransparentColor = System.Drawing.Color.Magenta - Me.BConvertStop.Name = "BConvertStop" - Me.BConvertStop.Size = New System.Drawing.Size(115, 20) - Me.BConvertStop.Text = "Transform Into Stop" - Me.BConvertStop.ToolTipText = "This will move notes within the selection and preserve the selection, given the B" & - "PM value next to this button. Considers center bar." + Me.Label20.Anchor = System.Windows.Forms.AnchorStyles.Right + Me.Label20.AutoSize = True + Me.Label20.Location = New System.Drawing.Point(32, 168) + Me.Label20.Name = "Label20" + Me.Label20.Size = New System.Drawing.Size(32, 15) + Me.Label20.TabIndex = 5 + Me.Label20.Text = "Total" + Me.Label20.TextAlign = System.Drawing.ContentAlignment.MiddleRight ' - 'FStatus + 'BHStageFile ' - Me.FStatus.AccessibleRole = System.Windows.Forms.AccessibleRole.StatusBar - Me.FStatus.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.FSC, Me.FSW, Me.FSM, Me.FSP1, Me.FSP3, Me.FSP2, Me.FSP4, Me.TimeStatusLabel, Me.FST, Me.FSH, Me.FSE}) - Me.FStatus.Location = New System.Drawing.Point(0, 0) - Me.FStatus.Name = "FStatus" - Me.FStatus.ShowItemToolTips = True - Me.FStatus.Size = New System.Drawing.Size(952, 22) - Me.FStatus.SizingGrip = False - Me.FStatus.TabIndex = 62 - Me.FStatus.Text = "Status" + Me.BHStageFile.Dock = System.Windows.Forms.DockStyle.Fill + Me.BHStageFile.FlatStyle = System.Windows.Forms.FlatStyle.System + Me.BHStageFile.Location = New System.Drawing.Point(158, 46) + Me.BHStageFile.Margin = New System.Windows.Forms.Padding(3, 0, 0, 0) + Me.BHStageFile.Name = "BHStageFile" + Me.BHStageFile.Size = New System.Drawing.Size(25, 24) + Me.BHStageFile.TabIndex = 105 + Me.BHStageFile.Text = "..." + Me.BHStageFile.UseVisualStyleBackColor = True ' - 'FSC + 'BHBanner ' - Me.FSC.AutoSize = False - Me.FSC.Name = "FSC" - Me.FSC.Size = New System.Drawing.Size(70, 17) - Me.FSC.Text = "BPM" - Me.FSC.ToolTipText = "Column Caption" + Me.BHBanner.Dock = System.Windows.Forms.DockStyle.Fill + Me.BHBanner.FlatStyle = System.Windows.Forms.FlatStyle.System + Me.BHBanner.Location = New System.Drawing.Point(158, 70) + Me.BHBanner.Margin = New System.Windows.Forms.Padding(3, 0, 0, 0) + Me.BHBanner.Name = "BHBanner" + Me.BHBanner.Size = New System.Drawing.Size(25, 24) + Me.BHBanner.TabIndex = 107 + Me.BHBanner.Text = "..." + Me.BHBanner.UseVisualStyleBackColor = True ' - 'FSW + 'Label19 ' - Me.FSW.AutoSize = False - Me.FSW.ForeColor = System.Drawing.Color.FromArgb(CType(CType(128, Byte), Integer), CType(CType(64, Byte), Integer), CType(CType(0, Byte), Integer)) - Me.FSW.Name = "FSW" - Me.FSW.Size = New System.Drawing.Size(40, 17) - Me.FSW.Text = "01" - Me.FSW.ToolTipText = "Note Index" + Me.Label19.Anchor = System.Windows.Forms.AnchorStyles.Right + Me.Label19.AutoSize = True + Me.Label19.Location = New System.Drawing.Point(3, 191) + Me.Label19.Name = "Label19" + Me.Label19.Size = New System.Drawing.Size(61, 15) + Me.Label19.TabIndex = 13 + Me.Label19.Text = "Comment" + Me.Label19.TextAlign = System.Drawing.ContentAlignment.MiddleRight ' - 'FSM + 'BHBackBMP ' - Me.FSM.AutoSize = False - Me.FSM.ForeColor = System.Drawing.Color.Teal - Me.FSM.Name = "FSM" - Me.FSM.Size = New System.Drawing.Size(40, 17) - Me.FSM.Text = "000" - Me.FSM.ToolTipText = "Measure Index" + Me.BHBackBMP.Dock = System.Windows.Forms.DockStyle.Fill + Me.BHBackBMP.FlatStyle = System.Windows.Forms.FlatStyle.System + Me.BHBackBMP.Location = New System.Drawing.Point(158, 94) + Me.BHBackBMP.Margin = New System.Windows.Forms.Padding(3, 0, 0, 0) + Me.BHBackBMP.Name = "BHBackBMP" + Me.BHBackBMP.Size = New System.Drawing.Size(25, 24) + Me.BHBackBMP.TabIndex = 109 + Me.BHBackBMP.Text = "..." + Me.BHBackBMP.UseVisualStyleBackColor = True ' - 'FSP1 + 'Label17 ' - Me.FSP1.AutoSize = False - Me.FSP1.Font = New System.Drawing.Font("Segoe UI", 9.0!, System.Drawing.FontStyle.Bold) - Me.FSP1.Name = "FSP1" - Me.FSP1.Size = New System.Drawing.Size(170, 17) - Me.FSP1.Text = "9.41176470588235 / 9999" - Me.FSP1.ToolTipText = "Grid Resolution" + Me.Label17.Anchor = System.Windows.Forms.AnchorStyles.Right + Me.Label17.AutoSize = True + Me.Label17.Location = New System.Drawing.Point(9, 27) + Me.Label17.Name = "Label17" + Me.Label17.Size = New System.Drawing.Size(55, 15) + Me.Label17.TabIndex = 7 + Me.Label17.Text = "SubArtist" + Me.Label17.TextAlign = System.Drawing.ContentAlignment.MiddleRight ' - 'FSP3 + 'Label16 ' - Me.FSP3.AutoSize = False - Me.FSP3.Font = New System.Drawing.Font("Segoe UI", 9.0!, System.Drawing.FontStyle.Bold) - Me.FSP3.ForeColor = System.Drawing.Color.Maroon - Me.FSP3.Name = "FSP3" - Me.FSP3.Size = New System.Drawing.Size(85, 17) - Me.FSP3.Text = "9999 / 9999" - Me.FSP3.ToolTipText = "Reduced Resolution" + Me.Label16.Anchor = System.Windows.Forms.AnchorStyles.Right + Me.Label16.AutoSize = True + Me.Label16.Location = New System.Drawing.Point(7, 50) + Me.Label16.Name = "Label16" + Me.Label16.Size = New System.Drawing.Size(57, 15) + Me.Label16.TabIndex = 9 + Me.Label16.Text = "Stage File" + Me.Label16.TextAlign = System.Drawing.ContentAlignment.MiddleRight ' - 'FSP2 + 'Label12 ' - Me.FSP2.AutoSize = False - Me.FSP2.Font = New System.Drawing.Font("Segoe UI", 9.0!, System.Drawing.FontStyle.Bold) - Me.FSP2.ForeColor = System.Drawing.Color.Green - Me.FSP2.Name = "FSP2" - Me.FSP2.Size = New System.Drawing.Size(170, 17) - Me.FSP2.Text = "112.941176470588 / 9999" - Me.FSP2.ToolTipText = "Measure Resolution" + Me.Label12.Anchor = System.Windows.Forms.AnchorStyles.Right + Me.Label12.AutoSize = True + Me.Label12.Location = New System.Drawing.Point(20, 74) + Me.Label12.Name = "Label12" + Me.Label12.Size = New System.Drawing.Size(44, 15) + Me.Label12.TabIndex = 13 + Me.Label12.Text = "Banner" + Me.Label12.TextAlign = System.Drawing.ContentAlignment.MiddleRight ' - 'FSP4 + 'THBackBMP ' - Me.FSP4.AutoSize = False - Me.FSP4.Name = "FSP4" - Me.FSP4.Size = New System.Drawing.Size(115, 17) - Me.FSP4.Text = "112.941176470588" - Me.FSP4.ToolTipText = "Absolute Position" + Me.THBackBMP.Dock = System.Windows.Forms.DockStyle.Fill + Me.THBackBMP.Location = New System.Drawing.Point(67, 94) + Me.THBackBMP.Margin = New System.Windows.Forms.Padding(0) + Me.THBackBMP.Name = "THBackBMP" + Me.THBackBMP.Size = New System.Drawing.Size(88, 23) + Me.THBackBMP.TabIndex = 108 ' - 'TimeStatusLabel + 'Label11 ' - Me.TimeStatusLabel.Name = "TimeStatusLabel" - Me.TimeStatusLabel.Size = New System.Drawing.Size(55, 17) - Me.TimeStatusLabel.Text = "00:00:000" + Me.Label11.Anchor = System.Windows.Forms.AnchorStyles.Right + Me.Label11.AutoSize = True + Me.Label11.Location = New System.Drawing.Point(4, 98) + Me.Label11.Name = "Label11" + Me.Label11.Size = New System.Drawing.Size(60, 15) + Me.Label11.TabIndex = 16 + Me.Label11.Text = "Back BMP" + Me.Label11.TextAlign = System.Drawing.ContentAlignment.MiddleRight ' - 'FST + 'THBanner ' - Me.FST.ForeColor = System.Drawing.Color.Olive - Me.FST.LinkColor = System.Drawing.Color.FromArgb(CType(CType(0, Byte), Integer), CType(CType(0, Byte), Integer), CType(CType(255, Byte), Integer)) - Me.FST.Name = "FST" - Me.FST.Size = New System.Drawing.Size(64, 17) - Me.FST.Text = "Length = 0" + Me.THBanner.Dock = System.Windows.Forms.DockStyle.Fill + Me.THBanner.Location = New System.Drawing.Point(67, 70) + Me.THBanner.Margin = New System.Windows.Forms.Padding(0) + Me.THBanner.Name = "THBanner" + Me.THBanner.Size = New System.Drawing.Size(88, 23) + Me.THBanner.TabIndex = 106 ' - 'FSH + 'THStageFile ' - Me.FSH.ForeColor = System.Drawing.Color.Blue - Me.FSH.Name = "FSH" - Me.FSH.Size = New System.Drawing.Size(46, 17) - Me.FSH.Text = "Hidden" + Me.THStageFile.Dock = System.Windows.Forms.DockStyle.Fill + Me.THStageFile.Location = New System.Drawing.Point(67, 46) + Me.THStageFile.Margin = New System.Windows.Forms.Padding(0) + Me.THStageFile.Name = "THStageFile" + Me.THStageFile.Size = New System.Drawing.Size(88, 23) + Me.THStageFile.TabIndex = 104 ' - 'FSE + 'THSubTitle ' - Me.FSE.ForeColor = System.Drawing.Color.Red - Me.FSE.Name = "FSE" - Me.FSE.Size = New System.Drawing.Size(32, 17) - Me.FSE.Text = "Error" + Me.POHeaderPart2.SetColumnSpan(Me.THSubTitle, 2) + Me.THSubTitle.Dock = System.Windows.Forms.DockStyle.Fill + Me.THSubTitle.Location = New System.Drawing.Point(67, 0) + Me.THSubTitle.Margin = New System.Windows.Forms.Padding(0) + Me.THSubTitle.Name = "THSubTitle" + Me.THSubTitle.Size = New System.Drawing.Size(116, 23) + Me.THSubTitle.TabIndex = 102 ' - 'TimerMiddle + 'THSubArtist ' - Me.TimerMiddle.Interval = 15 + Me.POHeaderPart2.SetColumnSpan(Me.THSubArtist, 2) + Me.THSubArtist.Dock = System.Windows.Forms.DockStyle.Fill + Me.THSubArtist.Location = New System.Drawing.Point(67, 23) + Me.THSubArtist.Margin = New System.Windows.Forms.Padding(0) + Me.THSubArtist.Name = "THSubArtist" + Me.THSubArtist.Size = New System.Drawing.Size(116, 23) + Me.THSubArtist.TabIndex = 103 ' - 'ToolStripContainer1 + 'POHeaderExpander ' + Me.POHeaderExpander.Appearance = System.Windows.Forms.Appearance.Button + Me.POHeaderExpander.AutoSize = True + Me.POHeaderExpander.Cursor = System.Windows.Forms.Cursors.Hand + Me.POHeaderExpander.Dock = System.Windows.Forms.DockStyle.Top + Me.POHeaderExpander.FlatAppearance.BorderSize = 0 + Me.POHeaderExpander.FlatStyle = System.Windows.Forms.FlatStyle.Popup + Me.POHeaderExpander.Location = New System.Drawing.Point(0, 161) + Me.POHeaderExpander.Margin = New System.Windows.Forms.Padding(0) + Me.POHeaderExpander.Name = "POHeaderExpander" + Me.POHeaderExpander.Size = New System.Drawing.Size(183, 25) + Me.POHeaderExpander.TabIndex = 101 + Me.POHeaderExpander.TabStop = False + Me.POHeaderExpander.Text = "Expand..." + Me.POHeaderExpander.TextAlign = System.Drawing.ContentAlignment.MiddleCenter + Me.POHeaderExpander.UseVisualStyleBackColor = False ' - 'ToolStripContainer1.ContentPanel + 'POHeaderPart1 ' - Me.ToolStripContainer1.ContentPanel.Controls.Add(Me.PMain) - Me.ToolStripContainer1.ContentPanel.Controls.Add(Me.SpR) - Me.ToolStripContainer1.ContentPanel.Controls.Add(Me.SpL) - Me.ToolStripContainer1.ContentPanel.Controls.Add(Me.PMainR) - Me.ToolStripContainer1.ContentPanel.Controls.Add(Me.PMainL) - Me.ToolStripContainer1.ContentPanel.Size = New System.Drawing.Size(952, 711) - Me.ToolStripContainer1.Dock = System.Windows.Forms.DockStyle.Fill - Me.ToolStripContainer1.Location = New System.Drawing.Point(0, 0) - Me.ToolStripContainer1.Name = "ToolStripContainer1" - Me.ToolStripContainer1.Size = New System.Drawing.Size(952, 759) - Me.ToolStripContainer1.TabIndex = 65 - Me.ToolStripContainer1.Text = "ToolStripContainer1" + Me.POHeaderPart1.AutoSize = True + Me.POHeaderPart1.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink + Me.POHeaderPart1.ColumnCount = 2 + Me.POHeaderPart1.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle()) + Me.POHeaderPart1.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100.0!)) + Me.POHeaderPart1.Controls.Add(Me.Label3, 0, 0) + Me.POHeaderPart1.Controls.Add(Me.THPlayLevel, 1, 6) + Me.POHeaderPart1.Controls.Add(Me.CHRank, 1, 5) + Me.POHeaderPart1.Controls.Add(Me.Label10, 0, 5) + Me.POHeaderPart1.Controls.Add(Me.CHPlayer, 1, 4) + Me.POHeaderPart1.Controls.Add(Me.Label4, 0, 1) + Me.POHeaderPart1.Controls.Add(Me.THGenre, 1, 2) + Me.POHeaderPart1.Controls.Add(Me.THBPM, 1, 3) + Me.POHeaderPart1.Controls.Add(Me.Label2, 0, 2) + Me.POHeaderPart1.Controls.Add(Me.THArtist, 1, 1) + Me.POHeaderPart1.Controls.Add(Me.THTitle, 1, 0) + Me.POHeaderPart1.Controls.Add(Me.Label9, 0, 3) + Me.POHeaderPart1.Controls.Add(Me.Label8, 0, 4) + Me.POHeaderPart1.Controls.Add(Me.Label6, 0, 6) + Me.POHeaderPart1.Dock = System.Windows.Forms.DockStyle.Top + Me.POHeaderPart1.Location = New System.Drawing.Point(0, 0) + Me.POHeaderPart1.Name = "POHeaderPart1" + Me.POHeaderPart1.RowCount = 7 + Me.POHeaderPart1.RowStyles.Add(New System.Windows.Forms.RowStyle()) + Me.POHeaderPart1.RowStyles.Add(New System.Windows.Forms.RowStyle()) + Me.POHeaderPart1.RowStyles.Add(New System.Windows.Forms.RowStyle()) + Me.POHeaderPart1.RowStyles.Add(New System.Windows.Forms.RowStyle()) + Me.POHeaderPart1.RowStyles.Add(New System.Windows.Forms.RowStyle()) + Me.POHeaderPart1.RowStyles.Add(New System.Windows.Forms.RowStyle()) + Me.POHeaderPart1.RowStyles.Add(New System.Windows.Forms.RowStyle()) + Me.POHeaderPart1.Size = New System.Drawing.Size(183, 161) + Me.POHeaderPart1.TabIndex = 25 ' - 'ToolStripContainer1.TopToolStripPanel + 'Label3 ' - Me.ToolStripContainer1.TopToolStripPanel.Controls.Add(Me.mnMain) - Me.ToolStripContainer1.TopToolStripPanel.Controls.Add(Me.TBMain) - Me.ToolStripContainer1.TopToolStripPanel.Controls.Add(Me.TBTotal) + Me.Label3.Anchor = System.Windows.Forms.AnchorStyles.Right + Me.Label3.AutoSize = True + Me.Label3.Location = New System.Drawing.Point(33, 4) + Me.Label3.Name = "Label3" + Me.Label3.Size = New System.Drawing.Size(29, 15) + Me.Label3.TabIndex = 2 + Me.Label3.Text = "Title" + Me.Label3.TextAlign = System.Drawing.ContentAlignment.MiddleRight ' - 'PMain + 'THPlayLevel ' - Me.PMain.BackColor = System.Drawing.Color.Black - Me.PMain.Controls.Add(Me.PMainIn) - Me.PMain.Controls.Add(Me.MainPanelScroll) - Me.PMain.Controls.Add(Me.HS) - Me.PMain.Dock = System.Windows.Forms.DockStyle.Fill - Me.PMain.Font = New System.Drawing.Font("Verdana", 9.0!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) - Me.PMain.ForeColor = System.Drawing.Color.White - Me.PMain.Location = New System.Drawing.Point(5, 0) - Me.PMain.Name = "PMain" - Me.PMain.Size = New System.Drawing.Size(942, 711) - Me.PMain.TabIndex = 58 - Me.PMain.Tag = "1" + Me.THPlayLevel.Dock = System.Windows.Forms.DockStyle.Fill + Me.THPlayLevel.Location = New System.Drawing.Point(65, 138) + Me.THPlayLevel.Margin = New System.Windows.Forms.Padding(0) + Me.THPlayLevel.Name = "THPlayLevel" + Me.THPlayLevel.Size = New System.Drawing.Size(118, 23) + Me.THPlayLevel.TabIndex = 8 ' - 'PMainIn + 'CHRank ' - Me.PMainIn.BackColor = System.Drawing.Color.Black - Me.PMainIn.Dock = System.Windows.Forms.DockStyle.Fill - Me.PMainIn.Font = New System.Drawing.Font("Verdana", 9.0!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) - Me.PMainIn.ForeColor = System.Drawing.Color.White - Me.PMainIn.Location = New System.Drawing.Point(0, 0) - Me.PMainIn.Name = "PMainIn" - Me.PMainIn.Size = New System.Drawing.Size(925, 694) - Me.PMainIn.TabIndex = 0 - Me.PMainIn.TabStop = True - Me.PMainIn.Tag = "1" + Me.CHRank.Dock = System.Windows.Forms.DockStyle.Top + Me.CHRank.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList + Me.CHRank.FlatStyle = System.Windows.Forms.FlatStyle.System + Me.CHRank.Items.AddRange(New Object() {"0 - Very Hard", "1 - Hard", "2 - Normal", "3 - Easy", "4 - Very Easy"}) + Me.CHRank.Location = New System.Drawing.Point(65, 115) + Me.CHRank.Margin = New System.Windows.Forms.Padding(0) + Me.CHRank.Name = "CHRank" + Me.CHRank.Size = New System.Drawing.Size(118, 23) + Me.CHRank.TabIndex = 7 ' - 'MainPanelScroll + 'Label10 ' - Me.MainPanelScroll.AccessibleRole = System.Windows.Forms.AccessibleRole.ScrollBar - Me.MainPanelScroll.Dock = System.Windows.Forms.DockStyle.Right - Me.MainPanelScroll.LargeChange = 592 - Me.MainPanelScroll.Location = New System.Drawing.Point(925, 0) - Me.MainPanelScroll.Maximum = 591 - Me.MainPanelScroll.Minimum = -10000 - Me.MainPanelScroll.Name = "MainPanelScroll" - Me.MainPanelScroll.Size = New System.Drawing.Size(17, 694) - Me.MainPanelScroll.SmallChange = 12 - Me.MainPanelScroll.TabIndex = 2 - Me.MainPanelScroll.Tag = "1" + Me.Label10.Anchor = System.Windows.Forms.AnchorStyles.Right + Me.Label10.AutoSize = True + Me.Label10.Location = New System.Drawing.Point(12, 119) + Me.Label10.Name = "Label10" + Me.Label10.Size = New System.Drawing.Size(50, 15) + Me.Label10.TabIndex = 16 + Me.Label10.Text = "Ranking" + Me.Label10.TextAlign = System.Drawing.ContentAlignment.MiddleRight ' - 'HS + 'CHPlayer ' - Me.HS.AccessibleRole = System.Windows.Forms.AccessibleRole.ScrollBar - Me.HS.Dock = System.Windows.Forms.DockStyle.Bottom - Me.HS.LargeChange = 777 - Me.HS.Location = New System.Drawing.Point(0, 694) - Me.HS.Maximum = 1233 - Me.HS.Name = "HS" - Me.HS.Size = New System.Drawing.Size(942, 17) - Me.HS.TabIndex = 3 - Me.HS.Tag = "1" + Me.CHPlayer.Dock = System.Windows.Forms.DockStyle.Top + Me.CHPlayer.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList + Me.CHPlayer.FlatStyle = System.Windows.Forms.FlatStyle.System + Me.CHPlayer.Items.AddRange(New Object() {"1 - Single Play", "2 - Couple Play", "3 - Double Play"}) + Me.CHPlayer.Location = New System.Drawing.Point(65, 92) + Me.CHPlayer.Margin = New System.Windows.Forms.Padding(0) + Me.CHPlayer.Name = "CHPlayer" + Me.CHPlayer.Size = New System.Drawing.Size(118, 23) + Me.CHPlayer.TabIndex = 6 ' - 'SpR + 'Label4 ' - Me.SpR.Dock = System.Windows.Forms.DockStyle.Right - Me.SpR.FlatAppearance.BorderSize = 0 - Me.SpR.FlatStyle = System.Windows.Forms.FlatStyle.Flat - Me.SpR.Location = New System.Drawing.Point(947, 0) - Me.SpR.Name = "SpR" - Me.SpR.Size = New System.Drawing.Size(5, 711) - Me.SpR.TabIndex = 59 - Me.SpR.TabStop = False - Me.SpR.UseVisualStyleBackColor = True - Me.SpR.Visible = False + Me.Label4.Anchor = System.Windows.Forms.AnchorStyles.Right + Me.Label4.AutoSize = True + Me.Label4.Location = New System.Drawing.Point(27, 27) + Me.Label4.Name = "Label4" + Me.Label4.Size = New System.Drawing.Size(35, 15) + Me.Label4.TabIndex = 3 + Me.Label4.Text = "Artist" + Me.Label4.TextAlign = System.Drawing.ContentAlignment.MiddleRight ' - 'SpL + 'THGenre ' - Me.SpL.Dock = System.Windows.Forms.DockStyle.Left - Me.SpL.FlatAppearance.BorderSize = 0 - Me.SpL.FlatStyle = System.Windows.Forms.FlatStyle.Flat - Me.SpL.Location = New System.Drawing.Point(0, 0) - Me.SpL.Name = "SpL" - Me.SpL.Size = New System.Drawing.Size(5, 711) - Me.SpL.TabIndex = 60 - Me.SpL.TabStop = False - Me.SpL.UseVisualStyleBackColor = True - Me.SpL.Visible = False + Me.THGenre.Dock = System.Windows.Forms.DockStyle.Fill + Me.THGenre.Location = New System.Drawing.Point(65, 46) + Me.THGenre.Margin = New System.Windows.Forms.Padding(0) + Me.THGenre.Name = "THGenre" + Me.THGenre.Size = New System.Drawing.Size(118, 23) + Me.THGenre.TabIndex = 4 ' - 'PMainR + 'THBPM ' - Me.PMainR.BackColor = System.Drawing.Color.Black - Me.PMainR.Controls.Add(Me.PMainInR) - Me.PMainR.Controls.Add(Me.RightPanelScroll) - Me.PMainR.Controls.Add(Me.HSR) - Me.PMainR.Dock = System.Windows.Forms.DockStyle.Right - Me.PMainR.Font = New System.Drawing.Font("Verdana", 9.0!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) - Me.PMainR.ForeColor = System.Drawing.Color.White - Me.PMainR.Location = New System.Drawing.Point(952, 0) - Me.PMainR.Name = "PMainR" - Me.PMainR.Size = New System.Drawing.Size(0, 711) - Me.PMainR.TabIndex = 56 - Me.PMainR.Tag = "2" + Me.THBPM.DecimalPlaces = 4 + Me.THBPM.Dock = System.Windows.Forms.DockStyle.Fill + Me.THBPM.Increment = New Decimal(New Integer() {10, 0, 0, 0}) + Me.THBPM.Location = New System.Drawing.Point(65, 69) + Me.THBPM.Margin = New System.Windows.Forms.Padding(0) + Me.THBPM.Maximum = New Decimal(New Integer() {655359999, 0, 0, 262144}) + Me.THBPM.Minimum = New Decimal(New Integer() {1, 0, 0, 262144}) + Me.THBPM.Name = "THBPM" + Me.THBPM.Size = New System.Drawing.Size(118, 23) + Me.THBPM.TabIndex = 5 + Me.THBPM.Value = New Decimal(New Integer() {120, 0, 0, 0}) ' - 'PMainInR + 'Label2 ' - Me.PMainInR.BackColor = System.Drawing.Color.Black - Me.PMainInR.Dock = System.Windows.Forms.DockStyle.Fill - Me.PMainInR.Font = New System.Drawing.Font("Verdana", 9.0!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) - Me.PMainInR.ForeColor = System.Drawing.Color.White - Me.PMainInR.Location = New System.Drawing.Point(0, 0) - Me.PMainInR.Name = "PMainInR" - Me.PMainInR.Size = New System.Drawing.Size(0, 694) - Me.PMainInR.TabIndex = 0 - Me.PMainInR.TabStop = True - Me.PMainInR.Tag = "2" + Me.Label2.Anchor = System.Windows.Forms.AnchorStyles.Right + Me.Label2.AutoSize = True + Me.Label2.Location = New System.Drawing.Point(24, 50) + Me.Label2.Name = "Label2" + Me.Label2.Size = New System.Drawing.Size(38, 15) + Me.Label2.TabIndex = 4 + Me.Label2.Text = "Genre" + Me.Label2.TextAlign = System.Drawing.ContentAlignment.MiddleRight ' - 'RightPanelScroll + 'THArtist ' - Me.RightPanelScroll.Dock = System.Windows.Forms.DockStyle.Right - Me.RightPanelScroll.LargeChange = 592 - Me.RightPanelScroll.Location = New System.Drawing.Point(-17, 0) - Me.RightPanelScroll.Maximum = 591 - Me.RightPanelScroll.Minimum = -10000 - Me.RightPanelScroll.Name = "RightPanelScroll" - Me.RightPanelScroll.Size = New System.Drawing.Size(17, 694) - Me.RightPanelScroll.SmallChange = 12 - Me.RightPanelScroll.TabIndex = 2 - Me.RightPanelScroll.Tag = "2" + Me.THArtist.Dock = System.Windows.Forms.DockStyle.Fill + Me.THArtist.Location = New System.Drawing.Point(65, 23) + Me.THArtist.Margin = New System.Windows.Forms.Padding(0) + Me.THArtist.Name = "THArtist" + Me.THArtist.Size = New System.Drawing.Size(118, 23) + Me.THArtist.TabIndex = 3 ' - 'HSR + 'THTitle ' - Me.HSR.Dock = System.Windows.Forms.DockStyle.Bottom - Me.HSR.LargeChange = 777 - Me.HSR.Location = New System.Drawing.Point(0, 694) - Me.HSR.Maximum = 1233 - Me.HSR.Name = "HSR" - Me.HSR.Size = New System.Drawing.Size(0, 17) - Me.HSR.TabIndex = 3 - Me.HSR.Tag = "2" + Me.THTitle.Dock = System.Windows.Forms.DockStyle.Fill + Me.THTitle.Location = New System.Drawing.Point(65, 0) + Me.THTitle.Margin = New System.Windows.Forms.Padding(0) + Me.THTitle.Name = "THTitle" + Me.THTitle.Size = New System.Drawing.Size(118, 23) + Me.THTitle.TabIndex = 2 ' - 'PMainL + 'Label9 ' - Me.PMainL.BackColor = System.Drawing.Color.Black - Me.PMainL.Controls.Add(Me.PMainInL) - Me.PMainL.Controls.Add(Me.LeftPanelScroll) - Me.PMainL.Controls.Add(Me.HSL) - Me.PMainL.Dock = System.Windows.Forms.DockStyle.Left - Me.PMainL.Font = New System.Drawing.Font("Verdana", 9.0!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) - Me.PMainL.ForeColor = System.Drawing.Color.White - Me.PMainL.Location = New System.Drawing.Point(0, 0) - Me.PMainL.Name = "PMainL" - Me.PMainL.Size = New System.Drawing.Size(0, 711) - Me.PMainL.TabIndex = 54 - Me.PMainL.Tag = "0" + Me.Label9.Anchor = System.Windows.Forms.AnchorStyles.Right + Me.Label9.AutoSize = True + Me.Label9.Location = New System.Drawing.Point(30, 73) + Me.Label9.Name = "Label9" + Me.Label9.Size = New System.Drawing.Size(32, 15) + Me.Label9.TabIndex = 5 + Me.Label9.Text = "BPM" + Me.Label9.TextAlign = System.Drawing.ContentAlignment.MiddleRight ' - 'PMainInL + 'Label8 ' - Me.PMainInL.BackColor = System.Drawing.Color.Black - Me.PMainInL.Dock = System.Windows.Forms.DockStyle.Fill - Me.PMainInL.Font = New System.Drawing.Font("Verdana", 9.0!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) - Me.PMainInL.ForeColor = System.Drawing.Color.White - Me.PMainInL.Location = New System.Drawing.Point(0, 0) - Me.PMainInL.Name = "PMainInL" - Me.PMainInL.Size = New System.Drawing.Size(0, 694) - Me.PMainInL.TabIndex = 0 - Me.PMainInL.TabStop = True - Me.PMainInL.Tag = "0" + Me.Label8.Anchor = System.Windows.Forms.AnchorStyles.Right + Me.Label8.AutoSize = True + Me.Label8.Location = New System.Drawing.Point(23, 96) + Me.Label8.Name = "Label8" + Me.Label8.Size = New System.Drawing.Size(39, 15) + Me.Label8.TabIndex = 13 + Me.Label8.Text = "Player" + Me.Label8.TextAlign = System.Drawing.ContentAlignment.MiddleRight ' - 'LeftPanelScroll + 'Label6 ' - Me.LeftPanelScroll.Dock = System.Windows.Forms.DockStyle.Right - Me.LeftPanelScroll.LargeChange = 592 - Me.LeftPanelScroll.Location = New System.Drawing.Point(-17, 0) - Me.LeftPanelScroll.Maximum = 591 - Me.LeftPanelScroll.Minimum = -10000 - Me.LeftPanelScroll.Name = "LeftPanelScroll" - Me.LeftPanelScroll.Size = New System.Drawing.Size(17, 694) - Me.LeftPanelScroll.SmallChange = 12 - Me.LeftPanelScroll.TabIndex = 2 - Me.LeftPanelScroll.Tag = "0" + Me.Label6.Anchor = System.Windows.Forms.AnchorStyles.Right + Me.Label6.AutoSize = True + Me.Label6.Location = New System.Drawing.Point(3, 142) + Me.Label6.Name = "Label6" + Me.Label6.Size = New System.Drawing.Size(59, 15) + Me.Label6.TabIndex = 8 + Me.Label6.Text = "Play Level" + Me.Label6.TextAlign = System.Drawing.ContentAlignment.MiddleRight ' - 'HSL + 'POHeaderSwitch ' - Me.HSL.Dock = System.Windows.Forms.DockStyle.Bottom - Me.HSL.LargeChange = 777 - Me.HSL.Location = New System.Drawing.Point(0, 694) - Me.HSL.Maximum = 1233 - Me.HSL.Name = "HSL" - Me.HSL.Size = New System.Drawing.Size(0, 17) - Me.HSL.TabIndex = 3 - Me.HSL.Tag = "0" + Me.POHeaderSwitch.Appearance = System.Windows.Forms.Appearance.Button + Me.POHeaderSwitch.BackColor = System.Drawing.SystemColors.Control + Me.POHeaderSwitch.Checked = True + Me.POHeaderSwitch.CheckState = System.Windows.Forms.CheckState.Checked + Me.POHeaderSwitch.Cursor = System.Windows.Forms.Cursors.Hand + Me.POHeaderSwitch.Dock = System.Windows.Forms.DockStyle.Top + Me.POHeaderSwitch.Font = New System.Drawing.Font("Segoe UI", 9.0!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.POHeaderSwitch.Location = New System.Drawing.Point(0, 0) + Me.POHeaderSwitch.Name = "POHeaderSwitch" + Me.POHeaderSwitch.Size = New System.Drawing.Size(183, 20) + Me.POHeaderSwitch.TabIndex = 1 + Me.POHeaderSwitch.TabStop = False + Me.POHeaderSwitch.Text = "Header" + Me.POHeaderSwitch.TextAlign = System.Drawing.ContentAlignment.MiddleCenter + Me.POHeaderSwitch.UseCompatibleTextRendering = True + Me.POHeaderSwitch.UseVisualStyleBackColor = False ' - 'TBTotal + 'POptionsScroll ' - Me.TBTotal.Dock = System.Windows.Forms.DockStyle.None - Me.TBTotal.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.TBTotalValue}) - Me.TBTotal.Location = New System.Drawing.Point(754, 23) - Me.TBTotal.Name = "TBTotal" - Me.TBTotal.Size = New System.Drawing.Size(25, 25) - Me.TBTotal.TabIndex = 0 - Me.TBTotal.Text = "ToolStrip1" + Me.POptionsScroll.AutoScroll = True + Me.POptionsScroll.Controls.Add(Me.POptions) + Me.POptionsScroll.Dock = System.Windows.Forms.DockStyle.Right + Me.POptionsScroll.Location = New System.Drawing.Point(958, 0) + Me.POptionsScroll.Name = "POptionsScroll" + Me.POptionsScroll.Size = New System.Drawing.Size(200, 781) + Me.POptionsScroll.TabIndex = 28 ' 'TBTotalValue ' @@ -4086,20 +4101,6 @@ Partial Class MainWindow Me.TBTotalValue.Size = New System.Drawing.Size(13, 22) Me.TBTotalValue.Text = "0" ' - 'POptionsResizer - ' - Me.POptionsResizer.AutoSize = True - Me.POptionsResizer.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink - Me.POptionsResizer.Dock = System.Windows.Forms.DockStyle.Right - Me.POptionsResizer.FlatAppearance.BorderSize = 0 - Me.POptionsResizer.FlatStyle = System.Windows.Forms.FlatStyle.Flat - Me.POptionsResizer.Location = New System.Drawing.Point(952, 0) - Me.POptionsResizer.Name = "POptionsResizer" - Me.POptionsResizer.Size = New System.Drawing.Size(6, 781) - Me.POptionsResizer.TabIndex = 67 - Me.POptionsResizer.TabStop = False - Me.POptionsResizer.UseVisualStyleBackColor = True - ' 'MainWindow ' Me.AllowDrop = True @@ -4117,8 +4118,26 @@ Partial Class MainWindow Me.Name = "MainWindow" Me.cmnLanguage.ResumeLayout(False) Me.cmnTheme.ResumeLayout(False) - Me.POptionsScroll.ResumeLayout(False) - Me.POptionsScroll.PerformLayout() + Me.Menu1.ResumeLayout(False) + Me.mnMain.ResumeLayout(False) + Me.mnMain.PerformLayout() + Me.cmnConversion.ResumeLayout(False) + Me.TBMain.ResumeLayout(False) + Me.TBMain.PerformLayout() + Me.pStatus.ResumeLayout(False) + Me.pStatus.PerformLayout() + Me.FStatus2.ResumeLayout(False) + Me.FStatus2.PerformLayout() + Me.FStatus.ResumeLayout(False) + Me.FStatus.PerformLayout() + Me.ToolStripContainer1.ContentPanel.ResumeLayout(False) + Me.ToolStripContainer1.TopToolStripPanel.ResumeLayout(False) + Me.ToolStripContainer1.TopToolStripPanel.PerformLayout() + Me.ToolStripContainer1.ResumeLayout(False) + Me.ToolStripContainer1.PerformLayout() + Me.PMain.ResumeLayout(False) + Me.PMainR.ResumeLayout(False) + Me.PMainL.ResumeLayout(False) Me.POptions.ResumeLayout(False) Me.POptions.PerformLayout() Me.POExpansion.ResumeLayout(False) @@ -4206,34 +4225,12 @@ Partial Class MainWindow Me.POHeaderPart1.ResumeLayout(False) Me.POHeaderPart1.PerformLayout() CType(Me.THBPM, System.ComponentModel.ISupportInitialize).EndInit() - Me.Menu1.ResumeLayout(False) - Me.mnMain.ResumeLayout(False) - Me.mnMain.PerformLayout() - Me.cmnConversion.ResumeLayout(False) - Me.TBMain.ResumeLayout(False) - Me.TBMain.PerformLayout() - Me.pStatus.ResumeLayout(False) - Me.pStatus.PerformLayout() - Me.FStatus2.ResumeLayout(False) - Me.FStatus2.PerformLayout() - Me.FStatus.ResumeLayout(False) - Me.FStatus.PerformLayout() - Me.ToolStripContainer1.ContentPanel.ResumeLayout(False) - Me.ToolStripContainer1.TopToolStripPanel.ResumeLayout(False) - Me.ToolStripContainer1.TopToolStripPanel.PerformLayout() - Me.ToolStripContainer1.ResumeLayout(False) - Me.ToolStripContainer1.PerformLayout() - Me.PMain.ResumeLayout(False) - Me.PMainR.ResumeLayout(False) - Me.PMainL.ResumeLayout(False) - Me.TBTotal.ResumeLayout(False) - Me.TBTotal.PerformLayout() + Me.POptionsScroll.ResumeLayout(False) + Me.POptionsScroll.PerformLayout() Me.ResumeLayout(False) Me.PerformLayout() End Sub - Friend WithEvents POptionsScroll As System.Windows.Forms.Panel - Friend WithEvents LWAV As System.Windows.Forms.ListBox Friend WithEvents Timer1 As System.Windows.Forms.Timer Friend WithEvents MInsert As System.Windows.Forms.ToolStripMenuItem Friend WithEvents MRemove As System.Windows.Forms.ToolStripMenuItem @@ -4318,32 +4315,6 @@ Partial Class MainWindow Friend WithEvents mnSRSplitter As System.Windows.Forms.ToolStripMenuItem Friend WithEvents mnNTInput As System.Windows.Forms.ToolStripMenuItem Friend WithEvents TBLangRefresh As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents CGSub As System.Windows.Forms.NumericUpDown - Friend WithEvents CGDivide As System.Windows.Forms.NumericUpDown - Friend WithEvents PictureBox7 As System.Windows.Forms.PictureBox - Friend WithEvents CGSnap As System.Windows.Forms.CheckBox - Friend WithEvents BWLock As System.Windows.Forms.CheckBox - Friend WithEvents TWSaturation As System.Windows.Forms.NumericUpDown - Friend WithEvents TWTransparency As System.Windows.Forms.NumericUpDown - Friend WithEvents TWPrecision As System.Windows.Forms.NumericUpDown - Friend WithEvents TWWidth As System.Windows.Forms.NumericUpDown - Friend WithEvents TWLeft As System.Windows.Forms.NumericUpDown - Friend WithEvents TWPosition As System.Windows.Forms.NumericUpDown - Friend WithEvents PictureBox5 As System.Windows.Forms.PictureBox - Friend WithEvents PictureBox6 As System.Windows.Forms.PictureBox - Friend WithEvents PictureBox4 As System.Windows.Forms.PictureBox - Friend WithEvents PictureBox3 As System.Windows.Forms.PictureBox - Friend WithEvents PictureBox2 As System.Windows.Forms.PictureBox - Friend WithEvents PictureBox1 As System.Windows.Forms.PictureBox - Friend WithEvents TWSaturation2 As System.Windows.Forms.TrackBar - Friend WithEvents TWTransparency2 As System.Windows.Forms.TrackBar - Friend WithEvents TWPrecision2 As System.Windows.Forms.TrackBar - Friend WithEvents TWWidth2 As System.Windows.Forms.TrackBar - Friend WithEvents TWLeft2 As System.Windows.Forms.TrackBar - Friend WithEvents TWPosition2 As System.Windows.Forms.TrackBar - Friend WithEvents TWFileName As System.Windows.Forms.TextBox - Friend WithEvents BWClear As System.Windows.Forms.Button - Friend WithEvents BWLoad As System.Windows.Forms.Button Friend WithEvents TBMain As System.Windows.Forms.ToolStrip Friend WithEvents TBNew As System.Windows.Forms.ToolStripButton Friend WithEvents TBOpen As System.Windows.Forms.ToolStripSplitButton @@ -4387,7 +4358,6 @@ Partial Class MainWindow Friend WithEvents FSSS As System.Windows.Forms.ToolStripButton Friend WithEvents FSSL As System.Windows.Forms.ToolStripButton Friend WithEvents FSSH As System.Windows.Forms.ToolStripButton - Friend WithEvents TExpansion As System.Windows.Forms.TextBox Friend WithEvents TimerMiddle As System.Windows.Forms.Timer Friend WithEvents ToolStripSeparator21 As System.Windows.Forms.ToolStripSeparator Friend WithEvents CGShow As System.Windows.Forms.ToolStripMenuItem @@ -4401,10 +4371,6 @@ Partial Class MainWindow Friend WithEvents CGBLP As System.Windows.Forms.ToolStripMenuItem Friend WithEvents CGSTOP As System.Windows.Forms.ToolStripMenuItem Friend WithEvents CGSCROLL As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents nBeatN As System.Windows.Forms.NumericUpDown - Friend WithEvents LBeat As System.Windows.Forms.ListBox - Friend WithEvents Label7 As System.Windows.Forms.Label - Friend WithEvents BBeatApply As System.Windows.Forms.Button Friend WithEvents mnPOptions As System.Windows.Forms.ToolStripMenuItem Friend WithEvents ToolStripContainer1 As System.Windows.Forms.ToolStripContainer Friend WithEvents PMain As System.Windows.Forms.Panel @@ -4444,123 +4410,11 @@ Partial Class MainWindow Friend WithEvents TBVOptions As System.Windows.Forms.ToolStripButton Friend WithEvents TBGOptions As System.Windows.Forms.ToolStripButton Friend WithEvents POBStorm As System.Windows.Forms.ToolStripButton - Friend WithEvents POptions As System.Windows.Forms.Panel - Friend WithEvents POHeader As System.Windows.Forms.Panel - Friend WithEvents POHeaderSwitch As System.Windows.Forms.CheckBox - Friend WithEvents POGrid As System.Windows.Forms.Panel - Friend WithEvents POGridSwitch As System.Windows.Forms.CheckBox - Friend WithEvents POHeaderInner As System.Windows.Forms.Panel - Friend WithEvents POHeaderPart2 As System.Windows.Forms.TableLayoutPanel - Friend WithEvents THExRank As System.Windows.Forms.TextBox - Friend WithEvents Label25 As System.Windows.Forms.Label - Friend WithEvents CHLnObj As System.Windows.Forms.ComboBox - Friend WithEvents Label23 As System.Windows.Forms.Label - Friend WithEvents Label21 As System.Windows.Forms.Label - Friend WithEvents THComment As System.Windows.Forms.TextBox - Friend WithEvents Label24 As System.Windows.Forms.Label - Friend WithEvents Label15 As System.Windows.Forms.Label - Friend WithEvents THTotal As System.Windows.Forms.TextBox - Friend WithEvents Label20 As System.Windows.Forms.Label - Friend WithEvents BHStageFile As System.Windows.Forms.Button - Friend WithEvents BHBanner As System.Windows.Forms.Button - Friend WithEvents Label19 As System.Windows.Forms.Label - Friend WithEvents BHBackBMP As System.Windows.Forms.Button - Friend WithEvents Label17 As System.Windows.Forms.Label - Friend WithEvents Label16 As System.Windows.Forms.Label - Friend WithEvents Label12 As System.Windows.Forms.Label - Friend WithEvents THBackBMP As System.Windows.Forms.TextBox - Friend WithEvents Label11 As System.Windows.Forms.Label - Friend WithEvents THBanner As System.Windows.Forms.TextBox - Friend WithEvents THStageFile As System.Windows.Forms.TextBox - Friend WithEvents THSubTitle As System.Windows.Forms.TextBox - Friend WithEvents THSubArtist As System.Windows.Forms.TextBox - Friend WithEvents POHeaderExpander As System.Windows.Forms.CheckBox - Friend WithEvents POHeaderPart1 As System.Windows.Forms.TableLayoutPanel - Friend WithEvents Label3 As System.Windows.Forms.Label - Friend WithEvents THPlayLevel As System.Windows.Forms.TextBox - Friend WithEvents CHRank As System.Windows.Forms.ComboBox - Friend WithEvents Label10 As System.Windows.Forms.Label - Friend WithEvents CHPlayer As System.Windows.Forms.ComboBox - Friend WithEvents CHDifficulty As System.Windows.Forms.ComboBox - Friend WithEvents Label4 As System.Windows.Forms.Label - Friend WithEvents THGenre As System.Windows.Forms.TextBox - Friend WithEvents THBPM As System.Windows.Forms.NumericUpDown - Friend WithEvents Label2 As System.Windows.Forms.Label - Friend WithEvents THArtist As System.Windows.Forms.TextBox - Friend WithEvents THTitle As System.Windows.Forms.TextBox - Friend WithEvents Label9 As System.Windows.Forms.Label - Friend WithEvents Label8 As System.Windows.Forms.Label - Friend WithEvents Label6 As System.Windows.Forms.Label - Friend WithEvents POGridPart1 As System.Windows.Forms.TableLayoutPanel - Friend WithEvents TableLayoutPanel2 As System.Windows.Forms.TableLayoutPanel - Friend WithEvents POGridInner As System.Windows.Forms.Panel - Friend WithEvents POGridPart2 As System.Windows.Forms.TableLayoutPanel - Friend WithEvents TableLayoutPanel5 As System.Windows.Forms.TableLayoutPanel - Friend WithEvents cVSLockR As System.Windows.Forms.CheckBox - Friend WithEvents Label5 As System.Windows.Forms.Label - Friend WithEvents cVSLock As System.Windows.Forms.CheckBox - Friend WithEvents cVSLockL As System.Windows.Forms.CheckBox - Friend WithEvents CGDisableVertical As System.Windows.Forms.CheckBox - Friend WithEvents TableLayoutPanel4 As System.Windows.Forms.TableLayoutPanel - Friend WithEvents Label1 As System.Windows.Forms.Label - Friend WithEvents CGB As System.Windows.Forms.NumericUpDown - Friend WithEvents POGridExpander As System.Windows.Forms.CheckBox - Friend WithEvents TableLayoutPanel3 As System.Windows.Forms.TableLayoutPanel - Friend WithEvents PictureBox9 As System.Windows.Forms.PictureBox - Friend WithEvents CGHeight2 As System.Windows.Forms.TrackBar - Friend WithEvents CGHeight As System.Windows.Forms.NumericUpDown - Friend WithEvents PictureBox10 As System.Windows.Forms.PictureBox - Friend WithEvents CGWidth2 As System.Windows.Forms.TrackBar - Friend WithEvents CGWidth As System.Windows.Forms.NumericUpDown - Friend WithEvents POWaveForm As System.Windows.Forms.Panel - Friend WithEvents POWaveFormSwitch As System.Windows.Forms.CheckBox - Friend WithEvents POWaveFormInner As System.Windows.Forms.Panel - Friend WithEvents POWaveFormPart2 As System.Windows.Forms.TableLayoutPanel - Friend WithEvents POWaveFormExpander As System.Windows.Forms.CheckBox - Friend WithEvents POWaveFormPart1 As System.Windows.Forms.TableLayoutPanel - Friend WithEvents TableLayoutPanel1 As System.Windows.Forms.TableLayoutPanel - Friend WithEvents TableLayoutPanel6 As System.Windows.Forms.TableLayoutPanel - Friend WithEvents FlowLayoutPanel1 As System.Windows.Forms.FlowLayoutPanel - Friend WithEvents FlowLayoutPanel2 As System.Windows.Forms.FlowLayoutPanel - Friend WithEvents POWAV As System.Windows.Forms.Panel - Friend WithEvents POWAVInner As System.Windows.Forms.TableLayoutPanel - Friend WithEvents POWAVSwitch As System.Windows.Forms.CheckBox - Friend WithEvents POBeat As System.Windows.Forms.Panel - Friend WithEvents POBeatInner As System.Windows.Forms.TableLayoutPanel - Friend WithEvents POBeatSwitch As System.Windows.Forms.CheckBox - Friend WithEvents FlowLayoutPanel3 As System.Windows.Forms.FlowLayoutPanel - Friend WithEvents BWAVUp As System.Windows.Forms.Button - Friend WithEvents BWAVDown As System.Windows.Forms.Button - Friend WithEvents BWAVBrowse As System.Windows.Forms.Button - Friend WithEvents BWAVRemove As System.Windows.Forms.Button - Friend WithEvents POExpansion As System.Windows.Forms.Panel - Friend WithEvents POExpansionInner As System.Windows.Forms.Panel - Friend WithEvents POExpansionSwitch As System.Windows.Forms.CheckBox - Friend WithEvents POWAVResizer As System.Windows.Forms.Button - Friend WithEvents TableLayoutPanel7 As System.Windows.Forms.TableLayoutPanel - Friend WithEvents POExpansionResizer As System.Windows.Forms.Button - Friend WithEvents POBeatResizer As System.Windows.Forms.Button Friend WithEvents POptionsResizer As System.Windows.Forms.Button - Friend WithEvents SpR As System.Windows.Forms.Button Friend WithEvents SpL As System.Windows.Forms.Button Friend WithEvents TBThemeLoadComptability As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents POWAVExpander As System.Windows.Forms.CheckBox - Friend WithEvents POWAVPart2 As System.Windows.Forms.TableLayoutPanel - Friend WithEvents CWAVMultiSelect As System.Windows.Forms.CheckBox - Friend WithEvents CWAVChangeLabel As System.Windows.Forms.CheckBox - Friend WithEvents nBeatD As System.Windows.Forms.NumericUpDown - Friend WithEvents BBeatApplyV As System.Windows.Forms.Button - Friend WithEvents tBeatValue As System.Windows.Forms.TextBox - Friend WithEvents POBeatExpander As System.Windows.Forms.CheckBox - Friend WithEvents POBeatPart2 As System.Windows.Forms.TableLayoutPanel - Friend WithEvents CBeatScale As System.Windows.Forms.RadioButton - Friend WithEvents CBeatCut As System.Windows.Forms.RadioButton - Friend WithEvents CBeatMeasure As System.Windows.Forms.RadioButton - Friend WithEvents CBeatPreserve As System.Windows.Forms.RadioButton - Friend WithEvents Label13 As System.Windows.Forms.Label Friend WithEvents ToolTipUniversal As System.Windows.Forms.ToolTip Friend WithEvents CGBPM As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents BGSlash As System.Windows.Forms.Button Friend WithEvents FSM As System.Windows.Forms.ToolStripStatusLabel Friend WithEvents mnGotoMeasure As ToolStripMenuItem Friend WithEvents ToolStripSeparator24 As ToolStripSeparator @@ -4570,9 +4424,154 @@ Partial Class MainWindow Friend WithEvents BConvertStop As ToolStripButton Friend WithEvents POBRandom As ToolStripMenuItem Friend WithEvents POBSRandom As ToolStripMenuItem - Friend WithEvents TBTotal As ToolStrip - Friend WithEvents TBTotalValue As ToolStripLabel Friend WithEvents mnStatistics As ToolStripMenuItem Friend WithEvents mnVCOptions As ToolStripMenuItem Friend WithEvents POBSort As ToolStripMenuItem + Friend WithEvents SpR As Button + Friend WithEvents POptions As Panel + Friend WithEvents POExpansion As Panel + Friend WithEvents POExpansionInner As Panel + Friend WithEvents TExpansion As TextBox + Friend WithEvents POExpansionResizer As Button + Friend WithEvents POExpansionSwitch As CheckBox + Friend WithEvents POBeat As Panel + Friend WithEvents POBeatInner As TableLayoutPanel + Friend WithEvents POBeatExpander As CheckBox + Friend WithEvents POBeatResizer As Button + Friend WithEvents TableLayoutPanel7 As TableLayoutPanel + Friend WithEvents nBeatD As NumericUpDown + Friend WithEvents BBeatApplyV As Button + Friend WithEvents nBeatN As NumericUpDown + Friend WithEvents BBeatApply As Button + Friend WithEvents Label7 As Label + Friend WithEvents tBeatValue As TextBox + Friend WithEvents LBeat As ListBox + Friend WithEvents POBeatPart2 As TableLayoutPanel + Friend WithEvents CBeatScale As RadioButton + Friend WithEvents CBeatCut As RadioButton + Friend WithEvents CBeatMeasure As RadioButton + Friend WithEvents CBeatPreserve As RadioButton + Friend WithEvents POBeatSwitch As CheckBox + Friend WithEvents POWAV As Panel + Friend WithEvents POWAVInner As TableLayoutPanel + Friend WithEvents POWAVExpander As CheckBox + Friend WithEvents LWAV As ListBox + Friend WithEvents FlowLayoutPanel3 As FlowLayoutPanel + Friend WithEvents BWAVUp As Button + Friend WithEvents BWAVDown As Button + Friend WithEvents BWAVBrowse As Button + Friend WithEvents BWAVRemove As Button + Friend WithEvents POWAVResizer As Button + Friend WithEvents POWAVPart2 As TableLayoutPanel + Friend WithEvents CWAVMultiSelect As CheckBox + Friend WithEvents CWAVChangeLabel As CheckBox + Friend WithEvents POWAVSwitch As CheckBox + Friend WithEvents POWaveForm As Panel + Friend WithEvents POWaveFormInner As Panel + Friend WithEvents POWaveFormPart2 As TableLayoutPanel + Friend WithEvents TWSaturation As NumericUpDown + Friend WithEvents PictureBox2 As PictureBox + Friend WithEvents TWTransparency As NumericUpDown + Friend WithEvents PictureBox3 As PictureBox + Friend WithEvents TWPrecision As NumericUpDown + Friend WithEvents PictureBox4 As PictureBox + Friend WithEvents TWWidth As NumericUpDown + Friend WithEvents PictureBox5 As PictureBox + Friend WithEvents TWLeft As NumericUpDown + Friend WithEvents PictureBox6 As PictureBox + Friend WithEvents TWSaturation2 As TrackBar + Friend WithEvents TWLeft2 As TrackBar + Friend WithEvents TWTransparency2 As TrackBar + Friend WithEvents TWWidth2 As TrackBar + Friend WithEvents TWPrecision2 As TrackBar + Friend WithEvents POWaveFormExpander As CheckBox + Friend WithEvents POWaveFormPart1 As TableLayoutPanel + Friend WithEvents TableLayoutPanel1 As TableLayoutPanel + Friend WithEvents FlowLayoutPanel1 As FlowLayoutPanel + Friend WithEvents BWLoad As Button + Friend WithEvents BWClear As Button + Friend WithEvents BWLock As CheckBox + Friend WithEvents TWFileName As TextBox + Friend WithEvents TableLayoutPanel6 As TableLayoutPanel + Friend WithEvents PictureBox1 As PictureBox + Friend WithEvents TWPosition2 As TrackBar + Friend WithEvents TWPosition As NumericUpDown + Friend WithEvents POWaveFormSwitch As CheckBox + Friend WithEvents POGrid As Panel + Friend WithEvents POGridInner As Panel + Friend WithEvents POGridPart2 As TableLayoutPanel + Friend WithEvents TableLayoutPanel5 As TableLayoutPanel + Friend WithEvents FlowLayoutPanel2 As FlowLayoutPanel + Friend WithEvents cVSLockL As CheckBox + Friend WithEvents cVSLock As CheckBox + Friend WithEvents cVSLockR As CheckBox + Friend WithEvents Label5 As Label + Friend WithEvents TableLayoutPanel4 As TableLayoutPanel + Friend WithEvents Label1 As Label + Friend WithEvents CGB As NumericUpDown + Friend WithEvents POGridExpander As CheckBox + Friend WithEvents POGridPart1 As TableLayoutPanel + Friend WithEvents TableLayoutPanel3 As TableLayoutPanel + Friend WithEvents PictureBox9 As PictureBox + Friend WithEvents CGHeight2 As TrackBar + Friend WithEvents CGHeight As NumericUpDown + Friend WithEvents PictureBox10 As PictureBox + Friend WithEvents CGWidth2 As TrackBar + Friend WithEvents CGWidth As NumericUpDown + Friend WithEvents CGDisableVertical As CheckBox + Friend WithEvents CGSnap As CheckBox + Friend WithEvents TableLayoutPanel2 As TableLayoutPanel + Friend WithEvents PictureBox7 As PictureBox + Friend WithEvents CGDivide As NumericUpDown + Friend WithEvents CGSub As NumericUpDown + Friend WithEvents BGSlash As Button + Friend WithEvents POGridSwitch As CheckBox + Friend WithEvents POHeader As Panel + Friend WithEvents POHeaderInner As Panel + Friend WithEvents POHeaderPart2 As TableLayoutPanel + Friend WithEvents CHDifficulty As ComboBox + Friend WithEvents Label13 As Label + Friend WithEvents THExRank As TextBox + Friend WithEvents Label25 As Label + Friend WithEvents CHLnObj As ComboBox + Friend WithEvents Label23 As Label + Friend WithEvents Label21 As Label + Friend WithEvents THComment As TextBox + Friend WithEvents Label24 As Label + Friend WithEvents Label15 As Label + Friend WithEvents THTotal As TextBox + Friend WithEvents Label20 As Label + Friend WithEvents BHStageFile As Button + Friend WithEvents BHBanner As Button + Friend WithEvents Label19 As Label + Friend WithEvents BHBackBMP As Button + Friend WithEvents Label17 As Label + Friend WithEvents Label16 As Label + Friend WithEvents Label12 As Label + Friend WithEvents THBackBMP As TextBox + Friend WithEvents Label11 As Label + Friend WithEvents THBanner As TextBox + Friend WithEvents THStageFile As TextBox + Friend WithEvents THSubTitle As TextBox + Friend WithEvents THSubArtist As TextBox + Friend WithEvents POHeaderExpander As CheckBox + Friend WithEvents POHeaderPart1 As TableLayoutPanel + Friend WithEvents Label3 As Label + Friend WithEvents THPlayLevel As TextBox + Friend WithEvents CHRank As ComboBox + Friend WithEvents Label10 As Label + Friend WithEvents CHPlayer As ComboBox + Friend WithEvents Label4 As Label + Friend WithEvents THGenre As TextBox + Friend WithEvents THBPM As NumericUpDown + Friend WithEvents Label2 As Label + Friend WithEvents THArtist As TextBox + Friend WithEvents THTitle As TextBox + Friend WithEvents Label9 As Label + Friend WithEvents Label8 As Label + Friend WithEvents Label6 As Label + Friend WithEvents POHeaderSwitch As CheckBox + Friend WithEvents POptionsScroll As Panel + Friend WithEvents ECSelectSection As Button + Friend WithEvents TBTotalValue As ToolStripLabel End Class diff --git a/iBMSC/MainWindow.resx b/iBMSC/MainWindow.resx index ff618c232..334ebdc32 100644 --- a/iBMSC/MainWindow.resx +++ b/iBMSC/MainWindow.resx @@ -123,9 +123,6 @@ 625, 2 - - 1240, 2 - 87, 2 @@ -148,43 +145,43 @@ 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 - Rf0PWT8lOy+O4O4AAAAASUVORK5CYII= + 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 + 0f4HUYAlDK9yFIQAAAAASUVORK5CYII= @@ -202,9 +199,6 @@ 1120, 2 - - 497, 47 - 1240, 2 diff --git a/iBMSC/MainWindow.vb b/iBMSC/MainWindow.vb index 45b0affee..ded9fa925 100644 --- a/iBMSC/MainWindow.vb +++ b/iBMSC/MainWindow.vb @@ -79,6 +79,8 @@ Public Class MainWindow 'IO Dim FileName As String = "Untitled.bms" + Dim RandomFileName As String = "___TempRandom" & GenerateRandomString(6, False) & ".bmsc" + Public RandomFile(2) As String 'Dim TitlePath As New Drawing2D.GraphicsPath Dim InitPath As String = "" Dim IsSaved As Boolean = True @@ -186,6 +188,7 @@ Public Class MainWindow Dim iPlayer As Integer = 0 Dim gColumns As Integer = 46 + '----Visual Options Dim vo As New visualSettings() @@ -207,7 +210,11 @@ Public Class MainWindow End Sub End Structure - Public pArgs() As PlayerArguments = {New PlayerArguments("\uBMplay.exe", + Public pArgs() As PlayerArguments = {New PlayerArguments("\mBMplay.exe", + """""", + "-s """"", + "-t"), + New PlayerArguments("\uBMplay.exe", "-P -N0 """"", "-P -N """"", "-S"), @@ -224,7 +231,7 @@ Public Class MainWindow '----Split Panel Options Dim PanelWidth() As Single = {0, 100, 0} Dim PanelHScroll() As Integer = {0, 0, 0} - Dim PanelVScroll() As Integer = {0, 0, 0} + Dim PanelVScroll() As Double = {0, 0, 0} Dim spLock() As Boolean = {False, False, False} Dim spDiff() As Integer = {0, 0, 0} Dim PanelFocus As Integer = 1 '0 = Left, 1 = Middle, 2 = Right @@ -492,10 +499,6 @@ Public Class MainWindow If bStop Then Audio.StopPlaying() End If - If xFileLocation <> "" AndAlso FileLen(xFileLocation) = 0 Then - MsgBox("0kb File") - Exit Sub - End If Audio.Play(xFileLocation) End Sub @@ -789,6 +792,8 @@ Public Class MainWindow End Sub Private Sub Form1_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing + Dim xStrAll As String + Dim xRandomFile As Boolean = GetFileName(FileName).StartsWith("___TempRandom") If Not IsSaved Then Dim xStr As String = Strings.Messages.SaveOnExit If e.CloseReason = CloseReason.WindowsShutDown Then xStr = Strings.Messages.SaveOnExit1 @@ -796,7 +801,7 @@ Public Class MainWindow Dim xResult As MsgBoxResult = MsgBox(xStr, MsgBoxStyle.YesNoCancel Or MsgBoxStyle.Question, Me.Text) - If xResult = MsgBoxResult.Yes Then + If xResult = MsgBoxResult.Yes AndAlso Not xRandomFile Then If ExcludeFileName(FileName) = "" Then Dim xDSave As New SaveFileDialog xDSave.Filter = Strings.FileType._bms & "|*.bms;*.bme;*.bml;*.pms;*.txt|" & @@ -812,7 +817,7 @@ Public Class MainWindow If xDSave.ShowDialog = Windows.Forms.DialogResult.Cancel Then e.Cancel = True : Exit Sub SetFileName(xDSave.FileName) End If - Dim xStrAll As String = SaveBMS() + xStrAll = SaveBMS() My.Computer.FileSystem.WriteAllText(FileName, xStrAll, False, TextEncoding) NewRecent(FileName) If BeepWhileSaved Then Beep() @@ -821,6 +826,12 @@ Public Class MainWindow If xResult = MsgBoxResult.Cancel Then e.Cancel = True End If + If xRandomFile Then + xStrAll = SaveRandomBMS() + My.Computer.FileSystem.WriteAllText(FileName, xStrAll, False, TextEncoding) + If BeepWhileSaved Then Beep() + End If + If Not e.Cancel Then 'If SaveTheme Then ' My.Computer.FileSystem.WriteAllText(My.Application.Info.DirectoryPath & "\Skin.cff", SaveSkinCFF, False, System.Text.Encoding.Unicode) @@ -4931,8 +4942,9 @@ case2: Dim xI0 As Integer Private Sub mnGotoMeasure_Click(sender As Object, e As EventArgs) Handles mnGotoMeasure.Click Dim s = InputBox(Strings.Messages.PromptEnterMeasure, "Enter Measure") - Dim i As Integer - If Int32.TryParse(s, i) AndAlso i < 0 Or i > 999 Then PanelVScroll(PanelFocus) = -MeasureBottom(i) + ' Interpolation, Value = F + (C - F) * (i - Floor(i)) + Dim i As Double + If Double.TryParse(s, i) AndAlso i > 0 AndAlso i < 999 Then PanelVScroll(PanelFocus) = -(MeasureBottom(Math.Floor(i)) + (MeasureBottom(Math.Ceiling(i)) - MeasureBottom(Math.Floor(i))) * (i - Math.Floor(i))) End Sub @@ -4952,4 +4964,54 @@ case2: Dim xI0 As Integer Return items End Function + Private Sub Expand_Load(sender As Object, e As EventArgs) Handles ECSelectSection.Click + ReDim RandomFile(2) + Dim xDOp As New OpExpand() + Dim ReadText As String + Try + xDOp.ShowDialog(Me) + Catch + Exit Sub + End Try + + If RandomFile(1) = "-" Then Exit Sub + Dim RandomFilePath = ExcludeFileName(FileName) & "\" & RandomFileName + ' Picks another random filename because the programme somehow generated the same exact RandomFileName as a previous instance. 1 in 2-billion chance btw + Do Until Not My.Computer.FileSystem.FileExists(RandomFilePath) + RandomFileName = "___TempRandom" & GenerateRandomString(6, False) & ".bmsc" + RandomFilePath = ExcludeFileName(FileName) & "\" & RandomFileName + Loop + RandomFile(1) = GenerateHeaderMeta() & GenerateHeaderIndexedData() & RandomFile(1) + ' Dim xStrHeader As String = GenerateHeaderMeta() + ' xStrHeader &= GenerateHeaderIndexedData() + My.Computer.FileSystem.WriteAllText(RandomFilePath, RandomFile(1), False, TextEncoding) + System.Diagnostics.Process.Start(My.Application.Info.DirectoryPath & "\" & My.Application.Info.ProductName & ".exe", RandomFilePath) + Do Until False + Threading.Thread.Sleep(3000) + ReadText = My.Computer.FileSystem.ReadAllText(RandomFilePath, TextEncoding) + If ReadText.EndsWith("*---------------------- RANDOM DATA FIELD") Then + Exit Do + End If + Loop + RandomFile(1) = "" + For Each xStrLine In Split(ReadText, vbCrLf) + If xStrLine <> "" AndAlso xStrLine <> "*---------------------- RANDOM DATA FIELD" Then + RandomFile(1) &= xStrLine & vbCrLf + End If + Next + TExpansion.Text = Join(RandomFile, vbCrLf) + AddTempFileList(RandomFilePath) + End Sub + + Public Function GenerateRandomString(ByRef len As Integer, ByRef upper As Boolean) As String + Dim rand As New Random() + Dim allowableChars() As Char = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLOMNOPQRSTUVWXYZ0123456789".ToCharArray() + Dim final As String = String.Empty + For i As Integer = 0 To len - 1 + final += allowableChars(rand.Next(allowableChars.Length - 1)) + Next + + Return IIf(upper, final.ToUpper(), final) + End Function + End Class diff --git a/iBMSC/Option Windows/OpExpand.Designer.vb b/iBMSC/Option Windows/OpExpand.Designer.vb new file mode 100644 index 000000000..467840612 --- /dev/null +++ b/iBMSC/Option Windows/OpExpand.Designer.vb @@ -0,0 +1,93 @@ + +Partial Class OpExpand + Inherits System.Windows.Forms.Form + + 'Form overrides dispose to clean up the component list. + + Protected Overrides Sub Dispose(ByVal disposing As Boolean) + Try + If disposing AndAlso components IsNot Nothing Then + components.Dispose() + End If + Finally + MyBase.Dispose(disposing) + End Try + End Sub + + 'Required by the Windows Form Designer + Private components As System.ComponentModel.IContainer + + 'NOTE: The following procedure is required by the Windows Form Designer + 'It can be modified using the Windows Form Designer. + 'Do not modify it using the code editor. + + Private Sub InitializeComponent() + Me.Label5 = New System.Windows.Forms.Label() + Me.Cancel_Button = New System.Windows.Forms.Button() + Me.OK_Button = New System.Windows.Forms.Button() + Me.ExpansionCodeList = New System.Windows.Forms.ListBox() + Me.SuspendLayout() + ' + 'Label5 + ' + Me.Label5.AutoSize = True + Me.Label5.Location = New System.Drawing.Point(12, 9) + Me.Label5.Name = "Label5" + Me.Label5.Size = New System.Drawing.Size(124, 13) + Me.Label5.TabIndex = 69 + Me.Label5.Text = "Current Expansion Code:" + ' + 'Cancel_Button + ' + Me.Cancel_Button.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) + Me.Cancel_Button.DialogResult = System.Windows.Forms.DialogResult.Cancel + Me.Cancel_Button.FlatStyle = System.Windows.Forms.FlatStyle.System + Me.Cancel_Button.Location = New System.Drawing.Point(144, 426) + Me.Cancel_Button.Name = "Cancel_Button" + Me.Cancel_Button.Size = New System.Drawing.Size(126, 23) + Me.Cancel_Button.TabIndex = 67 + Me.Cancel_Button.Text = "Cancel" + ' + 'OK_Button + ' + Me.OK_Button.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left), System.Windows.Forms.AnchorStyles) + Me.OK_Button.DialogResult = System.Windows.Forms.DialogResult.OK + Me.OK_Button.FlatStyle = System.Windows.Forms.FlatStyle.System + Me.OK_Button.Location = New System.Drawing.Point(12, 426) + Me.OK_Button.Name = "OK_Button" + Me.OK_Button.Size = New System.Drawing.Size(126, 23) + Me.OK_Button.TabIndex = 66 + Me.OK_Button.Text = "OK" + ' + 'ExpansionCodeList + ' + Me.ExpansionCodeList.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.ExpansionCodeList.FormattingEnabled = True + Me.ExpansionCodeList.Location = New System.Drawing.Point(12, 25) + Me.ExpansionCodeList.Name = "ExpansionCodeList" + Me.ExpansionCodeList.Size = New System.Drawing.Size(260, 394) + Me.ExpansionCodeList.TabIndex = 70 + ' + 'OpExpand + ' + Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!) + Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font + Me.ClientSize = New System.Drawing.Size(284, 461) + Me.Controls.Add(Me.ExpansionCodeList) + Me.Controls.Add(Me.Label5) + Me.Controls.Add(Me.Cancel_Button) + Me.Controls.Add(Me.OK_Button) + Me.Name = "OpExpand" + Me.Text = "Select Expansion Code" + Me.ResumeLayout(False) + Me.PerformLayout() + + End Sub + + Friend WithEvents Label5 As Label + Friend WithEvents Cancel_Button As Button + Friend WithEvents OK_Button As Button + Friend WithEvents ExpansionCodeList As ListBox +End Class diff --git a/iBMSC/Option Windows/OpExpand.resx b/iBMSC/Option Windows/OpExpand.resx new file mode 100644 index 000000000..29dcb1b3a --- /dev/null +++ b/iBMSC/Option Windows/OpExpand.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/iBMSC/Option Windows/OpExpand.vb b/iBMSC/Option Windows/OpExpand.vb new file mode 100644 index 000000000..de010abe0 --- /dev/null +++ b/iBMSC/Option Windows/OpExpand.vb @@ -0,0 +1,110 @@ +Public Class OpExpand + + Dim TExpansionTextSplit() As String = Split(MainWindow.TExpansion.Text, vbCrLf, , CompareMethod.Text) + Dim CurrSelection As Integer = -1 + Dim RangeL As Integer = -1 + Dim RangeU As Integer = -1 + Dim xStack As Integer = 0 + Private Sub OK_Button_Click(sender As Object, e As EventArgs) Handles OK_Button.Click, ExpansionCodeList.DoubleClick + ' If no line selected + If CurrSelection = -1 Then + MsgBox("Error: No line selected.") + Exit Sub + End If + + ' Find the first line of the currect #if section, right after #if + For L = CurrSelection To 0 Step -1 + If SWIC(ExpansionCodeList.Items(L), "#ENDIF") AndAlso L <> CurrSelection Then + xStack += 1 + End If + + If SWIC(ExpansionCodeList.Items(L), "#IF") Then + If xStack > 0 Then + xStack -= 1 + Else + RangeL = L + 1 + Exit For + End If + + End If + Next + ' Find the last line of the currect #if section, right before #endif + For U = CurrSelection To TExpansionTextSplit.Length - 1 + If SWIC(ExpansionCodeList.Items(U), "#IF") AndAlso U <> CurrSelection Then + xStack += 1 + End If + + If SWIC(ExpansionCodeList.Items(U), "#ENDIF") Then + If xStack > 0 Then + xStack -= 1 + Else + RangeU = U - 1 + Exit For + End If + + End If + Next + + ' If RangeL or RangeU's values have not been found + If RangeL = -1 Or RangeU = -1 Then + MsgBox("Error: #IF Section not detected.") + MainWindow.RandomFile(1) = "-" + Exit Sub + End If + + ' Split expansion code into 3 parts + Dim TExpansionTextSelected(RangeL - 1) As String + For i = 0 To RangeL - 1 + TExpansionTextSelected(i) = TExpansionTextSplit(i) + Next + MainWindow.RandomFile(0) = Join(TExpansionTextSelected, vbCrLf) + ReDim TExpansionTextSelected(RangeU - RangeL) + For i = RangeL To RangeU + TExpansionTextSelected(i - RangeL) = TExpansionTextSplit(i) + Next + MainWindow.RandomFile(1) = Join(TExpansionTextSelected, vbCrLf) + ReDim TExpansionTextSelected(TExpansionTextSplit.Length - 1 - RangeU - 1) + For i = RangeU + 1 To TExpansionTextSplit.Length - 1 + TExpansionTextSelected(i - RangeU - 1) = TExpansionTextSplit(i) + Next + MainWindow.RandomFile(2) = Join(TExpansionTextSelected, vbCrLf) + Me.Close() + End Sub + + Private Sub Cancel_Button_Click(sender As Object, e As EventArgs) Handles Cancel_Button.Click + Me.DialogResult = System.Windows.Forms.DialogResult.Cancel + Me.Close() + End Sub + + Public Sub New() + InitializeComponent() + + ' If no expansion text + If MainWindow.TExpansion.Text = "" Then + MsgBox("Error: Expansion code is empty.") + Me.Close() + Exit Sub + End If + + ' List expansion code per line + ExpansionCodeList.Items.Clear() + For Each xStrLine In TExpansionTextSplit + ExpansionCodeList.Items.Add(xStrLine) + Next + End Sub + + Private Sub ExpansionCodeList_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles ExpansionCodeList.Click + CurrSelection = ExpansionCodeList.SelectedIndex + End Sub + + Private Function SWIC(str As String, strHash As String) As Boolean ' Copied from ChartIO.vb + Return str.StartsWith(strHash, StringComparison.CurrentCultureIgnoreCase) + End Function + + Private Function ExcludeFileName(ByVal s As String) As String ' Copied from MainWindow.vb + Dim fslash As Integer = InStrRev(s, "/") + Dim bslash As Integer = InStrRev(s, "\") + If (bslash Or fslash) = 0 Then Return "" + Return Mid(s, 1, IIf(fslash > bslash, fslash, bslash) - 1) + End Function +End Class \ No newline at end of file diff --git a/iBMSC/Option Windows/OpPlayer.vb b/iBMSC/Option Windows/OpPlayer.vb index 4777828f3..43b7040af 100644 --- a/iBMSC/Option Windows/OpPlayer.vb +++ b/iBMSC/Option Windows/OpPlayer.vb @@ -1,209 +1,213 @@ -Imports System.Windows.Forms - -Public Class OpPlayer - Dim pArg() As MainWindow.PlayerArguments - 'Dim ImplicitChange As Boolean = False - Dim CurrPlayer As Integer = -1 - - Private Sub OK_Button_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OK_Button.Click - DialogResult = DialogResult.OK - Close() - - MainWindow.pArgs = pArg.Clone - MainWindow.CurrentPlayer = CurrPlayer - - Dispose() - End Sub - - Private Sub Cancel_Button_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Cancel_Button.Click - Me.DialogResult = System.Windows.Forms.DialogResult.Cancel - Me.Close() - Me.Dispose() - End Sub - - Private Sub OpPlayer_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load - Me.Font = MainWindow.Font - - Me.Text = Strings.fopPlayer.Title - Label1.Text = Strings.fopPlayer.Path - Label2.Text = Strings.fopPlayer.PlayFromBeginning - Label3.Text = Strings.fopPlayer.PlayFromHere - Label4.Text = Strings.fopPlayer.StopPlaying - BAdd.Text = Strings.fopPlayer.Add - BRemove.Text = Strings.fopPlayer.Remove - Label6.Text = Strings.fopPlayer.References & vbCrLf & _ - " = " & Strings.fopPlayer.DirectoryOfApp & vbCrLf & _ - " = " & Strings.fopPlayer.CurrMeasure & vbCrLf & _ - " = " & Strings.fopPlayer.FileName - OK_Button.Text = Strings.OK - Cancel_Button.Text = Strings.Cancel - BDefault.Text = Strings.fopPlayer.RestoreDefault - End Sub - - Private Sub LPlayer_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles LPlayer.Click - If pArg Is Nothing OrElse pArg.Length = 0 Then Exit Sub - - CurrPlayer = LPlayer.SelectedIndex - ShowInTextbox() - End Sub - - Private Sub LPlayer_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles LPlayer.KeyDown - LPlayer_Click(sender, New EventArgs) - End Sub - - Private Sub BPrevAdd_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BAdd.Click - ReDim Preserve pArg(UBound(pArg) + 1) - CurrPlayer += 1 - For xI1 As Integer = UBound(pArg) To CurrPlayer Step -1 - pArg(xI1) = pArg(xI1 - 1) - Next - - LPlayer.Items.Insert(CurrPlayer, _ - GetFileName(pArg(CurrPlayer - 1).Path)) - LPlayer.SelectedIndex += 1 - End Sub - - Private Sub BPrevDelete_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BRemove.Click - If LPlayer.Items.Count = 1 Then - MsgBox(Strings.Messages.PreviewDelError, MsgBoxStyle.Exclamation) - Exit Sub - End If - - For xI1 As Integer = CurrPlayer To UBound(pArg) - 1 - pArg(xI1) = pArg(xI1 + 1) - Next - ReDim Preserve pArg(UBound(pArg) - 1) - - 'RemoveHandler LPlayer.SelectedIndexChanged, AddressOf LPlayer_SelectedIndexChanged - LPlayer.Items.RemoveAt(CurrPlayer) - 'AddHandler LPlayer.SelectedIndexChanged, AddressOf LPlayer_SelectedIndexChanged - - LPlayer.SelectedIndex = IIf(CurrPlayer > UBound(pArg), CurrPlayer - 1, CurrPlayer) - CurrPlayer = Math.Min(CurrPlayer, UBound(pArg)) - ShowInTextbox() - End Sub - - Private Sub BPrevBrowse_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BBrowse.Click - Dim xDOpen As New OpenFileDialog - xDOpen.InitialDirectory = IIf(Path.GetDirectoryName(Replace(TPath.Text, "", My.Application.Info.DirectoryPath)) = "", _ - My.Application.Info.DirectoryPath, _ - Path.GetDirectoryName(Replace(TPath.Text, "", My.Application.Info.DirectoryPath))) - xDOpen.Filter = Strings.FileType.EXE & "|*.exe" - xDOpen.DefaultExt = "exe" - If xDOpen.ShowDialog = Windows.Forms.DialogResult.Cancel Then Exit Sub - TPath.Text = Replace(xDOpen.FileName, My.Application.Info.DirectoryPath, "") - End Sub - - Private Sub BPrevDefault_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BDefault.Click - 'ImplicitChange = True - If MsgBox(Strings.Messages.RestoreDefaultSettings, MsgBoxStyle.Question + MsgBoxStyle.YesNo) = MsgBoxResult.No Then Exit Sub - - pArg = New MainWindow.PlayerArguments() {New MainWindow.PlayerArguments("\uBMplay.exe", _ - "-P -N0 """"", _ - "-P -N """"", _ - "-S"), _ - New MainWindow.PlayerArguments("\o2play.exe", _ - "-P -N0 """"", _ - "-P -N """"", _ - "-S")} - CurrPlayer = 0 - ResetLPlayer_ShowInTextbox() - 'ImplicitChange = False - End Sub - - 'Affect LPlayer and all textboxes - Private Sub ResetLPlayer_ShowInTextbox() - LPlayer.Items.Clear() - For xI1 As Integer = 0 To UBound(pArg) - LPlayer.Items.Add(GetFileName(pArg(xI1).Path)) - Next - 'RemoveHandler LPlayer.SelectedIndexChanged, AddressOf LPlayer_SelectedIndexChanged - LPlayer.SelectedIndex = CurrPlayer - 'AddHandler LPlayer.SelectedIndexChanged, AddressOf LPlayer_SelectedIndexChanged - ShowInTextbox() - 'ImplicitChange = False - End Sub - - 'affect current LPlayer index value - Private Sub LPlayerChangeCurrIndex(ByVal xStr As String) - 'RemoveHandler LPlayer.SelectedIndexChanged, AddressOf LPlayer_SelectedIndexChanged - LPlayer.Items.Item(CurrPlayer) = GetFileName(xStr) - 'AddHandler LPlayer.SelectedIndexChanged, AddressOf LPlayer_SelectedIndexChanged - End Sub - - 'Affect pArgs - Private Sub SavePArg() - pArg(CurrPlayer).Path = TPath.Text - pArg(CurrPlayer).aBegin = TPlayB.Text - pArg(CurrPlayer).aHere = TPlay.Text - pArg(CurrPlayer).aStop = TStop.Text - 'pArg(CurrPlayer) = TPath.Text & vbCrLf & _ - ' TPlayB.Text & vbCrLf & _ - ' TPlay.Text & vbCrLf & _ - ' TStop.Text - End Sub - - 'affect all textboxes - Private Sub ShowInTextbox() - 'ImplicitChange = True - 'Dim xStr() As String = Split(pArg(CurrPlayer), vbCrLf) - 'If xStr.Length <> 4 Then ReDim Preserve xStr(3) - TPath.Text = pArg(CurrPlayer).Path - TPlayB.Text = pArg(CurrPlayer).aBegin - TPlay.Text = pArg(CurrPlayer).aHere - TStop.Text = pArg(CurrPlayer).aStop - ValidateTextBox() - 'ImplicitChange = False - End Sub - - Private Sub ValidateTextBox() - For Each xT As TextBox In New TextBox() {TPath, TPlayB, TPlay, TStop} - Dim xText As String = xT.Text.Replace("", "").Replace("", "").Replace("", "").Replace("""", "") - Dim xContainsInvalidChar As Boolean = False - - For Each xC As Char In Path.GetInvalidPathChars - If xText.IndexOf(xC) <> -1 Then - xContainsInvalidChar = True - Exit For - End If - Next - - If xContainsInvalidChar Then - xT.BackColor = Color.FromArgb(&HFFFFC0C0) - Else - xT.BackColor = Nothing - End If - Next - End Sub - - Public Sub New(ByVal xCurrPlayer As Integer) - InitializeComponent() - - pArg = MainWindow.pArgs.Clone - CurrPlayer = xCurrPlayer - ResetLPlayer_ShowInTextbox() - End Sub - - Private Sub TPath_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TPath.KeyUp, TPlay.KeyUp, TPlayB.KeyUp, TStop.KeyUp - SavePArg() - If [Object].ReferenceEquals(sender, TPath) Then _ - LPlayerChangeCurrIndex(pArg(CurrPlayer).Path) - End Sub - - Private Sub TPath_LostFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles TPath.LostFocus, TPlay.LostFocus, TPlayB.LostFocus, TStop.LostFocus - SavePArg() - If [Object].ReferenceEquals(sender, TPath) Then _ - LPlayerChangeCurrIndex(pArg(CurrPlayer).Path) - ValidateTextBox() - End Sub - - 'Private Function pArgPath(ByVal I As Integer) - ' Return Mid(pArg(I), 1, InStr(pArg(I), vbCrLf) - 1) - 'End Function - - Private Function GetFileName(ByVal s As String) As String - Dim fslash As Integer = InStrRev(s, "/") - Dim bslash As Integer = InStrRev(s, "\") - Return Mid(s, IIf(fslash > bslash, fslash, bslash) + 1) - End Function -End Class +Imports System.Windows.Forms + +Public Class OpPlayer + Dim pArg() As MainWindow.PlayerArguments + 'Dim ImplicitChange As Boolean = False + Dim CurrPlayer As Integer = -1 + + Private Sub OK_Button_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OK_Button.Click + DialogResult = DialogResult.OK + Close() + + MainWindow.pArgs = pArg.Clone + MainWindow.CurrentPlayer = CurrPlayer + + Dispose() + End Sub + + Private Sub Cancel_Button_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Cancel_Button.Click + Me.DialogResult = System.Windows.Forms.DialogResult.Cancel + Me.Close() + Me.Dispose() + End Sub + + Private Sub OpPlayer_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load + Me.Font = MainWindow.Font + + Me.Text = Strings.fopPlayer.Title + Label1.Text = Strings.fopPlayer.Path + Label2.Text = Strings.fopPlayer.PlayFromBeginning + Label3.Text = Strings.fopPlayer.PlayFromHere + Label4.Text = Strings.fopPlayer.StopPlaying + BAdd.Text = Strings.fopPlayer.Add + BRemove.Text = Strings.fopPlayer.Remove + Label6.Text = Strings.fopPlayer.References & vbCrLf & + " = " & Strings.fopPlayer.DirectoryOfApp & vbCrLf & + " = " & Strings.fopPlayer.CurrMeasure & vbCrLf & + " = " & Strings.fopPlayer.FileName + OK_Button.Text = Strings.OK + Cancel_Button.Text = Strings.Cancel + BDefault.Text = Strings.fopPlayer.RestoreDefault + End Sub + + Private Sub LPlayer_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles LPlayer.Click + If pArg Is Nothing OrElse pArg.Length = 0 Then Exit Sub + + CurrPlayer = LPlayer.SelectedIndex + ShowInTextbox() + End Sub + + Private Sub LPlayer_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles LPlayer.KeyDown + LPlayer_Click(sender, New EventArgs) + End Sub + + Private Sub BPrevAdd_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BAdd.Click + ReDim Preserve pArg(UBound(pArg) + 1) + CurrPlayer += 1 + For xI1 As Integer = UBound(pArg) To CurrPlayer Step -1 + pArg(xI1) = pArg(xI1 - 1) + Next + + LPlayer.Items.Insert(CurrPlayer, + GetFileName(pArg(CurrPlayer - 1).Path)) + LPlayer.SelectedIndex += 1 + End Sub + + Private Sub BPrevDelete_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BRemove.Click + If LPlayer.Items.Count = 1 Then + MsgBox(Strings.Messages.PreviewDelError, MsgBoxStyle.Exclamation) + Exit Sub + End If + + For xI1 As Integer = CurrPlayer To UBound(pArg) - 1 + pArg(xI1) = pArg(xI1 + 1) + Next + ReDim Preserve pArg(UBound(pArg) - 1) + + 'RemoveHandler LPlayer.SelectedIndexChanged, AddressOf LPlayer_SelectedIndexChanged + LPlayer.Items.RemoveAt(CurrPlayer) + 'AddHandler LPlayer.SelectedIndexChanged, AddressOf LPlayer_SelectedIndexChanged + + LPlayer.SelectedIndex = IIf(CurrPlayer > UBound(pArg), CurrPlayer - 1, CurrPlayer) + CurrPlayer = Math.Min(CurrPlayer, UBound(pArg)) + ShowInTextbox() + End Sub + + Private Sub BPrevBrowse_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BBrowse.Click + Dim xDOpen As New OpenFileDialog + xDOpen.InitialDirectory = IIf(Path.GetDirectoryName(Replace(TPath.Text, "", My.Application.Info.DirectoryPath)) = "", + My.Application.Info.DirectoryPath, + Path.GetDirectoryName(Replace(TPath.Text, "", My.Application.Info.DirectoryPath))) + xDOpen.Filter = Strings.FileType.EXE & "|*.exe" + xDOpen.DefaultExt = "exe" + If xDOpen.ShowDialog = Windows.Forms.DialogResult.Cancel Then Exit Sub + TPath.Text = Replace(xDOpen.FileName, My.Application.Info.DirectoryPath, "") + End Sub + + Private Sub BPrevDefault_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BDefault.Click + 'ImplicitChange = True + If MsgBox(Strings.Messages.RestoreDefaultSettings, MsgBoxStyle.Question + MsgBoxStyle.YesNo) = MsgBoxResult.No Then Exit Sub + + pArg = New MainWindow.PlayerArguments() {New MainWindow.PlayerArguments("\mBMplay.exe", + """""", + "-s """"", + "-t"), + New MainWindow.PlayerArguments("\uBMplay.exe", + "-P -N0 """"", + "-P -N """"", + "-S"), + New MainWindow.PlayerArguments("\o2play.exe", + "-P -N0 """"", + "-P -N """"", + "-S")} + CurrPlayer = 0 + ResetLPlayer_ShowInTextbox() + 'ImplicitChange = False + End Sub + + 'Affect LPlayer and all textboxes + Private Sub ResetLPlayer_ShowInTextbox() + LPlayer.Items.Clear() + For xI1 As Integer = 0 To UBound(pArg) + LPlayer.Items.Add(GetFileName(pArg(xI1).Path)) + Next + 'RemoveHandler LPlayer.SelectedIndexChanged, AddressOf LPlayer_SelectedIndexChanged + LPlayer.SelectedIndex = CurrPlayer + 'AddHandler LPlayer.SelectedIndexChanged, AddressOf LPlayer_SelectedIndexChanged + ShowInTextbox() + 'ImplicitChange = False + End Sub + + 'affect current LPlayer index value + Private Sub LPlayerChangeCurrIndex(ByVal xStr As String) + 'RemoveHandler LPlayer.SelectedIndexChanged, AddressOf LPlayer_SelectedIndexChanged + LPlayer.Items.Item(CurrPlayer) = GetFileName(xStr) + 'AddHandler LPlayer.SelectedIndexChanged, AddressOf LPlayer_SelectedIndexChanged + End Sub + + 'Affect pArgs + Private Sub SavePArg() + pArg(CurrPlayer).Path = TPath.Text + pArg(CurrPlayer).aBegin = TPlayB.Text + pArg(CurrPlayer).aHere = TPlay.Text + pArg(CurrPlayer).aStop = TStop.Text + 'pArg(CurrPlayer) = TPath.Text & vbCrLf & _ + ' TPlayB.Text & vbCrLf & _ + ' TPlay.Text & vbCrLf & _ + ' TStop.Text + End Sub + + 'affect all textboxes + Private Sub ShowInTextbox() + 'ImplicitChange = True + 'Dim xStr() As String = Split(pArg(CurrPlayer), vbCrLf) + 'If xStr.Length <> 4 Then ReDim Preserve xStr(3) + TPath.Text = pArg(CurrPlayer).Path + TPlayB.Text = pArg(CurrPlayer).aBegin + TPlay.Text = pArg(CurrPlayer).aHere + TStop.Text = pArg(CurrPlayer).aStop + ValidateTextBox() + 'ImplicitChange = False + End Sub + + Private Sub ValidateTextBox() + For Each xT As TextBox In New TextBox() {TPath, TPlayB, TPlay, TStop} + Dim xText As String = xT.Text.Replace("", "").Replace("", "").Replace("", "").Replace("""", "") + Dim xContainsInvalidChar As Boolean = False + + For Each xC As Char In Path.GetInvalidPathChars + If xText.IndexOf(xC) <> -1 Then + xContainsInvalidChar = True + Exit For + End If + Next + + If xContainsInvalidChar Then + xT.BackColor = Color.FromArgb(&HFFFFC0C0) + Else + xT.BackColor = Nothing + End If + Next + End Sub + + Public Sub New(ByVal xCurrPlayer As Integer) + InitializeComponent() + + pArg = MainWindow.pArgs.Clone + CurrPlayer = xCurrPlayer + ResetLPlayer_ShowInTextbox() + End Sub + + Private Sub TPath_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TPath.KeyUp, TPlay.KeyUp, TPlayB.KeyUp, TStop.KeyUp + SavePArg() + If [Object].ReferenceEquals(sender, TPath) Then _ + LPlayerChangeCurrIndex(pArg(CurrPlayer).Path) + End Sub + + Private Sub TPath_LostFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles TPath.LostFocus, TPlay.LostFocus, TPlayB.LostFocus, TStop.LostFocus + SavePArg() + If [Object].ReferenceEquals(sender, TPath) Then _ + LPlayerChangeCurrIndex(pArg(CurrPlayer).Path) + ValidateTextBox() + End Sub + + 'Private Function pArgPath(ByVal I As Integer) + ' Return Mid(pArg(I), 1, InStr(pArg(I), vbCrLf) - 1) + 'End Function + + Private Function GetFileName(ByVal s As String) As String + Dim fslash As Integer = InStrRev(s, "/") + Dim bslash As Integer = InStrRev(s, "\") + Return Mid(s, IIf(fslash > bslash, fslash, bslash) + 1) + End Function +End Class diff --git a/iBMSC/app.config b/iBMSC/app.config index 658d764fa..1d1f08676 100644 --- a/iBMSC/app.config +++ b/iBMSC/app.config @@ -1,23 +1,23 @@ - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + diff --git a/iBMSC/iBMSC.vbproj b/iBMSC/iBMSC.vbproj index 9891645c4..150ca9a42 100644 --- a/iBMSC/iBMSC.vbproj +++ b/iBMSC/iBMSC.vbproj @@ -11,7 +11,7 @@ pBMSC 512 WindowsForms - v4.6.1 + v4.8 false publish\ @@ -69,6 +69,15 @@ My Project\app.manifest + + true + bin\test\ + pBMSC.xml + true + 41999,42016,42017,42018,42019,42020,42021,42022,42032,42036 + pdbonly + AnyCPU + ..\packages\CSCore.1.2.1.1\lib\net35-client\CSCore.dll @@ -186,6 +195,12 @@ Form + + OpExpand.vb + + + Form + Form @@ -283,6 +298,9 @@ My.Resources Designer + + OpExpand.vb + OpGeneral.vb diff --git a/iBMSC/packages.config b/iBMSC/packages.config index 8112914c3..8b3357a22 100644 --- a/iBMSC/packages.config +++ b/iBMSC/packages.config @@ -1,5 +1,5 @@ - - - - + + + + \ No newline at end of file From 460aa452dc172d573d50980fbb1135dfd3d120c0 Mon Sep 17 00:00:00 2001 From: psyk2642 <60137590+psyk2642@users.noreply.github.com> Date: Fri, 11 Mar 2022 23:32:45 +0800 Subject: [PATCH 045/257] Delete/Add multiple files to #WAV + Miscellaneous - Added multi-delete/add functionality to #WAV (Sounds List) - (Coding only) Changed Release folder name to pBMSC for ease of zipping folder --- iBMSC/MainWindow.vb | 25 +++++++++++++++++++++---- iBMSC/iBMSC.vbproj | 25 ++++++++++++++----------- 2 files changed, 35 insertions(+), 15 deletions(-) diff --git a/iBMSC/MainWindow.vb b/iBMSC/MainWindow.vb index ded9fa925..e5d65db12 100644 --- a/iBMSC/MainWindow.vb +++ b/iBMSC/MainWindow.vb @@ -1887,18 +1887,28 @@ EndSearch: Private Sub LWAV_DoubleClick(ByVal sender As Object, ByVal e As System.EventArgs) Handles LWAV.DoubleClick Dim xDWAV As New OpenFileDialog + Dim xLWAVIds(LWAV.SelectedIndices.Count - 1) As Integer + For i = 0 To LWAV.SelectedIndices.Count - 1 + xLWAVIds(i) = LWAV.SelectedIndices(i) + Next xDWAV.DefaultExt = "wav" xDWAV.Filter = Strings.FileType._wave & "|*.wav;*.ogg;*.mp3|" & Strings.FileType.WAV & "|*.wav|" & Strings.FileType.OGG & "|*.ogg|" & Strings.FileType.MP3 & "|*.mp3|" & Strings.FileType._all & "|*.*" + xDWAV.Multiselect = True xDWAV.InitialDirectory = IIf(ExcludeFileName(FileName) = "", InitPath, ExcludeFileName(FileName)) If xDWAV.ShowDialog = Windows.Forms.DialogResult.Cancel Then Exit Sub InitPath = ExcludeFileName(xDWAV.FileName) - hWAV(LWAV.SelectedIndex + 1) = GetFileName(xDWAV.FileName) - LWAV.Items.Item(LWAV.SelectedIndex) = C10to36(LWAV.SelectedIndex + 1) & ": " & GetFileName(xDWAV.FileName) + + ' Replace multiple + For i = 0 To xLWAVIds.Count - 1 + hWAV(xLWAVIds(i) + 1) = GetFileName(xDWAV.FileNames((i) Mod xDWAV.FileNames.Length)) + LWAV.Items.Item(xLWAVIds(i)) = C10to36(xLWAVIds(i)) & ": " & GetFileName(xDWAV.FileNames((i) Mod xDWAV.FileNames.Length)) + Next + If IsSaved Then SetIsSaved(False) End Sub @@ -1909,8 +1919,15 @@ EndSearch: Case Keys.Enter LWAV_DoubleClick(sender, e) Case Keys.Delete - hWAV(LWAV.SelectedIndex + 1) = "" - LWAV.Items.Item(LWAV.SelectedIndex) = C10to36(LWAV.SelectedIndex + 1) & ": " + ' Delete multiple + Dim xLWAVIds(LWAV.SelectedIndices.Count - 1) As Integer + For i = 0 To LWAV.SelectedIndices.Count - 1 + xLWAVIds(i) = LWAV.SelectedIndices(i) + Next + For i = 0 To xLWAVIds.Count - 1 + hWAV(xLWAVIds(i) + 1) = "" + LWAV.Items.Item(xLWAVIds(i)) = C10to36(xLWAVIds(i) + 1) & ": " + Next If IsSaved Then SetIsSaved(False) End Select End Sub diff --git a/iBMSC/iBMSC.vbproj b/iBMSC/iBMSC.vbproj index 150ca9a42..9aad89c28 100644 --- a/iBMSC/iBMSC.vbproj +++ b/iBMSC/iBMSC.vbproj @@ -36,18 +36,20 @@ true true bin\Debug\ - pBMSC.xml + + 41999,42016,42017,42018,42019,42020,42021,42022,42032,42036 false AnyCPU - pdbonly + none false true true - bin\Release\ - pBMSC.xml + bin\pBMSC\ + + 41999,42016,42017,42018,42019,42020,42021,42022,42032,42036 false @@ -72,7 +74,8 @@ true bin\test\ - pBMSC.xml + + true 41999,42016,42017,42018,42019,42020,42021,42022,42032,42036 pdbonly @@ -119,6 +122,11 @@ Component + + True + True + Settings.settings + @@ -225,11 +233,6 @@ True Resources.resx - - True - Settings.settings - True - OpGeneral.vb @@ -322,8 +325,8 @@ Application.Designer.vb - SettingsSingleFileGenerator My + SettingsSingleFileGenerator Settings.Designer.vb From 83f43159018983c51adb7be0becf63f948ee82d2 Mon Sep 17 00:00:00 2001 From: psyk2642 <60137590+psyk2642@users.noreply.github.com> Date: Fri, 11 Mar 2022 23:46:00 +0800 Subject: [PATCH 046/257] Expansion Code Selection Fix - Prevents a new instance of pBMSC from opening when closing the form via the X button instead of the cancel button. --- iBMSC/Option Windows/OpExpand.vb | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/iBMSC/Option Windows/OpExpand.vb b/iBMSC/Option Windows/OpExpand.vb index de010abe0..4766ae33d 100644 --- a/iBMSC/Option Windows/OpExpand.vb +++ b/iBMSC/Option Windows/OpExpand.vb @@ -107,4 +107,9 @@ If (bslash Or fslash) = 0 Then Return "" Return Mid(s, 1, IIf(fslash > bslash, fslash, bslash) - 1) End Function + + Private Sub OpExpand_Closing(sender As Object, e As FormClosingEventArgs) Handles MyBase.FormClosing + MainWindow.RandomFile(1) = "-" + Exit Sub + End Sub End Class \ No newline at end of file From 62b699375a5394e8cda780eac52d48a07af2296a Mon Sep 17 00:00:00 2001 From: psyk2642 <60137590+psyk2642@users.noreply.github.com> Date: Sat, 12 Mar 2022 14:45:23 +0800 Subject: [PATCH 047/257] Note usage + Miscellaneous Fix I really should've used Github Desktop from the getgo. - Added a list of used notes in the note and BGM lane to Statistics (Advanced). - Fixed OpVisual error due to duplicating the file directly. OpVisual should open fine now. - Updated/Uploaded all relevant files. --- iBMSC/ChartIO.vb | 36 +++++----- iBMSC/Component1.Designer.vb | 47 +++++++++++++ iBMSC/Component1.vb | 3 + iBMSC/Dialogs/dgStatistics.Designer.vb | 33 +++++++++- iBMSC/Dialogs/dgStatistics.resx | 6 +- iBMSC/Dialogs/dgStatistics.vb | 21 +++++- iBMSC/ImageButtons/ImageErrorG.gif | Bin 0 -> 418 bytes iBMSC/ImageButtonsSmall/x16Flip.png | Bin 0 -> 1762 bytes iBMSC/MainWindow.designer.vb | 88 ++++++++++++------------- iBMSC/MainWindow.resx | 80 +++++++++++----------- iBMSC/MainWindow.vb | 86 +++++++++++++----------- iBMSC/My Project/AssemblyInfo.vb | 8 +-- iBMSC/My Project/Resources.Designer.vb | 30 +++++++-- iBMSC/My Project/Resources.resx | 12 +++- iBMSC/My Project/Settings.Designer.vb | 2 +- iBMSC/My Project/Settings.settings | 6 ++ iBMSC/Option Windows/Form1.vb | Bin 0 -> 667 bytes iBMSC/iBMSC.vbproj | 24 ++----- 18 files changed, 302 insertions(+), 180 deletions(-) create mode 100644 iBMSC/Component1.Designer.vb create mode 100644 iBMSC/Component1.vb create mode 100644 iBMSC/ImageButtons/ImageErrorG.gif create mode 100644 iBMSC/ImageButtonsSmall/x16Flip.png create mode 100644 iBMSC/My Project/Settings.settings create mode 100644 iBMSC/Option Windows/Form1.vb diff --git a/iBMSC/ChartIO.vb b/iBMSC/ChartIO.vb index 943579527..4a23fc6e6 100644 --- a/iBMSC/ChartIO.vb +++ b/iBMSC/ChartIO.vb @@ -17,7 +17,7 @@ Partial Public Class MainWindow ReDim hWAV(1295) ReDim hBPM(1295) 'x10000 ReDim hSTOP(1295) - ReDim hSCROLL(1295) + ReDim hBMSCROLL(1295) Me.InitializeNewBMS() Me.InitializeOpenBMS() @@ -72,7 +72,7 @@ Partial Public Class MainWindow GoTo AddToxStrLine2 ElseIf SWIC(sLineTrim, "#SCROLL") Then - hSCROLL(C36to10(Mid(sLineTrim, Len("#SCROLL") + 1, 2))) = Val(Mid(sLineTrim, Len("#SCROLL") + 4)) * 10000 + hBMSCROLL(C36to10(Mid(sLineTrim, Len("#SCROLL") + 1, 2))) = Val(Mid(sLineTrim, Len("#SCROLL") + 4)) * 10000 GoTo AddToxStrLine2 ElseIf SWIC(sLineTrim, "#TITLE") Then @@ -226,7 +226,7 @@ AddExpansion: xExpansion &= sLine & vbCrLf If Channel = "03" Then .Value = Convert.ToInt32(Mid(sLineTrim, xI1, 2), 16) * 10000 If Channel = "08" Then .Value = hBPM(C36to10(Mid(sLineTrim, xI1, 2))) If Channel = "09" Then .Value = hSTOP(C36to10(Mid(sLineTrim, xI1, 2))) - If Channel = "SC" Then .Value = hSCROLL(C36to10(Mid(sLineTrim, xI1, 2))) + If Channel = "SC" Then .Value = hBMSCROLL(C36to10(Mid(sLineTrim, xI1, 2))) End With Next @@ -282,7 +282,7 @@ AddExpansion: xExpansion &= sLine & vbCrLf ' We regenerate these when traversing the bms event list. ReDim hBPM(0) ReDim hSTOP(0) - ReDim hSCROLL(0) + ReDim hBMSCROLL(0) Dim xNTInput As Boolean = NTInput Dim xKBackUp() As Note = Notes @@ -347,8 +347,8 @@ AddExpansion: xExpansion &= sLine & vbCrLf If UBound(hSTOP) > IIf(STOPx1296, 1295, 255) Then MsgBox(Strings.Messages.SaveWarning & vbCrLf & Strings.Messages.STOPOverflowError & UBound(hSTOP) & " > " & IIf(STOPx1296, 1295, 255) & vbCrLf & Strings.Messages.SavedFileWillContainErrors, MsgBoxStyle.Exclamation) - If UBound(hSCROLL) > 1295 Then MsgBox(Strings.Messages.SaveWarning & vbCrLf & - Strings.Messages.SCROLLOverflowError & UBound(hSCROLL) & " > " & 1295 & vbCrLf & + If UBound(hBMSCROLL) > 1295 Then MsgBox(Strings.Messages.SaveWarning & vbCrLf & + Strings.Messages.SCROLLOverflowError & UBound(hBMSCROLL) & " > " & 1295 & vbCrLf & Strings.Messages.SavedFileWillContainErrors, MsgBoxStyle.Exclamation) ' Add expansion text @@ -384,7 +384,7 @@ AddExpansion: xExpansion &= sLine & vbCrLf ' We regenerate these when traversing the bms event list. ReDim hBPM(0) ReDim hSTOP(0) - ReDim hSCROLL(0) + ReDim hBMSCROLL(0) Dim xNTInput As Boolean = NTInput Dim xKBackUp() As Note = Notes @@ -449,8 +449,8 @@ AddExpansion: xExpansion &= sLine & vbCrLf If UBound(hSTOP) > IIf(STOPx1296, 1295, 255) Then MsgBox(Strings.Messages.SaveWarning & vbCrLf & Strings.Messages.STOPOverflowError & UBound(hSTOP) & " > " & IIf(STOPx1296, 1295, 255) & vbCrLf & Strings.Messages.SavedFileWillContainErrors, MsgBoxStyle.Exclamation) - If UBound(hSCROLL) > 1295 Then MsgBox(Strings.Messages.SaveWarning & vbCrLf & - Strings.Messages.SCROLLOverflowError & UBound(hSCROLL) & " > " & 1295 & vbCrLf & + If UBound(hBMSCROLL) > 1295 Then MsgBox(Strings.Messages.SaveWarning & vbCrLf & + Strings.Messages.SCROLLOverflowError & UBound(hBMSCROLL) & " > " & 1295 & vbCrLf & Strings.Messages.SavedFileWillContainErrors, MsgBoxStyle.Exclamation) ' Add expansion text @@ -513,9 +513,9 @@ AddExpansion: xExpansion &= sLine & vbCrLf IIf(STOPx1296, C10to36(i), Mid("0" & Hex(i), Len(Hex(i)))) & " " & WriteDecimalWithDot(hSTOP(i) / 10000) & vbCrLf Next - For i = 1 To UBound(hSCROLL) + For i = 1 To UBound(hBMSCROLL) xStrHeader &= "#SCROLL" & - C10to36(i) & " " & WriteDecimalWithDot(hSCROLL(i) / 10000) & vbCrLf + C10to36(i) & " " & WriteDecimalWithDot(hBMSCROLL(i) / 10000) & vbCrLf Next Return xStrHeader @@ -591,13 +591,13 @@ AddExpansion: xExpansion &= sLine & vbCrLf NoteStrings(UBound(NoteStrings)) = IIf(STOPx1296, C10to36(StopIndex), Mid("0" & Hex(StopIndex), Len(Hex(StopIndex)))) ElseIf CurrentBMSChannel = "SC" Then 'If SCROLL Dim ScrollIndex - For ScrollIndex = 1 To UBound(hSCROLL) ' find SCROLL value in existing array - If currentNote.Value = hSCROLL(ScrollIndex) Then Exit For + For ScrollIndex = 1 To UBound(hBMSCROLL) ' find SCROLL value in existing array + If currentNote.Value = hBMSCROLL(ScrollIndex) Then Exit For Next - If ScrollIndex > UBound(hSCROLL) Then ' Didn't find it, add it - ReDim Preserve hSCROLL(UBound(hSCROLL) + 1) - hSCROLL(UBound(hSCROLL)) = currentNote.Value + If ScrollIndex > UBound(hBMSCROLL) Then ' Didn't find it, add it + ReDim Preserve hBMSCROLL(UBound(hBMSCROLL) + 1) + hBMSCROLL(UBound(hBMSCROLL)) = currentNote.Value End If NoteStrings(UBound(NoteStrings)) = C10to36(ScrollIndex) Else @@ -634,7 +634,7 @@ AddExpansion: xExpansion &= sLine & vbCrLf If BMSChannelList(CurrentBMSChannel) = "09" Then _ xprevNotes(UBound(xprevNotes)).Value = IIf(STOPx1296, hSTOP(C36to10(NoteStrings(i))), hSTOP(Convert.ToInt32(NoteStrings(i), 16))) If BMSChannelList(CurrentBMSChannel) = "SC" Then _ - xprevNotes(UBound(xprevNotes)).Value = hSCROLL(C36to10(NoteStrings(i))) + xprevNotes(UBound(xprevNotes)).Value = hBMSCROLL(C36to10(NoteStrings(i))) Continue For End If If xStrKey(CInt(relativeMeasurePos(i) / xGCD)) <> "00" Then @@ -742,7 +742,7 @@ AddExpansion: xExpansion &= sLine & vbCrLf ReDim hWAV(1295) ReDim hBPM(1295) 'x10000 ReDim hSTOP(1295) - ReDim hSCROLL(1295) + ReDim hBMSCROLL(1295) Me.InitializeNewBMS() With Notes(0) diff --git a/iBMSC/Component1.Designer.vb b/iBMSC/Component1.Designer.vb new file mode 100644 index 000000000..6de1497b6 --- /dev/null +++ b/iBMSC/Component1.Designer.vb @@ -0,0 +1,47 @@ +Partial Class Component1 + Inherits System.ComponentModel.Component + + _ + Public Sub New(ByVal container As System.ComponentModel.IContainer) + MyClass.New() + + 'Required for Windows.Forms Class Composition Designer support + If (container IsNot Nothing) Then + container.Add(Me) + End If + + End Sub + + _ + Public Sub New() + MyBase.New() + + 'This call is required by the Component Designer. + InitializeComponent() + + End Sub + + 'Component overrides dispose to clean up the component list. + _ + Protected Overrides Sub Dispose(ByVal disposing As Boolean) + Try + If disposing AndAlso components IsNot Nothing Then + components.Dispose() + End If + Finally + MyBase.Dispose(disposing) + End Try + End Sub + + 'Required by the Component Designer + Private components As System.ComponentModel.IContainer + + 'NOTE: The following procedure is required by the Component Designer + 'It can be modified using the Component Designer. + 'Do not modify it using the code editor. + _ + Private Sub InitializeComponent() + components = New System.ComponentModel.Container() + End Sub + +End Class diff --git a/iBMSC/Component1.vb b/iBMSC/Component1.vb new file mode 100644 index 000000000..ddfadd83d --- /dev/null +++ b/iBMSC/Component1.vb @@ -0,0 +1,3 @@ +Public Class Component1 + +End Class diff --git a/iBMSC/Dialogs/dgStatistics.Designer.vb b/iBMSC/Dialogs/dgStatistics.Designer.vb index 1541ed3c2..ff5614554 100644 --- a/iBMSC/Dialogs/dgStatistics.Designer.vb +++ b/iBMSC/Dialogs/dgStatistics.Designer.vb @@ -26,6 +26,8 @@ Partial Class dgStatistics Me.OK_Button = New System.Windows.Forms.Button() Me.lIcon = New System.Windows.Forms.Label() Me.TableLayoutPanel1 = New System.Windows.Forms.TableLayoutPanel() + Me.ListWAVUsage = New System.Windows.Forms.ListBox() + Me.Label1 = New System.Windows.Forms.Label() Me.SuspendLayout() ' 'OK_Button @@ -33,7 +35,7 @@ Partial Class dgStatistics Me.OK_Button.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) Me.OK_Button.DialogResult = System.Windows.Forms.DialogResult.Cancel Me.OK_Button.FlatStyle = System.Windows.Forms.FlatStyle.System - Me.OK_Button.Location = New System.Drawing.Point(483, 569) + Me.OK_Button.Location = New System.Drawing.Point(718, 569) Me.OK_Button.Name = "OK_Button" Me.OK_Button.Size = New System.Drawing.Size(78, 27) Me.OK_Button.TabIndex = 0 @@ -90,12 +92,34 @@ Partial Class dgStatistics Me.TableLayoutPanel1.Size = New System.Drawing.Size(480, 540) Me.TableLayoutPanel1.TabIndex = 12 ' + 'ListWAVUsage + ' + Me.ListWAVUsage.Anchor = CType(((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Left) _ + Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) + Me.ListWAVUsage.FormattingEnabled = True + Me.ListWAVUsage.ItemHeight = 15 + Me.ListWAVUsage.Location = New System.Drawing.Point(570, 42) + Me.ListWAVUsage.Name = "ListWAVUsage" + Me.ListWAVUsage.Size = New System.Drawing.Size(226, 514) + Me.ListWAVUsage.TabIndex = 13 + ' + 'Label1 + ' + Me.Label1.AutoSize = True + Me.Label1.Location = New System.Drawing.Point(567, 12) + Me.Label1.Name = "Label1" + Me.Label1.Size = New System.Drawing.Size(68, 15) + Me.Label1.TabIndex = 14 + Me.Label1.Text = "Note Usage" + ' 'dgStatistics ' Me.AcceptButton = Me.OK_Button Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None Me.CancelButton = Me.OK_Button - Me.ClientSize = New System.Drawing.Size(584, 611) + Me.ClientSize = New System.Drawing.Size(819, 611) + Me.Controls.Add(Me.Label1) + Me.Controls.Add(Me.ListWAVUsage) Me.Controls.Add(Me.TableLayoutPanel1) Me.Controls.Add(Me.lIcon) Me.Controls.Add(Me.OK_Button) @@ -107,11 +131,14 @@ Partial Class dgStatistics Me.Name = "dgStatistics" Me.ShowInTaskbar = False Me.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent - Me.Text = "Statistics" + Me.Text = "Statistics (Advanced)" Me.ResumeLayout(False) + Me.PerformLayout() End Sub Friend WithEvents OK_Button As System.Windows.Forms.Button Friend WithEvents lIcon As System.Windows.Forms.Label Friend WithEvents TableLayoutPanel1 As System.Windows.Forms.TableLayoutPanel + Friend WithEvents ListWAVUsage As ListBox + Friend WithEvents Label1 As Label End Class diff --git a/iBMSC/Dialogs/dgStatistics.resx b/iBMSC/Dialogs/dgStatistics.resx index a8549fa44..beb349dbf 100644 --- a/iBMSC/Dialogs/dgStatistics.resx +++ b/iBMSC/Dialogs/dgStatistics.resx @@ -112,12 +112,12 @@ 2.0 - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - + AAABAAIAICAAAAEAIACoEAAAJgAAABAQAAABACAAaAQAAM4QAAAoAAAAIAAAAEAAAAABACAAAAAAAIAQ diff --git a/iBMSC/Dialogs/dgStatistics.vb b/iBMSC/Dialogs/dgStatistics.vb index ba3b5b563..db0e97053 100644 --- a/iBMSC/Dialogs/dgStatistics.vb +++ b/iBMSC/Dialogs/dgStatistics.vb @@ -52,7 +52,7 @@ Public Class dgStatistics ' StTotalValue.Text = Strings.fStatistics.recTotalValue End Sub - Public Sub New(ByVal data(,) As Integer, ByVal LRows() As String, ByVal LCols() As String) + Public Sub New(ByVal data(,) As Integer, ByVal LRows() As String, ByVal LCols() As String, ByVal dataWAV(,) As Integer) InitializeComponent() For row As Integer = 1 To TableLayoutPanel1.RowCount - 1 @@ -85,6 +85,25 @@ Public Class dgStatistics TableLayoutPanel1.Controls.Add(xLabel, col, row) Next Next + + Dim Text As String + For i = 0 To dataWAV.GetUpperBound(0) + ' 2 rows. First column - Type, assigned or unassigned + ' Second dimension - Usage in play lanes or BGM + If dataWAV(i, 0) = 0 AndAlso dataWAV(i, 1) = 0 Then Continue For + Text = "#WAV" & C10to36(i) & ": " & dataWAV(i, 1) + If dataWAV(i, 0) = 0 AndAlso dataWAV(i, 1) <> 0 Then Text &= " | Unassigned" + ListWAVUsage.Items.Add(Text) + Next + End Sub + Private Function C10to36(ByVal xStart As Long) As String ' Copied from Utilities + If xStart < 1 Then xStart = 1 + If xStart > 1295 Then xStart = 1295 + Return C10to36S(xStart \ 36) & C10to36S(xStart Mod 36) + End Function + Private Function C10to36S(ByVal xStart As Integer) As Char ' Copied from Utilities + If xStart < 10 Then Return CChar(CStr(xStart)) Else Return Chr(xStart + 55) + End Function End Class diff --git a/iBMSC/ImageButtons/ImageErrorG.gif b/iBMSC/ImageButtons/ImageErrorG.gif new file mode 100644 index 0000000000000000000000000000000000000000..d78c9007b0162c2e975ddbabce207aa79bc64b6a GIT binary patch literal 418 zcmZ?wbhEHblwgoxXpvzskLYmAo*h`ZF}n3YM$guiY3F0-{!Lr(q+tG&)TRF_*8ZKc z>U8Orzb)JUOxpW*-M(wH5B=#m`EUBgx2wl+%IzW(^>v$-OJH2~ySuGIhl literal 0 HcmV?d00001 diff --git a/iBMSC/ImageButtonsSmall/x16Flip.png b/iBMSC/ImageButtonsSmall/x16Flip.png new file mode 100644 index 0000000000000000000000000000000000000000..07e1e9df9c8afc40a3d231503006e30b1e807c89 GIT binary patch literal 1762 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 - 0f4HUYAlDK9yFIQAAAAASUVORK5CYII= + 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 + 2v8Ay50lAGJkbIAAAAAASUVORK5CYII= @@ -190,12 +190,6 @@ 931, 2 - - 1022, 2 - - - 931, 2 - 1120, 2 diff --git a/iBMSC/MainWindow.vb b/iBMSC/MainWindow.vb index e5d65db12..51bab636a 100644 --- a/iBMSC/MainWindow.vb +++ b/iBMSC/MainWindow.vb @@ -161,7 +161,7 @@ Public Class MainWindow Dim hWAV(1295) As String Dim hBPM(1295) As Long 'x10000 Dim hSTOP(1295) As Long - Dim hSCROLL(1295) As Long + Dim hBMSCROLL(1295) As Long '----Grid Options Dim gSnap As Boolean = True @@ -1355,7 +1355,7 @@ EndSearch: ReDim hWAV(1295) ReDim hBPM(1295) 'x10000 ReDim hSTOP(1295) - ReDim hSCROLL(1295) + ReDim hBMSCROLL(1295) THGenre.Text = "" THTitle.Text = "" THArtist.Text = "" @@ -1400,7 +1400,7 @@ EndSearch: ReDim hWAV(1295) ReDim hBPM(1295) 'x10000 ReDim hSTOP(1295) - ReDim hSCROLL(1295) + ReDim hBMSCROLL(1295) THGenre.Text = "" THTitle.Text = "" THArtist.Text = "" @@ -1919,7 +1919,6 @@ EndSearch: Case Keys.Enter LWAV_DoubleClick(sender, e) Case Keys.Delete - ' Delete multiple Dim xLWAVIds(LWAV.SelectedIndices.Count - 1) As Integer For i = 0 To LWAV.SelectedIndices.Count - 1 xLWAVIds(i) = LWAV.SelectedIndices(i) @@ -2177,41 +2176,55 @@ StartCount: If Not NTInput Then UpdatePairing() Dim rows = 26 - 2 ' TableLayoutPanel1.RowCount doesn't work Dim cols = 8 - 2 ' Size of tables including names sub 2 - Dim Labels As New Strings.fStatistics() - Dim rowLabels = {Labels.lSCROLL, Labels.lBPM, Labels.lSTOP, Labels.lA1, Labels.lA2, Labels.lA3, Labels.lA4, Labels.lA5, Labels.lA6, Labels.lA7, Labels.lA8, Labels.lD1, Labels.lD2, Labels.lD3, Labels.lD4, Labels.lD5, Labels.lD6, Labels.lD7, Labels.lD8, Labels.lA, Labels.lD, Labels.lBGA, Labels.lBGM, Labels.lNotes, Labels.lTotal} - Dim colLabels = {Labels.lShort, Labels.lLong, Labels.lLnObj, Labels.lHidden, Labels.lLandmines, Labels.lErrors, Labels.lTotal} + Dim rowLabels = {Strings.fStatistics.lSCROLL, Strings.fStatistics.lBPM, Strings.fStatistics.lSTOP, + Strings.fStatistics.lA1, Strings.fStatistics.lA2, Strings.fStatistics.lA3, Strings.fStatistics.lA4, Strings.fStatistics.lA5, Strings.fStatistics.lA6, Strings.fStatistics.lA7, Strings.fStatistics.lA8, + Strings.fStatistics.lD1, Strings.fStatistics.lD2, Strings.fStatistics.lD3, Strings.fStatistics.lD4, Strings.fStatistics.lD5, Strings.fStatistics.lD6, Strings.fStatistics.lD7, Strings.fStatistics.lD8, + Strings.fStatistics.lA, Strings.fStatistics.lD, Strings.fStatistics.lBGA, Strings.fStatistics.lBGM, Strings.fStatistics.lNotes, + Strings.fStatistics.lTotal} + Dim colLabels = {Strings.fStatistics.lShort, Strings.fStatistics.lLong, Strings.fStatistics.lLnObj, Strings.fStatistics.lHidden, Strings.fStatistics.lLandmines, Strings.fStatistics.lErrors, + Strings.fStatistics.lTotal} Dim data(rows, cols) As Integer + Dim dataWAV(1295, 1) As Integer + + ' Check if #WAV has been assigned + For i = 0 To dataWAV.GetUpperBound(0) + If Not IsNothing(hWAV(i)) Then + dataWAV(i, 0) = 1 + Else + dataWAV(i, 0) = 0 + End If + Next For i As Integer = 1 To UBound(Notes) With Notes(i) Dim row As Integer Select Case .ColumnIndex - Case niSCROLL : row = 1 - 1 - Case niBPM : row = 2 - 1 - Case niSTOP : row = 3 - 1 - Case niA1 : row = 4 - 1 - Case niA2 : row = 5 - 1 - Case niA3 : row = 6 - 1 - Case niA4 : row = 7 - 1 - Case niA5 : row = 8 - 1 - Case niA6 : row = 9 - 1 - Case niA7 : row = 10 - 1 - Case niA8 : row = 11 - 1 - Case niD1 : row = 12 - 1 - Case niD2 : row = 13 - 1 - Case niD3 : row = 14 - 1 - Case niD4 : row = 15 - 1 - Case niD5 : row = 16 - 1 - Case niD6 : row = 17 - 1 - Case niD7 : row = 18 - 1 - Case niD8 : row = 19 - 1 - Case Is >= niB : row = 23 - 1 - Case Else : row = 22 - 1 + Case niSCROLL : row = 0 + Case niBPM : row = 1 + Case niSTOP : row = 2 + Case niA1 : row = 3 + Case niA2 : row = 4 + Case niA3 : row = 5 + Case niA4 : row = 6 + Case niA5 : row = 7 + Case niA6 : row = 8 + Case niA7 : row = 9 + Case niA8 : row = 10 + Case niD1 : row = 11 + Case niD2 : row = 12 + Case niD3 : row = 13 + Case niD4 : row = 14 + Case niD5 : row = 15 + Case niD6 : row = 16 + Case niD7 : row = 17 + Case niD8 : row = 18 + Case Is >= niB : row = 22 + Case Else : row = 21 End Select StartCount: If Not NTInput Then - If Not (.LongNote Or .Hidden Or .Landmine Or .Hidden Or .Value \ 10000 = LnObj) Then data(row, 0) += 1 + If Not (.LongNote Or .Hidden Or .Landmine Or .Hidden Or .Value \ 10000 = LnObj) Then data(row, 0) += 1 : dataWAV(.Value / 10000, 1) += 1 If .LongNote Then data(row, 1) += 1 If .Value \ 10000 = LnObj Then data(row, 2) += 1 If .Hidden Then data(row, 3) += 1 @@ -2219,7 +2232,7 @@ StartCount: If Not NTInput Then If .HasError Then data(row, 5) += 1 Else - If Not (.LongNote Or .Hidden Or .Landmine Or .Hidden Or .Value \ 10000 = LnObj) Then data(row, 0) += 1 + If Not (.LongNote Or .Hidden Or .Landmine Or .Hidden Or .Value \ 10000 = LnObj) Then data(row, 0) += 1 : dataWAV(.Value / 10000, 1) += 1 If .Length <> 0 Then data(row, 1) += 1 If .Value \ 10000 = LnObj Then data(row, 2) += 1 If .Hidden Then data(row, 3) += 1 @@ -2250,7 +2263,7 @@ StartCount: If Not NTInput Then Next data(rows, cols) = UBound(Notes) ' Change to the whole table cause more convenient - Dim dStat As New dgStatistics(data, rowLabels, colLabels) + Dim dStat As New dgStatistics(data, rowLabels, colLabels, dataWAV) dStat.ShowDialog() End Sub @@ -2749,7 +2762,6 @@ DoNothing: Dim xniArrayLen = xniArray1.Length - Dim xCol As Integer Dim vPos As Integer = -1 Dim xIArray(0) As Integer Dim xValueArray(0) As Integer @@ -3021,10 +3033,10 @@ RestartSorting: xSorted = False End Sub Private Sub TBVCOptions_Click(sender As Object, e As EventArgs) Handles mnVCOptions.Click - Dim xDiag As New OpVisualCO(vo, column, LWAV.Font) - xDiag.ShowDialog(Me) - UpdateColumnsX() - RefreshPanelAll() + ' Dim xDiag As New OpVisualCO(vo, column, LWAV.Font) + ' xDiag.ShowDialog(Me) + ' UpdateColumnsX() + ' RefreshPanelAll() End Sub @@ -4984,7 +4996,7 @@ case2: Dim xI0 As Integer Private Sub Expand_Load(sender As Object, e As EventArgs) Handles ECSelectSection.Click ReDim RandomFile(2) Dim xDOp As New OpExpand() - Dim ReadText As String + Dim ReadText As String = Nothing Try xDOp.ShowDialog(Me) Catch diff --git a/iBMSC/My Project/AssemblyInfo.vb b/iBMSC/My Project/AssemblyInfo.vb index 0dfe18c06..1021fb887 100644 --- a/iBMSC/My Project/AssemblyInfo.vb +++ b/iBMSC/My Project/AssemblyInfo.vb @@ -10,10 +10,10 @@ Imports System.Runtime.InteropServices ' Review the values of the assembly attributes - + - + @@ -33,7 +33,7 @@ Imports System.Runtime.InteropServices ' by using the '*' as shown below: ' - - + + \ No newline at end of file diff --git a/iBMSC/My Project/Resources.Designer.vb b/iBMSC/My Project/Resources.Designer.vb index 7ae1d3c5a..fad68dbc2 100644 --- a/iBMSC/My Project/Resources.Designer.vb +++ b/iBMSC/My Project/Resources.Designer.vb @@ -22,7 +22,7 @@ Namespace My.Resources ''' ''' A strongly-typed resource class, for looking up localized strings, etc. ''' - _ @@ -210,6 +210,16 @@ Namespace My.Resources End Get End Property + ''' + ''' Looks up a localized resource of type System.Drawing.Bitmap. + ''' + Friend ReadOnly Property ImageErrorG() As System.Drawing.Bitmap + Get + Dim obj As Object = ResourceManager.GetObject("ImageErrorG", resourceCulture) + Return CType(obj,System.Drawing.Bitmap) + End Get + End Property + ''' ''' Looks up a localized resource of type System.Drawing.Bitmap. ''' @@ -252,12 +262,12 @@ Namespace My.Resources ''' ''' Looks up a localized string similar to <?xml version="1.0" encoding="utf-16"?> - '''<iBMSC Major="2" Minor="4" Build="0"> + '''<iBMSC Major="3" Minor="1" Build="0"> ''' <Columns> ''' <Column Index="0" Width="50" Title="Measure" NoteColor="0" TextColor="-16711681" LongNoteColor="0" LongTextColor="-16711681" BG="0" /> - ''' <Column Index="1" Width="60" Title="BPM" NoteColor="0" TextColor="-65536" LongNoteColor="0" LongTextColor="-65536" BG="0" /> - ''' <Column Index="2" Width="50" Title="STOP" NoteColor="0" TextColor="-65536" LongNoteColor="0" LongTextColor="-65536" BG="0" /> - ''' [rest of string was truncated]";. + ''' <Column Index="1" Width="60" Title="SCROLL" NoteColor="0" TextColor="-65536" LongNoteColor="0" LongTextColor="-65536" BG="0" /> + ''' <Column Index="2" Width="60" Title="BPM" NoteColor="0" TextColor="-65536" LongNoteColor="0" LongTextColor="-65536" BG="0" /> + ''' [rest of string was truncated]";. ''' Friend ReadOnly Property O2Mania_Theme() As String Get @@ -475,6 +485,16 @@ Namespace My.Resources End Get End Property + ''' + ''' Looks up a localized resource of type System.Drawing.Bitmap. + ''' + Friend ReadOnly Property x16Flip() As System.Drawing.Bitmap + Get + Dim obj As Object = ResourceManager.GetObject("x16Flip", resourceCulture) + Return CType(obj,System.Drawing.Bitmap) + End Get + End Property + ''' ''' Looks up a localized resource of type System.Drawing.Bitmap. ''' diff --git a/iBMSC/My Project/Resources.resx b/iBMSC/My Project/Resources.resx index 8f661ddb2..57641e43f 100644 --- a/iBMSC/My Project/Resources.resx +++ b/iBMSC/My Project/Resources.resx @@ -112,12 +112,12 @@ 2.0 - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - + ..\About.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -163,6 +163,9 @@ ..\ImageButtons\ImageError.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\imagebuttons\imageerrorg.gif;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + ..\MiscButtons\lgheight.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -241,6 +244,9 @@ ..\ImageButtonsSmall\x16Find.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\..\..\backup\3.4.0.12\iBMSC\ImageButtonsSmall\x16Flip.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + ..\ImageButtonsSmall\x16GeneralOptions.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a diff --git a/iBMSC/My Project/Settings.Designer.vb b/iBMSC/My Project/Settings.Designer.vb index 09b82ee6c..83193ac6d 100644 --- a/iBMSC/My Project/Settings.Designer.vb +++ b/iBMSC/My Project/Settings.Designer.vb @@ -15,7 +15,7 @@ Option Explicit On Namespace My _ Partial Friend NotInheritable Class MySettings Inherits Global.System.Configuration.ApplicationSettingsBase diff --git a/iBMSC/My Project/Settings.settings b/iBMSC/My Project/Settings.settings new file mode 100644 index 000000000..392df0a85 --- /dev/null +++ b/iBMSC/My Project/Settings.settings @@ -0,0 +1,6 @@ + + + + + + diff --git a/iBMSC/Option Windows/Form1.vb b/iBMSC/Option Windows/Form1.vb new file mode 100644 index 0000000000000000000000000000000000000000..acb7e250eb426b36df6d5ce3a7dcb94c67a35cec GIT binary patch literal 667 zcmWIWW@Zs#0D(7F2LoDjEW7l8Y!K!E;@r&K)RM}A)Wm{!u#8`oW$`|sD)3vUpfVE}rDxv?#z6X=QmK+Fxq$@zIDAm0PM z5Zix|>yQDD>-?|U$L_uUVtVGUw{Nh{ma`E-1@-xbc@dw5-r1VR7;XB_$SITTIpwNC z`r6&qOJ}f}RlPqwsc|h!V~#MV2GjW|-?e}E9)4T&c6o7l`X8$%?-`-H7H+M5YjjUZ z(p|#-#}?!0DU+`@xRvx?ImEtu>nZ2cdnS~AQn{pSZgSB1U%lmC#sF_dCJ|=bkqUG+ z7;I?-QLrdR=)xXt5IqbGTN*=vOstWJYy`HzLKvY4ObbXs7vRmx29jh3!c9Q>GEka< F0RU=# Form + + OpVisual.vb + + + Form + OpExpand.vb @@ -245,18 +251,6 @@ Form - - OpVisual.vb - - - Form - - - OpVisual.vb - - - Form - @@ -310,12 +304,6 @@ OpPlayer.vb - - OpVisual.vb - - - OpVisualCO.vb - From c815eb2d284fb5c0881f0dcca3fc370779836a09 Mon Sep 17 00:00:00 2001 From: psyk2642 <60137590+psyk2642@users.noreply.github.com> Date: Sun, 13 Mar 2022 00:19:02 +0800 Subject: [PATCH 048/257] Note usage (part 2) + Miscellaneous - Further refined the criteria for counting notes in note usage. - Updated CSCore and NVorbis --- iBMSC/MainWindow.designer.vb | 64 ++++++++++++++--------------- iBMSC/MainWindow.resx | 74 +++++++++++++++++----------------- iBMSC/MainWindow.vb | 27 ++++++++----- iBMSC/Option Windows/Form1.vb | Bin 667 -> 0 bytes iBMSC/iBMSC.vbproj | 7 ++-- 5 files changed, 89 insertions(+), 83 deletions(-) delete mode 100644 iBMSC/Option Windows/Form1.vb diff --git a/iBMSC/MainWindow.designer.vb b/iBMSC/MainWindow.designer.vb index 17203d5d2..930642e54 100644 --- a/iBMSC/MainWindow.designer.vb +++ b/iBMSC/MainWindow.designer.vb @@ -25,16 +25,16 @@ Partial Class MainWindow Me.TBLangDef = New System.Windows.Forms.ToolStripMenuItem() Me.TBLangRefresh = New System.Windows.Forms.ToolStripMenuItem() Me.ToolStripSeparator9 = New System.Windows.Forms.ToolStripSeparator() - Me.mnLanguage = New System.Windows.Forms.ToolStripMenuItem() Me.TBLanguage = New System.Windows.Forms.ToolStripDropDownButton() + Me.mnLanguage = New System.Windows.Forms.ToolStripMenuItem() Me.cmnTheme = New System.Windows.Forms.ContextMenuStrip(Me.components) Me.TBThemeDef = New System.Windows.Forms.ToolStripMenuItem() Me.TBThemeSave = New System.Windows.Forms.ToolStripMenuItem() Me.TBThemeRefresh = New System.Windows.Forms.ToolStripMenuItem() Me.TBThemeLoadComptability = New System.Windows.Forms.ToolStripMenuItem() Me.ToolStripSeparator6 = New System.Windows.Forms.ToolStripSeparator() - Me.TBTheme = New System.Windows.Forms.ToolStripDropDownButton() Me.mnTheme = New System.Windows.Forms.ToolStripMenuItem() + Me.TBTheme = New System.Windows.Forms.ToolStripDropDownButton() Me.Timer1 = New System.Windows.Forms.Timer(Me.components) Me.Menu1 = New System.Windows.Forms.ContextMenuStrip(Me.components) Me.MInsert = New System.Windows.Forms.ToolStripMenuItem() @@ -124,11 +124,11 @@ Partial Class MainWindow Me.POBRandom = New System.Windows.Forms.ToolStripMenuItem() Me.POBSRandom = New System.Windows.Forms.ToolStripMenuItem() Me.POBSort = New System.Windows.Forms.ToolStripMenuItem() - Me.POConvert = New System.Windows.Forms.ToolStripDropDownButton() Me.mnPreview = New System.Windows.Forms.ToolStripMenuItem() Me.mnPlayB = New System.Windows.Forms.ToolStripMenuItem() Me.mnPlay = New System.Windows.Forms.ToolStripMenuItem() Me.mnStop = New System.Windows.Forms.ToolStripMenuItem() + Me.POConvert = New System.Windows.Forms.ToolStripDropDownButton() Me.TBMain = New System.Windows.Forms.ToolStrip() Me.TBNew = New System.Windows.Forms.ToolStripButton() Me.TBOpen = New System.Windows.Forms.ToolStripSplitButton() @@ -448,7 +448,7 @@ Partial Class MainWindow ' Me.cmnLanguage.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.TBLangDef, Me.TBLangRefresh, Me.ToolStripSeparator9}) Me.cmnLanguage.Name = "cmnLanguage" - Me.cmnLanguage.OwnerItem = Me.TBLanguage + Me.cmnLanguage.OwnerItem = Me.mnLanguage Me.cmnLanguage.Size = New System.Drawing.Size(121, 54) ' 'TBLangDef @@ -469,14 +469,6 @@ Partial Class MainWindow Me.ToolStripSeparator9.Name = "ToolStripSeparator9" Me.ToolStripSeparator9.Size = New System.Drawing.Size(117, 6) ' - 'mnLanguage - ' - Me.mnLanguage.DropDown = Me.cmnLanguage - Me.mnLanguage.Image = Global.iBMSC.My.Resources.Resources.x16Language - Me.mnLanguage.Name = "mnLanguage" - Me.mnLanguage.Size = New System.Drawing.Size(253, 22) - Me.mnLanguage.Text = "&Language" - ' 'TBLanguage ' Me.TBLanguage.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image @@ -487,11 +479,19 @@ Partial Class MainWindow Me.TBLanguage.Size = New System.Drawing.Size(29, 22) Me.TBLanguage.Text = "Language" ' + 'mnLanguage + ' + Me.mnLanguage.DropDown = Me.cmnLanguage + Me.mnLanguage.Image = Global.iBMSC.My.Resources.Resources.x16Language + Me.mnLanguage.Name = "mnLanguage" + Me.mnLanguage.Size = New System.Drawing.Size(253, 22) + Me.mnLanguage.Text = "&Language" + ' 'cmnTheme ' Me.cmnTheme.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.TBThemeDef, Me.TBThemeSave, Me.TBThemeRefresh, Me.TBThemeLoadComptability, Me.ToolStripSeparator6}) Me.cmnTheme.Name = "cmnLanguage" - Me.cmnTheme.OwnerItem = Me.mnTheme + Me.cmnTheme.OwnerItem = Me.TBTheme Me.cmnTheme.Size = New System.Drawing.Size(246, 98) ' 'TBThemeDef @@ -525,6 +525,14 @@ Partial Class MainWindow Me.ToolStripSeparator6.Name = "ToolStripSeparator6" Me.ToolStripSeparator6.Size = New System.Drawing.Size(242, 6) ' + 'mnTheme + ' + Me.mnTheme.DropDown = Me.cmnTheme + Me.mnTheme.Image = Global.iBMSC.My.Resources.Resources.x16Theme + Me.mnTheme.Name = "mnTheme" + Me.mnTheme.Size = New System.Drawing.Size(253, 22) + Me.mnTheme.Text = "&Theme" + ' 'TBTheme ' Me.TBTheme.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image @@ -535,14 +543,6 @@ Partial Class MainWindow Me.TBTheme.Size = New System.Drawing.Size(29, 22) Me.TBTheme.Text = "Theme" ' - 'mnTheme - ' - Me.mnTheme.DropDown = Me.cmnTheme - Me.mnTheme.Image = Global.iBMSC.My.Resources.Resources.x16Theme - Me.mnTheme.Name = "mnTheme" - Me.mnTheme.Size = New System.Drawing.Size(253, 22) - Me.mnTheme.Text = "&Theme" - ' 'Timer1 ' Me.Timer1.Interval = 15 @@ -1133,7 +1133,7 @@ Partial Class MainWindow ' Me.cmnConversion.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.POBLong, Me.POBShort, Me.POBLongShort, Me.ToolStripSeparator10, Me.POBHidden, Me.POBVisible, Me.POBHiddenVisible, Me.ToolStripSeparator11, Me.POBModify, Me.POBMirror, Me.POBFlip, Me.POBRandom, Me.POBSRandom, Me.POBSort}) Me.cmnConversion.Name = "cmnLanguage" - Me.cmnConversion.OwnerItem = Me.mnConversion + Me.cmnConversion.OwnerItem = Me.POConvert Me.cmnConversion.Size = New System.Drawing.Size(222, 280) ' 'POBLong @@ -1232,16 +1232,6 @@ Partial Class MainWindow Me.POBSort.Size = New System.Drawing.Size(221, 22) Me.POBSort.Text = "S&ort" ' - 'POConvert - ' - Me.POConvert.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image - Me.POConvert.DropDown = Me.cmnConversion - Me.POConvert.Image = Global.iBMSC.My.Resources.Resources.ConvertNotes - Me.POConvert.ImageTransparentColor = System.Drawing.Color.Magenta - Me.POConvert.Name = "POConvert" - Me.POConvert.Size = New System.Drawing.Size(29, 22) - Me.POConvert.Text = "Convert Notes" - ' 'mnPreview ' Me.mnPreview.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.mnPlayB, Me.mnPlay, Me.mnStop}) @@ -1273,6 +1263,16 @@ Partial Class MainWindow Me.mnStop.Size = New System.Drawing.Size(201, 22) Me.mnStop.Text = "&Stop" ' + 'POConvert + ' + Me.POConvert.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image + Me.POConvert.DropDown = Me.cmnConversion + Me.POConvert.Image = Global.iBMSC.My.Resources.Resources.ConvertNotes + Me.POConvert.ImageTransparentColor = System.Drawing.Color.Magenta + Me.POConvert.Name = "POConvert" + Me.POConvert.Size = New System.Drawing.Size(29, 22) + Me.POConvert.Text = "Convert Notes" + ' 'TBMain ' Me.TBMain.AccessibleRole = System.Windows.Forms.AccessibleRole.ToolBar diff --git a/iBMSC/MainWindow.resx b/iBMSC/MainWindow.resx index c61c40414..c7df65966 100644 --- a/iBMSC/MainWindow.resx +++ b/iBMSC/MainWindow.resx @@ -145,43 +145,43 @@ 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 - 2v8Ay50lAGJkbIAAAAAASUVORK5CYII= + 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 + tP8BnwEk/NDTC6QAAAAASUVORK5CYII= diff --git a/iBMSC/MainWindow.vb b/iBMSC/MainWindow.vb index 51bab636a..979487e8c 100644 --- a/iBMSC/MainWindow.vb +++ b/iBMSC/MainWindow.vb @@ -1887,10 +1887,6 @@ EndSearch: Private Sub LWAV_DoubleClick(ByVal sender As Object, ByVal e As System.EventArgs) Handles LWAV.DoubleClick Dim xDWAV As New OpenFileDialog - Dim xLWAVIds(LWAV.SelectedIndices.Count - 1) As Integer - For i = 0 To LWAV.SelectedIndices.Count - 1 - xLWAVIds(i) = LWAV.SelectedIndices(i) - Next xDWAV.DefaultExt = "wav" xDWAV.Filter = Strings.FileType._wave & "|*.wav;*.ogg;*.mp3|" & Strings.FileType.WAV & "|*.wav|" & @@ -1904,11 +1900,7 @@ EndSearch: InitPath = ExcludeFileName(xDWAV.FileName) ' Replace multiple - For i = 0 To xLWAVIds.Count - 1 - hWAV(xLWAVIds(i) + 1) = GetFileName(xDWAV.FileNames((i) Mod xDWAV.FileNames.Length)) - LWAV.Items.Item(xLWAVIds(i)) = C10to36(xLWAVIds(i)) & ": " & GetFileName(xDWAV.FileNames((i) Mod xDWAV.FileNames.Length)) - Next - + AddToPOWAV(xDWAV.FileNames) If IsSaved Then SetIsSaved(False) End Sub @@ -2186,6 +2178,9 @@ StartCount: If Not NTInput Then Dim data(rows, cols) As Integer Dim dataWAV(1295, 1) As Integer + Dim noteLanes = {niA1, niA2, niA3, niA4, niA5, niA6, niA7, niA8, + niD1, niD2, niD3, niD4, niD5, niD6, niD7, niD8} + ' Check if #WAV has been assigned For i = 0 To dataWAV.GetUpperBound(0) If Not IsNothing(hWAV(i)) Then @@ -2224,7 +2219,12 @@ StartCount: If Not NTInput Then StartCount: If Not NTInput Then - If Not (.LongNote Or .Hidden Or .Landmine Or .Hidden Or .Value \ 10000 = LnObj) Then data(row, 0) += 1 : dataWAV(.Value / 10000, 1) += 1 + If Not (.LongNote Or .Hidden Or .Landmine Or .Hidden Or .Value \ 10000 = LnObj) Then + data(row, 0) += 1 + If noteLanes.Contains(.ColumnIndex) Or .ColumnIndex >= niB Then + dataWAV(.Value / 10000, 1) += 1 + End If + End If If .LongNote Then data(row, 1) += 1 If .Value \ 10000 = LnObj Then data(row, 2) += 1 If .Hidden Then data(row, 3) += 1 @@ -2232,7 +2232,12 @@ StartCount: If Not NTInput Then If .HasError Then data(row, 5) += 1 Else - If Not (.LongNote Or .Hidden Or .Landmine Or .Hidden Or .Value \ 10000 = LnObj) Then data(row, 0) += 1 : dataWAV(.Value / 10000, 1) += 1 + If Not (.LongNote Or .Hidden Or .Landmine Or .Hidden Or .Value \ 10000 = LnObj) Then + data(row, 0) += 1 + If noteLanes.Contains(.ColumnIndex) Or .ColumnIndex >= niB Then + dataWAV(.Value / 10000, 1) += 1 + End If + End If If .Length <> 0 Then data(row, 1) += 1 If .Value \ 10000 = LnObj Then data(row, 2) += 1 If .Hidden Then data(row, 3) += 1 diff --git a/iBMSC/Option Windows/Form1.vb b/iBMSC/Option Windows/Form1.vb deleted file mode 100644 index acb7e250eb426b36df6d5ce3a7dcb94c67a35cec..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 667 zcmWIWW@Zs#0D(7F2LoDjEW7l8Y!K!E;@r&K)RM}A)Wm{!u#8`oW$`|sD)3vUpfVE}rDxv?#z6X=QmK+Fxq$@zIDAm0PM z5Zix|>yQDD>-?|U$L_uUVtVGUw{Nh{ma`E-1@-xbc@dw5-r1VR7;XB_$SITTIpwNC z`r6&qOJ}f}RlPqwsc|h!V~#MV2GjW|-?e}E9)4T&c6o7l`X8$%?-`-H7H+M5YjjUZ z(p|#-#}?!0DU+`@xRvx?ImEtu>nZ2cdnS~AQn{pSZgSB1U%lmC#sF_dCJ|=bkqUG+ z7;I?-QLrdR=)xXt5IqbGTN*=vOstWJYy`HzLKvY4ObbXs7vRmx29jh3!c9Q>GEka< F0RU=# - ..\packages\CSCore.1.2.1.1\lib\net35-client\CSCore.dll + False + ..\packages\cscore.1.2.1.2\lib\net35-client\CSCore.dll - ..\packages\NVorbis.0.8.5.0\lib\NVorbis.dll + False + ..\packages\nvorbis.0.10.4\lib\net45\NVorbis.dll @@ -334,7 +336,6 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 17, 17 + + \ No newline at end of file diff --git a/iBMSC/Option Windows/OpVisualOverride.vb b/iBMSC/Option Windows/OpVisualOverride.vb new file mode 100644 index 000000000..d94abd683 --- /dev/null +++ b/iBMSC/Option Windows/OpVisualOverride.vb @@ -0,0 +1,182 @@ +Public Class OpVisualOverride + Dim COverrides() As MainWindow.ColorOverride + Dim F As String + Public Sub New(ByVal FileName As String) + InitializeComponent() + LOverrides.Items.Clear() + + F = "Colors\" + GetFileName(FileName) + ".xml" + If Not My.Computer.FileSystem.FileExists(F) Then Exit Sub + + Dim Doc As New XmlDocument + Dim FileStream As New IO.FileStream(F, FileMode.Open, FileAccess.Read) + Doc.Load(FileStream) + + Dim Root As XmlElement = Doc.Item("ColorOverride") + Dim n As Integer = Root.GetAttribute("Count") + If n = -1 Then FileStream.Close() : IO.File.Delete(F) : Exit Sub + ReDim COverrides(n) + Dim i As Integer + For Each eColor As XmlElement In Root.ChildNodes + With eColor + XMLLoadAttribute(.GetAttribute("Index"), i) + XMLLoadAttribute(.GetAttribute("Name"), COverrides(i).Name) + XMLLoadAttribute(.GetAttribute("RangeL"), COverrides(i).RangeL) + XMLLoadAttribute(.GetAttribute("RangeU"), COverrides(i).RangeU) + XMLLoadAttribute(.GetAttribute("NoteColor"), COverrides(i).NoteColor) + XMLLoadAttribute(.GetAttribute("TextColor"), COverrides(i).TextColor) + XMLLoadAttribute(.GetAttribute("LongNoteColor"), COverrides(i).LongNoteColor) + XMLLoadAttribute(.GetAttribute("LongTextColor"), COverrides(i).LongTextColor) + XMLLoadAttribute(.GetAttribute("BG"), COverrides(i).BG) + End With + Next + FileStream.Close() + + ' List expansion code per line + For Each COverride In COverrides + LOverrides.Items.Add(COverride.Name) + Next + + LOverrides.SelectedIndex = 0 + ShowInTextbox() + End Sub + + Private Sub OK_Button_Click(sender As Object, e As EventArgs) Handles OK_Button.Click + DialogResult = DialogResult.OK + Me.Close() + If IsNothing(COverrides) Then Exit Sub + + Dim w As New XmlTextWriter(F, System.Text.Encoding.Unicode) + With w + .WriteStartDocument() + .Formatting = Formatting.Indented + .Indentation = 4 + + .WriteStartElement("ColorOverride") + .WriteAttributeString("Count", UBound(COverrides)) + + For i = 0 To UBound(COverrides) + .WriteStartElement("Color") + .WriteAttributeString("Index", i) + .WriteAttributeString("Name", COverrides(i).Name) + .WriteAttributeString("RangeL", COverrides(i).RangeL) + .WriteAttributeString("RangeU", COverrides(i).RangeU) + .WriteAttributeString("NoteColor", COverrides(i).NoteColor) + .WriteAttributeString("TextColor", COverrides(i).TextColor) + .WriteAttributeString("LongNoteColor", COverrides(i).LongNoteColor) + .WriteAttributeString("LongTextColor", COverrides(i).LongTextColor) + .WriteAttributeString("BG", COverrides(i).BG) + .WriteEndElement() + Next + + .WriteEndElement() + .WriteEndDocument() + .Close() + End With + End Sub + + Private Sub Cancel_Button_Click(sender As Object, e As EventArgs) Handles Cancel_Button.Click + Me.DialogResult = System.Windows.Forms.DialogResult.Cancel + Me.Close() + End Sub + + Private Sub BAdd_Click(sender As Object, e As EventArgs) Handles BAdd.Click + If IsNothing(COverrides) Then + ReDim COverrides(0) + Else + ReDim Preserve COverrides(UBound(COverrides) + 1) + End If + With COverrides(UBound(COverrides)) + .Name = "New Item" + .RangeL = "01" + .RangeU = "02" + .NoteColor = "0" + .LongNoteColor = "0" + .LongTextColor = "0" + .BG = "0" + End With + + LOverrides.Items.Insert(LOverrides.Items.Count, "New Item") + LOverrides.SelectedIndex = UBound(COverrides) + ShowInTextbox() + End Sub + + Private Sub BRemove_Click(sender As Object, e As EventArgs) Handles BRemove.Click + If LOverrides.SelectedIndex = -1 Then Exit Sub + + For i = LOverrides.SelectedIndex To UBound(COverrides) - 1 + COverrides(i) = COverrides(i + 1) + Next + ReDim Preserve COverrides(UBound(COverrides) - 1) + + LOverrides.Items.RemoveAt(LOverrides.SelectedIndex) + End Sub + + Private Sub ShowInTextbox() ' Referenced OpPlayer + With COverrides(LOverrides.SelectedIndex) + TName.Text = .Name + TRangeL.Text = C10to36(.RangeL) + TRangeU.Text = C10to36(.RangeU) + BColor.Text = .NoteColor + cButtonChange(BColor, Color.FromArgb(.NoteColor)) + End With + + End Sub + + Private Function GetFileName(ByVal s As String) As String ' Copied from MainWindow + Dim fslash As Integer = InStrRev(s, "/") + Dim bslash As Integer = InStrRev(s, "\") + Return Mid(s, IIf(fslash > bslash, fslash, bslash) + 1) + End Function + + Private Sub SaveCOverride(sender As Object, e As KeyEventArgs) Handles TName.KeyUp, TRangeL.KeyUp, TRangeU.KeyUp + With COverrides(LOverrides.SelectedIndex) + .Name = TName.Text + .RangeL = C36to10(TRangeL.Text) + .RangeU = C36to10(TRangeU.Text) + End With + If [Object].ReferenceEquals(sender, TName) Then LOverrides.Items.Item(LOverrides.SelectedIndex) = TName.Text + End Sub + + Private Sub BColor_Click(sender As Object, e As EventArgs) Handles BColor.Click + Dim xColorPicker As New ColorPicker + xColorPicker.SetOrigColor(BColor.BackColor) + If xColorPicker.ShowDialog(Me) = Windows.Forms.DialogResult.Cancel Then Exit Sub + cButtonChange(BColor, xColorPicker.NewColor) + COverrides(LOverrides.SelectedIndex).NoteColor = xColorPicker.NewColor.ToArgb + End Sub + + Private Sub cButtonChange(ByVal xbutton As Button, ByVal c As Color) ' Copied from OpPlayer + xbutton.Text = Hex(c.ToArgb) + xbutton.BackColor = c + xbutton.ForeColor = IIf(CInt(c.GetBrightness * 255) + 255 - c.A >= 128, Color.Black, Color.White) + End Sub + + ' Below are copied from Utilities + Public Function C10to36S(ByVal xStart As Integer) As Char + If xStart < 10 Then Return CChar(CStr(xStart)) Else Return Chr(xStart + 55) + End Function + Public Function C36to10S(ByVal xChar As Char) As Integer + Dim xAsc As Integer = Asc(UCase(xChar)) + If xAsc >= 48 And xAsc <= 57 Then + Return xAsc - 48 + ElseIf xAsc >= 65 And xAsc <= 90 Then + Return xAsc - 55 + End If + Return 0 + End Function + Public Function C10to36(ByVal xStart As Long) As String + If xStart < 1 Then xStart = 1 + If xStart > 1295 Then xStart = 1295 + Return C10to36S(xStart \ 36) & C10to36S(xStart Mod 36) + End Function + Public Function C36to10(ByVal xStart As String) As Integer + xStart = Mid("00" & xStart, Len(xStart) + 1) + Return C36to10S(xStart.Chars(0)) * 36 + C36to10S(xStart.Chars(1)) + End Function + + Private Sub LOverrides_Click(sender As Object, e As EventArgs) Handles LOverrides.Click + If IsNothing(COverrides) Or LOverrides.SelectedIndex = -1 Then Exit Sub + ShowInTextbox() + End Sub +End Class \ No newline at end of file diff --git a/iBMSC/PanelDraw.vb b/iBMSC/PanelDraw.vb index 0f2cf32d3..5bd8e2cef 100644 --- a/iBMSC/PanelDraw.vb +++ b/iBMSC/PanelDraw.vb @@ -308,52 +308,34 @@ Partial Public Class MainWindow Dim xI1 As Integer Dim xUpperBorder As Single = Math.Abs(xVS) + xTHeight / gxHeight Dim xLowerBorder As Single = Math.Abs(xVS) - vo.kHeight / gxHeight + Dim COverrides() As ColorOverride - ' Recent(0) - - Dim CO As New COverride(5, 0, 0, 0, 0, 0) - + ' Color override Dim F As String = "Colors\" + GetFileName(FileName) + ".xml" - ' If My.Computer.FileSystem.FileExists("Color.xml") Then If My.Computer.FileSystem.FileExists(F) Then Dim Doc As New XmlDocument Dim FileStream As New IO.FileStream(F, FileMode.Open, FileAccess.Read) Doc.Load(FileStream) - ' Dim Root As XmlElement = Doc.Item("iBMSC") - ' Dim eColor As XmlElement = Root.Item("ColorOverride") Dim Root As XmlElement = Doc.Item("ColorOverride") - ' Dim eColor As XmlElement = Root.Item("Color") - ' If eColor IsNot Nothing Then - ' With eColor - ' ' RangeL - ' ' RangeR - ' ' NoteColor - ' ' LongNoteColor - ' ' LongTextColor - ' ' BG - ' XMLLoadAttribute(.GetAttribute("RangeL"), CO.RangeL(0)) - ' XMLLoadAttribute(.GetAttribute("RangeR"), CO.RangeR(0)) - ' XMLLoadAttribute(.GetAttribute("NoteColor"), CO.NoteColor(0)) - ' XMLLoadAttribute(.GetAttribute("LongNoteColor"), CO.LongNoteColor(0)) - ' XMLLoadAttribute(.GetAttribute("LongTextColor"), CO.LongTextColor(0)) - ' XMLLoadAttribute(.GetAttribute("BG"), CO.BG(0)) - ' End With - Dim i = 0 + + Dim n As Integer = Root.GetAttribute("Count") + ReDim COverrides(n) + Dim i As Integer For Each eColor As XmlElement In Root.ChildNodes - CO.Resize(i + 1) With eColor - XMLLoadAttribute(.GetAttribute("RangeL"), CO.RangeL(i)) - XMLLoadAttribute(.GetAttribute("RangeR"), CO.RangeR(i)) - XMLLoadAttribute(.GetAttribute("NoteColor"), CO.NoteColor(i)) - XMLLoadAttribute(.GetAttribute("LongNoteColor"), CO.LongNoteColor(i)) - XMLLoadAttribute(.GetAttribute("LongTextColor"), CO.LongTextColor(i)) - XMLLoadAttribute(.GetAttribute("BG"), CO.BG(i)) + XMLLoadAttribute(.GetAttribute("Index"), i) + XMLLoadAttribute(.GetAttribute("Name"), COverrides(i).Name) + XMLLoadAttribute(.GetAttribute("RangeL"), COverrides(i).RangeL) + XMLLoadAttribute(.GetAttribute("RangeU"), COverrides(i).RangeU) + XMLLoadAttribute(.GetAttribute("NoteColor"), COverrides(i).NoteColor) + XMLLoadAttribute(.GetAttribute("TextColor"), COverrides(i).TextColor) + XMLLoadAttribute(.GetAttribute("LongNoteColor"), COverrides(i).LongNoteColor) + XMLLoadAttribute(.GetAttribute("LongTextColor"), COverrides(i).LongTextColor) + XMLLoadAttribute(.GetAttribute("BG"), COverrides(i).BG) End With - i += 1 Next - ' End If FileStream.Close() End If @@ -362,7 +344,7 @@ Partial Public Class MainWindow If Notes(xI1).VPosition > xUpperBorder Then Exit For If Not IsNoteVisible(xI1, xTHeight, xVS) Then Continue For If NTInput Then - DrawNoteNT(Notes(xI1), e1, xHS, xVS, xTHeight, CO) + DrawNoteNT(Notes(xI1), e1, xHS, xVS, xTHeight, COverrides) Else DrawNote(Notes(xI1), e1, xHS, xVS, xTHeight) ' , CO) End If @@ -392,9 +374,9 @@ Partial Public Class MainWindow Private Sub DrawMouseOver(e1 As BufferedGraphics, xTHeight As Integer, xHS As Integer, xVS As Integer) - Dim CO As New COverride(0, 0, 0, 0, 0, 0) + Dim COverrides() As ColorOverride If NTInput Then - If Not bAdjustLength Then DrawNoteNT(Notes(KMouseOver), e1, xHS, xVS, xTHeight, CO) + If Not bAdjustLength Then DrawNoteNT(Notes(KMouseOver), e1, xHS, xVS, xTHeight, COverrides) Else DrawNote(Notes(KMouseOver), e1, xHS, xVS, xTHeight) ', CO End If @@ -568,7 +550,7 @@ Partial Public Class MainWindow ''' VS.Value. ''' Display height of the panel. (not ClipRectangle.Height) - Private Sub DrawNote(ByVal sNote As Note, ByVal e As BufferedGraphics, ByVal xHS As Long, ByVal xVS As Long, ByVal xHeight As Integer) ' , ByVal CO As COverride) ', Optional ByVal CheckError As Boolean = True) ', Optional ByVal ConnectToIndex As Long = 0) + Private Sub DrawNote(ByVal sNote As Note, ByVal e As BufferedGraphics, ByVal xHS As Long, ByVal xVS As Long, ByVal xHeight As Integer) ' , ByVal CO As ColorOverride) ', Optional ByVal CheckError As Boolean = True) ', Optional ByVal ConnectToIndex As Long = 0) If Not nEnabled(sNote.ColumnIndex) Then Exit Sub Dim xAlpha As Single = 1.0F If sNote.Hidden Then xAlpha = vo.kOpacity @@ -597,9 +579,9 @@ Partial Public Class MainWindow ' Color override 'Dim RangeL = 30000 - 'Dim RangeR = 50000 + 'Dim RangeU = 50000 'Dim coC = -5592406 - ' If sNote.Value >= RangeL And sNote.Value <= RangeR Then + ' If sNote.Value >= RangeL And sNote.Value <= RangeU Then ' bright = Color.FromArgb(coC) ' dark = bright ' ElseIf sNote.Landmine Then @@ -682,7 +664,7 @@ Partial Public Class MainWindow ''' VS.Value. ''' Display height of the panel. (not ClipRectangle.Height) - Private Sub DrawNoteNT(ByVal sNote As Note, ByVal e As BufferedGraphics, ByVal xHS As Long, ByVal xVS As Long, ByVal xHeight As Integer, ByVal CO As COverride) ', Optional ByVal CheckError As Boolean = True) + Private Sub DrawNoteNT(ByVal sNote As Note, ByVal e As BufferedGraphics, ByVal xHS As Long, ByVal xVS As Long, ByVal xHeight As Integer, ByVal CO() As ColorOverride) ', Optional ByVal CheckError As Boolean = True) If Not nEnabled(sNote.ColumnIndex) Then Exit Sub Dim xAlpha As Single = 1.0F If sNote.Hidden Then xAlpha = vo.kOpacity @@ -710,23 +692,27 @@ Partial Public Class MainWindow dark = GetColumn(sNote.ColumnIndex).getDark(xAlpha) ' Color override - For i = 0 To CO.Len + If Not IsNothing(CO) Then + For i = 0 To CO.Length - 1 - Dim RangeL = CO.RangeL(i) * 10000 - Dim RangeR = CO.RangeR(i) * 10000 - Dim NoteColorO = CO.NoteColor(i) - If sNote.Value >= RangeL And sNote.Value <= RangeR Then - bright = Color.FromArgb(NoteColorO) - dark = bright - End If - Next + Dim RangeL = CO(i).RangeL * 10000 + Dim RangeU = CO(i).RangeU * 10000 + Dim NoteColorO = CO(i).NoteColor + If sNote.Value >= RangeL And sNote.Value <= RangeU Then + bright = Color.FromArgb(NoteColorO) + dark = bright + Exit For + End If + + Next + End If + If sNote.Landmine Then bright = Color.Red dark = Color.Red End If - xBrush2 = New SolidBrush(GetColumn(sNote.ColumnIndex).cText) Else p1 = New Point(HorizontalPositiontoDisplay(nLeft(sNote.ColumnIndex) - 0.5 * GetColumnWidth(sNote.ColumnIndex), xHS), diff --git a/iBMSC/PanelEvents.vb b/iBMSC/PanelEvents.vb index 8da53f0ef..1c844e681 100644 --- a/iBMSC/PanelEvents.vb +++ b/iBMSC/PanelEvents.vb @@ -1600,8 +1600,8 @@ Partial Public Class MainWindow Dim e1 As BufferedGraphics = BufferedGraphicsManager.Current.Allocate(spMain(iI).CreateGraphics, New Rectangle(xDispX, xDispY, xDispW, xDispH)) e1.Graphics.FillRectangle(vo.Bg, New Rectangle(xDispX, xDispY, xDispW, xDispH)) - Dim CO As New COverride(0, 0, 0, 0, 0, 0) - If NTInput Then DrawNoteNT(Notes(foundNoteIndex), e1, xHS, xVS, xHeight, CO) Else DrawNote(Notes(foundNoteIndex), e1, xHS, xVS, xHeight) + Dim COverrides() As ColorOverride + If NTInput Then DrawNoteNT(Notes(foundNoteIndex), e1, xHS, xVS, xHeight, COverrides) Else DrawNote(Notes(foundNoteIndex), e1, xHS, xVS, xHeight) e1.Graphics.DrawRectangle(IIf(bAdjustLength, vo.kMouseOverE, vo.kMouseOver), xDispX, xDispY, xDispW - 1, xDispH - 1) diff --git a/iBMSC/iBMSC.vbproj b/iBMSC/iBMSC.vbproj index db6bf71bc..ecaf149f5 100644 --- a/iBMSC/iBMSC.vbproj +++ b/iBMSC/iBMSC.vbproj @@ -132,7 +132,6 @@ True Settings.settings - Form @@ -220,6 +219,12 @@ Form + + OpVisualOverride.vb + + + Form + Form @@ -309,6 +314,9 @@ OpPlayer.vb + + OpVisualOverride.vb + From 5f8dcf5d0ecc5019a5b0dac04cdb59efb24b9672 Mon Sep 17 00:00:00 2001 From: psyk2642 <60137590+psyk2642@users.noreply.github.com> Date: Mon, 14 Mar 2022 00:08:03 +0800 Subject: [PATCH 051/257] Miscellaneous - Fixed application crash if the folder "Colors" doesn't exist. --- iBMSC/My Project/AssemblyInfo.vb | 4 ++-- iBMSC/Option Windows/OpVisualOverride.vb | 2 ++ 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/iBMSC/My Project/AssemblyInfo.vb b/iBMSC/My Project/AssemblyInfo.vb index 1021fb887..f79bcd218 100644 --- a/iBMSC/My Project/AssemblyInfo.vb +++ b/iBMSC/My Project/AssemblyInfo.vb @@ -33,7 +33,7 @@ Imports System.Runtime.InteropServices ' by using the '*' as shown below: ' - - + + \ No newline at end of file diff --git a/iBMSC/Option Windows/OpVisualOverride.vb b/iBMSC/Option Windows/OpVisualOverride.vb index d94abd683..6c9536a6e 100644 --- a/iBMSC/Option Windows/OpVisualOverride.vb +++ b/iBMSC/Option Windows/OpVisualOverride.vb @@ -5,6 +5,8 @@ InitializeComponent() LOverrides.Items.Clear() + If Not System.IO.Directory.Exists("Colors") Then My.Computer.FileSystem.CreateDirectory("Colors") + F = "Colors\" + GetFileName(FileName) + ".xml" If Not My.Computer.FileSystem.FileExists(F) Then Exit Sub From 80e9bebdf4ad5b804a6733cdd1258fc5ae66fadb Mon Sep 17 00:00:00 2001 From: psyk2642 <60137590+psyk2642@users.noreply.github.com> Date: Mon, 14 Mar 2022 10:10:35 +0800 Subject: [PATCH 052/257] Color Override for both DrawNote and DrawNoteNT --- iBMSC/PanelDraw.vb | 50 +++++++++++++++++++++++++++++--------------- iBMSC/PanelEvents.vb | 2 +- 2 files changed, 34 insertions(+), 18 deletions(-) diff --git a/iBMSC/PanelDraw.vb b/iBMSC/PanelDraw.vb index 5bd8e2cef..25606a044 100644 --- a/iBMSC/PanelDraw.vb +++ b/iBMSC/PanelDraw.vb @@ -346,7 +346,7 @@ Partial Public Class MainWindow If NTInput Then DrawNoteNT(Notes(xI1), e1, xHS, xVS, xTHeight, COverrides) Else - DrawNote(Notes(xI1), e1, xHS, xVS, xTHeight) ' , CO) + DrawNote(Notes(xI1), e1, xHS, xVS, xTHeight, COverrides) End If Next End Sub @@ -378,7 +378,7 @@ Partial Public Class MainWindow If NTInput Then If Not bAdjustLength Then DrawNoteNT(Notes(KMouseOver), e1, xHS, xVS, xTHeight, COverrides) Else - DrawNote(Notes(KMouseOver), e1, xHS, xVS, xTHeight) ', CO + DrawNote(Notes(KMouseOver), e1, xHS, xVS, xTHeight, COverrides) End If Dim rect = GetNoteRectangle(KMouseOver, xTHeight, xHS, xVS) @@ -550,7 +550,7 @@ Partial Public Class MainWindow ''' VS.Value. ''' Display height of the panel. (not ClipRectangle.Height) - Private Sub DrawNote(ByVal sNote As Note, ByVal e As BufferedGraphics, ByVal xHS As Long, ByVal xVS As Long, ByVal xHeight As Integer) ' , ByVal CO As ColorOverride) ', Optional ByVal CheckError As Boolean = True) ', Optional ByVal ConnectToIndex As Long = 0) + Private Sub DrawNote(ByVal sNote As Note, ByVal e As BufferedGraphics, ByVal xHS As Long, ByVal xVS As Long, ByVal xHeight As Integer, ByVal CO() As ColorOverride) ', Optional ByVal CheckError As Boolean = True) ', Optional ByVal ConnectToIndex As Long = 0) If Not nEnabled(sNote.ColumnIndex) Then Exit Sub Dim xAlpha As Single = 1.0F If sNote.Hidden Then xAlpha = vo.kOpacity @@ -578,13 +578,26 @@ Partial Public Class MainWindow dark = GetColumn(sNote.ColumnIndex).getDark(xAlpha) ' Color override - 'Dim RangeL = 30000 - 'Dim RangeU = 50000 - 'Dim coC = -5592406 - ' If sNote.Value >= RangeL And sNote.Value <= RangeU Then - ' bright = Color.FromArgb(coC) - ' dark = bright - ' ElseIf sNote.Landmine Then + If Not IsNothing(CO) Then + + For i = 0 To UBound(CO) + Dim CORangeL = CO(i).RangeL * 10000 + Dim CORangeU = CO(i).RangeU * 10000 + Dim CONoteColor = CO(i).NoteColor + If sNote.Value >= CORangeL And sNote.Value <= CORangeU Then + ' bright = Color.FromArgb((CInt(((CONoteColor >> 24) And &HFF) * xAlpha) << 24)) + ' dark = bright + + ' bright = Color.FromArgb(CONoteColor * xAlpha) + + bright = Color.FromArgb(CONoteColor * xAlpha) + dark = Color.FromArgb(CONoteColor * xAlpha) + Exit For + End If + + Next + End If + If sNote.Landmine Then bright = Color.Red dark = Color.Red @@ -694,15 +707,18 @@ Partial Public Class MainWindow ' Color override If Not IsNothing(CO) Then - For i = 0 To CO.Length - 1 + For i = 0 To UBound(CO) + Dim CORangeL = CO(i).RangeL * 10000 + Dim CORangeU = CO(i).RangeU * 10000 + Dim CONoteColor = CO(i).NoteColor + If sNote.Value >= CORangeL And sNote.Value <= CORangeU Then + ' bright = Color.FromArgb((CInt(((CONoteColor >> 24) And &HFF) * xAlpha) << 24)) + ' dark = bright + ' bright = Color.FromArgb(CONoteColor * xAlpha) - Dim RangeL = CO(i).RangeL * 10000 - Dim RangeU = CO(i).RangeU * 10000 - Dim NoteColorO = CO(i).NoteColor - If sNote.Value >= RangeL And sNote.Value <= RangeU Then - bright = Color.FromArgb(NoteColorO) - dark = bright + bright = Color.FromArgb(CONoteColor * xAlpha) + dark = Color.FromArgb(CONoteColor * xAlpha) Exit For End If diff --git a/iBMSC/PanelEvents.vb b/iBMSC/PanelEvents.vb index 1c844e681..5a261ab61 100644 --- a/iBMSC/PanelEvents.vb +++ b/iBMSC/PanelEvents.vb @@ -1601,7 +1601,7 @@ Partial Public Class MainWindow e1.Graphics.FillRectangle(vo.Bg, New Rectangle(xDispX, xDispY, xDispW, xDispH)) Dim COverrides() As ColorOverride - If NTInput Then DrawNoteNT(Notes(foundNoteIndex), e1, xHS, xVS, xHeight, COverrides) Else DrawNote(Notes(foundNoteIndex), e1, xHS, xVS, xHeight) + If NTInput Then DrawNoteNT(Notes(foundNoteIndex), e1, xHS, xVS, xHeight, COverrides) Else DrawNote(Notes(foundNoteIndex), e1, xHS, xVS, xHeight, COverrides) e1.Graphics.DrawRectangle(IIf(bAdjustLength, vo.kMouseOverE, vo.kMouseOver), xDispX, xDispY, xDispW - 1, xDispH - 1) From 8798a6495812c31b973b641dea23fbbe3bf2d1ec Mon Sep 17 00:00:00 2001 From: psyk2642 <60137590+psyk2642@users.noreply.github.com> Date: Mon, 14 Mar 2022 12:53:24 +0800 Subject: [PATCH 053/257] Reduced Recommended #TOTAL Value Display to 2 decimal places --- iBMSC/MainWindow.resx | 74 +++++++++++++++++++++---------------------- iBMSC/MainWindow.vb | 2 +- 2 files changed, 38 insertions(+), 38 deletions(-) diff --git a/iBMSC/MainWindow.resx b/iBMSC/MainWindow.resx index 30b21409b..cff3542d4 100644 --- a/iBMSC/MainWindow.resx +++ b/iBMSC/MainWindow.resx @@ -145,43 +145,43 @@ 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 - 0f4HGS0k8HU3NokAAAAASUVORK5CYII= + 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 + tP8Bv+Yk6DZ0S90AAAAASUVORK5CYII= diff --git a/iBMSC/MainWindow.vb b/iBMSC/MainWindow.vb index d35217024..18cd35e31 100644 --- a/iBMSC/MainWindow.vb +++ b/iBMSC/MainWindow.vb @@ -2325,7 +2325,7 @@ StartCount: If Not NTInput Then Next End If - TBTotalValue.Text = xIAll * 7.605 / (0.01 * xIAll + 6.5) + TBTotalValue.Text = Math.Round(xIAll * 7.605 / (0.01 * xIAll + 6.5), 2) TBStatistics.Text = xIAll End Sub From 5d98bec9772de0755b45aa2b8659f53744e9078a Mon Sep 17 00:00:00 2001 From: psyk2642 <60137590+psyk2642@users.noreply.github.com> Date: Wed, 16 Mar 2022 23:09:09 +0800 Subject: [PATCH 054/257] Slight code improvement for Random Sort and SRandom Sort SRandom clash detection still not implemented --- iBMSC/MainWindow.vb | 54 ++++++++++++++++++++++----------------------- 1 file changed, 27 insertions(+), 27 deletions(-) diff --git a/iBMSC/MainWindow.vb b/iBMSC/MainWindow.vb index 18cd35e31..6ca2720df 100644 --- a/iBMSC/MainWindow.vb +++ b/iBMSC/MainWindow.vb @@ -2603,12 +2603,10 @@ DoNothing: Dim xUndo As UndoRedo.LinkedURCmd = Nothing Dim xRedo As UndoRedo.LinkedURCmd = New UndoRedo.Void Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo - 'xRedo &= sCmdKM(niA1, .VPosition, .Value, IIf(NTInput, .Length, .LongNote), .Hidden, RealColumnToEnabled(niA7) - RealColumnToEnabled(niA1), 0, True) & vbCrLf - 'xUndo &= sCmdKM(niA7, .VPosition, .Value, IIf(NTInput, .Length, .LongNote), .Hidden, RealColumnToEnabled(niA1) - RealColumnToEnabled(niA7), 0, True) & vbCrLf ' Array 0: Unmodified array ' Array 1: Modified array based on range - ' Array R: Array 1 reversed + ' Array R: Array 1 randomized Dim xniArray0 = New Integer() {niA1, niA2, niA3, niA4, niA5, niA6, niA7, niA8, niD1, niD2, niD3, niD4, niD5, niD6, niD7, niD8} ' Dim xniArray1 = Integer() ' xniArray0 @@ -2663,17 +2661,15 @@ Skip2: xniArray1(xI1) = xniArray0(xI1 + xRangeL) Next - Dim xniArrayLen = xniArray1.Length - ' xniArrayR: Randomized array Dim xniArrayR = xniArray1.Clone() - Shuffle(xniArrayR, xniArrayLen) + Shuffle(xniArrayR) Dim xCol As Integer For xI1 = 1 To UBound(Notes) If Not Notes(xI1).Selected Then Continue For xCol = Notes(xI1).ColumnIndex - For xI2 = 0 To xniArrayLen - 1 + For xI2 = 0 To xniArray1.Length - 1 If xCol = xniArray1(xI2) Then xCol = xniArrayR(xI2) Exit For @@ -2698,12 +2694,9 @@ DoNothing: Dim xUndo As UndoRedo.LinkedURCmd = Nothing Dim xRedo As UndoRedo.LinkedURCmd = New UndoRedo.Void Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo - 'xRedo &= sCmdKM(niA1, .VPosition, .Value, IIf(NTInput, .Length, .LongNote), .Hidden, RealColumnToEnabled(niA7) - RealColumnToEnabled(niA1), 0, True) & vbCrLf - 'xUndo &= sCmdKM(niA7, .VPosition, .Value, IIf(NTInput, .Length, .LongNote), .Hidden, RealColumnToEnabled(niA1) - RealColumnToEnabled(niA7), 0, True) & vbCrLf ' Array 0: Unmodified array ' Array 1: Modified array based on range - ' Array R: Array 1 reversed Dim xniArray0 = New Integer() {niA1, niA2, niA3, niA4, niA5, niA6, niA7, niA8, niD1, niD2, niD3, niD4, niD5, niD6, niD7, niD8} ' Dim xniArray1 = Integer() ' xniArray0 @@ -2758,27 +2751,34 @@ Skip2: xniArray1(xI1) = xniArray0(xI1 + xRangeL) Next - Dim xniArrayLen = xniArray1.Length - ' xniArrayR: Randomized array - Dim xniArrayR = xniArray1.Clone() - Dim xCol As Integer For xI1 = 1 To UBound(Notes) If Not Notes(xI1).Selected Then Continue For - Shuffle(xniArrayR, xniArrayLen) - xCol = Notes(xI1).ColumnIndex - For xI2 = 0 To xniArrayLen - 1 - If xCol = xniArray1(xI2) Then - xCol = xniArrayR(xI2) - Exit For - End If - - Next - + xCol = xniArray1(Math.Floor(xniArray1.Length * Rnd())) Me.RedoMoveNote(Notes(xI1), xCol, Notes(xI1).VPosition, xUndo, xRedo) Notes(xI1).ColumnIndex = xCol Next + ' Check for no clash with other notes. Freezes the application when there are too many notes in one VPosition + ' Dim xClash As Boolean + ' For xI1 = 1 To UBound(Notes) + ' If Not Notes(xI1).Selected Then Continue For + ' xClash = True + ' xCol = Notes(xI1).ColumnIndex + ' Do While xClash = True + ' xClash = False + ' For xI2 = 1 To UBound(Notes) + ' If Notes(xI2).VPosition = Notes(xI1).VPosition AndAlso Notes(xI2).ColumnIndex = xCol Then + ' xClash = True + ' xCol = xniArray1(Int((xniArray1.Length - 1) * Rnd())) + ' End If + ' Next + ' Loop + ' If Notes(xI1).ColumnIndex = xCol Then Exit For + ' Me.RedoMoveNote(Notes(xI1), xCol, Notes(xI1).VPosition, xUndo, xRedo) + ' Notes(xI1).ColumnIndex = xCol + ' Next + DoNothing: AddUndo(xUndo, xBaseRedo.Next) @@ -5014,13 +5014,13 @@ case2: Dim xI0 As Integer ' Generic shuffle for basic type arrays - Public Function Shuffle(Of T)(items As T(), Len As Integer) + Public Function Shuffle(Of T)(items As T()) Dim temp As T Dim j As Int32 - For i As Int32 = items.Count - 1 To 0 Step -1 + For i As Int32 = items.Count To 1 Step -1 ' Pick an item for position i. - j = Int(Len * Rnd()) + j = Math.Floor(i * Rnd()) ' Swap temp = items(i) items(i) = items(j) From cbc876c64bf74f6f42d8210f3f065dc4726fb909 Mon Sep 17 00:00:00 2001 From: psyk2642 <60137590+psyk2642@users.noreply.github.com> Date: Fri, 18 Mar 2022 23:17:29 +0800 Subject: [PATCH 055/257] Enhanced #random support The expansion code selection window now has 5 functions: - Display ghost notes: Select an #if section to display its notes in ghost form. - Display ghost notes (All): Display all notes in ghost form. - Modify notes: Select an #if section and jump straight to modifying them. - Modify section: Previous version of #random support where a new instance of pBMSC opens, allowing you to modify the #if section individually. - Remove ghost notes: Remove all ghost notes. --- README.md | 9 +- iBMSC/ChartIO.vb | 114 ++++++++++++--- iBMSC/EditorUndoRedo.vb | 2 +- iBMSC/MainWindow.designer.vb | 32 ++--- iBMSC/MainWindow.resx | 74 +++++----- iBMSC/MainWindow.vb | 162 ++++++++++++++++------ iBMSC/My Project/AssemblyInfo.vb | 4 +- iBMSC/Option Windows/Note.vb | 13 +- iBMSC/Option Windows/OpExpand.Designer.vb | 115 ++++++++++++--- iBMSC/Option Windows/OpExpand.vb | 118 ++++++++++------ iBMSC/PanelDraw.vb | 2 + iBMSC/PanelEvents.vb | 27 ++-- iBMSC/Strings.vb | 3 + 13 files changed, 478 insertions(+), 197 deletions(-) diff --git a/README.md b/README.md index e729696ab..c0942e644 100644 --- a/README.md +++ b/README.md @@ -12,6 +12,7 @@ Listed in the order added. * Fixed the Statistic Label not including notes between D1-D8. Statistic window still not fixed. * Fixed the total note count on the toolbar. * Reorganized the sidebar so you can tab between textboxes properly (mostly). +* Prevented notes in Expansion Code from being loaded. ## Functionality * Added Random and S-Random. For S-random, note overlapping can occur. * Added a display for recommended #TOTAL. @@ -23,7 +24,7 @@ Listed in the order added. * Added note search function (goto measure except it's goto note). One note per VPosition only. * Added sort function. Selected notes are sorted based on their VPosition and Value. * Added mBMplay as a default player. -* Added support for #RANDOM, including nested #RANDOM. Supports expansion field and main data field only. Not tested thoroughly. Accessible via the "Select Section" button in Expansion Code or via Ctrl+R. +* Added support for #RANDOM. Supports expansion field and main data field only. Not tested thoroughly, nested #RANDOM in "Modify Section" only. Accessible via the "Select Section" button in Expansion Code or via Ctrl+R. * Added color overriding options where you can specify a range of notes to appear a specific color, such as red notes for drums and green notes for the piano. Accessible via the Options tab or via Shift+F12. ## Keyboard shortcuts * Changed keybinding to allow note placement between D1 and D8. @@ -43,7 +44,7 @@ Listed in the order added. * F9 - Player Options * F10 - General Options * F12 - Visual Options -* Added advanced statistics (Ctrl+Shift+T) +* Added advanced statistics (Ctrl+Shift+T). * Added keyboard shortcuts for previewing and replacing keysounds in the Sounds List (Spacebar to preview, enter to replace). -* Added "Select Section" (Ctrl+R) -* Added color overriding options (Shift+F12) \ No newline at end of file +* Added "Select Section" (Ctrl+R). +* Added color overriding options (Shift+F12). \ No newline at end of file diff --git a/iBMSC/ChartIO.vb b/iBMSC/ChartIO.vb index 4a23fc6e6..c256d1b2d 100644 --- a/iBMSC/ChartIO.vb +++ b/iBMSC/ChartIO.vb @@ -1,7 +1,8 @@ -Imports iBMSC.Editor +Imports System.Linq +Imports iBMSC.Editor Partial Public Class MainWindow - Private Sub OpenBMS(ByVal xStrAll As String) + Private Sub OpenBMS(ByVal xStrAll As String, Optional xGhost As Boolean = False) KMouseOver = -1 'Line feed validation: will remove some empty lines @@ -12,6 +13,10 @@ Partial Public Class MainWindow Dim xI1 As Integer Dim sLine As String Dim xExpansion As String = "" + + ' Assume ghost note strings contain only notes in the section. Expansion field to be saved separately + If xGhost Then GoTo GhostJump1 + ReDim Notes(0) ReDim mColumn(999) ReDim hWAV(1295) @@ -38,16 +43,15 @@ Partial Public Class MainWindow 'switch, setSwitch +1 'case, skip, def 0 'endSw -1 - 'P: I'm gonna do what's called a pro gamer move - +GhostJump1: Dim xStack As Integer = 0 Dim nLine As Integer = -1 For Each sLine In xStrLine Dim sLineTrim As String = sLine.Trim If xStack > 0 Then GoTo Expansion - + If xGhost Then GoTo GhostJump2 If sLineTrim.StartsWith("#") And Mid(sLineTrim, 5, 3) = "02:" Then Dim xIndex As Integer = Val(Mid(sLineTrim, 2, 3)) @@ -162,14 +166,15 @@ Partial Public Class MainWindow CHLnObj.SelectedIndex = xValue GoTo AddToxStrLine2 - 'TODO: LNOBJ value validation - - 'ElseIf SWIC(sLineTrim,"#LNTYPE") Then - ' CAdLNTYPE.Checked = True - ' If Mid(sLineTrim, 9) = "" Or Mid(sLineTrim, 9) = "1" Or Mid(sLineTrim, 9) = "01" Then CAdLNTYPEb.Text = "1" - ' CAdLNTYPEb.Text = Mid(sLineTrim, 9) - - ElseIf sLineTrim.StartsWith("#") And Mid(sLineTrim, 7, 1) = ":" Then 'If the line contains Ks + End If + 'TODO: LNOBJ value validation + + 'ElseIf SWIC(sLineTrim,"#LNTYPE") Then + ' CAdLNTYPE.Checked = True + ' If Mid(sLineTrim, 9) = "" Or Mid(sLineTrim, 9) = "1" Or Mid(sLineTrim, 9) = "01" Then CAdLNTYPEb.Text = "1" + ' CAdLNTYPEb.Text = Mid(sLineTrim, 9) +GhostJump2: + If sLineTrim.StartsWith("#") And Mid(sLineTrim, 7, 1) = ":" Then 'If the line contains Ks Dim xIdentifier As String = Mid(sLineTrim, 5, 2) If BMSChannelToColumn(xIdentifier) = 0 Then GoTo AddExpansion @@ -190,7 +195,6 @@ AddExpansion: xExpansion &= sLine & vbCrLf End If Next - UpdateMeasureBottom() ReDim Preserve xStrLine2(nLine) @@ -222,6 +226,7 @@ AddExpansion: xExpansion &= sLine & vbCrLf .Selected = False .VPosition = MeasureBottom(xMeasure) + MeasureLength(xMeasure) * (xI1 / 2 - 4) / ((Len(sLineTrim) - 7) / 2) .Value = C36to10(Mid(sLineTrim, xI1, 2)) * 10000 + .Ghost = xGhost If Channel = "03" Then .Value = Convert.ToInt32(Mid(sLineTrim, xI1, 2), 16) * 10000 If Channel = "08" Then .Value = hBPM(C36to10(Mid(sLineTrim, xI1, 2))) @@ -234,6 +239,8 @@ AddExpansion: xExpansion &= sLine & vbCrLf If NTInput Then ConvertBMSE2NT() + If xGhost Then GoTo GhostJump3 + LWAV.Visible = False LWAV.Items.Clear() For xI1 = 1 To 1295 @@ -243,7 +250,7 @@ AddExpansion: xExpansion &= sLine & vbCrLf LWAV.Visible = True TExpansion.Text = xExpansion - +GhostJump3: SortByVPositionQuick(0, UBound(Notes)) UpdatePairing() CalculateTotalPlayableNotes() @@ -291,9 +298,13 @@ AddExpansion: xExpansion &= sLine & vbCrLf ConvertNT2BMSE() End If - Dim tempNote As Note 'Temp K + Dim tempNote As Note 'Temp K + Dim xprevNotes(-1) As Note 'Notes too close to the next measure - Dim xprevNotes(-1) As Note 'Notes too close to the next measure + If GhostMode = 2 Then SwapGhostNotes() ' Revert main notes back to non-ghost notes + 'Remove ghost notes from being saved + Dim NotesAll() As Note = Notes.Clone 'All notes including ghosts. + RemoveGhostNotes() ' Remove Ghost Notes from Notes() For MeasureIndex = 0 To MeasureAtDisplacement(GreatestVPosition) + 1 'For xI1 in each measure xStrMeasure(MeasureIndex) = vbCrLf @@ -352,6 +363,33 @@ AddExpansion: xExpansion &= sLine & vbCrLf Strings.Messages.SavedFileWillContainErrors, MsgBoxStyle.Exclamation) ' Add expansion text + Select Case GhostMode + Case 0 + ' Do nothing + Case 1, 2 + ' Generate String array for duplicate comparison + Dim GhostModeTemp As Integer = GhostMode + GhostMode = 0 + TExpansion.Text = "" + Dim xStrCompare() As String = Split(Replace(Replace(Replace(SaveBMS(), vbLf, vbCr), vbCr & vbCr, vbCr), vbCr, vbCrLf), vbCrLf,, CompareMethod.Text) + GhostMode = GhostModeTemp + + ' Save ghost notes + Notes = NotesAll.Clone + SwapGhostNotes() + RemoveGhostNotes() ' Remove Ghost Notes from Notes() + TExpansion.Text = ExtractExpansion(ExpansionSplit(1)) + Dim xStrExpNotes As String = SaveRandomBMS() + ExpansionSplit(1) = "" + + For Each xStrLine In Split(xStrExpNotes, vbCrLf) + If (Not xStrCompare.Contains(xStrLine) AndAlso xStrLine <> "*---------------------- RANDOM DATA FIELD") Or + SWIC(xStrLine, "#RANDOM") Or SWIC(xStrLine, "#IF") Or SWIC(xStrLine, "#ENDIF") Then + ExpansionSplit(1) &= xStrLine & vbCrLf + End If + Next + TExpansion.Text = Join(ExpansionSplit, vbCrLf) + End Select Dim xStrExp As String = vbCrLf & "*---------------------- EXPANSION FIELD" & vbCrLf & TExpansion.Text & vbCrLf & vbCrLf If TExpansion.Text = "" Then xStrExp = "" @@ -367,6 +405,17 @@ AddExpansion: xExpansion &= sLine & vbCrLf Dim xStrHeader As String = GenerateHeaderMeta() xStrHeader &= GenerateHeaderIndexedData() + ' Return ghost notes back to Notes + Notes = NotesAll.Clone + Select Case GhostMode + Case 0 + + Case 1 + + Case 2 + SwapGhostNotes() + End Select + Dim xStrAll As String = xStrHeader & vbCrLf & xStrExp & vbCrLf & xStrMain Return xStrAll End Function @@ -469,6 +518,35 @@ AddExpansion: xExpansion &= sLine & vbCrLf Return xStrAll End Function + Private Function ExtractExpansion(ByVal xString As String) As String + xString = Replace(Replace(Replace(xString, vbLf, vbCr), vbCr & vbCr, vbCr), vbCr, vbCrLf) + Dim xStrLine() As String = Split(xString, vbCrLf, , CompareMethod.Text) + Dim xExpansion As String = "" + Dim sLine As String + Dim xStack As Integer = 0 + For Each sLine In xStrLine + Dim sLineTrim As String = sLine.Trim + If xStack > 0 Then + GoTo ExtractExpansion + ElseIf sLineTrim.StartsWith("#") And Mid(sLineTrim, 7, 1) = ":" Then 'If the line contains Ks + Dim xIdentifier As String = Mid(sLineTrim, 5, 2) + If BMSChannelToColumn(xIdentifier) = 0 Then GoTo ExtractAddExpansion + Else +ExtractExpansion: If SWIC(sLineTrim, "#IF") Or SWIC(sLineTrim, "#SWITCH") Or SWIC(sLineTrim, "#SETSWITCH") Then + xStack += 1 : GoTo ExtractAddExpansion + ElseIf SWIC(sLineTrim, "#ENDIF") Or SWIC(sLineTrim, "#ENDSW") Then + xStack -= 1 : GoTo ExtractAddExpansion + + ElseIf sLineTrim.StartsWith("#") Then +ExtractAddExpansion: xExpansion &= sLine & vbCrLf + + End If + End If + Next + + Return xExpansion + End Function + Private Function GenerateHeaderMeta() As String Dim xStrHeader As String = vbCrLf & "*---------------------- HEADER FIELD" & vbCrLf & vbCrLf xStrHeader &= "#PLAYER " & (CHPlayer.SelectedIndex + 1) & vbCrLf @@ -541,7 +619,7 @@ AddExpansion: xExpansion &= sLine & vbCrLf End If Next - If UpperLimit < LowerLimit Then UpperLimit = NoteCount + 1 + If UpperLimit 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 - tP8Bv+Yk6DZ0S90AAAAASUVORK5CYII= + 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 + +x91iyTPokfBbgAAAABJRU5ErkJggg== diff --git a/iBMSC/MainWindow.vb b/iBMSC/MainWindow.vb index 6ca2720df..47fed487a 100644 --- a/iBMSC/MainWindow.vb +++ b/iBMSC/MainWindow.vb @@ -79,11 +79,17 @@ Public Class MainWindow 'IO Dim FileName As String = "Untitled.bms" - Dim RandomFileName As String = "___TempRandom" & GenerateRandomString(6, False) & ".bmsc" - Public RandomFile(2) As String + Dim RandomTempFileName As String = "___TempRandom" & GenerateRandomString(6, False) & ".bmsc" + Public ExpansionSplit(2) As String 'Dim TitlePath As New Drawing2D.GraphicsPath Dim InitPath As String = "" Dim IsSaved As Boolean = True + Dim GhostMode As Integer = 0 + ' Ghost mode + ' 0 - Default, ghost notes entirely uneditable + ' 1 - Ghost notes loaded with expectation of editing them + ' 2 - Ghost notes loaded as main notes and main notes temporarily changed to ghost notes + Dim GhostEdit As Boolean = False 'Variables for Drag/Drop Dim DDFileName() As String = {} @@ -781,7 +787,7 @@ Public Class MainWindow Dim xI1 As Integer = 1 Dim xI2 As Integer Do - If Notes(xI1).Selected Then + If Notes(xI1).Selected AndAlso Not Notes(xI1).Ghost Then For xI2 = xI1 + 1 To UBound(Notes) Notes(xI2 - 1) = Notes(xI2) Next @@ -926,6 +932,7 @@ Public Class MainWindow THComment.Text = "" 'THLnType.Text = "1" CHLnObj.SelectedIndex = 0 + GhostMode = 0 TExpansion.Text = "" @@ -2536,7 +2543,7 @@ MirrorSkip2: Dim xCol As Integer For xI1 = 1 To UBound(Notes) - If Not Notes(xI1).Selected Then Continue For + If Not Notes(xI1).Selected Or Notes(xI1).Ghost Then Continue For xCol = Notes(xI1).ColumnIndex ' MsgBox("Test" & "xCol: " & xCol & " xI1: " & xI1) @@ -2577,7 +2584,7 @@ DoNothing: Dim xCol As Integer For xI1 = 1 To UBound(Notes) - If Not Notes(xI1).Selected Then Continue For + If Not Notes(xI1).Selected Or Notes(xI1).Ghost Then Continue For xCol = Notes(xI1).ColumnIndex For xI2 = 0 To xniArrayLen - 1 @@ -2666,7 +2673,7 @@ Skip2: Dim xCol As Integer For xI1 = 1 To UBound(Notes) - If Not Notes(xI1).Selected Then Continue For + If Not Notes(xI1).Selected Or Notes(xI1).Ghost Then Continue For xCol = Notes(xI1).ColumnIndex For xI2 = 0 To xniArray1.Length - 1 @@ -2690,7 +2697,6 @@ DoNothing: Private Sub POBSRandom_Click(sender As Object, e As EventArgs) Handles POBSRandom.Click Dim xI1 As Integer - Dim xI2 As Integer Dim xUndo As UndoRedo.LinkedURCmd = Nothing Dim xRedo As UndoRedo.LinkedURCmd = New UndoRedo.Void Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo @@ -2753,7 +2759,7 @@ Skip2: Dim xCol As Integer For xI1 = 1 To UBound(Notes) - If Not Notes(xI1).Selected Then Continue For + If Not Notes(xI1).Selected Or Notes(xI1).Ghost Then Continue For xCol = xniArray1(Math.Floor(xniArray1.Length * Rnd())) Me.RedoMoveNote(Notes(xI1), xCol, Notes(xI1).VPosition, xUndo, xRedo) Notes(xI1).ColumnIndex = xCol @@ -2807,7 +2813,7 @@ DoNothing: Dim xSorted As Boolean = False For xI1 = 1 To UBound(Notes) - If Not Notes(xI1).Selected Then Continue For + If Not Notes(xI1).Selected Or Notes(xI1).Ghost Then Continue For ' If starting a new row or same VPosition If xI3 = 0 Or vPos = Notes(xI1).VPosition Then RestartSorting: xSorted = False @@ -3045,8 +3051,6 @@ RestartSorting: xSorted = False '... 'Me.RedoRemoveNote(K(xI1), True, xUndo, xRedo) 'AddUndo(xUndo, xBaseRedo.Next) - - Private Sub TBAbout_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Dim Aboutboxx1 As New AboutBox1() 'If My.Computer.FileSystem.FileExists(My.Application.Info.DirectoryPath & "\About.png") Then @@ -3257,6 +3261,7 @@ RestartSorting: xSorted = False .VPosition = Notes(xI1).VPosition .Selected = Notes(xI1).Selected .Hidden = Notes(xI1).Hidden + .Ghost = Notes(xI1).Ghost End With If Notes(xI1).Length > 0 Then @@ -3269,6 +3274,7 @@ RestartSorting: xSorted = False .VPosition = Notes(xI1).VPosition + Notes(xI1).Length .Selected = Notes(xI1).Selected .Hidden = Notes(xI1).Hidden + .Ghost = Notes(xI1).Ghost End With End If Next @@ -3502,7 +3508,7 @@ RestartSorting: xSorted = False Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo For xI1 As Integer = 1 To UBound(Notes) - If Not Notes(xI1).Selected Then Continue For + If Not Notes(xI1).Selected Or Notes(xI1).Ghost Then Continue For Me.RedoLongNoteModify(Notes(xI1), Notes(xI1).VPosition, True, xUndo, xRedo) Notes(xI1).LongNote = True @@ -3520,7 +3526,7 @@ RestartSorting: xSorted = False If Not NTInput Then For xI1 As Integer = 1 To UBound(Notes) - If Not Notes(xI1).Selected Then Continue For + If Not Notes(xI1).Selected Or Notes(xI1).Ghost Then Continue For Me.RedoLongNoteModify(Notes(xI1), Notes(xI1).VPosition, 0, xUndo, xRedo) Notes(xI1).LongNote = False @@ -3528,7 +3534,7 @@ RestartSorting: xSorted = False Else For xI1 As Integer = 1 To UBound(Notes) - If Not Notes(xI1).Selected Then Continue For + If Not Notes(xI1).Selected Or Notes(xI1).Ghost Then Continue For Me.RedoLongNoteModify(Notes(xI1), Notes(xI1).VPosition, 0, xUndo, xRedo) Notes(xI1).Length = 0 @@ -3549,7 +3555,7 @@ RestartSorting: xSorted = False Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo For xI1 As Integer = 1 To UBound(Notes) - If Not Notes(xI1).Selected Then Continue For + If Not Notes(xI1).Selected Or Notes(xI1).Ghost Then Continue For Me.RedoLongNoteModify(Notes(xI1), Notes(xI1).VPosition, Not Notes(xI1).LongNote, xUndo, xRedo) Notes(xI1).LongNote = Not Notes(xI1).LongNote @@ -3567,7 +3573,7 @@ RestartSorting: xSorted = False Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo For xI1 As Integer = 1 To UBound(Notes) - If Not Notes(xI1).Selected Then Continue For + If Not Notes(xI1).Selected Or Notes(xI1).Ghost Then Continue For Me.RedoHiddenNoteModify(Notes(xI1), True, True, xUndo, xRedo) Notes(xI1).Hidden = True @@ -3584,7 +3590,7 @@ RestartSorting: xSorted = False Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo For xI1 As Integer = 1 To UBound(Notes) - If Not Notes(xI1).Selected Then Continue For + If Not Notes(xI1).Selected Or Notes(xI1).Ghost Then Continue For Me.RedoHiddenNoteModify(Notes(xI1), False, True, xUndo, xRedo) Notes(xI1).Hidden = False @@ -3601,7 +3607,7 @@ RestartSorting: xSorted = False Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo For xI1 As Integer = 1 To UBound(Notes) - If Not Notes(xI1).Selected Then Continue For + If Not Notes(xI1).Selected Or Notes(xI1).Ghost Then Continue For Me.RedoHiddenNoteModify(Notes(xI1), Not Notes(xI1).Hidden, True, xUndo, xRedo) Notes(xI1).Hidden = Not Notes(xI1).Hidden @@ -3635,8 +3641,7 @@ RestartSorting: xSorted = False Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo For xI1 = 1 To UBound(Notes) - If Not IsColumnNumeric(Notes(xI1).ColumnIndex) Then Continue For - If Not Notes(xI1).Selected Then Continue For + If Not IsColumnNumeric(Notes(xI1).ColumnIndex) Or Not Notes(xI1).Selected Or Notes(xI1).Ghost Then Continue For Me.RedoRelabelNote(Notes(xI1), xD1, xUndo, xRedo) Notes(xI1).Value = xD1 @@ -3665,8 +3670,7 @@ RestartSorting: xSorted = False Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo For xI1 = 1 To UBound(Notes) - If IsColumnNumeric(Notes(xI1).ColumnIndex) Then Continue For - If Not Notes(xI1).Selected Then Continue For + If IsColumnNumeric(Notes(xI1).ColumnIndex) Or Not Notes(xI1).Selected Or Notes(xI1).Ghost Then Continue For Me.RedoRelabelNote(Notes(xI1), xVal, xUndo, xRedo) Notes(xI1).Value = xVal @@ -3899,7 +3903,7 @@ Jump2: 'Main process Dim xI1 As Integer = 1 Do While xI1 <= UBound(Notes) - If ((xbSel And Notes(xI1).Selected) Or (xbUnsel And Not Notes(xI1).Selected)) AndAlso + If (Not Notes(xI1).Ghost) AndAlso ((xbSel And Notes(xI1).Selected) Or (xbUnsel And Not Notes(xI1).Selected)) AndAlso fdrCheck(Notes(xI1)) AndAlso nEnabled(Notes(xI1).ColumnIndex) AndAlso fdrRangeS(xbShort, xbLong, IIf(NTInput, Notes(xI1).Length, Notes(xI1).LongNote)) And fdrRangeS(xbVisible, xbHidden, Notes(xI1).Hidden) Then RedoRemoveNote(Notes(xI1), xUndo, xRedo) RemoveNote(xI1, False) @@ -3945,7 +3949,7 @@ Jump2: 'Main process For xI1 As Integer = 1 To UBound(Notes) - If ((xbSel And Notes(xI1).Selected) Or (xbUnsel And Not Notes(xI1).Selected)) AndAlso + If (Not Notes(xI1).Ghost) AndAlso ((xbSel And Notes(xI1).Selected) Or (xbUnsel And Not Notes(xI1).Selected)) AndAlso fdrCheck(Notes(xI1)) AndAlso nEnabled(Notes(xI1).ColumnIndex) And Not IsColumnNumeric(Notes(xI1).ColumnIndex) AndAlso fdrRangeS(xbShort, xbLong, IIf(NTInput, Notes(xI1).Length, Notes(xI1).LongNote)) And fdrRangeS(xbVisible, xbHidden, Notes(xI1).Hidden) Then 'xUndo &= sCmdKC(K(xI1).ColumnIndex, K(xI1).VPosition, xxLbl, IIf(NTInput, K(xI1).Length, K(xI1).LongNote), K(xI1).Hidden, 0, 0, K(xI1).Value, IIf(NTInput, K(xI1).Length, K(xI1).LongNote), K(xI1).Hidden, True) & vbCrLf 'xRedo &= sCmdKC(K(xI1).ColumnIndex, K(xI1).VPosition, K(xI1).Value, IIf(NTInput, K(xI1).Length, K(xI1).LongNote), K(xI1).Hidden, 0, 0, xxLbl, IIf(NTInput, K(xI1).Length, K(xI1).LongNote), K(xI1).Hidden, True) & vbCrLf @@ -3986,7 +3990,7 @@ Jump2: 'Main process For xI1 As Integer = 1 To UBound(Notes) - If ((xbSel And Notes(xI1).Selected) Or (xbUnsel And Not Notes(xI1).Selected)) AndAlso + If (Not Notes(xI1).Ghost) AndAlso ((xbSel And Notes(xI1).Selected) Or (xbUnsel And Not Notes(xI1).Selected)) AndAlso fdrCheck(Notes(xI1)) AndAlso nEnabled(Notes(xI1).ColumnIndex) And IsColumnNumeric(Notes(xI1).ColumnIndex) AndAlso fdrRangeS(xbShort, xbLong, IIf(NTInput, Notes(xI1).Length, Notes(xI1).LongNote)) And fdrRangeS(xbVisible, xbHidden, Notes(xI1).Hidden) Then 'xUndo &= sCmdKC(K(xI1).ColumnIndex, K(xI1).VPosition, xReplaceVal, IIf(NTInput, K(xI1).Length, K(xI1).LongNote), K(xI1).Hidden, 0, 0, K(xI1).Value, IIf(NTInput, K(xI1).Length, K(xI1).LongNote), K(xI1).Hidden, True) & vbCrLf 'xRedo &= sCmdKC(K(xI1).ColumnIndex, K(xI1).VPosition, K(xI1).Value, IIf(NTInput, K(xI1).Length, K(xI1).LongNote), K(xI1).Hidden, 0, 0, xReplaceVal, IIf(NTInput, K(xI1).Length, K(xI1).LongNote), K(xI1).Hidden, True) & vbCrLf @@ -5029,45 +5033,104 @@ case2: Dim xI0 As Integer Return items End Function - Private Sub Expand_Load(sender As Object, e As EventArgs) Handles ECSelectSection.Click - ReDim RandomFile(2) + Private Sub Expand_Load(sender As Object, e As EventArgs) Handles BExpansion.Click + ReDim ExpansionSplit(2) Dim xDOp As New OpExpand() - Dim ReadText As String = Nothing - RandomFile(1) = "-" + ExpansionSplit(1) = "-" Try xDOp.ShowDialog(Me) Catch Exit Sub End Try + End Sub + + Public Sub Expand_DisplayGhostNotes(Optional xGhostMode As Integer = 0) + Select Case GhostMode + Case 0 + GhostMode = xGhostMode + Case 1 + GhostMode = 0 + Case 2 + Dim xResult As MsgBoxResult = MsgBox(Strings.Messages.GhostNotesShowMain, MsgBoxStyle.YesNo) + If xResult = MsgBoxResult.No Then Exit Sub + If xResult = MsgBoxResult.Yes Then SaveBMS() + SwapGhostNotes() + GhostMode = 0 + End Select + OpenBMS(ExpansionSplit(1), True) + End Sub - If RandomFile(1) = "-" Then Exit Sub - Dim RandomFilePath = ExcludeFileName(FileName) & "\" & RandomFileName + Public Sub Expand_ModifyNotes() + Select Case GhostMode + Case 2 + SwapGhostNotes() + End Select + RemoveGhostNotes() + GhostMode = 2 + OpenBMS(ExpansionSplit(1), True) + SwapGhostNotes() + End Sub + + Public Sub Expand_ModifySection() + RemoveGhostNotes() + GhostMode = 0 + Dim ReadText As String = Nothing + Dim RandomTempFilePath = ExcludeFileName(FileName) & "\" & RandomTempFileName ' Picks another random filename because the programme somehow generated the same exact RandomFileName as a previous instance. 1 in 2-billion chance btw - Do Until Not My.Computer.FileSystem.FileExists(RandomFilePath) - RandomFileName = "___TempRandom" & GenerateRandomString(6, False) & ".bmsc" - RandomFilePath = ExcludeFileName(FileName) & "\" & RandomFileName + Do Until Not My.Computer.FileSystem.FileExists(RandomTempFilePath) + RandomTempFileName = "___TempRandom" & GenerateRandomString(6, False) & ".bmsc" + RandomTempFilePath = ExcludeFileName(FileName) & "\" & RandomTempFileName Loop - RandomFile(1) = GenerateHeaderMeta() & GenerateHeaderIndexedData() & RandomFile(1) + ExpansionSplit(1) = GenerateHeaderMeta() & GenerateHeaderIndexedData() & ExpansionSplit(1) ' Dim xStrHeader As String = GenerateHeaderMeta() ' xStrHeader &= GenerateHeaderIndexedData() - My.Computer.FileSystem.WriteAllText(RandomFilePath, RandomFile(1), False, TextEncoding) - System.Diagnostics.Process.Start(My.Application.Info.DirectoryPath & "\" & My.Application.Info.ProductName & ".exe", RandomFilePath) + My.Computer.FileSystem.WriteAllText(RandomTempFilePath, ExpansionSplit(1), False, TextEncoding) + System.Diagnostics.Process.Start(My.Application.Info.DirectoryPath & "\" & My.Application.Info.ProductName & ".exe", RandomTempFilePath) Do Until False Threading.Thread.Sleep(3000) - ReadText = My.Computer.FileSystem.ReadAllText(RandomFilePath, TextEncoding) + ReadText = My.Computer.FileSystem.ReadAllText(RandomTempFilePath, TextEncoding) If ReadText.EndsWith("*---------------------- RANDOM DATA FIELD") Then Exit Do End If Loop - RandomFile(1) = "" + ExpansionSplit(1) = "" + TExpansion.Text = "" + Dim xStrCompare() As String = Split(Replace(Replace(Replace(SaveBMS(), vbLf, vbCr), vbCr & vbCr, vbCr), vbCr, vbCrLf), vbCrLf,, CompareMethod.Text) For Each xStrLine In Split(ReadText, vbCrLf) - If xStrLine <> "" AndAlso xStrLine <> "*---------------------- RANDOM DATA FIELD" Then - RandomFile(1) &= xStrLine & vbCrLf + If (Not xStrCompare.Contains(xStrLine) AndAlso xStrLine <> "*---------------------- RANDOM DATA FIELD") Or + SWIC(xStrLine, "#RANDOM") Or SWIC(xStrLine, "#IF") Or SWIC(xStrLine, "#ENDIF") Then + ExpansionSplit(1) &= xStrLine & vbCrLf End If Next - TExpansion.Text = Join(RandomFile, vbCrLf) - AddTempFileList(RandomFilePath) + TExpansion.Text = Join(ExpansionSplit, vbCrLf) + AddTempFileList(RandomTempFilePath) + End Sub + + Public Sub Expand_RemoveGhostNotes() + Select Case GhostMode + Case 2 + SwapGhostNotes() + End Select + RemoveGhostNotes() + GhostMode = 0 + End Sub + + Public Sub RemoveGhostNotes() + Dim xI1 As Integer = 1 + Do While xI1 <= UBound(Notes) + If Notes(xI1).Ghost Then + RemoveNote(xI1) + Else + xI1 += 1 + End If + Loop + End Sub + + Public Sub SwapGhostNotes() + For xI1 = 1 To UBound(Notes) + Notes(xI1).Ghost = Not Notes(xI1).Ghost + Next End Sub Public Function GenerateRandomString(ByRef len As Integer, ByRef upper As Boolean) As String @@ -5081,4 +5144,17 @@ case2: Dim xI0 As Integer Return IIf(upper, final.ToUpper(), final) End Function + Private Sub TExpansion_Click(sender As Object, e As EventArgs) Handles TExpansion.Click + Select Case GhostMode + Case 1 + Dim xResult As MsgBoxResult = MsgBox(Strings.Messages.GhostNotesModifyExpansion1, MsgBoxStyle.YesNo) + If xResult = MsgBoxResult.No Then Exit Sub + GhostMode = 0 + Case 2 + Dim xResult As MsgBoxResult = MsgBox(Strings.Messages.GhostNotesModifyExpansion2, MsgBoxStyle.YesNo) + If xResult = MsgBoxResult.No Then Exit Sub + SaveBMS() + Expand_RemoveGhostNotes() + End Select + End Sub End Class diff --git a/iBMSC/My Project/AssemblyInfo.vb b/iBMSC/My Project/AssemblyInfo.vb index f79bcd218..a49a84d3c 100644 --- a/iBMSC/My Project/AssemblyInfo.vb +++ b/iBMSC/My Project/AssemblyInfo.vb @@ -33,7 +33,7 @@ Imports System.Runtime.InteropServices ' by using the '*' as shown below: ' - - + + \ No newline at end of file diff --git a/iBMSC/Option Windows/Note.vb b/iBMSC/Option Windows/Note.vb index e7bf20140..226be50fc 100644 --- a/iBMSC/Option Windows/Note.vb +++ b/iBMSC/Option Windows/Note.vb @@ -7,6 +7,7 @@ Public Hidden As Boolean Public Length As Double Public Landmine As Boolean + Public Ghost As Boolean Public LNPair As Integer Public Selected As Boolean @@ -23,7 +24,8 @@ Value = note.Value And LongNote = note.LongNote And Hidden = note.Hidden And - Landmine = note.Landmine + Landmine = note.Landmine And + Ghost = note.Ghost End Function Public Function equalsNT(note As Note) As Boolean Return VPosition = note.VPosition And @@ -31,7 +33,8 @@ Value = note.Value And Hidden = note.Hidden And Length = note.Length And - Landmine = note.Landmine + Landmine = note.Landmine And + Ghost = note.Ghost End Function Public Sub New(nColumnIndex As Integer, @@ -40,7 +43,8 @@ Optional nLongNote As Double = 0, Optional nHidden As Boolean = False, Optional nSelected As Boolean = False, - Optional nLandmine As Boolean = False) + Optional nLandmine As Boolean = False, + Optional nGhost As Boolean = False) VPosition = nVposition ColumnIndex = nColumnIndex Value = nValue @@ -48,6 +52,7 @@ Length = nLongNote Hidden = nHidden Landmine = nLandmine + Ghost = nGhost End Sub Friend Function ToBytes() As Byte() @@ -66,6 +71,7 @@ bw.Write(Length) bw.Write(Hidden) bw.Write(Landmine) + bw.Write(Ghost) End Sub Friend Sub FromBinReader(ByRef br As BinaryReader) @@ -76,6 +82,7 @@ Length = br.ReadDouble() Hidden = br.ReadBoolean() Landmine = br.ReadBoolean() + Ghost = br.ReadBoolean() End Sub Friend Sub FromBytes(ByRef bytes() As Byte) diff --git a/iBMSC/Option Windows/OpExpand.Designer.vb b/iBMSC/Option Windows/OpExpand.Designer.vb index c6918b01f..5595cf372 100644 --- a/iBMSC/Option Windows/OpExpand.Designer.vb +++ b/iBMSC/Option Windows/OpExpand.Designer.vb @@ -24,8 +24,14 @@ Partial Class OpExpand Private Sub InitializeComponent() Me.Label5 = New System.Windows.Forms.Label() Me.Cancel_Button = New System.Windows.Forms.Button() - Me.OK_Button = New System.Windows.Forms.Button() + Me.BModifyNotes = New System.Windows.Forms.Button() Me.LExpansionCode = New System.Windows.Forms.ListBox() + Me.BDisplayGhostAll = New System.Windows.Forms.Button() + Me.BDisplayGhost = New System.Windows.Forms.Button() + Me.BModifySection = New System.Windows.Forms.Button() + Me.BRemoveGhostNotes = New System.Windows.Forms.Button() + Me.TableLayoutPanel1 = New System.Windows.Forms.TableLayoutPanel() + Me.TableLayoutPanel1.SuspendLayout() Me.SuspendLayout() ' 'Label5 @@ -34,7 +40,7 @@ Partial Class OpExpand Me.Label5.Location = New System.Drawing.Point(12, 9) Me.Label5.Name = "Label5" Me.Label5.Size = New System.Drawing.Size(124, 13) - Me.Label5.TabIndex = 69 + Me.Label5.TabIndex = 0 Me.Label5.Text = "Current Expansion Code:" ' 'Cancel_Button @@ -42,22 +48,22 @@ Partial Class OpExpand Me.Cancel_Button.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) Me.Cancel_Button.DialogResult = System.Windows.Forms.DialogResult.Cancel Me.Cancel_Button.FlatStyle = System.Windows.Forms.FlatStyle.System - Me.Cancel_Button.Location = New System.Drawing.Point(144, 426) + Me.Cancel_Button.Location = New System.Drawing.Point(133, 74) Me.Cancel_Button.Name = "Cancel_Button" - Me.Cancel_Button.Size = New System.Drawing.Size(126, 23) - Me.Cancel_Button.TabIndex = 67 + Me.Cancel_Button.Size = New System.Drawing.Size(124, 23) + Me.Cancel_Button.TabIndex = 121 Me.Cancel_Button.Text = "Cancel" ' - 'OK_Button + 'BModifyNotes ' - Me.OK_Button.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left), System.Windows.Forms.AnchorStyles) - Me.OK_Button.DialogResult = System.Windows.Forms.DialogResult.OK - Me.OK_Button.FlatStyle = System.Windows.Forms.FlatStyle.System - Me.OK_Button.Location = New System.Drawing.Point(12, 426) - Me.OK_Button.Name = "OK_Button" - Me.OK_Button.Size = New System.Drawing.Size(126, 23) - Me.OK_Button.TabIndex = 66 - Me.OK_Button.Text = "OK" + Me.BModifyNotes.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left), System.Windows.Forms.AnchorStyles) + Me.BModifyNotes.DialogResult = System.Windows.Forms.DialogResult.OK + Me.BModifyNotes.FlatStyle = System.Windows.Forms.FlatStyle.System + Me.BModifyNotes.Location = New System.Drawing.Point(3, 40) + Me.BModifyNotes.Name = "BModifyNotes" + Me.BModifyNotes.Size = New System.Drawing.Size(124, 23) + Me.BModifyNotes.TabIndex = 110 + Me.BModifyNotes.Text = "Modify Notes" ' 'LExpansionCode ' @@ -67,20 +73,84 @@ Partial Class OpExpand Me.LExpansionCode.FormattingEnabled = True Me.LExpansionCode.Location = New System.Drawing.Point(12, 25) Me.LExpansionCode.Name = "LExpansionCode" - Me.LExpansionCode.Size = New System.Drawing.Size(260, 394) - Me.LExpansionCode.TabIndex = 70 + Me.LExpansionCode.Size = New System.Drawing.Size(260, 420) + Me.LExpansionCode.TabIndex = 1 + ' + 'BDisplayGhostAll + ' + Me.BDisplayGhostAll.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) + Me.BDisplayGhostAll.DialogResult = System.Windows.Forms.DialogResult.OK + Me.BDisplayGhostAll.FlatStyle = System.Windows.Forms.FlatStyle.System + Me.BDisplayGhostAll.Location = New System.Drawing.Point(133, 7) + Me.BDisplayGhostAll.Name = "BDisplayGhostAll" + Me.BDisplayGhostAll.Size = New System.Drawing.Size(124, 23) + Me.BDisplayGhostAll.TabIndex = 101 + Me.BDisplayGhostAll.Text = "DisplayGhostNotes (All)" + ' + 'BDisplayGhost + ' + Me.BDisplayGhost.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left), System.Windows.Forms.AnchorStyles) + Me.BDisplayGhost.DialogResult = System.Windows.Forms.DialogResult.OK + Me.BDisplayGhost.FlatStyle = System.Windows.Forms.FlatStyle.System + Me.BDisplayGhost.Location = New System.Drawing.Point(3, 7) + Me.BDisplayGhost.Name = "BDisplayGhost" + Me.BDisplayGhost.Size = New System.Drawing.Size(124, 23) + Me.BDisplayGhost.TabIndex = 100 + Me.BDisplayGhost.Text = "Display Ghost Notes" + ' + 'BModifySection + ' + Me.BModifySection.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left), System.Windows.Forms.AnchorStyles) + Me.BModifySection.DialogResult = System.Windows.Forms.DialogResult.Yes + Me.BModifySection.FlatStyle = System.Windows.Forms.FlatStyle.System + Me.BModifySection.Location = New System.Drawing.Point(133, 40) + Me.BModifySection.Name = "BModifySection" + Me.BModifySection.Size = New System.Drawing.Size(124, 23) + Me.BModifySection.TabIndex = 111 + Me.BModifySection.Text = "Modify Section" + ' + 'BRemoveGhostNotes + ' + Me.BRemoveGhostNotes.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left), System.Windows.Forms.AnchorStyles) + Me.BRemoveGhostNotes.DialogResult = System.Windows.Forms.DialogResult.No + Me.BRemoveGhostNotes.FlatStyle = System.Windows.Forms.FlatStyle.System + Me.BRemoveGhostNotes.Location = New System.Drawing.Point(3, 74) + Me.BRemoveGhostNotes.Name = "BRemoveGhostNotes" + Me.BRemoveGhostNotes.Size = New System.Drawing.Size(124, 23) + Me.BRemoveGhostNotes.TabIndex = 120 + Me.BRemoveGhostNotes.Text = "Remove Ghost Notes" + ' + 'TableLayoutPanel1 + ' + Me.TableLayoutPanel1.ColumnCount = 2 + Me.TableLayoutPanel1.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50.0!)) + Me.TableLayoutPanel1.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50.0!)) + Me.TableLayoutPanel1.Controls.Add(Me.BDisplayGhost, 0, 0) + Me.TableLayoutPanel1.Controls.Add(Me.BRemoveGhostNotes, 0, 2) + Me.TableLayoutPanel1.Controls.Add(Me.BDisplayGhostAll, 1, 0) + Me.TableLayoutPanel1.Controls.Add(Me.Cancel_Button, 1, 2) + Me.TableLayoutPanel1.Controls.Add(Me.BModifySection, 1, 1) + Me.TableLayoutPanel1.Controls.Add(Me.BModifyNotes, 0, 1) + Me.TableLayoutPanel1.Location = New System.Drawing.Point(12, 449) + Me.TableLayoutPanel1.Name = "TableLayoutPanel1" + Me.TableLayoutPanel1.RowCount = 3 + Me.TableLayoutPanel1.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 33.33333!)) + Me.TableLayoutPanel1.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 33.33333!)) + Me.TableLayoutPanel1.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 33.33333!)) + Me.TableLayoutPanel1.Size = New System.Drawing.Size(260, 100) + Me.TableLayoutPanel1.TabIndex = 114 ' 'OpExpand ' Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!) Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font - Me.ClientSize = New System.Drawing.Size(284, 461) + Me.ClientSize = New System.Drawing.Size(284, 561) + Me.Controls.Add(Me.TableLayoutPanel1) Me.Controls.Add(Me.LExpansionCode) Me.Controls.Add(Me.Label5) - Me.Controls.Add(Me.Cancel_Button) - Me.Controls.Add(Me.OK_Button) Me.Name = "OpExpand" Me.Text = "Select Expansion Code" + Me.TableLayoutPanel1.ResumeLayout(False) Me.ResumeLayout(False) Me.PerformLayout() @@ -88,6 +158,11 @@ Partial Class OpExpand Friend WithEvents Label5 As Label Friend WithEvents Cancel_Button As Button - Friend WithEvents OK_Button As Button + Friend WithEvents BModifyNotes As Button Friend WithEvents LExpansionCode As ListBox + Friend WithEvents BDisplayGhostAll As Button + Friend WithEvents BDisplayGhost As Button + Friend WithEvents BModifySection As Button + Friend WithEvents BRemoveGhostNotes As Button + Friend WithEvents TableLayoutPanel1 As TableLayoutPanel End Class diff --git a/iBMSC/Option Windows/OpExpand.vb b/iBMSC/Option Windows/OpExpand.vb index 4ccc68935..63cc7a6fa 100644 --- a/iBMSC/Option Windows/OpExpand.vb +++ b/iBMSC/Option Windows/OpExpand.vb @@ -5,10 +5,80 @@ Dim RangeL As Integer = -1 Dim RangeU As Integer = -1 Dim xStack As Integer = 0 - Private Sub OK_Button_Click(sender As Object, e As EventArgs) Handles OK_Button.Click, LExpansionCode.DoubleClick + Public Sub New() + InitializeComponent() + + ' If no expansion text + If MainWindow.TExpansion.Text = "" Then + MsgBox("Error: Expansion code is empty.") + Me.Close() + Exit Sub + End If + + ' List expansion code per line + LExpansionCode.Items.Clear() + For Each xStrLine In TExpansionTextSplit + LExpansionCode.Items.Add(xStrLine) + Next + End Sub + + Private Sub BDisplayGhost_Click(sender As Object, e As EventArgs) Handles BDisplayGhost.Click + Select_Section() + If MainWindow.ExpansionSplit(1) = "-" Then Exit Sub + Me.Close() + MainWindow.Expand_DisplayGhostNotes(1) + End Sub + + Private Sub BDisplayGhostAll_Click(sender As Object, e As EventArgs) Handles BDisplayGhostAll.Click + MainWindow.ExpansionSplit(1) = MainWindow.TExpansion.Text + Me.Close() + MainWindow.Expand_DisplayGhostNotes() + End Sub + + Private Sub BModifyNotes_Click(sender As Object, e As EventArgs) Handles BModifyNotes.Click + Select_Section() + If MainWindow.ExpansionSplit(1) = "-" Then Exit Sub + Me.Close() + MainWindow.Expand_ModifyNotes() + End Sub + + Private Sub BModifySection_Click(sender As Object, e As EventArgs) Handles BModifySection.Click ', LExpansionCode.DoubleClick + Select_Section() + If MainWindow.ExpansionSplit(1) = "-" Then Exit Sub + Me.Close() + MainWindow.Expand_ModifySection() + End Sub + + Private Sub Cancel_Button_Click(sender As Object, e As EventArgs) Handles Cancel_Button.Click + Me.DialogResult = System.Windows.Forms.DialogResult.Cancel + Me.Close() + End Sub + + Private Sub ExpansionCodeList_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles LExpansionCode.Click + CurrSelection = LExpansionCode.SelectedIndex + End Sub + + Private Function SWIC(str As String, strHash As String) As Boolean ' Copied from ChartIO.vb + Return str.StartsWith(strHash, StringComparison.CurrentCultureIgnoreCase) + End Function + + Private Function ExcludeFileName(ByVal s As String) As String ' Copied from MainWindow.vb + Dim fslash As Integer = InStrRev(s, "/") + Dim bslash As Integer = InStrRev(s, "\") + If (bslash Or fslash) = 0 Then Return "" + Return Mid(s, 1, IIf(fslash > bslash, fslash, bslash) - 1) + End Function + + Private Sub BRemoveGhostNotes_Click(sender As Object, e As EventArgs) Handles BRemoveGhostNotes.Click + Me.Close() + MainWindow.Expand_RemoveGhostNotes() + End Sub + + Private Sub Select_Section() ' Select #if section ' If no line selected If CurrSelection = -1 Then MsgBox("Error: No line selected.") + MainWindow.ExpansionSplit(1) = "-" Exit Sub End If @@ -48,6 +118,7 @@ ' If RangeL or RangeU's values have not been found If RangeL = -1 Or RangeU = -1 Then MsgBox("Error: #IF Section not detected.") + MainWindow.ExpansionSplit(1) = "-" Exit Sub End If @@ -56,55 +127,16 @@ For i = 0 To RangeL - 1 TExpansionTextSelected(i) = TExpansionTextSplit(i) Next - MainWindow.RandomFile(0) = Join(TExpansionTextSelected, vbCrLf) + MainWindow.ExpansionSplit(0) = Join(TExpansionTextSelected, vbCrLf) ReDim TExpansionTextSelected(RangeU - RangeL) For i = RangeL To RangeU TExpansionTextSelected(i - RangeL) = TExpansionTextSplit(i) Next - MainWindow.RandomFile(1) = Join(TExpansionTextSelected, vbCrLf) + MainWindow.ExpansionSplit(1) = Join(TExpansionTextSelected, vbCrLf) ReDim TExpansionTextSelected(TExpansionTextSplit.Length - 1 - RangeU - 1) For i = RangeU + 1 To TExpansionTextSplit.Length - 1 TExpansionTextSelected(i - RangeU - 1) = TExpansionTextSplit(i) Next - MainWindow.RandomFile(2) = Join(TExpansionTextSelected, vbCrLf) - Me.Close() - End Sub - - Private Sub Cancel_Button_Click(sender As Object, e As EventArgs) Handles Cancel_Button.Click - Me.DialogResult = System.Windows.Forms.DialogResult.Cancel - Me.Close() + MainWindow.ExpansionSplit(2) = Join(TExpansionTextSelected, vbCrLf) End Sub - - Public Sub New() - InitializeComponent() - - ' If no expansion text - If MainWindow.TExpansion.Text = "" Then - MsgBox("Error: Expansion code is empty.") - Me.Close() - Exit Sub - End If - - ' List expansion code per line - LExpansionCode.Items.Clear() - For Each xStrLine In TExpansionTextSplit - LExpansionCode.Items.Add(xStrLine) - Next - End Sub - - Private Sub ExpansionCodeList_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles LExpansionCode.Click - CurrSelection = LExpansionCode.SelectedIndex - End Sub - - Private Function SWIC(str As String, strHash As String) As Boolean ' Copied from ChartIO.vb - Return str.StartsWith(strHash, StringComparison.CurrentCultureIgnoreCase) - End Function - - Private Function ExcludeFileName(ByVal s As String) As String ' Copied from MainWindow.vb - Dim fslash As Integer = InStrRev(s, "/") - Dim bslash As Integer = InStrRev(s, "\") - If (bslash Or fslash) = 0 Then Return "" - Return Mid(s, 1, IIf(fslash > bslash, fslash, bslash) - 1) - End Function - End Class \ No newline at end of file diff --git a/iBMSC/PanelDraw.vb b/iBMSC/PanelDraw.vb index 25606a044..82d97d073 100644 --- a/iBMSC/PanelDraw.vb +++ b/iBMSC/PanelDraw.vb @@ -554,6 +554,7 @@ Partial Public Class MainWindow If Not nEnabled(sNote.ColumnIndex) Then Exit Sub Dim xAlpha As Single = 1.0F If sNote.Hidden Then xAlpha = vo.kOpacity + If sNote.Ghost Then xAlpha *= 0.1 Dim xLabel As String = C10to36(sNote.Value \ 10000) If ShowFileName AndAlso hWAV(C36to10(xLabel)) <> "" Then @@ -681,6 +682,7 @@ Partial Public Class MainWindow If Not nEnabled(sNote.ColumnIndex) Then Exit Sub Dim xAlpha As Single = 1.0F If sNote.Hidden Then xAlpha = vo.kOpacity + If sNote.Ghost Then xAlpha *= 0.1 Dim xLabel As String = C10to36(sNote.Value \ 10000) If ShowFileName AndAlso hWAV(C36to10(xLabel)) <> "" Then xLabel = Path.GetFileNameWithoutExtension(hWAV(C36to10(xLabel))) diff --git a/iBMSC/PanelEvents.vb b/iBMSC/PanelEvents.vb index 5a261ab61..3632592d0 100644 --- a/iBMSC/PanelEvents.vb +++ b/iBMSC/PanelEvents.vb @@ -39,7 +39,7 @@ Partial Public Class MainWindow 'xRedo = sCmdKMs(0, xVPosition - muVPosition, True) Dim xVPos As Double For xI1 = 1 To UBound(Notes) - If Not Notes(xI1).Selected Then Continue For + If Not Notes(xI1).Selected Or Notes(xI1).Ghost Then Continue For xVPos = Notes(xI1).VPosition + xVPosition - muVPosition Me.RedoMoveNote(Notes(xI1), Notes(xI1).ColumnIndex, xVPos, xUndo, xRedo) @@ -72,7 +72,7 @@ Partial Public Class MainWindow 'xRedo = sCmdKMs(0, xVPosition - mVPosition, True) Dim xVPos As Double For xI1 = 1 To UBound(Notes) - If Not Notes(xI1).Selected Then Continue For + If Not Notes(xI1).Selected Or Notes(xI1).Ghost Then Continue For xVPos = Notes(xI1).VPosition + xVPosition - mVPosition Me.RedoMoveNote(Notes(xI1), Notes(xI1).ColumnIndex, xVPos, xUndo, xRedo) @@ -102,7 +102,7 @@ Partial Public Class MainWindow 'xRedo = sCmdKMs(-1 - mLeft, 0, True) Dim xCol As Integer For xI1 = 1 To UBound(Notes) - If Not Notes(xI1).Selected Then Continue For + If Not Notes(xI1).Selected Or Notes(xI1).Ghost Then Continue For xCol = EnabledColumnIndexToColumnArrayIndex(ColumnArrayIndexToEnabledColumnIndex(Notes(xI1).ColumnIndex) - 1 - mLeft) Me.RedoMoveNote(Notes(xI1), xCol, Notes(xI1).VPosition, xUndo, xRedo) @@ -119,7 +119,7 @@ Partial Public Class MainWindow 'xRedo = sCmdKMs(1, 0, True) Dim xCol As Integer For xI1 = 1 To UBound(Notes) - If Not Notes(xI1).Selected Then Continue For + If Not Notes(xI1).Selected Or Notes(xI1).Ghost Then Continue For xCol = EnabledColumnIndexToColumnArrayIndex(ColumnArrayIndexToEnabledColumnIndex(Notes(xI1).ColumnIndex) + 1) Me.RedoMoveNote(Notes(xI1), xCol, Notes(xI1).VPosition, xUndo, xRedo) @@ -371,7 +371,7 @@ Partial Public Class MainWindow Dim bMoveAndDeselectFirstNote = My.Computer.Keyboard.ShiftKeyDown For xI2 As Integer = 1 To UBound(Notes) - If Not Notes(xI2).Selected Then Continue For + If Not Notes(xI2).Selected Or Notes(xI2).Ghost Then Continue For RedoMoveNote(Notes(xI2), xTargetColumn, Notes(xI2).VPosition, xUndo, xRedo) Notes(xI2).ColumnIndex = xTargetColumn @@ -867,6 +867,11 @@ Partial Public Class MainWindow Dim Note As Note = Notes(NoteIndex) Dim NoteColumn As Integer = Note.ColumnIndex + ' Switch ghost mode if ghost mode = 1 or 2 and double clicked on ghost note + If GhostMode = 1 AndAlso Note.Ghost Then SwapGhostNotes() : GhostMode = 2 : Exit Sub + If GhostMode = 2 AndAlso Note.Ghost Then SwapGhostNotes() : GhostMode = 1 : Exit Sub + If Note.Ghost Then MsgBox("To modify ghost notes, please select only one section from the expansion code.") : Exit Sub + If IsColumnNumeric(NoteColumn) Then 'BPM/Stop prompt Dim xMessage As String = Strings.Messages.PromptEnterNumeric @@ -1046,6 +1051,7 @@ Partial Public Class MainWindow UpdateSelectionBox(xHS, xVS, xHeight) 'ElseIf Not KMouseDown = -1 Then + ' Click and drag notes ElseIf SelectedNotes.Length <> 0 Then UpdateSelectedNotes(xHeight, xVS, xHS, e) @@ -1271,7 +1277,7 @@ Partial Public Class MainWindow Dim minLength As Double = 0 Dim maxHeight As Double = 191999 For xI1 = 1 To UBound(Notes) - If Not Notes(xI1).Selected Then Continue For + If Not Notes(xI1).Selected Or Notes(xI1).Ghost Then Continue For If Notes(xI1).Length + dVPosition < minLength Then minLength = Notes(xI1).Length + dVPosition If Notes(xI1).Length + Notes(xI1).VPosition + dVPosition > maxHeight Then maxHeight = Notes(xI1).Length + Notes(xI1).VPosition + dVPosition Next @@ -1285,7 +1291,7 @@ Partial Public Class MainWindow 'start moving Dim xLen As Double For xI1 = 1 To UBound(Notes) - If Not Notes(xI1).Selected Then Continue For + If Not Notes(xI1).Selected Or Notes(xI1).Ghost Then Continue For xLen = Notes(xI1).Length + dVPosition - minLength - maxHeight RedoLongNoteModify(SelectedNotes(Notes(xI1).TempIndex), Notes(xI1).VPosition, xLen, xUndo, xRedo) @@ -1323,7 +1329,7 @@ Partial Public Class MainWindow Dim xVPos As Double Dim xLen As Double For xI1 = 0 To UBound(Notes) - If Not Notes(xI1).Selected Then Continue For + If Not Notes(xI1).Selected Or Notes(xI1).Ghost Then Continue For xVPos = Notes(xI1).VPosition + dVPosition + minLength - minVPosition xLen = Notes(xI1).Length - dVPosition - minLength + minVPosition @@ -1360,7 +1366,7 @@ Partial Public Class MainWindow Dim mVPosition As Double = 0 Dim muVPosition As Double = 191999 For xI1 = 1 To UBound(Notes) - If Not Notes(xI1).Selected Then Continue For + If Not Notes(xI1).Selected Or Notes(xI1).Ghost Then Continue For If ColumnArrayIndexToEnabledColumnIndex(Notes(xI1).ColumnIndex) + colChange < dstColumn Then _ dstColumn = ColumnArrayIndexToEnabledColumnIndex(Notes(xI1).ColumnIndex) + colChange @@ -1464,6 +1470,7 @@ Partial Public Class MainWindow End Sub Private Sub OnSelectModeMoveNotes(e As MouseEventArgs, xHS As Long, xITemp As Integer) + If Notes(xITemp).Ghost Then Exit Sub Dim mouseVPosition = GetMouseVPosition(gSnap) If DisableVerticalMove Then mouseVPosition = SelectedNotes(0).VPosition Dim dVPosition = mouseVPosition - Notes(xITemp).VPosition 'delta VPosition @@ -1508,7 +1515,7 @@ Partial Public Class MainWindow 'start moving For xI1 = 1 To UBound(Notes) - If Not Notes(xI1).Selected Then Continue For + If Not Notes(xI1).Selected Or Notes(xI1).Ghost Then Continue For xCol = EnabledColumnIndexToColumnArrayIndex(ColumnArrayIndexToEnabledColumnIndex(Notes(xI1).ColumnIndex) + dColumn - mLeft) xVPos = Notes(xI1).VPosition + dVPosition - mVPosition - muVPosition diff --git a/iBMSC/Strings.vb b/iBMSC/Strings.vb index 7b69a0e91..3dd708f2f 100644 --- a/iBMSC/Strings.vb +++ b/iBMSC/Strings.vb @@ -42,6 +42,9 @@ Public Class Strings Public Shared FileAssociationError As String = "Error changing file type association:" Public Shared RestoreDefaultSettings As String = "Restore default settings?" Public Shared RestoreAutosavedFile As String = "{} autosaved file(s) have been found. Do you want to recover these files?" + Public Shared GhostNotesShowMain As String = "Warning: The notes in the current section will be changed to ghost notes. Save current section and continue?" + Public Shared GhostNotesModifyExpansion1 As String = "Warning: The current ghost notes will become uneditable. Continue?" + Public Shared GhostNotesModifyExpansion2 As String = "Warning: There are unsaved changes in the ghost notes. Save current section and continue?" End Class Public Class FileType From 9ad5f9de8355399a0f4e654799f9c20f8d968469 Mon Sep 17 00:00:00 2001 From: psyk2642 <60137590+psyk2642@users.noreply.github.com> Date: Sat, 19 Mar 2022 11:59:48 +0800 Subject: [PATCH 056/257] #Random code optimization --- iBMSC/ChartIO.vb | 174 +++++++++----------------------------------- iBMSC/MainWindow.vb | 22 +++++- 2 files changed, 53 insertions(+), 143 deletions(-) diff --git a/iBMSC/ChartIO.vb b/iBMSC/ChartIO.vb index c256d1b2d..6aa078a57 100644 --- a/iBMSC/ChartIO.vb +++ b/iBMSC/ChartIO.vb @@ -277,7 +277,7 @@ GhostJump3: Return str.StartsWith(strHash, StringComparison.CurrentCultureIgnoreCase) End Function - Private Function SaveBMS() As String + Private Function SaveBMS(Optional xRandom As Boolean = False) As String CalculateGreatestVPosition() SortByVPositionInsertion() UpdatePairing() @@ -362,34 +362,36 @@ GhostJump3: Strings.Messages.SCROLLOverflowError & UBound(hBMSCROLL) & " > " & 1295 & vbCrLf & Strings.Messages.SavedFileWillContainErrors, MsgBoxStyle.Exclamation) + ' If xRandom then return bms style random data field, combining expansion text and main data field. + If xRandom Then + Return TExpansion.Text & vbCrLf & Join(xStrMeasure, "") & vbCrLf & "*---------------------- RANDOM DATA FIELD" + End If + ' Add expansion text - Select Case GhostMode - Case 0 - ' Do nothing - Case 1, 2 - ' Generate String array for duplicate comparison - Dim GhostModeTemp As Integer = GhostMode - GhostMode = 0 - TExpansion.Text = "" - Dim xStrCompare() As String = Split(Replace(Replace(Replace(SaveBMS(), vbLf, vbCr), vbCr & vbCr, vbCr), vbCr, vbCrLf), vbCrLf,, CompareMethod.Text) - GhostMode = GhostModeTemp - - ' Save ghost notes - Notes = NotesAll.Clone - SwapGhostNotes() - RemoveGhostNotes() ' Remove Ghost Notes from Notes() - TExpansion.Text = ExtractExpansion(ExpansionSplit(1)) - Dim xStrExpNotes As String = SaveRandomBMS() - ExpansionSplit(1) = "" - - For Each xStrLine In Split(xStrExpNotes, vbCrLf) - If (Not xStrCompare.Contains(xStrLine) AndAlso xStrLine <> "*---------------------- RANDOM DATA FIELD") Or - SWIC(xStrLine, "#RANDOM") Or SWIC(xStrLine, "#IF") Or SWIC(xStrLine, "#ENDIF") Then - ExpansionSplit(1) &= xStrLine & vbCrLf - End If - Next - TExpansion.Text = Join(ExpansionSplit, vbCrLf) - End Select + If GhostMode <> 0 Then + ' Generate String array for duplicate comparison + Dim GhostModeTemp As Integer = GhostMode + GhostMode = 0 + TExpansion.Text = "" + Dim xStrCompare() As String = Split(Replace(Replace(Replace(SaveBMS(), vbLf, vbCr), vbCr & vbCr, vbCr), vbCr, vbCrLf), vbCrLf,, CompareMethod.Text) + + ' Save ghost notes + Notes = NotesAll.Clone + SwapGhostNotes() + RemoveGhostNotes() ' Remove Ghost Notes from Notes() + TExpansion.Text = ExtractExpansion(ExpansionSplit(1)) + Dim xStrExpNotes As String = SaveBMS(True) + GhostMode = GhostModeTemp + + ExpansionSplit(1) = "" + For Each xStrLine In Split(xStrExpNotes, vbCrLf) + If (Not xStrCompare.Contains(xStrLine) AndAlso xStrLine <> "*---------------------- RANDOM DATA FIELD") Or + SWIC(xStrLine, "#RANDOM") Or SWIC(xStrLine, "#IF") Or SWIC(xStrLine, "#ENDIF") Then + ExpansionSplit(1) &= xStrLine & vbCrLf + End If + Next + TExpansion.Text = Join(ExpansionSplit, vbCrLf) + End If Dim xStrExp As String = vbCrLf & "*---------------------- EXPANSION FIELD" & vbCrLf & TExpansion.Text & vbCrLf & vbCrLf If TExpansion.Text = "" Then xStrExp = "" @@ -401,121 +403,15 @@ GhostJump3: NTInput = True End If - ' Generate headers now, since we have the unique BPM/STOP/etc declarations. - Dim xStrHeader As String = GenerateHeaderMeta() - xStrHeader &= GenerateHeaderIndexedData() - ' Return ghost notes back to Notes Notes = NotesAll.Clone - Select Case GhostMode - Case 0 + If GhostMode = 2 Then SwapGhostNotes() - Case 1 - - Case 2 - SwapGhostNotes() - End Select - - Dim xStrAll As String = xStrHeader & vbCrLf & xStrExp & vbCrLf & xStrMain - Return xStrAll - End Function - - Private Function SaveRandomBMS() As String - ' Straight up copied and pasted from SaveBMS. Optimization will be later. - CalculateGreatestVPosition() - SortByVPositionInsertion() - UpdatePairing() - Dim MeasureIndex As Integer - Dim hasOverlapping As Boolean = False - 'Dim xStrAll As String = "" 'for all - Dim xStrMeasure(MeasureAtDisplacement(GreatestVPosition) + 1) As String - - ' We regenerate these when traversing the bms event list. - ReDim hBPM(0) - ReDim hSTOP(0) - ReDim hBMSCROLL(0) - - Dim xNTInput As Boolean = NTInput - Dim xKBackUp() As Note = Notes - If xNTInput Then - NTInput = False - ConvertNT2BMSE() - End If - - Dim tempNote As Note 'Temp K - - Dim xprevNotes(-1) As Note 'Notes too close to the next measure - - For MeasureIndex = 0 To MeasureAtDisplacement(GreatestVPosition) + 1 'For xI1 in each measure - xStrMeasure(MeasureIndex) = vbCrLf - - Dim consistentDecimalStr = WriteDecimalWithDot(MeasureLength(MeasureIndex) / 192.0R) - - ' Handle fractional measure - If MeasureLength(MeasureIndex) <> 192.0R Then xStrMeasure(MeasureIndex) &= "#" & Add3Zeros(MeasureIndex) & "02:" & consistentDecimalStr & vbCrLf - - ' Get note count in current measure - Dim LowerLimit As Integer = Nothing - Dim UpperLimit As Integer = Nothing - GetMeasureLimits(MeasureIndex, LowerLimit, UpperLimit) - - If UpperLimit - LowerLimit = 0 Then Continue For 'If there is no K in the current measure then end this loop - - ' Get notes from this measure - Dim xUPrevText As Integer = UBound(xprevNotes) - Dim NotesInMeasure(UpperLimit - LowerLimit + xUPrevText) As Note - - ' Copy notes from previous array - For i = 0 To xUPrevText - NotesInMeasure(i) = xprevNotes(i) - Next - - ' Copy notes in current measure - For i = LowerLimit To UpperLimit - 1 - NotesInMeasure(i - LowerLimit + xprevNotes.Length) = Notes(i) - Next - - ' Find greatest column. - ' Since background tracks have the highest column values - ' this - niB will yield the number of B columns. - Dim GreatestColumn = 0 - For Each tempNote In NotesInMeasure - GreatestColumn = Math.Max(tempNote.ColumnIndex, GreatestColumn) - Next - - ReDim xprevNotes(-1) - xStrMeasure(MeasureIndex) &= GenerateBackgroundTracks(MeasureIndex, hasOverlapping, NotesInMeasure, GreatestColumn, xprevNotes) - xStrMeasure(MeasureIndex) &= GenerateKeyTracks(MeasureIndex, hasOverlapping, NotesInMeasure, xprevNotes) - Next - - ' Warn about 255 limit if neccesary. - If hasOverlapping Then MsgBox(Strings.Messages.SaveWarning & vbCrLf & - Strings.Messages.NoteOverlapError & vbCrLf & - Strings.Messages.SavedFileWillContainErrors, MsgBoxStyle.Exclamation) - If UBound(hBPM) > IIf(BPMx1296, 1295, 255) Then MsgBox(Strings.Messages.SaveWarning & vbCrLf & - Strings.Messages.BPMOverflowError & UBound(hBPM) & " > " & IIf(BPMx1296, 1295, 255) & vbCrLf & - Strings.Messages.SavedFileWillContainErrors, MsgBoxStyle.Exclamation) - If UBound(hSTOP) > IIf(STOPx1296, 1295, 255) Then MsgBox(Strings.Messages.SaveWarning & vbCrLf & - Strings.Messages.STOPOverflowError & UBound(hSTOP) & " > " & IIf(STOPx1296, 1295, 255) & vbCrLf & - Strings.Messages.SavedFileWillContainErrors, MsgBoxStyle.Exclamation) - If UBound(hBMSCROLL) > 1295 Then MsgBox(Strings.Messages.SaveWarning & vbCrLf & - Strings.Messages.SCROLLOverflowError & UBound(hBMSCROLL) & " > " & 1295 & vbCrLf & - Strings.Messages.SavedFileWillContainErrors, MsgBoxStyle.Exclamation) - - ' Add expansion text - Dim xStrExp As String = vbCrLf & TExpansion.Text & vbCrLf & vbCrLf - If TExpansion.Text = "" Then xStrExp = "" - - ' Output main data field. - Dim xStrMain As String = vbCrLf & Join(xStrMeasure, "") & vbCrLf - - If xNTInput Then - Notes = xKBackUp - NTInput = True - End If + ' Generate headers now, since we have the unique BPM/STOP/etc declarations. + Dim xStrHeader As String = GenerateHeaderMeta() + xStrHeader &= GenerateHeaderIndexedData() - Dim xStrAll As String = xStrExp & vbCrLf & xStrMain & vbCrLf & "*---------------------- RANDOM DATA FIELD" - Return xStrAll + Return xStrHeader & vbCrLf & xStrExp & vbCrLf & xStrMain End Function Private Function ExtractExpansion(ByVal xString As String) As String diff --git a/iBMSC/MainWindow.vb b/iBMSC/MainWindow.vb index 47fed487a..395bcac13 100644 --- a/iBMSC/MainWindow.vb +++ b/iBMSC/MainWindow.vb @@ -864,7 +864,7 @@ Public Class MainWindow End If If xRandomFile Then - xStrAll = SaveRandomBMS() + xStrAll = SaveBMS(True) My.Computer.FileSystem.WriteAllText(FileName, xStrAll, False, TextEncoding) If BeepWhileSaved Then Beep() End If @@ -3187,12 +3187,26 @@ RestartSorting: xSorted = False End Sub Private Sub THGenre_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles _ - THGenre.TextChanged, THTitle.TextChanged, THArtist.TextChanged, THPlayLevel.TextChanged, CHRank.SelectedIndexChanged, TExpansion.TextChanged, + THGenre.TextChanged, THTitle.TextChanged, THArtist.TextChanged, THPlayLevel.TextChanged, CHRank.SelectedIndexChanged, THSubTitle.TextChanged, THSubArtist.TextChanged, THStageFile.TextChanged, THBanner.TextChanged, THBackBMP.TextChanged, CHDifficulty.SelectedIndexChanged, THExRank.TextChanged, THTotal.TextChanged, THComment.TextChanged If IsSaved Then SetIsSaved(False) End Sub + Private Sub TExpansion_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TExpansion.TextChanged + THGenre_TextChanged(sender, e) + If GhostExpansionModify Then + Select Case GhostMode + Case 1 + GhostMode = 0 + Case 2 + SwapGhostNotes() + GhostMode = 0 + End Select + GhostExpansionModify = False + End If + End Sub + Private Sub CHLnObj_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CHLnObj.SelectedIndexChanged If IsSaved Then SetIsSaved(False) LnObj = CHLnObj.SelectedIndex @@ -5148,11 +5162,11 @@ case2: Dim xI0 As Integer Select Case GhostMode Case 1 Dim xResult As MsgBoxResult = MsgBox(Strings.Messages.GhostNotesModifyExpansion1, MsgBoxStyle.YesNo) - If xResult = MsgBoxResult.No Then Exit Sub + If xResult = MsgBoxResult.No Then GhostExpansionModify = True : Exit Sub GhostMode = 0 Case 2 Dim xResult As MsgBoxResult = MsgBox(Strings.Messages.GhostNotesModifyExpansion2, MsgBoxStyle.YesNo) - If xResult = MsgBoxResult.No Then Exit Sub + If xResult = MsgBoxResult.No Then GhostExpansionModify = True : Exit Sub SaveBMS() Expand_RemoveGhostNotes() End Select From b6ed980b1ebc28a5ae8c136d1b8da4ced1676857 Mon Sep 17 00:00:00 2001 From: psyk2642 <60137590+psyk2642@users.noreply.github.com> Date: Sat, 19 Mar 2022 12:27:33 +0800 Subject: [PATCH 057/257] Update MainWindow.vb --- iBMSC/MainWindow.vb | 1 + 1 file changed, 1 insertion(+) diff --git a/iBMSC/MainWindow.vb b/iBMSC/MainWindow.vb index 395bcac13..8a1f404f7 100644 --- a/iBMSC/MainWindow.vb +++ b/iBMSC/MainWindow.vb @@ -89,6 +89,7 @@ Public Class MainWindow ' 0 - Default, ghost notes entirely uneditable ' 1 - Ghost notes loaded with expectation of editing them ' 2 - Ghost notes loaded as main notes and main notes temporarily changed to ghost notes + Dim GhostExpansionModify As Boolean = False Dim GhostEdit As Boolean = False 'Variables for Drag/Drop From 404a8301a365697264f08c18c318479cb0a7055f Mon Sep 17 00:00:00 2001 From: psyk2642 <60137590+psyk2642@users.noreply.github.com> Date: Sat, 19 Mar 2022 22:20:16 +0800 Subject: [PATCH 058/257] Update README.md More descriptions for the added dialog/option windows --- README.md | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index c0942e644..8d43daa51 100644 --- a/README.md +++ b/README.md @@ -13,19 +13,20 @@ Listed in the order added. * Fixed the total note count on the toolbar. * Reorganized the sidebar so you can tab between textboxes properly (mostly). * Prevented notes in Expansion Code from being loaded. -## Functionality + +## Functionalities * Added Random and S-Random. For S-random, note overlapping can occur. * Added a display for recommended #TOTAL. * The application now saves the option "Disable Vertical Moves". * Changed the temporary bms file extension from .bms to .bmsc. * Added advanced statistics (Ctrl+Shift+T). -* Added custom color for a specified range of notes. XML must be typed out manually for now. The added window currently does nothing. * Removed restriction for drag and dropping files, as well as opening files. Mainly for opening bms template files, not tested thoroughly. * Added note search function (goto measure except it's goto note). One note per VPosition only. * Added sort function. Selected notes are sorted based on their VPosition and Value. * Added mBMplay as a default player. * Added support for #RANDOM. Supports expansion field and main data field only. Not tested thoroughly, nested #RANDOM in "Modify Section" only. Accessible via the "Select Section" button in Expansion Code or via Ctrl+R. * Added color overriding options where you can specify a range of notes to appear a specific color, such as red notes for drums and green notes for the piano. Accessible via the Options tab or via Shift+F12. + ## Keyboard shortcuts * Changed keybinding to allow note placement between D1 and D8. * Numpad keys are now assigned to 2P lanes. @@ -47,4 +48,19 @@ Listed in the order added. * Added advanced statistics (Ctrl+Shift+T). * Added keyboard shortcuts for previewing and replacing keysounds in the Sounds List (Spacebar to preview, enter to replace). * Added "Select Section" (Ctrl+R). -* Added color overriding options (Shift+F12). \ No newline at end of file +* Added color overriding options (Shift+F12). + +## New dialog/option boxes +### Advanced Statistics +* Displays note statistics over individual lanes from A1 to D8. +* Displays note usages, including #WAV assigned notes with 0 note count and #WAV unassigned notes with non-zero note count. + +### Select Expansion Code +* Display ghost notes: Select an #if section to display its notes in ghost form. +* Display ghost notes (All): Display all notes in ghost form. +* Modify notes: Select an #if section and jump straight to modifying them. +* Modify section: Opens a instance of pBMSC, allowing you to modify the #if section individually. +* Remove ghost notes: Remove all ghost notes. + +### Visual Override Options +* Creates a list of note ranges with a specified color and replaces specified notes' display color. \ No newline at end of file From 47c31382d08544026ce674d7cccd66c720d63191 Mon Sep 17 00:00:00 2001 From: psyk2642 <60137590+psyk2642@users.noreply.github.com> Date: Sun, 20 Mar 2022 00:14:36 +0800 Subject: [PATCH 059/257] Srandom Sort Fix + Note sorting code optimization Fixed overlapping notes during SRandom sort (ignores unselected notes). --- iBMSC/MainWindow.vb | 78 +++++++++++++++++++++------------------------ 1 file changed, 37 insertions(+), 41 deletions(-) diff --git a/iBMSC/MainWindow.vb b/iBMSC/MainWindow.vb index 8a1f404f7..435446061 100644 --- a/iBMSC/MainWindow.vb +++ b/iBMSC/MainWindow.vb @@ -1337,8 +1337,6 @@ EndSearch: Next End Sub - - Public Sub ExceptionSave(ByVal Path As String) SaveiBMSC(Path) End Sub @@ -2502,7 +2500,7 @@ StartCount: If Not NTInput Then ' Modify xniArray based on range ' Out of range - If xRangeL > niD8 Or xRangeU < niA1 Then GoTo DoNothing + If xRangeL > xniArray0(UBound(xniArray0)) Or xRangeU < xniArray0(0) Then GoTo DoNothing ' Semi-in Range ' Cut off left side @@ -2511,7 +2509,7 @@ StartCount: If Not NTInput Then GoTo MirrorSkip1 End If - For xI1 = 0 To xniArray0.Length + For xI1 = 0 To UBound(xniArray0) If xniArray0(xI1) = xRangeL Then xRangeL = xI1 Exit For @@ -2525,7 +2523,7 @@ MirrorSkip1: GoTo MirrorSkip2 End If - For xI1 = 0 To xniArray0.Length + For xI1 = 0 To UBound(xniArray0) If xniArray0(xI1) = xRangeU Then xRangeU = xI1 + 1 Exit For @@ -2632,7 +2630,7 @@ DoNothing: ' Modify xniArray based on range ' Out of range - If xRangeL > niD8 Or xRangeU < niA1 Then GoTo DoNothing + If xRangeL > xniArray0(UBound(xniArray0)) Or xRangeU < xniArray0(0) Then GoTo DoNothing ' Semi-in Range ' Cut off left side @@ -2641,7 +2639,7 @@ DoNothing: GoTo Skip1 End If - For xI1 = 0 To xniArray0.Length + For xI1 = 0 To UBound(xniArray0) If xniArray0(xI1) = xRangeL Then xRangeL = xI1 Exit For @@ -2655,7 +2653,7 @@ Skip1: GoTo Skip2 End If - For xI1 = 0 To xniArray0.Length + For xI1 = 0 To UBound(xniArray0) If xniArray0(xI1) = xRangeU Then xRangeU = xI1 + 1 Exit For @@ -2721,7 +2719,7 @@ DoNothing: ' Modify xniArray based on range ' Out of range - If xRangeL > niD8 Or xRangeU < niA1 Then GoTo DoNothing + If xRangeL > xniArray0(UBound(xniArray0)) Or xRangeU < xniArray0(0) Then GoTo DoNothing ' Semi-in Range ' Cut off left side @@ -2730,7 +2728,7 @@ DoNothing: GoTo Skip1 End If - For xI1 = 0 To xniArray0.Length + For xI1 = 0 To UBound(xniArray0) If xniArray0(xI1) = xRangeL Then xRangeL = xI1 Exit For @@ -2744,7 +2742,7 @@ Skip1: GoTo Skip2 End If - For xI1 = 0 To xniArray0.Length + For xI1 = 0 To UBound(xniArray0) If xniArray0(xI1) = xRangeU Then xRangeU = xI1 + 1 Exit For @@ -2757,34 +2755,31 @@ Skip2: For xI1 = 0 To xRangeU - xRangeL - 1 xniArray1(xI1) = xniArray0(xI1 + xRangeL) Next - - Dim xCol As Integer - For xI1 = 1 To UBound(Notes) - If Not Notes(xI1).Selected Or Notes(xI1).Ghost Then Continue For - xCol = xniArray1(Math.Floor(xniArray1.Length * Rnd())) - Me.RedoMoveNote(Notes(xI1), xCol, Notes(xI1).VPosition, xUndo, xRedo) - Notes(xI1).ColumnIndex = xCol - Next - - ' Check for no clash with other notes. Freezes the application when there are too many notes in one VPosition - ' Dim xClash As Boolean - ' For xI1 = 1 To UBound(Notes) - ' If Not Notes(xI1).Selected Then Continue For - ' xClash = True - ' xCol = Notes(xI1).ColumnIndex - ' Do While xClash = True - ' xClash = False - ' For xI2 = 1 To UBound(Notes) - ' If Notes(xI2).VPosition = Notes(xI1).VPosition AndAlso Notes(xI2).ColumnIndex = xCol Then - ' xClash = True - ' xCol = xniArray1(Int((xniArray1.Length - 1) * Rnd())) - ' End If - ' Next - ' Loop - ' If Notes(xI1).ColumnIndex = xCol Then Exit For - ' Me.RedoMoveNote(Notes(xI1), xCol, Notes(xI1).VPosition, xUndo, xRedo) - ' Notes(xI1).ColumnIndex = xCol - ' Next + Dim xniArray1R = xniArray1.Clone + ' Find array of indexes of selected notes in the same vPosition + xI1 = 1 + Dim xI1Arr(-1) As Integer + Dim vPos As Integer + ' Find the first index of selected notes + Do While xI1 <= UBound(Notes) + If Not Notes(xI1).Selected Or Notes(xI1).Ghost Or Notes(xI1).ColumnIndex < xniArray1(0) Or Notes(xI1).ColumnIndex > xniArray1(UBound(xniArray1)) Then xI1 += 1 : Continue Do + ' Begin building array until vPosition changes + vPos = Notes(xI1).VPosition + Do While xI1 <= UBound(Notes) AndAlso Notes(xI1).VPosition = vPos + If Not Notes(xI1).Selected Or Notes(xI1).Ghost Or Notes(xI1).ColumnIndex < xniArray1(0) Or Notes(xI1).ColumnIndex > xniArray1(UBound(xniArray1)) Then xI1 += 1 : Continue Do + ReDim Preserve xI1Arr(xI1Arr.Length) + xI1Arr(UBound(xI1Arr)) = xI1 + xI1 += 1 + Loop + Shuffle(xniArray1R) + For xI2 = 0 To UBound(xI1Arr) + Dim xI2I = xI1Arr(xI2) + Me.RedoMoveNote(Notes(xI2I), xniArray1R(xI2), Notes(xI2I).VPosition, xUndo, xRedo) + Notes(xI2I).ColumnIndex = xniArray1R(xI2) + Next + ReDim xI1Arr(-1) + xniArray1R = xniArray1.Clone + Loop DoNothing: @@ -5037,14 +5032,15 @@ case2: Dim xI0 As Integer Dim temp As T Dim j As Int32 - For i As Int32 = items.Count To 1 Step -1 + For i = items.Count To 2 Step -1 ' Pick an item for position i. j = Math.Floor(i * Rnd()) ' Swap + i -= 1 temp = items(i) items(i) = items(j) items(j) = temp - Next i + Next Return items End Function From 665e2d72c78eb0ae69f142699b32dd453c222a96 Mon Sep 17 00:00:00 2001 From: psyk2642 <60137590+psyk2642@users.noreply.github.com> Date: Sun, 20 Mar 2022 00:19:49 +0800 Subject: [PATCH 060/257] Changed Scroll column display shortcut to Alt+R Due to conflict with Conversion menu shortcut (Alt+C) --- iBMSC/MainWindow.designer.vb | 65 ++++++++++++++++++------------------ iBMSC/MainWindow.resx | 10 ++++-- 2 files changed, 40 insertions(+), 35 deletions(-) diff --git a/iBMSC/MainWindow.designer.vb b/iBMSC/MainWindow.designer.vb index e22b550f2..41f95c0b1 100644 --- a/iBMSC/MainWindow.designer.vb +++ b/iBMSC/MainWindow.designer.vb @@ -25,16 +25,16 @@ Partial Class MainWindow Me.TBLangDef = New System.Windows.Forms.ToolStripMenuItem() Me.TBLangRefresh = New System.Windows.Forms.ToolStripMenuItem() Me.ToolStripSeparator9 = New System.Windows.Forms.ToolStripSeparator() - Me.mnLanguage = New System.Windows.Forms.ToolStripMenuItem() Me.TBLanguage = New System.Windows.Forms.ToolStripDropDownButton() + Me.mnLanguage = New System.Windows.Forms.ToolStripMenuItem() Me.cmnTheme = New System.Windows.Forms.ContextMenuStrip(Me.components) Me.TBThemeDef = New System.Windows.Forms.ToolStripMenuItem() Me.TBThemeSave = New System.Windows.Forms.ToolStripMenuItem() Me.TBThemeRefresh = New System.Windows.Forms.ToolStripMenuItem() Me.TBThemeLoadComptability = New System.Windows.Forms.ToolStripMenuItem() Me.ToolStripSeparator6 = New System.Windows.Forms.ToolStripSeparator() - Me.TBTheme = New System.Windows.Forms.ToolStripDropDownButton() Me.mnTheme = New System.Windows.Forms.ToolStripMenuItem() + Me.TBTheme = New System.Windows.Forms.ToolStripDropDownButton() Me.Timer1 = New System.Windows.Forms.Timer(Me.components) Me.Menu1 = New System.Windows.Forms.ContextMenuStrip(Me.components) Me.MInsert = New System.Windows.Forms.ToolStripMenuItem() @@ -124,11 +124,11 @@ Partial Class MainWindow Me.POBRandom = New System.Windows.Forms.ToolStripMenuItem() Me.POBSRandom = New System.Windows.Forms.ToolStripMenuItem() Me.POBSort = New System.Windows.Forms.ToolStripMenuItem() - Me.POConvert = New System.Windows.Forms.ToolStripDropDownButton() Me.mnPreview = New System.Windows.Forms.ToolStripMenuItem() Me.mnPlayB = New System.Windows.Forms.ToolStripMenuItem() Me.mnPlay = New System.Windows.Forms.ToolStripMenuItem() Me.mnStop = New System.Windows.Forms.ToolStripMenuItem() + Me.POConvert = New System.Windows.Forms.ToolStripDropDownButton() Me.TBMain = New System.Windows.Forms.ToolStrip() Me.TBNew = New System.Windows.Forms.ToolStripButton() Me.TBOpen = New System.Windows.Forms.ToolStripSplitButton() @@ -448,7 +448,7 @@ Partial Class MainWindow ' Me.cmnLanguage.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.TBLangDef, Me.TBLangRefresh, Me.ToolStripSeparator9}) Me.cmnLanguage.Name = "cmnLanguage" - Me.cmnLanguage.OwnerItem = Me.TBLanguage + Me.cmnLanguage.OwnerItem = Me.mnLanguage Me.cmnLanguage.Size = New System.Drawing.Size(121, 54) ' 'TBLangDef @@ -469,14 +469,6 @@ Partial Class MainWindow Me.ToolStripSeparator9.Name = "ToolStripSeparator9" Me.ToolStripSeparator9.Size = New System.Drawing.Size(117, 6) ' - 'mnLanguage - ' - Me.mnLanguage.DropDown = Me.cmnLanguage - Me.mnLanguage.Image = Global.iBMSC.My.Resources.Resources.x16Language - Me.mnLanguage.Name = "mnLanguage" - Me.mnLanguage.Size = New System.Drawing.Size(253, 22) - Me.mnLanguage.Text = "&Language" - ' 'TBLanguage ' Me.TBLanguage.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image @@ -487,11 +479,19 @@ Partial Class MainWindow Me.TBLanguage.Size = New System.Drawing.Size(29, 22) Me.TBLanguage.Text = "Language" ' + 'mnLanguage + ' + Me.mnLanguage.DropDown = Me.cmnLanguage + Me.mnLanguage.Image = Global.iBMSC.My.Resources.Resources.x16Language + Me.mnLanguage.Name = "mnLanguage" + Me.mnLanguage.Size = New System.Drawing.Size(253, 22) + Me.mnLanguage.Text = "&Language" + ' 'cmnTheme ' Me.cmnTheme.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.TBThemeDef, Me.TBThemeSave, Me.TBThemeRefresh, Me.TBThemeLoadComptability, Me.ToolStripSeparator6}) Me.cmnTheme.Name = "cmnLanguage" - Me.cmnTheme.OwnerItem = Me.mnTheme + Me.cmnTheme.OwnerItem = Me.TBTheme Me.cmnTheme.Size = New System.Drawing.Size(246, 98) ' 'TBThemeDef @@ -525,6 +525,14 @@ Partial Class MainWindow Me.ToolStripSeparator6.Name = "ToolStripSeparator6" Me.ToolStripSeparator6.Size = New System.Drawing.Size(242, 6) ' + 'mnTheme + ' + Me.mnTheme.DropDown = Me.cmnTheme + Me.mnTheme.Image = Global.iBMSC.My.Resources.Resources.x16Theme + Me.mnTheme.Name = "mnTheme" + Me.mnTheme.Size = New System.Drawing.Size(253, 22) + Me.mnTheme.Text = "&Theme" + ' 'TBTheme ' Me.TBTheme.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image @@ -535,14 +543,6 @@ Partial Class MainWindow Me.TBTheme.Size = New System.Drawing.Size(29, 22) Me.TBTheme.Text = "Theme" ' - 'mnTheme - ' - Me.mnTheme.DropDown = Me.cmnTheme - Me.mnTheme.Image = Global.iBMSC.My.Resources.Resources.x16Theme - Me.mnTheme.Name = "mnTheme" - Me.mnTheme.Size = New System.Drawing.Size(253, 22) - Me.mnTheme.Text = "&Theme" - ' 'Timer1 ' Me.Timer1.Interval = 15 @@ -1025,7 +1025,7 @@ Partial Class MainWindow Me.CGSCROLL.CheckOnClick = True Me.CGSCROLL.CheckState = System.Windows.Forms.CheckState.Checked Me.CGSCROLL.Name = "CGSCROLL" - Me.CGSCROLL.ShortcutKeys = CType((System.Windows.Forms.Keys.Alt Or System.Windows.Forms.Keys.C), System.Windows.Forms.Keys) + Me.CGSCROLL.ShortcutKeys = CType((System.Windows.Forms.Keys.Alt Or System.Windows.Forms.Keys.R), System.Windows.Forms.Keys) Me.CGSCROLL.Size = New System.Drawing.Size(210, 22) Me.CGSCROLL.Text = "SCROLL" ' @@ -1133,7 +1133,6 @@ Partial Class MainWindow ' Me.cmnConversion.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.POBLong, Me.POBShort, Me.POBLongShort, Me.ToolStripSeparator10, Me.POBHidden, Me.POBVisible, Me.POBHiddenVisible, Me.ToolStripSeparator11, Me.POBModify, Me.POBMirror, Me.POBFlip, Me.POBRandom, Me.POBSRandom, Me.POBSort}) Me.cmnConversion.Name = "cmnLanguage" - Me.cmnConversion.OwnerItem = Me.mnConversion Me.cmnConversion.Size = New System.Drawing.Size(222, 280) ' 'POBLong @@ -1232,16 +1231,6 @@ Partial Class MainWindow Me.POBSort.Size = New System.Drawing.Size(221, 22) Me.POBSort.Text = "S&ort" ' - 'POConvert - ' - Me.POConvert.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image - Me.POConvert.DropDown = Me.cmnConversion - Me.POConvert.Image = Global.iBMSC.My.Resources.Resources.ConvertNotes - Me.POConvert.ImageTransparentColor = System.Drawing.Color.Magenta - Me.POConvert.Name = "POConvert" - Me.POConvert.Size = New System.Drawing.Size(29, 22) - Me.POConvert.Text = "Convert Notes" - ' 'mnPreview ' Me.mnPreview.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.mnPlayB, Me.mnPlay, Me.mnStop}) @@ -1273,6 +1262,16 @@ Partial Class MainWindow Me.mnStop.Size = New System.Drawing.Size(201, 22) Me.mnStop.Text = "&Stop" ' + 'POConvert + ' + Me.POConvert.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image + Me.POConvert.DropDown = Me.cmnConversion + Me.POConvert.Image = Global.iBMSC.My.Resources.Resources.ConvertNotes + Me.POConvert.ImageTransparentColor = System.Drawing.Color.Magenta + Me.POConvert.Name = "POConvert" + Me.POConvert.Size = New System.Drawing.Size(29, 22) + Me.POConvert.Text = "Convert Notes" + ' 'TBMain ' Me.TBMain.AccessibleRole = System.Windows.Forms.AccessibleRole.ToolBar diff --git a/iBMSC/MainWindow.resx b/iBMSC/MainWindow.resx index 9b4901597..e15a6c318 100644 --- a/iBMSC/MainWindow.resx +++ b/iBMSC/MainWindow.resx @@ -151,7 +151,7 @@ Lo9hEfPR4tDoA7ZnpJErDjUlMUPqvnh9TQVvxlvpK2h0/as0r4Y/yDx4Rs89qo3gXkWoNMK6CmOskxnD TUooNcb6sllV+tenZlTZqcxj9tsmxR+yRzXfGW3ZrL6WZGbJhVTrD1uSmLZ1MTazqHc9co1G6p8WoP4H 4aQ0/lAENzEdbB5jBnndiJozJQuk0UzKolmf1iS64JokEHdy3x25XRU0eLPS/86VEndVdeTCCNHRN2wp - AXVPzyJh+EPEDO0wIH5oFxREhFsJHa+8QfszjT3N/dScarO9PctJk8nb8Xy4/SC0rfvQqwjFpUJPyCNt + AXVPzyJh+EPEDO0wIH5oFxREhFsJHa+8QfszjT3N/dScarO9PctJk8Hb8Xy4/SC0rfvQqwjFpUJPyCNt bgoPLwxn8mb8WPNYgNNDO3FqMMSAmKH3dAJci+mgzaAxaAto5nrXU7P66L+4NyVbV/XVBD0caN8PTfte dFeGoinn76hKWIvio6zvjvPefF71TeJvCyikw/xVmiWRQC3D1K2WZ75AnfROWG+9/zd9qp3olm+HOscH 5wQc/EcdgquKLagUukIsJiVv9XuhgLUFLymgJIA2U823dLpWuvH8ZbE3mnJHg1+W++LhzV0Yvr4LN89x @@ -181,7 +181,7 @@ S5a05i9eTJ2G6QWnjJFAH8nvT4CAbMTJOKtJhP3JmdQX0QL+ggXLixYtkkiZzEdVJPNSkjkJ3pa3aNGm dCur1/Uup2fO8bNkjjyz59R9Tl2p1K1GXSxUb/9Vk5nHnjv3jwVWVqvFNjYHSdkzim1soknmwWSMCj79 7H82fbN6jTBZs/q5yVD/65pM5rx5c1Lffts+2dLyTRGTSe38/9so9ROb1TjU+FiTIcfNmApM7fiJm45G - +x91iyTPokfBbgAAAABJRU5ErkJggg== + +x9oASTO7OvyAgAAAABJRU5ErkJggg== @@ -190,6 +190,12 @@ 931, 2 + + 1022, 2 + + + 931, 2 + 1120, 2 From 22ee7d9270fb58302d391872ec2eb9e00409370d Mon Sep 17 00:00:00 2001 From: psyk2642 <60137590+psyk2642@users.noreply.github.com> Date: Sun, 20 Mar 2022 00:21:42 +0800 Subject: [PATCH 061/257] Update AssemblyInfo.vb --- iBMSC/My Project/AssemblyInfo.vb | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/iBMSC/My Project/AssemblyInfo.vb b/iBMSC/My Project/AssemblyInfo.vb index a49a84d3c..a5c6187b9 100644 --- a/iBMSC/My Project/AssemblyInfo.vb +++ b/iBMSC/My Project/AssemblyInfo.vb @@ -11,7 +11,7 @@ Imports System.Runtime.InteropServices ' Review the values of the assembly attributes - + @@ -33,7 +33,7 @@ Imports System.Runtime.InteropServices ' by using the '*' as shown below: ' - - + + \ No newline at end of file From 50d37063a2852edc0ed038f1db66d4b29b4aaee7 Mon Sep 17 00:00:00 2001 From: psyk2642 <60137590+psyk2642@users.noreply.github.com> Date: Sun, 20 Mar 2022 00:26:39 +0800 Subject: [PATCH 062/257] Update README.md --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 8d43daa51..e0d7a3f4d 100644 --- a/README.md +++ b/README.md @@ -15,7 +15,7 @@ Listed in the order added. * Prevented notes in Expansion Code from being loaded. ## Functionalities -* Added Random and S-Random. For S-random, note overlapping can occur. +* Added Random and S-Random. * Added a display for recommended #TOTAL. * The application now saves the option "Disable Vertical Moves". * Changed the temporary bms file extension from .bms to .bmsc. @@ -38,7 +38,7 @@ Listed in the order added. * Added shortcuts for toggling lanes. * Alt+B - BPM lane * Alt+S - Stop lane - * Alt+C - Scroll lane + * Alt+R - Scroll lane * Alt+G - BGA/Layer/Poor * Added shortcuts for the panel splitter (Alt+Left and Alt+Right). * Added Options shortcut From d57dd0eb84ad430c632ba3acef8b8108d8106129 Mon Sep 17 00:00:00 2001 From: psyk2642 <60137590+psyk2642@users.noreply.github.com> Date: Sun, 20 Mar 2022 08:22:34 +0800 Subject: [PATCH 063/257] Added note placement support for PMS charts When a PMS theme is used, numbers 1 to 9 will assign the notes to their respective lanes. --- iBMSC/MainWindow.designer.vb | 23 +++++----- iBMSC/MainWindow.resx | 10 +---- iBMSC/MainWindow.vb | 51 +++++++++++++++++++--- iBMSC/PanelDraw.vb | 2 + iBMSC/PanelEvents.vb | 83 +++++++++++++++--------------------- 5 files changed, 96 insertions(+), 73 deletions(-) diff --git a/iBMSC/MainWindow.designer.vb b/iBMSC/MainWindow.designer.vb index 41f95c0b1..559271e39 100644 --- a/iBMSC/MainWindow.designer.vb +++ b/iBMSC/MainWindow.designer.vb @@ -124,11 +124,11 @@ Partial Class MainWindow Me.POBRandom = New System.Windows.Forms.ToolStripMenuItem() Me.POBSRandom = New System.Windows.Forms.ToolStripMenuItem() Me.POBSort = New System.Windows.Forms.ToolStripMenuItem() + Me.POConvert = New System.Windows.Forms.ToolStripDropDownButton() Me.mnPreview = New System.Windows.Forms.ToolStripMenuItem() Me.mnPlayB = New System.Windows.Forms.ToolStripMenuItem() Me.mnPlay = New System.Windows.Forms.ToolStripMenuItem() Me.mnStop = New System.Windows.Forms.ToolStripMenuItem() - Me.POConvert = New System.Windows.Forms.ToolStripDropDownButton() Me.TBMain = New System.Windows.Forms.ToolStrip() Me.TBNew = New System.Windows.Forms.ToolStripButton() Me.TBOpen = New System.Windows.Forms.ToolStripSplitButton() @@ -1133,6 +1133,7 @@ Partial Class MainWindow ' Me.cmnConversion.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.POBLong, Me.POBShort, Me.POBLongShort, Me.ToolStripSeparator10, Me.POBHidden, Me.POBVisible, Me.POBHiddenVisible, Me.ToolStripSeparator11, Me.POBModify, Me.POBMirror, Me.POBFlip, Me.POBRandom, Me.POBSRandom, Me.POBSort}) Me.cmnConversion.Name = "cmnLanguage" + Me.cmnConversion.OwnerItem = Me.mnConversion Me.cmnConversion.Size = New System.Drawing.Size(222, 280) ' 'POBLong @@ -1231,6 +1232,16 @@ Partial Class MainWindow Me.POBSort.Size = New System.Drawing.Size(221, 22) Me.POBSort.Text = "S&ort" ' + 'POConvert + ' + Me.POConvert.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image + Me.POConvert.DropDown = Me.cmnConversion + Me.POConvert.Image = Global.iBMSC.My.Resources.Resources.ConvertNotes + Me.POConvert.ImageTransparentColor = System.Drawing.Color.Magenta + Me.POConvert.Name = "POConvert" + Me.POConvert.Size = New System.Drawing.Size(29, 22) + Me.POConvert.Text = "Convert Notes" + ' 'mnPreview ' Me.mnPreview.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.mnPlayB, Me.mnPlay, Me.mnStop}) @@ -1262,16 +1273,6 @@ Partial Class MainWindow Me.mnStop.Size = New System.Drawing.Size(201, 22) Me.mnStop.Text = "&Stop" ' - 'POConvert - ' - Me.POConvert.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image - Me.POConvert.DropDown = Me.cmnConversion - Me.POConvert.Image = Global.iBMSC.My.Resources.Resources.ConvertNotes - Me.POConvert.ImageTransparentColor = System.Drawing.Color.Magenta - Me.POConvert.Name = "POConvert" - Me.POConvert.Size = New System.Drawing.Size(29, 22) - Me.POConvert.Text = "Convert Notes" - ' 'TBMain ' Me.TBMain.AccessibleRole = System.Windows.Forms.AccessibleRole.ToolBar diff --git a/iBMSC/MainWindow.resx b/iBMSC/MainWindow.resx index e15a6c318..674223cc8 100644 --- a/iBMSC/MainWindow.resx +++ b/iBMSC/MainWindow.resx @@ -151,7 +151,7 @@ Lo9hEfPR4tDoA7ZnpJErDjUlMUPqvnh9TQVvxlvpK2h0/as0r4Y/yDx4Rs89qo3gXkWoNMK6CmOskxnD TUooNcb6sllV+tenZlTZqcxj9tsmxR+yRzXfGW3ZrL6WZGbJhVTrD1uSmLZ1MTazqHc9co1G6p8WoP4H 4aQ0/lAENzEdbB5jBnndiJozJQuk0UzKolmf1iS64JokEHdy3x25XRU0eLPS/86VEndVdeTCCNHRN2wp - AXVPzyJh+EPEDO0wIH5oFxREhFsJHa+8QfszjT3N/dScarO9PctJk8Hb8Xy4/SC0rfvQqwjFpUJPyCNt + AXVPzyJh+EPEDO0wIH5oFxREhFsJHa+8QfszjT3N/dScarO9PctJk8bb8Xy4/SC0rfvQqwjFpUJPyCNt bgoPLwxn8mb8WPNYgNNDO3FqMMSAmKH3dAJci+mgzaAxaAto5nrXU7P66L+4NyVbV/XVBD0caN8PTfte dFeGoinn76hKWIvio6zvjvPefF71TeJvCyikw/xVmiWRQC3D1K2WZ75AnfROWG+9/zd9qp3olm+HOscH 5wQc/EcdgquKLagUukIsJiVv9XuhgLUFLymgJIA2U823dLpWuvH8ZbE3mnJHg1+W++LhzV0Yvr4LN89x @@ -181,7 +181,7 @@ S5a05i9eTJ2G6QWnjJFAH8nvT4CAbMTJOKtJhP3JmdQX0QL+ggXLixYtkkiZzEdVJPNSkjkJ3pa3aNGm dCur1/Uup2fO8bNkjjyz59R9Tl2p1K1GXSxUb/9Vk5nHnjv3jwVWVqvFNjYHSdkzim1soknmwWSMCj79 7H82fbN6jTBZs/q5yVD/65pM5rx5c1Lffts+2dLyTRGTSe38/9so9ROb1TjU+FiTIcfNmApM7fiJm45G - +x9oASTO7OvyAgAAAABJRU5ErkJggg== + +x9M7STM0x0MggAAAABJRU5ErkJggg== @@ -190,12 +190,6 @@ 931, 2 - - 1022, 2 - - - 931, 2 - 1120, 2 diff --git a/iBMSC/MainWindow.vb b/iBMSC/MainWindow.vb index 435446061..454b6a53a 100644 --- a/iBMSC/MainWindow.vb +++ b/iBMSC/MainWindow.vb @@ -194,7 +194,7 @@ Public Class MainWindow 'Dim gA8 As Boolean = False Dim iPlayer As Integer = 0 Dim gColumns As Integer = 46 - + Dim gXKeyMode As String = "SP" ' Determines from column width 7key mode, 9key mode or 14key mode '----Visual Options Dim vo As New visualSettings() @@ -2483,7 +2483,17 @@ StartCount: If Not NTInput Then ' Array 0: Unmodified array ' Array 1: Modified array based on range ' Array R: Array 1 reversed - Dim xniArray0 = New Integer() {niA1, niA2, niA3, niA4, niA5, niA6, niA7, niA8, niD1, niD2, niD3, niD4, niD5, niD6, niD7, niD8} + Dim xniArray0() As Integer + Select Case gXKeyMode + Case "SP" + xniArray0 = {niA1, niA2, niA3, niA4, niA5, niA6, niA7, niA8} + Case "PMS" + xniArray0 = {niA2, niA3, niA4, niA5, niA6, niD2, niD3, niD4, niD5} + Case "DP" + xniArray0 = {niA1, niA2, niA3, niA4, niA5, niA6, niA7, niA8, niD1, niD2, niD3, niD4, niD5, niD6, niD7, niD8} + Case Else + xniArray0 = {niA1, niA2, niA3, niA4, niA5, niA6, niA7, niA8} + End Select ' Dim xniArray1 = Integer() ' xniArray0 ' New function: Declare an array to see the range of selected notes. B columns ignored. @@ -2568,6 +2578,7 @@ DoNothing: Private Sub POBFlip_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles POBFlip.Click + If gXKeyMode <> "DP" Then Exit Sub Dim xI1 As Integer Dim xI2 As Integer Dim xUndo As UndoRedo.LinkedURCmd = Nothing @@ -2613,7 +2624,17 @@ DoNothing: ' Array 0: Unmodified array ' Array 1: Modified array based on range ' Array R: Array 1 randomized - Dim xniArray0 = New Integer() {niA1, niA2, niA3, niA4, niA5, niA6, niA7, niA8, niD1, niD2, niD3, niD4, niD5, niD6, niD7, niD8} + Dim xniArray0() As Integer + Select Case gXKeyMode + Case "SP" + xniArray0 = {niA1, niA2, niA3, niA4, niA5, niA6, niA7, niA8} + Case "PMS" + xniArray0 = {niA2, niA3, niA4, niA5, niA6, niD2, niD3, niD4, niD5} + Case "DP" + xniArray0 = {niA1, niA2, niA3, niA4, niA5, niA6, niA7, niA8, niD1, niD2, niD3, niD4, niD5, niD6, niD7, niD8} + Case Else + xniArray0 = {niA1, niA2, niA3, niA4, niA5, niA6, niA7, niA8} + End Select ' Dim xniArray1 = Integer() ' xniArray0 ' New function: Declare an array to see the range of selected notes. B columns ignored. @@ -2702,7 +2723,17 @@ DoNothing: ' Array 0: Unmodified array ' Array 1: Modified array based on range - Dim xniArray0 = New Integer() {niA1, niA2, niA3, niA4, niA5, niA6, niA7, niA8, niD1, niD2, niD3, niD4, niD5, niD6, niD7, niD8} + Dim xniArray0() As Integer + Select Case gXKeyMode + Case "SP" + xniArray0 = {niA1, niA2, niA3, niA4, niA5, niA6, niA7, niA8} + Case "PMS" + xniArray0 = {niA2, niA3, niA4, niA5, niA6, niD2, niD3, niD4, niD5} + Case "DP" + xniArray0 = {niA1, niA2, niA3, niA4, niA5, niA6, niA7, niA8, niD1, niD2, niD3, niD4, niD5, niD6, niD7, niD8} + Case Else + xniArray0 = {niA1, niA2, niA3, niA4, niA5, niA6, niA7, niA8} + End Select ' Dim xniArray1 = Integer() ' xniArray0 ' New function: Declare an array to see the range of selected notes. B columns ignored. @@ -2796,7 +2827,17 @@ DoNothing: Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo ' Array 1: Unmodified array - Dim xniArray1 = New Integer() {niA1, niA2, niA3, niA4, niA5, niA6, niA7, niA8, niD1, niD2, niD3, niD4, niD5, niD6, niD7, niD8} + Dim xniArray1() As Integer + Select Case gXKeyMode + Case "SP" + xniArray1 = {niA1, niA2, niA3, niA4, niA5, niA6, niA7, niA8} + Case "PMS" + xniArray1 = {niA2, niA3, niA4, niA5, niA6, niD2, niD3, niD4, niD5} + Case "DP" + xniArray1 = {niA1, niA2, niA3, niA4, niA5, niA6, niA7, niA8, niD1, niD2, niD3, niD4, niD5, niD6, niD7, niD8} + Case Else + xniArray1 = {niA1, niA2, niA3, niA4, niA5, niA6, niA7, niA8} + End Select Dim xniArrayLen = xniArray1.Length diff --git a/iBMSC/PanelDraw.vb b/iBMSC/PanelDraw.vb index 82d97d073..7b4ff4512 100644 --- a/iBMSC/PanelDraw.vb +++ b/iBMSC/PanelDraw.vb @@ -48,6 +48,8 @@ Partial Public Class MainWindow 'Bg color DrawBackgroundColor(e1, xTHeight, xTWidth, xPanelHScroll, xI1) + ' Determine current mode: PMS, DP or SP + If GetColumn(5).Width = 0 Then gXKeyMode = "PMS" Else If CHPlayer.SelectedIndex <> 0 Then gXKeyMode = "DP" Else gXKeyMode = "SP" xI1 = DrawPanelLines(e1, xTHeight, xTWidth, xPanelHScroll, xPanelDisplacement, xVSu) diff --git a/iBMSC/PanelEvents.vb b/iBMSC/PanelEvents.vb index 3632592d0..3bf294b79 100644 --- a/iBMSC/PanelEvents.vb +++ b/iBMSC/PanelEvents.vb @@ -199,63 +199,34 @@ Partial Public Class MainWindow MoveToBGM(xUndo, xRedo) ' Ctrl + Keys → 2P lanes - Case Keys.Oem8, Keys.D8 - If My.Computer.Keyboard.CtrlKeyDown Then - MoveToColumn(niD8, xUndo, xRedo) - Else - MoveToColumn(niA1, xUndo, xRedo) - End If Case Keys.Oem1, Keys.D1 - If My.Computer.Keyboard.CtrlKeyDown Then - MoveToColumn(niD1, xUndo, xRedo) - Else - MoveToColumn(niA2, xUndo, xRedo) - End If + If My.Computer.Keyboard.CtrlKeyDown Then MTCFromMode(niA1, niA2, niD1, xUndo, xRedo) Else MTCFromMode(niA2, niA2, niA2, xUndo, xRedo) Case Keys.Oem2, Keys.D2 - If My.Computer.Keyboard.CtrlKeyDown Then - MoveToColumn(niD2, xUndo, xRedo) - Else - MoveToColumn(niA3, xUndo, xRedo) - End If + If My.Computer.Keyboard.CtrlKeyDown Then MTCFromMode(niA2, niA3, niD2, xUndo, xRedo) Else MTCFromMode(niA3, niA3, niA3, xUndo, xRedo) Case Keys.Oem3, Keys.D3 - If My.Computer.Keyboard.CtrlKeyDown Then - MoveToColumn(niD3, xUndo, xRedo) - Else - MoveToColumn(niA4, xUndo, xRedo) - End If + If My.Computer.Keyboard.CtrlKeyDown Then MTCFromMode(niA3, niA4, niD3, xUndo, xRedo) Else MTCFromMode(niA4, niA4, niA4, xUndo, xRedo) Case Keys.Oem4, Keys.D4 - If My.Computer.Keyboard.CtrlKeyDown Then - MoveToColumn(niD4, xUndo, xRedo) - Else - MoveToColumn(niA5, xUndo, xRedo) - End If + If My.Computer.Keyboard.CtrlKeyDown Then MTCFromMode(niA4, niA5, niD4, xUndo, xRedo) Else MTCFromMode(niA5, niA5, niA5, xUndo, xRedo) Case Keys.Oem5, Keys.D5 - If My.Computer.Keyboard.CtrlKeyDown Then - MoveToColumn(niD5, xUndo, xRedo) - Else - MoveToColumn(niA6, xUndo, xRedo) - End If + If My.Computer.Keyboard.CtrlKeyDown Then MTCFromMode(niA5, niA6, niD5, xUndo, xRedo) Else MTCFromMode(niA6, niA6, niA6, xUndo, xRedo) Case Keys.Oem6, Keys.D6 - If My.Computer.Keyboard.CtrlKeyDown Then - MoveToColumn(niD6, xUndo, xRedo) - Else - MoveToColumn(niA7, xUndo, xRedo) - End If + If My.Computer.Keyboard.CtrlKeyDown Then MTCFromMode(niA6, niD2, niD6, xUndo, xRedo) Else MTCFromMode(niA7, niD2, niA7, xUndo, xRedo) Case Keys.Oem7, Keys.D7 - If My.Computer.Keyboard.CtrlKeyDown Then - MoveToColumn(niD7, xUndo, xRedo) - Else - MoveToColumn(niA8, xUndo, xRedo) - End If + If My.Computer.Keyboard.CtrlKeyDown Then MTCFromMode(niA7, niD3, niD7, xUndo, xRedo) Else MTCFromMode(niA8, niD3, niA8, xUndo, xRedo) + Case Keys.Oem8, Keys.D8 + If My.Computer.Keyboard.CtrlKeyDown Then MTCFromMode(niA8, niD4, niD8, xUndo, xRedo) Else MTCFromMode(niA1, niD4, niA1, xUndo, xRedo) + Case Keys.D9 ' Oem9 not a thing apparently + MTCFromMode(-1, niD5, -1, xUndo, xRedo) - Case Keys.Q, Keys.NumPad1 : If Not My.Computer.Keyboard.CtrlKeyDown Then MoveToColumn(niD1, xUndo, xRedo) - Case Keys.W, Keys.NumPad2 : If Not My.Computer.Keyboard.CtrlKeyDown Then MoveToColumn(niD2, xUndo, xRedo) - Case Keys.E, Keys.NumPad3 : If Not My.Computer.Keyboard.CtrlKeyDown Then MoveToColumn(niD3, xUndo, xRedo) - Case Keys.R, Keys.NumPad4 : If Not My.Computer.Keyboard.CtrlKeyDown Then MoveToColumn(niD4, xUndo, xRedo) - Case Keys.T, Keys.NumPad5 : If Not My.Computer.Keyboard.CtrlKeyDown Then MoveToColumn(niD5, xUndo, xRedo) - Case Keys.Y, Keys.NumPad6 : If Not My.Computer.Keyboard.CtrlKeyDown Then MoveToColumn(niD6, xUndo, xRedo) - Case Keys.U, Keys.NumPad7 : If Not My.Computer.Keyboard.CtrlKeyDown Then MoveToColumn(niD7, xUndo, xRedo) - Case Keys.I, Keys.NumPad8 : If Not My.Computer.Keyboard.CtrlKeyDown Then MoveToColumn(niD8, xUndo, xRedo) + Case Keys.Q, Keys.NumPad1 : If Not My.Computer.Keyboard.CtrlKeyDown Then MTCFromMode(niA2, niA2, niD1, xUndo, xRedo) + Case Keys.W, Keys.NumPad2 : If Not My.Computer.Keyboard.CtrlKeyDown Then MTCFromMode(niA3, niA3, niD2, xUndo, xRedo) + Case Keys.E, Keys.NumPad3 : If Not My.Computer.Keyboard.CtrlKeyDown Then MTCFromMode(niA4, niA4, niD3, xUndo, xRedo) + Case Keys.R, Keys.NumPad4 : If Not My.Computer.Keyboard.CtrlKeyDown Then MTCFromMode(niA5, niA5, niD4, xUndo, xRedo) + Case Keys.T, Keys.NumPad5 : If Not My.Computer.Keyboard.CtrlKeyDown Then MTCFromMode(niA6, niA6, niD5, xUndo, xRedo) + Case Keys.Y, Keys.NumPad6 : If Not My.Computer.Keyboard.CtrlKeyDown Then MTCFromMode(niA7, niD2, niD6, xUndo, xRedo) + Case Keys.U, Keys.NumPad7 : If Not My.Computer.Keyboard.CtrlKeyDown Then MTCFromMode(niA8, niD3, niD7, xUndo, xRedo) + Case Keys.I, Keys.NumPad8 : If Not My.Computer.Keyboard.CtrlKeyDown Then MTCFromMode(niA1, niD4, niD8, xUndo, xRedo) + Case Keys.O, Keys.NumPad9 : If Not My.Computer.Keyboard.CtrlKeyDown Then MTCFromMode(-1, niD5, -1, xUndo, xRedo) @@ -283,6 +254,20 @@ Partial Public Class MainWindow POStatusRefresh() End Sub + Private Sub MTCFromMode(ByVal ColSP As Integer, ByVal ColPMS As Integer, ByVal ColDP As Integer, xUndo As UndoRedo.LinkedURCmd, xRedo As UndoRedo.LinkedURCmd) + Dim xCol As Integer + Select Case gXKeyMode + Case "SP" + xCol = ColSP + Case "PMS" + xCol = ColPMS + Case "DP" + xCol = ColDP + End Select + If xCol = -1 Then Exit Sub + MoveToColumn(xCol, xUndo, xRedo) + End Sub + Private Sub SelectAllWithHoveredNoteLabel() For xI1 = 0 To UBound(Notes) Notes(xI1).Selected = IIf(IsLabelMatch(Notes(xI1), KMouseOver), True, Notes(xI1).Selected) From d3541c06a79543920debc5cb7d29c9fde2fef990 Mon Sep 17 00:00:00 2001 From: psyk2642 <60137590+psyk2642@users.noreply.github.com> Date: Sun, 20 Mar 2022 08:32:50 +0800 Subject: [PATCH 064/257] Update README.md --- README.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index e0d7a3f4d..492f6f06b 100644 --- a/README.md +++ b/README.md @@ -6,16 +6,16 @@ See README.md.iBMSC for the original iBMSC README file and REAME.md.uBMSC for th # Changes Listed in the order added. ## Bugfixes -* Added keybindings for lane D1-D8. See **Keyboard Shortcuts** for more information. +* Added keybindings for DP and PMS. See **Keyboard Shortcuts** for more information. * Fixed the search function such that notes on lane A8 and D8 are now searchable. -* Fixed the mirror function such that notes between A1 and D8 are reflected locally. +* Fixed the mirror function such that notes between A1 and D8 are reflected locally. Supports PMS as well. * Fixed the Statistic Label not including notes between D1-D8. Statistic window still not fixed. * Fixed the total note count on the toolbar. * Reorganized the sidebar so you can tab between textboxes properly (mostly). * Prevented notes in Expansion Code from being loaded. ## Functionalities -* Added Random and S-Random. +* Added Random and S-Random. Supports PMS as well. * Added a display for recommended #TOTAL. * The application now saves the option "Disable Vertical Moves". * Changed the temporary bms file extension from .bms to .bmsc. @@ -33,6 +33,7 @@ Listed in the order added. * QWERTYUI keys are also assigned to 2P lanes. * 1 to 7 are now assigned to A2 to A8, and 8 is now assigned to A1. * Ctrl+1 to Ctrl+8 are now assigned to D1-D8. + * For PMS: Number keys 1-9 assign the notes to PMS lanes when a PMS theme is used. * Added Save As keyboard shortcut (Ctrl+Alt+S) * Added recent bms keyboard shortcuts (Alt+1 to Alt+5) * Added shortcuts for toggling lanes. From ec342e4c5f058a4bdb55861f273abc868ef8486b Mon Sep 17 00:00:00 2001 From: psyk2642 <60137590+psyk2642@users.noreply.github.com> Date: Sun, 20 Mar 2022 10:17:31 +0800 Subject: [PATCH 065/257] Added Ctrl+Alt+Click to select all notes with the same label But ignores non-playable note lanes such as BGA --- iBMSC/PanelDraw.vb | 2 +- iBMSC/PanelEvents.vb | 32 ++++++++++++++++++++++---------- iBMSC/PanelKeyStates.vb | 31 +++++++++++++++++++++++-------- 3 files changed, 46 insertions(+), 19 deletions(-) diff --git a/iBMSC/PanelDraw.vb b/iBMSC/PanelDraw.vb index 7b4ff4512..e7c3957cb 100644 --- a/iBMSC/PanelDraw.vb +++ b/iBMSC/PanelDraw.vb @@ -387,7 +387,7 @@ Partial Public Class MainWindow Dim pen = IIf(bAdjustLength, vo.kMouseOverE, vo.kMouseOver) e1.Graphics.DrawRectangle(pen, rect.X, rect.Y, rect.Width - 1, rect.Height - 1) - If ModifierMultiselectActive() Then + If ModifierMultiselectVisibleActive() Or ModifierMultiselectNoteActive() Then For Each note In Notes If IsNoteVisible(note, xTHeight, xVS) AndAlso IsLabelMatch(note, KMouseOver) Then Dim nrect = GetNoteRectangle(note, xTHeight, xHS, xVS) diff --git a/iBMSC/PanelEvents.vb b/iBMSC/PanelEvents.vb index 3bf294b79..4b5d08dbd 100644 --- a/iBMSC/PanelEvents.vb +++ b/iBMSC/PanelEvents.vb @@ -1,4 +1,5 @@ -Imports iBMSC.Editor +Imports System.Linq +Imports iBMSC.Editor Partial Public Class MainWindow @@ -244,7 +245,7 @@ Partial Public Class MainWindow End Select End If - If ModifierMultiselectActive() Then + If ModifierMultiselectVisibleActive() Then If e.KeyCode = Keys.A And KMouseOver <> -1 Then SelectAllWithHoveredNoteLabel() End If @@ -772,17 +773,28 @@ Partial Public Class MainWindow 'KMouseDown = xITemp Notes(NoteIndex).TempMouseDown = True - If My.Computer.Keyboard.CtrlKeyDown And Not ModifierMultiselectActive() Then + If ModifierCtrlOnlyActive() Then 'If Not K(xITemp).Selected Then K(xITemp).Selected = True ctrlPressed = True - ElseIf ModifierMultiselectActive() Then + ElseIf ModifierMultiselectVisibleActive() Then For xI1 = 0 To UBound(Notes) - If IsNoteVisible(xI1, xTHeight, xVS) Then - If IsLabelMatch(Notes(xI1), NoteIndex) Then - Notes(xI1).Selected = Not Notes(xI1).Selected - End If - End If + If IsNoteVisible(xI1, xTHeight, xVS) AndAlso IsLabelMatch(Notes(xI1), NoteIndex) Then Notes(xI1).Selected = Not Notes(xI1).Selected + Next + ElseIf ModifierMultiselectNoteActive() Then + Dim xniArray1() As Integer + Select Case gXKeyMode + Case "SP" + xniArray1 = {niA1, niA2, niA3, niA4, niA5, niA6, niA7, niA8, niB} + Case "PMS" + xniArray1 = {niA2, niA3, niA4, niA5, niA6, niD2, niD3, niD4, niD5, niB} + Case "DP" + xniArray1 = {niA1, niA2, niA3, niA4, niA5, niA6, niA7, niA8, niD1, niD2, niD3, niD4, niD5, niD6, niD7, niD8, niB} + Case Else + xniArray1 = {niA1, niA2, niA3, niA4, niA5, niA6, niA7, niA8, niB} + End Select + For xI1 = 0 To UBound(Notes) + If IsLabelMatch(Notes(xI1), NoteIndex) AndAlso xniArray1.Contains(Notes(xI1).ColumnIndex) Then Notes(xI1).Selected = Not Notes(xI1).Selected Next Else ' az description: If the clicked note is not selected, select only this one. @@ -1650,7 +1662,7 @@ Partial Public Class MainWindow LastMouseDownLocation = New Point(-1, -1) pMouseMove = New Point(-1, -1) - If ctrlPressed And Not DuplicatedSelectedNotes And Not ModifierMultiselectActive() Then + If ctrlPressed And Not DuplicatedSelectedNotes And Not ModifierMultiselectVisibleActive() Then For i As Integer = 1 To UBound(Notes) If Notes(i).TempMouseDown Then Notes(i).Selected = Not Notes(i).Selected : Exit For Next diff --git a/iBMSC/PanelKeyStates.vb b/iBMSC/PanelKeyStates.vb index 740006ec0..3b9e89202 100644 --- a/iBMSC/PanelKeyStates.vb +++ b/iBMSC/PanelKeyStates.vb @@ -1,20 +1,35 @@ Module PanelKeyStates Public Function ModifierLongNoteActive() As Boolean - Return My.Computer.Keyboard.ShiftKeyDown And - Not My.Computer.Keyboard.CtrlKeyDown + With My.Computer.Keyboard + Return .ShiftKeyDown And Not .CtrlKeyDown + End With End Function Public Function ModifierHiddenActive() As Boolean - Return My.Computer.Keyboard.CtrlKeyDown And - Not My.Computer.Keyboard.ShiftKeyDown + With My.Computer.Keyboard + Return .CtrlKeyDown And Not .ShiftKeyDown + End With End Function Public Function ModifierLandmineActive() As Boolean - Return My.Computer.Keyboard.CtrlKeyDown And - My.Computer.Keyboard.ShiftKeyDown + Return ModifierMultiselectVisibleActive() End Function - Public Function ModifierMultiselectActive() As Boolean - Return My.Computer.Keyboard.ShiftKeyDown And My.Computer.Keyboard.CtrlKeyDown + Public Function ModifierMultiselectVisibleActive() As Boolean + With My.Computer.Keyboard + Return .ShiftKeyDown And .CtrlKeyDown + End With + End Function + + Public Function ModifierMultiselectNoteActive() As Boolean + With My.Computer.Keyboard + Return .AltKeyDown And .CtrlKeyDown + End With + End Function + + Public Function ModifierCtrlOnlyActive() As Boolean + With My.Computer.Keyboard + Return .CtrlKeyDown And Not .ShiftKeyDown And Not .AltKeyDown + End With End Function End Module From e66c76262e708b01a20d034588fc82656eabcacd Mon Sep 17 00:00:00 2001 From: psyk2642 <60137590+psyk2642@users.noreply.github.com> Date: Mon, 21 Mar 2022 22:25:23 +0800 Subject: [PATCH 066/257] Fixed error that occurs when your mouse is over a longnote and you toggle between NT and BMSE --- iBMSC/MainWindow.vb | 2 +- iBMSC/PanelDraw.vb | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/iBMSC/MainWindow.vb b/iBMSC/MainWindow.vb index 454b6a53a..524be2040 100644 --- a/iBMSC/MainWindow.vb +++ b/iBMSC/MainWindow.vb @@ -2373,7 +2373,7 @@ StartCount: If Not NTInput Then FSH.Text = "" FSE.Text = "" - Else + ElseIf xI1 <= UBound(Notes) Then Dim xMeasure As Integer = MeasureAtDisplacement(Notes(xI1).VPosition) Dim xMLength As Double = MeasureLength(xMeasure) Dim xVposMod As Double = Notes(xI1).VPosition - MeasureBottom(xMeasure) diff --git a/iBMSC/PanelDraw.vb b/iBMSC/PanelDraw.vb index e7c3957cb..27496bc83 100644 --- a/iBMSC/PanelDraw.vb +++ b/iBMSC/PanelDraw.vb @@ -69,7 +69,7 @@ Partial Public Class MainWindow DrawSelectionBox(xIndex, e1) 'Mouse Over - If TBSelect.Checked AndAlso Not KMouseOver = -1 Then + If TBSelect.Checked AndAlso Not KMouseOver = -1 AndAlso KMouseOver <= UBound(Notes) Then DrawMouseOver(e1, xTHeight, xPanelHScroll, xPanelDisplacement) End If From f781f5a8610cc571b556b95390b643a4b7783924 Mon Sep 17 00:00:00 2001 From: psyk2642 <60137590+psyk2642@users.noreply.github.com> Date: Tue, 22 Mar 2022 00:17:30 +0800 Subject: [PATCH 067/257] Fixed saving due to additional stuff + Comment notes support - Added support for comment notes. - Fixed saving issues related to long notes. --- iBMSC/ChartIO.vb | 99 ++++++++++++++++++++++------- iBMSC/ImageButtons/ImageErrorR.png | Bin 0 -> 15895 bytes iBMSC/MainWindow.resx | 4 +- iBMSC/MainWindow.vb | 90 ++++++++++++++++++++++---- iBMSC/My Project/AssemblyInfo.vb | 4 +- iBMSC/Option Windows/Note.vb | 13 +++- iBMSC/Option Windows/OpExpand.vb | 5 +- iBMSC/PanelDraw.vb | 84 +++++++++++++++--------- iBMSC/PanelEvents.vb | 50 ++++++++++++--- 9 files changed, 266 insertions(+), 83 deletions(-) create mode 100644 iBMSC/ImageButtons/ImageErrorR.png diff --git a/iBMSC/ChartIO.vb b/iBMSC/ChartIO.vb index 6aa078a57..99bf531a1 100644 --- a/iBMSC/ChartIO.vb +++ b/iBMSC/ChartIO.vb @@ -2,7 +2,7 @@ Imports iBMSC.Editor Partial Public Class MainWindow - Private Sub OpenBMS(ByVal xStrAll As String, Optional xGhost As Boolean = False) + Private Sub OpenBMS(ByVal xStrAll As String, Optional xGhost As Boolean = False, Optional xComment As Boolean = False) KMouseOver = -1 'Line feed validation: will remove some empty lines @@ -13,9 +13,12 @@ Partial Public Class MainWindow Dim xI1 As Integer Dim sLine As String Dim xExpansion As String = "" + Dim xEditorExpansion As String = "" + Dim nNotes As Integer = 1 ' Assume ghost note strings contain only notes in the section. Expansion field to be saved separately - If xGhost Then GoTo GhostJump1 + If xGhost Then nNotes = Notes.Length : GoTo SkipInitialization + If xComment Then xStrLine2 = xStrLine : nNotes = Notes.Length : GoTo SkipInitialization ReDim Notes(0) ReDim mColumn(999) @@ -23,6 +26,8 @@ Partial Public Class MainWindow ReDim hBPM(1295) 'x10000 ReDim hSTOP(1295) ReDim hBMSCROLL(1295) + ReDim hCOM(1295) + hCOMNum = 0 Me.InitializeNewBMS() Me.InitializeOpenBMS() @@ -44,14 +49,16 @@ Partial Public Class MainWindow 'case, skip, def 0 'endSw -1 'P: I'm gonna do what's called a pro gamer move -GhostJump1: +SkipInitialization: Dim xStack As Integer = 0 Dim nLine As Integer = -1 For Each sLine In xStrLine Dim sLineTrim As String = sLine.Trim + If sLineTrim = "" Then Continue For + If xStack > 0 Then GoTo Expansion - If xGhost Then GoTo GhostJump2 + If xGhost Then GoTo SkipLoadingHeader If sLineTrim.StartsWith("#") And Mid(sLineTrim, 5, 3) = "02:" Then Dim xIndex As Integer = Val(Mid(sLineTrim, 2, 3)) @@ -166,6 +173,16 @@ GhostJump1: CHLnObj.SelectedIndex = xValue GoTo AddToxStrLine2 + ElseIf SWIC(sLineTrim, "#ECMD") Then + xEditorExpansion &= sLineTrim.Replace("#ECMD", "#") & vbCrLf + Continue For + + ElseIf SWIC(sLineTrim, "#ECOM") Then ' Comment notes + Dim xComVal = C36to10(Val(Mid(sLineTrim, Len("#ECOM") + 1, 2))) + hCOM(C36to10(xComVal)) = Mid(sLineTrim, Len("#ECOM") + 4) + If xComVal > hCOMNum Then hCOMNum = xComVal + Continue For + End If 'TODO: LNOBJ value validation @@ -173,7 +190,7 @@ GhostJump1: ' CAdLNTYPE.Checked = True ' If Mid(sLineTrim, 9) = "" Or Mid(sLineTrim, 9) = "1" Or Mid(sLineTrim, 9) = "01" Then CAdLNTYPEb.Text = "1" ' CAdLNTYPEb.Text = Mid(sLineTrim, 9) -GhostJump2: +SkipLoadingHeader: If sLineTrim.StartsWith("#") And Mid(sLineTrim, 7, 1) = ":" Then 'If the line contains Ks Dim xIdentifier As String = Mid(sLineTrim, 5, 2) If BMSChannelToColumn(xIdentifier) = 0 Then GoTo AddExpansion @@ -197,9 +214,9 @@ AddExpansion: xExpansion &= sLine & vbCrLf Next UpdateMeasureBottom() - ReDim Preserve xStrLine2(nLine) - +SkipUpdateMeasureBottom: ' BPM must be updated before loading notes, do not combine loops + ReDim Preserve xStrLine2(nLine) For Each sLineTrim In xStrLine2 If Not (sLineTrim.StartsWith("#") And Mid(sLineTrim, 7, 1) = ":") Then Continue For 'If the line contains Ks ' P: The hell is a K @@ -227,6 +244,7 @@ AddExpansion: xExpansion &= sLine & vbCrLf .VPosition = MeasureBottom(xMeasure) + MeasureLength(xMeasure) * (xI1 / 2 - 4) / ((Len(sLineTrim) - 7) / 2) .Value = C36to10(Mid(sLineTrim, xI1, 2)) * 10000 .Ghost = xGhost + .Comment = xComment If Channel = "03" Then .Value = Convert.ToInt32(Mid(sLineTrim, xI1, 2), 16) * 10000 If Channel = "08" Then .Value = hBPM(C36to10(Mid(sLineTrim, xI1, 2))) @@ -237,9 +255,15 @@ AddExpansion: xExpansion &= sLine & vbCrLf Next Next - If NTInput Then ConvertBMSE2NT() + If xEditorExpansion <> "" Then OpenBMS(xEditorExpansion,, True) - If xGhost Then GoTo GhostJump3 + If xGhost Then + If NTInput Then ConvertBMSE2NT(nNotes) + GoTo SkipLWAVAndExpansion + ElseIf xComment Then + GoTo SkipLWAVAndExpansion + End If + If NTInput Then ConvertBMSE2NT() LWAV.Visible = False LWAV.Items.Clear() @@ -250,7 +274,7 @@ AddExpansion: xExpansion &= sLine & vbCrLf LWAV.Visible = True TExpansion.Text = xExpansion -GhostJump3: +SkipLWAVAndExpansion: SortByVPositionQuick(0, UBound(Notes)) UpdatePairing() CalculateTotalPlayableNotes() @@ -292,7 +316,8 @@ GhostJump3: ReDim hBMSCROLL(0) Dim xNTInput As Boolean = NTInput - Dim xKBackUp() As Note = Notes + If GhostMode = 2 Then SwapGhostNotes() ' Revert main notes back to non-ghost notes + Dim xKBackUp() As Note = Notes.Clone 'All notes If xNTInput Then NTInput = False ConvertNT2BMSE() @@ -301,10 +326,8 @@ GhostJump3: Dim tempNote As Note 'Temp K Dim xprevNotes(-1) As Note 'Notes too close to the next measure - If GhostMode = 2 Then SwapGhostNotes() ' Revert main notes back to non-ghost notes - 'Remove ghost notes from being saved - Dim NotesAll() As Note = Notes.Clone 'All notes including ghosts. RemoveGhostNotes() ' Remove Ghost Notes from Notes() + RemoveCommentNotes() ' Remove Comment Notes from Notes() For MeasureIndex = 0 To MeasureAtDisplacement(GreatestVPosition) + 1 'For xI1 in each measure xStrMeasure(MeasureIndex) = vbCrLf @@ -368,50 +391,80 @@ GhostJump3: End If ' Add expansion text + ' Add and combine ghost notes with existing expansion text + Dim GhostModeTemp As Integer = -1 If GhostMode <> 0 Then ' Generate String array for duplicate comparison - Dim GhostModeTemp As Integer = GhostMode + GhostModeTemp = GhostMode GhostMode = 0 TExpansion.Text = "" + Dim xKBackUpG() As Note = xKBackUp.Clone Dim xStrCompare() As String = Split(Replace(Replace(Replace(SaveBMS(), vbLf, vbCr), vbCr & vbCr, vbCr), vbCr, vbCrLf), vbCrLf,, CompareMethod.Text) ' Save ghost notes - Notes = NotesAll.Clone + Notes = xKBackUpG.Clone + If xNTInput Then ConvertNT2BMSE() SwapGhostNotes() - RemoveGhostNotes() ' Remove Ghost Notes from Notes() + RemoveGhostNotes() ' Remove Main Notes from Notes() + RemoveCommentNotes() ' Remove Comment Notes from Notes() TExpansion.Text = ExtractExpansion(ExpansionSplit(1)) - Dim xStrExpNotes As String = SaveBMS(True) + Dim xStrExpGhostNotes As String = SaveBMS(True) GhostMode = GhostModeTemp ExpansionSplit(1) = "" - For Each xStrLine In Split(xStrExpNotes, vbCrLf) + For Each xStrLine In Split(xStrExpGhostNotes, vbCrLf) If (Not xStrCompare.Contains(xStrLine) AndAlso xStrLine <> "*---------------------- RANDOM DATA FIELD") Or SWIC(xStrLine, "#RANDOM") Or SWIC(xStrLine, "#IF") Or SWIC(xStrLine, "#ENDIF") Then ExpansionSplit(1) &= xStrLine & vbCrLf End If Next TExpansion.Text = Join(ExpansionSplit, vbCrLf) + xKBackUp = xKBackUpG.Clone End If + ' Combine all expansion texts Dim xStrExp As String = vbCrLf & "*---------------------- EXPANSION FIELD" & vbCrLf & TExpansion.Text & vbCrLf & vbCrLf If TExpansion.Text = "" Then xStrExp = "" + ' Add comment notes + Dim xStrEditorCommentNotes As String = "" + Notes = xKBackUp.Clone + If xNTInput Then ConvertNT2BMSE() + ' Swap comment notes. Not a sub/function since expected to use only once. + For xI1 = 1 To UBound(Notes) + Notes(xI1).Comment = Not Notes(xI1).Comment + Next + RemoveCommentNotes() ' Remove non-comment notes + If UBound(Notes) > 0 Then + Dim ExpansionTextTemp = TExpansion.Text + TExpansion.Text = "" + If GhostModeTemp <> -1 Then GhostMode = 0 + xStrEditorCommentNotes = SaveBMS(True).Replace("*---------------------- RANDOM DATA FIELD", "").Replace(vbCrLf & vbCrLf, vbCrLf).Replace("#", "#ECMD") + If GhostModeTemp <> -1 Then GhostMode = GhostModeTemp + For i = 1 To UBound(hCOM) + If Not IsNothing(hCOM(i)) Then xStrEditorCommentNotes &= vbCrLf & "#ECOM" & C10to36(i) & " " & hCOM(i) + Next + TExpansion.Text = ExpansionTextTemp + End If + Dim xStrEditor As String = vbCrLf & "*---------------------- EDITOR EXPANSION FIELD" & vbCrLf & xStrEditorCommentNotes & vbCrLf & vbCrLf + If xStrEditorCommentNotes = "" Then xStrEditor = "" + ' Output main data field. Dim xStrMain As String = "*---------------------- MAIN DATA FIELD" & vbCrLf & vbCrLf & Join(xStrMeasure, "") & vbCrLf + ' Restore notes + Notes = xKBackUp.Clone If xNTInput Then - Notes = xKBackUp NTInput = True End If ' Return ghost notes back to Notes - Notes = NotesAll.Clone If GhostMode = 2 Then SwapGhostNotes() ' Generate headers now, since we have the unique BPM/STOP/etc declarations. Dim xStrHeader As String = GenerateHeaderMeta() xStrHeader &= GenerateHeaderIndexedData() - Return xStrHeader & vbCrLf & xStrExp & vbCrLf & xStrMain + Return xStrHeader & vbCrLf & xStrExp & vbCrLf & xStrEditor & vbCrLf & xStrMain End Function Private Function ExtractExpansion(ByVal xString As String) As String @@ -515,7 +568,7 @@ ExtractAddExpansion: xExpansion &= sLine & vbCrLf End If Next - If UpperLimit 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 diff --git a/iBMSC/MainWindow.vb b/iBMSC/MainWindow.vb index 524be2040..49d9288b7 100644 --- a/iBMSC/MainWindow.vb +++ b/iBMSC/MainWindow.vb @@ -163,12 +163,15 @@ Public Class MainWindow '----ErrorCheck Options Dim ErrorCheck As Boolean = True + Dim ErrorJackSpeed As Double = Notes(0).Value / 10000 / 192 '----Header Options Dim hWAV(1295) As String Dim hBPM(1295) As Long 'x10000 Dim hSTOP(1295) As Long Dim hBMSCROLL(1295) As Long + Dim hCOM(1295) As String + Dim hCOMNum As Integer = 0 '----Grid Options Dim gSnap As Boolean = True @@ -787,6 +790,8 @@ Public Class MainWindow KMouseOver = -1 Dim xI1 As Integer = 1 Dim xI2 As Integer + Dim xIC As Integer + Dim xComCount(1295) As Integer Do If Notes(xI1).Selected AndAlso Not Notes(xI1).Ghost Then For xI2 = xI1 + 1 To UBound(Notes) @@ -797,6 +802,29 @@ Public Class MainWindow End If xI1 += 1 Loop While xI1 < UBound(Notes) + 1 + + ' Check and remove comments + For xI1 = 1 To UBound(Notes) + If Notes(xI1).Comment Then + xIC = Notes(xI1).Value / 10000 + xComCount(xIC) += 1 + End If + Next + xI1 = 1 + Do While xI1 <= hCOMNum + If xComCount(xI1) = 0 Then + RemoveCommentLine(xI1) + If xI1 = xComCount.Length Then + xComCount(xI1) = 0 + Exit Do + Else + xComCount(xI1) = xComCount(xI1 + 1) + End If + Else + xI1 += 1 + End If + Loop + If SortAndUpdatePairing Then SortByVPositionInsertion() : UpdatePairing() CalculateTotalPlayableNotes() End Sub @@ -934,6 +962,7 @@ Public Class MainWindow 'THLnType.Text = "1" CHLnObj.SelectedIndex = 0 GhostMode = 0 + ReDim hCOM(1295) TExpansion.Text = "" @@ -2316,18 +2345,23 @@ StartCount: If Not NTInput Then Private Sub CalculateTotalPlayableNotes() Dim xI1 As Integer Dim xIAll As Integer = 0 + Dim xITemp As Integer = 0 If Not NTInput Then For xI1 = 1 To UBound(Notes) - If Notes(xI1).ColumnIndex >= niA1 And Notes(xI1).ColumnIndex <= niD8 Then xIAll += 1 + If Notes(xI1).ColumnIndex >= niA1 And Notes(xI1).ColumnIndex <= niD8 Then + If Not (Notes(xI1).LongNote Or Notes(xI1).Hidden Or Notes(xI1).Landmine Or Notes(xI1).Hidden Or Notes(xI1).Value \ 10000 = LnObj Or Notes(xI1).Comment) Then + xIAll += 1 + ElseIf Notes(xI1).LongNote AndAlso Not (Notes(xI1).Hidden Or Notes(xI1).Landmine Or Notes(xI1).Hidden Or Notes(xI1).Value \ 10000 = LnObj Or Notes(xI1).Comment) Then + xITemp += 1 + End If + End If Next - + xIAll += xITemp / 2 Else For xI1 = 1 To UBound(Notes) - If Notes(xI1).ColumnIndex >= niA1 And Notes(xI1).ColumnIndex <= niD8 Then - If Not (Notes(xI1).LongNote Or Notes(xI1).Hidden Or Notes(xI1).Landmine Or Notes(xI1).Hidden Or Notes(xI1).Value \ 10000 = LnObj) Then xIAll += 1 - ' If Notes(xI1).Length <> 0 Then xIAll += 1 - End If + If Notes(xI1).ColumnIndex >= niA1 And Notes(xI1).ColumnIndex <= niD8 AndAlso + Not (Notes(xI1).LongNote Or Notes(xI1).Hidden Or Notes(xI1).Landmine Or Notes(xI1).Hidden Or Notes(xI1).Value \ 10000 = LnObj Or Notes(xI1).Comment) Then xIAll += 1 Next End If @@ -3251,16 +3285,16 @@ RestartSorting: xSorted = False RefreshPanelAll() End Sub - Private Sub ConvertBMSE2NT() + Private Sub ConvertBMSE2NT(Optional xIFrom As Integer = 1) ReDim SelectedNotes(-1) - SortByVPositionInsertion() + If xIFrom = 1 Then SortByVPositionInsertion() - For i2 As Integer = 0 To UBound(Notes) + For i2 As Integer = xIFrom To UBound(Notes) Notes(i2).Length = 0.0# Next - Dim i As Integer = 1 - Dim j As Integer = 0 + Dim i As Integer = xIFrom + Dim j As Integer Dim xUbound As Integer = UBound(Notes) Do While i <= xUbound @@ -3288,7 +3322,7 @@ RestartSorting: xSorted = False ReDim Preserve Notes(xUbound) - For i = 0 To xUbound + For i = xIFrom To xUbound Notes(i).LongNote = False Next @@ -3313,6 +3347,7 @@ RestartSorting: xSorted = False .Selected = Notes(xI1).Selected .Hidden = Notes(xI1).Hidden .Ghost = Notes(xI1).Ghost + .Comment = Notes(xI1).Comment End With If Notes(xI1).Length > 0 Then @@ -3326,6 +3361,7 @@ RestartSorting: xSorted = False .Selected = Notes(xI1).Selected .Hidden = Notes(xI1).Hidden .Ghost = Notes(xI1).Ghost + .Comment = Notes(xI1).Comment End With End If Next @@ -5179,6 +5215,17 @@ case2: Dim xI0 As Integer Loop End Sub + Public Sub RemoveCommentNotes() + Dim xI1 As Integer = 1 + Do While xI1 <= UBound(Notes) + If Notes(xI1).Comment Then + RemoveNote(xI1) + Else + xI1 += 1 + End If + Loop + End Sub + Public Sub SwapGhostNotes() For xI1 = 1 To UBound(Notes) Notes(xI1).Ghost = Not Notes(xI1).Ghost @@ -5209,4 +5256,23 @@ case2: Dim xI0 As Integer Expand_RemoveGhostNotes() End Select End Sub + + Public Sub AddCommentLine(ByVal xComment As String) + For i = 1 To UBound(hCOM) + If IsNothing(hCOM(i)) Then hCOM(i) = xComment : hCOMNum = i : Exit For + Next + End Sub + + Public Sub RemoveCommentLine(ByVal xI As Integer) + Do While hCOM(xI) <> "" + If xI = hCOM.Length Then + hCOM(xI) = "" + Exit Do + Else + hCOM(xI) = hCOM(xI + 1) + End If + xI += 1 + Loop + hCOMNum = xI - 1 + End Sub End Class diff --git a/iBMSC/My Project/AssemblyInfo.vb b/iBMSC/My Project/AssemblyInfo.vb index a5c6187b9..f72b4d1d2 100644 --- a/iBMSC/My Project/AssemblyInfo.vb +++ b/iBMSC/My Project/AssemblyInfo.vb @@ -33,7 +33,7 @@ Imports System.Runtime.InteropServices ' by using the '*' as shown below: ' - - + + \ No newline at end of file diff --git a/iBMSC/Option Windows/Note.vb b/iBMSC/Option Windows/Note.vb index 226be50fc..8353931ae 100644 --- a/iBMSC/Option Windows/Note.vb +++ b/iBMSC/Option Windows/Note.vb @@ -8,6 +8,7 @@ Public Length As Double Public Landmine As Boolean Public Ghost As Boolean + Public Comment As Boolean Public LNPair As Integer Public Selected As Boolean @@ -25,7 +26,8 @@ LongNote = note.LongNote And Hidden = note.Hidden And Landmine = note.Landmine And - Ghost = note.Ghost + Ghost = note.Ghost And + Comment = note.Comment End Function Public Function equalsNT(note As Note) As Boolean Return VPosition = note.VPosition And @@ -34,7 +36,8 @@ Hidden = note.Hidden And Length = note.Length And Landmine = note.Landmine And - Ghost = note.Ghost + Ghost = note.Ghost And + Comment = note.Comment End Function Public Sub New(nColumnIndex As Integer, @@ -44,7 +47,8 @@ Optional nHidden As Boolean = False, Optional nSelected As Boolean = False, Optional nLandmine As Boolean = False, - Optional nGhost As Boolean = False) + Optional nGhost As Boolean = False, + Optional nComment As Boolean = False) VPosition = nVposition ColumnIndex = nColumnIndex Value = nValue @@ -53,6 +57,7 @@ Hidden = nHidden Landmine = nLandmine Ghost = nGhost + Comment = nComment End Sub Friend Function ToBytes() As Byte() @@ -72,6 +77,7 @@ bw.Write(Hidden) bw.Write(Landmine) bw.Write(Ghost) + bw.Write(Comment) End Sub Friend Sub FromBinReader(ByRef br As BinaryReader) @@ -83,6 +89,7 @@ Hidden = br.ReadBoolean() Landmine = br.ReadBoolean() Ghost = br.ReadBoolean() + Comment = br.ReadBoolean() End Sub Friend Sub FromBytes(ByRef bytes() As Byte) diff --git a/iBMSC/Option Windows/OpExpand.vb b/iBMSC/Option Windows/OpExpand.vb index 63cc7a6fa..5946b8432 100644 --- a/iBMSC/Option Windows/OpExpand.vb +++ b/iBMSC/Option Windows/OpExpand.vb @@ -30,7 +30,10 @@ End Sub Private Sub BDisplayGhostAll_Click(sender As Object, e As EventArgs) Handles BDisplayGhostAll.Click - MainWindow.ExpansionSplit(1) = MainWindow.TExpansion.Text + MainWindow.ExpansionSplit(1) = "" + For Each xStrLine In MainWindow.TExpansion.Text.Split(vbCrLf) + If xStrLine <> "" AndAlso Not SWIC(xStrLine, "#RANDOM") AndAlso Not SWIC(xStrLine, "#IF") Then MainWindow.ExpansionSplit(1) &= xStrLine & vbCrLf + Next Me.Close() MainWindow.Expand_DisplayGhostNotes() End Sub diff --git a/iBMSC/PanelDraw.vb b/iBMSC/PanelDraw.vb index 27496bc83..096ee1307 100644 --- a/iBMSC/PanelDraw.vb +++ b/iBMSC/PanelDraw.vb @@ -559,9 +559,8 @@ Partial Public Class MainWindow If sNote.Ghost Then xAlpha *= 0.1 Dim xLabel As String = C10to36(sNote.Value \ 10000) - If ShowFileName AndAlso hWAV(C36to10(xLabel)) <> "" Then - xLabel = Path.GetFileNameWithoutExtension(hWAV(C36to10(xLabel))) - End If + If sNote.Comment Then xLabel = WordWrapConvert(hCOM(C36to10(xLabel))) Else _ + If ShowFileName AndAlso hWAV(C36to10(xLabel)) <> "" Then xLabel = Path.GetFileNameWithoutExtension(hWAV(C36to10(xLabel))) Dim xPen As Pen Dim xBrush As Drawing2D.LinearGradientBrush @@ -569,9 +568,17 @@ Partial Public Class MainWindow Dim bright As Color Dim dark As Color - Dim p1 = New Point(HorizontalPositiontoDisplay(nLeft(sNote.ColumnIndex), xHS), + Dim xnLeft = nLeft(sNote.ColumnIndex) + Dim xColumnWidth As Integer = GetColumnWidth(sNote.ColumnIndex) + If sNote.Comment Then + For i = 1 To 4 + xColumnWidth += GetColumnWidth(sNote.ColumnIndex + i) + Next + End If + + Dim p1 = New Point(HorizontalPositiontoDisplay(xnLeft, xHS), NoteRowToPanelHeight(sNote.VPosition, xVS, xHeight) - vo.kHeight - 10) - Dim p2 = New Point(HorizontalPositiontoDisplay(nLeft(sNote.ColumnIndex) + GetColumnWidth(sNote.ColumnIndex), xHS), + Dim p2 = New Point(HorizontalPositiontoDisplay(xnLeft + xColumnWidth, xHS), NoteRowToPanelHeight(sNote.VPosition, xVS, xHeight) + 10) If Not sNote.LongNote Then @@ -619,22 +626,22 @@ Partial Public Class MainWindow xBrush = New Drawing2D.LinearGradientBrush(p1, p2, bright, dark) ' Fill - e.Graphics.FillRectangle(xBrush, HorizontalPositiontoDisplay(nLeft(sNote.ColumnIndex), xHS) + 2, + e.Graphics.FillRectangle(xBrush, HorizontalPositiontoDisplay(xnLeft, xHS) + 2, NoteRowToPanelHeight(sNote.VPosition, xVS, xHeight) - vo.kHeight + 1, - GetColumnWidth(sNote.ColumnIndex) * gxWidth - 3, + xColumnWidth * gxWidth - 3, vo.kHeight - 1) ' Outline e.Graphics.DrawRectangle(xPen, - HorizontalPositiontoDisplay(nLeft(sNote.ColumnIndex), xHS) + 1, + HorizontalPositiontoDisplay(xnLeft, xHS) + 1, NoteRowToPanelHeight(sNote.VPosition, xVS, xHeight) - vo.kHeight, - GetColumnWidth(sNote.ColumnIndex) * gxWidth - 2, + xColumnWidth * gxWidth - 2, vo.kHeight) ' Label - e.Graphics.DrawString(IIf(IsColumnNumeric(sNote.ColumnIndex), sNote.Value / 10000, xLabel), + e.Graphics.DrawString(IIf(IsColumnNumeric(sNote.ColumnIndex) AndAlso Not sNote.Comment, sNote.Value / 10000, xLabel), vo.kFont, xBrush2, - HorizontalPositiontoDisplay(nLeft(sNote.ColumnIndex), xHS) + vo.kLabelHShift, - NoteRowToPanelHeight(sNote.VPosition, xVS, xHeight) - vo.kHeight + vo.kLabelVShift) + HorizontalPositiontoDisplay(xnLeft, xHS) + vo.kLabelHShift, + NoteRowToPanelHeight(sNote.VPosition, xVS, xHeight) - vo.kHeight + vo.kLabelVShift - IIf(sNote.Comment, CInt(sNote.Length * gxHeight), 0)) If sNote.ColumnIndex < niB Then If sNote.LNPair <> 0 Then @@ -648,20 +655,22 @@ Partial Public Class MainWindow 'If ErrorCheck AndAlso (sNote.LongNote Xor sNote.PairWithI <> 0) Then e.Graphics.DrawImage(My.Resources.ImageError, _ If ErrorCheck AndAlso sNote.HasError Then e.Graphics.DrawImage(My.Resources.ImageError, - CInt(HorizontalPositiontoDisplay(nLeft(sNote.ColumnIndex) + GetColumnWidth(sNote.ColumnIndex) / 2, xHS) - 12), + CInt(HorizontalPositiontoDisplay(xnLeft + xColumnWidth / 2, xHS) - 12), CInt(NoteRowToPanelHeight(sNote.VPosition, xVS, xHeight) - vo.kHeight / 2 - 12), 24, 24) - If sNote.Selected Then e.Graphics.DrawRectangle(vo.kSelected, HorizontalPositiontoDisplay(nLeft(sNote.ColumnIndex), xHS), NoteRowToPanelHeight(sNote.VPosition, xVS, xHeight) - vo.kHeight - 1, GetColumnWidth(sNote.ColumnIndex) * gxWidth, vo.kHeight + 2) + If sNote.Selected Then e.Graphics.DrawRectangle(vo.kSelected, HorizontalPositiontoDisplay(xnLeft, xHS), NoteRowToPanelHeight(sNote.VPosition, xVS, xHeight) - vo.kHeight - 1, xColumnWidth * gxWidth, vo.kHeight + 2) End Sub Private Sub DrawPairedLNBody(sNote As Note, e As BufferedGraphics, xHS As Long, xVS As Long, xHeight As Integer, xAlpha As Single) + Dim xnLeft = nLeft(sNote.ColumnIndex) + Dim xColumnWidth = GetColumnWidth(sNote.ColumnIndex) Dim xPen2 As New Pen(GetColumn(sNote.ColumnIndex).getLongBright(xAlpha)) Dim xBrush3 As New Drawing2D.LinearGradientBrush( - New Point(HorizontalPositiontoDisplay(nLeft(sNote.ColumnIndex) - 0.5 * GetColumnWidth(sNote.ColumnIndex), xHS), + New Point(HorizontalPositiontoDisplay(xnLeft - 0.5 * xColumnWidth, xHS), NoteRowToPanelHeight(Notes(sNote.LNPair).VPosition, xVS, xHeight)), - New Point(HorizontalPositiontoDisplay(nLeft(sNote.ColumnIndex) + 1.5 * GetColumnWidth(sNote.ColumnIndex), xHS), + New Point(HorizontalPositiontoDisplay(xnLeft + 1.5 * xColumnWidth, xHS), NoteRowToPanelHeight(sNote.VPosition, xVS, xHeight) + vo.kHeight), GetColumn(sNote.ColumnIndex).getLongBright(xAlpha), GetColumn(sNote.ColumnIndex).getLongDark(xAlpha)) @@ -687,6 +696,7 @@ Partial Public Class MainWindow If sNote.Ghost Then xAlpha *= 0.1 Dim xLabel As String = C10to36(sNote.Value \ 10000) + If sNote.Comment Then xLabel = WordWrapConvert(hCOM(C36to10(xLabel))) Else _ If ShowFileName AndAlso hWAV(C36to10(xLabel)) <> "" Then xLabel = Path.GetFileNameWithoutExtension(hWAV(C36to10(xLabel))) Dim xPen1 As Pen @@ -698,11 +708,18 @@ Partial Public Class MainWindow Dim bright As Color Dim dark As Color + Dim xnLeft = nLeft(sNote.ColumnIndex) + Dim xColumnWidth As Integer = GetColumnWidth(sNote.ColumnIndex) + If sNote.Comment Then + For i = 1 To 4 + xColumnWidth += GetColumnWidth(sNote.ColumnIndex + i) + Next + End If + If sNote.Length = 0 Then - p1 = New Point(HorizontalPositiontoDisplay(nLeft(sNote.ColumnIndex), xHS), + p1 = New Point(HorizontalPositiontoDisplay(xnLeft, xHS), NoteRowToPanelHeight(sNote.VPosition, xVS, xHeight) - vo.kHeight - 10) - - p2 = New Point(HorizontalPositiontoDisplay(nLeft(sNote.ColumnIndex) + GetColumnWidth(sNote.ColumnIndex), xHS), + p2 = New Point(HorizontalPositiontoDisplay(xnLeft + xColumnWidth, xHS), NoteRowToPanelHeight(sNote.VPosition, xVS, xHeight) + 10) bright = GetColumn(sNote.ColumnIndex).getBright(xAlpha) @@ -735,9 +752,9 @@ Partial Public Class MainWindow End If xBrush2 = New SolidBrush(GetColumn(sNote.ColumnIndex).cText) Else - p1 = New Point(HorizontalPositiontoDisplay(nLeft(sNote.ColumnIndex) - 0.5 * GetColumnWidth(sNote.ColumnIndex), xHS), + p1 = New Point(HorizontalPositiontoDisplay(xnLeft - 0.5 * xColumnWidth, xHS), NoteRowToPanelHeight(sNote.VPosition + sNote.Length, xVS, xHeight) - vo.kHeight) - p2 = New Point(HorizontalPositiontoDisplay(nLeft(sNote.ColumnIndex) + 1.5 * GetColumnWidth(sNote.ColumnIndex), xHS), + p2 = New Point(HorizontalPositiontoDisplay(xnLeft + 1.5 * xColumnWidth, xHS), NoteRowToPanelHeight(sNote.VPosition, xVS, xHeight)) bright = GetColumn(sNote.ColumnIndex).getLongBright(xAlpha) @@ -751,21 +768,21 @@ Partial Public Class MainWindow ' Note gradient e.Graphics.FillRectangle(xBrush, - HorizontalPositiontoDisplay(nLeft(sNote.ColumnIndex), xHS) + 1, + HorizontalPositiontoDisplay(xnLeft, xHS) + 1, NoteRowToPanelHeight(sNote.VPosition + sNote.Length, xVS, xHeight) - vo.kHeight + 1, - GetColumnWidth(sNote.ColumnIndex) * gxWidth - 1, + xColumnWidth * gxWidth - 1, CInt(sNote.Length * gxHeight) + vo.kHeight - 1) ' Outline - e.Graphics.DrawRectangle(xPen1, HorizontalPositiontoDisplay(nLeft(sNote.ColumnIndex), xHS) + 1, + e.Graphics.DrawRectangle(xPen1, HorizontalPositiontoDisplay(xnLeft, xHS) + 1, NoteRowToPanelHeight(sNote.VPosition + sNote.Length, xVS, xHeight) - vo.kHeight, - GetColumnWidth(sNote.ColumnIndex) * gxWidth - 3, CInt(sNote.Length * gxHeight) + vo.kHeight) + xColumnWidth * gxWidth - 3, CInt(sNote.Length * gxHeight) + vo.kHeight) ' Note B36 - e.Graphics.DrawString(IIf(IsColumnNumeric(sNote.ColumnIndex), sNote.Value / 10000, xLabel), + e.Graphics.DrawString(IIf(IsColumnNumeric(sNote.ColumnIndex) AndAlso Not sNote.Comment, sNote.Value / 10000, xLabel), vo.kFont, xBrush2, - HorizontalPositiontoDisplay(nLeft(sNote.ColumnIndex), xHS) + vo.kLabelHShiftL - 2, - NoteRowToPanelHeight(sNote.VPosition, xVS, xHeight) - vo.kHeight + vo.kLabelVShift) + HorizontalPositiontoDisplay(xnLeft, xHS) + vo.kLabelHShiftL - 2, + NoteRowToPanelHeight(sNote.VPosition, xVS, xHeight) - vo.kHeight + vo.kLabelVShift - IIf(sNote.Comment, CInt(sNote.Length * gxHeight), 0)) ' Draw paired body If sNote.ColumnIndex < niB Then @@ -778,16 +795,16 @@ Partial Public Class MainWindow ' Select Box If sNote.Selected Then e.Graphics.DrawRectangle(vo.kSelected, - HorizontalPositiontoDisplay(nLeft(sNote.ColumnIndex), xHS), + HorizontalPositiontoDisplay(xnLeft, xHS), NoteRowToPanelHeight(sNote.VPosition + sNote.Length, xVS, xHeight) - vo.kHeight - 1, - GetColumnWidth(sNote.ColumnIndex) * gxWidth, + xColumnWidth * gxWidth, CInt(sNote.Length * gxHeight) + vo.kHeight + 2) End If ' Errors If ErrorCheck AndAlso sNote.HasError Then e.Graphics.DrawImage(My.Resources.ImageError, - CInt(HorizontalPositiontoDisplay(nLeft(sNote.ColumnIndex) + GetColumnWidth(sNote.ColumnIndex) / 2, xHS) - 12), + CInt(HorizontalPositiontoDisplay(xnLeft + xColumnWidth / 2, xHS) - 12), CInt(NoteRowToPanelHeight(sNote.VPosition, xVS, xHeight) - vo.kHeight / 2 - 12), 24, 24) End If @@ -796,4 +813,9 @@ Partial Public Class MainWindow ' New Point(HorizontalPositiontoDisplay(nLeft(sNote.ColumnIndex + 1), xHS), VerticalPositiontoDisplay(sNote.VPosition, xVS, xHeight) - vo.kHeight - 2)) End Sub + + Private Function WordWrapConvert(ByVal s As String) + If s = "" Then Return "" + Return s.Replace("\n", vbCrLf) + End Function End Class diff --git a/iBMSC/PanelEvents.vb b/iBMSC/PanelEvents.vb index 4b5d08dbd..a4a23e481 100644 --- a/iBMSC/PanelEvents.vb +++ b/iBMSC/PanelEvents.vb @@ -536,7 +536,7 @@ Partial Public Class MainWindow 'Play wav If ClickStopPreview Then PreviewNote("", True) 'My.Computer.Audio.Stop() - If NoteIndex > 0 And PreviewOnClick AndAlso Not IsColumnNumeric(Notes(NoteIndex).ColumnIndex) Then + If NoteIndex > 0 AndAlso PreviewOnClick AndAlso Not IsColumnNumeric(Notes(NoteIndex).ColumnIndex) AndAlso Not Notes(NoteIndex).Comment Then Dim xI2 As Integer = Notes(NoteIndex).Value \ 10000 If xI2 <= 0 Then xI2 = 1 If xI2 >= 1296 Then xI2 = 1295 @@ -599,16 +599,28 @@ Partial Public Class MainWindow If xColumn = niSTOP Then xMessage = Strings.Messages.PromptEnterSTOP If xColumn = niSCROLL Then xMessage = Strings.Messages.PromptEnterSCROLL + Dim xUndo As UndoRedo.LinkedURCmd = Nothing + Dim xRedo As UndoRedo.LinkedURCmd = New UndoRedo.Void + Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo + Dim valstr As String = InputBox(xMessage, Text) Dim value As Double = Val(valstr) * 10000 + If valstr.StartsWith("-c ") Then ' Input comment notes + If valstr = "-c " Then valstr &= " " + For xI1 = 1 To UBound(Notes) + If Notes(xI1).VPosition = xVPosition AndAlso Notes(xI1).ColumnIndex = xColumn Then _ + RedoRemoveNote(Notes(xI1), xUndo, xRedo) + Next + Dim valstrcomment As String = Mid(valstr, 4) + AddCommentLine(valstrcomment) - If (xColumn = niSCROLL And valstr = "0") Or value <> 0 Then - If xColumn <> niSCROLL And value <= 0 Then value = 1 - - Dim xUndo As UndoRedo.LinkedURCmd = Nothing - Dim xRedo As UndoRedo.LinkedURCmd = New UndoRedo.Void - Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo + Dim n = New Note(xColumn, xVPosition, hCOMNum * 10000, 0, Hidden,,,, True) + RedoAddNote(n, xUndo, xRedo) + AddNote(n) + AddUndo(xUndo, xBaseRedo.Next) + ElseIf (xColumn = niSCROLL And valstr = "0") Or value <> 0 Then ' Input normal notes + If xColumn <> niSCROLL And value <= 0 Then value = 1 For xI1 = 1 To UBound(Notes) If Notes(xI1).VPosition = xVPosition AndAlso Notes(xI1).ColumnIndex = xColumn Then _ RedoRemoveNote(Notes(xI1), xUndo, xRedo) @@ -869,7 +881,14 @@ Partial Public Class MainWindow If GhostMode = 2 AndAlso Note.Ghost Then SwapGhostNotes() : GhostMode = 1 : Exit Sub If Note.Ghost Then MsgBox("To modify ghost notes, please select only one section from the expansion code.") : Exit Sub - If IsColumnNumeric(NoteColumn) Then + If Note.Comment Then + ' Edit comment + Dim xMessage As String = Strings.Messages.PromptEnter + Dim valstr As String = InputBox(xMessage, Me.Text, hCOM(Note.Value / 10000)) + If valstr = "" Then valstr = " " + ' Replace comment + hCOM(Note.Value / 10000) = valstr + ElseIf IsColumnNumeric(NoteColumn) Then 'BPM/Stop prompt Dim xMessage As String = Strings.Messages.PromptEnterNumeric If NoteColumn = niBPM Then xMessage = Strings.Messages.PromptEnterBPM @@ -1698,8 +1717,21 @@ Partial Public Class MainWindow Dim valstr As String = InputBox(xMessage, Me.Text) Dim value As Long = Val(valstr) * 10000 + If valstr.StartsWith("-c ") Then ' Input comment notes + If valstr = "-c " Then valstr &= " " + For xI1 = 1 To UBound(Notes) + If Notes(xI1).VPosition = xVPosition AndAlso Notes(xI1).ColumnIndex = xColumn Then _ + RedoRemoveNote(Notes(xI1), xUndo, xRedo) + Next + Dim valstrcomment As String = Mid(valstr, 4) + AddCommentLine(valstrcomment) + + Dim n = New Note(xColumn, xVPosition, hCOMNum * 10000, 0, HiddenNote,,,, True) + RedoAddNote(n, xUndo, xRedo) - If (xColumn = niSCROLL And valstr = "0") Or value <> 0 Then + AddNote(n) + AddUndo(xUndo, xBaseRedo.Next) + ElseIf (xColumn = niSCROLL And valstr = "0") Or value <> 0 Then For xI1 = 1 To UBound(Notes) If Notes(xI1).VPosition = xVPosition AndAlso Notes(xI1).ColumnIndex = xColumn Then _ RedoRemoveNote(Notes(xI1), xUndo, xRedo) From e7779f24724b84b10952e26716ff2e831d8e5572 Mon Sep 17 00:00:00 2001 From: psyk2642 <60137590+psyk2642@users.noreply.github.com> Date: Tue, 22 Mar 2022 09:30:49 +0800 Subject: [PATCH 068/257] Comment notes - description and bug fix Fixed later comment notes becoming empty when the first comment(s) are deleted. --- README.md | 2 ++ iBMSC/MainWindow.designer.vb | 64 ++++++++++++++++++------------------ iBMSC/MainWindow.resx | 4 +-- iBMSC/MainWindow.vb | 3 ++ 4 files changed, 39 insertions(+), 34 deletions(-) diff --git a/README.md b/README.md index 492f6f06b..7accf8465 100644 --- a/README.md +++ b/README.md @@ -13,6 +13,7 @@ Listed in the order added. * Fixed the total note count on the toolbar. * Reorganized the sidebar so you can tab between textboxes properly (mostly). * Prevented notes in Expansion Code from being loaded. +* Rare bug that occurs when the mouse is highlighting a long note while toggling between NT and BMSE simultaneously. ## Functionalities * Added Random and S-Random. Supports PMS as well. @@ -26,6 +27,7 @@ Listed in the order added. * Added mBMplay as a default player. * Added support for #RANDOM. Supports expansion field and main data field only. Not tested thoroughly, nested #RANDOM in "Modify Section" only. Accessible via the "Select Section" button in Expansion Code or via Ctrl+R. * Added color overriding options where you can specify a range of notes to appear a specific color, such as red notes for drums and green notes for the piano. Accessible via the Options tab or via Shift+F12. +* Added comment notes. Comment notes will be saved as #ECMD and #ECOM within the same bms/pms file. Not tested thoroughly. ## Keyboard shortcuts * Changed keybinding to allow note placement between D1 and D8. diff --git a/iBMSC/MainWindow.designer.vb b/iBMSC/MainWindow.designer.vb index 559271e39..d828bd67b 100644 --- a/iBMSC/MainWindow.designer.vb +++ b/iBMSC/MainWindow.designer.vb @@ -25,16 +25,16 @@ Partial Class MainWindow Me.TBLangDef = New System.Windows.Forms.ToolStripMenuItem() Me.TBLangRefresh = New System.Windows.Forms.ToolStripMenuItem() Me.ToolStripSeparator9 = New System.Windows.Forms.ToolStripSeparator() - Me.TBLanguage = New System.Windows.Forms.ToolStripDropDownButton() Me.mnLanguage = New System.Windows.Forms.ToolStripMenuItem() + Me.TBLanguage = New System.Windows.Forms.ToolStripDropDownButton() Me.cmnTheme = New System.Windows.Forms.ContextMenuStrip(Me.components) Me.TBThemeDef = New System.Windows.Forms.ToolStripMenuItem() Me.TBThemeSave = New System.Windows.Forms.ToolStripMenuItem() Me.TBThemeRefresh = New System.Windows.Forms.ToolStripMenuItem() Me.TBThemeLoadComptability = New System.Windows.Forms.ToolStripMenuItem() Me.ToolStripSeparator6 = New System.Windows.Forms.ToolStripSeparator() - Me.mnTheme = New System.Windows.Forms.ToolStripMenuItem() Me.TBTheme = New System.Windows.Forms.ToolStripDropDownButton() + Me.mnTheme = New System.Windows.Forms.ToolStripMenuItem() Me.Timer1 = New System.Windows.Forms.Timer(Me.components) Me.Menu1 = New System.Windows.Forms.ContextMenuStrip(Me.components) Me.MInsert = New System.Windows.Forms.ToolStripMenuItem() @@ -124,11 +124,11 @@ Partial Class MainWindow Me.POBRandom = New System.Windows.Forms.ToolStripMenuItem() Me.POBSRandom = New System.Windows.Forms.ToolStripMenuItem() Me.POBSort = New System.Windows.Forms.ToolStripMenuItem() - Me.POConvert = New System.Windows.Forms.ToolStripDropDownButton() Me.mnPreview = New System.Windows.Forms.ToolStripMenuItem() Me.mnPlayB = New System.Windows.Forms.ToolStripMenuItem() Me.mnPlay = New System.Windows.Forms.ToolStripMenuItem() Me.mnStop = New System.Windows.Forms.ToolStripMenuItem() + Me.POConvert = New System.Windows.Forms.ToolStripDropDownButton() Me.TBMain = New System.Windows.Forms.ToolStrip() Me.TBNew = New System.Windows.Forms.ToolStripButton() Me.TBOpen = New System.Windows.Forms.ToolStripSplitButton() @@ -448,7 +448,7 @@ Partial Class MainWindow ' Me.cmnLanguage.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.TBLangDef, Me.TBLangRefresh, Me.ToolStripSeparator9}) Me.cmnLanguage.Name = "cmnLanguage" - Me.cmnLanguage.OwnerItem = Me.mnLanguage + Me.cmnLanguage.OwnerItem = Me.TBLanguage Me.cmnLanguage.Size = New System.Drawing.Size(121, 54) ' 'TBLangDef @@ -469,6 +469,14 @@ Partial Class MainWindow Me.ToolStripSeparator9.Name = "ToolStripSeparator9" Me.ToolStripSeparator9.Size = New System.Drawing.Size(117, 6) ' + 'mnLanguage + ' + Me.mnLanguage.DropDown = Me.cmnLanguage + Me.mnLanguage.Image = Global.iBMSC.My.Resources.Resources.x16Language + Me.mnLanguage.Name = "mnLanguage" + Me.mnLanguage.Size = New System.Drawing.Size(253, 22) + Me.mnLanguage.Text = "&Language" + ' 'TBLanguage ' Me.TBLanguage.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image @@ -479,19 +487,11 @@ Partial Class MainWindow Me.TBLanguage.Size = New System.Drawing.Size(29, 22) Me.TBLanguage.Text = "Language" ' - 'mnLanguage - ' - Me.mnLanguage.DropDown = Me.cmnLanguage - Me.mnLanguage.Image = Global.iBMSC.My.Resources.Resources.x16Language - Me.mnLanguage.Name = "mnLanguage" - Me.mnLanguage.Size = New System.Drawing.Size(253, 22) - Me.mnLanguage.Text = "&Language" - ' 'cmnTheme ' Me.cmnTheme.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.TBThemeDef, Me.TBThemeSave, Me.TBThemeRefresh, Me.TBThemeLoadComptability, Me.ToolStripSeparator6}) Me.cmnTheme.Name = "cmnLanguage" - Me.cmnTheme.OwnerItem = Me.TBTheme + Me.cmnTheme.OwnerItem = Me.mnTheme Me.cmnTheme.Size = New System.Drawing.Size(246, 98) ' 'TBThemeDef @@ -525,14 +525,6 @@ Partial Class MainWindow Me.ToolStripSeparator6.Name = "ToolStripSeparator6" Me.ToolStripSeparator6.Size = New System.Drawing.Size(242, 6) ' - 'mnTheme - ' - Me.mnTheme.DropDown = Me.cmnTheme - Me.mnTheme.Image = Global.iBMSC.My.Resources.Resources.x16Theme - Me.mnTheme.Name = "mnTheme" - Me.mnTheme.Size = New System.Drawing.Size(253, 22) - Me.mnTheme.Text = "&Theme" - ' 'TBTheme ' Me.TBTheme.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image @@ -543,6 +535,14 @@ Partial Class MainWindow Me.TBTheme.Size = New System.Drawing.Size(29, 22) Me.TBTheme.Text = "Theme" ' + 'mnTheme + ' + Me.mnTheme.DropDown = Me.cmnTheme + Me.mnTheme.Image = Global.iBMSC.My.Resources.Resources.x16Theme + Me.mnTheme.Name = "mnTheme" + Me.mnTheme.Size = New System.Drawing.Size(253, 22) + Me.mnTheme.Text = "&Theme" + ' 'Timer1 ' Me.Timer1.Interval = 15 @@ -1133,7 +1133,7 @@ Partial Class MainWindow ' Me.cmnConversion.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.POBLong, Me.POBShort, Me.POBLongShort, Me.ToolStripSeparator10, Me.POBHidden, Me.POBVisible, Me.POBHiddenVisible, Me.ToolStripSeparator11, Me.POBModify, Me.POBMirror, Me.POBFlip, Me.POBRandom, Me.POBSRandom, Me.POBSort}) Me.cmnConversion.Name = "cmnLanguage" - Me.cmnConversion.OwnerItem = Me.mnConversion + Me.cmnConversion.OwnerItem = Me.POConvert Me.cmnConversion.Size = New System.Drawing.Size(222, 280) ' 'POBLong @@ -1232,16 +1232,6 @@ Partial Class MainWindow Me.POBSort.Size = New System.Drawing.Size(221, 22) Me.POBSort.Text = "S&ort" ' - 'POConvert - ' - Me.POConvert.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image - Me.POConvert.DropDown = Me.cmnConversion - Me.POConvert.Image = Global.iBMSC.My.Resources.Resources.ConvertNotes - Me.POConvert.ImageTransparentColor = System.Drawing.Color.Magenta - Me.POConvert.Name = "POConvert" - Me.POConvert.Size = New System.Drawing.Size(29, 22) - Me.POConvert.Text = "Convert Notes" - ' 'mnPreview ' Me.mnPreview.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.mnPlayB, Me.mnPlay, Me.mnStop}) @@ -1273,6 +1263,16 @@ Partial Class MainWindow Me.mnStop.Size = New System.Drawing.Size(201, 22) Me.mnStop.Text = "&Stop" ' + 'POConvert + ' + Me.POConvert.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image + Me.POConvert.DropDown = Me.cmnConversion + Me.POConvert.Image = Global.iBMSC.My.Resources.Resources.ConvertNotes + Me.POConvert.ImageTransparentColor = System.Drawing.Color.Magenta + Me.POConvert.Name = "POConvert" + Me.POConvert.Size = New System.Drawing.Size(29, 22) + Me.POConvert.Text = "Convert Notes" + ' 'TBMain ' Me.TBMain.AccessibleRole = System.Windows.Forms.AccessibleRole.ToolBar diff --git a/iBMSC/MainWindow.resx b/iBMSC/MainWindow.resx index d3c869255..06f169ab8 100644 --- a/iBMSC/MainWindow.resx +++ b/iBMSC/MainWindow.resx @@ -151,7 +151,7 @@ Lo9hEfPR4tDoA7ZnpJErDjUlMUPqvnh9TQVvxlvpK2h0/as0r4Y/yDx4Rs89qo3gXkWoNMK6CmOskxnD TUooNcb6sllV+tenZlTZqcxj9tsmxR+yRzXfGW3ZrL6WZGbJhVTrD1uSmLZ1MTazqHc9co1G6p8WoP4H 4aQ0/lAENzEdbB5jBnndiJozJQuk0UzKolmf1iS64JokEHdy3x25XRU0eLPS/86VEndVdeTCCNHRN2wp - AXVPzyJh+EPEDO0wIH5oFxREhFsJHa+8QfszjT3N/dScarO9PctJk8Lb8Xy4/SC0rfvQqwjFpUJPyCNt + AXVPzyJh+EPEDO0wIH5oFxREhFsJHa+8QfszjT3N/dScarO9PctJk8zb8Xy4/SC0rfvQqwjFpUJPyCNt bgoPLwxn8mb8WPNYgNNDO3FqMMSAmKH3dAJci+mgzaAxaAto5nrXU7P66L+4NyVbV/XVBD0caN8PTfte dFeGoinn76hKWIvio6zvjvPefF71TeJvCyikw/xVmiWRQC3D1K2WZ75AnfROWG+9/zd9qp3olm+HOscH 5wQc/EcdgquKLagUukIsJiVv9XuhgLUFLymgJIA2U823dLpWuvH8ZbE3mnJHg1+W++LhzV0Yvr4LN89x @@ -181,7 +181,7 @@ S5a05i9eTJ2G6QWnjJFAH8nvT4CAbMTJOKtJhP3JmdQX0QL+ggXLixYtkkiZzEdVJPNSkjkJ3pa3aNGm dCur1/Uup2fO8bNkjjyz59R9Tl2p1K1GXSxUb/9Vk5nHnjv3jwVWVqvFNjYHSdkzim1soknmwWSMCj79 7H82fbN6jTBZs/q5yVD/65pM5rx5c1Lffts+2dLyTRGTSe38/9so9ROb1TjU+FiTIcfNmApM7fiJm45G - +x8x2STKu/SVzQAAAABJRU5ErkJggg== + +x8kTyTJAAW7mgAAAABJRU5ErkJggg== diff --git a/iBMSC/MainWindow.vb b/iBMSC/MainWindow.vb index 49d9288b7..8eecef553 100644 --- a/iBMSC/MainWindow.vb +++ b/iBMSC/MainWindow.vb @@ -820,6 +820,9 @@ Public Class MainWindow Else xComCount(xI1) = xComCount(xI1 + 1) End If + For xI2 = 1 To UBound(Notes) + If Notes(xI2).Value / 10000 > xI1 Then Notes(xI2).Value -= 10000 + Next Else xI1 += 1 End If From 729aabf5e4e16736abf4c809c4ab993ee0b020e9 Mon Sep 17 00:00:00 2001 From: psyk2642 <60137590+psyk2642@users.noreply.github.com> Date: Tue, 22 Mar 2022 23:37:55 +0800 Subject: [PATCH 069/257] Added R-Random and H-Random + Miscellaneous --- iBMSC/ImageButtonsSmall/x16HRandom.png | Bin 0 -> 5720 bytes iBMSC/ImageButtonsSmall/x16RRandom.png | Bin 0 -> 5724 bytes iBMSC/ImageButtonsSmall/x16Random.png | Bin 0 -> 5715 bytes iBMSC/ImageButtonsSmall/x16SRandom.png | Bin 0 -> 5720 bytes iBMSC/MainWindow.designer.vb | 70 ++++--- iBMSC/MainWindow.resx | 10 +- iBMSC/MainWindow.vb | 237 +++++++++++------------ iBMSC/My Project/Resources.Designer.vb | 40 ++++ iBMSC/My Project/Resources.resx | 12 ++ iBMSC/Option Windows/OpExpand.vb | 4 +- iBMSC/Option Windows/OpVisualOverride.vb | 4 +- 11 files changed, 219 insertions(+), 158 deletions(-) create mode 100644 iBMSC/ImageButtonsSmall/x16HRandom.png create mode 100644 iBMSC/ImageButtonsSmall/x16RRandom.png create mode 100644 iBMSC/ImageButtonsSmall/x16Random.png create mode 100644 iBMSC/ImageButtonsSmall/x16SRandom.png diff --git a/iBMSC/ImageButtonsSmall/x16HRandom.png b/iBMSC/ImageButtonsSmall/x16HRandom.png new file mode 100644 index 0000000000000000000000000000000000000000..756805de4b50904777484ca45ddf29e2a5db5372 GIT binary patch literal 5720 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 MpA@)n{LF>_1(&2lssI20 literal 0 HcmV?d00001 diff --git a/iBMSC/ImageButtonsSmall/x16RRandom.png b/iBMSC/ImageButtonsSmall/x16RRandom.png new file mode 100644 index 0000000000000000000000000000000000000000..7b25de5f3cf3a48be3adf317d1f1bd48b6c2b944 GIT binary patch literal 5724 zcmeHLX;c$g7A{0UL4`)!y){G>6)XF0B5Q!CKp+8wgG;5V0?}+H1qrCFf+)D+g3=Cx zXuAL+cB{BG(ljuL3j%`jve({U~mKjb*Kenh^#Wl~Q0 z*PEW$XRN!Q*(BVVGa+(nfk9l^mi5cjDF>n+@3bryHdmIVBJNGbvgDg>`owjvGvy79 zRR5caHBXx(8n1PD<%_n=-aK;SxwH$z-OmZ)U78lh&_|psnZ>IsdVDhL^~=>U+2Ws- z-lB4^fEQ&LfG+9^*DZ^*kc@EW^{xs=+N`| zP1-3%X-k|AWXqPWobR}AgXnHUH0AuJc{h%JnXGy0tCOd%S}ffgmgTs+NY`{**~&bc zU(ur2(NKNLU@z%69UHA#*j!z441Oee{n({gJxhaJzL$M^=o*IKhHH~7%(Z5pk?1&w zy$?DR71Vp9G^gmbm)$FUSN~&3;SuQ8Gt;hEhyDpcN#nMp{5WoBRsM_nlQJFV(xed! z;xZ5G?N$$vdFOc8*-0lvTo|_Tdb(SP(;nx4#kh|r`4+a^@$}je#L`!;52#7j~ISh1BXr$|>1%In0yFtJT|z z;<#q&e3uaw`wJ$H@SZ=j;7e2V%na-#NebtFO23<7o1B>?&N`~&f1Z@Z)yPeE{#_aMs_F%hvxN%#|v<oYtrFutTj2{p3{w8PPygi?A{Xg6~hqVs5qZo~~{8qQ`6!FOEw3r5I#=-Q;b%hb6*R|DvFE8J_LIqPMA=eEcZi#Ew~bH#>OL zRL>gMcTVMJ+0VBP)kV^rkC!*Us-d|xJNy#$^Sc?P?QaI&Ug3D;_<{0Rd({j{3FpL< zFY3<@j*aEAlUz@=*g57BwV7jU!)531uj*jFIWVo>>_QZuDPzA{@&@|0plJV?+qd0D zPLaOaRdaUw-n6TBsoak5`8z8*y23m>f-BjPfzE&kSdwMF0S_ zIDwEXT8+*mu!zVuTmg8t4pYe_n+dU4L{@}KNdbBzPGV756dEkHs1q6F8O|i35mN~w z1B1FDz?+C1PY?zHm1;JdDP|@`Z;YeT`FuW=#-K77FtC74Njd_tz&g_eD?}GYAZ|j9 zY6GFx>qu5iM5#|8L}W6UC%w;4YX}Yf0IxH3vjF&@S`Y)3PN7k?T53-Z6Cq9nAl(W5 zsfS4p`Z_fdH|Z0MC@xOKb;N|85E%Nw-;iL`*vi3BDz3q`z|;hy(tCvrmV`<_cvvZj zQ)>-2FF!!cakw-l#>ua;mjR98NXp;%pOE!UcX(iHOXgbVap| zNHqwd0uEpgsCAg$Z2D*{S8H(@fmr#Zb68wHhsNe}xl9(9$M|RzjT=osi&j)Rjl%3g zwl0hSlmnop>>H3gE@(Sg$n zuD7mDpi$eVNFzYF25nUV(c6hg>-jA#QWVx7pREeQXHjH!V z7|h~wRWQQ95wP|g9zy40T#U!+jc(Gb2s2{D{o+8Spc)_{TQ#J~-DFPbZEudptxVCt z{-!Zu21CwZ2v|%3i$jR)u`VPq)lIV*~)*7vz)p z?W3!Yu1{j%lZ^Y+)koJSG4M&oed_wl=yLven!|PA2c8+6)wmPu20)NKB%Li6+fIB? zXJ=>EL*KoRf&VK8ayFDa0tMRh?tQl)+7oX^Dx>dFS@j*X{2NxFTJiT{j(OmP6RqxTy*N21&$W Kfk*roru+f1O*?D= literal 0 HcmV?d00001 diff --git a/iBMSC/ImageButtonsSmall/x16Random.png b/iBMSC/ImageButtonsSmall/x16Random.png new file mode 100644 index 0000000000000000000000000000000000000000..c062b8b42f7e936ce1947df050308c347465b13e GIT binary patch literal 5715 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 K_&{L7vi|~ShdH?b literal 0 HcmV?d00001 diff --git a/iBMSC/MainWindow.designer.vb b/iBMSC/MainWindow.designer.vb index d828bd67b..7748c0f2c 100644 --- a/iBMSC/MainWindow.designer.vb +++ b/iBMSC/MainWindow.designer.vb @@ -25,16 +25,16 @@ Partial Class MainWindow Me.TBLangDef = New System.Windows.Forms.ToolStripMenuItem() Me.TBLangRefresh = New System.Windows.Forms.ToolStripMenuItem() Me.ToolStripSeparator9 = New System.Windows.Forms.ToolStripSeparator() - Me.mnLanguage = New System.Windows.Forms.ToolStripMenuItem() Me.TBLanguage = New System.Windows.Forms.ToolStripDropDownButton() + Me.mnLanguage = New System.Windows.Forms.ToolStripMenuItem() Me.cmnTheme = New System.Windows.Forms.ContextMenuStrip(Me.components) Me.TBThemeDef = New System.Windows.Forms.ToolStripMenuItem() Me.TBThemeSave = New System.Windows.Forms.ToolStripMenuItem() Me.TBThemeRefresh = New System.Windows.Forms.ToolStripMenuItem() Me.TBThemeLoadComptability = New System.Windows.Forms.ToolStripMenuItem() Me.ToolStripSeparator6 = New System.Windows.Forms.ToolStripSeparator() - Me.TBTheme = New System.Windows.Forms.ToolStripDropDownButton() Me.mnTheme = New System.Windows.Forms.ToolStripMenuItem() + Me.TBTheme = New System.Windows.Forms.ToolStripDropDownButton() Me.Timer1 = New System.Windows.Forms.Timer(Me.components) Me.Menu1 = New System.Windows.Forms.ContextMenuStrip(Me.components) Me.MInsert = New System.Windows.Forms.ToolStripMenuItem() @@ -122,7 +122,9 @@ Partial Class MainWindow Me.POBMirror = New System.Windows.Forms.ToolStripMenuItem() Me.POBFlip = New System.Windows.Forms.ToolStripMenuItem() Me.POBRandom = New System.Windows.Forms.ToolStripMenuItem() + Me.POBRRandom = New System.Windows.Forms.ToolStripMenuItem() Me.POBSRandom = New System.Windows.Forms.ToolStripMenuItem() + Me.POBHRandom = New System.Windows.Forms.ToolStripMenuItem() Me.POBSort = New System.Windows.Forms.ToolStripMenuItem() Me.mnPreview = New System.Windows.Forms.ToolStripMenuItem() Me.mnPlayB = New System.Windows.Forms.ToolStripMenuItem() @@ -448,7 +450,7 @@ Partial Class MainWindow ' Me.cmnLanguage.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.TBLangDef, Me.TBLangRefresh, Me.ToolStripSeparator9}) Me.cmnLanguage.Name = "cmnLanguage" - Me.cmnLanguage.OwnerItem = Me.TBLanguage + Me.cmnLanguage.OwnerItem = Me.mnLanguage Me.cmnLanguage.Size = New System.Drawing.Size(121, 54) ' 'TBLangDef @@ -469,14 +471,6 @@ Partial Class MainWindow Me.ToolStripSeparator9.Name = "ToolStripSeparator9" Me.ToolStripSeparator9.Size = New System.Drawing.Size(117, 6) ' - 'mnLanguage - ' - Me.mnLanguage.DropDown = Me.cmnLanguage - Me.mnLanguage.Image = Global.iBMSC.My.Resources.Resources.x16Language - Me.mnLanguage.Name = "mnLanguage" - Me.mnLanguage.Size = New System.Drawing.Size(253, 22) - Me.mnLanguage.Text = "&Language" - ' 'TBLanguage ' Me.TBLanguage.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image @@ -487,11 +481,19 @@ Partial Class MainWindow Me.TBLanguage.Size = New System.Drawing.Size(29, 22) Me.TBLanguage.Text = "Language" ' + 'mnLanguage + ' + Me.mnLanguage.DropDown = Me.cmnLanguage + Me.mnLanguage.Image = Global.iBMSC.My.Resources.Resources.x16Language + Me.mnLanguage.Name = "mnLanguage" + Me.mnLanguage.Size = New System.Drawing.Size(253, 22) + Me.mnLanguage.Text = "&Language" + ' 'cmnTheme ' Me.cmnTheme.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.TBThemeDef, Me.TBThemeSave, Me.TBThemeRefresh, Me.TBThemeLoadComptability, Me.ToolStripSeparator6}) Me.cmnTheme.Name = "cmnLanguage" - Me.cmnTheme.OwnerItem = Me.mnTheme + Me.cmnTheme.OwnerItem = Me.TBTheme Me.cmnTheme.Size = New System.Drawing.Size(246, 98) ' 'TBThemeDef @@ -525,6 +527,14 @@ Partial Class MainWindow Me.ToolStripSeparator6.Name = "ToolStripSeparator6" Me.ToolStripSeparator6.Size = New System.Drawing.Size(242, 6) ' + 'mnTheme + ' + Me.mnTheme.DropDown = Me.cmnTheme + Me.mnTheme.Image = Global.iBMSC.My.Resources.Resources.x16Theme + Me.mnTheme.Name = "mnTheme" + Me.mnTheme.Size = New System.Drawing.Size(253, 22) + Me.mnTheme.Text = "&Theme" + ' 'TBTheme ' Me.TBTheme.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image @@ -535,14 +545,6 @@ Partial Class MainWindow Me.TBTheme.Size = New System.Drawing.Size(29, 22) Me.TBTheme.Text = "Theme" ' - 'mnTheme - ' - Me.mnTheme.DropDown = Me.cmnTheme - Me.mnTheme.Image = Global.iBMSC.My.Resources.Resources.x16Theme - Me.mnTheme.Name = "mnTheme" - Me.mnTheme.Size = New System.Drawing.Size(253, 22) - Me.mnTheme.Text = "&Theme" - ' 'Timer1 ' Me.Timer1.Interval = 15 @@ -1131,10 +1133,10 @@ Partial Class MainWindow ' 'cmnConversion ' - Me.cmnConversion.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.POBLong, Me.POBShort, Me.POBLongShort, Me.ToolStripSeparator10, Me.POBHidden, Me.POBVisible, Me.POBHiddenVisible, Me.ToolStripSeparator11, Me.POBModify, Me.POBMirror, Me.POBFlip, Me.POBRandom, Me.POBSRandom, Me.POBSort}) + Me.cmnConversion.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.POBLong, Me.POBShort, Me.POBLongShort, Me.ToolStripSeparator10, Me.POBHidden, Me.POBVisible, Me.POBHiddenVisible, Me.ToolStripSeparator11, Me.POBModify, Me.POBMirror, Me.POBFlip, Me.POBRandom, Me.POBRRandom, Me.POBSRandom, Me.POBHRandom, Me.POBSort}) Me.cmnConversion.Name = "cmnLanguage" Me.cmnConversion.OwnerItem = Me.POConvert - Me.cmnConversion.Size = New System.Drawing.Size(222, 280) + Me.cmnConversion.Size = New System.Drawing.Size(222, 346) ' 'POBLong ' @@ -1213,17 +1215,31 @@ Partial Class MainWindow ' 'POBRandom ' - Me.POBRandom.Image = Global.iBMSC.My.Resources.Resources.x16Mirror + Me.POBRandom.Image = Global.iBMSC.My.Resources.Resources.x16Random Me.POBRandom.Name = "POBRandom" Me.POBRandom.Size = New System.Drawing.Size(221, 22) Me.POBRandom.Text = "&Random" ' + 'POBRRandom + ' + Me.POBRRandom.Image = Global.iBMSC.My.Resources.Resources.x16RRandom + Me.POBRRandom.Name = "POBRRandom" + Me.POBRRandom.Size = New System.Drawing.Size(221, 22) + Me.POBRRandom.Text = "&R-Random" + ' 'POBSRandom ' - Me.POBSRandom.Image = Global.iBMSC.My.Resources.Resources.x16Mirror + Me.POBSRandom.Image = Global.iBMSC.My.Resources.Resources.x16SRandom Me.POBSRandom.Name = "POBSRandom" Me.POBSRandom.Size = New System.Drawing.Size(221, 22) - Me.POBSRandom.Text = "S-R&andom" + Me.POBSRandom.Text = "&S-Random" + ' + 'POBHRandom + ' + Me.POBHRandom.Image = Global.iBMSC.My.Resources.Resources.x16HRandom + Me.POBHRandom.Name = "POBHRandom" + Me.POBHRandom.Size = New System.Drawing.Size(221, 22) + Me.POBHRandom.Text = "&H-Random" ' 'POBSort ' @@ -1281,7 +1297,7 @@ Partial Class MainWindow Me.TBMain.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.TBNew, Me.TBOpen, Me.TBSave, Me.ToolStripSeparator1, Me.TBCut, Me.TBCopy, Me.TBPaste, Me.TBFind, Me.ToolStripSeparator24, Me.TBStatistics, Me.POConvert, Me.TBMyO2, Me.ToolStripSeparator4, Me.TBErrorCheck, Me.TBPreviewOnClick, Me.TBShowFileName, Me.ToolStripSeparator8, Me.TBNTInput, Me.TBWavIncrease, Me.ToolStripSeparator2, Me.TBUndo, Me.TBRedo, Me.ToolStripSeparator5, Me.TBTimeSelect, Me.TBSelect, Me.TBWrite, Me.ToolStripSeparator3, Me.TBPlayB, Me.TBPlay, Me.TBStop, Me.TBPOptions, Me.ToolStripSeparator7, Me.TBVOptions, Me.TBGOptions, Me.TBLanguage, Me.TBTheme, Me.POBStorm, Me.TBTotalValue}) Me.TBMain.Location = New System.Drawing.Point(3, 23) Me.TBMain.Name = "TBMain" - Me.TBMain.Size = New System.Drawing.Size(764, 25) + Me.TBMain.Size = New System.Drawing.Size(818, 25) Me.TBMain.TabIndex = 64 Me.TBMain.Text = "Main Toolbar" ' @@ -4574,4 +4590,6 @@ Partial Class MainWindow Friend WithEvents BExpansion As Button Friend WithEvents TBTotalValue As ToolStripLabel Friend WithEvents THSubArtist As TextBox + Friend WithEvents POBRRandom As ToolStripMenuItem + Friend WithEvents POBHRandom As ToolStripMenuItem End Class diff --git a/iBMSC/MainWindow.resx b/iBMSC/MainWindow.resx index 06f169ab8..86ac48745 100644 --- a/iBMSC/MainWindow.resx +++ b/iBMSC/MainWindow.resx @@ -151,7 +151,7 @@ Lo9hEfPR4tDoA7ZnpJErDjUlMUPqvnh9TQVvxlvpK2h0/as0r4Y/yDx4Rs89qo3gXkWoNMK6CmOskxnD TUooNcb6sllV+tenZlTZqcxj9tsmxR+yRzXfGW3ZrL6WZGbJhVTrD1uSmLZ1MTazqHc9co1G6p8WoP4H 4aQ0/lAENzEdbB5jBnndiJozJQuk0UzKolmf1iS64JokEHdy3x25XRU0eLPS/86VEndVdeTCCNHRN2wp - AXVPzyJh+EPEDO0wIH5oFxREhFsJHa+8QfszjT3N/dScarO9PctJk8zb8Xy4/SC0rfvQqwjFpUJPyCNt + AXVPzyJh+EPEDO0wIH5oFxREhFsJHa+8QfszjT3N/dScarO9PctJk8jb8Xy4/SC0rfvQqwjFpUJPyCNt bgoPLwxn8mb8WPNYgNNDO3FqMMSAmKH3dAJci+mgzaAxaAto5nrXU7P66L+4NyVbV/XVBD0caN8PTfte dFeGoinn76hKWIvio6zvjvPefF71TeJvCyikw/xVmiWRQC3D1K2WZ75AnfROWG+9/zd9qp3olm+HOscH 5wQc/EcdgquKLagUukIsJiVv9XuhgLUFLymgJIA2U823dLpWuvH8ZbE3mnJHg1+W++LhzV0Yvr4LN89x @@ -181,7 +181,7 @@ S5a05i9eTJ2G6QWnjJFAH8nvT4CAbMTJOKtJhP3JmdQX0QL+ggXLixYtkkiZzEdVJPNSkjkJ3pa3aNGm dCur1/Uup2fO8bNkjjyz59R9Tl2p1K1GXSxUb/9Vk5nHnjv3jwVWVqvFNjYHSdkzim1soknmwWSMCj79 7H82fbN6jTBZs/q5yVD/65pM5rx5c1Lffts+2dLyTRGTSe38/9so9ROb1TjU+FiTIcfNmApM7fiJm45G - +x8kTyTJAAW7mgAAAABJRU5ErkJggg== + +x/7oiTGdApFQAAAAABJRU5ErkJggg== @@ -190,6 +190,12 @@ 931, 2 + + 1022, 2 + + + 931, 2 + 1120, 2 diff --git a/iBMSC/MainWindow.vb b/iBMSC/MainWindow.vb index 8eecef553..2f7decaac 100644 --- a/iBMSC/MainWindow.vb +++ b/iBMSC/MainWindow.vb @@ -2190,6 +2190,7 @@ EndSearch: UpdatePairing() Dim data(6, 5) As Integer + Dim dataLNToggle As Boolean = True ' For halving long note counts in Not NTInput mode For i As Integer = 1 To UBound(Notes) With Notes(i) Dim row As Integer = -1 @@ -2206,7 +2207,10 @@ EndSearch: StartCount: If Not NTInput Then If Not .LongNote Then data(row, 0) += 1 - If .LongNote Then data(row, 1) += 1 + If .LongNote Then + If dataLNToggle Then data(row, 1) += 1 + dataLNToggle = Not dataLNToggle + End If If .Value \ 10000 = LnObj Then data(row, 2) += 1 If .Hidden Then data(row, 3) += 1 If .HasError Then data(row, 4) += 1 @@ -2246,6 +2250,7 @@ StartCount: If Not NTInput Then Strings.fStatistics.lTotal} Dim data(rows, cols) As Integer Dim dataWAV(1295, 1) As Integer + Dim dataLNToggle As Boolean = True ' For halving long note counts in Not NTInput mode Dim noteLanes = {niA1, niA2, niA3, niA4, niA5, niA6, niA7, niA8, niD1, niD2, niD3, niD4, niD5, niD6, niD7, niD8} @@ -2288,20 +2293,23 @@ StartCount: If Not NTInput Then StartCount: If Not NTInput Then - If Not (.LongNote Or .Hidden Or .Landmine Or .Hidden Or .Value \ 10000 = LnObj) Then + If Not (.LongNote Or .Hidden Or .Landmine Or .Hidden Or .Value \ 10000 = LnObj Or .Comment) Then data(row, 0) += 1 If noteLanes.Contains(.ColumnIndex) Or .ColumnIndex >= niB Then dataWAV(.Value / 10000, 1) += 1 End If End If - If .LongNote Then data(row, 1) += 1 + If .LongNote Then + If dataLNToggle Then data(row, 1) += 1 : dataWAV(.Value / 10000, 1) += 1 + dataLNToggle = Not dataLNToggle + End If If .Value \ 10000 = LnObj Then data(row, 2) += 1 If .Hidden Then data(row, 3) += 1 If .Landmine Then data(row, 4) += 1 If .HasError Then data(row, 5) += 1 Else - If Not (.LongNote Or .Hidden Or .Landmine Or .Hidden Or .Value \ 10000 = LnObj) Then + If Not (.LongNote Or .Hidden Or .Landmine Or .Hidden Or .Value \ 10000 = LnObj Or .Comment) Then data(row, 0) += 1 If noteLanes.Contains(.ColumnIndex) Or .ColumnIndex >= niB Then dataWAV(.Value / 10000, 1) += 1 @@ -2352,19 +2360,23 @@ StartCount: If Not NTInput Then If Not NTInput Then For xI1 = 1 To UBound(Notes) - If Notes(xI1).ColumnIndex >= niA1 And Notes(xI1).ColumnIndex <= niD8 Then - If Not (Notes(xI1).LongNote Or Notes(xI1).Hidden Or Notes(xI1).Landmine Or Notes(xI1).Hidden Or Notes(xI1).Value \ 10000 = LnObj Or Notes(xI1).Comment) Then - xIAll += 1 - ElseIf Notes(xI1).LongNote AndAlso Not (Notes(xI1).Hidden Or Notes(xI1).Landmine Or Notes(xI1).Hidden Or Notes(xI1).Value \ 10000 = LnObj Or Notes(xI1).Comment) Then - xITemp += 1 + With Notes(xI1) + If .ColumnIndex >= niA1 And .ColumnIndex <= niD8 Then + If Not (.LongNote Or .Hidden Or .Landmine Or .Hidden Or .Value \ 10000 = LnObj Or .Comment) Then + xIAll += 1 + ElseIf .LongNote AndAlso Not (.Hidden Or .Landmine Or .Hidden Or .Value \ 10000 = LnObj Or .Comment) Then + xITemp += 1 + End If End If - End If + End With Next xIAll += xITemp / 2 Else For xI1 = 1 To UBound(Notes) - If Notes(xI1).ColumnIndex >= niA1 And Notes(xI1).ColumnIndex <= niD8 AndAlso - Not (Notes(xI1).LongNote Or Notes(xI1).Hidden Or Notes(xI1).Landmine Or Notes(xI1).Hidden Or Notes(xI1).Value \ 10000 = LnObj Or Notes(xI1).Comment) Then xIAll += 1 + With Notes(xI1) + If .ColumnIndex >= niA1 And .ColumnIndex <= niD8 AndAlso + Not (.LongNote Or .Hidden Or .Landmine Or .Hidden Or .Value \ 10000 = LnObj Or .Comment) Then xIAll += 1 + End With Next End If @@ -2651,7 +2663,7 @@ DoNothing: RefreshPanelAll() End Sub - Private Sub POBRandom_Click(sender As Object, e As EventArgs) Handles POBRandom.Click + Private Sub POBRandomAll(ByVal Mode As String) Dim xI1 As Integer Dim xI2 As Integer Dim xUndo As UndoRedo.LinkedURCmd = Nothing @@ -2726,128 +2738,83 @@ Skip2: Next Dim xniArrayR = xniArray1.Clone() - Shuffle(xniArrayR) - - Dim xCol As Integer - For xI1 = 1 To UBound(Notes) - If Not Notes(xI1).Selected Or Notes(xI1).Ghost Then Continue For - xCol = Notes(xI1).ColumnIndex - For xI2 = 0 To xniArray1.Length - 1 - If xCol = xniArray1(xI2) Then - xCol = xniArrayR(xI2) - Exit For + Select Case Mode + Case "Random", "RRandom" + If Mode = "Random" Then + Shuffle(xniArrayR) + Else + Dim R As Integer = Math.Floor(xniArrayR.Length * Rnd()) + For i = 0 To UBound(xniArrayR) + xniArrayR(i) = xniArray1((i + R) Mod xniArrayR.Length) + Next End If - Next - - Me.RedoMoveNote(Notes(xI1), xCol, Notes(xI1).VPosition, xUndo, xRedo) - Notes(xI1).ColumnIndex = xCol - Next - -DoNothing: - - AddUndo(xUndo, xBaseRedo.Next) - UpdatePairing() - RefreshPanelAll() - End Sub + Dim xCol As Integer + For xI1 = 1 To UBound(Notes) + With Notes(xI1) + If Not .Selected Or .Ghost Then Continue For + + xCol = .ColumnIndex + For xI2 = 0 To xniArray1.Length - 1 + If xCol = xniArray1(xI2) Then + xCol = xniArrayR(xI2) + Exit For + End If - Private Sub POBSRandom_Click(sender As Object, e As EventArgs) Handles POBSRandom.Click - Dim xI1 As Integer - Dim xUndo As UndoRedo.LinkedURCmd = Nothing - Dim xRedo As UndoRedo.LinkedURCmd = New UndoRedo.Void - Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo + Next - ' Array 0: Unmodified array - ' Array 1: Modified array based on range - Dim xniArray0() As Integer - Select Case gXKeyMode - Case "SP" - xniArray0 = {niA1, niA2, niA3, niA4, niA5, niA6, niA7, niA8} - Case "PMS" - xniArray0 = {niA2, niA3, niA4, niA5, niA6, niD2, niD3, niD4, niD5} - Case "DP" - xniArray0 = {niA1, niA2, niA3, niA4, niA5, niA6, niA7, niA8, niD1, niD2, niD3, niD4, niD5, niD6, niD7, niD8} - Case Else - xniArray0 = {niA1, niA2, niA3, niA4, niA5, niA6, niA7, niA8} + Me.RedoMoveNote(Notes(xI1), xCol, .VPosition, xUndo, xRedo) + .ColumnIndex = xCol + End With + Next + Case "SRandom", "HRandom" + ' Find array of indexes of selected notes in the same vPosition + xI1 = 1 + Dim xI1Arr(-1) As Integer + Dim vPos As Integer + Dim xI1ArrPrevUBound As Integer = -1 + ' Find the first index of selected notes + Do While xI1 <= UBound(Notes) + If Not Notes(xI1).Selected Or Notes(xI1).Ghost Or Notes(xI1).ColumnIndex < xniArray1(0) Or Notes(xI1).ColumnIndex > xniArray1(UBound(xniArray1)) Then xI1 += 1 : Continue Do + ' Begin building array until vPosition changes + vPos = Notes(xI1).VPosition + Do While xI1 <= UBound(Notes) AndAlso Notes(xI1).VPosition = vPos + If Not Notes(xI1).Selected Or Notes(xI1).Ghost Or Notes(xI1).ColumnIndex < xniArray1(0) Or Notes(xI1).ColumnIndex > xniArray1(UBound(xniArray1)) Then xI1 += 1 : Continue Do + ReDim Preserve xI1Arr(xI1Arr.Length) + xI1Arr(UBound(xI1Arr)) = xI1 + xI1 += 1 + Loop + If Mode = "SRandom" Or xI1ArrPrevUBound = -1 Then ' If SRandom or for HRandom, if it's the first set of notes + Shuffle(xniArrayR) + Else + Dim xniArrayR1(xI1ArrPrevUBound) As String + Dim xniArrayR2(UBound(xniArray1) - xI1ArrPrevUBound - 1) As String + For i = 0 To UBound(xniArrayR1) + xniArrayR1(i) = xniArrayR(i) + Next + For i = 0 To UBound(xniArrayR2) + xniArrayR2(i) = xniArrayR(i + xI1ArrPrevUBound + 1) + Next + Shuffle(xniArrayR1) + Shuffle(xniArrayR2) + For i = 0 To UBound(xniArrayR2) + xniArrayR(i) = xniArrayR2(i) + Next + For i = UBound(xniArrayR2) + 1 To UBound(xniArrayR) + xniArrayR(i) = xniArrayR1(i - UBound(xniArrayR2) - 1) + Next + End If + For xI2 = 0 To UBound(xI1Arr) + Dim xI2I = xI1Arr(xI2) + Me.RedoMoveNote(Notes(xI2I), xniArrayR(xI2), Notes(xI2I).VPosition, xUndo, xRedo) + Notes(xI2I).ColumnIndex = xniArrayR(xI2) + Next + xI1ArrPrevUBound = UBound(xI1Arr) + ReDim xI1Arr(-1) + Loop End Select - ' Dim xniArray1 = Integer() ' xniArray0 - - ' New function: Declare an array to see the range of selected notes. B columns ignored. - Dim xRangeL As Integer = niB ' Big number - Dim xRangeU As Integer = 0 ' Smol number - - ' Range finder - For xI1 = 1 To UBound(Notes) - If Not Notes(xI1).Selected Then Continue For - If xRangeL > Notes(xI1).ColumnIndex Then xRangeL = Notes(xI1).ColumnIndex - If xRangeU < Notes(xI1).ColumnIndex Then xRangeU = Notes(xI1).ColumnIndex - Next - - ' Modify xniArray based on range - ' Out of range - If xRangeL > xniArray0(UBound(xniArray0)) Or xRangeU < xniArray0(0) Then GoTo DoNothing - - ' Semi-in Range - ' Cut off left side - If xRangeL < niA1 Then - xRangeL = 0 - GoTo Skip1 - End If - - For xI1 = 0 To UBound(xniArray0) - If xniArray0(xI1) = xRangeL Then - xRangeL = xI1 - Exit For - End If - Next - -Skip1: - ' Cut off right side - If xRangeU > niD8 Then - xRangeU = xniArray0.Length - GoTo Skip2 - End If - - For xI1 = 0 To UBound(xniArray0) - If xniArray0(xI1) = xRangeU Then - xRangeU = xI1 + 1 - Exit For - End If - Next - -Skip2: - - Dim xniArray1(xRangeU - xRangeL - 1) - For xI1 = 0 To xRangeU - xRangeL - 1 - xniArray1(xI1) = xniArray0(xI1 + xRangeL) - Next - Dim xniArray1R = xniArray1.Clone - ' Find array of indexes of selected notes in the same vPosition - xI1 = 1 - Dim xI1Arr(-1) As Integer - Dim vPos As Integer - ' Find the first index of selected notes - Do While xI1 <= UBound(Notes) - If Not Notes(xI1).Selected Or Notes(xI1).Ghost Or Notes(xI1).ColumnIndex < xniArray1(0) Or Notes(xI1).ColumnIndex > xniArray1(UBound(xniArray1)) Then xI1 += 1 : Continue Do - ' Begin building array until vPosition changes - vPos = Notes(xI1).VPosition - Do While xI1 <= UBound(Notes) AndAlso Notes(xI1).VPosition = vPos - If Not Notes(xI1).Selected Or Notes(xI1).Ghost Or Notes(xI1).ColumnIndex < xniArray1(0) Or Notes(xI1).ColumnIndex > xniArray1(UBound(xniArray1)) Then xI1 += 1 : Continue Do - ReDim Preserve xI1Arr(xI1Arr.Length) - xI1Arr(UBound(xI1Arr)) = xI1 - xI1 += 1 - Loop - Shuffle(xniArray1R) - For xI2 = 0 To UBound(xI1Arr) - Dim xI2I = xI1Arr(xI2) - Me.RedoMoveNote(Notes(xI2I), xniArray1R(xI2), Notes(xI2I).VPosition, xUndo, xRedo) - Notes(xI2I).ColumnIndex = xniArray1R(xI2) - Next - ReDim xI1Arr(-1) - xniArray1R = xniArray1.Clone - Loop DoNothing: @@ -2855,7 +2822,21 @@ DoNothing: UpdatePairing() RefreshPanelAll() End Sub + Private Sub POBRandom_Click(sender As Object, e As EventArgs) Handles POBRandom.Click + POBRandomAll("Random") + End Sub + + Private Sub POBRRandom_Click(sender As Object, e As EventArgs) Handles POBRRandom.Click + POBRandomAll("RRandom") + End Sub + Private Sub POBSRandom_Click(sender As Object, e As EventArgs) Handles POBSRandom.Click + POBRandomAll("SRandom") + End Sub + + Private Sub POBHRandom_Click(sender As Object, e As EventArgs) Handles POBHRandom.Click + POBRandomAll("HRandom") + End Sub Private Sub POBSort_Click(sender As Object, e As EventArgs) Handles POBSort.Click Dim xI1 As Integer Dim xI2 As Integer diff --git a/iBMSC/My Project/Resources.Designer.vb b/iBMSC/My Project/Resources.Designer.vb index fad68dbc2..231ae141d 100644 --- a/iBMSC/My Project/Resources.Designer.vb +++ b/iBMSC/My Project/Resources.Designer.vb @@ -515,6 +515,16 @@ Namespace My.Resources End Get End Property + ''' + ''' Looks up a localized resource of type System.Drawing.Bitmap. + ''' + Friend ReadOnly Property x16HRandom() As System.Drawing.Bitmap + Get + Dim obj As Object = ResourceManager.GetObject("x16HRandom", resourceCulture) + Return CType(obj,System.Drawing.Bitmap) + End Get + End Property + ''' ''' Looks up a localized resource of type System.Drawing.Bitmap. ''' @@ -805,6 +815,16 @@ Namespace My.Resources End Get End Property + ''' + ''' Looks up a localized resource of type System.Drawing.Bitmap. + ''' + Friend ReadOnly Property x16Random() As System.Drawing.Bitmap + Get + Dim obj As Object = ResourceManager.GetObject("x16Random", resourceCulture) + Return CType(obj,System.Drawing.Bitmap) + End Get + End Property + ''' ''' Looks up a localized resource of type System.Drawing.Bitmap. ''' @@ -835,6 +855,16 @@ Namespace My.Resources End Get End Property + ''' + ''' Looks up a localized resource of type System.Drawing.Bitmap. + ''' + Friend ReadOnly Property x16RRandom() As System.Drawing.Bitmap + Get + Dim obj As Object = ResourceManager.GetObject("x16RRandom", resourceCulture) + Return CType(obj,System.Drawing.Bitmap) + End Get + End Property + ''' ''' Looks up a localized resource of type System.Drawing.Bitmap. ''' @@ -895,6 +925,16 @@ Namespace My.Resources End Get End Property + ''' + ''' Looks up a localized resource of type System.Drawing.Bitmap. + ''' + Friend ReadOnly Property x16SRandom() As System.Drawing.Bitmap + Get + Dim obj As Object = ResourceManager.GetObject("x16SRandom", resourceCulture) + Return CType(obj,System.Drawing.Bitmap) + End Get + End Property + ''' ''' Looks up a localized resource of type System.Drawing.Bitmap. ''' diff --git a/iBMSC/My Project/Resources.resx b/iBMSC/My Project/Resources.resx index 57641e43f..d799f1b43 100644 --- a/iBMSC/My Project/Resources.resx +++ b/iBMSC/My Project/Resources.resx @@ -253,6 +253,9 @@ ..\ImageButtonsSmall\x16Help.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\ImageButtonsSmall\x16HRandom.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + ..\ImageButtonsSmall\x16Import.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -340,6 +343,9 @@ ..\ImageButtonsSmall\x16PreviewOnClickN.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\ImageButtonsSmall\x16Random.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + ..\ImageButtonsSmall\x16Redo.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -349,6 +355,9 @@ ..\MiscButtons\x16Remove.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\ImageButtonsSmall\x16RRandom.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + ..\ImageButtonsSmall\x16Save.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -367,6 +376,9 @@ ..\ImageButtonsSmall\x16ShowFileNameN.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\ImageButtonsSmall\x16SRandom.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + ..\ImageButtonsSmall\x16Statistics.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a diff --git a/iBMSC/Option Windows/OpExpand.vb b/iBMSC/Option Windows/OpExpand.vb index 5946b8432..09e5c1422 100644 --- a/iBMSC/Option Windows/OpExpand.vb +++ b/iBMSC/Option Windows/OpExpand.vb @@ -1,4 +1,6 @@ -Public Class OpExpand +Imports System.Windows.Forms + +Public Class OpExpand Dim TExpansionTextSplit() As String = Split(MainWindow.TExpansion.Text, vbCrLf, , CompareMethod.Text) Dim CurrSelection As Integer = -1 diff --git a/iBMSC/Option Windows/OpVisualOverride.vb b/iBMSC/Option Windows/OpVisualOverride.vb index 6c9536a6e..60a1da9fa 100644 --- a/iBMSC/Option Windows/OpVisualOverride.vb +++ b/iBMSC/Option Windows/OpVisualOverride.vb @@ -1,4 +1,6 @@ -Public Class OpVisualOverride +Imports System.Windows.Forms + +Public Class OpVisualOverride Dim COverrides() As MainWindow.ColorOverride Dim F As String Public Sub New(ByVal FileName As String) From ddd4cfd4e4e3e8d9f1d80ab4bb2d0fb06c11cb4c Mon Sep 17 00:00:00 2001 From: psyk2642 <60137590+psyk2642@users.noreply.github.com> Date: Tue, 22 Mar 2022 23:38:53 +0800 Subject: [PATCH 070/257] Update AssemblyInfo.vb --- iBMSC/My Project/AssemblyInfo.vb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/iBMSC/My Project/AssemblyInfo.vb b/iBMSC/My Project/AssemblyInfo.vb index f72b4d1d2..6719c621c 100644 --- a/iBMSC/My Project/AssemblyInfo.vb +++ b/iBMSC/My Project/AssemblyInfo.vb @@ -33,7 +33,7 @@ Imports System.Runtime.InteropServices ' by using the '*' as shown below: ' - - + + \ No newline at end of file From a8013950ff7240c448b6395d60972a688ba7e8cf Mon Sep 17 00:00:00 2001 From: psyk2642 <60137590+psyk2642@users.noreply.github.com> Date: Tue, 22 Mar 2022 23:41:37 +0800 Subject: [PATCH 071/257] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 7accf8465..3a4fccd1c 100644 --- a/README.md +++ b/README.md @@ -16,7 +16,7 @@ Listed in the order added. * Rare bug that occurs when the mouse is highlighting a long note while toggling between NT and BMSE simultaneously. ## Functionalities -* Added Random and S-Random. Supports PMS as well. +* Added Random, R-Random, S-Random and H-Random. Supports PMS as well. * Added a display for recommended #TOTAL. * The application now saves the option "Disable Vertical Moves". * Changed the temporary bms file extension from .bms to .bmsc. From 04649d40bdf64281b3c928e629b912e896381bf0 Mon Sep 17 00:00:00 2001 From: psyk2642 <60137590+psyk2642@users.noreply.github.com> Date: Wed, 23 Mar 2022 22:57:46 +0800 Subject: [PATCH 072/257] Code stuff Used With blocks in some parts. --- README.md | 2 +- iBMSC/MainWindow.vb | 112 ++++++++++++++++++++++++-------------------- 2 files changed, 61 insertions(+), 53 deletions(-) diff --git a/README.md b/README.md index 3a4fccd1c..3aabd9df5 100644 --- a/README.md +++ b/README.md @@ -62,7 +62,7 @@ Listed in the order added. * Display ghost notes: Select an #if section to display its notes in ghost form. * Display ghost notes (All): Display all notes in ghost form. * Modify notes: Select an #if section and jump straight to modifying them. -* Modify section: Opens a instance of pBMSC, allowing you to modify the #if section individually. +* Modify section: Open an instance of pBMSC, allowing you to modify the #if section individually. * Remove ghost notes: Remove all ghost notes. ### Visual Override Options diff --git a/iBMSC/MainWindow.vb b/iBMSC/MainWindow.vb index 2f7decaac..d93e6122c 100644 --- a/iBMSC/MainWindow.vb +++ b/iBMSC/MainWindow.vb @@ -2731,7 +2731,6 @@ Skip1: Next Skip2: - Dim xniArray1(xRangeU - xRangeL - 1) For xI1 = 0 To xRangeU - xRangeL - 1 xniArray1(xI1) = xniArray0(xI1 + xRangeL) @@ -2741,6 +2740,7 @@ Skip2: Select Case Mode Case "Random", "RRandom" + ' Shuffle columns If Mode = "Random" Then Shuffle(xniArrayR) Else @@ -2750,6 +2750,7 @@ Skip2: Next End If + ' Move notes Dim xCol As Integer For xI1 = 1 To UBound(Notes) With Notes(xI1) @@ -2773,7 +2774,7 @@ Skip2: xI1 = 1 Dim xI1Arr(-1) As Integer Dim vPos As Integer - Dim xI1ArrPrevUBound As Integer = -1 + Dim xI1ArrPrevUBound As Integer = -1 ' Used for HRandom ' Find the first index of selected notes Do While xI1 <= UBound(Notes) If Not Notes(xI1).Selected Or Notes(xI1).Ghost Or Notes(xI1).ColumnIndex < xniArray1(0) Or Notes(xI1).ColumnIndex > xniArray1(UBound(xniArray1)) Then xI1 += 1 : Continue Do @@ -2785,6 +2786,8 @@ Skip2: xI1Arr(UBound(xI1Arr)) = xI1 xI1 += 1 Loop + + ' Shuffle columns If Mode = "SRandom" Or xI1ArrPrevUBound = -1 Then ' If SRandom or for HRandom, if it's the first set of notes Shuffle(xniArrayR) Else @@ -2805,6 +2808,8 @@ Skip2: xniArrayR(i) = xniArrayR1(i - UBound(xniArrayR2) - 1) Next End If + + ' Move notes For xI2 = 0 To UBound(xI1Arr) Dim xI2I = xI1Arr(xI2) Me.RedoMoveNote(Notes(xI2I), xniArrayR(xI2), Notes(xI2I).VPosition, xUndo, xRedo) @@ -3808,17 +3813,12 @@ Jump2: 'Main process For xI1 As Integer = 1 To UBound(Notes) - ' Dim bbba As Boolean = xbSel And xSel(xI1) - ' Dim bbbb As Boolean = xbUnsel And Not xSel(xI1) - ' Dim bbbc As Boolean = nEnabled(Notes(xI1).ColumnIndex) - ' Dim bbbd As Boolean = fdrRangeS(xbShort, xbLong, IIf(NTInput, Notes(xI1).Length, Notes(xI1).LongNote)) - ' Dim bbbe As Boolean = fdrRangeS(xbVisible, xbHidden, Notes(xI1).Hidden) - ' Dim bbbf As Boolean = fdrCheck(Notes(xI1)) - - If ((xbSel And xSel(xI1)) Or (xbUnsel And Not xSel(xI1))) AndAlso - nEnabled(Notes(xI1).ColumnIndex) AndAlso fdrRangeS(xbShort, xbLong, IIf(NTInput, Notes(xI1).Length, Notes(xI1).LongNote)) And fdrRangeS(xbVisible, xbHidden, Notes(xI1).Hidden) Then - Notes(xI1).Selected = fdrCheck(Notes(xI1)) - End If + With Notes(xI1) + If ((xbSel And xSel(xI1)) Or (xbUnsel And Not xSel(xI1))) AndAlso + nEnabled(.ColumnIndex) AndAlso fdrRangeS(xbShort, xbLong, IIf(NTInput, .Length, .LongNote)) And fdrRangeS(xbVisible, xbHidden, .Hidden) Then + .Selected = fdrCheck(Notes(xI1)) + End If + End With Next RefreshPanelAll() @@ -3853,10 +3853,12 @@ Jump2: 'Main process For xI1 As Integer = 1 To UBound(Notes) - If ((xbSel And xSel(xI1)) Or (xbUnsel And Not xSel(xI1))) AndAlso - nEnabled(Notes(xI1).ColumnIndex) AndAlso fdrRangeS(xbShort, xbLong, IIf(NTInput, Notes(xI1).Length, Notes(xI1).LongNote)) And fdrRangeS(xbVisible, xbHidden, Notes(xI1).Hidden) Then - Notes(xI1).Selected = Not fdrCheck(Notes(xI1)) - End If + With Notes(xI1) + If ((xbSel And xSel(xI1)) Or (xbUnsel And Not xSel(xI1))) AndAlso + nEnabled(.ColumnIndex) AndAlso fdrRangeS(xbShort, xbLong, IIf(NTInput, .Length, .LongNote)) And fdrRangeS(xbVisible, xbHidden, .Hidden) Then + .Selected = Not fdrCheck(Notes(xI1)) + End If + End With Next RefreshPanelAll() @@ -3891,14 +3893,16 @@ Jump2: Next For xI1 = UBound(Notes) To 1 Step -1 - If ((xbSel And xSel(xI1)) Or (xbUnsel And Not xSel(xI1))) AndAlso - nEnabled(Notes(xI1).ColumnIndex) AndAlso fdrRangeS(xbShort, xbLong, IIf(NTInput, Notes(xI1).Length, Notes(xI1).LongNote)) And fdrRangeS(xbVisible, xbHidden, Notes(xI1).Hidden) AndAlso + With Notes(xI1) + If ((xbSel And xSel(xI1)) Or (xbUnsel And Not xSel(xI1))) AndAlso + nEnabled(.ColumnIndex) AndAlso fdrRangeS(xbShort, xbLong, IIf(NTInput, .Length, .LongNote)) And fdrRangeS(xbVisible, xbHidden, .Hidden) AndAlso fdrCheck(Notes(xI1)) AndAlso - Notes(xI1).VPosition < -PanelVScroll(PanelFocus) Then - PanelVScroll(PanelFocus) = -Notes(xI1).VPosition - Notes(xI1).Selected = True - Exit For - End If + .VPosition < -PanelVScroll(PanelFocus) Then + PanelVScroll(PanelFocus) = - .VPosition + .Selected = True + Exit For + End If + End With Next RefreshPanelAll() @@ -3932,14 +3936,16 @@ Jump2: Next For xI1 = 1 To UBound(Notes) - If ((xbSel And xSel(xI1)) Or (xbUnsel And Not xSel(xI1))) AndAlso - nEnabled(Notes(xI1).ColumnIndex) AndAlso fdrRangeS(xbShort, xbLong, IIf(NTInput, Notes(xI1).Length, Notes(xI1).LongNote)) And fdrRangeS(xbVisible, xbHidden, Notes(xI1).Hidden) AndAlso + With Notes(xI1) + If ((xbSel And xSel(xI1)) Or (xbUnsel And Not xSel(xI1))) AndAlso + nEnabled(.ColumnIndex) AndAlso fdrRangeS(xbShort, xbLong, IIf(NTInput, .Length, .LongNote)) And fdrRangeS(xbVisible, xbHidden, .Hidden) AndAlso fdrCheck(Notes(xI1)) AndAlso - Notes(xI1).VPosition > -PanelVScroll(PanelFocus) Then - PanelVScroll(PanelFocus) = -Notes(xI1).VPosition - Notes(xI1).Selected = True - Exit For - End If + .VPosition > -PanelVScroll(PanelFocus) Then + PanelVScroll(PanelFocus) = - .VPosition + .Selected = True + Exit For + End If + End With Next RefreshPanelAll() @@ -3974,13 +3980,15 @@ Jump2: 'Main process Dim xI1 As Integer = 1 Do While xI1 <= UBound(Notes) - If (Not Notes(xI1).Ghost) AndAlso ((xbSel And Notes(xI1).Selected) Or (xbUnsel And Not Notes(xI1).Selected)) AndAlso - fdrCheck(Notes(xI1)) AndAlso nEnabled(Notes(xI1).ColumnIndex) AndAlso fdrRangeS(xbShort, xbLong, IIf(NTInput, Notes(xI1).Length, Notes(xI1).LongNote)) And fdrRangeS(xbVisible, xbHidden, Notes(xI1).Hidden) Then - RedoRemoveNote(Notes(xI1), xUndo, xRedo) - RemoveNote(xI1, False) - Else - xI1 += 1 - End If + With Notes(xI1) + If (Not .Ghost) AndAlso ((xbSel And .Selected) Or (xbUnsel And Not .Selected)) AndAlso + fdrCheck(Notes(xI1)) AndAlso nEnabled(.ColumnIndex) AndAlso fdrRangeS(xbShort, xbLong, IIf(NTInput, .Length, .LongNote)) And fdrRangeS(xbVisible, xbHidden, .Hidden) Then + RedoRemoveNote(Notes(xI1), xUndo, xRedo) + RemoveNote(xI1, False) + Else + xI1 += 1 + End If + End With Loop AddUndo(xUndo, xBaseRedo.Next) @@ -4020,13 +4028,13 @@ Jump2: 'Main process For xI1 As Integer = 1 To UBound(Notes) - If (Not Notes(xI1).Ghost) AndAlso ((xbSel And Notes(xI1).Selected) Or (xbUnsel And Not Notes(xI1).Selected)) AndAlso - fdrCheck(Notes(xI1)) AndAlso nEnabled(Notes(xI1).ColumnIndex) And Not IsColumnNumeric(Notes(xI1).ColumnIndex) AndAlso fdrRangeS(xbShort, xbLong, IIf(NTInput, Notes(xI1).Length, Notes(xI1).LongNote)) And fdrRangeS(xbVisible, xbHidden, Notes(xI1).Hidden) Then - 'xUndo &= sCmdKC(K(xI1).ColumnIndex, K(xI1).VPosition, xxLbl, IIf(NTInput, K(xI1).Length, K(xI1).LongNote), K(xI1).Hidden, 0, 0, K(xI1).Value, IIf(NTInput, K(xI1).Length, K(xI1).LongNote), K(xI1).Hidden, True) & vbCrLf - 'xRedo &= sCmdKC(K(xI1).ColumnIndex, K(xI1).VPosition, K(xI1).Value, IIf(NTInput, K(xI1).Length, K(xI1).LongNote), K(xI1).Hidden, 0, 0, xxLbl, IIf(NTInput, K(xI1).Length, K(xI1).LongNote), K(xI1).Hidden, True) & vbCrLf - Me.RedoRelabelNote(Notes(xI1), xxLbl, xUndo, xRedo) - Notes(xI1).Value = xxLbl - End If + With Notes(xI1) + If (Not .Ghost) AndAlso ((xbSel And .Selected) Or (xbUnsel And Not .Selected)) AndAlso + fdrCheck(Notes(xI1)) AndAlso nEnabled(.ColumnIndex) And Not IsColumnNumeric(.ColumnIndex) AndAlso fdrRangeS(xbShort, xbLong, IIf(NTInput, .Length, .LongNote)) And fdrRangeS(xbVisible, xbHidden, .Hidden) Then + Me.RedoRelabelNote(Notes(xI1), xxLbl, xUndo, xRedo) + .Value = xxLbl + End If + End With Next AddUndo(xUndo, xBaseRedo.Next) @@ -4061,13 +4069,13 @@ Jump2: 'Main process For xI1 As Integer = 1 To UBound(Notes) - If (Not Notes(xI1).Ghost) AndAlso ((xbSel And Notes(xI1).Selected) Or (xbUnsel And Not Notes(xI1).Selected)) AndAlso - fdrCheck(Notes(xI1)) AndAlso nEnabled(Notes(xI1).ColumnIndex) And IsColumnNumeric(Notes(xI1).ColumnIndex) AndAlso fdrRangeS(xbShort, xbLong, IIf(NTInput, Notes(xI1).Length, Notes(xI1).LongNote)) And fdrRangeS(xbVisible, xbHidden, Notes(xI1).Hidden) Then - 'xUndo &= sCmdKC(K(xI1).ColumnIndex, K(xI1).VPosition, xReplaceVal, IIf(NTInput, K(xI1).Length, K(xI1).LongNote), K(xI1).Hidden, 0, 0, K(xI1).Value, IIf(NTInput, K(xI1).Length, K(xI1).LongNote), K(xI1).Hidden, True) & vbCrLf - 'xRedo &= sCmdKC(K(xI1).ColumnIndex, K(xI1).VPosition, K(xI1).Value, IIf(NTInput, K(xI1).Length, K(xI1).LongNote), K(xI1).Hidden, 0, 0, xReplaceVal, IIf(NTInput, K(xI1).Length, K(xI1).LongNote), K(xI1).Hidden, True) & vbCrLf - Me.RedoRelabelNote(Notes(xI1), xReplaceVal, xUndo, xRedo) - Notes(xI1).Value = xReplaceVal - End If + With Notes(xI1) + If (Not .Ghost) AndAlso ((xbSel And .Selected) Or (xbUnsel And Not .Selected)) AndAlso + fdrCheck(Notes(xI1)) AndAlso nEnabled(.ColumnIndex) And IsColumnNumeric(.ColumnIndex) AndAlso fdrRangeS(xbShort, xbLong, IIf(NTInput, .Length, .LongNote)) And fdrRangeS(xbVisible, xbHidden, .Hidden) Then + Me.RedoRelabelNote(Notes(xI1), xReplaceVal, xUndo, xRedo) + .Value = xReplaceVal + End If + End With Next AddUndo(xUndo, xBaseRedo.Next) From a434a952e1d3a04e2013dfe55c3e59ec948770a3 Mon Sep 17 00:00:00 2001 From: psyk2642 <60137590+psyk2642@users.noreply.github.com> Date: Wed, 23 Mar 2022 23:12:31 +0800 Subject: [PATCH 073/257] Added mirror to RRandom I forgor --- iBMSC/MainWindow.vb | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/iBMSC/MainWindow.vb b/iBMSC/MainWindow.vb index d93e6122c..094f5cde7 100644 --- a/iBMSC/MainWindow.vb +++ b/iBMSC/MainWindow.vb @@ -2745,8 +2745,9 @@ Skip2: Shuffle(xniArrayR) Else Dim R As Integer = Math.Floor(xniArrayR.Length * Rnd()) + Dim M As Integer = Math.Floor(2 * Rnd()) * 2 - 1 For i = 0 To UBound(xniArrayR) - xniArrayR(i) = xniArray1((i + R) Mod xniArrayR.Length) + xniArrayR(i) = xniArray1((i * M + R + xniArrayR.Length) Mod xniArrayR.Length) Next End If From 3dbcde909bf09a484d0cf742bb85244c0f8d61ba Mon Sep 17 00:00:00 2001 From: psyk2642 <60137590+psyk2642@users.noreply.github.com> Date: Thu, 24 Mar 2022 08:15:53 +0800 Subject: [PATCH 074/257] Notes now stay inside the window Unless the span is too big --- iBMSC/MainWindow.vb | 1 - iBMSC/PanelEvents.vb | 30 +++++++++++++++++------------- 2 files changed, 17 insertions(+), 14 deletions(-) diff --git a/iBMSC/MainWindow.vb b/iBMSC/MainWindow.vb index 094f5cde7..c2affdfed 100644 --- a/iBMSC/MainWindow.vb +++ b/iBMSC/MainWindow.vb @@ -3570,7 +3570,6 @@ RestartSorting: xSorted = False AutoFocusMouseEnter = .cMEnterFocus.Checked FirstClickDisabled = .cMClickFocus.Checked ClickStopPreview = .cMStopPreview.Checked - ' KeyBindDP = .cMKeyBindDP.Checked End With If AutoSaveInterval Then AutoSaveTimer.Interval = AutoSaveInterval AutoSaveTimer.Enabled = AutoSaveInterval diff --git a/iBMSC/PanelEvents.vb b/iBMSC/PanelEvents.vb index a4a23e481..69df8a276 100644 --- a/iBMSC/PanelEvents.vb +++ b/iBMSC/PanelEvents.vb @@ -37,18 +37,16 @@ Partial Public Class MainWindow Next muVPosition -= 191999 - 'xRedo = sCmdKMs(0, xVPosition - muVPosition, True) Dim xVPos As Double - For xI1 = 1 To UBound(Notes) + For xI1 = UBound(Notes) To 1 Step -1 If Not Notes(xI1).Selected Or Notes(xI1).Ghost Then Continue For xVPos = Notes(xI1).VPosition + xVPosition - muVPosition Me.RedoMoveNote(Notes(xI1), Notes(xI1).ColumnIndex, xVPos, xUndo, xRedo) Notes(xI1).VPosition = xVPos + IsNoteInPanel(xVPos, Notes(xI1).Length) Next - 'xUndo = sCmdKMs(0, -xVPosition + muVPosition, True) - If xVPosition - muVPosition <> 0 Then AddUndo(xUndo, xBaseRedo.Next) SortByVPositionInsertion() UpdatePairing() CalculateTotalPlayableNotes() @@ -70,16 +68,15 @@ Partial Public Class MainWindow End If Next - 'xRedo = sCmdKMs(0, xVPosition - mVPosition, True) Dim xVPos As Double - For xI1 = 1 To UBound(Notes) + For xI1 = UBound(Notes) To 1 Step -1 If Not Notes(xI1).Selected Or Notes(xI1).Ghost Then Continue For xVPos = Notes(xI1).VPosition + xVPosition - mVPosition Me.RedoMoveNote(Notes(xI1), Notes(xI1).ColumnIndex, xVPos, xUndo, xRedo) Notes(xI1).VPosition = xVPos + IsNoteInPanel(xVPos, Notes(xI1).Length) Next - 'xUndo = sCmdKMs(0, -xVPosition + mVPosition, True) If xVPosition - mVPosition <> 0 Then AddUndo(xUndo, xBaseRedo.Next) SortByVPositionInsertion() @@ -100,16 +97,16 @@ Partial Public Class MainWindow ColumnArrayIndexToEnabledColumnIndex(Notes(xI1).ColumnIndex) - 1, mLeft) Next - 'xRedo = sCmdKMs(-1 - mLeft, 0, True) + Dim xCol As Integer - For xI1 = 1 To UBound(Notes) + For xI1 = UBound(Notes) To 1 Step -1 If Not Notes(xI1).Selected Or Notes(xI1).Ghost Then Continue For xCol = EnabledColumnIndexToColumnArrayIndex(ColumnArrayIndexToEnabledColumnIndex(Notes(xI1).ColumnIndex) - 1 - mLeft) Me.RedoMoveNote(Notes(xI1), xCol, Notes(xI1).VPosition, xUndo, xRedo) Notes(xI1).ColumnIndex = xCol + IsNoteInPanel(Notes(xI1).VPosition, Notes(xI1).Length) Next - 'xUndo = sCmdKMs(1 + mLeft, 0, True) If -1 - mLeft <> 0 Then AddUndo(xUndo, xBaseRedo.Next) UpdatePairing() @@ -117,16 +114,15 @@ Partial Public Class MainWindow RefreshPanelAll() Case Keys.Right - 'xRedo = sCmdKMs(1, 0, True) Dim xCol As Integer - For xI1 = 1 To UBound(Notes) + For xI1 = UBound(Notes) To 1 Step -1 If Not Notes(xI1).Selected Or Notes(xI1).Ghost Then Continue For xCol = EnabledColumnIndexToColumnArrayIndex(ColumnArrayIndexToEnabledColumnIndex(Notes(xI1).ColumnIndex) + 1) Me.RedoMoveNote(Notes(xI1), xCol, Notes(xI1).VPosition, xUndo, xRedo) Notes(xI1).ColumnIndex = xCol + IsNoteInPanel(Notes(xI1).VPosition, Notes(xI1).Length) Next - 'xUndo = sCmdKMs(-1, 0, True) AddUndo(xUndo, xBaseRedo.Next) UpdatePairing() @@ -1632,6 +1628,14 @@ Partial Public Class MainWindow e1.Dispose() End Sub + Private Sub IsNoteInPanel(xVPos As Double, xLength As Double) + If -PanelVScroll(PanelFocus) > xVPos Then ' If notes are moved lower than the window + PanelVScroll(PanelFocus) = -xVPos + ElseIf -PanelVScroll(PanelFocus) + spMain(PanelFocus).Height / gxHeight * 0.95 < xVPos + xLength Then ' If notes are moved higher than the window + PanelVScroll(PanelFocus) = -xVPos + spMain(PanelFocus).Height / gxHeight * 0.95 - xLength + End If + End Sub + Private Function GetColumnAtX(x As Integer, xHS As Integer) As Integer Dim xI1 As Integer = 0 Dim mLeft As Integer = x / gxWidth + xHS 'horizontal position of the mouse From 81aac256a422eb2ce1f1141894e38a9d3e6229f9 Mon Sep 17 00:00:00 2001 From: psyk2642 <60137590+psyk2642@users.noreply.github.com> Date: Thu, 24 Mar 2022 20:32:32 +0800 Subject: [PATCH 075/257] Hides comment on the lower note in an LN pair --- README.md | 2 ++ iBMSC/PanelDraw.vb | 40 ++++++++++++++++++++++++++++++---------- 2 files changed, 32 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 3aabd9df5..32c5b1eea 100644 --- a/README.md +++ b/README.md @@ -28,6 +28,7 @@ Listed in the order added. * Added support for #RANDOM. Supports expansion field and main data field only. Not tested thoroughly, nested #RANDOM in "Modify Section" only. Accessible via the "Select Section" button in Expansion Code or via Ctrl+R. * Added color overriding options where you can specify a range of notes to appear a specific color, such as red notes for drums and green notes for the piano. Accessible via the Options tab or via Shift+F12. * Added comment notes. Comment notes will be saved as #ECMD and #ECOM within the same bms/pms file. Not tested thoroughly. +* The window will now follow notes being moved by arrow keys. ## Keyboard shortcuts * Changed keybinding to allow note placement between D1 and D8. @@ -54,6 +55,7 @@ Listed in the order added. * Added color overriding options (Shift+F12). ## New dialog/option boxes + ### Advanced Statistics * Displays note statistics over individual lanes from A1 to D8. * Displays note usages, including #WAV assigned notes with 0 note count and #WAV unassigned notes with non-zero note count. diff --git a/iBMSC/PanelDraw.vb b/iBMSC/PanelDraw.vb index 096ee1307..f560e75fc 100644 --- a/iBMSC/PanelDraw.vb +++ b/iBMSC/PanelDraw.vb @@ -558,9 +558,7 @@ Partial Public Class MainWindow If sNote.Hidden Then xAlpha = vo.kOpacity If sNote.Ghost Then xAlpha *= 0.1 - Dim xLabel As String = C10to36(sNote.Value \ 10000) - If sNote.Comment Then xLabel = WordWrapConvert(hCOM(C36to10(xLabel))) Else _ - If ShowFileName AndAlso hWAV(C36to10(xLabel)) <> "" Then xLabel = Path.GetFileNameWithoutExtension(hWAV(C36to10(xLabel))) + Dim xLabel As String = GetNoteLabel(sNote) Dim xPen As Pen Dim xBrush As Drawing2D.LinearGradientBrush @@ -674,10 +672,18 @@ Partial Public Class MainWindow NoteRowToPanelHeight(sNote.VPosition, xVS, xHeight) + vo.kHeight), GetColumn(sNote.ColumnIndex).getLongBright(xAlpha), GetColumn(sNote.ColumnIndex).getLongDark(xAlpha)) - e.Graphics.FillRectangle(xBrush3, HorizontalPositiontoDisplay(nLeft(Notes(sNote.LNPair).ColumnIndex), xHS) + 3, NoteRowToPanelHeight(Notes(sNote.LNPair).VPosition, xVS, xHeight) + 1, - GetColumnWidth(Notes(sNote.LNPair).ColumnIndex) * gxWidth - 5, NoteRowToPanelHeight(sNote.VPosition, xVS, xHeight) - NoteRowToPanelHeight(Notes(sNote.LNPair).VPosition, xVS, xHeight) - vo.kHeight - 1) - e.Graphics.DrawRectangle(xPen2, HorizontalPositiontoDisplay(nLeft(Notes(sNote.LNPair).ColumnIndex), xHS) + 2, NoteRowToPanelHeight(Notes(sNote.LNPair).VPosition, xVS, xHeight), - GetColumnWidth(Notes(sNote.LNPair).ColumnIndex) * gxWidth - 4, NoteRowToPanelHeight(sNote.VPosition, xVS, xHeight) - NoteRowToPanelHeight(Notes(sNote.LNPair).VPosition, xVS, xHeight) - vo.kHeight) + + Dim xX As Single = HorizontalPositiontoDisplay(nLeft(Notes(sNote.LNPair).ColumnIndex), xHS) + Dim xWidth As Single = GetColumnWidth(Notes(sNote.LNPair).ColumnIndex) * gxWidth + If sNote.Comment Then + For i = 1 To 4 + xWidth += GetColumnWidth(Notes(sNote.LNPair).ColumnIndex + i) * gxWidth + Next + End If + e.Graphics.FillRectangle(xBrush3, xX + 3, NoteRowToPanelHeight(Notes(sNote.LNPair).VPosition, xVS, xHeight) + 1, + xWidth - 5, NoteRowToPanelHeight(sNote.VPosition, xVS, xHeight) - NoteRowToPanelHeight(Notes(sNote.LNPair).VPosition, xVS, xHeight) - vo.kHeight - 1) + e.Graphics.DrawRectangle(xPen2, xX + 2, NoteRowToPanelHeight(Notes(sNote.LNPair).VPosition, xVS, xHeight), + xWidth - 4, NoteRowToPanelHeight(sNote.VPosition, xVS, xHeight) - NoteRowToPanelHeight(Notes(sNote.LNPair).VPosition, xVS, xHeight) - vo.kHeight) End Sub ''' @@ -695,9 +701,7 @@ Partial Public Class MainWindow If sNote.Hidden Then xAlpha = vo.kOpacity If sNote.Ghost Then xAlpha *= 0.1 - Dim xLabel As String = C10to36(sNote.Value \ 10000) - If sNote.Comment Then xLabel = WordWrapConvert(hCOM(C36to10(xLabel))) Else _ - If ShowFileName AndAlso hWAV(C36to10(xLabel)) <> "" Then xLabel = Path.GetFileNameWithoutExtension(hWAV(C36to10(xLabel))) + Dim xLabel As String = GetNoteLabel(sNote) Dim xPen1 As Pen Dim xBrush As Drawing2D.LinearGradientBrush @@ -818,4 +822,20 @@ Partial Public Class MainWindow If s = "" Then Return "" Return s.Replace("\n", vbCrLf) End Function + + Private Function GetNoteLabel(ByVal sNote As Note) + Dim xLabel As String = C10to36(sNote.Value \ 10000) + ' If note is a comment note + If sNote.Comment Then + ' If it is an LN and it is the lower note in its LN pair, display nothing + If sNote.LNPair > 0 AndAlso Notes(sNote.LNPair).VPosition > sNote.VPosition Then + xLabel = "" + Else + xLabel = WordWrapConvert(hCOM(C36to10(xLabel))) + End If + ElseIf ShowFileName AndAlso hWAV(C36to10(xLabel)) <> "" Then + xLabel = Path.GetFileNameWithoutExtension(hWAV(C36to10(xLabel))) + End If + Return xLabel + End Function End Class From c0614e207eb3791c9e454461502a92563ca334c4 Mon Sep 17 00:00:00 2001 From: psyk2642 <60137590+psyk2642@users.noreply.github.com> Date: Thu, 24 Mar 2022 22:44:52 +0800 Subject: [PATCH 076/257] Added LN "note snapping" - When creating LNs in NT mode, its VPosition will snap to the highlighted note if any --- README.md | 1 + iBMSC/My Project/AssemblyInfo.vb | 4 ++-- iBMSC/PanelEvents.vb | 11 +++++++++++ 3 files changed, 14 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 32c5b1eea..ec9cb75da 100644 --- a/README.md +++ b/README.md @@ -29,6 +29,7 @@ Listed in the order added. * Added color overriding options where you can specify a range of notes to appear a specific color, such as red notes for drums and green notes for the piano. Accessible via the Options tab or via Shift+F12. * Added comment notes. Comment notes will be saved as #ECMD and #ECOM within the same bms/pms file. Not tested thoroughly. * The window will now follow notes being moved by arrow keys. +* When creating LNs in NT mode, the VPosition will snap to the highlighted note if any ## Keyboard shortcuts * Changed keybinding to allow note placement between D1 and D8. diff --git a/iBMSC/My Project/AssemblyInfo.vb b/iBMSC/My Project/AssemblyInfo.vb index 6719c621c..aacddef69 100644 --- a/iBMSC/My Project/AssemblyInfo.vb +++ b/iBMSC/My Project/AssemblyInfo.vb @@ -33,7 +33,7 @@ Imports System.Runtime.InteropServices ' by using the '*' as shown below: ' - - + + \ No newline at end of file diff --git a/iBMSC/PanelEvents.vb b/iBMSC/PanelEvents.vb index 69df8a276..feb68767a 100644 --- a/iBMSC/PanelEvents.vb +++ b/iBMSC/PanelEvents.vb @@ -1126,6 +1126,15 @@ Partial Public Class MainWindow End If End If + ' + Dim foundNoteIndex As Integer = -1 + For noteIndex = 1 To UBound(Notes) + If MouseInNote(e, xhs, xvs, xHeight, Notes(noteIndex)) Then + foundNoteIndex = noteIndex + Exit For + End If + Next + 'If moving If Not bAdjustLength Then OnSelectModeMoveNotes(e, xhs, xITemp) @@ -1133,12 +1142,14 @@ Partial Public Class MainWindow ElseIf bAdjustUpper Then 'If adjusting upper end Dim dVPosition = mouseVPosition - Notes(xITemp).VPosition - Notes(xITemp).Length 'delta Length '< 0 means shorten, > 0 means lengthen + If foundNoteIndex > -1 Then dVPosition = Notes(foundNoteIndex).VPosition - Notes(xITemp).VPosition - Notes(xITemp).Length OnAdjustUpperEnd(dVPosition) Else 'If adjusting lower end Dim dVPosition = mouseVPosition - Notes(xITemp).VPosition 'delta VPosition '> 0 means shorten, < 0 means lengthen + If foundNoteIndex > -1 Then dVPosition = Notes(foundNoteIndex).VPosition - Notes(xITemp).VPosition OnAdjustLowerEnd(dVPosition) End If From f257c1f0e24ef7a0d5740f005df07a0ac4fd07ff Mon Sep 17 00:00:00 2001 From: psyk2642 <60137590+psyk2642@users.noreply.github.com> Date: Fri, 25 Mar 2022 23:00:24 +0800 Subject: [PATCH 077/257] Visual Override Option UI Update --- iBMSC/MainWindow.designer.vb | 68 ++++----- iBMSC/MainWindow.resx | 68 ++++----- iBMSC/MainWindow.vb | 6 +- .../OpVisualOverride.Designer.vb | 143 ++++++++++-------- 4 files changed, 151 insertions(+), 134 deletions(-) diff --git a/iBMSC/MainWindow.designer.vb b/iBMSC/MainWindow.designer.vb index 7748c0f2c..0ae9ebdf8 100644 --- a/iBMSC/MainWindow.designer.vb +++ b/iBMSC/MainWindow.designer.vb @@ -25,16 +25,16 @@ Partial Class MainWindow Me.TBLangDef = New System.Windows.Forms.ToolStripMenuItem() Me.TBLangRefresh = New System.Windows.Forms.ToolStripMenuItem() Me.ToolStripSeparator9 = New System.Windows.Forms.ToolStripSeparator() - Me.TBLanguage = New System.Windows.Forms.ToolStripDropDownButton() Me.mnLanguage = New System.Windows.Forms.ToolStripMenuItem() + Me.TBLanguage = New System.Windows.Forms.ToolStripDropDownButton() Me.cmnTheme = New System.Windows.Forms.ContextMenuStrip(Me.components) Me.TBThemeDef = New System.Windows.Forms.ToolStripMenuItem() Me.TBThemeSave = New System.Windows.Forms.ToolStripMenuItem() Me.TBThemeRefresh = New System.Windows.Forms.ToolStripMenuItem() Me.TBThemeLoadComptability = New System.Windows.Forms.ToolStripMenuItem() Me.ToolStripSeparator6 = New System.Windows.Forms.ToolStripSeparator() - Me.mnTheme = New System.Windows.Forms.ToolStripMenuItem() Me.TBTheme = New System.Windows.Forms.ToolStripDropDownButton() + Me.mnTheme = New System.Windows.Forms.ToolStripMenuItem() Me.Timer1 = New System.Windows.Forms.Timer(Me.components) Me.Menu1 = New System.Windows.Forms.ContextMenuStrip(Me.components) Me.MInsert = New System.Windows.Forms.ToolStripMenuItem() @@ -126,11 +126,11 @@ Partial Class MainWindow Me.POBSRandom = New System.Windows.Forms.ToolStripMenuItem() Me.POBHRandom = New System.Windows.Forms.ToolStripMenuItem() Me.POBSort = New System.Windows.Forms.ToolStripMenuItem() + Me.POConvert = New System.Windows.Forms.ToolStripDropDownButton() Me.mnPreview = New System.Windows.Forms.ToolStripMenuItem() Me.mnPlayB = New System.Windows.Forms.ToolStripMenuItem() Me.mnPlay = New System.Windows.Forms.ToolStripMenuItem() Me.mnStop = New System.Windows.Forms.ToolStripMenuItem() - Me.POConvert = New System.Windows.Forms.ToolStripDropDownButton() Me.TBMain = New System.Windows.Forms.ToolStrip() Me.TBNew = New System.Windows.Forms.ToolStripButton() Me.TBOpen = New System.Windows.Forms.ToolStripSplitButton() @@ -450,7 +450,7 @@ Partial Class MainWindow ' Me.cmnLanguage.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.TBLangDef, Me.TBLangRefresh, Me.ToolStripSeparator9}) Me.cmnLanguage.Name = "cmnLanguage" - Me.cmnLanguage.OwnerItem = Me.mnLanguage + Me.cmnLanguage.OwnerItem = Me.TBLanguage Me.cmnLanguage.Size = New System.Drawing.Size(121, 54) ' 'TBLangDef @@ -471,6 +471,14 @@ Partial Class MainWindow Me.ToolStripSeparator9.Name = "ToolStripSeparator9" Me.ToolStripSeparator9.Size = New System.Drawing.Size(117, 6) ' + 'mnLanguage + ' + Me.mnLanguage.DropDown = Me.cmnLanguage + Me.mnLanguage.Image = Global.iBMSC.My.Resources.Resources.x16Language + Me.mnLanguage.Name = "mnLanguage" + Me.mnLanguage.Size = New System.Drawing.Size(253, 22) + Me.mnLanguage.Text = "&Language" + ' 'TBLanguage ' Me.TBLanguage.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image @@ -481,19 +489,11 @@ Partial Class MainWindow Me.TBLanguage.Size = New System.Drawing.Size(29, 22) Me.TBLanguage.Text = "Language" ' - 'mnLanguage - ' - Me.mnLanguage.DropDown = Me.cmnLanguage - Me.mnLanguage.Image = Global.iBMSC.My.Resources.Resources.x16Language - Me.mnLanguage.Name = "mnLanguage" - Me.mnLanguage.Size = New System.Drawing.Size(253, 22) - Me.mnLanguage.Text = "&Language" - ' 'cmnTheme ' Me.cmnTheme.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.TBThemeDef, Me.TBThemeSave, Me.TBThemeRefresh, Me.TBThemeLoadComptability, Me.ToolStripSeparator6}) Me.cmnTheme.Name = "cmnLanguage" - Me.cmnTheme.OwnerItem = Me.TBTheme + Me.cmnTheme.OwnerItem = Me.mnTheme Me.cmnTheme.Size = New System.Drawing.Size(246, 98) ' 'TBThemeDef @@ -527,14 +527,6 @@ Partial Class MainWindow Me.ToolStripSeparator6.Name = "ToolStripSeparator6" Me.ToolStripSeparator6.Size = New System.Drawing.Size(242, 6) ' - 'mnTheme - ' - Me.mnTheme.DropDown = Me.cmnTheme - Me.mnTheme.Image = Global.iBMSC.My.Resources.Resources.x16Theme - Me.mnTheme.Name = "mnTheme" - Me.mnTheme.Size = New System.Drawing.Size(253, 22) - Me.mnTheme.Text = "&Theme" - ' 'TBTheme ' Me.TBTheme.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image @@ -545,6 +537,14 @@ Partial Class MainWindow Me.TBTheme.Size = New System.Drawing.Size(29, 22) Me.TBTheme.Text = "Theme" ' + 'mnTheme + ' + Me.mnTheme.DropDown = Me.cmnTheme + Me.mnTheme.Image = Global.iBMSC.My.Resources.Resources.x16Theme + Me.mnTheme.Name = "mnTheme" + Me.mnTheme.Size = New System.Drawing.Size(253, 22) + Me.mnTheme.Text = "&Theme" + ' 'Timer1 ' Me.Timer1.Interval = 15 @@ -1135,8 +1135,8 @@ Partial Class MainWindow ' Me.cmnConversion.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.POBLong, Me.POBShort, Me.POBLongShort, Me.ToolStripSeparator10, Me.POBHidden, Me.POBVisible, Me.POBHiddenVisible, Me.ToolStripSeparator11, Me.POBModify, Me.POBMirror, Me.POBFlip, Me.POBRandom, Me.POBRRandom, Me.POBSRandom, Me.POBHRandom, Me.POBSort}) Me.cmnConversion.Name = "cmnLanguage" - Me.cmnConversion.OwnerItem = Me.POConvert - Me.cmnConversion.Size = New System.Drawing.Size(222, 346) + Me.cmnConversion.OwnerItem = Me.mnConversion + Me.cmnConversion.Size = New System.Drawing.Size(222, 324) ' 'POBLong ' @@ -1248,6 +1248,16 @@ Partial Class MainWindow Me.POBSort.Size = New System.Drawing.Size(221, 22) Me.POBSort.Text = "S&ort" ' + 'POConvert + ' + Me.POConvert.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image + Me.POConvert.DropDown = Me.cmnConversion + Me.POConvert.Image = Global.iBMSC.My.Resources.Resources.ConvertNotes + Me.POConvert.ImageTransparentColor = System.Drawing.Color.Magenta + Me.POConvert.Name = "POConvert" + Me.POConvert.Size = New System.Drawing.Size(29, 22) + Me.POConvert.Text = "Convert Notes" + ' 'mnPreview ' Me.mnPreview.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.mnPlayB, Me.mnPlay, Me.mnStop}) @@ -1279,16 +1289,6 @@ Partial Class MainWindow Me.mnStop.Size = New System.Drawing.Size(201, 22) Me.mnStop.Text = "&Stop" ' - 'POConvert - ' - Me.POConvert.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image - Me.POConvert.DropDown = Me.cmnConversion - Me.POConvert.Image = Global.iBMSC.My.Resources.Resources.ConvertNotes - Me.POConvert.ImageTransparentColor = System.Drawing.Color.Magenta - Me.POConvert.Name = "POConvert" - Me.POConvert.Size = New System.Drawing.Size(29, 22) - Me.POConvert.Text = "Convert Notes" - ' 'TBMain ' Me.TBMain.AccessibleRole = System.Windows.Forms.AccessibleRole.ToolBar @@ -1297,7 +1297,7 @@ Partial Class MainWindow Me.TBMain.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.TBNew, Me.TBOpen, Me.TBSave, Me.ToolStripSeparator1, Me.TBCut, Me.TBCopy, Me.TBPaste, Me.TBFind, Me.ToolStripSeparator24, Me.TBStatistics, Me.POConvert, Me.TBMyO2, Me.ToolStripSeparator4, Me.TBErrorCheck, Me.TBPreviewOnClick, Me.TBShowFileName, Me.ToolStripSeparator8, Me.TBNTInput, Me.TBWavIncrease, Me.ToolStripSeparator2, Me.TBUndo, Me.TBRedo, Me.ToolStripSeparator5, Me.TBTimeSelect, Me.TBSelect, Me.TBWrite, Me.ToolStripSeparator3, Me.TBPlayB, Me.TBPlay, Me.TBStop, Me.TBPOptions, Me.ToolStripSeparator7, Me.TBVOptions, Me.TBGOptions, Me.TBLanguage, Me.TBTheme, Me.POBStorm, Me.TBTotalValue}) Me.TBMain.Location = New System.Drawing.Point(3, 23) Me.TBMain.Name = "TBMain" - Me.TBMain.Size = New System.Drawing.Size(818, 25) + Me.TBMain.Size = New System.Drawing.Size(764, 25) Me.TBMain.TabIndex = 64 Me.TBMain.Text = "Main Toolbar" ' diff --git a/iBMSC/MainWindow.resx b/iBMSC/MainWindow.resx index 86ac48745..c7fe67b82 100644 --- a/iBMSC/MainWindow.resx +++ b/iBMSC/MainWindow.resx @@ -151,37 +151,37 @@ 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 - +x/7oiTGdApFQAAAAABJRU5ErkJggg== + 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 + /Q/uGCTFaBLUdAAAAABJRU5ErkJggg== @@ -190,12 +190,6 @@ 931, 2 - - 1022, 2 - - - 931, 2 - 1120, 2 diff --git a/iBMSC/MainWindow.vb b/iBMSC/MainWindow.vb index c2affdfed..fa08b5596 100644 --- a/iBMSC/MainWindow.vb +++ b/iBMSC/MainWindow.vb @@ -156,6 +156,9 @@ Public Class MainWindow 'Variables misc Dim menuVPosition As Double = 0.0# Dim tempResize As Integer = 0 + Dim hCOM(1295) As String ' + Dim hCOMNum As Integer = 0 + Dim gXKeyMode As String = "SP" ' Determines from column width 7key mode, 9key mode or 14key mode '----AutoSave Options Dim PreviousAutoSavedFileName As String = "" @@ -170,8 +173,6 @@ Public Class MainWindow Dim hBPM(1295) As Long 'x10000 Dim hSTOP(1295) As Long Dim hBMSCROLL(1295) As Long - Dim hCOM(1295) As String - Dim hCOMNum As Integer = 0 '----Grid Options Dim gSnap As Boolean = True @@ -197,7 +198,6 @@ Public Class MainWindow 'Dim gA8 As Boolean = False Dim iPlayer As Integer = 0 Dim gColumns As Integer = 46 - Dim gXKeyMode As String = "SP" ' Determines from column width 7key mode, 9key mode or 14key mode '----Visual Options Dim vo As New visualSettings() diff --git a/iBMSC/Option Windows/OpVisualOverride.Designer.vb b/iBMSC/Option Windows/OpVisualOverride.Designer.vb index a4a28337a..f74d965a5 100644 --- a/iBMSC/Option Windows/OpVisualOverride.Designer.vb +++ b/iBMSC/Option Windows/OpVisualOverride.Designer.vb @@ -29,16 +29,18 @@ Partial Class OpVisualOverride Me.OK_Button = New System.Windows.Forms.Button() Me.Cancel_Button = New System.Windows.Forms.Button() Me.ContextMenuStrip1 = New System.Windows.Forms.ContextMenuStrip(Me.components) - Me.TName = New System.Windows.Forms.TextBox() Me.TableLayoutPanel1 = New System.Windows.Forms.TableLayoutPanel() - Me.TRangeU = New System.Windows.Forms.TextBox() - Me.TRangeL = New System.Windows.Forms.TextBox() Me.Label4 = New System.Windows.Forms.Label() - Me.Label2 = New System.Windows.Forms.Label() Me.Label1 = New System.Windows.Forms.Label() Me.Label3 = New System.Windows.Forms.Label() + Me.TRangeL = New System.Windows.Forms.TextBox() + Me.Label5 = New System.Windows.Forms.Label() + Me.TRangeU = New System.Windows.Forms.TextBox() + Me.TableLayoutPanel2 = New System.Windows.Forms.TableLayoutPanel() Me.BColor = New System.Windows.Forms.Button() + Me.TName = New System.Windows.Forms.TextBox() Me.TableLayoutPanel1.SuspendLayout() + Me.TableLayoutPanel2.SuspendLayout() Me.SuspendLayout() ' 'LOverrides @@ -97,78 +99,38 @@ Partial Class OpVisualOverride Me.ContextMenuStrip1.Name = "ContextMenuStrip1" Me.ContextMenuStrip1.Size = New System.Drawing.Size(61, 4) ' - 'TName - ' - Me.TName.Dock = System.Windows.Forms.DockStyle.Fill - Me.TName.Location = New System.Drawing.Point(177, 3) - Me.TName.Name = "TName" - Me.TName.Size = New System.Drawing.Size(168, 20) - Me.TName.TabIndex = 10 - ' 'TableLayoutPanel1 ' Me.TableLayoutPanel1.ColumnCount = 2 Me.TableLayoutPanel1.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50.0!)) Me.TableLayoutPanel1.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50.0!)) - Me.TableLayoutPanel1.Controls.Add(Me.TRangeU, 1, 2) - Me.TableLayoutPanel1.Controls.Add(Me.TRangeL, 1, 1) - Me.TableLayoutPanel1.Controls.Add(Me.Label4, 0, 3) - Me.TableLayoutPanel1.Controls.Add(Me.Label2, 0, 2) + Me.TableLayoutPanel1.Controls.Add(Me.Label4, 0, 2) Me.TableLayoutPanel1.Controls.Add(Me.TName, 1, 0) Me.TableLayoutPanel1.Controls.Add(Me.Label1, 0, 1) Me.TableLayoutPanel1.Controls.Add(Me.Label3, 0, 0) - Me.TableLayoutPanel1.Controls.Add(Me.BColor, 1, 3) + Me.TableLayoutPanel1.Controls.Add(Me.BColor, 1, 2) + Me.TableLayoutPanel1.Controls.Add(Me.TableLayoutPanel2, 1, 1) Me.TableLayoutPanel1.Location = New System.Drawing.Point(12, 73) Me.TableLayoutPanel1.Name = "TableLayoutPanel1" - Me.TableLayoutPanel1.RowCount = 4 - Me.TableLayoutPanel1.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 25.0!)) + Me.TableLayoutPanel1.RowCount = 3 Me.TableLayoutPanel1.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 25.0!)) Me.TableLayoutPanel1.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 25.0!)) Me.TableLayoutPanel1.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 25.0!)) Me.TableLayoutPanel1.Size = New System.Drawing.Size(348, 100) Me.TableLayoutPanel1.TabIndex = 93 ' - 'TRangeU - ' - Me.TRangeU.Dock = System.Windows.Forms.DockStyle.Fill - Me.TRangeU.Location = New System.Drawing.Point(177, 53) - Me.TRangeU.MaxLength = 2 - Me.TRangeU.Name = "TRangeU" - Me.TRangeU.Size = New System.Drawing.Size(168, 20) - Me.TRangeU.TabIndex = 12 - ' - 'TRangeL - ' - Me.TRangeL.Dock = System.Windows.Forms.DockStyle.Fill - Me.TRangeL.Location = New System.Drawing.Point(177, 28) - Me.TRangeL.MaxLength = 2 - Me.TRangeL.Name = "TRangeL" - Me.TRangeL.Size = New System.Drawing.Size(168, 20) - Me.TRangeL.TabIndex = 11 - ' 'Label4 ' Me.Label4.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.Label4.AutoSize = True - Me.Label4.Location = New System.Drawing.Point(3, 75) + Me.Label4.Location = New System.Drawing.Point(3, 66) Me.Label4.Name = "Label4" - Me.Label4.Size = New System.Drawing.Size(168, 25) + Me.Label4.Size = New System.Drawing.Size(168, 34) Me.Label4.TabIndex = 0 Me.Label4.Text = "Note Color" - ' - 'Label2 - ' - Me.Label2.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.Label2.AutoSize = True - Me.Label2.Location = New System.Drawing.Point(3, 50) - Me.Label2.Name = "Label2" - Me.Label2.Size = New System.Drawing.Size(168, 25) - Me.Label2.TabIndex = 0 - Me.Label2.Text = "Note Range (Upper Bound)" + Me.Label4.TextAlign = System.Drawing.ContentAlignment.MiddleRight ' 'Label1 ' @@ -176,11 +138,12 @@ Partial Class OpVisualOverride Or System.Windows.Forms.AnchorStyles.Left) _ Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) Me.Label1.AutoSize = True - Me.Label1.Location = New System.Drawing.Point(3, 25) + Me.Label1.Location = New System.Drawing.Point(3, 33) Me.Label1.Name = "Label1" - Me.Label1.Size = New System.Drawing.Size(168, 25) + Me.Label1.Size = New System.Drawing.Size(168, 33) Me.Label1.TabIndex = 0 - Me.Label1.Text = "Note Range (Lower Bound)" + Me.Label1.Text = "Label Range" + Me.Label1.TextAlign = System.Drawing.ContentAlignment.MiddleRight ' 'Label3 ' @@ -190,20 +153,77 @@ Partial Class OpVisualOverride Me.Label3.AutoSize = True Me.Label3.Location = New System.Drawing.Point(3, 0) Me.Label3.Name = "Label3" - Me.Label3.Size = New System.Drawing.Size(168, 25) + Me.Label3.Size = New System.Drawing.Size(168, 33) Me.Label3.TabIndex = 0 Me.Label3.Text = "Option Name" + Me.Label3.TextAlign = System.Drawing.ContentAlignment.MiddleRight + ' + 'TRangeL + ' + Me.TRangeL.Dock = System.Windows.Forms.DockStyle.Fill + Me.TRangeL.Location = New System.Drawing.Point(3, 3) + Me.TRangeL.MaxLength = 2 + Me.TRangeL.Name = "TRangeL" + Me.TRangeL.Size = New System.Drawing.Size(52, 20) + Me.TRangeL.TabIndex = 11 + ' + 'Label5 + ' + Me.Label5.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.Label5.AutoSize = True + Me.Label5.Location = New System.Drawing.Point(61, 0) + Me.Label5.Name = "Label5" + Me.Label5.Size = New System.Drawing.Size(52, 25) + Me.Label5.TabIndex = 0 + Me.Label5.Text = "to" + Me.Label5.TextAlign = System.Drawing.ContentAlignment.MiddleCenter + ' + 'TRangeU + ' + Me.TRangeU.Dock = System.Windows.Forms.DockStyle.Fill + Me.TRangeU.Location = New System.Drawing.Point(119, 3) + Me.TRangeU.MaxLength = 2 + Me.TRangeU.Name = "TRangeU" + Me.TRangeU.Size = New System.Drawing.Size(52, 20) + Me.TRangeU.TabIndex = 12 + ' + 'TableLayoutPanel2 + ' + Me.TableLayoutPanel2.ColumnCount = 3 + Me.TableLayoutPanel2.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 33.33333!)) + Me.TableLayoutPanel2.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 33.33333!)) + Me.TableLayoutPanel2.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 33.33333!)) + Me.TableLayoutPanel2.Controls.Add(Me.TRangeU, 2, 0) + Me.TableLayoutPanel2.Controls.Add(Me.Label5, 1, 0) + Me.TableLayoutPanel2.Controls.Add(Me.TRangeL, 0, 0) + Me.TableLayoutPanel2.Location = New System.Drawing.Point(174, 33) + Me.TableLayoutPanel2.Margin = New System.Windows.Forms.Padding(0) + Me.TableLayoutPanel2.Name = "TableLayoutPanel2" + Me.TableLayoutPanel2.RowCount = 1 + Me.TableLayoutPanel2.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100.0!)) + Me.TableLayoutPanel2.Size = New System.Drawing.Size(174, 25) + Me.TableLayoutPanel2.TabIndex = 14 ' 'BColor ' Me.BColor.Dock = System.Windows.Forms.DockStyle.Fill - Me.BColor.Location = New System.Drawing.Point(177, 78) + Me.BColor.Location = New System.Drawing.Point(177, 69) Me.BColor.Name = "BColor" - Me.BColor.Size = New System.Drawing.Size(168, 19) + Me.BColor.Size = New System.Drawing.Size(168, 28) Me.BColor.TabIndex = 13 Me.BColor.Text = "Button1" Me.BColor.UseVisualStyleBackColor = True ' + 'TName + ' + Me.TName.Dock = System.Windows.Forms.DockStyle.Fill + Me.TName.Location = New System.Drawing.Point(177, 3) + Me.TName.Name = "TName" + Me.TName.Size = New System.Drawing.Size(168, 20) + Me.TName.TabIndex = 10 + ' 'OpVisualOverride ' Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!) @@ -219,6 +239,8 @@ Partial Class OpVisualOverride Me.Text = "Visual Override Options" Me.TableLayoutPanel1.ResumeLayout(False) Me.TableLayoutPanel1.PerformLayout() + Me.TableLayoutPanel2.ResumeLayout(False) + Me.TableLayoutPanel2.PerformLayout() Me.ResumeLayout(False) End Sub @@ -228,13 +250,14 @@ Partial Class OpVisualOverride Friend WithEvents OK_Button As Button Friend WithEvents Cancel_Button As Button Friend WithEvents ContextMenuStrip1 As ContextMenuStrip - Friend WithEvents TName As TextBox Friend WithEvents TableLayoutPanel1 As TableLayoutPanel Friend WithEvents Label1 As Label - Friend WithEvents Label2 As Label Friend WithEvents Label3 As Label Friend WithEvents Label4 As Label + Friend WithEvents TName As TextBox + Friend WithEvents BColor As Button + Friend WithEvents TableLayoutPanel2 As TableLayoutPanel Friend WithEvents TRangeU As TextBox + Friend WithEvents Label5 As Label Friend WithEvents TRangeL As TextBox - Friend WithEvents BColor As Button End Class From bdc474b5d992e880103593ca2e819adf9b5af635 Mon Sep 17 00:00:00 2001 From: psyk2642 <60137590+psyk2642@users.noreply.github.com> Date: Sat, 26 Mar 2022 10:20:47 +0800 Subject: [PATCH 078/257] Added "Show Waveform" + Miscellaneous - When enabled, loads all sound files into the editor and displays the waveforms at their respective notes. - Can be very laggy, but the function has been optimized as far as possible, such as trimming the waveforms and skip loading the waveforms when the option is disabled. - The waveforms load only once when opening the chart and only when the option is enabled. - Fixed non-sound notes (BGA, POOR, etc.) playing sounds. --- iBMSC/ChartIO.vb | 5 +- iBMSC/EditorColumns.vb | 28 +- iBMSC/EditorPersistent.vb | 7 + iBMSC/ImageButtonsSmall/x16ShowWaveform.png | Bin 0 -> 9455 bytes iBMSC/MainWindow.designer.vb | 29 +- iBMSC/MainWindow.resx | 62 +-- iBMSC/MainWindow.vb | 41 ++ iBMSC/My Project/Resources.Designer.vb | 10 + iBMSC/My Project/Resources.resx | 365 +++++++++--------- .../OpVisualOverride.Designer.vb | 47 ++- iBMSC/PanelDraw.vb | 72 +++- iBMSC/PanelEvents.vb | 2 +- iBMSC/Waveform.vb | 62 ++- 13 files changed, 439 insertions(+), 291 deletions(-) create mode 100644 iBMSC/ImageButtonsSmall/x16ShowWaveform.png diff --git a/iBMSC/ChartIO.vb b/iBMSC/ChartIO.vb index 99bf531a1..e646fe0a1 100644 --- a/iBMSC/ChartIO.vb +++ b/iBMSC/ChartIO.vb @@ -26,8 +26,6 @@ Partial Public Class MainWindow ReDim hBPM(1295) 'x10000 ReDim hSTOP(1295) ReDim hBMSCROLL(1295) - ReDim hCOM(1295) - hCOMNum = 0 Me.InitializeNewBMS() Me.InitializeOpenBMS() @@ -269,9 +267,12 @@ SkipUpdateMeasureBottom: LWAV.Items.Clear() For xI1 = 1 To 1295 LWAV.Items.Add(C10to36(xI1) & ": " & hWAV(xI1)) + ' Add waveforms to wLWAV + If hWAV(xI1) <> "" AndAlso ShowWaveform Then wLWAV(xI1) = LoadWaveForm(ExcludeFileName(FileName) & "\" & hWAV(xI1)) Next LWAV.SelectedIndex = 0 LWAV.Visible = True + If ShowWaveform Then WaveformLoaded = True TExpansion.Text = xExpansion SkipLWAVAndExpansion: diff --git a/iBMSC/EditorColumns.vb b/iBMSC/EditorColumns.vb index 161d1731f..0bfbda76b 100644 --- a/iBMSC/EditorColumns.vb +++ b/iBMSC/EditorColumns.vb @@ -34,11 +34,11 @@ Partial Public Class MainWindow Public Const niS4 As Integer = 26 Public Const niB As Integer = 27 - Public column() As Column = {New Column(0, 50, "Measure", False, True, False, True, 0, 0, &HFF00FFFF, 0, &HFF00FFFF, 0), - New Column(50, 60, "SCROLL", True, True, False, True, 99, 0, &HFFFF0000, 0, &HFFFF0000, 0), - New Column(110, 60, "BPM", True, True, False, True, 3, 0, &HFFFF0000, 0, &HFFFF0000, 0), - New Column(170, 50, "STOP", True, True, False, True, 9, 0, &HFFFF0000, 0, &HFFFF0000, 0), - New Column(220, 5, "", False, False, False, True, 0, 0, 0, 0, 0, 0), + Public column() As Column = {New Column(0, 50, "Measure", False, True, False, False, 0, 0, &HFF00FFFF, 0, &HFF00FFFF, 0), + New Column(50, 60, "SCROLL", True, True, False, False, 99, 0, &HFFFF0000, 0, &HFFFF0000, 0), + New Column(110, 60, "BPM", True, True, False, False, 3, 0, &HFFFF0000, 0, &HFFFF0000, 0), + New Column(170, 50, "STOP", True, True, False, False, 9, 0, &HFFFF0000, 0, &HFFFF0000, 0), + New Column(220, 5, "", False, False, False, False, 0, 0, 0, 0, 0, 0), New Column(225, 42, "A1", True, False, True, True, 16, &HFFB0B0B0, &HFF000000, &HFFC0C0C0, &HFF000000, &H14FFFFFF), New Column(267, 30, "A2", True, False, True, True, 11, &HFF62B0FF, &HFF000000, &HFF6AB0F7, &HFF000000, &H140033FF), New Column(297, 42, "A3", True, False, True, True, 12, &HFFB0B0B0, &HFF000000, &HFFC0C0C0, &HFF000000, &H14FFFFFF), @@ -47,15 +47,15 @@ Partial Public Class MainWindow New Column(426, 30, "A6", True, False, True, True, 15, &HFF62B0FF, &HFF000000, &HFF6AB0F7, &HFF000000, &H140033FF), New Column(456, 42, "A7", True, False, True, True, 18, &HFFB0B0B0, &HFF000000, &HFFC0C0C0, &HFF000000, &H14FFFFFF), New Column(498, 40, "A8", True, False, True, True, 19, &HFF808080, &HFF000000, &HFF909090, &HFF000000, 0), - New Column(498, 5, "", False, False, False, True, 0, 0, 0, 0, 0, 0), - New Column(503, 42, "D1", True, False, True, False, 21, &HFFB0B0B0, &HFF000000, &HFFC0C0C0, &HFF000000, &H14FFFFFF), - New Column(503, 30, "D2", True, False, True, False, 22, &HFF62B0FF, &HFF000000, &HFF6AB0F7, &HFF000000, &H140033FF), - New Column(503, 42, "D3", True, False, True, False, 23, &HFFB0B0B0, &HFF000000, &HFFC0C0C0, &HFF000000, &H14FFFFFF), - New Column(503, 45, "D4", True, False, True, False, 24, &HFFFFC862, &HFF000000, &HFFF7C66A, &HFF000000, &H16F38B0C), - New Column(503, 42, "D5", True, False, True, False, 25, &HFFB0B0B0, &HFF000000, &HFFC0C0C0, &HFF000000, &H14FFFFFF), - New Column(503, 30, "D6", True, False, True, False, 28, &HFF62B0FF, &HFF000000, &HFF6AB0F7, &HFF000000, &H140033FF), - New Column(503, 42, "D7", True, False, True, False, 29, &HFFB0B0B0, &HFF000000, &HFFC0C0C0, &HFF000000, &H14FFFFFF), - New Column(503, 40, "D8", True, False, True, False, 26, &HFF808080, &HFF000000, &HFF909090, &HFF000000, 0), + New Column(498, 5, "", False, False, False, False, 0, 0, 0, 0, 0, 0), + New Column(503, 42, "D1", True, False, True, True, 21, &HFFB0B0B0, &HFF000000, &HFFC0C0C0, &HFF000000, &H14FFFFFF), + New Column(503, 30, "D2", True, False, True, True, 22, &HFF62B0FF, &HFF000000, &HFF6AB0F7, &HFF000000, &H140033FF), + New Column(503, 42, "D3", True, False, True, True, 23, &HFFB0B0B0, &HFF000000, &HFFC0C0C0, &HFF000000, &H14FFFFFF), + New Column(503, 45, "D4", True, False, True, True, 24, &HFFFFC862, &HFF000000, &HFFF7C66A, &HFF000000, &H16F38B0C), + New Column(503, 42, "D5", True, False, True, True, 25, &HFFB0B0B0, &HFF000000, &HFFC0C0C0, &HFF000000, &H14FFFFFF), + New Column(503, 30, "D6", True, False, True, True, 28, &HFF62B0FF, &HFF000000, &HFF6AB0F7, &HFF000000, &H140033FF), + New Column(503, 42, "D7", True, False, True, True, 29, &HFFB0B0B0, &HFF000000, &HFFC0C0C0, &HFF000000, &H14FFFFFF), + New Column(503, 40, "D8", True, False, True, True, 26, &HFF808080, &HFF000000, &HFF909090, &HFF000000, 0), New Column(503, 5, "", False, False, False, False, 0, 0, 0, 0, 0, 0), New Column(503, 40, "BGA", True, False, False, False, 4, &HFF8CD78A, &HFF000000, &HFF90D38E, &HFF000000, 0), New Column(503, 40, "LAYER", True, False, False, False, 7, &HFF8CD78A, &HFF000000, &HFF90D38E, &HFF000000, 0), diff --git a/iBMSC/EditorPersistent.vb b/iBMSC/EditorPersistent.vb index 89ae7c8de..4ae8818c1 100644 --- a/iBMSC/EditorPersistent.vb +++ b/iBMSC/EditorPersistent.vb @@ -79,6 +79,7 @@ Partial Public Class MainWindow .WriteAttributeString("AutoFocusMouseEnter", AutoFocusMouseEnter) .WriteAttributeString("FirstClickDisabled", FirstClickDisabled) .WriteAttributeString("ShowFileName", ShowFileName) + .WriteAttributeString("ShowWaveform", ShowWaveform) .WriteAttributeString("MiddleButtonMoveMethod", MiddleButtonMoveMethod) .WriteAttributeString("AutoSaveInterval", AutoSaveInterval) .WriteAttributeString("PreviewOnClick", PreviewOnClick) @@ -340,6 +341,10 @@ Partial Public Class MainWindow TBShowFileName.Checked = ShowFileName TBShowFileName_Click(TBShowFileName, New System.EventArgs) + XMLLoadAttribute(.GetAttribute("ShowWaveform"), ShowWaveform) + TBShowWaveform.Checked = ShowWaveform + TBShowWaveform_Click(TBShowWaveform, New System.EventArgs) + XMLLoadAttribute(.GetAttribute("MiddleButtonMoveMethod"), MiddleButtonMoveMethod) XMLLoadAttribute(.GetAttribute("AutoFocusMouseEnter"), AutoFocusMouseEnter) XMLLoadAttribute(.GetAttribute("FirstClickDisabled"), FirstClickDisabled) @@ -680,6 +685,7 @@ EndOfSub: XMLLoadLocaleMenu(eOptions.Item("ErrorCheck"), mnErrorCheck.Text) XMLLoadLocaleMenu(eOptions.Item("PreviewOnClick"), mnPreviewOnClick.Text) XMLLoadLocaleMenu(eOptions.Item("ShowFileName"), mnShowFileName.Text) + XMLLoadLocaleMenu(eOptions.Item("ShowWaveform"), mnShowWaveform.Text) XMLLoadLocaleMenu(eOptions.Item("GeneralOptions"), mnGOptions.Text) XMLLoadLocaleMenu(eOptions.Item("VisualOptions"), mnVOptions.Text) XMLLoadLocaleMenu(eOptions.Item("PlayerOptions"), mnPOptions.Text) @@ -721,6 +727,7 @@ EndOfSub: XMLLoadLocale(eToolBar.Item("ErrorCheck"), TBErrorCheck.Text) XMLLoadLocale(eToolBar.Item("PreviewOnClick"), TBPreviewOnClick.Text) XMLLoadLocale(eToolBar.Item("ShowFileName"), TBShowFileName.Text) + XMLLoadLocale(eToolBar.Item("ShowWaveform"), TBShowWaveform.Text) XMLLoadLocale(eToolBar.Item("Undo"), TBUndo.Text) XMLLoadLocale(eToolBar.Item("Redo"), TBRedo.Text) XMLLoadLocale(eToolBar.Item("NT"), TBNTInput.Text) diff --git a/iBMSC/ImageButtonsSmall/x16ShowWaveform.png b/iBMSC/ImageButtonsSmall/x16ShowWaveform.png new file mode 100644 index 0000000000000000000000000000000000000000..d83ba692787905db924a4c4b013e6d7bf98f9fb9 GIT binary patch literal 9455 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 UnKD?@d$I5}RCFQ5w{0H&4?hZ7Hvj+t literal 0 HcmV?d00001 diff --git a/iBMSC/MainWindow.designer.vb b/iBMSC/MainWindow.designer.vb index 0ae9ebdf8..9eb830ae7 100644 --- a/iBMSC/MainWindow.designer.vb +++ b/iBMSC/MainWindow.designer.vb @@ -103,6 +103,7 @@ Partial Class MainWindow Me.mnErrorCheck = New System.Windows.Forms.ToolStripMenuItem() Me.mnPreviewOnClick = New System.Windows.Forms.ToolStripMenuItem() Me.mnShowFileName = New System.Windows.Forms.ToolStripMenuItem() + Me.mnShowWaveform = New System.Windows.Forms.ToolStripMenuItem() Me.ToolStripSeparator20 = New System.Windows.Forms.ToolStripSeparator() Me.mnGOptions = New System.Windows.Forms.ToolStripMenuItem() Me.mnVOptions = New System.Windows.Forms.ToolStripMenuItem() @@ -366,6 +367,7 @@ Partial Class MainWindow Me.Label6 = New System.Windows.Forms.Label() Me.POHeaderSwitch = New System.Windows.Forms.CheckBox() Me.POptionsScroll = New System.Windows.Forms.Panel() + Me.TBShowWaveform = New System.Windows.Forms.ToolStripButton() Me.cmnLanguage.SuspendLayout() Me.cmnTheme.SuspendLayout() Me.Menu1.SuspendLayout() @@ -1043,7 +1045,7 @@ Partial Class MainWindow ' 'mnOptions ' - Me.mnOptions.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.mnNTInput, Me.mnErrorCheck, Me.mnPreviewOnClick, Me.mnShowFileName, Me.ToolStripSeparator20, Me.mnGOptions, Me.mnVOptions, Me.mnVCOptions, Me.mnPOptions, Me.mnLanguage, Me.mnTheme}) + Me.mnOptions.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.mnNTInput, Me.mnErrorCheck, Me.mnPreviewOnClick, Me.mnShowFileName, Me.mnShowWaveform, Me.ToolStripSeparator20, Me.mnGOptions, Me.mnVOptions, Me.mnVCOptions, Me.mnPOptions, Me.mnLanguage, Me.mnTheme}) Me.mnOptions.Name = "mnOptions" Me.mnOptions.Size = New System.Drawing.Size(61, 19) Me.mnOptions.Text = "&Options" @@ -1087,6 +1089,14 @@ Partial Class MainWindow Me.mnShowFileName.Size = New System.Drawing.Size(253, 22) Me.mnShowFileName.Text = "Show &File Name on Notes" ' + 'mnShowWaveform + ' + Me.mnShowWaveform.CheckOnClick = True + Me.mnShowWaveform.Image = Global.iBMSC.My.Resources.Resources.x16ShowWaveform + Me.mnShowWaveform.Name = "mnShowWaveform" + Me.mnShowWaveform.Size = New System.Drawing.Size(253, 22) + Me.mnShowWaveform.Text = "Show &Waveform on Notes" + ' 'ToolStripSeparator20 ' Me.ToolStripSeparator20.Name = "ToolStripSeparator20" @@ -1294,10 +1304,10 @@ Partial Class MainWindow Me.TBMain.AccessibleRole = System.Windows.Forms.AccessibleRole.ToolBar Me.TBMain.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch Me.TBMain.Dock = System.Windows.Forms.DockStyle.None - Me.TBMain.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.TBNew, Me.TBOpen, Me.TBSave, Me.ToolStripSeparator1, Me.TBCut, Me.TBCopy, Me.TBPaste, Me.TBFind, Me.ToolStripSeparator24, Me.TBStatistics, Me.POConvert, Me.TBMyO2, Me.ToolStripSeparator4, Me.TBErrorCheck, Me.TBPreviewOnClick, Me.TBShowFileName, Me.ToolStripSeparator8, Me.TBNTInput, Me.TBWavIncrease, Me.ToolStripSeparator2, Me.TBUndo, Me.TBRedo, Me.ToolStripSeparator5, Me.TBTimeSelect, Me.TBSelect, Me.TBWrite, Me.ToolStripSeparator3, Me.TBPlayB, Me.TBPlay, Me.TBStop, Me.TBPOptions, Me.ToolStripSeparator7, Me.TBVOptions, Me.TBGOptions, Me.TBLanguage, Me.TBTheme, Me.POBStorm, Me.TBTotalValue}) + Me.TBMain.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.TBNew, Me.TBOpen, Me.TBSave, Me.ToolStripSeparator1, Me.TBCut, Me.TBCopy, Me.TBPaste, Me.TBFind, Me.ToolStripSeparator24, Me.TBStatistics, Me.POConvert, Me.TBMyO2, Me.ToolStripSeparator4, Me.TBErrorCheck, Me.TBPreviewOnClick, Me.TBShowFileName, Me.TBShowWaveform, Me.ToolStripSeparator8, Me.TBNTInput, Me.TBWavIncrease, Me.ToolStripSeparator2, Me.TBUndo, Me.TBRedo, Me.ToolStripSeparator5, Me.TBTimeSelect, Me.TBSelect, Me.TBWrite, Me.ToolStripSeparator3, Me.TBPlayB, Me.TBPlay, Me.TBStop, Me.TBPOptions, Me.ToolStripSeparator7, Me.TBVOptions, Me.TBGOptions, Me.TBLanguage, Me.TBTheme, Me.POBStorm, Me.TBTotalValue}) Me.TBMain.Location = New System.Drawing.Point(3, 23) Me.TBMain.Name = "TBMain" - Me.TBMain.Size = New System.Drawing.Size(764, 25) + Me.TBMain.Size = New System.Drawing.Size(841, 25) Me.TBMain.TabIndex = 64 Me.TBMain.Text = "Main Toolbar" ' @@ -4117,6 +4127,17 @@ Partial Class MainWindow Me.POptionsScroll.Size = New System.Drawing.Size(200, 781) Me.POptionsScroll.TabIndex = 28 ' + 'TBShowWaveform + ' + Me.TBShowWaveform.CheckOnClick = True + Me.TBShowWaveform.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image + Me.TBShowWaveform.Image = Global.iBMSC.My.Resources.Resources.x16ShowWaveform + Me.TBShowWaveform.ImageTransparentColor = System.Drawing.Color.Magenta + Me.TBShowWaveform.Name = "TBShowWaveform" + Me.TBShowWaveform.Size = New System.Drawing.Size(23, 22) + Me.TBShowWaveform.Text = "Show Waveform on Notes" + Me.TBShowWaveform.ToolTipText = "Show Waveform on Notes" + ' 'MainWindow ' Me.AllowDrop = True @@ -4592,4 +4613,6 @@ Partial Class MainWindow Friend WithEvents THSubArtist As TextBox Friend WithEvents POBRRandom As ToolStripMenuItem Friend WithEvents POBHRandom As ToolStripMenuItem + Friend WithEvents mnShowWaveform As ToolStripMenuItem + Friend WithEvents TBShowWaveform As ToolStripButton End Class diff --git a/iBMSC/MainWindow.resx b/iBMSC/MainWindow.resx index c7fe67b82..5d870e0e7 100644 --- a/iBMSC/MainWindow.resx +++ b/iBMSC/MainWindow.resx @@ -151,37 +151,37 @@ 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 - /Q/uGCTFaBLUdAAAAABJRU5ErkJggg== + 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 + +x+38CTBlgQJmAAAAABJRU5ErkJggg== diff --git a/iBMSC/MainWindow.vb b/iBMSC/MainWindow.vb index fa08b5596..ec1fa2d3a 100644 --- a/iBMSC/MainWindow.vb +++ b/iBMSC/MainWindow.vb @@ -60,6 +60,8 @@ Public Class MainWindow Dim Recent() As String = {"", "", "", "", ""} Dim NTInput As Boolean = True Dim ShowFileName As Boolean = False + Dim ShowWaveform As Boolean = False + Dim WaveformLoaded As Boolean = False Dim BeepWhileSaved As Boolean = True Dim BPMx1296 As Boolean = False @@ -159,6 +161,7 @@ Public Class MainWindow Dim hCOM(1295) As String ' Dim hCOMNum As Integer = 0 Dim gXKeyMode As String = "SP" ' Determines from column width 7key mode, 9key mode or 14key mode + Dim wLWAV(1295) As wWav '----AutoSave Options Dim PreviousAutoSavedFileName As String = "" @@ -206,6 +209,23 @@ Public Class MainWindow vo = xvo End Sub + '----Note Waveforms + Structure wWav + Public wWavL() As Single + Public wWavR() As Single + Public wSampleRate As Single + + Public Sub New(xWavL() As Single, + xWavR() As Single, + xSampleRate As Integer) + wWavL = xWavL + wWavR = xWavR + wSampleRate = xSampleRate + End Sub + End Structure + 'Note Waveform Options + + '----Visual Override Options Structure ColorOverride Public Name As String @@ -966,6 +986,9 @@ Public Class MainWindow CHLnObj.SelectedIndex = 0 GhostMode = 0 ReDim hCOM(1295) + hCOMNum = 0 + ReDim wLWAV(1295) + WaveformLoaded = False TExpansion.Text = "" @@ -1986,6 +2009,7 @@ EndSearch: Next For i = 0 To xLWAVIds.Count - 1 hWAV(xLWAVIds(i) + 1) = "" + wLWAV(xLWAVIds(i) + 1) = New wWav({}, {}, 0) LWAV.Items.Item(xLWAVIds(i)) = C10to36(xLWAVIds(i) + 1) & ": " Next If IsSaved Then SetIsSaved(False) @@ -2024,6 +2048,21 @@ EndSearch: RefreshPanelAll() End Sub + Private Sub TBShowWaveform_Click(sender As Object, e As EventArgs) Handles TBShowWaveform.Click, mnShowWaveform.Click + ShowWaveform = sender.Checked + TBShowWaveform.Checked = ShowWaveform + mnShowWaveform.Checked = ShowWaveform + TBShowWaveform.Image = My.Resources.x16ShowWaveform + mnShowWaveform.Image = My.Resources.x16ShowWaveform + If Not WaveformLoaded AndAlso ShowWaveform Then + For xI1 = 1 To UBound(wLWAV) + If hWAV(xI1) <> "" Then wLWAV(xI1) = LoadWaveForm(ExcludeFileName(FileName) & "\" & hWAV(xI1)) + Next + WaveformLoaded = True + End If + RefreshPanelAll() + End Sub + Private Sub TBCut_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBCut.Click, mnCut.Click Dim xUndo As UndoRedo.LinkedURCmd = Nothing Dim xRedo As UndoRedo.LinkedURCmd = New UndoRedo.Void @@ -3176,6 +3215,8 @@ RestartSorting: xSorted = False hWAV(xIndices(xI1) + 1) = GetFileName(xPath(xI1)) LWAV.Items.Item(xIndices(xI1)) = C10to36(xIndices(xI1) + 1) & ": " & GetFileName(xPath(xI1)) 'xI2 += 1 + ' Add waveforms to wLWAV + If ShowWaveform Then wLWAV(xIndices(xI1) + 1) = LoadWaveForm(xPath(xI1)) Next LWAV.SelectedIndices.Clear() diff --git a/iBMSC/My Project/Resources.Designer.vb b/iBMSC/My Project/Resources.Designer.vb index 231ae141d..41f43363d 100644 --- a/iBMSC/My Project/Resources.Designer.vb +++ b/iBMSC/My Project/Resources.Designer.vb @@ -925,6 +925,16 @@ Namespace My.Resources End Get End Property + ''' + ''' Looks up a localized resource of type System.Drawing.Bitmap. + ''' + Friend ReadOnly Property x16ShowWaveform() As System.Drawing.Bitmap + Get + Dim obj As Object = ResourceManager.GetObject("x16ShowWaveform", resourceCulture) + Return CType(obj,System.Drawing.Bitmap) + End Get + End Property + ''' ''' Looks up a localized resource of type System.Drawing.Bitmap. ''' diff --git a/iBMSC/My Project/Resources.resx b/iBMSC/My Project/Resources.resx index d799f1b43..e8f379bb4 100644 --- a/iBMSC/My Project/Resources.resx +++ b/iBMSC/My Project/Resources.resx @@ -118,289 +118,292 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - ..\About.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\MiscButtons\x16Lock.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\ImageButtonsSmall\Collapse.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\ImageButtonsSmall\x16settings.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\ImageButtons\ConvertNotes.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\About.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\ImageButtons\ConvertNotesH.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\ImageButtonsSmall\x16Up.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\ImageButtons\ConvertNotesHV.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\ImageButtonsSmall\x16TimeSelection.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\ImageButtons\ConvertNotesL.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\ImageButtonsSmall\x16MyO2.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\ImageButtons\ConvertNotesN.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\ImageButtonsSmall\x16LnBMSE.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\ImageButtons\ConvertNotesV.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Icon\icon2_16_highlight.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\ImageButtonsSmall\CursorResizeDown.cur;System.Byte[], mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - ..\ImageButtonsSmall\CursorResizeLeft.cur;System.Byte[], mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + ..\ImageButtonsSmall\x16Refresh.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\ImageButtonsSmall\CursorResizeRight.cur;System.Byte[], mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + ..\SplashScreenx.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\ImageButtonsSmall\Expand.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\MiscButtons\WAVWidth.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Icon\icon2_16.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\ImageButtonsSmall\x16Play.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Icon\icon2_16_highlight.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\ImageButtonsSmall\x16Redo.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\ImageButtons\ImageError.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\ImageButtonsSmall\x16Theme.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\imagebuttons\imageerrorg.gif;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\ImageButtonsSmall\x16PreviewOnClick.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\MiscButtons\lgheight.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\ImageButtonsSmall\x16Copy.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\MiscButtons\lgpartition.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\ImageButtonsSmall\x16MeasureRemove.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\MiscButtons\lgsub.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\ImageButtonsSmall\x16Random.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\MiscButtons\lgwidth.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\MiscButtons\x16PlayerDefault.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\O2Mania.Theme.xml;System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-16 + + ..\ImageButtons\ConvertNotes.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\ImageButtons\Shortcut.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\ImageButtonsSmall\x16HRandom.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\SplashScreenx.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\ImageButtonsSmall\x16SaveAs.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\ImageButtons\Statistics3.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\ImageButtonsSmall\x16Open.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\TransparentBG.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\ImageButtonsSmall\x16PreviewCheckN.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\MiscButtons\WAVLeft.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\ImageButtonsSmall\x16Select.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\MiscButtons\WAVOffset.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\ImageButtons\ConvertNotesL.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\MiscButtons\WAVPrecision.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\ImageButtonsSmall\Expand.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\MiscButtons\WAVSaturation.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\ImageButtonsSmall\x16Statistics.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\MiscButtons\WAVTransparency.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\ImageButtonsSmall\x16SRandom.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\MiscButtons\WAVWidth.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\MiscButtons\WAVPrecision.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\ImageButtonsSmall\x16About.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\ImageButtonsSmall\x16Find.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\ImageButtonsSmall\x16Paste.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\MiscButtons\x16Add.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\ImageButtonsSmall\x16Associate.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\ImageButtonsSmall\x16CheckError.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\ImageButtonsSmall\x16CheckErrorN.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\ImageButtonsSmall\x16Copy.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\ImageButtonsSmall\x16Down.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\ImageButtonsSmall\x16Cut.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\ImageButtonsSmall\x16Down.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\ImageButtons\ConvertNotesH.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\ImageButtonsSmall\x16Export.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\MiscButtons\lgpartition.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\ImageButtonsSmall\x16Export2.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\ImageButtonsSmall\x16GeneralOptions.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\ImageButtonsSmall\x16Find.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\ImageButtonsSmall\x16Import.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\..\..\backup\3.4.0.12\iBMSC\ImageButtonsSmall\x16Flip.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Icon\icon2_16.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\ImageButtonsSmall\x16GeneralOptions.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\ImageButtonsSmall\x16NewFromCode.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\ImageButtonsSmall\x16Help.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\ImageButtonsSmall\x16RRandom.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\ImageButtonsSmall\x16HRandom.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\ImageButtonsSmall\x16Mirror.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\ImageButtonsSmall\x16Import.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\ImageButtonsSmall\CursorResizeLeft.cur;System.Byte[], mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 ..\ImageButtonsSmall\x16Import2.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\ImageButtonsSmall\x16Language.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\ImageButtonsSmall\x16Associate.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\ImageButtonsSmall\x16LnBMSE.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\ImageButtonsSmall\x16NTInput.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\ImageButtonsSmall\x16LnNT.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\MiscButtons\lgheight.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\MiscButtons\x16Lock.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\ImageButtonsSmall\x16PlayerOptions.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\ImageButtonsSmall\x16MeasureInsert.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\MiscButtons\lgsub.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\ImageButtonsSmall\x16MeasureRemove.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\MiscButtons\WAVTransparency.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\ImageButtonsSmall\x16Mirror.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\ImageButtonsSmall\x16MultiSelect.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\ImageButtonsSmall\x16ModifyLabel.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\ImageButtonsSmall\x16ShowFileNameN.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\ImageButtonsSmall\x16ShowFileName.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\ImageButtonsSmall\x16ModifyLabelN.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\ImageButtonsSmall\x16ModifyLabelY.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\O2Mania.Theme.xml;System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-16 - - ..\ImageButtonsSmall\x16MultiSelect.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\MiscButtons\WAVOffset.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\ImageButtonsSmall\x16MyO2.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\ImageButtons\ConvertNotesHV.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\ImageButtonsSmall\x16New.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\ImageButtonsSmall\x16VisualOptions.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\ImageButtonsSmall\x16NewFromCode.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\ImageButtonsSmall\x16Export.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\ImageButtonsSmall\x16NTInput.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\ImageButtonsSmall\Collapse.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\ImageButtonsSmall\x16Open.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\ImageButtonsSmall\x16Help.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\ImageButtonsSmall\x16Paste.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\ImageButtons\Statistics3.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\ImageButtonsSmall\x16Pen.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\ImageButtonsSmall\x16Play.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\TransparentBG.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\ImageButtonsSmall\x16PlayB.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\ImageButtonsSmall\x16CheckErrorN.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\MiscButtons\x16PlayerBrowse.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\ImageButtonsSmall\x16New.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\MiscButtons\x16PlayerDefault.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\ImageButtonsSmall\x16ModifyLabelY.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\ImageButtonsSmall\x16PlayerOptions.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\ImageButtons\ConvertNotesN.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\ImageButtonsSmall\x16PreviewCheck.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\ImageButtonsSmall\x16Storm.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\ImageButtonsSmall\x16PreviewCheckN.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\ImageButtonsSmall\x16MeasureInsert.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\ImageButtonsSmall\x16PreviewOnClick.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\MiscButtons\x16Remove.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\ImageButtonsSmall\x16PreviewOnClickN.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\MiscButtons\x16PlayerBrowse.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\ImageButtonsSmall\x16Random.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\ImageButtons\Shortcut.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\ImageButtonsSmall\x16Redo.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\ImageButtons\ImageError.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\ImageButtonsSmall\x16Refresh.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\MiscButtons\WAVLeft.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\MiscButtons\x16Remove.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\MiscButtons\WAVSaturation.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\ImageButtonsSmall\x16RRandom.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\ImageButtonsSmall\x16Language.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\ImageButtonsSmall\x16Save.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\..\..\backup\3.4.0.12\iBMSC\ImageButtonsSmall\x16Flip.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\ImageButtonsSmall\x16SaveAs.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\ImageButtonsSmall\CursorResizeRight.cur;System.Byte[], mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - ..\ImageButtonsSmall\x16Select.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\ImageButtonsSmall\x16About.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\ImageButtonsSmall\x16settings.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\ImageButtonsSmall\x16Undo.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\ImageButtonsSmall\x16ShowFileName.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\ImageButtonsSmall\x16PreviewCheck.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\ImageButtonsSmall\x16ShowFileNameN.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\ImageButtonsSmall\x16Stop.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\ImageButtonsSmall\x16SRandom.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\ImageButtonsSmall\x16CheckError.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\ImageButtonsSmall\x16Statistics.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\ImageButtonsSmall\x16ModifyLabel.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\ImageButtonsSmall\x16Stop.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\ImageButtonsSmall\x16PreviewOnClickN.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\ImageButtonsSmall\x16Storm.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\imagebuttons\imageerrorg.gif;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\ImageButtonsSmall\x16Theme.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\ImageButtonsSmall\x16LnNT.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\ImageButtonsSmall\x16TimeSelection.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\ImageButtonsSmall\x16Export2.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\ImageButtonsSmall\x16Undo.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\ImageButtons\ConvertNotesV.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\ImageButtonsSmall\x16Up.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\ImageButtonsSmall\x16PlayB.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\ImageButtonsSmall\x16VisualOptions.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\ImageButtonsSmall\x16Save.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\MiscButtons\lgwidth.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\ImageButtonsSmall\x16ShowWaveform.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a \ No newline at end of file diff --git a/iBMSC/Option Windows/OpVisualOverride.Designer.vb b/iBMSC/Option Windows/OpVisualOverride.Designer.vb index f74d965a5..e12b54021 100644 --- a/iBMSC/Option Windows/OpVisualOverride.Designer.vb +++ b/iBMSC/Option Windows/OpVisualOverride.Designer.vb @@ -45,19 +45,22 @@ Partial Class OpVisualOverride ' 'LOverrides ' + Me.LOverrides.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.LOverrides.FormattingEnabled = True Me.LOverrides.IntegralHeight = False Me.LOverrides.Items.AddRange(New Object() {"Drums", "Arps"}) Me.LOverrides.Location = New System.Drawing.Point(12, 12) Me.LOverrides.Name = "LOverrides" - Me.LOverrides.Size = New System.Drawing.Size(225, 55) + Me.LOverrides.Size = New System.Drawing.Size(156, 55) Me.LOverrides.TabIndex = 0 ' 'BRemove ' Me.BRemove.Anchor = CType((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) Me.BRemove.FlatStyle = System.Windows.Forms.FlatStyle.System - Me.BRemove.Location = New System.Drawing.Point(243, 41) + Me.BRemove.Location = New System.Drawing.Point(174, 41) Me.BRemove.Name = "BRemove" Me.BRemove.Size = New System.Drawing.Size(117, 23) Me.BRemove.TabIndex = 2 @@ -68,7 +71,7 @@ Partial Class OpVisualOverride ' Me.BAdd.Anchor = CType((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) Me.BAdd.FlatStyle = System.Windows.Forms.FlatStyle.System - Me.BAdd.Location = New System.Drawing.Point(243, 12) + Me.BAdd.Location = New System.Drawing.Point(174, 12) Me.BAdd.Name = "BAdd" Me.BAdd.Size = New System.Drawing.Size(117, 23) Me.BAdd.TabIndex = 1 @@ -78,7 +81,7 @@ Partial Class OpVisualOverride 'OK_Button ' Me.OK_Button.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) - Me.OK_Button.Location = New System.Drawing.Point(218, 187) + Me.OK_Button.Location = New System.Drawing.Point(149, 187) Me.OK_Button.Name = "OK_Button" Me.OK_Button.Size = New System.Drawing.Size(67, 23) Me.OK_Button.TabIndex = 100 @@ -88,7 +91,7 @@ Partial Class OpVisualOverride ' Me.Cancel_Button.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) Me.Cancel_Button.DialogResult = System.Windows.Forms.DialogResult.Cancel - Me.Cancel_Button.Location = New System.Drawing.Point(291, 187) + Me.Cancel_Button.Location = New System.Drawing.Point(222, 187) Me.Cancel_Button.Name = "Cancel_Button" Me.Cancel_Button.Size = New System.Drawing.Size(67, 23) Me.Cancel_Button.TabIndex = 101 @@ -101,6 +104,8 @@ Partial Class OpVisualOverride ' 'TableLayoutPanel1 ' + Me.TableLayoutPanel1.Anchor = CType(((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left) _ + Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) Me.TableLayoutPanel1.ColumnCount = 2 Me.TableLayoutPanel1.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50.0!)) Me.TableLayoutPanel1.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50.0!)) @@ -116,7 +121,7 @@ Partial Class OpVisualOverride Me.TableLayoutPanel1.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 25.0!)) Me.TableLayoutPanel1.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 25.0!)) Me.TableLayoutPanel1.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 25.0!)) - Me.TableLayoutPanel1.Size = New System.Drawing.Size(348, 100) + Me.TableLayoutPanel1.Size = New System.Drawing.Size(279, 100) Me.TableLayoutPanel1.TabIndex = 93 ' 'Label4 @@ -127,7 +132,7 @@ Partial Class OpVisualOverride Me.Label4.AutoSize = True Me.Label4.Location = New System.Drawing.Point(3, 66) Me.Label4.Name = "Label4" - Me.Label4.Size = New System.Drawing.Size(168, 34) + Me.Label4.Size = New System.Drawing.Size(133, 34) Me.Label4.TabIndex = 0 Me.Label4.Text = "Note Color" Me.Label4.TextAlign = System.Drawing.ContentAlignment.MiddleRight @@ -140,7 +145,7 @@ Partial Class OpVisualOverride Me.Label1.AutoSize = True Me.Label1.Location = New System.Drawing.Point(3, 33) Me.Label1.Name = "Label1" - Me.Label1.Size = New System.Drawing.Size(168, 33) + Me.Label1.Size = New System.Drawing.Size(133, 33) Me.Label1.TabIndex = 0 Me.Label1.Text = "Label Range" Me.Label1.TextAlign = System.Drawing.ContentAlignment.MiddleRight @@ -153,7 +158,7 @@ Partial Class OpVisualOverride Me.Label3.AutoSize = True Me.Label3.Location = New System.Drawing.Point(3, 0) Me.Label3.Name = "Label3" - Me.Label3.Size = New System.Drawing.Size(168, 33) + Me.Label3.Size = New System.Drawing.Size(133, 33) Me.Label3.TabIndex = 0 Me.Label3.Text = "Option Name" Me.Label3.TextAlign = System.Drawing.ContentAlignment.MiddleRight @@ -164,7 +169,7 @@ Partial Class OpVisualOverride Me.TRangeL.Location = New System.Drawing.Point(3, 3) Me.TRangeL.MaxLength = 2 Me.TRangeL.Name = "TRangeL" - Me.TRangeL.Size = New System.Drawing.Size(52, 20) + Me.TRangeL.Size = New System.Drawing.Size(40, 20) Me.TRangeL.TabIndex = 11 ' 'Label5 @@ -173,9 +178,9 @@ Partial Class OpVisualOverride Or System.Windows.Forms.AnchorStyles.Left) _ Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) Me.Label5.AutoSize = True - Me.Label5.Location = New System.Drawing.Point(61, 0) + Me.Label5.Location = New System.Drawing.Point(49, 0) Me.Label5.Name = "Label5" - Me.Label5.Size = New System.Drawing.Size(52, 25) + Me.Label5.Size = New System.Drawing.Size(40, 25) Me.Label5.TabIndex = 0 Me.Label5.Text = "to" Me.Label5.TextAlign = System.Drawing.ContentAlignment.MiddleCenter @@ -183,10 +188,10 @@ Partial Class OpVisualOverride 'TRangeU ' Me.TRangeU.Dock = System.Windows.Forms.DockStyle.Fill - Me.TRangeU.Location = New System.Drawing.Point(119, 3) + Me.TRangeU.Location = New System.Drawing.Point(95, 3) Me.TRangeU.MaxLength = 2 Me.TRangeU.Name = "TRangeU" - Me.TRangeU.Size = New System.Drawing.Size(52, 20) + Me.TRangeU.Size = New System.Drawing.Size(42, 20) Me.TRangeU.TabIndex = 12 ' 'TableLayoutPanel2 @@ -198,20 +203,20 @@ Partial Class OpVisualOverride Me.TableLayoutPanel2.Controls.Add(Me.TRangeU, 2, 0) Me.TableLayoutPanel2.Controls.Add(Me.Label5, 1, 0) Me.TableLayoutPanel2.Controls.Add(Me.TRangeL, 0, 0) - Me.TableLayoutPanel2.Location = New System.Drawing.Point(174, 33) + Me.TableLayoutPanel2.Location = New System.Drawing.Point(139, 33) Me.TableLayoutPanel2.Margin = New System.Windows.Forms.Padding(0) Me.TableLayoutPanel2.Name = "TableLayoutPanel2" Me.TableLayoutPanel2.RowCount = 1 Me.TableLayoutPanel2.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100.0!)) - Me.TableLayoutPanel2.Size = New System.Drawing.Size(174, 25) + Me.TableLayoutPanel2.Size = New System.Drawing.Size(140, 25) Me.TableLayoutPanel2.TabIndex = 14 ' 'BColor ' Me.BColor.Dock = System.Windows.Forms.DockStyle.Fill - Me.BColor.Location = New System.Drawing.Point(177, 69) + Me.BColor.Location = New System.Drawing.Point(142, 69) Me.BColor.Name = "BColor" - Me.BColor.Size = New System.Drawing.Size(168, 28) + Me.BColor.Size = New System.Drawing.Size(134, 28) Me.BColor.TabIndex = 13 Me.BColor.Text = "Button1" Me.BColor.UseVisualStyleBackColor = True @@ -219,16 +224,16 @@ Partial Class OpVisualOverride 'TName ' Me.TName.Dock = System.Windows.Forms.DockStyle.Fill - Me.TName.Location = New System.Drawing.Point(177, 3) + Me.TName.Location = New System.Drawing.Point(142, 3) Me.TName.Name = "TName" - Me.TName.Size = New System.Drawing.Size(168, 20) + Me.TName.Size = New System.Drawing.Size(134, 20) Me.TName.TabIndex = 10 ' 'OpVisualOverride ' Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!) Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font - Me.ClientSize = New System.Drawing.Size(370, 222) + Me.ClientSize = New System.Drawing.Size(301, 222) Me.Controls.Add(Me.TableLayoutPanel1) Me.Controls.Add(Me.OK_Button) Me.Controls.Add(Me.Cancel_Button) diff --git a/iBMSC/PanelDraw.vb b/iBMSC/PanelDraw.vb index f560e75fc..7a6025f72 100644 --- a/iBMSC/PanelDraw.vb +++ b/iBMSC/PanelDraw.vb @@ -57,12 +57,14 @@ Partial Public Class MainWindow xI1 = DrawColumnCaptions(e1, xTWidth, xPanelHScroll, xI1) 'WaveForm - DrawWaveform(e1, xTHeight, xVSR, xI1) + DrawWaveform(e1, xTHeight, xPanelHScroll, xVSR) 'K 'If Not K Is Nothing Then DrawNotes(e1, xTHeight, xPanelHScroll, xPanelDisplacement) + If ShowWaveform Then DrawWaveformNotes(e1, xTHeight, xPanelHScroll, xVSR) + 'End If 'Selection Box @@ -487,9 +489,32 @@ Partial Public Class MainWindow Return e1 End Function - Private Sub DrawWaveform(e1 As BufferedGraphics, xTHeight As Integer, xVSR As Integer, xI1 As Integer) - If wWavL IsNot Nothing And wWavR IsNot Nothing And wPrecision > 0 Then - If wLock Then + Private Sub DrawWaveform(e1 As BufferedGraphics, xTHeight As Integer, xHS As Integer, xVSR As Integer, Optional xINote As Integer = -1) + Dim xwWavL() As Single + Dim xwWavR() As Single + Dim xwSampleRate As Integer + Dim xwPosition As Double + Dim xwLeft As Integer + If xINote = -1 Then + xwWavL = wWavL + xwWavR = wWavR + xwSampleRate = wSampleRate + xwPosition = wPosition + xwLeft = wLeft + Else + Dim xINoteValue = Notes(xINote).Value / 10000 + Dim xnLeft = nLeft(Notes(xINote).ColumnIndex) + Dim xColumnWidth As Integer = GetColumnWidth(Notes(xINote).ColumnIndex) + + xwWavL = wLWAV(xINoteValue).wWavL + xwWavR = wLWAV(xINoteValue).wWavR + xwSampleRate = wLWAV(xINoteValue).wSampleRate + xwPosition = Notes(xINote).VPosition + xwLeft = (HorizontalPositiontoDisplay(xnLeft, xHS) + HorizontalPositiontoDisplay(xnLeft + xColumnWidth, xHS)) / 2 + End If + + If xwWavL IsNot Nothing And xwWavR IsNot Nothing And wPrecision > 0 Then + If wLock AndAlso xINote = -1 Then For xI0 As Integer = 1 To UBound(Notes) If Notes(xI0).ColumnIndex >= niB Then wPosition = Notes(xI0).VPosition : Exit For Next @@ -500,19 +525,19 @@ Partial Public Class MainWindow Dim xD1 As Double - Dim bVPosition() As Double = {wPosition} + Dim bVPosition() As Double = {xwPosition} Dim bBPM() As Decimal = {Notes(0).Value / 10000} Dim bWavDataIndex() As Decimal = {0} For xI1 = 1 To UBound(Notes) If Notes(xI1).ColumnIndex = niBPM Then - If Notes(xI1).VPosition >= wPosition Then + If Notes(xI1).VPosition >= xwPosition Then ReDim Preserve bVPosition(UBound(bVPosition) + 1) ReDim Preserve bBPM(UBound(bBPM) + 1) ReDim Preserve bWavDataIndex(UBound(bWavDataIndex) + 1) bVPosition(UBound(bVPosition)) = Notes(xI1).VPosition bBPM(UBound(bBPM)) = Notes(xI1).Value / 10000 - bWavDataIndex(UBound(bWavDataIndex)) = (Notes(xI1).VPosition - bVPosition(UBound(bVPosition) - 1)) * 1.25 * wSampleRate / bBPM(UBound(bBPM) - 1) + bWavDataIndex(UBound(bWavDataIndex) - 1) + bWavDataIndex(UBound(bWavDataIndex)) = (Notes(xI1).VPosition - bVPosition(UBound(bVPosition) - 1)) * 1.25 * xwSampleRate / bBPM(UBound(bBPM) - 1) + bWavDataIndex(UBound(bWavDataIndex) - 1) Else bBPM(0) = Notes(xI1).Value / 10000 End If @@ -521,6 +546,7 @@ Partial Public Class MainWindow Dim xI2 As Integer Dim xI3 As Double + Dim xIPts As Integer = -1 For xI1 = xTHeight * wPrecision To 0 Step -1 xI3 = (-xI1 / wPrecision + xTHeight + xVSR * gxHeight - 1) / gxHeight @@ -528,21 +554,31 @@ Partial Public Class MainWindow If bVPosition(xI2) >= xI3 Then Exit For Next xI2 -= 1 - xD1 = bWavDataIndex(xI2) + (xI3 - bVPosition(xI2)) * 1.25 * wSampleRate / bBPM(xI2) - - If xD1 <= UBound(wWavL) And xD1 >= 0 Then - xPtsL(xI1) = New PointF(wWavL(Int(xD1)) * wWidth + wLeft, xI1 / wPrecision) - xPtsR(xI1) = New PointF(wWavR(Int(xD1)) * wWidth + wLeft, xI1 / wPrecision) - Else - xPtsL(xI1) = New PointF(wLeft, xI1 / wPrecision) - xPtsR(xI1) = New PointF(wLeft, xI1 / wPrecision) + xD1 = bWavDataIndex(xI2) + (xI3 - bVPosition(xI2)) * 1.25 * xwSampleRate / bBPM(xI2) + + If xD1 <= UBound(xwWavL) And xD1 >= 0 Then + xIPts += 1 + xPtsL(xIPts) = New PointF(xwWavL(Int(xD1)) * wWidth + xwLeft, xI1 / wPrecision) + xPtsR(xIPts) = New PointF(xwWavR(Int(xD1)) * wWidth + xwLeft, xI1 / wPrecision) End If Next + ReDim Preserve xPtsL(xIPts) + ReDim Preserve xPtsR(xIPts) + If xPtsL.Length <= 1 Or xPtsR.Length <= 1 Then Exit Sub e1.Graphics.DrawLines(vo.pBGMWav, xPtsL) e1.Graphics.DrawLines(vo.pBGMWav, xPtsR) End If End Sub + Private Sub DrawWaveformNotes(e1 As BufferedGraphics, xTHeight As Integer, xHS As Integer, xVSR As Integer) + For xINote = 1 To UBound(Notes) + If Not (-PanelVScroll(PanelFocus) + spMain(PanelFocus).Height / gxHeight < Notes(xINote).VPosition) AndAlso _ ' If note is not higher than window + IsColumnSound(Notes(xINote).ColumnIndex) AndAlso _ ' Column is sound + Not Notes(xINote).Comment Then _ ' Note is not comment + DrawWaveform(e1, xTHeight, xHS, xVSR, xINote) + Next + End Sub + ''' ''' Draw a note in a buffer. ''' @@ -636,7 +672,7 @@ Partial Public Class MainWindow vo.kHeight) ' Label - e.Graphics.DrawString(IIf(IsColumnNumeric(sNote.ColumnIndex) AndAlso Not sNote.Comment, sNote.Value / 10000, xLabel), + e.Graphics.DrawString(xLabel, vo.kFont, xBrush2, HorizontalPositiontoDisplay(xnLeft, xHS) + vo.kLabelHShift, NoteRowToPanelHeight(sNote.VPosition, xVS, xHeight) - vo.kHeight + vo.kLabelVShift - IIf(sNote.Comment, CInt(sNote.Length * gxHeight), 0)) @@ -783,7 +819,7 @@ Partial Public Class MainWindow xColumnWidth * gxWidth - 3, CInt(sNote.Length * gxHeight) + vo.kHeight) ' Note B36 - e.Graphics.DrawString(IIf(IsColumnNumeric(sNote.ColumnIndex) AndAlso Not sNote.Comment, sNote.Value / 10000, xLabel), + e.Graphics.DrawString(xLabel, vo.kFont, xBrush2, HorizontalPositiontoDisplay(xnLeft, xHS) + vo.kLabelHShiftL - 2, NoteRowToPanelHeight(sNote.VPosition, xVS, xHeight) - vo.kHeight + vo.kLabelVShift - IIf(sNote.Comment, CInt(sNote.Length * gxHeight), 0)) @@ -833,6 +869,8 @@ Partial Public Class MainWindow Else xLabel = WordWrapConvert(hCOM(C36to10(xLabel))) End If + ElseIf IsColumnNumeric(sNote.ColumnIndex) Then ' IIf(IsColumnNumeric(sNote.ColumnIndex) AndAlso Not sNote.Comment, sNote.Value / 10000, xLabel) + xLabel = sNote.Value / 10000 ElseIf ShowFileName AndAlso hWAV(C36to10(xLabel)) <> "" Then xLabel = Path.GetFileNameWithoutExtension(hWAV(C36to10(xLabel))) End If diff --git a/iBMSC/PanelEvents.vb b/iBMSC/PanelEvents.vb index feb68767a..4585ef56f 100644 --- a/iBMSC/PanelEvents.vb +++ b/iBMSC/PanelEvents.vb @@ -532,7 +532,7 @@ Partial Public Class MainWindow 'Play wav If ClickStopPreview Then PreviewNote("", True) 'My.Computer.Audio.Stop() - If NoteIndex > 0 AndAlso PreviewOnClick AndAlso Not IsColumnNumeric(Notes(NoteIndex).ColumnIndex) AndAlso Not Notes(NoteIndex).Comment Then + If NoteIndex > 0 AndAlso PreviewOnClick AndAlso IsColumnSound(Notes(NoteIndex).ColumnIndex) AndAlso Not Notes(NoteIndex).Comment Then Dim xI2 As Integer = Notes(NoteIndex).Value \ 10000 If xI2 <= 0 Then xI2 = 1 If xI2 >= 1296 Then xI2 = 1295 diff --git a/iBMSC/Waveform.vb b/iBMSC/Waveform.vb index c123271aa..355f67aa5 100644 --- a/iBMSC/Waveform.vb +++ b/iBMSC/Waveform.vb @@ -25,27 +25,10 @@ Partial Public Class MainWindow If xDWAV.ShowDialog = Windows.Forms.DialogResult.Cancel Then Exit Sub InitPath = ExcludeFileName(xDWAV.FileName) - Dim src = CSCore.Codecs.CodecFactory.Instance.GetCodec(xDWAV.FileName) - - src.ToStereo() - Dim samples(src.Length) As Single - src.ToSampleSource().Read(samples, 0, src.Length) - - Dim flen = (src.Length - 1) / src.WaveFormat.Channels - - ' Copy interleaved data - ReDim wWavL(flen + 1) - ReDim wWavR(flen + 1) - For i As Integer = 0 To flen - If 2 * i < src.Length Then - wWavL(i) = samples(2 * i) - End If - If 2 * i + 1 < src.Length Then - wWavR(i) = samples(2 * i + 1) - End If - Next - - wSampleRate = src.WaveFormat.SampleRate + Dim w As wWav = LoadWaveForm(xDWAV.FileName) + wWavL = w.wWavL + wWavR = w.wWavR + wSampleRate = w.wSampleRate RefreshPanelAll() TWFileName.Text = xDWAV.FileName @@ -65,4 +48,41 @@ Partial Public Class MainWindow TWPosition2.Enabled = Not wLock RefreshPanelAll() End Sub + + Private Function LoadWaveForm(ByVal filepath As String) + filepath = Audio.CheckFilename(filepath) + If Not System.IO.File.Exists(filepath) Then Return New wWav({}, {}, 0) + + Dim src = CSCore.Codecs.CodecFactory.Instance.GetCodec(filepath) + + src.ToStereo() + Dim samples(src.Length) As Single + src.ToSampleSource().Read(samples, 0, src.Length) + + Dim flen = (src.Length - 1) / src.WaveFormat.Channels + + ' Copy interleaved data + ReDim wWavL(flen + 1) + ReDim wWavR(flen + 1) + For i As Integer = 0 To flen + If 2 * i < src.Length Then + wWavL(i) = samples(2 * i) + End If + If 2 * i + 1 < src.Length Then + wWavR(i) = samples(2 * i + 1) + End If + Next + + Dim flenReduced As Integer + For i = UBound(wWavL) To 0 Step -1 + If wWavL(i) = 0 AndAlso wWavR(i) = 0 Then + flenReduced = i + Else + ReDim Preserve wWavL(flenReduced) + ReDim Preserve wWavR(flenReduced) + Exit For + End If + Next + Return New wWav(wWavL, wWavR, src.WaveFormat.SampleRate) + End Function End Class From fa90f9119a7c7d97b24583ef74f3985f3b7a0127 Mon Sep 17 00:00:00 2001 From: psyk2642 <60137590+psyk2642@users.noreply.github.com> Date: Sat, 26 Mar 2022 10:31:08 +0800 Subject: [PATCH 079/257] ShowWaveform grafik --- iBMSC/ImageButtonsSmall/x16ShowWaveform.png | Bin 9455 -> 10409 bytes iBMSC/ImageButtonsSmall/x16ShowWaveformN.png | Bin 0 -> 9455 bytes iBMSC/MainWindow.vb | 4 ++-- iBMSC/My Project/AssemblyInfo.vb | 4 ++-- iBMSC/My Project/Resources.Designer.vb | 10 ++++++++++ iBMSC/My Project/Resources.resx | 3 +++ 6 files changed, 17 insertions(+), 4 deletions(-) create mode 100644 iBMSC/ImageButtonsSmall/x16ShowWaveformN.png diff --git a/iBMSC/ImageButtonsSmall/x16ShowWaveform.png b/iBMSC/ImageButtonsSmall/x16ShowWaveform.png index d83ba692787905db924a4c4b013e6d7bf98f9fb9..de35cc98bad0b70e1f3fb9f41e631e84c93f262d 100644 GIT binary patch delta 7143 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 diff --git a/iBMSC/ImageButtonsSmall/x16ShowWaveformN.png b/iBMSC/ImageButtonsSmall/x16ShowWaveformN.png new file mode 100644 index 0000000000000000000000000000000000000000..d83ba692787905db924a4c4b013e6d7bf98f9fb9 GIT binary patch literal 9455 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 UnKD?@d$I5}RCFQ5w{0H&4?hZ7Hvj+t literal 0 HcmV?d00001 diff --git a/iBMSC/MainWindow.vb b/iBMSC/MainWindow.vb index ec1fa2d3a..a002a0415 100644 --- a/iBMSC/MainWindow.vb +++ b/iBMSC/MainWindow.vb @@ -2052,8 +2052,8 @@ EndSearch: ShowWaveform = sender.Checked TBShowWaveform.Checked = ShowWaveform mnShowWaveform.Checked = ShowWaveform - TBShowWaveform.Image = My.Resources.x16ShowWaveform - mnShowWaveform.Image = My.Resources.x16ShowWaveform + TBShowWaveform.Image = IIf(ShowWaveform, My.Resources.x16ShowWaveform, My.Resources.x16ShowWaveformN) + mnShowWaveform.Image = IIf(ShowWaveform, My.Resources.x16ShowWaveform, My.Resources.x16ShowWaveformN) If Not WaveformLoaded AndAlso ShowWaveform Then For xI1 = 1 To UBound(wLWAV) If hWAV(xI1) <> "" Then wLWAV(xI1) = LoadWaveForm(ExcludeFileName(FileName) & "\" & hWAV(xI1)) diff --git a/iBMSC/My Project/AssemblyInfo.vb b/iBMSC/My Project/AssemblyInfo.vb index aacddef69..22bea7383 100644 --- a/iBMSC/My Project/AssemblyInfo.vb +++ b/iBMSC/My Project/AssemblyInfo.vb @@ -33,7 +33,7 @@ Imports System.Runtime.InteropServices ' by using the '*' as shown below: ' - - + + \ No newline at end of file diff --git a/iBMSC/My Project/Resources.Designer.vb b/iBMSC/My Project/Resources.Designer.vb index 41f43363d..9558891c0 100644 --- a/iBMSC/My Project/Resources.Designer.vb +++ b/iBMSC/My Project/Resources.Designer.vb @@ -935,6 +935,16 @@ Namespace My.Resources End Get End Property + ''' + ''' Looks up a localized resource of type System.Drawing.Bitmap. + ''' + Friend ReadOnly Property x16ShowWaveformN() As System.Drawing.Bitmap + Get + Dim obj As Object = ResourceManager.GetObject("x16ShowWaveformN", resourceCulture) + Return CType(obj,System.Drawing.Bitmap) + End Get + End Property + ''' ''' Looks up a localized resource of type System.Drawing.Bitmap. ''' diff --git a/iBMSC/My Project/Resources.resx b/iBMSC/My Project/Resources.resx index e8f379bb4..541df8aa8 100644 --- a/iBMSC/My Project/Resources.resx +++ b/iBMSC/My Project/Resources.resx @@ -406,4 +406,7 @@ ..\ImageButtonsSmall\x16ShowWaveform.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\ImageButtonsSmall\x16ShowWaveformN.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + \ No newline at end of file From 85be2fb3f5064d1c1393f888f8df5eb910c1760f Mon Sep 17 00:00:00 2001 From: psyk2642 <60137590+psyk2642@users.noreply.github.com> Date: Sat, 26 Mar 2022 11:17:18 +0800 Subject: [PATCH 080/257] Update README.md --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index ec9cb75da..434d60e77 100644 --- a/README.md +++ b/README.md @@ -29,7 +29,8 @@ Listed in the order added. * Added color overriding options where you can specify a range of notes to appear a specific color, such as red notes for drums and green notes for the piano. Accessible via the Options tab or via Shift+F12. * Added comment notes. Comment notes will be saved as #ECMD and #ECOM within the same bms/pms file. Not tested thoroughly. * The window will now follow notes being moved by arrow keys. -* When creating LNs in NT mode, the VPosition will snap to the highlighted note if any +* When creating LNs in NT mode, the VPosition will snap to the highlighted note if any. +* Added "Show Waveform on Notes". ## Keyboard shortcuts * Changed keybinding to allow note placement between D1 and D8. From 059c2e1a0eb91a15d829e628d2782cfedaadccaf Mon Sep 17 00:00:00 2001 From: psyk2642 <60137590+psyk2642@users.noreply.github.com> Date: Sat, 26 Mar 2022 12:21:58 +0800 Subject: [PATCH 081/257] Minor Visual Override Options update --- .../OpVisualOverride.Designer.vb | 96 +++++++++---------- iBMSC/Option Windows/OpVisualOverride.vb | 1 + 2 files changed, 49 insertions(+), 48 deletions(-) diff --git a/iBMSC/Option Windows/OpVisualOverride.Designer.vb b/iBMSC/Option Windows/OpVisualOverride.Designer.vb index e12b54021..91aec2e8c 100644 --- a/iBMSC/Option Windows/OpVisualOverride.Designer.vb +++ b/iBMSC/Option Windows/OpVisualOverride.Designer.vb @@ -31,14 +31,14 @@ Partial Class OpVisualOverride Me.ContextMenuStrip1 = New System.Windows.Forms.ContextMenuStrip(Me.components) Me.TableLayoutPanel1 = New System.Windows.Forms.TableLayoutPanel() Me.Label4 = New System.Windows.Forms.Label() + Me.TName = New System.Windows.Forms.TextBox() Me.Label1 = New System.Windows.Forms.Label() Me.Label3 = New System.Windows.Forms.Label() - Me.TRangeL = New System.Windows.Forms.TextBox() - Me.Label5 = New System.Windows.Forms.Label() - Me.TRangeU = New System.Windows.Forms.TextBox() - Me.TableLayoutPanel2 = New System.Windows.Forms.TableLayoutPanel() Me.BColor = New System.Windows.Forms.Button() - Me.TName = New System.Windows.Forms.TextBox() + Me.TableLayoutPanel2 = New System.Windows.Forms.TableLayoutPanel() + Me.TRangeU = New System.Windows.Forms.TextBox() + Me.Label5 = New System.Windows.Forms.Label() + Me.TRangeL = New System.Windows.Forms.TextBox() Me.TableLayoutPanel1.SuspendLayout() Me.TableLayoutPanel2.SuspendLayout() Me.SuspendLayout() @@ -137,6 +137,14 @@ Partial Class OpVisualOverride Me.Label4.Text = "Note Color" Me.Label4.TextAlign = System.Drawing.ContentAlignment.MiddleRight ' + 'TName + ' + Me.TName.Dock = System.Windows.Forms.DockStyle.Fill + Me.TName.Location = New System.Drawing.Point(142, 3) + Me.TName.Name = "TName" + Me.TName.Size = New System.Drawing.Size(134, 20) + Me.TName.TabIndex = 10 + ' 'Label1 ' Me.Label1.Anchor = CType((((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Bottom) _ @@ -163,36 +171,15 @@ Partial Class OpVisualOverride Me.Label3.Text = "Option Name" Me.Label3.TextAlign = System.Drawing.ContentAlignment.MiddleRight ' - 'TRangeL - ' - Me.TRangeL.Dock = System.Windows.Forms.DockStyle.Fill - Me.TRangeL.Location = New System.Drawing.Point(3, 3) - Me.TRangeL.MaxLength = 2 - Me.TRangeL.Name = "TRangeL" - Me.TRangeL.Size = New System.Drawing.Size(40, 20) - Me.TRangeL.TabIndex = 11 - ' - 'Label5 - ' - Me.Label5.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.Label5.AutoSize = True - Me.Label5.Location = New System.Drawing.Point(49, 0) - Me.Label5.Name = "Label5" - Me.Label5.Size = New System.Drawing.Size(40, 25) - Me.Label5.TabIndex = 0 - Me.Label5.Text = "to" - Me.Label5.TextAlign = System.Drawing.ContentAlignment.MiddleCenter - ' - 'TRangeU + 'BColor ' - Me.TRangeU.Dock = System.Windows.Forms.DockStyle.Fill - Me.TRangeU.Location = New System.Drawing.Point(95, 3) - Me.TRangeU.MaxLength = 2 - Me.TRangeU.Name = "TRangeU" - Me.TRangeU.Size = New System.Drawing.Size(42, 20) - Me.TRangeU.TabIndex = 12 + Me.BColor.Dock = System.Windows.Forms.DockStyle.Fill + Me.BColor.Location = New System.Drawing.Point(142, 69) + Me.BColor.Name = "BColor" + Me.BColor.Size = New System.Drawing.Size(134, 28) + Me.BColor.TabIndex = 30 + Me.BColor.Text = "Button1" + Me.BColor.UseVisualStyleBackColor = True ' 'TableLayoutPanel2 ' @@ -211,23 +198,36 @@ Partial Class OpVisualOverride Me.TableLayoutPanel2.Size = New System.Drawing.Size(140, 25) Me.TableLayoutPanel2.TabIndex = 14 ' - 'BColor + 'TRangeU ' - Me.BColor.Dock = System.Windows.Forms.DockStyle.Fill - Me.BColor.Location = New System.Drawing.Point(142, 69) - Me.BColor.Name = "BColor" - Me.BColor.Size = New System.Drawing.Size(134, 28) - Me.BColor.TabIndex = 13 - Me.BColor.Text = "Button1" - Me.BColor.UseVisualStyleBackColor = True + Me.TRangeU.Dock = System.Windows.Forms.DockStyle.Fill + Me.TRangeU.Location = New System.Drawing.Point(95, 3) + Me.TRangeU.MaxLength = 2 + Me.TRangeU.Name = "TRangeU" + Me.TRangeU.Size = New System.Drawing.Size(42, 20) + Me.TRangeU.TabIndex = 21 ' - 'TName + 'Label5 ' - Me.TName.Dock = System.Windows.Forms.DockStyle.Fill - Me.TName.Location = New System.Drawing.Point(142, 3) - Me.TName.Name = "TName" - Me.TName.Size = New System.Drawing.Size(134, 20) - Me.TName.TabIndex = 10 + Me.Label5.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.Label5.AutoSize = True + Me.Label5.Location = New System.Drawing.Point(49, 0) + Me.Label5.Name = "Label5" + Me.Label5.Size = New System.Drawing.Size(40, 25) + Me.Label5.TabIndex = 0 + Me.Label5.Text = "to" + Me.Label5.TextAlign = System.Drawing.ContentAlignment.MiddleCenter + ' + 'TRangeL + ' + Me.TRangeL.Dock = System.Windows.Forms.DockStyle.Fill + Me.TRangeL.Location = New System.Drawing.Point(3, 3) + Me.TRangeL.MaxLength = 2 + Me.TRangeL.Name = "TRangeL" + Me.TRangeL.Size = New System.Drawing.Size(40, 20) + Me.TRangeL.TabIndex = 20 ' 'OpVisualOverride ' diff --git a/iBMSC/Option Windows/OpVisualOverride.vb b/iBMSC/Option Windows/OpVisualOverride.vb index 60a1da9fa..2660b09f2 100644 --- a/iBMSC/Option Windows/OpVisualOverride.vb +++ b/iBMSC/Option Windows/OpVisualOverride.vb @@ -134,6 +134,7 @@ Public Class OpVisualOverride End Function Private Sub SaveCOverride(sender As Object, e As KeyEventArgs) Handles TName.KeyUp, TRangeL.KeyUp, TRangeU.KeyUp + If IsNothing(COverrides) Then Exit Sub With COverrides(LOverrides.SelectedIndex) .Name = TName.Text .RangeL = C36to10(TRangeL.Text) From d0e279a6853371fac75f30a579922e5f7f6d2255 Mon Sep 17 00:00:00 2001 From: psyk2642 <60137590+psyk2642@users.noreply.github.com> Date: Sat, 26 Mar 2022 14:21:15 +0800 Subject: [PATCH 082/257] Visual Override Code Update --- iBMSC/MainWindow.vb | 1 + iBMSC/PanelDraw.vb | 160 ++++++++++++++++++++----------------------- iBMSC/PanelEvents.vb | 1 - 3 files changed, 77 insertions(+), 85 deletions(-) diff --git a/iBMSC/MainWindow.vb b/iBMSC/MainWindow.vb index a002a0415..190138253 100644 --- a/iBMSC/MainWindow.vb +++ b/iBMSC/MainWindow.vb @@ -256,6 +256,7 @@ Public Class MainWindow BG = xBG End Sub End Structure + Dim COverrides() As ColorOverride = Nothing '----Preview Options Structure PlayerArguments diff --git a/iBMSC/PanelDraw.vb b/iBMSC/PanelDraw.vb index 7a6025f72..74db1404a 100644 --- a/iBMSC/PanelDraw.vb +++ b/iBMSC/PanelDraw.vb @@ -43,6 +43,36 @@ Partial Public Class MainWindow Dim xVSR As Integer = -PanelVScroll(xIndex) Dim xVSu As Integer = IIf(xVSR + xTHeight / gxHeight > GetMaxVPosition(), GetMaxVPosition(), xVSR + xTHeight / gxHeight) + ' Color override + Dim F As String = "Colors\" + GetFileName(FileName) + ".xml" + If My.Computer.FileSystem.FileExists(F) Then + + Dim Doc As New XmlDocument + Dim FileStream As New IO.FileStream(F, FileMode.Open, FileAccess.Read) + Doc.Load(FileStream) + + Dim Root As XmlElement = Doc.Item("ColorOverride") + + Dim n As Integer = Root.GetAttribute("Count") + ReDim COverrides(n) + Dim i As Integer + For Each eColor As XmlElement In Root.ChildNodes + With eColor + XMLLoadAttribute(.GetAttribute("Index"), i) + XMLLoadAttribute(.GetAttribute("Name"), COverrides(i).Name) + XMLLoadAttribute(.GetAttribute("RangeL"), COverrides(i).RangeL) + XMLLoadAttribute(.GetAttribute("RangeU"), COverrides(i).RangeU) + XMLLoadAttribute(.GetAttribute("NoteColor"), COverrides(i).NoteColor) + XMLLoadAttribute(.GetAttribute("TextColor"), COverrides(i).TextColor) + XMLLoadAttribute(.GetAttribute("LongNoteColor"), COverrides(i).LongNoteColor) + XMLLoadAttribute(.GetAttribute("LongTextColor"), COverrides(i).LongTextColor) + XMLLoadAttribute(.GetAttribute("BG"), COverrides(i).BG) + End With + Next + FileStream.Close() + + End If + 'e1.Graphics.SmoothingMode = Drawing2D.SmoothingMode.AntiAlias Dim xI1 As Integer @@ -63,6 +93,7 @@ Partial Public Class MainWindow 'If Not K Is Nothing Then DrawNotes(e1, xTHeight, xPanelHScroll, xPanelDisplacement) + ' Draw waveform on notes If ShowWaveform Then DrawWaveformNotes(e1, xTHeight, xPanelHScroll, xVSR) 'End If @@ -312,37 +343,6 @@ Partial Public Class MainWindow Dim xI1 As Integer Dim xUpperBorder As Single = Math.Abs(xVS) + xTHeight / gxHeight Dim xLowerBorder As Single = Math.Abs(xVS) - vo.kHeight / gxHeight - Dim COverrides() As ColorOverride - - ' Color override - Dim F As String = "Colors\" + GetFileName(FileName) + ".xml" - If My.Computer.FileSystem.FileExists(F) Then - - Dim Doc As New XmlDocument - Dim FileStream As New IO.FileStream(F, FileMode.Open, FileAccess.Read) - Doc.Load(FileStream) - - Dim Root As XmlElement = Doc.Item("ColorOverride") - - Dim n As Integer = Root.GetAttribute("Count") - ReDim COverrides(n) - Dim i As Integer - For Each eColor As XmlElement In Root.ChildNodes - With eColor - XMLLoadAttribute(.GetAttribute("Index"), i) - XMLLoadAttribute(.GetAttribute("Name"), COverrides(i).Name) - XMLLoadAttribute(.GetAttribute("RangeL"), COverrides(i).RangeL) - XMLLoadAttribute(.GetAttribute("RangeU"), COverrides(i).RangeU) - XMLLoadAttribute(.GetAttribute("NoteColor"), COverrides(i).NoteColor) - XMLLoadAttribute(.GetAttribute("TextColor"), COverrides(i).TextColor) - XMLLoadAttribute(.GetAttribute("LongNoteColor"), COverrides(i).LongNoteColor) - XMLLoadAttribute(.GetAttribute("LongTextColor"), COverrides(i).LongTextColor) - XMLLoadAttribute(.GetAttribute("BG"), COverrides(i).BG) - End With - Next - FileStream.Close() - - End If For xI1 = 0 To UBound(Notes) If Notes(xI1).VPosition > xUpperBorder Then Exit For @@ -378,7 +378,6 @@ Partial Public Class MainWindow Private Sub DrawMouseOver(e1 As BufferedGraphics, xTHeight As Integer, xHS As Integer, xVS As Integer) - Dim COverrides() As ColorOverride If NTInput Then If Not bAdjustLength Then DrawNoteNT(Notes(KMouseOver), e1, xHS, xVS, xTHeight, COverrides) Else @@ -588,7 +587,7 @@ Partial Public Class MainWindow ''' VS.Value. ''' Display height of the panel. (not ClipRectangle.Height) - Private Sub DrawNote(ByVal sNote As Note, ByVal e As BufferedGraphics, ByVal xHS As Long, ByVal xVS As Long, ByVal xHeight As Integer, ByVal CO() As ColorOverride) ', Optional ByVal CheckError As Boolean = True) ', Optional ByVal ConnectToIndex As Long = 0) + Private Sub DrawNote(ByVal sNote As Note, ByVal e As BufferedGraphics, ByVal xHS As Long, ByVal xVS As Long, ByVal xHeight As Integer, Optional CO() As ColorOverride = Nothing) ', Optional ByVal CheckError As Boolean = True) ', Optional ByVal ConnectToIndex As Long = 0) If Not nEnabled(sNote.ColumnIndex) Then Exit Sub Dim xAlpha As Single = 1.0F If sNote.Hidden Then xAlpha = vo.kOpacity @@ -615,44 +614,40 @@ Partial Public Class MainWindow Dim p2 = New Point(HorizontalPositiontoDisplay(xnLeft + xColumnWidth, xHS), NoteRowToPanelHeight(sNote.VPosition, xVS, xHeight) + 10) - If Not sNote.LongNote Then - xPen = New Pen(GetColumn(sNote.ColumnIndex).getBright(xAlpha)) + bright = GetColumn(sNote.ColumnIndex).getBright(xAlpha) + dark = GetColumn(sNote.ColumnIndex).getDark(xAlpha) - bright = GetColumn(sNote.ColumnIndex).getBright(xAlpha) - dark = GetColumn(sNote.ColumnIndex).getDark(xAlpha) + ' Color override + If Not IsNothing(CO) Then - ' Color override - If Not IsNothing(CO) Then + For i = 0 To UBound(CO) + Dim CORangeL = CO(i).RangeL * 10000 + Dim CORangeU = CO(i).RangeU * 10000 + Dim CONoteColor = CO(i).NoteColor + If sNote.Value >= CORangeL AndAlso sNote.Value <= CORangeU AndAlso Not sNote.Landmine Then + ' bright = Color.FromArgb((CInt(((CONoteColor >> 24) And &HFF) * xAlpha) << 24)) + ' dark = bright - For i = 0 To UBound(CO) - Dim CORangeL = CO(i).RangeL * 10000 - Dim CORangeU = CO(i).RangeU * 10000 - Dim CONoteColor = CO(i).NoteColor - If sNote.Value >= CORangeL And sNote.Value <= CORangeU Then - ' bright = Color.FromArgb((CInt(((CONoteColor >> 24) And &HFF) * xAlpha) << 24)) - ' dark = bright + ' bright = Color.FromArgb(CONoteColor * xAlpha) - ' bright = Color.FromArgb(CONoteColor * xAlpha) + bright = Color.FromArgb(CONoteColor * xAlpha) + dark = Color.FromArgb(CONoteColor * xAlpha) + Exit For + End If - bright = Color.FromArgb(CONoteColor * xAlpha) - dark = Color.FromArgb(CONoteColor * xAlpha) - Exit For - End If + Next + End If - Next - End If + If Not sNote.LongNote Then + xPen = New Pen(GetColumn(sNote.ColumnIndex).getBright(xAlpha)) If sNote.Landmine Then bright = Color.Red dark = Color.Red End If - xBrush2 = New SolidBrush(GetColumn(sNote.ColumnIndex).cText) Else - bright = GetColumn(sNote.ColumnIndex).getLongBright(xAlpha) - dark = GetColumn(sNote.ColumnIndex).getLongDark(xAlpha) - xBrush2 = New SolidBrush(GetColumn(sNote.ColumnIndex).cLText) End If @@ -731,7 +726,7 @@ Partial Public Class MainWindow ''' VS.Value. ''' Display height of the panel. (not ClipRectangle.Height) - Private Sub DrawNoteNT(ByVal sNote As Note, ByVal e As BufferedGraphics, ByVal xHS As Long, ByVal xVS As Long, ByVal xHeight As Integer, ByVal CO() As ColorOverride) ', Optional ByVal CheckError As Boolean = True) + Private Sub DrawNoteNT(ByVal sNote As Note, ByVal e As BufferedGraphics, ByVal xHS As Long, ByVal xVS As Long, ByVal xHeight As Integer, Optional CO() As ColorOverride = Nothing) ', Optional ByVal CheckError As Boolean = True) If Not nEnabled(sNote.ColumnIndex) Then Exit Sub Dim xAlpha As Single = 1.0F If sNote.Hidden Then xAlpha = vo.kOpacity @@ -756,35 +751,35 @@ Partial Public Class MainWindow Next End If - If sNote.Length = 0 Then - p1 = New Point(HorizontalPositiontoDisplay(xnLeft, xHS), - NoteRowToPanelHeight(sNote.VPosition, xVS, xHeight) - vo.kHeight - 10) - p2 = New Point(HorizontalPositiontoDisplay(xnLeft + xColumnWidth, xHS), - NoteRowToPanelHeight(sNote.VPosition, xVS, xHeight) + 10) + bright = GetColumn(sNote.ColumnIndex).getBright(xAlpha) + dark = GetColumn(sNote.ColumnIndex).getDark(xAlpha) - bright = GetColumn(sNote.ColumnIndex).getBright(xAlpha) - dark = GetColumn(sNote.ColumnIndex).getDark(xAlpha) + ' Color override + If Not IsNothing(CO) Then - ' Color override - If Not IsNothing(CO) Then + For i = 0 To UBound(CO) + Dim CORangeL = CO(i).RangeL * 10000 + Dim CORangeU = CO(i).RangeU * 10000 + Dim CONoteColor = CO(i).NoteColor + If sNote.Value >= CORangeL AndAlso sNote.Value <= CORangeU AndAlso Not sNote.Landmine Then + ' bright = Color.FromArgb((CInt(((CONoteColor >> 24) And &HFF) * xAlpha) << 24)) + ' dark = bright - For i = 0 To UBound(CO) - Dim CORangeL = CO(i).RangeL * 10000 - Dim CORangeU = CO(i).RangeU * 10000 - Dim CONoteColor = CO(i).NoteColor - If sNote.Value >= CORangeL And sNote.Value <= CORangeU Then - ' bright = Color.FromArgb((CInt(((CONoteColor >> 24) And &HFF) * xAlpha) << 24)) - ' dark = bright + ' bright = Color.FromArgb(CONoteColor * xAlpha) - ' bright = Color.FromArgb(CONoteColor * xAlpha) + bright = Color.FromArgb(CONoteColor * xAlpha) + dark = Color.FromArgb(CONoteColor * xAlpha) + Exit For + End If - bright = Color.FromArgb(CONoteColor * xAlpha) - dark = Color.FromArgb(CONoteColor * xAlpha) - Exit For - End If + Next + End If - Next - End If + If sNote.Length = 0 Then + p1 = New Point(HorizontalPositiontoDisplay(xnLeft, xHS), + NoteRowToPanelHeight(sNote.VPosition, xVS, xHeight) - vo.kHeight - 10) + p2 = New Point(HorizontalPositiontoDisplay(xnLeft + xColumnWidth, xHS), + NoteRowToPanelHeight(sNote.VPosition, xVS, xHeight) + 10) If sNote.Landmine Then bright = Color.Red @@ -797,9 +792,6 @@ Partial Public Class MainWindow p2 = New Point(HorizontalPositiontoDisplay(xnLeft + 1.5 * xColumnWidth, xHS), NoteRowToPanelHeight(sNote.VPosition, xVS, xHeight)) - bright = GetColumn(sNote.ColumnIndex).getLongBright(xAlpha) - dark = GetColumn(sNote.ColumnIndex).getLongDark(xAlpha) - xBrush2 = New SolidBrush(GetColumn(sNote.ColumnIndex).cLText) End If diff --git a/iBMSC/PanelEvents.vb b/iBMSC/PanelEvents.vb index 4585ef56f..3ff1a38c6 100644 --- a/iBMSC/PanelEvents.vb +++ b/iBMSC/PanelEvents.vb @@ -1630,7 +1630,6 @@ Partial Public Class MainWindow Dim e1 As BufferedGraphics = BufferedGraphicsManager.Current.Allocate(spMain(iI).CreateGraphics, New Rectangle(xDispX, xDispY, xDispW, xDispH)) e1.Graphics.FillRectangle(vo.Bg, New Rectangle(xDispX, xDispY, xDispW, xDispH)) - Dim COverrides() As ColorOverride If NTInput Then DrawNoteNT(Notes(foundNoteIndex), e1, xHS, xVS, xHeight, COverrides) Else DrawNote(Notes(foundNoteIndex), e1, xHS, xVS, xHeight, COverrides) e1.Graphics.DrawRectangle(IIf(bAdjustLength, vo.kMouseOverE, vo.kMouseOver), xDispX, xDispY, xDispW - 1, xDispH - 1) From 292cab7b1466cbb83e67db76992787184f68dc38 Mon Sep 17 00:00:00 2001 From: psyk2642 <60137590+psyk2642@users.noreply.github.com> Date: Sat, 26 Mar 2022 23:08:30 +0800 Subject: [PATCH 083/257] Miscellaneous --- iBMSC/EditorRecent.vb | 13 +++++++++---- iBMSC/MainWindow.vb | 8 ++++---- 2 files changed, 13 insertions(+), 8 deletions(-) diff --git a/iBMSC/EditorRecent.vb b/iBMSC/EditorRecent.vb index 8f4f52ab7..a2c1e52d2 100644 --- a/iBMSC/EditorRecent.vb +++ b/iBMSC/EditorRecent.vb @@ -59,19 +59,24 @@ End If If ClosingPopSave() Then Exit Sub - Select Case UCase(Path.GetExtension(xFileName)) - Case ".BMS", ".BME", ".BML", ".PMS", ".TXT" + Select Case LCase(Path.GetExtension(xFileName)) + Case ".bms", ".bme", ".bml", ".pms", ".txt" InitPath = ExcludeFileName(xFileName) SetFileName(xFileName) ClearUndo() OpenBMS(My.Computer.FileSystem.ReadAllText(xFileName, TextEncoding)) - SetFileName(FileName) SetIsSaved(True) - Case ".IBMSC" + Case ".ibmsc" InitPath = ExcludeFileName(xFileName) SetFileName("Imported_" & GetFileName(xFileName)) OpeniBMSC(xFileName) SetIsSaved(False) + Case Else + InitPath = ExcludeFileName(xFileName) + SetFileName(xFileName) + ClearUndo() + OpenBMS(My.Computer.FileSystem.ReadAllText(xFileName, TextEncoding)) + SetIsSaved(True) End Select End Sub diff --git a/iBMSC/MainWindow.vb b/iBMSC/MainWindow.vb index 190138253..2f07b4b7e 100644 --- a/iBMSC/MainWindow.vb +++ b/iBMSC/MainWindow.vb @@ -1083,31 +1083,31 @@ Public Class MainWindow Friend Sub ReadFile(ByVal xPath As String) Select Case LCase(Path.GetExtension(xPath)) Case ".bms", ".bme", ".bml", ".pms", ".txt" + SetFileName(xPath) OpenBMS(My.Computer.FileSystem.ReadAllText(xPath, TextEncoding)) ClearUndo() NewRecent(xPath) - SetFileName(xPath) SetIsSaved(True) Case ".sm" + SetFileName("Untitled.bms") If OpenSM(My.Computer.FileSystem.ReadAllText(xPath, TextEncoding)) Then Return InitPath = ExcludeFileName(xPath) ClearUndo() - SetFileName("Untitled.bms") SetIsSaved(False) Case ".ibmsc" + SetFileName("Imported_" & GetFileName(xPath)) OpeniBMSC(xPath) InitPath = ExcludeFileName(xPath) NewRecent(xPath) - SetFileName("Imported_" & GetFileName(xPath)) SetIsSaved(False) Case Else + SetFileName(xPath) OpenBMS(My.Computer.FileSystem.ReadAllText(xPath, TextEncoding)) ClearUndo() NewRecent(xPath) - SetFileName(xPath) SetIsSaved(True) End Select From 9fb09e946c19b2a02570dbd6587295cb869fb581 Mon Sep 17 00:00:00 2001 From: psyk2642 <60137590+psyk2642@users.noreply.github.com> Date: Sun, 27 Mar 2022 09:31:18 +0800 Subject: [PATCH 084/257] Expansion Code Section UI Update The "Select Section" button is now no longer inside the textbox. --- iBMSC/MainWindow.designer.vb | 37 ++++++++++++++++++------------------ iBMSC/MainWindow.resx | 4 ++-- iBMSC/MainWindow.vb | 2 +- 3 files changed, 22 insertions(+), 21 deletions(-) diff --git a/iBMSC/MainWindow.designer.vb b/iBMSC/MainWindow.designer.vb index 9eb830ae7..5d8d643da 100644 --- a/iBMSC/MainWindow.designer.vb +++ b/iBMSC/MainWindow.designer.vb @@ -158,6 +158,7 @@ Partial Class MainWindow Me.TBErrorCheck = New System.Windows.Forms.ToolStripButton() Me.TBPreviewOnClick = New System.Windows.Forms.ToolStripButton() Me.TBShowFileName = New System.Windows.Forms.ToolStripButton() + Me.TBShowWaveform = New System.Windows.Forms.ToolStripButton() Me.ToolStripSeparator8 = New System.Windows.Forms.ToolStripSeparator() Me.TBNTInput = New System.Windows.Forms.ToolStripButton() Me.TBWavIncrease = New System.Windows.Forms.ToolStripButton() @@ -367,7 +368,6 @@ Partial Class MainWindow Me.Label6 = New System.Windows.Forms.Label() Me.POHeaderSwitch = New System.Windows.Forms.CheckBox() Me.POptionsScroll = New System.Windows.Forms.Panel() - Me.TBShowWaveform = New System.Windows.Forms.ToolStripButton() Me.cmnLanguage.SuspendLayout() Me.cmnTheme.SuspendLayout() Me.Menu1.SuspendLayout() @@ -1307,7 +1307,7 @@ Partial Class MainWindow Me.TBMain.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.TBNew, Me.TBOpen, Me.TBSave, Me.ToolStripSeparator1, Me.TBCut, Me.TBCopy, Me.TBPaste, Me.TBFind, Me.ToolStripSeparator24, Me.TBStatistics, Me.POConvert, Me.TBMyO2, Me.ToolStripSeparator4, Me.TBErrorCheck, Me.TBPreviewOnClick, Me.TBShowFileName, Me.TBShowWaveform, Me.ToolStripSeparator8, Me.TBNTInput, Me.TBWavIncrease, Me.ToolStripSeparator2, Me.TBUndo, Me.TBRedo, Me.ToolStripSeparator5, Me.TBTimeSelect, Me.TBSelect, Me.TBWrite, Me.ToolStripSeparator3, Me.TBPlayB, Me.TBPlay, Me.TBStop, Me.TBPOptions, Me.ToolStripSeparator7, Me.TBVOptions, Me.TBGOptions, Me.TBLanguage, Me.TBTheme, Me.POBStorm, Me.TBTotalValue}) Me.TBMain.Location = New System.Drawing.Point(3, 23) Me.TBMain.Name = "TBMain" - Me.TBMain.Size = New System.Drawing.Size(841, 25) + Me.TBMain.Size = New System.Drawing.Size(787, 25) Me.TBMain.TabIndex = 64 Me.TBMain.Text = "Main Toolbar" ' @@ -1517,6 +1517,17 @@ Partial Class MainWindow Me.TBShowFileName.Size = New System.Drawing.Size(23, 22) Me.TBShowFileName.Text = "Show File Name on Notes" ' + 'TBShowWaveform + ' + Me.TBShowWaveform.CheckOnClick = True + Me.TBShowWaveform.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image + Me.TBShowWaveform.Image = Global.iBMSC.My.Resources.Resources.x16ShowWaveform + Me.TBShowWaveform.ImageTransparentColor = System.Drawing.Color.Magenta + Me.TBShowWaveform.Name = "TBShowWaveform" + Me.TBShowWaveform.Size = New System.Drawing.Size(23, 22) + Me.TBShowWaveform.Text = "Show Waveform on Notes" + Me.TBShowWaveform.ToolTipText = "Show Waveform on Notes" + ' 'ToolStripSeparator8 ' Me.ToolStripSeparator8.Name = "ToolStripSeparator8" @@ -2310,11 +2321,12 @@ Partial Class MainWindow ' 'BExpansion ' - Me.BExpansion.Anchor = System.Windows.Forms.AnchorStyles.Bottom + Me.BExpansion.Anchor = CType(((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left) _ + Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) Me.BExpansion.Font = New System.Drawing.Font("Segoe UI", 9.0!) - Me.BExpansion.Location = New System.Drawing.Point(0, 250) + Me.BExpansion.Location = New System.Drawing.Point(0, 245) Me.BExpansion.Name = "BExpansion" - Me.BExpansion.Size = New System.Drawing.Size(183, 20) + Me.BExpansion.Size = New System.Drawing.Size(183, 25) Me.BExpansion.TabIndex = 1003 Me.BExpansion.Text = "Select Section" Me.BExpansion.UseVisualStyleBackColor = True @@ -2322,13 +2334,13 @@ Partial Class MainWindow 'TExpansion ' Me.TExpansion.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle - Me.TExpansion.Dock = System.Windows.Forms.DockStyle.Fill + Me.TExpansion.Dock = System.Windows.Forms.DockStyle.Top Me.TExpansion.HideSelection = False Me.TExpansion.Location = New System.Drawing.Point(0, 0) Me.TExpansion.Multiline = True Me.TExpansion.Name = "TExpansion" Me.TExpansion.ScrollBars = System.Windows.Forms.ScrollBars.Vertical - Me.TExpansion.Size = New System.Drawing.Size(183, 270) + Me.TExpansion.Size = New System.Drawing.Size(183, 245) Me.TExpansion.TabIndex = 1002 Me.TExpansion.WordWrap = False ' @@ -4127,17 +4139,6 @@ Partial Class MainWindow Me.POptionsScroll.Size = New System.Drawing.Size(200, 781) Me.POptionsScroll.TabIndex = 28 ' - 'TBShowWaveform - ' - Me.TBShowWaveform.CheckOnClick = True - Me.TBShowWaveform.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image - Me.TBShowWaveform.Image = Global.iBMSC.My.Resources.Resources.x16ShowWaveform - Me.TBShowWaveform.ImageTransparentColor = System.Drawing.Color.Magenta - Me.TBShowWaveform.Name = "TBShowWaveform" - Me.TBShowWaveform.Size = New System.Drawing.Size(23, 22) - Me.TBShowWaveform.Text = "Show Waveform on Notes" - Me.TBShowWaveform.ToolTipText = "Show Waveform on Notes" - ' 'MainWindow ' Me.AllowDrop = True diff --git a/iBMSC/MainWindow.resx b/iBMSC/MainWindow.resx index 5d870e0e7..c46f296fe 100644 --- a/iBMSC/MainWindow.resx +++ b/iBMSC/MainWindow.resx @@ -151,7 +151,7 @@ Lo9hEfPR4tDoA7ZnpJErDjUlMUPqvnh9TQVvxlvpK2h0/as0r4Y/yDx4Rs89qo3gXkWoNMK6CmOskxnD TUooNcb6sllV+tenZlTZqcxj9tsmxR+yRzXfGW3ZrL6WZGbJhVTrD1uSmLZ1MTazqHc9co1G6p8WoP4H 4aQ0/lAENzEdbB5jBnndiJozJQuk0UzKolmf1iS64JokEHdy3x25XRU0eLPS/86VEndVdeTCCNHRN2wp - AXVPzyJh+EPEDO0wIH5oFxREhFsJHa+8QfszjT3N/dScarO9PctJE8vb8Xy4/SC0rfvQqwjFpUJPyCNt + AXVPzyJh+EPEDO0wIH5oFxREhFsJHa+8QfszjT3N/dScarO9PctJE8Pb8Xy4/SC0rfvQqwjFpUJPyCNt bgoPLwxn8mb8WPNYgNNDO3FqMMSAmKH3dAJci+mgzaAxaAto5nrXU7P66L+4NyVbV/XVBD0caN8PTfte dFeGoinn76hKWIvio6zvjvPefF71TeJvCyikw/xVmiWRQC3D1K2WZ75AnfROWG+9/zd9qp3olm+HOscH 5wQc/EcdgquKLagUukIsJiVv9XuhgLUFLymgJIA2U823dLpWuvH8ZbE3mnJHg1+W++LhzV0Yvr4LN89x @@ -181,7 +181,7 @@ S5a05i9eTJ2G6QWnjJFAH8nvT4CAbMTJOKtJhP3JmdQX0QL+ggXLixYtkkiZzEdVJPNSkjkJ3pa3aNGm dCur1/Uup2fO8bNkjjyz59R9Tl2p1K1GXSxUb/9Vk5nHnjv3jwVWVqvFNjYHSdkzim1soknmwWSMCj79 7H82fbN6jTBZs/q5yVD/65pM5rx5c1Lffts+2dLyTRGTSe38/9so9ROb1TjU+FiTIcfNmApM7fiJm45G - +x+38CTBlgQJmAAAAABJRU5ErkJggg== + +x+c3CS/EKfQ9gAAAABJRU5ErkJggg== diff --git a/iBMSC/MainWindow.vb b/iBMSC/MainWindow.vb index 2f07b4b7e..6ad68c98b 100644 --- a/iBMSC/MainWindow.vb +++ b/iBMSC/MainWindow.vb @@ -3266,7 +3266,7 @@ RestartSorting: xSorted = False LBeat.Height = POBeat.Height - 25 End Sub Private Sub POExpansion_Resize(ByVal sender As Object, ByVal e As System.EventArgs) Handles POExpansion.Resize - TExpansion.Height = POExpansion.Height - 2 + TExpansion.Height = POExpansion.Height - 25 - BExpansion.Height End Sub Private Sub mn_DropDownClosed(ByVal sender As Object, ByVal e As System.EventArgs) From b6aa5da3e12561d8abcc69a38ded2316f625d19d Mon Sep 17 00:00:00 2001 From: psyk2642 <60137590+psyk2642@users.noreply.github.com> Date: Sun, 27 Mar 2022 10:27:57 +0800 Subject: [PATCH 085/257] TabIndex update for MainWindow, OpExpand and OpVisualOverride Now tabbing between items has been fully fixed. --- README.md | 2 +- iBMSC/MainWindow.designer.vb | 70 ++++---- iBMSC/MainWindow.resx | 10 +- iBMSC/Option Windows/OpExpand.Designer.vb | 107 ++++++++---- iBMSC/Option Windows/OpExpand.vb | 2 +- iBMSC/Option Windows/OpPlayer.Designer.vb | 42 ++--- iBMSC/Option Windows/OpPlayer.resx | 4 +- .../OpVisualOverride.Designer.vb | 154 ++++++++++++------ iBMSC/Option Windows/OpVisualOverride.vb | 2 +- 9 files changed, 242 insertions(+), 151 deletions(-) diff --git a/README.md b/README.md index 434d60e77..e315dc75a 100644 --- a/README.md +++ b/README.md @@ -11,7 +11,7 @@ Listed in the order added. * Fixed the mirror function such that notes between A1 and D8 are reflected locally. Supports PMS as well. * Fixed the Statistic Label not including notes between D1-D8. Statistic window still not fixed. * Fixed the total note count on the toolbar. -* Reorganized the sidebar so you can tab between textboxes properly (mostly). +* Reorganized the sidebar so you can tab between textboxes properly. * Prevented notes in Expansion Code from being loaded. * Rare bug that occurs when the mouse is highlighting a long note while toggling between NT and BMSE simultaneously. diff --git a/iBMSC/MainWindow.designer.vb b/iBMSC/MainWindow.designer.vb index 5d8d643da..92c8c5d6c 100644 --- a/iBMSC/MainWindow.designer.vb +++ b/iBMSC/MainWindow.designer.vb @@ -25,16 +25,16 @@ Partial Class MainWindow Me.TBLangDef = New System.Windows.Forms.ToolStripMenuItem() Me.TBLangRefresh = New System.Windows.Forms.ToolStripMenuItem() Me.ToolStripSeparator9 = New System.Windows.Forms.ToolStripSeparator() - Me.mnLanguage = New System.Windows.Forms.ToolStripMenuItem() Me.TBLanguage = New System.Windows.Forms.ToolStripDropDownButton() + Me.mnLanguage = New System.Windows.Forms.ToolStripMenuItem() Me.cmnTheme = New System.Windows.Forms.ContextMenuStrip(Me.components) Me.TBThemeDef = New System.Windows.Forms.ToolStripMenuItem() Me.TBThemeSave = New System.Windows.Forms.ToolStripMenuItem() Me.TBThemeRefresh = New System.Windows.Forms.ToolStripMenuItem() Me.TBThemeLoadComptability = New System.Windows.Forms.ToolStripMenuItem() Me.ToolStripSeparator6 = New System.Windows.Forms.ToolStripSeparator() - Me.TBTheme = New System.Windows.Forms.ToolStripDropDownButton() Me.mnTheme = New System.Windows.Forms.ToolStripMenuItem() + Me.TBTheme = New System.Windows.Forms.ToolStripDropDownButton() Me.Timer1 = New System.Windows.Forms.Timer(Me.components) Me.Menu1 = New System.Windows.Forms.ContextMenuStrip(Me.components) Me.MInsert = New System.Windows.Forms.ToolStripMenuItem() @@ -127,11 +127,11 @@ Partial Class MainWindow Me.POBSRandom = New System.Windows.Forms.ToolStripMenuItem() Me.POBHRandom = New System.Windows.Forms.ToolStripMenuItem() Me.POBSort = New System.Windows.Forms.ToolStripMenuItem() - Me.POConvert = New System.Windows.Forms.ToolStripDropDownButton() Me.mnPreview = New System.Windows.Forms.ToolStripMenuItem() Me.mnPlayB = New System.Windows.Forms.ToolStripMenuItem() Me.mnPlay = New System.Windows.Forms.ToolStripMenuItem() Me.mnStop = New System.Windows.Forms.ToolStripMenuItem() + Me.POConvert = New System.Windows.Forms.ToolStripDropDownButton() Me.TBMain = New System.Windows.Forms.ToolStrip() Me.TBNew = New System.Windows.Forms.ToolStripButton() Me.TBOpen = New System.Windows.Forms.ToolStripSplitButton() @@ -452,7 +452,7 @@ Partial Class MainWindow ' Me.cmnLanguage.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.TBLangDef, Me.TBLangRefresh, Me.ToolStripSeparator9}) Me.cmnLanguage.Name = "cmnLanguage" - Me.cmnLanguage.OwnerItem = Me.TBLanguage + Me.cmnLanguage.OwnerItem = Me.mnLanguage Me.cmnLanguage.Size = New System.Drawing.Size(121, 54) ' 'TBLangDef @@ -473,14 +473,6 @@ Partial Class MainWindow Me.ToolStripSeparator9.Name = "ToolStripSeparator9" Me.ToolStripSeparator9.Size = New System.Drawing.Size(117, 6) ' - 'mnLanguage - ' - Me.mnLanguage.DropDown = Me.cmnLanguage - Me.mnLanguage.Image = Global.iBMSC.My.Resources.Resources.x16Language - Me.mnLanguage.Name = "mnLanguage" - Me.mnLanguage.Size = New System.Drawing.Size(253, 22) - Me.mnLanguage.Text = "&Language" - ' 'TBLanguage ' Me.TBLanguage.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image @@ -491,11 +483,19 @@ Partial Class MainWindow Me.TBLanguage.Size = New System.Drawing.Size(29, 22) Me.TBLanguage.Text = "Language" ' + 'mnLanguage + ' + Me.mnLanguage.DropDown = Me.cmnLanguage + Me.mnLanguage.Image = Global.iBMSC.My.Resources.Resources.x16Language + Me.mnLanguage.Name = "mnLanguage" + Me.mnLanguage.Size = New System.Drawing.Size(253, 22) + Me.mnLanguage.Text = "&Language" + ' 'cmnTheme ' Me.cmnTheme.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.TBThemeDef, Me.TBThemeSave, Me.TBThemeRefresh, Me.TBThemeLoadComptability, Me.ToolStripSeparator6}) Me.cmnTheme.Name = "cmnLanguage" - Me.cmnTheme.OwnerItem = Me.mnTheme + Me.cmnTheme.OwnerItem = Me.TBTheme Me.cmnTheme.Size = New System.Drawing.Size(246, 98) ' 'TBThemeDef @@ -529,6 +529,14 @@ Partial Class MainWindow Me.ToolStripSeparator6.Name = "ToolStripSeparator6" Me.ToolStripSeparator6.Size = New System.Drawing.Size(242, 6) ' + 'mnTheme + ' + Me.mnTheme.DropDown = Me.cmnTheme + Me.mnTheme.Image = Global.iBMSC.My.Resources.Resources.x16Theme + Me.mnTheme.Name = "mnTheme" + Me.mnTheme.Size = New System.Drawing.Size(253, 22) + Me.mnTheme.Text = "&Theme" + ' 'TBTheme ' Me.TBTheme.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image @@ -539,14 +547,6 @@ Partial Class MainWindow Me.TBTheme.Size = New System.Drawing.Size(29, 22) Me.TBTheme.Text = "Theme" ' - 'mnTheme - ' - Me.mnTheme.DropDown = Me.cmnTheme - Me.mnTheme.Image = Global.iBMSC.My.Resources.Resources.x16Theme - Me.mnTheme.Name = "mnTheme" - Me.mnTheme.Size = New System.Drawing.Size(253, 22) - Me.mnTheme.Text = "&Theme" - ' 'Timer1 ' Me.Timer1.Interval = 15 @@ -1145,7 +1145,7 @@ Partial Class MainWindow ' Me.cmnConversion.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.POBLong, Me.POBShort, Me.POBLongShort, Me.ToolStripSeparator10, Me.POBHidden, Me.POBVisible, Me.POBHiddenVisible, Me.ToolStripSeparator11, Me.POBModify, Me.POBMirror, Me.POBFlip, Me.POBRandom, Me.POBRRandom, Me.POBSRandom, Me.POBHRandom, Me.POBSort}) Me.cmnConversion.Name = "cmnLanguage" - Me.cmnConversion.OwnerItem = Me.mnConversion + Me.cmnConversion.OwnerItem = Me.POConvert Me.cmnConversion.Size = New System.Drawing.Size(222, 324) ' 'POBLong @@ -1258,16 +1258,6 @@ Partial Class MainWindow Me.POBSort.Size = New System.Drawing.Size(221, 22) Me.POBSort.Text = "S&ort" ' - 'POConvert - ' - Me.POConvert.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image - Me.POConvert.DropDown = Me.cmnConversion - Me.POConvert.Image = Global.iBMSC.My.Resources.Resources.ConvertNotes - Me.POConvert.ImageTransparentColor = System.Drawing.Color.Magenta - Me.POConvert.Name = "POConvert" - Me.POConvert.Size = New System.Drawing.Size(29, 22) - Me.POConvert.Text = "Convert Notes" - ' 'mnPreview ' Me.mnPreview.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.mnPlayB, Me.mnPlay, Me.mnStop}) @@ -1299,6 +1289,16 @@ Partial Class MainWindow Me.mnStop.Size = New System.Drawing.Size(201, 22) Me.mnStop.Text = "&Stop" ' + 'POConvert + ' + Me.POConvert.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image + Me.POConvert.DropDown = Me.cmnConversion + Me.POConvert.Image = Global.iBMSC.My.Resources.Resources.ConvertNotes + Me.POConvert.ImageTransparentColor = System.Drawing.Color.Magenta + Me.POConvert.Name = "POConvert" + Me.POConvert.Size = New System.Drawing.Size(29, 22) + Me.POConvert.Text = "Convert Notes" + ' 'TBMain ' Me.TBMain.AccessibleRole = System.Windows.Forms.AccessibleRole.ToolBar @@ -3225,7 +3225,7 @@ Partial Class MainWindow Me.POGridPart2.RowStyles.Add(New System.Windows.Forms.RowStyle()) Me.POGridPart2.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20.0!)) Me.POGridPart2.Size = New System.Drawing.Size(183, 58) - Me.POGridPart2.TabIndex = 0 + Me.POGridPart2.TabIndex = 1 ' 'TableLayoutPanel5 ' @@ -3347,7 +3347,7 @@ Partial Class MainWindow Me.POGridPart1.RowStyles.Add(New System.Windows.Forms.RowStyle()) Me.POGridPart1.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20.0!)) Me.POGridPart1.Size = New System.Drawing.Size(183, 127) - Me.POGridPart1.TabIndex = 11 + Me.POGridPart1.TabIndex = 0 ' 'TableLayoutPanel3 ' @@ -3633,7 +3633,7 @@ Partial Class MainWindow Me.POHeaderPart2.RowStyles.Add(New System.Windows.Forms.RowStyle()) Me.POHeaderPart2.RowStyles.Add(New System.Windows.Forms.RowStyle()) Me.POHeaderPart2.Size = New System.Drawing.Size(183, 233) - Me.POHeaderPart2.TabIndex = 27 + Me.POHeaderPart2.TabIndex = 102 ' 'CHDifficulty ' diff --git a/iBMSC/MainWindow.resx b/iBMSC/MainWindow.resx index c46f296fe..904a69974 100644 --- a/iBMSC/MainWindow.resx +++ b/iBMSC/MainWindow.resx @@ -151,7 +151,7 @@ Lo9hEfPR4tDoA7ZnpJErDjUlMUPqvnh9TQVvxlvpK2h0/as0r4Y/yDx4Rs89qo3gXkWoNMK6CmOskxnD TUooNcb6sllV+tenZlTZqcxj9tsmxR+yRzXfGW3ZrL6WZGbJhVTrD1uSmLZ1MTazqHc9co1G6p8WoP4H 4aQ0/lAENzEdbB5jBnndiJozJQuk0UzKolmf1iS64JokEHdy3x25XRU0eLPS/86VEndVdeTCCNHRN2wp - AXVPzyJh+EPEDO0wIH5oFxREhFsJHa+8QfszjT3N/dScarO9PctJE8Pb8Xy4/SC0rfvQqwjFpUJPyCNt + AXVPzyJh+EPEDO0wIH5oFxREhFsJHa+8QfszjT3N/dScarO9PctJE83b8Xy4/SC0rfvQqwjFpUJPyCNt bgoPLwxn8mb8WPNYgNNDO3FqMMSAmKH3dAJci+mgzaAxaAto5nrXU7P66L+4NyVbV/XVBD0caN8PTfte dFeGoinn76hKWIvio6zvjvPefF71TeJvCyikw/xVmiWRQC3D1K2WZ75AnfROWG+9/zd9qp3olm+HOscH 5wQc/EcdgquKLagUukIsJiVv9XuhgLUFLymgJIA2U823dLpWuvH8ZbE3mnJHg1+W++LhzV0Yvr4LN89x @@ -181,7 +181,7 @@ S5a05i9eTJ2G6QWnjJFAH8nvT4CAbMTJOKtJhP3JmdQX0QL+ggXLixYtkkiZzEdVJPNSkjkJ3pa3aNGm dCur1/Uup2fO8bNkjjyz59R9Tl2p1K1GXSxUb/9Vk5nHnjv3jwVWVqvFNjYHSdkzim1soknmwWSMCj79 7H82fbN6jTBZs/q5yVD/65pM5rx5c1Lffts+2dLyTRGTSe38/9so9ROb1TjU+FiTIcfNmApM7fiJm45G - +x+c3CS/EKfQ9gAAAABJRU5ErkJggg== + +x+PUiS+cgYymQAAAABJRU5ErkJggg== @@ -190,6 +190,12 @@ 931, 2 + + 1022, 2 + + + 931, 2 + 1120, 2 diff --git a/iBMSC/Option Windows/OpExpand.Designer.vb b/iBMSC/Option Windows/OpExpand.Designer.vb index 5595cf372..6bdb482a7 100644 --- a/iBMSC/Option Windows/OpExpand.Designer.vb +++ b/iBMSC/Option Windows/OpExpand.Designer.vb @@ -37,32 +37,41 @@ Partial Class OpExpand 'Label5 ' Me.Label5.AutoSize = True - Me.Label5.Location = New System.Drawing.Point(12, 9) + Me.Label5.Location = New System.Drawing.Point(14, 10) + Me.Label5.Margin = New System.Windows.Forms.Padding(4, 0, 4, 0) Me.Label5.Name = "Label5" - Me.Label5.Size = New System.Drawing.Size(124, 13) + Me.Label5.Size = New System.Drawing.Size(138, 15) Me.Label5.TabIndex = 0 Me.Label5.Text = "Current Expansion Code:" ' 'Cancel_Button ' - Me.Cancel_Button.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) + Me.Cancel_Button.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.Cancel_Button.AutoSize = True Me.Cancel_Button.DialogResult = System.Windows.Forms.DialogResult.Cancel Me.Cancel_Button.FlatStyle = System.Windows.Forms.FlatStyle.System - Me.Cancel_Button.Location = New System.Drawing.Point(133, 74) + Me.Cancel_Button.Location = New System.Drawing.Point(164, 69) + Me.Cancel_Button.Margin = New System.Windows.Forms.Padding(4, 3, 4, 3) Me.Cancel_Button.Name = "Cancel_Button" - Me.Cancel_Button.Size = New System.Drawing.Size(124, 23) - Me.Cancel_Button.TabIndex = 121 + Me.Cancel_Button.Size = New System.Drawing.Size(153, 28) + Me.Cancel_Button.TabIndex = 5 Me.Cancel_Button.Text = "Cancel" ' 'BModifyNotes ' - Me.BModifyNotes.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left), System.Windows.Forms.AnchorStyles) + Me.BModifyNotes.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.BModifyNotes.AutoSize = True Me.BModifyNotes.DialogResult = System.Windows.Forms.DialogResult.OK Me.BModifyNotes.FlatStyle = System.Windows.Forms.FlatStyle.System - Me.BModifyNotes.Location = New System.Drawing.Point(3, 40) + Me.BModifyNotes.Location = New System.Drawing.Point(4, 36) + Me.BModifyNotes.Margin = New System.Windows.Forms.Padding(4, 3, 4, 3) Me.BModifyNotes.Name = "BModifyNotes" - Me.BModifyNotes.Size = New System.Drawing.Size(124, 23) - Me.BModifyNotes.TabIndex = 110 + Me.BModifyNotes.Size = New System.Drawing.Size(152, 27) + Me.BModifyNotes.TabIndex = 2 Me.BModifyNotes.Text = "Modify Notes" ' 'LExpansionCode @@ -71,57 +80,77 @@ Partial Class OpExpand Or System.Windows.Forms.AnchorStyles.Left) _ Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) Me.LExpansionCode.FormattingEnabled = True - Me.LExpansionCode.Location = New System.Drawing.Point(12, 25) + Me.LExpansionCode.ItemHeight = 15 + Me.LExpansionCode.Location = New System.Drawing.Point(14, 29) + Me.LExpansionCode.Margin = New System.Windows.Forms.Padding(4, 3, 4, 3) Me.LExpansionCode.Name = "LExpansionCode" - Me.LExpansionCode.Size = New System.Drawing.Size(260, 420) + Me.LExpansionCode.Size = New System.Drawing.Size(321, 499) Me.LExpansionCode.TabIndex = 1 ' 'BDisplayGhostAll ' - Me.BDisplayGhostAll.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) + Me.BDisplayGhostAll.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.BDisplayGhostAll.AutoSize = True Me.BDisplayGhostAll.DialogResult = System.Windows.Forms.DialogResult.OK Me.BDisplayGhostAll.FlatStyle = System.Windows.Forms.FlatStyle.System - Me.BDisplayGhostAll.Location = New System.Drawing.Point(133, 7) + Me.BDisplayGhostAll.Location = New System.Drawing.Point(164, 3) + Me.BDisplayGhostAll.Margin = New System.Windows.Forms.Padding(4, 3, 4, 3) Me.BDisplayGhostAll.Name = "BDisplayGhostAll" - Me.BDisplayGhostAll.Size = New System.Drawing.Size(124, 23) - Me.BDisplayGhostAll.TabIndex = 101 + Me.BDisplayGhostAll.Size = New System.Drawing.Size(153, 27) + Me.BDisplayGhostAll.TabIndex = 1 Me.BDisplayGhostAll.Text = "DisplayGhostNotes (All)" ' 'BDisplayGhost ' - Me.BDisplayGhost.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left), System.Windows.Forms.AnchorStyles) + Me.BDisplayGhost.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.BDisplayGhost.AutoSize = True Me.BDisplayGhost.DialogResult = System.Windows.Forms.DialogResult.OK Me.BDisplayGhost.FlatStyle = System.Windows.Forms.FlatStyle.System - Me.BDisplayGhost.Location = New System.Drawing.Point(3, 7) + Me.BDisplayGhost.Location = New System.Drawing.Point(4, 3) + Me.BDisplayGhost.Margin = New System.Windows.Forms.Padding(4, 3, 4, 3) Me.BDisplayGhost.Name = "BDisplayGhost" - Me.BDisplayGhost.Size = New System.Drawing.Size(124, 23) - Me.BDisplayGhost.TabIndex = 100 + Me.BDisplayGhost.Size = New System.Drawing.Size(152, 27) + Me.BDisplayGhost.TabIndex = 0 Me.BDisplayGhost.Text = "Display Ghost Notes" ' 'BModifySection ' - Me.BModifySection.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left), System.Windows.Forms.AnchorStyles) + Me.BModifySection.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.BModifySection.AutoSize = True Me.BModifySection.DialogResult = System.Windows.Forms.DialogResult.Yes Me.BModifySection.FlatStyle = System.Windows.Forms.FlatStyle.System - Me.BModifySection.Location = New System.Drawing.Point(133, 40) + Me.BModifySection.Location = New System.Drawing.Point(164, 36) + Me.BModifySection.Margin = New System.Windows.Forms.Padding(4, 3, 4, 3) Me.BModifySection.Name = "BModifySection" - Me.BModifySection.Size = New System.Drawing.Size(124, 23) - Me.BModifySection.TabIndex = 111 + Me.BModifySection.Size = New System.Drawing.Size(153, 27) + Me.BModifySection.TabIndex = 3 Me.BModifySection.Text = "Modify Section" ' 'BRemoveGhostNotes ' - Me.BRemoveGhostNotes.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left), System.Windows.Forms.AnchorStyles) + Me.BRemoveGhostNotes.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.BRemoveGhostNotes.AutoSize = True Me.BRemoveGhostNotes.DialogResult = System.Windows.Forms.DialogResult.No Me.BRemoveGhostNotes.FlatStyle = System.Windows.Forms.FlatStyle.System - Me.BRemoveGhostNotes.Location = New System.Drawing.Point(3, 74) + Me.BRemoveGhostNotes.Location = New System.Drawing.Point(4, 69) + Me.BRemoveGhostNotes.Margin = New System.Windows.Forms.Padding(4, 3, 4, 3) Me.BRemoveGhostNotes.Name = "BRemoveGhostNotes" - Me.BRemoveGhostNotes.Size = New System.Drawing.Size(124, 23) - Me.BRemoveGhostNotes.TabIndex = 120 + Me.BRemoveGhostNotes.Size = New System.Drawing.Size(152, 28) + Me.BRemoveGhostNotes.TabIndex = 4 Me.BRemoveGhostNotes.Text = "Remove Ghost Notes" ' 'TableLayoutPanel1 ' + Me.TableLayoutPanel1.Anchor = CType(((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left) _ + Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) Me.TableLayoutPanel1.ColumnCount = 2 Me.TableLayoutPanel1.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50.0!)) Me.TableLayoutPanel1.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50.0!)) @@ -131,26 +160,36 @@ Partial Class OpExpand Me.TableLayoutPanel1.Controls.Add(Me.Cancel_Button, 1, 2) Me.TableLayoutPanel1.Controls.Add(Me.BModifySection, 1, 1) Me.TableLayoutPanel1.Controls.Add(Me.BModifyNotes, 0, 1) - Me.TableLayoutPanel1.Location = New System.Drawing.Point(12, 449) + Me.TableLayoutPanel1.Location = New System.Drawing.Point(14, 537) + Me.TableLayoutPanel1.Margin = New System.Windows.Forms.Padding(4, 3, 4, 3) Me.TableLayoutPanel1.Name = "TableLayoutPanel1" Me.TableLayoutPanel1.RowCount = 3 Me.TableLayoutPanel1.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 33.33333!)) Me.TableLayoutPanel1.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 33.33333!)) Me.TableLayoutPanel1.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 33.33333!)) - Me.TableLayoutPanel1.Size = New System.Drawing.Size(260, 100) - Me.TableLayoutPanel1.TabIndex = 114 + Me.TableLayoutPanel1.Size = New System.Drawing.Size(321, 100) + Me.TableLayoutPanel1.TabIndex = 2 ' 'OpExpand ' - Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!) - Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font - Me.ClientSize = New System.Drawing.Size(284, 561) + Me.AcceptButton = Me.BDisplayGhost + Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None + Me.CancelButton = Me.Cancel_Button + Me.ClientSize = New System.Drawing.Size(349, 647) Me.Controls.Add(Me.TableLayoutPanel1) Me.Controls.Add(Me.LExpansionCode) Me.Controls.Add(Me.Label5) + Me.Font = New System.Drawing.Font("Segoe UI", 9.0!) + Me.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog + Me.Margin = New System.Windows.Forms.Padding(4, 3, 4, 3) + Me.MaximizeBox = False + Me.MinimizeBox = False Me.Name = "OpExpand" + Me.ShowInTaskbar = False + Me.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent Me.Text = "Select Expansion Code" Me.TableLayoutPanel1.ResumeLayout(False) + Me.TableLayoutPanel1.PerformLayout() Me.ResumeLayout(False) Me.PerformLayout() diff --git a/iBMSC/Option Windows/OpExpand.vb b/iBMSC/Option Windows/OpExpand.vb index 09e5c1422..8765ce28f 100644 --- a/iBMSC/Option Windows/OpExpand.vb +++ b/iBMSC/Option Windows/OpExpand.vb @@ -24,7 +24,7 @@ Public Class OpExpand Next End Sub - Private Sub BDisplayGhost_Click(sender As Object, e As EventArgs) Handles BDisplayGhost.Click + Private Sub BDisplayGhost_Click(sender As Object, e As EventArgs) Handles BDisplayGhost.Click, LExpansionCode.DoubleClick Select_Section() If MainWindow.ExpansionSplit(1) = "-" Then Exit Sub Me.Close() diff --git a/iBMSC/Option Windows/OpPlayer.Designer.vb b/iBMSC/Option Windows/OpPlayer.Designer.vb index 9c91bc7c3..eb2187347 100644 --- a/iBMSC/Option Windows/OpPlayer.Designer.vb +++ b/iBMSC/Option Windows/OpPlayer.Designer.vb @@ -22,25 +22,25 @@ Partial Class OpPlayer '不要使用代码编辑器修改它。 _ Private Sub InitializeComponent() - Me.OK_Button = New System.Windows.Forms.Button - Me.Cancel_Button = New System.Windows.Forms.Button - Me.Label2 = New System.Windows.Forms.Label - Me.Label3 = New System.Windows.Forms.Label - Me.Label4 = New System.Windows.Forms.Label - Me.TPlayB = New System.Windows.Forms.TextBox - Me.TPlay = New System.Windows.Forms.TextBox - Me.TStop = New System.Windows.Forms.TextBox - Me.Label6 = New System.Windows.Forms.Label - Me.TPath = New System.Windows.Forms.TextBox - Me.Label1 = New System.Windows.Forms.Label - Me.BBrowse = New System.Windows.Forms.Button - Me.BDefault = New System.Windows.Forms.Button - Me.BRemove = New System.Windows.Forms.Button - Me.BAdd = New System.Windows.Forms.Button - Me.LPlayer = New System.Windows.Forms.ListBox - Me.PictureBox1 = New System.Windows.Forms.PictureBox - Me.Label5 = New System.Windows.Forms.Label - Me.Label7 = New System.Windows.Forms.Label + Me.OK_Button = New System.Windows.Forms.Button() + Me.Cancel_Button = New System.Windows.Forms.Button() + Me.Label2 = New System.Windows.Forms.Label() + Me.Label3 = New System.Windows.Forms.Label() + Me.Label4 = New System.Windows.Forms.Label() + Me.TPlayB = New System.Windows.Forms.TextBox() + Me.TPlay = New System.Windows.Forms.TextBox() + Me.TStop = New System.Windows.Forms.TextBox() + Me.Label6 = New System.Windows.Forms.Label() + Me.TPath = New System.Windows.Forms.TextBox() + Me.Label1 = New System.Windows.Forms.Label() + Me.BBrowse = New System.Windows.Forms.Button() + Me.BDefault = New System.Windows.Forms.Button() + Me.BRemove = New System.Windows.Forms.Button() + Me.BAdd = New System.Windows.Forms.Button() + Me.LPlayer = New System.Windows.Forms.ListBox() + Me.PictureBox1 = New System.Windows.Forms.PictureBox() + Me.Label5 = New System.Windows.Forms.Label() + Me.Label7 = New System.Windows.Forms.Label() CType(Me.PictureBox1, System.ComponentModel.ISupportInitialize).BeginInit() Me.SuspendLayout() ' @@ -120,8 +120,8 @@ Partial Class OpPlayer Me.Label6.Name = "Label6" Me.Label6.Size = New System.Drawing.Size(225, 60) Me.Label6.TabIndex = 11 - Me.Label6.Text = "References (case-sensitive):" & Global.Microsoft.VisualBasic.ChrW(13) & Global.Microsoft.VisualBasic.ChrW(10) & " = Directory of the application" & Global.Microsoft.VisualBasic.ChrW(13) & Global.Microsoft.VisualBasic.ChrW(10) & "" & _ - " = Current measure" & Global.Microsoft.VisualBasic.ChrW(13) & Global.Microsoft.VisualBasic.ChrW(10) & " = File Name" + Me.Label6.Text = "References (case-sensitive):" & Global.Microsoft.VisualBasic.ChrW(13) & Global.Microsoft.VisualBasic.ChrW(10) & " = Directory of the application" & Global.Microsoft.VisualBasic.ChrW(13) & Global.Microsoft.VisualBasic.ChrW(10) & "" & + " = Current measure" & Global.Microsoft.VisualBasic.ChrW(13) & Global.Microsoft.VisualBasic.ChrW(10) & " = File Name" ' 'TPath ' diff --git a/iBMSC/Option Windows/OpPlayer.resx b/iBMSC/Option Windows/OpPlayer.resx index 19dc0dd8b..d58980a38 100644 --- a/iBMSC/Option Windows/OpPlayer.resx +++ b/iBMSC/Option Windows/OpPlayer.resx @@ -112,9 +112,9 @@ 2.0 - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 \ No newline at end of file diff --git a/iBMSC/Option Windows/OpVisualOverride.Designer.vb b/iBMSC/Option Windows/OpVisualOverride.Designer.vb index 91aec2e8c..b3daebf6d 100644 --- a/iBMSC/Option Windows/OpVisualOverride.Designer.vb +++ b/iBMSC/Option Windows/OpVisualOverride.Designer.vb @@ -39,8 +39,10 @@ Partial Class OpVisualOverride Me.TRangeU = New System.Windows.Forms.TextBox() Me.Label5 = New System.Windows.Forms.Label() Me.TRangeL = New System.Windows.Forms.TextBox() + Me.TableLayoutPanel3 = New System.Windows.Forms.TableLayoutPanel() Me.TableLayoutPanel1.SuspendLayout() Me.TableLayoutPanel2.SuspendLayout() + Me.TableLayoutPanel3.SuspendLayout() Me.SuspendLayout() ' 'LOverrides @@ -50,51 +52,57 @@ Partial Class OpVisualOverride Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) Me.LOverrides.FormattingEnabled = True Me.LOverrides.IntegralHeight = False + Me.LOverrides.ItemHeight = 15 Me.LOverrides.Items.AddRange(New Object() {"Drums", "Arps"}) - Me.LOverrides.Location = New System.Drawing.Point(12, 12) + Me.LOverrides.Location = New System.Drawing.Point(14, 14) + Me.LOverrides.Margin = New System.Windows.Forms.Padding(4, 3, 4, 3) Me.LOverrides.Name = "LOverrides" - Me.LOverrides.Size = New System.Drawing.Size(156, 55) + Me.LOverrides.Size = New System.Drawing.Size(133, 226) Me.LOverrides.TabIndex = 0 ' 'BRemove ' - Me.BRemove.Anchor = CType((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) + Me.BRemove.Anchor = System.Windows.Forms.AnchorStyles.Bottom Me.BRemove.FlatStyle = System.Windows.Forms.FlatStyle.System - Me.BRemove.Location = New System.Drawing.Point(174, 41) + Me.BRemove.Location = New System.Drawing.Point(4, 197) + Me.BRemove.Margin = New System.Windows.Forms.Padding(4, 3, 4, 3) Me.BRemove.Name = "BRemove" - Me.BRemove.Size = New System.Drawing.Size(117, 23) - Me.BRemove.TabIndex = 2 + Me.BRemove.Size = New System.Drawing.Size(128, 27) + Me.BRemove.TabIndex = 1 Me.BRemove.Text = "Remove" Me.BRemove.UseVisualStyleBackColor = True ' 'BAdd ' - Me.BAdd.Anchor = CType((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) + Me.BAdd.Anchor = System.Windows.Forms.AnchorStyles.Top Me.BAdd.FlatStyle = System.Windows.Forms.FlatStyle.System - Me.BAdd.Location = New System.Drawing.Point(174, 12) + Me.BAdd.Location = New System.Drawing.Point(4, 3) + Me.BAdd.Margin = New System.Windows.Forms.Padding(4, 3, 4, 3) Me.BAdd.Name = "BAdd" - Me.BAdd.Size = New System.Drawing.Size(117, 23) - Me.BAdd.TabIndex = 1 + Me.BAdd.Size = New System.Drawing.Size(128, 27) + Me.BAdd.TabIndex = 0 Me.BAdd.Text = "Add" Me.BAdd.UseVisualStyleBackColor = True ' 'OK_Button ' Me.OK_Button.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) - Me.OK_Button.Location = New System.Drawing.Point(149, 187) + Me.OK_Button.Location = New System.Drawing.Point(126, 379) + Me.OK_Button.Margin = New System.Windows.Forms.Padding(4, 3, 4, 3) Me.OK_Button.Name = "OK_Button" - Me.OK_Button.Size = New System.Drawing.Size(67, 23) - Me.OK_Button.TabIndex = 100 + Me.OK_Button.Size = New System.Drawing.Size(78, 27) + Me.OK_Button.TabIndex = 3 Me.OK_Button.Text = "OK" ' 'Cancel_Button ' Me.Cancel_Button.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) Me.Cancel_Button.DialogResult = System.Windows.Forms.DialogResult.Cancel - Me.Cancel_Button.Location = New System.Drawing.Point(222, 187) + Me.Cancel_Button.Location = New System.Drawing.Point(211, 379) + Me.Cancel_Button.Margin = New System.Windows.Forms.Padding(4, 3, 4, 3) Me.Cancel_Button.Name = "Cancel_Button" - Me.Cancel_Button.Size = New System.Drawing.Size(67, 23) - Me.Cancel_Button.TabIndex = 101 + Me.Cancel_Button.Size = New System.Drawing.Size(78, 27) + Me.Cancel_Button.TabIndex = 4 Me.Cancel_Button.Text = "Cancel" ' 'ContextMenuStrip1 @@ -115,14 +123,15 @@ Partial Class OpVisualOverride Me.TableLayoutPanel1.Controls.Add(Me.Label3, 0, 0) Me.TableLayoutPanel1.Controls.Add(Me.BColor, 1, 2) Me.TableLayoutPanel1.Controls.Add(Me.TableLayoutPanel2, 1, 1) - Me.TableLayoutPanel1.Location = New System.Drawing.Point(12, 73) + Me.TableLayoutPanel1.Location = New System.Drawing.Point(14, 248) + Me.TableLayoutPanel1.Margin = New System.Windows.Forms.Padding(4, 3, 4, 3) Me.TableLayoutPanel1.Name = "TableLayoutPanel1" Me.TableLayoutPanel1.RowCount = 3 Me.TableLayoutPanel1.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 25.0!)) Me.TableLayoutPanel1.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 25.0!)) Me.TableLayoutPanel1.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 25.0!)) - Me.TableLayoutPanel1.Size = New System.Drawing.Size(279, 100) - Me.TableLayoutPanel1.TabIndex = 93 + Me.TableLayoutPanel1.Size = New System.Drawing.Size(278, 115) + Me.TableLayoutPanel1.TabIndex = 2 ' 'Label4 ' @@ -130,20 +139,23 @@ Partial Class OpVisualOverride Or System.Windows.Forms.AnchorStyles.Left) _ Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) Me.Label4.AutoSize = True - Me.Label4.Location = New System.Drawing.Point(3, 66) + Me.Label4.Font = New System.Drawing.Font("Segoe UI", 9.0!) + Me.Label4.Location = New System.Drawing.Point(4, 76) + Me.Label4.Margin = New System.Windows.Forms.Padding(4, 0, 4, 0) Me.Label4.Name = "Label4" - Me.Label4.Size = New System.Drawing.Size(133, 34) - Me.Label4.TabIndex = 0 + Me.Label4.Size = New System.Drawing.Size(131, 39) + Me.Label4.TabIndex = 4 Me.Label4.Text = "Note Color" Me.Label4.TextAlign = System.Drawing.ContentAlignment.MiddleRight ' 'TName ' - Me.TName.Dock = System.Windows.Forms.DockStyle.Fill - Me.TName.Location = New System.Drawing.Point(142, 3) + Me.TName.Anchor = CType((System.Windows.Forms.AnchorStyles.Left Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) + Me.TName.Location = New System.Drawing.Point(143, 7) + Me.TName.Margin = New System.Windows.Forms.Padding(4, 3, 4, 3) Me.TName.Name = "TName" - Me.TName.Size = New System.Drawing.Size(134, 20) - Me.TName.TabIndex = 10 + Me.TName.Size = New System.Drawing.Size(131, 23) + Me.TName.TabIndex = 1 ' 'Label1 ' @@ -151,10 +163,11 @@ Partial Class OpVisualOverride Or System.Windows.Forms.AnchorStyles.Left) _ Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) Me.Label1.AutoSize = True - Me.Label1.Location = New System.Drawing.Point(3, 33) + Me.Label1.Location = New System.Drawing.Point(4, 38) + Me.Label1.Margin = New System.Windows.Forms.Padding(4, 0, 4, 0) Me.Label1.Name = "Label1" - Me.Label1.Size = New System.Drawing.Size(133, 33) - Me.Label1.TabIndex = 0 + Me.Label1.Size = New System.Drawing.Size(131, 38) + Me.Label1.TabIndex = 2 Me.Label1.Text = "Label Range" Me.Label1.TextAlign = System.Drawing.ContentAlignment.MiddleRight ' @@ -164,9 +177,10 @@ Partial Class OpVisualOverride Or System.Windows.Forms.AnchorStyles.Left) _ Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) Me.Label3.AutoSize = True - Me.Label3.Location = New System.Drawing.Point(3, 0) + Me.Label3.Location = New System.Drawing.Point(4, 0) + Me.Label3.Margin = New System.Windows.Forms.Padding(4, 0, 4, 0) Me.Label3.Name = "Label3" - Me.Label3.Size = New System.Drawing.Size(133, 33) + Me.Label3.Size = New System.Drawing.Size(131, 38) Me.Label3.TabIndex = 0 Me.Label3.Text = "Option Name" Me.Label3.TextAlign = System.Drawing.ContentAlignment.MiddleRight @@ -174,15 +188,19 @@ Partial Class OpVisualOverride 'BColor ' Me.BColor.Dock = System.Windows.Forms.DockStyle.Fill - Me.BColor.Location = New System.Drawing.Point(142, 69) + Me.BColor.Location = New System.Drawing.Point(143, 79) + Me.BColor.Margin = New System.Windows.Forms.Padding(4, 3, 4, 3) Me.BColor.Name = "BColor" - Me.BColor.Size = New System.Drawing.Size(134, 28) - Me.BColor.TabIndex = 30 + Me.BColor.Size = New System.Drawing.Size(131, 33) + Me.BColor.TabIndex = 5 Me.BColor.Text = "Button1" Me.BColor.UseVisualStyleBackColor = True ' 'TableLayoutPanel2 ' + Me.TableLayoutPanel2.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.TableLayoutPanel2.ColumnCount = 3 Me.TableLayoutPanel2.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 33.33333!)) Me.TableLayoutPanel2.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 33.33333!)) @@ -190,22 +208,23 @@ Partial Class OpVisualOverride Me.TableLayoutPanel2.Controls.Add(Me.TRangeU, 2, 0) Me.TableLayoutPanel2.Controls.Add(Me.Label5, 1, 0) Me.TableLayoutPanel2.Controls.Add(Me.TRangeL, 0, 0) - Me.TableLayoutPanel2.Location = New System.Drawing.Point(139, 33) + Me.TableLayoutPanel2.Location = New System.Drawing.Point(139, 38) Me.TableLayoutPanel2.Margin = New System.Windows.Forms.Padding(0) Me.TableLayoutPanel2.Name = "TableLayoutPanel2" Me.TableLayoutPanel2.RowCount = 1 Me.TableLayoutPanel2.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100.0!)) - Me.TableLayoutPanel2.Size = New System.Drawing.Size(140, 25) - Me.TableLayoutPanel2.TabIndex = 14 + Me.TableLayoutPanel2.Size = New System.Drawing.Size(139, 38) + Me.TableLayoutPanel2.TabIndex = 3 ' 'TRangeU ' - Me.TRangeU.Dock = System.Windows.Forms.DockStyle.Fill - Me.TRangeU.Location = New System.Drawing.Point(95, 3) + Me.TRangeU.Anchor = CType((System.Windows.Forms.AnchorStyles.Left Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) + Me.TRangeU.Location = New System.Drawing.Point(96, 7) + Me.TRangeU.Margin = New System.Windows.Forms.Padding(4, 3, 4, 3) Me.TRangeU.MaxLength = 2 Me.TRangeU.Name = "TRangeU" - Me.TRangeU.Size = New System.Drawing.Size(42, 20) - Me.TRangeU.TabIndex = 21 + Me.TRangeU.Size = New System.Drawing.Size(39, 23) + Me.TRangeU.TabIndex = 2 ' 'Label5 ' @@ -213,39 +232,65 @@ Partial Class OpVisualOverride Or System.Windows.Forms.AnchorStyles.Left) _ Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) Me.Label5.AutoSize = True - Me.Label5.Location = New System.Drawing.Point(49, 0) + Me.Label5.Location = New System.Drawing.Point(50, 0) + Me.Label5.Margin = New System.Windows.Forms.Padding(4, 0, 4, 0) Me.Label5.Name = "Label5" - Me.Label5.Size = New System.Drawing.Size(40, 25) - Me.Label5.TabIndex = 0 + Me.Label5.Size = New System.Drawing.Size(38, 38) + Me.Label5.TabIndex = 1 Me.Label5.Text = "to" Me.Label5.TextAlign = System.Drawing.ContentAlignment.MiddleCenter ' 'TRangeL ' - Me.TRangeL.Dock = System.Windows.Forms.DockStyle.Fill - Me.TRangeL.Location = New System.Drawing.Point(3, 3) + Me.TRangeL.Anchor = CType((System.Windows.Forms.AnchorStyles.Left Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) + Me.TRangeL.Location = New System.Drawing.Point(4, 7) + Me.TRangeL.Margin = New System.Windows.Forms.Padding(4, 3, 4, 3) Me.TRangeL.MaxLength = 2 Me.TRangeL.Name = "TRangeL" - Me.TRangeL.Size = New System.Drawing.Size(40, 20) - Me.TRangeL.TabIndex = 20 + Me.TRangeL.Size = New System.Drawing.Size(38, 23) + Me.TRangeL.TabIndex = 0 + ' + 'TableLayoutPanel3 + ' + Me.TableLayoutPanel3.Anchor = CType(((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Bottom) _ + Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) + Me.TableLayoutPanel3.ColumnCount = 1 + Me.TableLayoutPanel3.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50.0!)) + Me.TableLayoutPanel3.Controls.Add(Me.BRemove, 0, 1) + Me.TableLayoutPanel3.Controls.Add(Me.BAdd, 0, 0) + Me.TableLayoutPanel3.Location = New System.Drawing.Point(155, 14) + Me.TableLayoutPanel3.Margin = New System.Windows.Forms.Padding(4, 3, 4, 3) + Me.TableLayoutPanel3.Name = "TableLayoutPanel3" + Me.TableLayoutPanel3.RowCount = 2 + Me.TableLayoutPanel3.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50.0!)) + Me.TableLayoutPanel3.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50.0!)) + Me.TableLayoutPanel3.Size = New System.Drawing.Size(136, 227) + Me.TableLayoutPanel3.TabIndex = 1 ' 'OpVisualOverride ' - Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!) - Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font - Me.ClientSize = New System.Drawing.Size(301, 222) + Me.AcceptButton = Me.OK_Button + Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None + Me.CancelButton = Me.Cancel_Button + Me.ClientSize = New System.Drawing.Size(303, 420) + Me.Controls.Add(Me.LOverrides) + Me.Controls.Add(Me.TableLayoutPanel3) Me.Controls.Add(Me.TableLayoutPanel1) Me.Controls.Add(Me.OK_Button) Me.Controls.Add(Me.Cancel_Button) - Me.Controls.Add(Me.LOverrides) - Me.Controls.Add(Me.BRemove) - Me.Controls.Add(Me.BAdd) + Me.Font = New System.Drawing.Font("Segoe UI", 9.0!) + Me.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog + Me.Margin = New System.Windows.Forms.Padding(4, 3, 4, 3) + Me.MaximizeBox = False + Me.MinimizeBox = False Me.Name = "OpVisualOverride" + Me.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent Me.Text = "Visual Override Options" Me.TableLayoutPanel1.ResumeLayout(False) Me.TableLayoutPanel1.PerformLayout() Me.TableLayoutPanel2.ResumeLayout(False) Me.TableLayoutPanel2.PerformLayout() + Me.TableLayoutPanel3.ResumeLayout(False) Me.ResumeLayout(False) End Sub @@ -265,4 +310,5 @@ Partial Class OpVisualOverride Friend WithEvents TRangeU As TextBox Friend WithEvents Label5 As Label Friend WithEvents TRangeL As TextBox + Friend WithEvents TableLayoutPanel3 As TableLayoutPanel End Class diff --git a/iBMSC/Option Windows/OpVisualOverride.vb b/iBMSC/Option Windows/OpVisualOverride.vb index 2660b09f2..74490e91d 100644 --- a/iBMSC/Option Windows/OpVisualOverride.vb +++ b/iBMSC/Option Windows/OpVisualOverride.vb @@ -180,7 +180,7 @@ Public Class OpVisualOverride Return C36to10S(xStart.Chars(0)) * 36 + C36to10S(xStart.Chars(1)) End Function - Private Sub LOverrides_Click(sender As Object, e As EventArgs) Handles LOverrides.Click + Private Sub LOverrides_Click(sender As Object, e As EventArgs) Handles LOverrides.Click, LOverrides.KeyUp If IsNothing(COverrides) Or LOverrides.SelectedIndex = -1 Then Exit Sub ShowInTextbox() End Sub From 49ac89d90f06517283da8bfcab98be93c6705b82 Mon Sep 17 00:00:00 2001 From: psyk2642 <60137590+psyk2642@users.noreply.github.com> Date: Sun, 27 Mar 2022 20:09:49 +0800 Subject: [PATCH 086/257] TimeStatusLabel small fix Fixed the time label not displaying the correct time hen the mouse moves from the bottom to the note. --- iBMSC/MainWindow.vb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/iBMSC/MainWindow.vb b/iBMSC/MainWindow.vb index 6ad68c98b..f757629fa 100644 --- a/iBMSC/MainWindow.vb +++ b/iBMSC/MainWindow.vb @@ -2472,7 +2472,7 @@ StartCount: If Not NTInput Then FSP2.Text = xVposMod.ToString & " / " & xMLength & " " FSP3.Text = CInt(xVposMod / xGCD).ToString & " / " & CInt(xMLength / xGCD).ToString & " " FSP4.Text = Notes(xI1).VPosition.ToString() & " " - TimeStatusLabel.Text = GetTimeFromVPosition(TempVPosition).ToString("F4") + TimeStatusLabel.Text = GetTimeFromVPosition(Notes(xI1).VPosition).ToString("F4") FSC.Text = nTitle(Notes(xI1).ColumnIndex) FSW.Text = IIf(IsColumnNumeric(Notes(xI1).ColumnIndex), Notes(xI1).Value / 10000, From eabfbd8f8640220cc04215299fc1f0920c36f78a Mon Sep 17 00:00:00 2001 From: psyk2642 <60137590+psyk2642@users.noreply.github.com> Date: Sun, 27 Mar 2022 23:15:51 +0800 Subject: [PATCH 087/257] Revised and added keyboard shortcuts - Changed period to increase CGDivide, and comma to decrease CGDivide because that makes more sense. - Added incremental change, x3 multiplier and CGSub keyboard shortcuts. - Added #WAV selection control with scroll wheel (Hold shift). --- README.md | 13 ++++++++++--- iBMSC/MainWindow.vb | 2 +- iBMSC/PanelEvents.vb | 40 ++++++++++++++++++++++++++++++++++------ 3 files changed, 45 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index e315dc75a..dc4df7848 100644 --- a/README.md +++ b/README.md @@ -33,7 +33,7 @@ Listed in the order added. * Added "Show Waveform on Notes". ## Keyboard shortcuts -* Changed keybinding to allow note placement between D1 and D8. +* Changed keybinding to allow note placement between D1 and D8: * Numpad keys are now assigned to 2P lanes. * QWERTYUI keys are also assigned to 2P lanes. * 1 to 7 are now assigned to A2 to A8, and 8 is now assigned to A1. @@ -41,13 +41,13 @@ Listed in the order added. * For PMS: Number keys 1-9 assign the notes to PMS lanes when a PMS theme is used. * Added Save As keyboard shortcut (Ctrl+Alt+S) * Added recent bms keyboard shortcuts (Alt+1 to Alt+5) -* Added shortcuts for toggling lanes. +* Added shortcuts for toggling lanes: * Alt+B - BPM lane * Alt+S - Stop lane * Alt+R - Scroll lane * Alt+G - BGA/Layer/Poor * Added shortcuts for the panel splitter (Alt+Left and Alt+Right). -* Added Options shortcut +* Added Options shortcut: * F9 - Player Options * F10 - General Options * F12 - Visual Options @@ -55,6 +55,13 @@ Listed in the order added. * Added keyboard shortcuts for previewing and replacing keysounds in the Sounds List (Spacebar to preview, enter to replace). * Added "Select Section" (Ctrl+R). * Added color overriding options (Shift+F12). +* Revised shortcuts for grid division values: + * Period now increases the division value, and comma now decreases the division value. + * Hold Ctrl for incremental value change + * Hold Shift for x3 multiplier or divisor + * Hold Alt to change the sub value + * For example, Shift+Alt+Comma = divide the sub value by 3 (rounded) +* Added shortcut for scrolling through #WAV selection (Shift+Scroll). ## New dialog/option boxes diff --git a/iBMSC/MainWindow.vb b/iBMSC/MainWindow.vb index f757629fa..0430b0400 100644 --- a/iBMSC/MainWindow.vb +++ b/iBMSC/MainWindow.vb @@ -1669,7 +1669,7 @@ EndSearch: Dim iI As Integer = sender.Tag ' az: We got a wheel event when we're zooming in/out - If My.Computer.Keyboard.CtrlKeyDown Then + If My.Computer.Keyboard.CtrlKeyDown Or My.Computer.Keyboard.ShiftKeyDown Then sender.Value = VSValue ' Undo the scroll Exit Sub End If diff --git a/iBMSC/PanelEvents.vb b/iBMSC/PanelEvents.vb index 3ff1a38c6..acb408894 100644 --- a/iBMSC/PanelEvents.vb +++ b/iBMSC/PanelEvents.vb @@ -153,10 +153,32 @@ Partial Public Class MainWindow If PanelFocus = 2 Then RightPanelScroll.Value = IIf(RightPanelScroll.Value + gPgUpDn < 0, RightPanelScroll.Value + gPgUpDn, 0) Case Keys.Oemcomma - If gDivide * 2 <= CGDivide.Maximum Then CGDivide.Value = gDivide * 2 + With My.Computer.Keyboard + Dim Modif As Integer = IIf(.ShiftKeyDown, 3, 2) + If Not .CtrlKeyDown And Not .AltKeyDown Then ' Divide CGDivide + If CGDivide.Value \ Modif >= CGDivide.Minimum Then CGDivide.Value \= Modif + ElseIf .CtrlKeyDown And Not .AltKeyDown Then ' Decrease CGDivide by 1 + If CGDivide.Value - 1 >= CGDivide.Minimum Then CGDivide.Value -= 1 + ElseIf Not .CtrlKeyDown And .AltKeyDown Then ' Divide CGSub + If CGSub.Value \ Modif >= CGSub.Minimum Then CGSub.Value \= Modif + Else ' Decrease CGSub by 1 + If CGSub.Value - 1 >= CGSub.Minimum Then CGSub.Value -= 1 + End If + End With Case Keys.OemPeriod - If gDivide \ 2 >= CGDivide.Minimum Then CGDivide.Value = gDivide \ 2 + With My.Computer.Keyboard + Dim Modif As Integer = IIf(.ShiftKeyDown, 3, 2) + If Not .CtrlKeyDown And Not .AltKeyDown Then ' Divide CGDivide + If CGDivide.Value * Modif <= CGDivide.Maximum Then CGDivide.Value *= Modif + ElseIf .CtrlKeyDown And Not .AltKeyDown Then ' Decrease CGDivide by 1 + If CGDivide.Value + 1 <= CGDivide.Maximum Then CGDivide.Value += 1 + ElseIf Not .CtrlKeyDown And .AltKeyDown Then ' Divide CGSub + If CGSub.Value * Modif <= CGSub.Maximum Then CGSub.Value *= Modif + Else ' Decrease CGSub by 1 + If CGSub.Value + 1 <= CGSub.Maximum Then CGSub.Value += 1 + End If + End With Case Keys.OemQuestion 'Dim xTempSwap As Integer = gSlash @@ -176,6 +198,7 @@ Partial Public Class MainWindow Case Keys.Add IncreaseCurrentWav() + Case Keys.Subtract DecreaseCurrentWav() @@ -1666,10 +1689,15 @@ Partial Public Class MainWindow ' az: Handle zoom in/out. Should work with any of the three splitters. Private Sub PMain_Scroll(sender As Object, e As MouseEventArgs) Handles PMainIn.MouseWheel, PMainInL.MouseWheel, PMainInR.MouseWheel - If Not My.Computer.Keyboard.CtrlKeyDown Then Exit Sub - Dim dv = Math.Round(CGHeight2.Value + e.Delta / 120) - CGHeight2.Value = Math.Min(CGHeight2.Maximum, Math.Max(CGHeight2.Minimum, dv)) - CGHeight.Value = CGHeight2.Value / 4 + With My.Computer.Keyboard + If .CtrlKeyDown Then + Dim dv = Math.Round(CGHeight2.Value + e.Delta / 120) + CGHeight2.Value = Math.Min(CGHeight2.Maximum, Math.Max(CGHeight2.Minimum, dv)) + CGHeight.Value = CGHeight2.Value / 4 + ElseIf .ShiftKeyDown Then + If Math.Sign(e.Delta) = -1 Then IncreaseCurrentWav() Else DecreaseCurrentWav() + End If + End With End Sub From a1f8098647ea02f539449a24de0a5bf22c65da88 Mon Sep 17 00:00:00 2001 From: psyk2642 <60137590+psyk2642@users.noreply.github.com> Date: Tue, 29 Mar 2022 00:27:47 +0800 Subject: [PATCH 088/257] Added "Define Measure" in Time Selection Tool Added a "Define Measure" button in Time Selection Tool. Allows defining a custom measure, add a measure line or remove measure lines. Shortcut key: Insert --- README.md | 2 + iBMSC/EditorUndoRedo.vb | 16 ++++ iBMSC/MainWindow.designer.vb | 45 +++++++---- iBMSC/MainWindow.resx | 78 +++++++++----------- iBMSC/My Project/AssemblyInfo.vb | 4 +- iBMSC/PanelEvents.vb | 3 + iBMSC/TimeSelectionOps.vb | 123 ++++++++++++++++++++++++++++--- iBMSC/UndoRedo.vb | 34 +++++++++ 8 files changed, 236 insertions(+), 69 deletions(-) diff --git a/README.md b/README.md index dc4df7848..229a02648 100644 --- a/README.md +++ b/README.md @@ -31,6 +31,7 @@ Listed in the order added. * The window will now follow notes being moved by arrow keys. * When creating LNs in NT mode, the VPosition will snap to the highlighted note if any. * Added "Show Waveform on Notes". +* Added "Define Measure" in Time Selection Tool. Allows defining a custom measure, add a measure line or remove measure lines. Also accessible via the Insert key while Time Selection Tool is selected. ## Keyboard shortcuts * Changed keybinding to allow note placement between D1 and D8: @@ -62,6 +63,7 @@ Listed in the order added. * Hold Alt to change the sub value * For example, Shift+Alt+Comma = divide the sub value by 3 (rounded) * Added shortcut for scrolling through #WAV selection (Shift+Scroll). +* Added shortcut for defining measures with Time Selection Tool (Insert). ## New dialog/option boxes diff --git a/iBMSC/EditorUndoRedo.vb b/iBMSC/EditorUndoRedo.vb index e21aab208..b966e524d 100644 --- a/iBMSC/EditorUndoRedo.vb +++ b/iBMSC/EditorUndoRedo.vb @@ -104,6 +104,13 @@ Partial Public Class MainWindow Next UpdateMeasureBottom() + Case UndoRedo.opChangeMeasure + Dim xCmd As UndoRedo.ChangeMeasure = sCmd + For xIM = 0 To UBound(xCmd.MeasureLength) + MeasureLength(xIM) = xCmd.MeasureLength(xIM) + Next + UpdateMeasureBottom() + Case UndoRedo.opChangeTimeSelection Dim xCmd As UndoRedo.ChangeTimeSelection = sCmd vSelStart = xCmd.SelStart @@ -383,6 +390,15 @@ Partial Public Class MainWindow BaseRedo = xRedo End Sub + Private Sub RedoChangeMeasure(ByVal MeasureLength0() As Double, ByVal MeasureLength1() As Double, ByRef BaseUndo As UndoRedo.LinkedURCmd, ByRef BaseRedo As UndoRedo.LinkedURCmd) + Dim xUndo As New UndoRedo.ChangeMeasure(MeasureLength0) + Dim xRedo As New UndoRedo.ChangeMeasure(MeasureLength1) + xUndo.Next = BaseUndo + BaseUndo = xUndo + If BaseRedo IsNot Nothing Then BaseRedo.Next = xRedo + BaseRedo = xRedo + End Sub + Private Sub RedoChangeTimeSelection(ByVal pStart As Double, ByVal pLen As Double, ByVal pHalf As Double, ByVal nStart As Double, ByVal nLen As Double, ByVal nHalf As Double, ByVal xSel As Boolean, ByRef BaseUndo As UndoRedo.LinkedURCmd, ByRef BaseRedo As UndoRedo.LinkedURCmd) Dim xUndo As New UndoRedo.ChangeTimeSelection(pStart, pLen, pHalf, xSel) diff --git a/iBMSC/MainWindow.designer.vb b/iBMSC/MainWindow.designer.vb index 92c8c5d6c..dc1a12048 100644 --- a/iBMSC/MainWindow.designer.vb +++ b/iBMSC/MainWindow.designer.vb @@ -193,6 +193,7 @@ Partial Class MainWindow Me.TVCBPM = New System.Windows.Forms.ToolStripTextBox() Me.BVCCalculate = New System.Windows.Forms.ToolStripButton() Me.BConvertStop = New System.Windows.Forms.ToolStripButton() + Me.BDefineMeasure = New System.Windows.Forms.ToolStripButton() Me.FStatus = New System.Windows.Forms.StatusStrip() Me.FSC = New System.Windows.Forms.ToolStripStatusLabel() Me.FSW = New System.Windows.Forms.ToolStripStatusLabel() @@ -586,7 +587,7 @@ Partial Class MainWindow Me.mnMain.LayoutStyle = System.Windows.Forms.ToolStripLayoutStyle.Flow Me.mnMain.Location = New System.Drawing.Point(0, 0) Me.mnMain.Name = "mnMain" - Me.mnMain.Size = New System.Drawing.Size(952, 23) + Me.mnMain.Size = New System.Drawing.Size(1080, 23) Me.mnMain.TabIndex = 57 ' 'mnFile @@ -1702,17 +1703,17 @@ Partial Class MainWindow Me.pStatus.Dock = System.Windows.Forms.DockStyle.Bottom Me.pStatus.Location = New System.Drawing.Point(0, 759) Me.pStatus.Name = "pStatus" - Me.pStatus.Size = New System.Drawing.Size(952, 22) + Me.pStatus.Size = New System.Drawing.Size(1080, 22) Me.pStatus.TabIndex = 62 ' 'FStatus2 ' Me.FStatus2.AccessibleRole = System.Windows.Forms.AccessibleRole.StatusBar - Me.FStatus2.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.FSSS, Me.FSSL, Me.FSSH, Me.BVCReverse, Me.LblMultiply, Me.TVCM, Me.LblDivide, Me.TVCD, Me.BVCApply, Me.TVCBPM, Me.BVCCalculate, Me.BConvertStop}) + Me.FStatus2.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.FSSS, Me.FSSL, Me.FSSH, Me.BVCReverse, Me.LblMultiply, Me.TVCM, Me.LblDivide, Me.TVCD, Me.BVCApply, Me.TVCBPM, Me.BVCCalculate, Me.BConvertStop, Me.BDefineMeasure}) Me.FStatus2.Location = New System.Drawing.Point(0, 0) Me.FStatus2.Name = "FStatus2" Me.FStatus2.ShowItemToolTips = True - Me.FStatus2.Size = New System.Drawing.Size(952, 22) + Me.FStatus2.Size = New System.Drawing.Size(1080, 22) Me.FStatus2.TabIndex = 0 Me.FStatus2.Text = "Status" Me.FStatus2.Visible = False @@ -1829,6 +1830,17 @@ Partial Class MainWindow Me.BConvertStop.Size = New System.Drawing.Size(115, 20) Me.BConvertStop.Text = "Transform Into Stop" Me.BConvertStop.ToolTipText = "This will move notes within the selection and preserve the selection, given the B" & + "PM value next to this button. Considers center bar." + ' + 'BDefineMeasure + ' + Me.BDefineMeasure.BackColor = System.Drawing.Color.FromArgb(CType(CType(192, Byte), Integer), CType(CType(192, Byte), Integer), CType(CType(255, Byte), Integer)) + Me.BDefineMeasure.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text + Me.BDefineMeasure.ImageTransparentColor = System.Drawing.Color.Magenta + Me.BDefineMeasure.Name = "BDefineMeasure" + Me.BDefineMeasure.Size = New System.Drawing.Size(93, 20) + Me.BDefineMeasure.Text = "Define Measure" + Me.BDefineMeasure.ToolTipText = "This will move notes within the selection and preserve the selection, given the B" & "PM value next to this button. Considers center bar." ' 'FStatus @@ -1838,7 +1850,7 @@ Partial Class MainWindow Me.FStatus.Location = New System.Drawing.Point(0, 0) Me.FStatus.Name = "FStatus" Me.FStatus.ShowItemToolTips = True - Me.FStatus.Size = New System.Drawing.Size(952, 22) + Me.FStatus.Size = New System.Drawing.Size(1080, 22) Me.FStatus.SizingGrip = False Me.FStatus.TabIndex = 62 Me.FStatus.Text = "Status" @@ -1948,11 +1960,11 @@ Partial Class MainWindow Me.ToolStripContainer1.ContentPanel.Controls.Add(Me.SpL) Me.ToolStripContainer1.ContentPanel.Controls.Add(Me.PMainR) Me.ToolStripContainer1.ContentPanel.Controls.Add(Me.PMainL) - Me.ToolStripContainer1.ContentPanel.Size = New System.Drawing.Size(952, 711) + Me.ToolStripContainer1.ContentPanel.Size = New System.Drawing.Size(1080, 711) Me.ToolStripContainer1.Dock = System.Windows.Forms.DockStyle.Fill Me.ToolStripContainer1.Location = New System.Drawing.Point(0, 0) Me.ToolStripContainer1.Name = "ToolStripContainer1" - Me.ToolStripContainer1.Size = New System.Drawing.Size(952, 759) + Me.ToolStripContainer1.Size = New System.Drawing.Size(1080, 759) Me.ToolStripContainer1.TabIndex = 65 Me.ToolStripContainer1.Text = "ToolStripContainer1" ' @@ -1972,7 +1984,7 @@ Partial Class MainWindow Me.PMain.ForeColor = System.Drawing.Color.White Me.PMain.Location = New System.Drawing.Point(5, 0) Me.PMain.Name = "PMain" - Me.PMain.Size = New System.Drawing.Size(942, 711) + Me.PMain.Size = New System.Drawing.Size(1070, 711) Me.PMain.TabIndex = 58 Me.PMain.Tag = "1" ' @@ -1984,7 +1996,7 @@ Partial Class MainWindow Me.PMainIn.ForeColor = System.Drawing.Color.White Me.PMainIn.Location = New System.Drawing.Point(0, 0) Me.PMainIn.Name = "PMainIn" - Me.PMainIn.Size = New System.Drawing.Size(925, 694) + Me.PMainIn.Size = New System.Drawing.Size(1053, 694) Me.PMainIn.TabIndex = 0 Me.PMainIn.TabStop = True Me.PMainIn.Tag = "1" @@ -1994,7 +2006,7 @@ Partial Class MainWindow Me.MainPanelScroll.AccessibleRole = System.Windows.Forms.AccessibleRole.ScrollBar Me.MainPanelScroll.Dock = System.Windows.Forms.DockStyle.Right Me.MainPanelScroll.LargeChange = 592 - Me.MainPanelScroll.Location = New System.Drawing.Point(925, 0) + Me.MainPanelScroll.Location = New System.Drawing.Point(1053, 0) Me.MainPanelScroll.Maximum = 591 Me.MainPanelScroll.Minimum = -10000 Me.MainPanelScroll.Name = "MainPanelScroll" @@ -2011,7 +2023,7 @@ Partial Class MainWindow Me.HS.Location = New System.Drawing.Point(0, 694) Me.HS.Maximum = 1233 Me.HS.Name = "HS" - Me.HS.Size = New System.Drawing.Size(942, 17) + Me.HS.Size = New System.Drawing.Size(1070, 17) Me.HS.TabIndex = 3 Me.HS.Tag = "1" ' @@ -2020,7 +2032,7 @@ Partial Class MainWindow Me.SpR.Dock = System.Windows.Forms.DockStyle.Right Me.SpR.FlatAppearance.BorderSize = 0 Me.SpR.FlatStyle = System.Windows.Forms.FlatStyle.Flat - Me.SpR.Location = New System.Drawing.Point(947, 0) + Me.SpR.Location = New System.Drawing.Point(1075, 0) Me.SpR.Name = "SpR" Me.SpR.Size = New System.Drawing.Size(5, 711) Me.SpR.TabIndex = 59 @@ -2050,7 +2062,7 @@ Partial Class MainWindow Me.PMainR.Dock = System.Windows.Forms.DockStyle.Right Me.PMainR.Font = New System.Drawing.Font("Verdana", 9.0!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) Me.PMainR.ForeColor = System.Drawing.Color.White - Me.PMainR.Location = New System.Drawing.Point(952, 0) + Me.PMainR.Location = New System.Drawing.Point(1080, 0) Me.PMainR.Name = "PMainR" Me.PMainR.Size = New System.Drawing.Size(0, 711) Me.PMainR.TabIndex = 56 @@ -2152,7 +2164,7 @@ Partial Class MainWindow Me.POptionsResizer.Dock = System.Windows.Forms.DockStyle.Right Me.POptionsResizer.FlatAppearance.BorderSize = 0 Me.POptionsResizer.FlatStyle = System.Windows.Forms.FlatStyle.Flat - Me.POptionsResizer.Location = New System.Drawing.Point(952, 0) + Me.POptionsResizer.Location = New System.Drawing.Point(1080, 0) Me.POptionsResizer.Name = "POptionsResizer" Me.POptionsResizer.Size = New System.Drawing.Size(6, 781) Me.POptionsResizer.TabIndex = 67 @@ -4134,7 +4146,7 @@ Partial Class MainWindow Me.POptionsScroll.AutoScroll = True Me.POptionsScroll.Controls.Add(Me.POptions) Me.POptionsScroll.Dock = System.Windows.Forms.DockStyle.Right - Me.POptionsScroll.Location = New System.Drawing.Point(958, 0) + Me.POptionsScroll.Location = New System.Drawing.Point(1086, 0) Me.POptionsScroll.Name = "POptionsScroll" Me.POptionsScroll.Size = New System.Drawing.Size(200, 781) Me.POptionsScroll.TabIndex = 28 @@ -4143,7 +4155,7 @@ Partial Class MainWindow ' Me.AllowDrop = True Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None - Me.ClientSize = New System.Drawing.Size(1158, 781) + Me.ClientSize = New System.Drawing.Size(1286, 781) Me.Controls.Add(Me.ToolStripContainer1) Me.Controls.Add(Me.pStatus) Me.Controls.Add(Me.POptionsResizer) @@ -4616,4 +4628,5 @@ Partial Class MainWindow Friend WithEvents POBHRandom As ToolStripMenuItem Friend WithEvents mnShowWaveform As ToolStripMenuItem Friend WithEvents TBShowWaveform As ToolStripButton + Friend WithEvents BDefineMeasure As ToolStripButton End Class diff --git a/iBMSC/MainWindow.resx b/iBMSC/MainWindow.resx index 904a69974..9b83bec27 100644 --- a/iBMSC/MainWindow.resx +++ b/iBMSC/MainWindow.resx @@ -146,42 +146,42 @@ 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 - +x+PUiS+cgYymQAAAABJRU5ErkJggg== + iBEElbCgvASi2Gq31tnVsVpRa3XTKtgA8gjyfgYMryQQHuEVIDGACtQiopT1hVhbJeGhq7X+Qet37y+k + 0BTsgDvTM/OZ3+Tmd8/5nnPvPfdHo0wcSDNR8dimKh7NVDfwexqPRzPO2M+ck8OztsjnvTVfP/z7GZV5 + Do9hEf3R4tCoA7ZnZPwVh5oSmSF1X7y+poI34620FTS6/lWaV8Mfyjx4Rs89qo3gXkWoNMK6CmOsKzOG + m4xQYoz1pbOq9K9PzaiyU5lH77dNjDtkj2qBM9qyWH0tScziCynWH7YkMm3rom1mUe965BiN1D/NR/0P + oklp/KEQbhI62DzGDPK6ETVnShZIo5mURrE+rUlwwTVpIO7kvDtyuypo8Gal/50rxe6qav7CCPHRN2wp + AXVPzyJ++ENED+0wIG5oFxREhFsxHa+8QfszjT3N/dScYrO9PdNJw+fteD7cfhDa1n3oVYTiUoEn5Hyb + m6LDC8OZvBk/1jwW4vTQTpwaDDEgeug9nQDXIjpoM2gM2gKaud711Kw+6i/uTUnWVX01QQ8H2vdD074X + 3ZWhaMr+O6ri16LoKOu747w3n1d9k/DbAgroMH+VZkkkUMswdavlmS9QJ74T1lvv/02faie65duhzvbB + OSEH/1GH4KpiCypFrpBISMlb/V4oYG3+SwooDqDNVAssna6VbDx/WeKNppzR4Jflvnh4cxeGr+/CzXNc + VKduRJp4A/g9vojoD5oo4CwRYP4SAihribR+pYq/MEEWvuxBzRlXXG/i6oJrWrdh4MI2aC6E4paKi7p8 + TwhSnPHFtc0TBeSavbwAyoo++auz6NDChMLP7B92Nwbh0a3d0J7fBm1jMLT1IdCotqGnPAA1uRuRLHXH + qTYvAwFs4agABlt3FKduHIW5hF1r9BPVZAJzZ+LESQZqC93R27IN/edDoVUEQyMLwGD5FmhqubhVG4Ky + JFck5LFx6oYfIjWhUDwlArLNsDrDFKvTTOGcSkimwymRcIaOVQJCHB1r4l+V68OOm4fM6FnNk1xQ57zm + YTbkt2MhFm1FTZI77jSTJVCHYqAsEBqRL7QFfugv2YIb5HetyBNxaU4Iv+QN6WMBasl8yseLqH9aAMfT + ZqRZ6frEeLOiBMgfZyNyYCfCNVwdESpPpOS5okHEwXV5IKkCF9p8P2gzfTCQvRma0iD0FPmhItUNCVI3 + fNbmiRP9IWPzfw1fuwM13+fBIdoMJORrBs3KnQio+G8mPn8Qgk/u+4zx76/WIzaWBYVwA+42boWGZK7N + 3IT+BC8MppJnYSBuyYMgS3ZFVJojjn3taTD/l/AeBKHqiRAOkToBfyOMNytKQNmjdBy/H4iwbznj9G7E + 0TY3xOetRgVpSLcqg6CVkQ2Z7ANtnJfu2V8QgJ5iP1SLNiI6axWONLsY+tDz6Xf+qCRVtufrBDAI4xt1 + ncz4WenDNBy554t9d9dPIEzhjNMpDlCQNb8u8YeGZK5NGhUxQImREBFifxTErgdf7IfDnVx8dJtj4OPQ + vU0oJ1W2P6UTYEEwFCAdTsHHd73xz17XSdnf7gJ+zHLIye7vIydBU0BEJJIKxHAwlOKFb/OC0Vx4AEX5 + 0YiTRCOsI8hwfh8HpaTKrIhJBJD7/Jl4KAkf39mMPb0bJucmyaTeEVG5jqgQrMUNkvWgdAsGk7xwV+CH + zoy9aCzLhFJZB4W6HgI5H4db3hubf+COD6TDqWCdNJ9EQCkRMJgM8dBvk645gX/VshAeswx1ZM1vlATi + njAYl9P3QpkrgLJehS87rqKj4zJKSsuQW52Fsz1JKNKMzi8ZTsfKEzoBhntgfSlpRGLjn9YWm2BtoQnY + +QSRCdbkEYQmcMkxhUuWKQoGzmBnNxvvt9ghXGCDwkgPnBcfgLI8Sxf8SucVtLW2Q9l4Di0tF1EkKUTY + qd3wCLfQZU4Ft/4HXU1CGp4CyvTNYTaB+pNSSJVpDEaG6YhIK8C7Pc4IvGaLnWUL8bnQC9L8eKjVDfjq + cjdaL7ahpfkCVKpmyBVKyNKzIN29+/tMV3fhwdmz/fV+Kf9/Ikz4aDHSNwdKGVWeUcjFwmAT0kxH8jRx + 2NrtCN+uJTreb/JCfIEAqqZmdF25isYGFRqVajSQZ35WLuRHj6OTy4XSxUUjXbIkPc7a2noejTaT+DXs + hFMxRqrpSG5/LIKusuDduUiH3yU7fHBuEwRlp1FeLsdFUv6qBiVEWUI0HDqCrtDt6PP1RQ+HgwsuLn1F + TGam0NJyhd7l9IyRTB/J6Y9BQJcdOB1WY3h/uRh76rgQVmSjtEwGaXomJGGH0eQfgE4PD3xN6CKcZ7NR + sXTpfcnSpR/waDQz4nKaFUgkAh7EwP/Kcnh2vGNAQAcLaZdicSwyDLw9+35UeftA6eQEJYsFlaMjlIQG + goJQYWcXmWhhwRCTj2G966kZ48yLBfh2LkPm3RhwIqyQ4eYmlbNYT9ROzqhbuRJk7cFbufJ5rb09ZMuX + Q2xjw0ubP382OYvTrIBgVAD36ir4ddoaENzlAGp57CNm4tjcOdulzMXiOgeHB3IiQEwElNvZQbZs2bPC + JUta8xYvpk7D9IJTxoinj+T1x0NINuJknNUkwP7kTOqLaIFgwYLlhYsWSWVM5qMqknkJyZwEb8tdtGhT + mpXV63qX0zPnuFlljjyz59R9Tl2p1K1GXSxUb/9Vk5nHnjv3j/lWVqslNjYHSdnTi2xsokjmwWSMCj79 + 7H82fbN6jTBZs/q5yVD/65pMxrx5c1Lefts+ydLyTTGTSe38/9so9ROb1TjU+FiTIcfNmApM7fiJm45G + +x90PiS8ZE88EwAAAABJRU5ErkJggg== @@ -190,12 +190,6 @@ 931, 2 - - 1022, 2 - - - 931, 2 - 1120, 2 diff --git a/iBMSC/My Project/AssemblyInfo.vb b/iBMSC/My Project/AssemblyInfo.vb index 22bea7383..d813cb898 100644 --- a/iBMSC/My Project/AssemblyInfo.vb +++ b/iBMSC/My Project/AssemblyInfo.vb @@ -33,7 +33,7 @@ Imports System.Runtime.InteropServices ' by using the '*' as shown below: ' - - + + \ No newline at end of file diff --git a/iBMSC/PanelEvents.vb b/iBMSC/PanelEvents.vb index acb408894..f10ec97d1 100644 --- a/iBMSC/PanelEvents.vb +++ b/iBMSC/PanelEvents.vb @@ -129,6 +129,9 @@ Partial Public Class MainWindow CalculateTotalPlayableNotes() RefreshPanelAll() + Case Keys.Insert + If TBTimeSelect.Checked Then BDefineMeasure_Click(BDefineMeasure, New System.EventArgs) + Case Keys.Delete mnDelete_Click(mnDelete, New System.EventArgs) diff --git a/iBMSC/TimeSelectionOps.vb b/iBMSC/TimeSelectionOps.vb index cf530e88a..cac40578c 100644 --- a/iBMSC/TimeSelectionOps.vb +++ b/iBMSC/TimeSelectionOps.vb @@ -38,6 +38,36 @@ Partial Public Class MainWindow ' Case 2 : PMainInR.Focus() 'End Select End Sub + Private Sub BConvertStop_Click(sender As Object, e As EventArgs) Handles BConvertStop.Click + SortByVPositionInsertion() + ConvertAreaToStop() + + SortByVPositionInsertion() + UpdatePairing() + RefreshPanelAll() + POStatusRefresh() + + Beep() + TVCBPM.Focus() + End Sub + + Private Sub BDefineMeasure_Click(sender As Object, e As EventArgs) Handles BDefineMeasure.Click + If Not TBTimeSelect.Checked Then Exit Sub + + ' Me.RedoRemoveNote(Notes(xI0), xUndo, xRedo) + ' RemoveNote(xI0) + + SortByVPositionInsertion() + AddOrRemoveMeasureLine() + + SortByVPositionInsertion() + UpdatePairing() + RefreshPanelAll() + POStatusRefresh() + + Beep() + TVCBPM.Focus() + End Sub Private Sub BPMChangeTop(ByVal xRatio As Double, Optional ByVal bAddUndo As Boolean = True, Optional ByVal bOverWriteUndo As Boolean = False) 'Dim xUndo As String = vbCrLf @@ -664,17 +694,92 @@ EndOfAdjustment: End Sub - Private Sub BConvertStop_Click(sender As Object, e As EventArgs) Handles BConvertStop.Click - SortByVPositionInsertion() - ConvertAreaToStop() + Private Sub AddOrRemoveMeasureLine() + Dim xUndo As UndoRedo.LinkedURCmd = Nothing + Dim xRedo As UndoRedo.LinkedURCmd = New UndoRedo.Void + Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo - SortByVPositionInsertion() - UpdatePairing() - RefreshPanelAll() - POStatusRefresh() + Dim xMeasureLengthBefore = MeasureLength.Clone + ' TODO: Incorporate MeasureAtDisplacement + + If vSelLength = 0 Then + For xIM = 1 To UBound(MeasureLength) + If vSelStart = MeasureBottom(xIM) Then + RemoveMeasureLine(xIM) + GoTo EndOfSub + ElseIf vSelStart < MeasureBottom(xIM) Then + AddMeasureLine(vSelStart) + GoTo EndOfSub + End If + Next + Else + Dim xVLower As Double = IIf(vSelLength > 0, vSelStart, vSelStart + vSelLength) + Dim xVUpper As Double = IIf(vSelLength < 0, vSelStart, vSelStart + vSelLength) + Dim xIML As Integer = -1 + Dim xIMU As Integer = -1 + + For xIM = 1 To UBound(MeasureLength) + ' Find the lowest measure higher than or equal to xVLower + If xIML = -1 AndAlso xVLower <= MeasureBottom(xIM) Then xIML = xIM + ' Find the highest measure lower than or equal xVUpper + If xVUpper = MeasureBottom(xIM) Then + xIMU = xIM + Exit For + ElseIf xVUpper < MeasureBottom(xIM) Then + xIMU = xIM - 1 + Exit For + End If + Next - Beep() - TVCBPM.Focus() + ' Remove measure lines inside selection + For i = xIMU To xIML Step -1 + RemoveMeasureLine(i) + Next + + ' Add measure lines at vSelStart and vSelStart + vSelLength + AddMeasureLine(xVLower) + AddMeasureLine(xVUpper) + End If + +EndOfSub: + RedoChangeMeasure(xMeasureLengthBefore, MeasureLength.Clone, xUndo, xRedo) + AddUndo(xUndo, xBaseRedo.Next) End Sub + Private Sub AddMeasureLine(ByVal vPos As Integer) + For xIM = 1 To UBound(MeasureLength) + If vPos < MeasureBottom(xIM) Then + For xIM2 = UBound(MeasureLength) To xIM + 1 Step -1 + MeasureLength(xIM2) = MeasureLength(xIM2 - 1) + Next + MeasureLength(xIM) = MeasureBottom(xIM) - vPos + MeasureLength(xIM - 1) = vPos - MeasureBottom(xIM - 1) + Exit For + End If + Next + + For xILB = 0 To 999 + Dim a As Double = MeasureLength(xILB) / 192.0R + Dim xxD = GetDenominator(a) + LBeat.Items(xILB) = Add3Zeros(xILB) & ": " & a & IIf(xxD > 10000, "", " ( " & CLng(a * xxD) & " / " & xxD & " ) ") + Next + + UpdateMeasureBottom() + End Sub + + Private Sub RemoveMeasureLine(ByVal xIM As Integer) + MeasureLength(xIM - 1) += MeasureLength(xIM) + For xIM2 = xIM To UBound(MeasureLength) - 1 + MeasureLength(xIM2) = MeasureLength(xIM2 + 1) + Next + MeasureLength(UBound(MeasureLength)) = 192.0R + + For xILB = 0 To 999 + Dim a As Double = MeasureLength(xILB) / 192.0R + Dim xxD = GetDenominator(a) + LBeat.Items(xILB) = Add3Zeros(xILB) & ": " & a & IIf(xxD > 10000, "", " ( " & CLng(a * xxD) & " / " & xxD & " ) ") + Next + + UpdateMeasureBottom() + End Sub End Class diff --git a/iBMSC/UndoRedo.vb b/iBMSC/UndoRedo.vb index 7a69484f7..05346d4d4 100644 --- a/iBMSC/UndoRedo.vb +++ b/iBMSC/UndoRedo.vb @@ -15,6 +15,7 @@ Public Class UndoRedo Public Const opNT As Byte = 18 'Public Const opChangeVisibleColumns As Byte = 19 Public Const opWavAutoincFlag As Byte = 20 + Public Const opChangeMeasure As Byte = 21 Public Const opNoOperation As Byte = 255 @@ -51,6 +52,7 @@ Public Class UndoRedo Case opNT : Return New NT(b) 'Case opChangeVisibleColumns : Return New ChangeVisibleColumns(b) Case opWavAutoincFlag : Return New WavAutoincFlag(b) + Case opChangeMeasure : Return New ChangeMeasure(b) Case opNoOperation : Return New NoOperation(b) Case Else : Return Nothing End Select @@ -360,7 +362,39 @@ Public Class UndoRedo End Function End Class + Public Class ChangeMeasure : Inherits LinkedURCmd + '1 + 8 * Indices.Length + Public MeasureLength() As Double = {} + Public Overrides Function toBytes() As Byte() + Dim xToBytes() As Byte = {opChangeMeasure} + Dim bitDouble = 8 + ReDim Preserve xToBytes(1 + bitDouble * MeasureLength.Length) + For xI1 As Integer = 1 To UBound(xToBytes) Step bitDouble + Dim xId() As Byte = BitConverter.GetBytes(MeasureLength((xI1 - 1) \ bitDouble)) + For xIb = 0 To bitDouble - 1 + xToBytes(xI1 + xIb) = xId(xIb) + Next + Next + Return xToBytes + End Function + + Public Sub New(ByVal b() As Byte) + Dim bitDouble = 8 + ReDim Preserve MeasureLength(999) + For xI1 As Integer = 0 To UBound(MeasureLength) + MeasureLength(xI1) = BitConverter.ToInt32(b, 1 + xI1 * bitDouble) + Next + End Sub + + Public Sub New(ByVal xMeasureLength() As Double) + MeasureLength = xMeasureLength + End Sub + + Public Overrides Function ofType() As Byte + Return opChangeMeasure + End Function + End Class Public Class ChangeTimeSelection : Inherits LinkedURCmd '1 + 8 + 8 + 8 + 1 = 26 From bfe3112c972c7b3c84588a7cff2dd2383e5b7937 Mon Sep 17 00:00:00 2001 From: psyk2642 <60137590+psyk2642@users.noreply.github.com> Date: Tue, 29 Mar 2022 00:38:16 +0800 Subject: [PATCH 089/257] Define Measure small update --- iBMSC/EditorUndoRedo.vb | 3 +++ 1 file changed, 3 insertions(+) diff --git a/iBMSC/EditorUndoRedo.vb b/iBMSC/EditorUndoRedo.vb index b966e524d..c8abdcb8a 100644 --- a/iBMSC/EditorUndoRedo.vb +++ b/iBMSC/EditorUndoRedo.vb @@ -108,6 +108,9 @@ Partial Public Class MainWindow Dim xCmd As UndoRedo.ChangeMeasure = sCmd For xIM = 0 To UBound(xCmd.MeasureLength) MeasureLength(xIM) = xCmd.MeasureLength(xIM) + Dim a As Double = MeasureLength(xIM) / 192.0R + Dim xxD = GetDenominator(a) + LBeat.Items(xIM) = Add3Zeros(xIM) & ": " & a & IIf(xxD > 10000, "", " ( " & CLng(a * xxD) & " / " & xxD & " ) ") Next UpdateMeasureBottom() From 0b2d6c2f3c7a467a263523b41f26e49a129f2c42 Mon Sep 17 00:00:00 2001 From: psyk2642 <60137590+psyk2642@users.noreply.github.com> Date: Tue, 29 Mar 2022 23:47:33 +0800 Subject: [PATCH 090/257] LN snapping slight fix --- iBMSC/PanelEvents.vb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/iBMSC/PanelEvents.vb b/iBMSC/PanelEvents.vb index f10ec97d1..bb3deff05 100644 --- a/iBMSC/PanelEvents.vb +++ b/iBMSC/PanelEvents.vb @@ -1168,14 +1168,14 @@ Partial Public Class MainWindow ElseIf bAdjustUpper Then 'If adjusting upper end Dim dVPosition = mouseVPosition - Notes(xITemp).VPosition - Notes(xITemp).Length 'delta Length '< 0 means shorten, > 0 means lengthen - If foundNoteIndex > -1 Then dVPosition = Notes(foundNoteIndex).VPosition - Notes(xITemp).VPosition - Notes(xITemp).Length + If foundNoteIndex > -1 AndAlso foundNoteIndex <> xITemp Then dVPosition = Notes(foundNoteIndex).VPosition - Notes(xITemp).VPosition - Notes(xITemp).Length OnAdjustUpperEnd(dVPosition) Else 'If adjusting lower end Dim dVPosition = mouseVPosition - Notes(xITemp).VPosition 'delta VPosition '> 0 means shorten, < 0 means lengthen - If foundNoteIndex > -1 Then dVPosition = Notes(foundNoteIndex).VPosition - Notes(xITemp).VPosition + If foundNoteIndex > -1 AndAlso foundNoteIndex <> xITemp Then dVPosition = Notes(foundNoteIndex).VPosition - Notes(xITemp).VPosition OnAdjustLowerEnd(dVPosition) End If From 81c6e62af9bbbea6e25908f667aba67bb4de2cc3 Mon Sep 17 00:00:00 2001 From: psyk2642 <60137590+psyk2642@users.noreply.github.com> Date: Wed, 30 Mar 2022 00:03:12 +0800 Subject: [PATCH 091/257] Added insert space + miscellaneous Added "Insert/Remove Space" in Time Selection Tool. Allows inserting space into the measure, either measure only, notes only or both. Also accessible via Ctrl+Insert, Shift+Insert and Ctrl+Shift+Insert respectively. --- README.md | 2 + iBMSC/MainWindow.designer.vb | 137 ++++++++++++++++++++------------ iBMSC/MainWindow.resx | 72 ++++++++--------- iBMSC/MainWindow.vb | 1 + iBMSC/PanelEvents.vb | 14 +++- iBMSC/TimeSelectionOps.vb | 147 +++++++++++++++++++++++++++++++++-- 6 files changed, 279 insertions(+), 94 deletions(-) diff --git a/README.md b/README.md index 229a02648..accc1af61 100644 --- a/README.md +++ b/README.md @@ -32,6 +32,7 @@ Listed in the order added. * When creating LNs in NT mode, the VPosition will snap to the highlighted note if any. * Added "Show Waveform on Notes". * Added "Define Measure" in Time Selection Tool. Allows defining a custom measure, add a measure line or remove measure lines. Also accessible via the Insert key while Time Selection Tool is selected. +* Added "Insert/Remove Space" in Time Selection Tool. Allows inserting space into the measure, either measure only, notes only or both. Also accessible via Ctrl+Insert, Shift+Insert and Ctrl+Shift+Insert respectively. ## Keyboard shortcuts * Changed keybinding to allow note placement between D1 and D8: @@ -64,6 +65,7 @@ Listed in the order added. * For example, Shift+Alt+Comma = divide the sub value by 3 (rounded) * Added shortcut for scrolling through #WAV selection (Shift+Scroll). * Added shortcut for defining measures with Time Selection Tool (Insert). +* Added shortcut for inserting/removing space with Time Selection Tool (Ctrl+Insert for measure only, Shift+Insert for notes only, and Ctrl+Shift+Insert for both) ## New dialog/option boxes diff --git a/iBMSC/MainWindow.designer.vb b/iBMSC/MainWindow.designer.vb index dc1a12048..512630239 100644 --- a/iBMSC/MainWindow.designer.vb +++ b/iBMSC/MainWindow.designer.vb @@ -25,16 +25,16 @@ Partial Class MainWindow Me.TBLangDef = New System.Windows.Forms.ToolStripMenuItem() Me.TBLangRefresh = New System.Windows.Forms.ToolStripMenuItem() Me.ToolStripSeparator9 = New System.Windows.Forms.ToolStripSeparator() - Me.TBLanguage = New System.Windows.Forms.ToolStripDropDownButton() Me.mnLanguage = New System.Windows.Forms.ToolStripMenuItem() + Me.TBLanguage = New System.Windows.Forms.ToolStripDropDownButton() Me.cmnTheme = New System.Windows.Forms.ContextMenuStrip(Me.components) Me.TBThemeDef = New System.Windows.Forms.ToolStripMenuItem() Me.TBThemeSave = New System.Windows.Forms.ToolStripMenuItem() Me.TBThemeRefresh = New System.Windows.Forms.ToolStripMenuItem() Me.TBThemeLoadComptability = New System.Windows.Forms.ToolStripMenuItem() Me.ToolStripSeparator6 = New System.Windows.Forms.ToolStripSeparator() - Me.mnTheme = New System.Windows.Forms.ToolStripMenuItem() Me.TBTheme = New System.Windows.Forms.ToolStripDropDownButton() + Me.mnTheme = New System.Windows.Forms.ToolStripMenuItem() Me.Timer1 = New System.Windows.Forms.Timer(Me.components) Me.Menu1 = New System.Windows.Forms.ContextMenuStrip(Me.components) Me.MInsert = New System.Windows.Forms.ToolStripMenuItem() @@ -127,11 +127,11 @@ Partial Class MainWindow Me.POBSRandom = New System.Windows.Forms.ToolStripMenuItem() Me.POBHRandom = New System.Windows.Forms.ToolStripMenuItem() Me.POBSort = New System.Windows.Forms.ToolStripMenuItem() + Me.POConvert = New System.Windows.Forms.ToolStripDropDownButton() Me.mnPreview = New System.Windows.Forms.ToolStripMenuItem() Me.mnPlayB = New System.Windows.Forms.ToolStripMenuItem() Me.mnPlay = New System.Windows.Forms.ToolStripMenuItem() Me.mnStop = New System.Windows.Forms.ToolStripMenuItem() - Me.POConvert = New System.Windows.Forms.ToolStripDropDownButton() Me.TBMain = New System.Windows.Forms.ToolStrip() Me.TBNew = New System.Windows.Forms.ToolStripButton() Me.TBOpen = New System.Windows.Forms.ToolStripSplitButton() @@ -194,6 +194,9 @@ Partial Class MainWindow Me.BVCCalculate = New System.Windows.Forms.ToolStripButton() Me.BConvertStop = New System.Windows.Forms.ToolStripButton() Me.BDefineMeasure = New System.Windows.Forms.ToolStripButton() + Me.BInsertOrRemoveSpaceMN = New System.Windows.Forms.ToolStripButton() + Me.BInsertOrRemoveSpaceM = New System.Windows.Forms.ToolStripButton() + Me.BInsertOrRemoveSpaceN = New System.Windows.Forms.ToolStripButton() Me.FStatus = New System.Windows.Forms.StatusStrip() Me.FSC = New System.Windows.Forms.ToolStripStatusLabel() Me.FSW = New System.Windows.Forms.ToolStripStatusLabel() @@ -453,7 +456,7 @@ Partial Class MainWindow ' Me.cmnLanguage.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.TBLangDef, Me.TBLangRefresh, Me.ToolStripSeparator9}) Me.cmnLanguage.Name = "cmnLanguage" - Me.cmnLanguage.OwnerItem = Me.mnLanguage + Me.cmnLanguage.OwnerItem = Me.TBLanguage Me.cmnLanguage.Size = New System.Drawing.Size(121, 54) ' 'TBLangDef @@ -474,6 +477,14 @@ Partial Class MainWindow Me.ToolStripSeparator9.Name = "ToolStripSeparator9" Me.ToolStripSeparator9.Size = New System.Drawing.Size(117, 6) ' + 'mnLanguage + ' + Me.mnLanguage.DropDown = Me.cmnLanguage + Me.mnLanguage.Image = Global.iBMSC.My.Resources.Resources.x16Language + Me.mnLanguage.Name = "mnLanguage" + Me.mnLanguage.Size = New System.Drawing.Size(253, 22) + Me.mnLanguage.Text = "&Language" + ' 'TBLanguage ' Me.TBLanguage.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image @@ -484,19 +495,11 @@ Partial Class MainWindow Me.TBLanguage.Size = New System.Drawing.Size(29, 22) Me.TBLanguage.Text = "Language" ' - 'mnLanguage - ' - Me.mnLanguage.DropDown = Me.cmnLanguage - Me.mnLanguage.Image = Global.iBMSC.My.Resources.Resources.x16Language - Me.mnLanguage.Name = "mnLanguage" - Me.mnLanguage.Size = New System.Drawing.Size(253, 22) - Me.mnLanguage.Text = "&Language" - ' 'cmnTheme ' Me.cmnTheme.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.TBThemeDef, Me.TBThemeSave, Me.TBThemeRefresh, Me.TBThemeLoadComptability, Me.ToolStripSeparator6}) Me.cmnTheme.Name = "cmnLanguage" - Me.cmnTheme.OwnerItem = Me.TBTheme + Me.cmnTheme.OwnerItem = Me.mnTheme Me.cmnTheme.Size = New System.Drawing.Size(246, 98) ' 'TBThemeDef @@ -530,14 +533,6 @@ Partial Class MainWindow Me.ToolStripSeparator6.Name = "ToolStripSeparator6" Me.ToolStripSeparator6.Size = New System.Drawing.Size(242, 6) ' - 'mnTheme - ' - Me.mnTheme.DropDown = Me.cmnTheme - Me.mnTheme.Image = Global.iBMSC.My.Resources.Resources.x16Theme - Me.mnTheme.Name = "mnTheme" - Me.mnTheme.Size = New System.Drawing.Size(253, 22) - Me.mnTheme.Text = "&Theme" - ' 'TBTheme ' Me.TBTheme.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image @@ -548,6 +543,14 @@ Partial Class MainWindow Me.TBTheme.Size = New System.Drawing.Size(29, 22) Me.TBTheme.Text = "Theme" ' + 'mnTheme + ' + Me.mnTheme.DropDown = Me.cmnTheme + Me.mnTheme.Image = Global.iBMSC.My.Resources.Resources.x16Theme + Me.mnTheme.Name = "mnTheme" + Me.mnTheme.Size = New System.Drawing.Size(253, 22) + Me.mnTheme.Text = "&Theme" + ' 'Timer1 ' Me.Timer1.Interval = 15 @@ -587,7 +590,7 @@ Partial Class MainWindow Me.mnMain.LayoutStyle = System.Windows.Forms.ToolStripLayoutStyle.Flow Me.mnMain.Location = New System.Drawing.Point(0, 0) Me.mnMain.Name = "mnMain" - Me.mnMain.Size = New System.Drawing.Size(1080, 23) + Me.mnMain.Size = New System.Drawing.Size(1267, 23) Me.mnMain.TabIndex = 57 ' 'mnFile @@ -1146,7 +1149,6 @@ Partial Class MainWindow ' Me.cmnConversion.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.POBLong, Me.POBShort, Me.POBLongShort, Me.ToolStripSeparator10, Me.POBHidden, Me.POBVisible, Me.POBHiddenVisible, Me.ToolStripSeparator11, Me.POBModify, Me.POBMirror, Me.POBFlip, Me.POBRandom, Me.POBRRandom, Me.POBSRandom, Me.POBHRandom, Me.POBSort}) Me.cmnConversion.Name = "cmnLanguage" - Me.cmnConversion.OwnerItem = Me.POConvert Me.cmnConversion.Size = New System.Drawing.Size(222, 324) ' 'POBLong @@ -1259,6 +1261,16 @@ Partial Class MainWindow Me.POBSort.Size = New System.Drawing.Size(221, 22) Me.POBSort.Text = "S&ort" ' + 'POConvert + ' + Me.POConvert.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image + Me.POConvert.DropDown = Me.cmnConversion + Me.POConvert.Image = Global.iBMSC.My.Resources.Resources.ConvertNotes + Me.POConvert.ImageTransparentColor = System.Drawing.Color.Magenta + Me.POConvert.Name = "POConvert" + Me.POConvert.Size = New System.Drawing.Size(29, 22) + Me.POConvert.Text = "Convert Notes" + ' 'mnPreview ' Me.mnPreview.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.mnPlayB, Me.mnPlay, Me.mnStop}) @@ -1290,16 +1302,6 @@ Partial Class MainWindow Me.mnStop.Size = New System.Drawing.Size(201, 22) Me.mnStop.Text = "&Stop" ' - 'POConvert - ' - Me.POConvert.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image - Me.POConvert.DropDown = Me.cmnConversion - Me.POConvert.Image = Global.iBMSC.My.Resources.Resources.ConvertNotes - Me.POConvert.ImageTransparentColor = System.Drawing.Color.Magenta - Me.POConvert.Name = "POConvert" - Me.POConvert.Size = New System.Drawing.Size(29, 22) - Me.POConvert.Text = "Convert Notes" - ' 'TBMain ' Me.TBMain.AccessibleRole = System.Windows.Forms.AccessibleRole.ToolBar @@ -1703,17 +1705,17 @@ Partial Class MainWindow Me.pStatus.Dock = System.Windows.Forms.DockStyle.Bottom Me.pStatus.Location = New System.Drawing.Point(0, 759) Me.pStatus.Name = "pStatus" - Me.pStatus.Size = New System.Drawing.Size(1080, 22) + Me.pStatus.Size = New System.Drawing.Size(1267, 22) Me.pStatus.TabIndex = 62 ' 'FStatus2 ' Me.FStatus2.AccessibleRole = System.Windows.Forms.AccessibleRole.StatusBar - Me.FStatus2.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.FSSS, Me.FSSL, Me.FSSH, Me.BVCReverse, Me.LblMultiply, Me.TVCM, Me.LblDivide, Me.TVCD, Me.BVCApply, Me.TVCBPM, Me.BVCCalculate, Me.BConvertStop, Me.BDefineMeasure}) + Me.FStatus2.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.FSSS, Me.FSSL, Me.FSSH, Me.BVCReverse, Me.LblMultiply, Me.TVCM, Me.LblDivide, Me.TVCD, Me.BVCApply, Me.TVCBPM, Me.BVCCalculate, Me.BConvertStop, Me.BDefineMeasure, Me.BInsertOrRemoveSpaceMN, Me.BInsertOrRemoveSpaceM, Me.BInsertOrRemoveSpaceN}) Me.FStatus2.Location = New System.Drawing.Point(0, 0) Me.FStatus2.Name = "FStatus2" Me.FStatus2.ShowItemToolTips = True - Me.FStatus2.Size = New System.Drawing.Size(1080, 22) + Me.FStatus2.Size = New System.Drawing.Size(1267, 22) Me.FStatus2.TabIndex = 0 Me.FStatus2.Text = "Status" Me.FStatus2.Visible = False @@ -1834,14 +1836,44 @@ Partial Class MainWindow ' 'BDefineMeasure ' - Me.BDefineMeasure.BackColor = System.Drawing.Color.FromArgb(CType(CType(192, Byte), Integer), CType(CType(192, Byte), Integer), CType(CType(255, Byte), Integer)) + Me.BDefineMeasure.BackColor = System.Drawing.Color.FromArgb(CType(CType(192, Byte), Integer), CType(CType(255, Byte), Integer), CType(CType(255, Byte), Integer)) Me.BDefineMeasure.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text Me.BDefineMeasure.ImageTransparentColor = System.Drawing.Color.Magenta Me.BDefineMeasure.Name = "BDefineMeasure" Me.BDefineMeasure.Size = New System.Drawing.Size(93, 20) Me.BDefineMeasure.Text = "Define Measure" - Me.BDefineMeasure.ToolTipText = "This will move notes within the selection and preserve the selection, given the B" & - "PM value next to this button. Considers center bar." + Me.BDefineMeasure.ToolTipText = "This will allow you to create/remove/define measures." + ' + 'BInsertOrRemoveSpaceMN + ' + Me.BInsertOrRemoveSpaceMN.BackColor = System.Drawing.Color.FromArgb(CType(CType(192, Byte), Integer), CType(CType(255, Byte), Integer), CType(CType(192, Byte), Integer)) + Me.BInsertOrRemoveSpaceMN.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text + Me.BInsertOrRemoveSpaceMN.ImageTransparentColor = System.Drawing.Color.Magenta + Me.BInsertOrRemoveSpaceMN.Name = "BInsertOrRemoveSpaceMN" + Me.BInsertOrRemoveSpaceMN.Size = New System.Drawing.Size(122, 20) + Me.BInsertOrRemoveSpaceMN.Text = "Insert/Remove Space" + Me.BInsertOrRemoveSpaceMN.ToolTipText = "This will insert/remove space at the bottom of your selection." + ' + 'BInsertOrRemoveSpaceM + ' + Me.BInsertOrRemoveSpaceM.BackColor = System.Drawing.Color.FromArgb(CType(CType(192, Byte), Integer), CType(CType(255, Byte), Integer), CType(CType(192, Byte), Integer)) + Me.BInsertOrRemoveSpaceM.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text + Me.BInsertOrRemoveSpaceM.ImageTransparentColor = System.Drawing.Color.Magenta + Me.BInsertOrRemoveSpaceM.Name = "BInsertOrRemoveSpaceM" + Me.BInsertOrRemoveSpaceM.Size = New System.Drawing.Size(92, 20) + Me.BInsertOrRemoveSpaceM.Text = "(Measure Only)" + Me.BInsertOrRemoveSpaceM.ToolTipText = "This will insert/remove measure length at the bottom of your selection." + ' + 'BInsertOrRemoveSpaceN + ' + Me.BInsertOrRemoveSpaceN.BackColor = System.Drawing.Color.FromArgb(CType(CType(192, Byte), Integer), CType(CType(255, Byte), Integer), CType(CType(192, Byte), Integer)) + Me.BInsertOrRemoveSpaceN.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text + Me.BInsertOrRemoveSpaceN.ImageTransparentColor = System.Drawing.Color.Magenta + Me.BInsertOrRemoveSpaceN.Name = "BInsertOrRemoveSpaceN" + Me.BInsertOrRemoveSpaceN.Size = New System.Drawing.Size(78, 20) + Me.BInsertOrRemoveSpaceN.Text = "(Notes Only)" + Me.BInsertOrRemoveSpaceN.ToolTipText = "This will insert/remove space at the bottom of your time selection for the notes." & + "" ' 'FStatus ' @@ -1850,7 +1882,7 @@ Partial Class MainWindow Me.FStatus.Location = New System.Drawing.Point(0, 0) Me.FStatus.Name = "FStatus" Me.FStatus.ShowItemToolTips = True - Me.FStatus.Size = New System.Drawing.Size(1080, 22) + Me.FStatus.Size = New System.Drawing.Size(1267, 22) Me.FStatus.SizingGrip = False Me.FStatus.TabIndex = 62 Me.FStatus.Text = "Status" @@ -1960,11 +1992,11 @@ Partial Class MainWindow Me.ToolStripContainer1.ContentPanel.Controls.Add(Me.SpL) Me.ToolStripContainer1.ContentPanel.Controls.Add(Me.PMainR) Me.ToolStripContainer1.ContentPanel.Controls.Add(Me.PMainL) - Me.ToolStripContainer1.ContentPanel.Size = New System.Drawing.Size(1080, 711) + Me.ToolStripContainer1.ContentPanel.Size = New System.Drawing.Size(1267, 711) Me.ToolStripContainer1.Dock = System.Windows.Forms.DockStyle.Fill Me.ToolStripContainer1.Location = New System.Drawing.Point(0, 0) Me.ToolStripContainer1.Name = "ToolStripContainer1" - Me.ToolStripContainer1.Size = New System.Drawing.Size(1080, 759) + Me.ToolStripContainer1.Size = New System.Drawing.Size(1267, 759) Me.ToolStripContainer1.TabIndex = 65 Me.ToolStripContainer1.Text = "ToolStripContainer1" ' @@ -1984,7 +2016,7 @@ Partial Class MainWindow Me.PMain.ForeColor = System.Drawing.Color.White Me.PMain.Location = New System.Drawing.Point(5, 0) Me.PMain.Name = "PMain" - Me.PMain.Size = New System.Drawing.Size(1070, 711) + Me.PMain.Size = New System.Drawing.Size(1257, 711) Me.PMain.TabIndex = 58 Me.PMain.Tag = "1" ' @@ -1996,7 +2028,7 @@ Partial Class MainWindow Me.PMainIn.ForeColor = System.Drawing.Color.White Me.PMainIn.Location = New System.Drawing.Point(0, 0) Me.PMainIn.Name = "PMainIn" - Me.PMainIn.Size = New System.Drawing.Size(1053, 694) + Me.PMainIn.Size = New System.Drawing.Size(1240, 694) Me.PMainIn.TabIndex = 0 Me.PMainIn.TabStop = True Me.PMainIn.Tag = "1" @@ -2006,7 +2038,7 @@ Partial Class MainWindow Me.MainPanelScroll.AccessibleRole = System.Windows.Forms.AccessibleRole.ScrollBar Me.MainPanelScroll.Dock = System.Windows.Forms.DockStyle.Right Me.MainPanelScroll.LargeChange = 592 - Me.MainPanelScroll.Location = New System.Drawing.Point(1053, 0) + Me.MainPanelScroll.Location = New System.Drawing.Point(1240, 0) Me.MainPanelScroll.Maximum = 591 Me.MainPanelScroll.Minimum = -10000 Me.MainPanelScroll.Name = "MainPanelScroll" @@ -2023,7 +2055,7 @@ Partial Class MainWindow Me.HS.Location = New System.Drawing.Point(0, 694) Me.HS.Maximum = 1233 Me.HS.Name = "HS" - Me.HS.Size = New System.Drawing.Size(1070, 17) + Me.HS.Size = New System.Drawing.Size(1257, 17) Me.HS.TabIndex = 3 Me.HS.Tag = "1" ' @@ -2032,7 +2064,7 @@ Partial Class MainWindow Me.SpR.Dock = System.Windows.Forms.DockStyle.Right Me.SpR.FlatAppearance.BorderSize = 0 Me.SpR.FlatStyle = System.Windows.Forms.FlatStyle.Flat - Me.SpR.Location = New System.Drawing.Point(1075, 0) + Me.SpR.Location = New System.Drawing.Point(1262, 0) Me.SpR.Name = "SpR" Me.SpR.Size = New System.Drawing.Size(5, 711) Me.SpR.TabIndex = 59 @@ -2062,7 +2094,7 @@ Partial Class MainWindow Me.PMainR.Dock = System.Windows.Forms.DockStyle.Right Me.PMainR.Font = New System.Drawing.Font("Verdana", 9.0!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) Me.PMainR.ForeColor = System.Drawing.Color.White - Me.PMainR.Location = New System.Drawing.Point(1080, 0) + Me.PMainR.Location = New System.Drawing.Point(1267, 0) Me.PMainR.Name = "PMainR" Me.PMainR.Size = New System.Drawing.Size(0, 711) Me.PMainR.TabIndex = 56 @@ -2164,7 +2196,7 @@ Partial Class MainWindow Me.POptionsResizer.Dock = System.Windows.Forms.DockStyle.Right Me.POptionsResizer.FlatAppearance.BorderSize = 0 Me.POptionsResizer.FlatStyle = System.Windows.Forms.FlatStyle.Flat - Me.POptionsResizer.Location = New System.Drawing.Point(1080, 0) + Me.POptionsResizer.Location = New System.Drawing.Point(1267, 0) Me.POptionsResizer.Name = "POptionsResizer" Me.POptionsResizer.Size = New System.Drawing.Size(6, 781) Me.POptionsResizer.TabIndex = 67 @@ -4146,7 +4178,7 @@ Partial Class MainWindow Me.POptionsScroll.AutoScroll = True Me.POptionsScroll.Controls.Add(Me.POptions) Me.POptionsScroll.Dock = System.Windows.Forms.DockStyle.Right - Me.POptionsScroll.Location = New System.Drawing.Point(1086, 0) + Me.POptionsScroll.Location = New System.Drawing.Point(1273, 0) Me.POptionsScroll.Name = "POptionsScroll" Me.POptionsScroll.Size = New System.Drawing.Size(200, 781) Me.POptionsScroll.TabIndex = 28 @@ -4155,7 +4187,7 @@ Partial Class MainWindow ' Me.AllowDrop = True Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None - Me.ClientSize = New System.Drawing.Size(1286, 781) + Me.ClientSize = New System.Drawing.Size(1473, 781) Me.Controls.Add(Me.ToolStripContainer1) Me.Controls.Add(Me.pStatus) Me.Controls.Add(Me.POptionsResizer) @@ -4629,4 +4661,7 @@ Partial Class MainWindow Friend WithEvents mnShowWaveform As ToolStripMenuItem Friend WithEvents TBShowWaveform As ToolStripButton Friend WithEvents BDefineMeasure As ToolStripButton + Friend WithEvents BInsertOrRemoveSpaceM As ToolStripButton + Friend WithEvents BInsertOrRemoveSpaceN As ToolStripButton + Friend WithEvents BInsertOrRemoveSpaceMN As ToolStripButton End Class diff --git a/iBMSC/MainWindow.resx b/iBMSC/MainWindow.resx index 9b83bec27..a404a371d 100644 --- a/iBMSC/MainWindow.resx +++ b/iBMSC/MainWindow.resx @@ -146,42 +146,42 @@ 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 - +x90PiS8ZE88EwAAAABJRU5ErkJggg== + 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 + 7X8VeCS1HzuW3gAAAABJRU5ErkJggg== diff --git a/iBMSC/MainWindow.vb b/iBMSC/MainWindow.vb index 0430b0400..d33942823 100644 --- a/iBMSC/MainWindow.vb +++ b/iBMSC/MainWindow.vb @@ -988,6 +988,7 @@ Public Class MainWindow GhostMode = 0 ReDim hCOM(1295) hCOMNum = 0 + COverrides = Nothing ReDim wLWAV(1295) WaveformLoaded = False diff --git a/iBMSC/PanelEvents.vb b/iBMSC/PanelEvents.vb index bb3deff05..e238cdcc2 100644 --- a/iBMSC/PanelEvents.vb +++ b/iBMSC/PanelEvents.vb @@ -130,7 +130,19 @@ Partial Public Class MainWindow RefreshPanelAll() Case Keys.Insert - If TBTimeSelect.Checked Then BDefineMeasure_Click(BDefineMeasure, New System.EventArgs) + If TBTimeSelect.Checked Then + With My.Computer.Keyboard + If Not .CtrlKeyDown And Not .ShiftKeyDown Then + BDefineMeasure_Click(BDefineMeasure, New System.EventArgs) + ElseIf .CtrlKeyDown And Not .ShiftKeyDown Then + BInsertOrRemoveSpaceM_Click(BInsertOrRemoveSpaceM, New System.EventArgs) + ElseIf Not .CtrlKeyDown And .ShiftKeyDown Then + BInsertOrRemoveSpaceN_Click(BInsertOrRemoveSpaceN, New System.EventArgs) + Else + InsertOrRemoveSpaceMN(sender, New System.EventArgs) + End If + End With + End If Case Keys.Delete mnDelete_Click(mnDelete, New System.EventArgs) diff --git a/iBMSC/TimeSelectionOps.vb b/iBMSC/TimeSelectionOps.vb index cac40578c..623097621 100644 --- a/iBMSC/TimeSelectionOps.vb +++ b/iBMSC/TimeSelectionOps.vb @@ -53,18 +53,60 @@ Partial Public Class MainWindow Private Sub BDefineMeasure_Click(sender As Object, e As EventArgs) Handles BDefineMeasure.Click If Not TBTimeSelect.Checked Then Exit Sub + AddOrRemoveMeasureLine() - ' Me.RedoRemoveNote(Notes(xI0), xUndo, xRedo) - ' RemoveNote(xI0) + RefreshPanelAll() + POStatusRefresh() - SortByVPositionInsertion() - AddOrRemoveMeasureLine() + Beep() + TVCBPM.Focus() + End Sub + + Private Sub BInsertOrRemoveSpaceM_Click(sender As Object, e As EventArgs) Handles BInsertOrRemoveSpaceM.Click + If Not TBTimeSelect.Checked Or vSelLength = 0 Then Exit Sub + + Dim xUndo As UndoRedo.LinkedURCmd = Nothing + Dim xRedo As UndoRedo.LinkedURCmd = New UndoRedo.Void + Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo + + InsertOrRemoveSpaceMeasure(xUndo, xRedo) + AddUndo(xUndo, xBaseRedo.Next) - SortByVPositionInsertion() - UpdatePairing() RefreshPanelAll() POStatusRefresh() + Beep() + TVCBPM.Focus() + End Sub + + Private Sub BInsertOrRemoveSpaceN_Click(sender As Object, e As EventArgs) Handles BInsertOrRemoveSpaceN.Click + If Not TBTimeSelect.Checked Or vSelLength = 0 Then Exit Sub + + Dim xUndo As UndoRedo.LinkedURCmd = Nothing + Dim xRedo As UndoRedo.LinkedURCmd = New UndoRedo.Void + Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo + + InsertOrRemoveSpaceNote(xUndo, xRedo) + AddUndo(xUndo, xBaseRedo.Next) + RefreshPanelAll() + POStatusRefresh() + Beep() + TVCBPM.Focus() + End Sub + + Private Sub InsertOrRemoveSpaceMN(sender As Object, e As EventArgs) Handles BInsertOrRemoveSpaceMN.Click + If Not TBTimeSelect.Checked Or vSelLength = 0 Then Exit Sub + + Dim xUndo As UndoRedo.LinkedURCmd = Nothing + Dim xRedo As UndoRedo.LinkedURCmd = New UndoRedo.Void + Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo + + InsertOrRemoveSpaceMeasure(xUndo, xRedo) + InsertOrRemoveSpaceNote(xUndo, xRedo) + AddUndo(xUndo, xBaseRedo.Next) + + RefreshPanelAll() + POStatusRefresh() Beep() TVCBPM.Focus() End Sub @@ -782,4 +824,97 @@ EndOfSub: UpdateMeasureBottom() End Sub + + Private Sub InsertOrRemoveSpaceMeasure(ByRef xUndo As UndoRedo.LinkedURCmd, ByRef xRedo As UndoRedo.LinkedURCmd) + Dim xMeasureLengthBefore = MeasureLength.Clone() + + Dim xVLower As Double = IIf(vSelLength > 0, vSelStart, vSelStart + vSelLength) + Dim xIM As Integer = MeasureAtDisplacement(xVLower) + + MeasureLength(xIM) = Math.Max((MeasureLength(xIM) + vSelLength), 1) + Dim a As Double = MeasureLength(xIM) / 192.0R + Dim xxD As Long = GetDenominator(a) + LBeat.Items(xIM) = Add3Zeros(xIM) & ": " & a & IIf(xxD > 10000, "", " ( " & CLng(a * xxD) & " / " & xxD & " ) ") + + RedoChangeMeasure(xMeasureLengthBefore, MeasureLength.Clone, xUndo, xRedo) + + UpdateMeasureBottom() + End Sub + + Private Sub InsertOrRemoveSpaceNote(ByRef xUndo As UndoRedo.LinkedURCmd, ByRef xRedo As UndoRedo.LinkedURCmd) + Dim xVLower As Double = IIf(vSelLength > 0, vSelStart, vSelStart + vSelLength) + Dim xVUpper As Double = IIf(vSelLength < 0, vSelStart, vSelStart + vSelLength) + + ' Change to NTInput because easier to code + If Not NTInput Then + ConvertBMSE2NT() + End If + + If vSelLength < 0 Then ' Remove space + Dim xIN As Integer = 1 + Do While xIN <= UBound(Notes) + + With Notes(xIN) + If .Length = 0 AndAlso .Selected Then ' If not LN and note within selection + RedoRemoveNote(Notes(xIN), xUndo, xRedo) + RemoveNote(xIN) + ElseIf .VPosition >= xVUpper Then ' ElseIf note is above xVLower, move lower + Dim vPos = Notes(xIN).VPosition + vSelLength + RedoMoveNote(Notes(xIN), Notes(xIN).ColumnIndex, vPos, xUndo, xRedo) + Notes(xIN).VPosition = vPos + xIN += 1 + ElseIf .Length <> 0 AndAlso .Selected Then ' ElseIf LN + Dim xNVLower = .VPosition + Dim xNVUpper = .VPosition + .Length + If xNVLower < xVLower Then ' If LN's VPosition is lower than selection, trim accordingly + If xNVUpper <= xVUpper Then + RedoLongNoteModify(Notes(xIN), .VPosition, xVLower - xNVLower, xUndo, xRedo) + .Length = xVLower - xNVLower + Else + RedoLongNoteModify(Notes(xIN), .VPosition, .Length + vSelLength, xUndo, xRedo) + .Length += vSelLength + End If + xIN += 1 + ElseIf xNVUpper <= xVUpper Then ' ElseIf LN is within selection, remove + RedoRemoveNote(Notes(xIN), xUndo, xRedo) + RemoveNote(xIN) + ElseIf xNVLower = xVLower Then + RedoLongNoteModify(Notes(xIN), .VPosition, .Length + vSelLength, xUndo, xRedo) + .Length += vSelLength + xIN += 1 + Else + RedoLongNoteModify(Notes(xIN), xVLower, xNVUpper - xVUpper, xUndo, xRedo) + .Length = xNVUpper - xVUpper + .VPosition = xVLower + xIN += 1 + End If + Else + xIN += 1 + End If + End With + Loop + ElseIf vSelLength > 0 Then ' Insert space + ' TODO: Add upper bound + For xIN = 1 To UBound(Notes) + With Notes(xIN) + If .Length = 0 AndAlso .VPosition >= xVLower Then ' If note is above xVLower, move upper + Dim vPos = Notes(xIN).VPosition + vSelLength + RedoMoveNote(Notes(xIN), .ColumnIndex, vPos, xUndo, xRedo) + .VPosition = vPos + ElseIf .Length <> 0 AndAlso .VPosition <= xVLower Then ' ElseIf LN andalso VPosition is lower than or equal to XVLower + RedoLongNoteModify(Notes(xIN), .VPosition, .Length + vSelLength, xUndo, xRedo) + .Length += vSelLength + ElseIf .Length <> 0 AndAlso .VPosition > xVLower Then + Dim vPos = Notes(xIN).VPosition + vSelLength + RedoMoveNote(Notes(xIN), .ColumnIndex, vPos, xUndo, xRedo) + .VPosition = vPos + End If + End With + Next + End If + + If Not NTInput Then + ConvertNT2BMSE() + End If + End Sub End Class From 790e1a907a13c7ce4b02fd350c34149dc240ab87 Mon Sep 17 00:00:00 2001 From: psyk2642 <60137590+psyk2642@users.noreply.github.com> Date: Wed, 30 Mar 2022 20:54:40 +0800 Subject: [PATCH 092/257] Allows for copying and pasting measure lengths Allows for copying highlighted measures into text, and pasting copied texts onto the measures from the first highlighted measure. Text example: 1 0.5 0.25 0.125 0.4 0.3 0.2 --- iBMSC/MainWindow.designer.vb | 63 +++++++++++----------- iBMSC/MainWindow.resx | 34 ++++++------ iBMSC/MainWindow.vb | 90 +++++++++++++++++++++++++++----- iBMSC/My Project/AssemblyInfo.vb | 4 +- iBMSC/iBMSC.vbproj | 2 +- 5 files changed, 128 insertions(+), 65 deletions(-) diff --git a/iBMSC/MainWindow.designer.vb b/iBMSC/MainWindow.designer.vb index 512630239..433a369e1 100644 --- a/iBMSC/MainWindow.designer.vb +++ b/iBMSC/MainWindow.designer.vb @@ -25,16 +25,16 @@ Partial Class MainWindow Me.TBLangDef = New System.Windows.Forms.ToolStripMenuItem() Me.TBLangRefresh = New System.Windows.Forms.ToolStripMenuItem() Me.ToolStripSeparator9 = New System.Windows.Forms.ToolStripSeparator() - Me.mnLanguage = New System.Windows.Forms.ToolStripMenuItem() Me.TBLanguage = New System.Windows.Forms.ToolStripDropDownButton() + Me.mnLanguage = New System.Windows.Forms.ToolStripMenuItem() Me.cmnTheme = New System.Windows.Forms.ContextMenuStrip(Me.components) Me.TBThemeDef = New System.Windows.Forms.ToolStripMenuItem() Me.TBThemeSave = New System.Windows.Forms.ToolStripMenuItem() Me.TBThemeRefresh = New System.Windows.Forms.ToolStripMenuItem() Me.TBThemeLoadComptability = New System.Windows.Forms.ToolStripMenuItem() Me.ToolStripSeparator6 = New System.Windows.Forms.ToolStripSeparator() - Me.TBTheme = New System.Windows.Forms.ToolStripDropDownButton() Me.mnTheme = New System.Windows.Forms.ToolStripMenuItem() + Me.TBTheme = New System.Windows.Forms.ToolStripDropDownButton() Me.Timer1 = New System.Windows.Forms.Timer(Me.components) Me.Menu1 = New System.Windows.Forms.ContextMenuStrip(Me.components) Me.MInsert = New System.Windows.Forms.ToolStripMenuItem() @@ -127,11 +127,11 @@ Partial Class MainWindow Me.POBSRandom = New System.Windows.Forms.ToolStripMenuItem() Me.POBHRandom = New System.Windows.Forms.ToolStripMenuItem() Me.POBSort = New System.Windows.Forms.ToolStripMenuItem() - Me.POConvert = New System.Windows.Forms.ToolStripDropDownButton() Me.mnPreview = New System.Windows.Forms.ToolStripMenuItem() Me.mnPlayB = New System.Windows.Forms.ToolStripMenuItem() Me.mnPlay = New System.Windows.Forms.ToolStripMenuItem() Me.mnStop = New System.Windows.Forms.ToolStripMenuItem() + Me.POConvert = New System.Windows.Forms.ToolStripDropDownButton() Me.TBMain = New System.Windows.Forms.ToolStrip() Me.TBNew = New System.Windows.Forms.ToolStripButton() Me.TBOpen = New System.Windows.Forms.ToolStripSplitButton() @@ -456,7 +456,7 @@ Partial Class MainWindow ' Me.cmnLanguage.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.TBLangDef, Me.TBLangRefresh, Me.ToolStripSeparator9}) Me.cmnLanguage.Name = "cmnLanguage" - Me.cmnLanguage.OwnerItem = Me.TBLanguage + Me.cmnLanguage.OwnerItem = Me.mnLanguage Me.cmnLanguage.Size = New System.Drawing.Size(121, 54) ' 'TBLangDef @@ -477,14 +477,6 @@ Partial Class MainWindow Me.ToolStripSeparator9.Name = "ToolStripSeparator9" Me.ToolStripSeparator9.Size = New System.Drawing.Size(117, 6) ' - 'mnLanguage - ' - Me.mnLanguage.DropDown = Me.cmnLanguage - Me.mnLanguage.Image = Global.iBMSC.My.Resources.Resources.x16Language - Me.mnLanguage.Name = "mnLanguage" - Me.mnLanguage.Size = New System.Drawing.Size(253, 22) - Me.mnLanguage.Text = "&Language" - ' 'TBLanguage ' Me.TBLanguage.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image @@ -495,11 +487,19 @@ Partial Class MainWindow Me.TBLanguage.Size = New System.Drawing.Size(29, 22) Me.TBLanguage.Text = "Language" ' + 'mnLanguage + ' + Me.mnLanguage.DropDown = Me.cmnLanguage + Me.mnLanguage.Image = Global.iBMSC.My.Resources.Resources.x16Language + Me.mnLanguage.Name = "mnLanguage" + Me.mnLanguage.Size = New System.Drawing.Size(253, 22) + Me.mnLanguage.Text = "&Language" + ' 'cmnTheme ' Me.cmnTheme.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.TBThemeDef, Me.TBThemeSave, Me.TBThemeRefresh, Me.TBThemeLoadComptability, Me.ToolStripSeparator6}) Me.cmnTheme.Name = "cmnLanguage" - Me.cmnTheme.OwnerItem = Me.mnTheme + Me.cmnTheme.OwnerItem = Me.TBTheme Me.cmnTheme.Size = New System.Drawing.Size(246, 98) ' 'TBThemeDef @@ -533,6 +533,14 @@ Partial Class MainWindow Me.ToolStripSeparator6.Name = "ToolStripSeparator6" Me.ToolStripSeparator6.Size = New System.Drawing.Size(242, 6) ' + 'mnTheme + ' + Me.mnTheme.DropDown = Me.cmnTheme + Me.mnTheme.Image = Global.iBMSC.My.Resources.Resources.x16Theme + Me.mnTheme.Name = "mnTheme" + Me.mnTheme.Size = New System.Drawing.Size(253, 22) + Me.mnTheme.Text = "&Theme" + ' 'TBTheme ' Me.TBTheme.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image @@ -543,14 +551,6 @@ Partial Class MainWindow Me.TBTheme.Size = New System.Drawing.Size(29, 22) Me.TBTheme.Text = "Theme" ' - 'mnTheme - ' - Me.mnTheme.DropDown = Me.cmnTheme - Me.mnTheme.Image = Global.iBMSC.My.Resources.Resources.x16Theme - Me.mnTheme.Name = "mnTheme" - Me.mnTheme.Size = New System.Drawing.Size(253, 22) - Me.mnTheme.Text = "&Theme" - ' 'Timer1 ' Me.Timer1.Interval = 15 @@ -1149,6 +1149,7 @@ Partial Class MainWindow ' Me.cmnConversion.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.POBLong, Me.POBShort, Me.POBLongShort, Me.ToolStripSeparator10, Me.POBHidden, Me.POBVisible, Me.POBHiddenVisible, Me.ToolStripSeparator11, Me.POBModify, Me.POBMirror, Me.POBFlip, Me.POBRandom, Me.POBRRandom, Me.POBSRandom, Me.POBHRandom, Me.POBSort}) Me.cmnConversion.Name = "cmnLanguage" + Me.cmnConversion.OwnerItem = Me.POConvert Me.cmnConversion.Size = New System.Drawing.Size(222, 324) ' 'POBLong @@ -1261,16 +1262,6 @@ Partial Class MainWindow Me.POBSort.Size = New System.Drawing.Size(221, 22) Me.POBSort.Text = "S&ort" ' - 'POConvert - ' - Me.POConvert.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image - Me.POConvert.DropDown = Me.cmnConversion - Me.POConvert.Image = Global.iBMSC.My.Resources.Resources.ConvertNotes - Me.POConvert.ImageTransparentColor = System.Drawing.Color.Magenta - Me.POConvert.Name = "POConvert" - Me.POConvert.Size = New System.Drawing.Size(29, 22) - Me.POConvert.Text = "Convert Notes" - ' 'mnPreview ' Me.mnPreview.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.mnPlayB, Me.mnPlay, Me.mnStop}) @@ -1302,6 +1293,16 @@ Partial Class MainWindow Me.mnStop.Size = New System.Drawing.Size(201, 22) Me.mnStop.Text = "&Stop" ' + 'POConvert + ' + Me.POConvert.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image + Me.POConvert.DropDown = Me.cmnConversion + Me.POConvert.Image = Global.iBMSC.My.Resources.Resources.ConvertNotes + Me.POConvert.ImageTransparentColor = System.Drawing.Color.Magenta + Me.POConvert.Name = "POConvert" + Me.POConvert.Size = New System.Drawing.Size(29, 22) + Me.POConvert.Text = "Convert Notes" + ' 'TBMain ' Me.TBMain.AccessibleRole = System.Windows.Forms.AccessibleRole.ToolBar diff --git a/iBMSC/MainWindow.resx b/iBMSC/MainWindow.resx index a404a371d..bfd5cb6ca 100644 --- a/iBMSC/MainWindow.resx +++ b/iBMSC/MainWindow.resx @@ -146,7 +146,7 @@ iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAhXSURBVFhHvZZ7UNNXFsfDI6DrtnbdujPbtQ0VCxoVEQ0g - iBEElbCgvASi2Gq31tnVsVpRa3VTLVge8gjyfgYMrySQAOEVIDGACtQiopT1hVhbJeGhq7X+Qet37y+k + iBEElbCgvASi2Gq31tnVsVpRa3VjLVge8gjyfgYMrySQAOEVIDGACtQiopT1hVhbJeGhq7X+Qet37y+k 0BTsgDvTM/OZ3+Tmd8/5nnPvPfdHo0wUSDNR8dimKh7NVDfwexqPRzPO3M+ck8uztijgvTVfP/z7GZV5 Lo9hEfPR4tDoA7ZnpJErDjUlMUPqvnh9TQVvxlvpK2h0/as0r4Y/yDx4Rs89qo3gXkWoNMK6CmOskxnD TUooNcb6sllV+tenZlTZqcxj9tsmxR+yRzXfGW3ZrL6WZGbJhVTrD1uSmLZ1MTazqHc9co1G6p8WoP4H @@ -156,21 +156,21 @@ 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 @@ -181,7 +181,7 @@ lixpzV+8mDoN0wtOGSOBPpLfnwAB2YiTcVaTCPvPZ1JfRAv4CxYsL1q0SCJlMh9VkcxLSeYkeFveokWb 0q2sXte7nJ45x8+SOfLMnlP3OXWlUrcadbFQvf1XTWYee+7cPxZYWa0W29gcJGXPKLaxiSaZB5MxKvj0 s//Z9M3qNcJkzernJkP9r2symfPmzUl9+237ZEvLN0VMJrXz/2+j1E9sVuNQ42NNhhw3YyowteMnbjoa - 7X8VeCS1HzuW3gAAAABJRU5ErkJggg== + 7X8H7iS0Cer1QwAAAABJRU5ErkJggg== diff --git a/iBMSC/MainWindow.vb b/iBMSC/MainWindow.vb index d33942823..1e20bc108 100644 --- a/iBMSC/MainWindow.vb +++ b/iBMSC/MainWindow.vb @@ -2110,6 +2110,62 @@ EndSearch: CalculateGreatestVPosition() End Sub + Private Sub LBeatCopyPaste(ByVal sender As System.Object, ByVal e As System.Windows.Forms.PreviewKeyDownEventArgs) Handles LBeat.PreviewKeyDown + Select Case e.KeyCode + Case Keys.C + If My.Computer.Keyboard.CtrlKeyDown Then + Dim xIndices(LBeat.SelectedIndices.Count - 1) As Integer + + LBeat.SelectedIndices.CopyTo(xIndices, 0) + Dim xMeasureLengthSelected(UBound(xIndices)) As String + For xIL = 0 To UBound(xIndices) + xMeasureLengthSelected(xIL) = (MeasureLength(xIL) / 192.0R).ToString + Next + + Clipboard.SetText(Join(xMeasureLengthSelected, vbCrLf)) + End If + Case Keys.V + If My.Computer.Keyboard.CtrlKeyDown Then + If LBeat.SelectedIndex = -1 Then Exit Sub + Dim xUndo As UndoRedo.LinkedURCmd = Nothing + Dim xRedo As UndoRedo.LinkedURCmd = New UndoRedo.Void + Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo + Dim xMeasureLengthBefore = MeasureLength.Clone + + Dim xMeasureLengthClipboard() As String = Split(Clipboard.GetText, vbCrLf) + + Dim xIL0 As Integer = LBeat.SelectedIndex + Dim xRatio As Double + For xIL = 0 To UBound(xMeasureLengthClipboard) + LBeat.SelectedIndices.Clear() + If Double.TryParse(xMeasureLengthClipboard(xIL), xRatio) Then + If xRatio <= 0.0# Or xRatio >= 1000.0# Then System.Media.SystemSounds.Hand.Play() : Exit Sub + + Dim xxD As Long = GetDenominator(xRatio) + + LBeat.SelectedIndex = xIL0 + xIL + ApplyBeat(xRatio, CInt(xRatio * xxD), xxD, xUndo, xRedo, xBaseRedo) + End If + Next + + LBeat.SelectedIndices.Clear() + For xI1 As Integer = 0 To UBound(xMeasureLengthClipboard) + LBeat.SelectedIndices.Add(xIL0 + xI1) + Next + + RedoChangeMeasure(xMeasureLengthBefore, MeasureLength.Clone, xUndo, xRedo) + AddUndo(xUndo, xBaseRedo.Next) + + RefreshPanelAll() + POStatusRefresh() + End If + Case Keys.Z + If My.Computer.Keyboard.CtrlKeyDown Then TBUndo_Click(TBUndo, New EventArgs) + Case Keys.Y + If My.Computer.Keyboard.CtrlKeyDown Then TBRedo_Click(TBRedo, New EventArgs) + End Select + End Sub + 'Private Function pArgPath(ByVal I As Integer) ' Return Mid(pArgs(I), 1, InStr(pArgs(I), vbCrLf) - 1) 'End Function @@ -4777,13 +4833,9 @@ Jump2: - Private Sub ApplyBeat(ByVal xRatio As Double, ByVal xDisplay As String) + Private Sub ApplyBeat(ByVal xRatio As Double, ByVal xN As Integer, ByVal xD As Integer, ByRef xUndo As UndoRedo.LinkedURCmd, ByRef xRedo As UndoRedo.LinkedURCmd, ByRef xBaseRedo As UndoRedo.LinkedURCmd) SortByVPositionInsertion() - Dim xUndo As UndoRedo.LinkedURCmd = Nothing - Dim xRedo As UndoRedo.LinkedURCmd = New UndoRedo.Void - Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo - Me.RedoChangeMeasureLengthSelected(192 * xRatio, xUndo, xRedo) Dim xIndices(LBeat.SelectedIndices.Count - 1) As Integer @@ -4801,7 +4853,7 @@ Jump2: Dim xUpBefore As Double = xBottom + MeasureLength(xI1) Dim xUpAfter As Double = xUpBefore + dLength - Select Case BeatChangeMode + Select Case BeatChangeMode ' CBeatPreserve => Case 0 Case 1 case2: Dim xI0 As Integer @@ -4931,43 +4983,53 @@ case2: Dim xI0 As Integer End Select MeasureLength(xI1) = xRatio * 192.0R - LBeat.Items(xI1) = Add3Zeros(xI1) & ": " & xDisplay + LBeat.Items(xI1) = Add3Zeros(xI1) & ": " & xRatio & " ( " & xN & " / " & xD & " ) " Next UpdateMeasureBottom() - 'xUndo &= vbCrLf & xUndo2 - 'xRedo &= vbCrLf & xRedo2 LBeat.SelectedIndices.Clear() For xI1 As Integer = 0 To UBound(xIndices) LBeat.SelectedIndices.Add(xIndices(xI1)) Next - AddUndo(xUndo, xBaseRedo.Next) SortByVPositionInsertion() UpdatePairing() CalculateTotalPlayableNotes() CalculateGreatestVPosition() - RefreshPanelAll() - POStatusRefresh() End Sub Private Sub BBeatApply_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BBeatApply.Click + Dim xUndo As UndoRedo.LinkedURCmd = Nothing + Dim xRedo As UndoRedo.LinkedURCmd = New UndoRedo.Void + Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo + Dim xxD As Integer = nBeatD.Value Dim xxN As Integer = nBeatN.Value Dim xxRatio As Double = xxN / xxD - ApplyBeat(xxRatio, xxRatio & " ( " & xxN & " / " & xxD & " ) ") + ApplyBeat(xxRatio, xxN, xxD, xUndo, xRedo, xBaseRedo) + + RefreshPanelAll() + POStatusRefresh() End Sub Private Sub BBeatApplyV_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BBeatApplyV.Click + Dim xUndo As UndoRedo.LinkedURCmd = Nothing + Dim xRedo As UndoRedo.LinkedURCmd = New UndoRedo.Void + Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo + Dim a As Double If Double.TryParse(tBeatValue.Text, a) Then If a <= 0.0# Or a >= 1000.0# Then System.Media.SystemSounds.Hand.Play() : Exit Sub Dim xxD As Long = GetDenominator(a) - ApplyBeat(a, a & IIf(xxD > 10000, "", " ( " & CLng(a * xxD) & " / " & xxD & " ) ")) + ApplyBeat(a, CInt(a * xxD), xxD, xUndo, xRedo, xBaseRedo) End If + AddUndo(xUndo, xBaseRedo.Next) + + RefreshPanelAll() + POStatusRefresh() End Sub diff --git a/iBMSC/My Project/AssemblyInfo.vb b/iBMSC/My Project/AssemblyInfo.vb index d813cb898..ad39ae109 100644 --- a/iBMSC/My Project/AssemblyInfo.vb +++ b/iBMSC/My Project/AssemblyInfo.vb @@ -33,7 +33,7 @@ Imports System.Runtime.InteropServices ' by using the '*' as shown below: ' - - + + \ No newline at end of file diff --git a/iBMSC/iBMSC.vbproj b/iBMSC/iBMSC.vbproj index ecaf149f5..069b4b63f 100644 --- a/iBMSC/iBMSC.vbproj +++ b/iBMSC/iBMSC.vbproj @@ -46,7 +46,7 @@ none false true - true + false bin\pBMSC\ From e0193aea2f5b55f8ec39678b5b971f67641f4a12 Mon Sep 17 00:00:00 2001 From: psyk2642 <60137590+psyk2642@users.noreply.github.com> Date: Wed, 30 Mar 2022 21:39:52 +0800 Subject: [PATCH 093/257] Minor ApplyBeat code update --- iBMSC/MainWindow.vb | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/iBMSC/MainWindow.vb b/iBMSC/MainWindow.vb index 1e20bc108..f94c9ebc2 100644 --- a/iBMSC/MainWindow.vb +++ b/iBMSC/MainWindow.vb @@ -2141,10 +2141,8 @@ EndSearch: If Double.TryParse(xMeasureLengthClipboard(xIL), xRatio) Then If xRatio <= 0.0# Or xRatio >= 1000.0# Then System.Media.SystemSounds.Hand.Play() : Exit Sub - Dim xxD As Long = GetDenominator(xRatio) - LBeat.SelectedIndex = xIL0 + xIL - ApplyBeat(xRatio, CInt(xRatio * xxD), xxD, xUndo, xRedo, xBaseRedo) + ApplyBeat(xRatio, xUndo, xRedo) End If Next @@ -4833,8 +4831,17 @@ Jump2: - Private Sub ApplyBeat(ByVal xRatio As Double, ByVal xN As Integer, ByVal xD As Integer, ByRef xUndo As UndoRedo.LinkedURCmd, ByRef xRedo As UndoRedo.LinkedURCmd, ByRef xBaseRedo As UndoRedo.LinkedURCmd) + Private Sub ApplyBeat(ByVal xRatio As Double, ByRef xUndo As UndoRedo.LinkedURCmd, ByRef xRedo As UndoRedo.LinkedURCmd, Optional xN As Integer = -1, Optional xD As Integer = -1) SortByVPositionInsertion() + If xN = -1 AndAlso xD = -1 Then + If xRatio = 1 Then + xD = CGSub.Value + xN = xD + Else + xD = GetDenominator(xRatio) + xN = CInt(xRatio * xD) + End If + End If Me.RedoChangeMeasureLengthSelected(192 * xRatio, xUndo, xRedo) @@ -5007,7 +5014,8 @@ case2: Dim xI0 As Integer Dim xxN As Integer = nBeatN.Value Dim xxRatio As Double = xxN / xxD - ApplyBeat(xxRatio, xxN, xxD, xUndo, xRedo, xBaseRedo) + ApplyBeat(xxRatio, xUndo, xRedo, xxN, xxD) + AddUndo(xUndo, xBaseRedo.Next) RefreshPanelAll() POStatusRefresh() @@ -5024,7 +5032,7 @@ case2: Dim xI0 As Integer Dim xxD As Long = GetDenominator(a) - ApplyBeat(a, CInt(a * xxD), xxD, xUndo, xRedo, xBaseRedo) + ApplyBeat(a, xUndo, xRedo) End If AddUndo(xUndo, xBaseRedo.Next) From 0f7e500f4aed9f25d37eef29215d2faff53cdf27 Mon Sep 17 00:00:00 2001 From: psyk2642 <60137590+psyk2642@users.noreply.github.com> Date: Wed, 30 Mar 2022 23:36:41 +0800 Subject: [PATCH 094/257] Added "Duplicate WAV" + Miscellaneous - Added "Duplicate" button to the #WAV list to allow for duplicating of sound files on the list. Overwrites existing sound files when duplicating. - Added "Override color" button to the #WAV list. --- README.md | 2 + iBMSC/Dialogs/ColorPicker.vb | 196 ++++++++++++------------- iBMSC/ImageButtonsSmall/x16Color.png | Bin 0 -> 5870 bytes iBMSC/MainWindow.designer.vb | 73 ++++++--- iBMSC/MainWindow.resx | 64 ++++---- iBMSC/MainWindow.vb | 49 ++++++- iBMSC/MiscButtons/WAVDuplicate.png | Bin 0 -> 5735 bytes iBMSC/My Project/Resources.Designer.vb | 20 +++ iBMSC/My Project/Resources.resx | 70 +++++---- 9 files changed, 288 insertions(+), 186 deletions(-) create mode 100644 iBMSC/ImageButtonsSmall/x16Color.png create mode 100644 iBMSC/MiscButtons/WAVDuplicate.png diff --git a/README.md b/README.md index accc1af61..8da62c69d 100644 --- a/README.md +++ b/README.md @@ -33,6 +33,8 @@ Listed in the order added. * Added "Show Waveform on Notes". * Added "Define Measure" in Time Selection Tool. Allows defining a custom measure, add a measure line or remove measure lines. Also accessible via the Insert key while Time Selection Tool is selected. * Added "Insert/Remove Space" in Time Selection Tool. Allows inserting space into the measure, either measure only, notes only or both. Also accessible via Ctrl+Insert, Shift+Insert and Ctrl+Shift+Insert respectively. +* Added ability to copy and paste measure lengths over multiple measures. +* Added ability to duplicate #WAV's. ## Keyboard shortcuts * Changed keybinding to allow note placement between D1 and D8: diff --git a/iBMSC/Dialogs/ColorPicker.vb b/iBMSC/Dialogs/ColorPicker.vb index f6756f1ae..647536f40 100644 --- a/iBMSC/Dialogs/ColorPicker.vb +++ b/iBMSC/Dialogs/ColorPicker.vb @@ -140,97 +140,97 @@ Public Class ColorPicker Case 0 Dim xHue As Integer = inH.Value For xI1 = 0 To 255 Step xPrecision - e1.Graphics.FillRectangle(New Drawing2D.LinearGradientBrush( _ - New Point(0, 0), _ - New Point(0, 128), _ - Color.White, _ - HSL2RGB(xHue, xI1 / 255 * 1000, 500)), _ - xI1, _ - 0, _ - xPrecision, _ + e1.Graphics.FillRectangle(New Drawing2D.LinearGradientBrush( + New Point(0, 0), + New Point(0, 128), + Color.White, + HSL2RGB(xHue, xI1 / 255 * 1000, 500)), + xI1, + 0, + xPrecision, 128) - e1.Graphics.FillRectangle(New Drawing2D.LinearGradientBrush( _ - New Point(0, 128), _ - New Point(0, 256), _ - HSL2RGB(xHue, xI1 / 255 * 1000, 500), _ - Color.Black), _ - xI1, _ - 128, _ - xPrecision, _ + e1.Graphics.FillRectangle(New Drawing2D.LinearGradientBrush( + New Point(0, 128), + New Point(0, 256), + HSL2RGB(xHue, xI1 / 255 * 1000, 500), + Color.Black), + xI1, + 128, + xPrecision, 128) Next Case 1 Dim xSaturation As Integer = inS.Value For xI1 = 0 To 255 Step xPrecision - e1.Graphics.FillRectangle(New Drawing2D.LinearGradientBrush( _ - New Point(0, 0), _ - New Point(0, 128), _ - Color.White, _ - HSL2RGB(xI1 / 255 * 360, xSaturation, 500)), _ - xI1, _ - 0, _ - xPrecision, _ + e1.Graphics.FillRectangle(New Drawing2D.LinearGradientBrush( + New Point(0, 0), + New Point(0, 128), + Color.White, + HSL2RGB(xI1 / 255 * 360, xSaturation, 500)), + xI1, + 0, + xPrecision, 128) - e1.Graphics.FillRectangle(New Drawing2D.LinearGradientBrush( _ - New Point(0, 128), _ - New Point(0, 256), _ - HSL2RGB(xI1 / 255 * 360, xSaturation, 500), _ - Color.Black), _ - xI1, _ - 128, _ - xPrecision, _ + e1.Graphics.FillRectangle(New Drawing2D.LinearGradientBrush( + New Point(0, 128), + New Point(0, 256), + HSL2RGB(xI1 / 255 * 360, xSaturation, 500), + Color.Black), + xI1, + 128, + xPrecision, 128) Next Case 2 Dim xLightness As Integer = inL.Value For xI1 = 0 To 255 Step xPrecision - e1.Graphics.FillRectangle(New Drawing2D.LinearGradientBrush( _ - New Point(0, 0), _ - New Point(0, 256), _ - HSL2RGB(xI1 / 255 * 360, 1000, xLightness), _ - HSL2RGB(xI1 / 255 * 360, 0, xLightness)), _ - xI1, _ - 0, _ - xPrecision, _ + e1.Graphics.FillRectangle(New Drawing2D.LinearGradientBrush( + New Point(0, 0), + New Point(0, 256), + HSL2RGB(xI1 / 255 * 360, 1000, xLightness), + HSL2RGB(xI1 / 255 * 360, 0, xLightness)), + xI1, + 0, + xPrecision, 256) Next Case 3 Dim xRed As Integer = inR.Value For xI1 = 0 To 255 Step xPrecision - e1.Graphics.FillRectangle(New Drawing2D.LinearGradientBrush( _ - New Point(0, 0), _ - New Point(0, 256), _ - Color.FromArgb(xRed, 255, xI1), _ - Color.FromArgb(xRed, 0, xI1)), _ - xI1, _ - 0, _ - xPrecision, _ + e1.Graphics.FillRectangle(New Drawing2D.LinearGradientBrush( + New Point(0, 0), + New Point(0, 256), + Color.FromArgb(xRed, 255, xI1), + Color.FromArgb(xRed, 0, xI1)), + xI1, + 0, + xPrecision, 256) Next Case 4 Dim xGreen As Integer = inG.Value For xI1 = 0 To 255 Step xPrecision - e1.Graphics.FillRectangle(New Drawing2D.LinearGradientBrush( _ - New Point(0, 0), _ - New Point(0, 256), _ - Color.FromArgb(255, xGreen, xI1), _ - Color.FromArgb(0, xGreen, xI1)), _ - xI1, _ - 0, _ - xPrecision, _ + e1.Graphics.FillRectangle(New Drawing2D.LinearGradientBrush( + New Point(0, 0), + New Point(0, 256), + Color.FromArgb(255, xGreen, xI1), + Color.FromArgb(0, xGreen, xI1)), + xI1, + 0, + xPrecision, 256) Next Case 5 Dim xBlue As Integer = inB.Value For xI1 = 0 To 255 Step xPrecision - e1.Graphics.FillRectangle(New Drawing2D.LinearGradientBrush( _ - New Point(0, 0), _ - New Point(0, 256), _ - Color.FromArgb(255, xI1, xBlue), _ - Color.FromArgb(0, xI1, xBlue)), _ - xI1, _ - 0, _ - xPrecision, _ + e1.Graphics.FillRectangle(New Drawing2D.LinearGradientBrush( + New Point(0, 0), + New Point(0, 256), + Color.FromArgb(255, xI1, xBlue), + Color.FromArgb(0, xI1, xBlue)), + xI1, + 0, + xPrecision, 256) Next End Select @@ -409,53 +409,53 @@ Public Class ColorPicker Case 1 Dim xxH As Integer = inH.Value Dim xxL As Integer = inL.Value - e1.Graphics.FillRectangle(New Drawing2D.LinearGradientBrush( _ - New Point(0, 0), _ - New Point(0, 256), _ - HSL2RGB(xxH, 1000, xxL), _ - HSL2RGB(xxH, 0, xxL)), _ + e1.Graphics.FillRectangle(New Drawing2D.LinearGradientBrush( + New Point(0, 0), + New Point(0, 256), + HSL2RGB(xxH, 1000, xxL), + HSL2RGB(xxH, 0, xxL)), 0, 0, xWidth, 256) Case 2 Dim xxH As Integer = inH.Value Dim xxS As Integer = inS.Value - e1.Graphics.FillRectangle(New Drawing2D.LinearGradientBrush( _ - New Point(0, 0), _ - New Point(0, 128), _ - HSL2RGB(xxH, xxS, 1000), _ - HSL2RGB(xxH, xxS, 500)), _ + e1.Graphics.FillRectangle(New Drawing2D.LinearGradientBrush( + New Point(0, 0), + New Point(0, 128), + HSL2RGB(xxH, xxS, 1000), + HSL2RGB(xxH, xxS, 500)), 0, 0, xWidth, 128) - e1.Graphics.FillRectangle(New Drawing2D.LinearGradientBrush( _ - New Point(0, 128), _ - New Point(0, 256), _ - HSL2RGB(xxH, xxS, 500), _ - HSL2RGB(xxH, xxS, 0)), _ + e1.Graphics.FillRectangle(New Drawing2D.LinearGradientBrush( + New Point(0, 128), + New Point(0, 256), + HSL2RGB(xxH, xxS, 500), + HSL2RGB(xxH, xxS, 0)), 0, 128, xWidth, 128) Case 3 Dim xxG As Integer = inG.Value Dim xxB As Integer = inB.Value - e1.Graphics.FillRectangle(New Drawing2D.LinearGradientBrush( _ - New Point(0, 0), _ - New Point(0, 256), _ - Color.FromArgb(255, xxG, xxB), _ - Color.FromArgb(0, xxG, xxB)), _ + e1.Graphics.FillRectangle(New Drawing2D.LinearGradientBrush( + New Point(0, 0), + New Point(0, 256), + Color.FromArgb(255, xxG, xxB), + Color.FromArgb(0, xxG, xxB)), 0, 0, xWidth, 256) Case 4 Dim xxR As Integer = inR.Value Dim xxB As Integer = inB.Value - e1.Graphics.FillRectangle(New Drawing2D.LinearGradientBrush( _ - New Point(0, 0), _ - New Point(0, 256), _ - Color.FromArgb(xxR, 255, xxB), _ - Color.FromArgb(xxR, 0, xxB)), _ + e1.Graphics.FillRectangle(New Drawing2D.LinearGradientBrush( + New Point(0, 0), + New Point(0, 256), + Color.FromArgb(xxR, 255, xxB), + Color.FromArgb(xxR, 0, xxB)), 0, 0, xWidth, 256) Case 5 Dim xxR As Integer = inR.Value Dim xxG As Integer = inG.Value - e1.Graphics.FillRectangle(New Drawing2D.LinearGradientBrush( _ - New Point(0, 0), _ - New Point(0, 256), _ - Color.FromArgb(xxR, xxG, 255), _ - Color.FromArgb(xxR, xxG, 0)), _ + e1.Graphics.FillRectangle(New Drawing2D.LinearGradientBrush( + New Point(0, 0), + New Point(0, 256), + Color.FromArgb(xxR, xxG, 255), + Color.FromArgb(xxR, xxG, 0)), 0, 0, xWidth, 256) End Select @@ -540,14 +540,14 @@ Public Class ColorPicker If xRegion.X < 62 Then e1.Graphics.FillRectangle(New Drawing.SolidBrush(OrigColor), 0, 0, 61, 28) e1.Graphics.DrawLine(New Pen(Color.FromKnownColor(KnownColor.WindowFrame)), 61, 0, 61, 28) - e1.Graphics.DrawString("Orig", xFont, IIf(OrigColor.GetBrightness + (255 - OrigColor.A) / 255 > 0.5, Brushes.Black, Brushes.White), _ - 31 - e1.Graphics.MeasureString("Orig", xFont).Width / 2, _ + e1.Graphics.DrawString("Orig", xFont, IIf(OrigColor.GetBrightness + (255 - OrigColor.A) / 255 > 0.5, Brushes.Black, Brushes.White), + 31 - e1.Graphics.MeasureString("Orig", xFont).Width / 2, 14 - e1.Graphics.MeasureString("Orig", xFont).Height / 2) End If e1.Graphics.FillRectangle(New Drawing.SolidBrush(NewColor), 62, 0, 61, 28) - e1.Graphics.DrawString("New", xFont, IIf(NewColor.GetBrightness + (255 - NewColor.A) / 255 > 0.5, Brushes.Black, Brushes.White), _ - 93 - e1.Graphics.MeasureString("New", xFont).Width / 2, _ + e1.Graphics.DrawString("New", xFont, IIf(NewColor.GetBrightness + (255 - NewColor.A) / 255 > 0.5, Brushes.Black, Brushes.White), + 93 - e1.Graphics.MeasureString("New", xFont).Width / 2, 14 - e1.Graphics.MeasureString("New", xFont).Height / 2) e1.Render(pPrev.CreateGraphics) diff --git a/iBMSC/ImageButtonsSmall/x16Color.png b/iBMSC/ImageButtonsSmall/x16Color.png new file mode 100644 index 0000000000000000000000000000000000000000..68a6acf92f08252a76b61642f80dd61c0f52a137 GIT binary patch literal 5870 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 bN&2I!?(R&%>8elA$iNuZ_ErU!J45~htn5(n literal 0 HcmV?d00001 diff --git a/iBMSC/MainWindow.designer.vb b/iBMSC/MainWindow.designer.vb index 433a369e1..e844fd3b7 100644 --- a/iBMSC/MainWindow.designer.vb +++ b/iBMSC/MainWindow.designer.vb @@ -25,16 +25,16 @@ Partial Class MainWindow Me.TBLangDef = New System.Windows.Forms.ToolStripMenuItem() Me.TBLangRefresh = New System.Windows.Forms.ToolStripMenuItem() Me.ToolStripSeparator9 = New System.Windows.Forms.ToolStripSeparator() - Me.TBLanguage = New System.Windows.Forms.ToolStripDropDownButton() Me.mnLanguage = New System.Windows.Forms.ToolStripMenuItem() + Me.TBLanguage = New System.Windows.Forms.ToolStripDropDownButton() Me.cmnTheme = New System.Windows.Forms.ContextMenuStrip(Me.components) Me.TBThemeDef = New System.Windows.Forms.ToolStripMenuItem() Me.TBThemeSave = New System.Windows.Forms.ToolStripMenuItem() Me.TBThemeRefresh = New System.Windows.Forms.ToolStripMenuItem() Me.TBThemeLoadComptability = New System.Windows.Forms.ToolStripMenuItem() Me.ToolStripSeparator6 = New System.Windows.Forms.ToolStripSeparator() - Me.mnTheme = New System.Windows.Forms.ToolStripMenuItem() Me.TBTheme = New System.Windows.Forms.ToolStripDropDownButton() + Me.mnTheme = New System.Windows.Forms.ToolStripMenuItem() Me.Timer1 = New System.Windows.Forms.Timer(Me.components) Me.Menu1 = New System.Windows.Forms.ContextMenuStrip(Me.components) Me.MInsert = New System.Windows.Forms.ToolStripMenuItem() @@ -237,6 +237,8 @@ Partial Class MainWindow Me.BWAVBrowse = New System.Windows.Forms.Button() Me.BWAVDown = New System.Windows.Forms.Button() Me.BWAVUp = New System.Windows.Forms.Button() + Me.BWAVDuplicate = New System.Windows.Forms.Button() + Me.BWAVColorOverride = New System.Windows.Forms.Button() Me.POptions = New System.Windows.Forms.Panel() Me.POExpansion = New System.Windows.Forms.Panel() Me.POExpansionInner = New System.Windows.Forms.Panel() @@ -456,7 +458,7 @@ Partial Class MainWindow ' Me.cmnLanguage.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.TBLangDef, Me.TBLangRefresh, Me.ToolStripSeparator9}) Me.cmnLanguage.Name = "cmnLanguage" - Me.cmnLanguage.OwnerItem = Me.mnLanguage + Me.cmnLanguage.OwnerItem = Me.TBLanguage Me.cmnLanguage.Size = New System.Drawing.Size(121, 54) ' 'TBLangDef @@ -477,6 +479,14 @@ Partial Class MainWindow Me.ToolStripSeparator9.Name = "ToolStripSeparator9" Me.ToolStripSeparator9.Size = New System.Drawing.Size(117, 6) ' + 'mnLanguage + ' + Me.mnLanguage.DropDown = Me.cmnLanguage + Me.mnLanguage.Image = Global.iBMSC.My.Resources.Resources.x16Language + Me.mnLanguage.Name = "mnLanguage" + Me.mnLanguage.Size = New System.Drawing.Size(253, 22) + Me.mnLanguage.Text = "&Language" + ' 'TBLanguage ' Me.TBLanguage.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image @@ -487,19 +497,11 @@ Partial Class MainWindow Me.TBLanguage.Size = New System.Drawing.Size(29, 22) Me.TBLanguage.Text = "Language" ' - 'mnLanguage - ' - Me.mnLanguage.DropDown = Me.cmnLanguage - Me.mnLanguage.Image = Global.iBMSC.My.Resources.Resources.x16Language - Me.mnLanguage.Name = "mnLanguage" - Me.mnLanguage.Size = New System.Drawing.Size(253, 22) - Me.mnLanguage.Text = "&Language" - ' 'cmnTheme ' Me.cmnTheme.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.TBThemeDef, Me.TBThemeSave, Me.TBThemeRefresh, Me.TBThemeLoadComptability, Me.ToolStripSeparator6}) Me.cmnTheme.Name = "cmnLanguage" - Me.cmnTheme.OwnerItem = Me.TBTheme + Me.cmnTheme.OwnerItem = Me.mnTheme Me.cmnTheme.Size = New System.Drawing.Size(246, 98) ' 'TBThemeDef @@ -533,14 +535,6 @@ Partial Class MainWindow Me.ToolStripSeparator6.Name = "ToolStripSeparator6" Me.ToolStripSeparator6.Size = New System.Drawing.Size(242, 6) ' - 'mnTheme - ' - Me.mnTheme.DropDown = Me.cmnTheme - Me.mnTheme.Image = Global.iBMSC.My.Resources.Resources.x16Theme - Me.mnTheme.Name = "mnTheme" - Me.mnTheme.Size = New System.Drawing.Size(253, 22) - Me.mnTheme.Text = "&Theme" - ' 'TBTheme ' Me.TBTheme.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image @@ -551,6 +545,14 @@ Partial Class MainWindow Me.TBTheme.Size = New System.Drawing.Size(29, 22) Me.TBTheme.Text = "Theme" ' + 'mnTheme + ' + Me.mnTheme.DropDown = Me.cmnTheme + Me.mnTheme.Image = Global.iBMSC.My.Resources.Resources.x16Theme + Me.mnTheme.Name = "mnTheme" + Me.mnTheme.Size = New System.Drawing.Size(253, 22) + Me.mnTheme.Text = "&Theme" + ' 'Timer1 ' Me.Timer1.Interval = 15 @@ -1124,7 +1126,7 @@ Partial Class MainWindow ' 'mnVCOptions ' - Me.mnVCOptions.Image = Global.iBMSC.My.Resources.Resources.x16VisualOptions + Me.mnVCOptions.Image = Global.iBMSC.My.Resources.Resources.x16Color Me.mnVCOptions.Name = "mnVCOptions" Me.mnVCOptions.ShortcutKeys = CType((System.Windows.Forms.Keys.Shift Or System.Windows.Forms.Keys.F12), System.Windows.Forms.Keys) Me.mnVCOptions.Size = New System.Drawing.Size(253, 22) @@ -1149,7 +1151,6 @@ Partial Class MainWindow ' Me.cmnConversion.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.POBLong, Me.POBShort, Me.POBLongShort, Me.ToolStripSeparator10, Me.POBHidden, Me.POBVisible, Me.POBHiddenVisible, Me.ToolStripSeparator11, Me.POBModify, Me.POBMirror, Me.POBFlip, Me.POBRandom, Me.POBRRandom, Me.POBSRandom, Me.POBHRandom, Me.POBSort}) Me.cmnConversion.Name = "cmnLanguage" - Me.cmnConversion.OwnerItem = Me.POConvert Me.cmnConversion.Size = New System.Drawing.Size(222, 324) ' 'POBLong @@ -2323,6 +2324,28 @@ Partial Class MainWindow Me.ToolTipUniversal.SetToolTip(Me.BWAVUp, "Move Up") Me.BWAVUp.UseVisualStyleBackColor = True ' + 'BWAVDuplicate + ' + Me.BWAVDuplicate.Image = Global.iBMSC.My.Resources.Resources.WAVDuplicate + Me.BWAVDuplicate.Location = New System.Drawing.Point(96, 0) + Me.BWAVDuplicate.Margin = New System.Windows.Forms.Padding(0) + Me.BWAVDuplicate.Name = "BWAVDuplicate" + Me.BWAVDuplicate.Size = New System.Drawing.Size(24, 24) + Me.BWAVDuplicate.TabIndex = 606 + Me.ToolTipUniversal.SetToolTip(Me.BWAVDuplicate, "Duplicate") + Me.BWAVDuplicate.UseVisualStyleBackColor = True + ' + 'BWAVColorOverride + ' + Me.BWAVColorOverride.Image = Global.iBMSC.My.Resources.Resources.x16Color + Me.BWAVColorOverride.Location = New System.Drawing.Point(120, 0) + Me.BWAVColorOverride.Margin = New System.Windows.Forms.Padding(0) + Me.BWAVColorOverride.Name = "BWAVColorOverride" + Me.BWAVColorOverride.Size = New System.Drawing.Size(24, 24) + Me.BWAVColorOverride.TabIndex = 607 + Me.ToolTipUniversal.SetToolTip(Me.BWAVColorOverride, "Override color") + Me.BWAVColorOverride.UseVisualStyleBackColor = True + ' 'POptions ' Me.POptions.AutoSize = True @@ -2755,9 +2778,11 @@ Partial Class MainWindow Me.FlowLayoutPanel3.Controls.Add(Me.BWAVDown) Me.FlowLayoutPanel3.Controls.Add(Me.BWAVBrowse) Me.FlowLayoutPanel3.Controls.Add(Me.BWAVRemove) + Me.FlowLayoutPanel3.Controls.Add(Me.BWAVDuplicate) + Me.FlowLayoutPanel3.Controls.Add(Me.BWAVColorOverride) Me.FlowLayoutPanel3.Location = New System.Drawing.Point(3, 3) Me.FlowLayoutPanel3.Name = "FlowLayoutPanel3" - Me.FlowLayoutPanel3.Size = New System.Drawing.Size(96, 24) + Me.FlowLayoutPanel3.Size = New System.Drawing.Size(144, 24) Me.FlowLayoutPanel3.TabIndex = 26 Me.FlowLayoutPanel3.WrapContents = False ' @@ -4665,4 +4690,6 @@ Partial Class MainWindow Friend WithEvents BInsertOrRemoveSpaceM As ToolStripButton Friend WithEvents BInsertOrRemoveSpaceN As ToolStripButton Friend WithEvents BInsertOrRemoveSpaceMN As ToolStripButton + Friend WithEvents BWAVDuplicate As Button + Friend WithEvents BWAVColorOverride As Button End Class diff --git a/iBMSC/MainWindow.resx b/iBMSC/MainWindow.resx index bfd5cb6ca..d9a9371fc 100644 --- a/iBMSC/MainWindow.resx +++ b/iBMSC/MainWindow.resx @@ -146,42 +146,42 @@ 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 - 7X8H7iS0Cer1QwAAAABJRU5ErkJggg== + AXVPzyJh+EPEDO0wIH5oFxREhFsJHa+8QfszjT3N/dScarO9PctJw+PteD7cfhDa1n3oVYTiUqEn5JE2 + N4WHF4YzeTN+rHkswOmhnTg1GGJAzNB7OgGuxXTQZtAYtAU0c73rqVl99F/cm5Ktq/pqgh4OtO+Hpn0v + uitD0ZTzd1QlrEXxUdZ3x3lvPq/6JvG3BRTSYf4qzZJIoJZh6lbLM1+gTnonrLfe/5s+1U50y7dDneOD + cwIO/qMOwVXFFlQKXSEWk5K3+r1QwNqClxRQEkCbqeZbOl0r3Xj+stgbTbmjwS/LffHw5i4MX9+Fm+e4 + qE7biHTRBkT2+CKiP2iigLNEgPlLCKCsJcr6larIhYnS8GUPas644noTVxdc07oNAxe2QXMhFLdUXNQV + eIKf6owvrm2eKCDP7OUFUFb8yV+dhYcWJhZ9Zv+wuzEIj27thvb8Nmgbg6GtD4FGtQ095QGoyduIFIk7 + TrV5GQhgC0YFMNi6ozh14yjMxexao5+oJhOYNxMnTjJQW+SO3pZt6D8fCq0iGBppAAbLt0BTy8Wt2hDI + kl2RmM/GqRt+iNKEQvGUCMgxw+pMU6xON4VzGiGFDqckwhk6VvEJ8XSsSXhVrg87bh5So2c1T/JAnfOa + hzmQ346DSLgVNcnuuNNMlkAdigFZIDRCX2gL/dBfugU3yO9aoSfi050Qfskbksd81JL5lI8XUf+0EI6n + zUiz0vWJ8WZFCZA/zkHUwE6Ea7g6IlSeSM13RYOQg+vyQFIFLrQFftBm+WAgZzM0ZUHoKfZDRZobEiVu + +KzNEyf6Q8bm/5pI7Q7UfJ8PhxgzkJCvGTQrdyKg4r9Z+PxBCD657zPGv79aj7g4FhSCDbjbuBUakrk2 + axP6E70wmEaeRYG4JQ+CNMUV0emOOPa1p8H8X8J7EISqJwI4ROkE/I0w3qwoAbJHGTh+PxBh33LG6d2I + o21uSMhfjQrSkG5VBkErJRsyxQfaeC/ds78wAD0lfqgWbkRM9iocaXYx9KHn0+/8UUmqbB+pE8AgjG/U + dVLjZ2UP03Hkni/23V0/gTCFM06nOkBB1vy62B8akrk2eVTEACVGTESI/FEYtx6RIj8c7uTio9scAx+H + 7m1COamy/SmdAAuCoQDJcCo+vuuNf/a6Tsr+dhdExi6HnOz+PnISNIVERBKpQCwHQ6le+DY/GM1FB1Bc + EIN4cQzCOoIM5/dxUEaqzIqYRAC5z5+JhpLx8Z3N2NO7YXJukkzqHRGd54gK/lrcIFkPSrZgMNkLd/l+ + 6Mzci0ZZFpTKOijU9eDLI3G45b2x+Qfu+EAynAbWSfNJBJQRAYMpEA39NhmaE/hXLQvhsctQR9b8Rmkg + 7gmCcTljL5R5fCjrVfiy4yo6Oi6jtEyGvOpsnO1JRrFmdH7pcAZWntAJMNwD68tIIxIZ/7S2xARri0zA + LiAITbAmnyAwgUuuKVyyTVE4cAY7u9l4v8UO4XwbFEV54LzoAJTl2brgVzqvoK21HcrGc2hpuYhicRHC + Tu2GR7iFLnMquPU/6GoS0vAUUKZvDrMJ1J+UQqpMYzAyTUeEWj7e7XFG4DVb7JQtxOcCL0gKEqBWN+Cr + y91ovdiGluYLUKmaIVcoIc3IhmT37u+zXN0FB2fP9tf7pfz/iTDho8VI3xwoZVR5RiEXC4NNSDcdydfE + Y2u3I3y7luh4v8kLCYV8qJqa0XXlKhobVGhUqtFAngXZeZAfPY5OLhdKFxeNZMmSjHhra+t5NNpM4tew + E07FGGmmI3n9cQi6yoJ35yIdfpfs8MG5TeDLTqO8XI6LpPxVDUoIswVoOHQEXaHb0efrix4OBxdcXPqK + mcwsgaXlCr3L6RkjhT6S2x+LgC47cDqsxvD+cjH21HEhqMhBmUwKSUYWxGGH0eQfgE4PD3xN6CKcZ7NR + sXTpffHSpR/waDQz4nKaFUgiAh7Ewv/Kcnh2vGNAQAcL6ZficCwqDLw9+35UeftA6eQEJYsFlaMjlIQG + goJQYWcXlWRhwRCRj2G966kZ48yLBfh2LkPW3VhwIqyQ6eYmkbNYT9ROzqhbuRJk7cFbufJ5rb09pMuX + Q2Rjw0ufP382OYvTrAB/VAD36ir4ddoaENzlAGp57CNm4tjcOdslzMWiOgeHB3IiQEQElNvZQbps2bOi + JUta8xcvpk7D9IJTxkigj+T3J0BANuJknNUkwv7kTOqLaAF/wYLlRYsWSaRM5qMqknkpyZwEb8tbtGhT + upXV63qX0zPn+FkyR57Zc+o+p65U6lajLhaqt/+qycxjz537xwIrq9ViG5uDpOwZxTY20STzYDJGBZ9+ + 9j+bvlm9RpisWf3cZKj/dU0mc968Oalvv22fbGn5pojJpHb+/22U+onNahxqfKzJkONmTAWmdvzETUej + /Q/6VSSzTfDXUQAAAABJRU5ErkJggg== diff --git a/iBMSC/MainWindow.vb b/iBMSC/MainWindow.vb index f94c9ebc2..8272cfd5d 100644 --- a/iBMSC/MainWindow.vb +++ b/iBMSC/MainWindow.vb @@ -3228,7 +3228,7 @@ RestartSorting: xSorted = False RefreshPanelAll() End Sub - Private Sub TBVCOptions_Click(sender As Object, e As EventArgs) Handles mnVCOptions.Click + Private Sub TBVCOptions_Click(sender As Object, e As EventArgs) Handles mnVCOptions.Click, BWAVColorOverride.Click Dim xDiag As New OpVisualOverride(FileName) xDiag.ShowDialog(Me) UpdateColumnsX() @@ -4607,6 +4607,53 @@ Jump2: POStatusRefresh() End Sub + Private Sub BWAVDuplicate_Click(sender As Object, e As EventArgs) Handles BWAVDuplicate.Click + Dim xIndices(LWAV.SelectedIndices.Count - 1) As Integer + LWAV.SelectedIndices.CopyTo(xIndices, 0) + + ' Duplicate WAVs + Dim xWAVDup(2 * (xIndices(UBound(xIndices)) - xIndices(0) + 1)) As String + ' Duplicate first selected WAV + xWAVDup(0) = hWAV(xIndices(0) + 1) + xWAVDup(1) = hWAV(xIndices(0) + 1) + Dim xID As Integer = 1 + For xI1 = 1 To UBound(xIndices) + ' If skipped indices, add same amount of skipped indices + If xIndices(xI1) - xIndices(xI1 - 1) > 1 Then + For xISkip = 2 To xIndices(xI1) - xIndices(xI1 - 1) + xID += 1 + xWAVDup(xID) = "" + Next + End If + + ' Continue duplicating selected WAVs + For xI2 = 0 To 1 + xID += 1 + xWAVDup(xID) = hWAV(xIndices(xI1) + 1) + Next + Next + ReDim Preserve xWAVDup(xID) + + ' Add duplicated WAV list to hWAV + Dim xIL0 As Integer = LWAV.SelectedIndex + Dim xIL1 As Integer + For xI3 = 0 To xID + xIL1 = xIL0 + xI3 + If xIL1 > LWAV.Items.Count - 1 Then xIL1 = LWAV.Items.Count - 1 : Exit For + hWAV(xIL1 + 1) = xWAVDup(xI3) + LWAV.Items.Item(xIL1) = C10to36(xIL1 + 1) & ": " & xWAVDup(xI3) + Next + + LWAV.SelectedIndices.Clear() + For xI1 = xIL0 To xIL1 + LWAV.SelectedIndices.Add(xI1) + Next + + If IsSaved Then SetIsSaved(False) + RefreshPanelAll() + POStatusRefresh() + End Sub + Private Sub mnMain_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles mnMain.MouseDown ', TBMain.MouseDown ', pttl.MouseDown, pIsSaved.MouseDown If e.Button = Windows.Forms.MouseButtons.Left Then ReleaseCapture() diff --git a/iBMSC/MiscButtons/WAVDuplicate.png b/iBMSC/MiscButtons/WAVDuplicate.png new file mode 100644 index 0000000000000000000000000000000000000000..d08a73ae57d8ae1e27c8a063f3ad302013d10e6e GIT binary patch literal 5735 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 J(ly&+{s(l+%E15t literal 0 HcmV?d00001 diff --git a/iBMSC/My Project/Resources.Designer.vb b/iBMSC/My Project/Resources.Designer.vb index 9558891c0..9006469a0 100644 --- a/iBMSC/My Project/Resources.Designer.vb +++ b/iBMSC/My Project/Resources.Designer.vb @@ -315,6 +315,16 @@ Namespace My.Resources End Get End Property + ''' + ''' Looks up a localized resource of type System.Drawing.Bitmap. + ''' + Friend ReadOnly Property WAVDuplicate() As System.Drawing.Bitmap + Get + Dim obj As Object = ResourceManager.GetObject("WAVDuplicate", resourceCulture) + Return CType(obj,System.Drawing.Bitmap) + End Get + End Property + ''' ''' Looks up a localized resource of type System.Drawing.Bitmap. ''' @@ -425,6 +435,16 @@ Namespace My.Resources End Get End Property + ''' + ''' Looks up a localized resource of type System.Drawing.Bitmap. + ''' + Friend ReadOnly Property x16Color() As System.Drawing.Bitmap + Get + Dim obj As Object = ResourceManager.GetObject("x16Color", resourceCulture) + Return CType(obj,System.Drawing.Bitmap) + End Get + End Property + ''' ''' Looks up a localized resource of type System.Drawing.Bitmap. ''' diff --git a/iBMSC/My Project/Resources.resx b/iBMSC/My Project/Resources.resx index 541df8aa8..d8e1a0bc8 100644 --- a/iBMSC/My Project/Resources.resx +++ b/iBMSC/My Project/Resources.resx @@ -118,8 +118,8 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - ..\MiscButtons\x16Lock.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\ImageButtonsSmall\x16Select.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\ImageButtonsSmall\x16settings.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -130,6 +130,9 @@ ..\ImageButtonsSmall\x16Up.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\ImageButtonsSmall\x16ShowWaveform.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + ..\ImageButtonsSmall\x16TimeSelection.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -151,9 +154,6 @@ ..\SplashScreenx.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\MiscButtons\WAVWidth.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - ..\ImageButtonsSmall\x16Play.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -175,6 +175,9 @@ ..\ImageButtonsSmall\x16Random.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\MiscButtons\lgheight.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + ..\MiscButtons\x16PlayerDefault.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -193,12 +196,12 @@ ..\ImageButtonsSmall\x16PreviewCheckN.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\ImageButtonsSmall\x16Select.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - ..\ImageButtons\ConvertNotesL.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\MiscButtons\x16Lock.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + ..\ImageButtonsSmall\Expand.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -217,11 +220,8 @@ ..\ImageButtonsSmall\x16Paste.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\MiscButtons\x16Add.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\ImageButtonsSmall\x16Down.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\ImageButtonsSmall\x16ShowFileNameN.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\ImageButtonsSmall\x16Cut.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -256,14 +256,17 @@ ..\ImageButtonsSmall\x16Import2.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\ImageButtonsSmall\x16ModifyLabelY.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + ..\ImageButtonsSmall\x16Associate.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\ImageButtonsSmall\x16NTInput.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\ImageButtonsSmall\x16Down.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\MiscButtons\lgheight.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\MiscButtons\x16Add.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\ImageButtonsSmall\x16PlayerOptions.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -277,9 +280,6 @@ ..\ImageButtonsSmall\x16MultiSelect.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\ImageButtonsSmall\x16ShowFileNameN.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - ..\ImageButtonsSmall\x16ShowFileName.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -295,6 +295,9 @@ ..\ImageButtons\ConvertNotesHV.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\ImageButtonsSmall\x16ShowWaveformN.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + ..\ImageButtonsSmall\x16VisualOptions.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -310,20 +313,20 @@ ..\ImageButtons\Statistics3.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\ImageButtonsSmall\x16Pen.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - ..\TransparentBG.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\ImageButtonsSmall\x16CheckErrorN.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\ImageButtonsSmall\x16Language.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + ..\ImageButtonsSmall\x16New.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\ImageButtonsSmall\x16ModifyLabelY.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\MiscButtons\WAVWidth.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\ImageButtons\ConvertNotesN.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -352,12 +355,15 @@ ..\MiscButtons\WAVSaturation.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\ImageButtonsSmall\x16Language.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\ImageButtonsSmall\x16Pen.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\..\..\backup\3.4.0.12\iBMSC\ImageButtonsSmall\x16Flip.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\ImageButtonsSmall\x16NTInput.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + ..\ImageButtonsSmall\CursorResizeRight.cur;System.Byte[], mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 @@ -370,6 +376,9 @@ ..\ImageButtonsSmall\x16PreviewCheck.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\MiscButtons\WAVDuplicate.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + ..\ImageButtonsSmall\x16Stop.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -403,10 +412,7 @@ ..\MiscButtons\lgwidth.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\ImageButtonsSmall\x16ShowWaveform.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\ImageButtonsSmall\x16ShowWaveformN.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\ImageButtonsSmall\x16Color.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a \ No newline at end of file From d209d3b0c7679c6e88dea6b83547e2cbc095042b Mon Sep 17 00:00:00 2001 From: psyk2642 <60137590+psyk2642@users.noreply.github.com> Date: Sat, 2 Apr 2022 00:34:58 +0800 Subject: [PATCH 095/257] Jack note detection Highlights jack notes. Current implementation makes the editor very laggy. --- iBMSC/MainWindow.vb | 47 ++++++++++++++++++++++++-- iBMSC/My Project/Resources.Designer.vb | 10 ++++++ iBMSC/My Project/Resources.resx | 3 ++ iBMSC/Option Windows/Note.vb | 1 + iBMSC/PanelDraw.vb | 19 +++++++++-- 5 files changed, 74 insertions(+), 6 deletions(-) diff --git a/iBMSC/MainWindow.vb b/iBMSC/MainWindow.vb index 8272cfd5d..a99db2410 100644 --- a/iBMSC/MainWindow.vb +++ b/iBMSC/MainWindow.vb @@ -169,7 +169,7 @@ Public Class MainWindow '----ErrorCheck Options Dim ErrorCheck As Boolean = True - Dim ErrorJackSpeed As Double = Notes(0).Value / 10000 / 192 + Dim ErrorJackSpeed As Double = 255 / 60 / 4 / 16 '----Header Options Dim hWAV(1295) As String @@ -1257,10 +1257,22 @@ Public Class MainWindow Private Sub UpdatePairing() Dim i As Integer, j As Integer + Dim xniArray0() As Integer + Select Case gXKeyMode + Case "SP" + xniArray0 = {niA1, niA2, niA3, niA4, niA5, niA6, niA7, niA8} + Case "PMS" + xniArray0 = {niA2, niA3, niA4, niA5, niA6, niD2, niD3, niD4, niD5} + Case "DP" + xniArray0 = {niA1, niA2, niA3, niA4, niA5, niA6, niA7, niA8, niD1, niD2, niD3, niD4, niD5, niD6, niD7, niD8} + Case Else + xniArray0 = {niA1, niA2, niA3, niA4, niA5, niA6, niA7, niA8} + End Select If NTInput Then For i = 0 To UBound(Notes) Notes(i).HasError = False + Notes(i).ErrorType = 0 Notes(i).LNPair = 0 If Notes(i).Length < 0 Then Notes(i).Length = 0 Next @@ -1295,11 +1307,25 @@ Public Class MainWindow End If End If End If + + ' Jack checking + Dim xIComp = i - 1 + Do While xIComp > 0 + If Notes(xIComp).VPosition = Notes(i).VPosition Then xIComp -= 1 : Continue Do + If GetTimeFromVPosition(Notes(i).VPosition) - GetTimeFromVPosition(Notes(xIComp).VPosition) > ErrorJackSpeed Then Exit Do + If xniArray0.Contains(Notes(i).ColumnIndex) AndAlso Notes(i).ColumnIndex = Notes(xIComp).ColumnIndex Then + Notes(i).HasError = True + Notes(i).ErrorType = 1 + Exit Do + End If + xIComp -= 1 + Loop Next Else For i = 0 To UBound(Notes) Notes(i).HasError = False + Notes(i).ErrorType = 0 Notes(i).LNPair = 0 Next @@ -1376,6 +1402,19 @@ EndSearch: Next End If + + ' Jack checking + Dim xIComp = i - 1 + Do While xIComp > 0 + If Notes(xIComp).VPosition = Notes(i).VPosition Then xIComp -= 1 : Continue Do + If GetTimeFromVPosition(Notes(i).VPosition) - GetTimeFromVPosition(Notes(xIComp).VPosition) > ErrorJackSpeed Then Exit Do + If xniArray0.Contains(Notes(i).ColumnIndex) AndAlso Notes(i).ColumnIndex = Notes(xIComp).ColumnIndex Then + Notes(i).HasError = True + Notes(i).ErrorType = 1 + Exit Do + End If + xIComp -= 1 + Loop Next @@ -2584,16 +2623,18 @@ StartCount: If Not NTInput Then Dim stop_contrib As Double Dim bpm_contrib As Double + Dim duration = 0.0 For i = 0 To bpm_notes.Count() - 1 ' az: sum bpm contribution first - Dim duration = 0.0 + ' P: Yeah but not all of them Dim current_note = bpm_notes.ElementAt(i) Dim notevpos = Math.Max(0, current_note.VPosition) + If notevpos > vpos Then Exit For If i + 1 <> bpm_notes.Count() Then Dim next_note = bpm_notes.ElementAt(i + 1) - duration = next_note.VPosition - notevpos + duration = Math.Min(next_note.VPosition, vpos) - notevpos Else duration = vpos - notevpos End If diff --git a/iBMSC/My Project/Resources.Designer.vb b/iBMSC/My Project/Resources.Designer.vb index 9006469a0..c9627dadf 100644 --- a/iBMSC/My Project/Resources.Designer.vb +++ b/iBMSC/My Project/Resources.Designer.vb @@ -220,6 +220,16 @@ Namespace My.Resources End Get End Property + ''' + ''' Looks up a localized resource of type System.Drawing.Bitmap. + ''' + Friend ReadOnly Property ImageErrorR() As System.Drawing.Bitmap + Get + Dim obj As Object = ResourceManager.GetObject("ImageErrorR", resourceCulture) + Return CType(obj,System.Drawing.Bitmap) + End Get + End Property + ''' ''' Looks up a localized resource of type System.Drawing.Bitmap. ''' diff --git a/iBMSC/My Project/Resources.resx b/iBMSC/My Project/Resources.resx index d8e1a0bc8..cfb52a9b2 100644 --- a/iBMSC/My Project/Resources.resx +++ b/iBMSC/My Project/Resources.resx @@ -415,4 +415,7 @@ ..\ImageButtonsSmall\x16Color.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\ImageButtons\ImageErrorR.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + \ No newline at end of file diff --git a/iBMSC/Option Windows/Note.vb b/iBMSC/Option Windows/Note.vb index 8353931ae..0d26a0ecf 100644 --- a/iBMSC/Option Windows/Note.vb +++ b/iBMSC/Option Windows/Note.vb @@ -13,6 +13,7 @@ Public LNPair As Integer Public Selected As Boolean Public HasError As Boolean + Public ErrorType As Integer 'Public TempBoolean As Boolean Public TempSelected As Boolean diff --git a/iBMSC/PanelDraw.vb b/iBMSC/PanelDraw.vb index 74db1404a..b44541630 100644 --- a/iBMSC/PanelDraw.vb +++ b/iBMSC/PanelDraw.vb @@ -682,8 +682,14 @@ Partial Public Class MainWindow 'e.Graphics.DrawString(sNote.TimeOffset.ToString("0.##"), New Font("Verdana", 9), Brushes.Cyan, _ ' New Point(HorizontalPositiontoDisplay(nLeft(sNote.ColumnIndex + 1), xHS), VerticalPositiontoDisplay(sNote.VPosition, xVS, xHeight) - vo.kHeight - 2)) - 'If ErrorCheck AndAlso (sNote.LongNote Xor sNote.PairWithI <> 0) Then e.Graphics.DrawImage(My.Resources.ImageError, _ - If ErrorCheck AndAlso sNote.HasError Then e.Graphics.DrawImage(My.Resources.ImageError, + Dim ErrorGraphics As Bitmap + Select Case sNote.ErrorType + Case 1 + ErrorGraphics = My.Resources.ImageErrorR + Case Else + ErrorGraphics = My.Resources.ImageError + End Select + If ErrorCheck AndAlso sNote.HasError Then e.Graphics.DrawImage(ErrorGraphics, CInt(HorizontalPositiontoDisplay(xnLeft + xColumnWidth / 2, xHS) - 12), CInt(NoteRowToPanelHeight(sNote.VPosition, xVS, xHeight) - vo.kHeight / 2 - 12), 24, 24) @@ -834,8 +840,15 @@ Partial Public Class MainWindow End If ' Errors + Dim ErrorGraphics As Bitmap + Select Case sNote.ErrorType + Case 1 + ErrorGraphics = My.Resources.ImageErrorR + Case Else + ErrorGraphics = My.Resources.ImageError + End Select If ErrorCheck AndAlso sNote.HasError Then - e.Graphics.DrawImage(My.Resources.ImageError, + e.Graphics.DrawImage(ErrorGraphics, CInt(HorizontalPositiontoDisplay(xnLeft + xColumnWidth / 2, xHS) - 12), CInt(NoteRowToPanelHeight(sNote.VPosition, xVS, xHeight) - vo.kHeight / 2 - 12), 24, 24) From 899e69d268a7e7db482f6b01402101fcf7bef137 Mon Sep 17 00:00:00 2001 From: psyk2642 <60137590+psyk2642@users.noreply.github.com> Date: Sat, 2 Apr 2022 00:51:38 +0800 Subject: [PATCH 096/257] Fixed GetTimeFromVPosition Now bpm_contrib does not count all of the BPM notes --- iBMSC/MainWindow.vb | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/iBMSC/MainWindow.vb b/iBMSC/MainWindow.vb index 8272cfd5d..56767e1e3 100644 --- a/iBMSC/MainWindow.vb +++ b/iBMSC/MainWindow.vb @@ -2584,16 +2584,18 @@ StartCount: If Not NTInput Then Dim stop_contrib As Double Dim bpm_contrib As Double + Dim duration = 0.0 For i = 0 To bpm_notes.Count() - 1 ' az: sum bpm contribution first - Dim duration = 0.0 + ' P: Yeah but not all of them Dim current_note = bpm_notes.ElementAt(i) Dim notevpos = Math.Max(0, current_note.VPosition) + If notevpos > vpos Then Exit For If i + 1 <> bpm_notes.Count() Then Dim next_note = bpm_notes.ElementAt(i + 1) - duration = next_note.VPosition - notevpos + duration = Math.Min(next_note.VPosition, vpos) - notevpos Else duration = vpos - notevpos End If From 1615f540a07d99c351a353428984e4273e489aa2 Mon Sep 17 00:00:00 2001 From: psyk2642 <60137590+psyk2642@users.noreply.github.com> Date: Sat, 2 Apr 2022 22:42:18 +0800 Subject: [PATCH 097/257] Updated jack note detection to only check for errors when note is being highlighted --- iBMSC/MainWindow.vb | 38 ++++++++++++++++---------------------- 1 file changed, 16 insertions(+), 22 deletions(-) diff --git a/iBMSC/MainWindow.vb b/iBMSC/MainWindow.vb index a99db2410..41be0bc15 100644 --- a/iBMSC/MainWindow.vb +++ b/iBMSC/MainWindow.vb @@ -1309,17 +1309,7 @@ Public Class MainWindow End If ' Jack checking - Dim xIComp = i - 1 - Do While xIComp > 0 - If Notes(xIComp).VPosition = Notes(i).VPosition Then xIComp -= 1 : Continue Do - If GetTimeFromVPosition(Notes(i).VPosition) - GetTimeFromVPosition(Notes(xIComp).VPosition) > ErrorJackSpeed Then Exit Do - If xniArray0.Contains(Notes(i).ColumnIndex) AndAlso Notes(i).ColumnIndex = Notes(xIComp).ColumnIndex Then - Notes(i).HasError = True - Notes(i).ErrorType = 1 - Exit Do - End If - xIComp -= 1 - Loop + If Notes(i).TempMouseDown Then CheckJack(i, xniArray0) Next Else @@ -1404,17 +1394,7 @@ EndSearch: End If ' Jack checking - Dim xIComp = i - 1 - Do While xIComp > 0 - If Notes(xIComp).VPosition = Notes(i).VPosition Then xIComp -= 1 : Continue Do - If GetTimeFromVPosition(Notes(i).VPosition) - GetTimeFromVPosition(Notes(xIComp).VPosition) > ErrorJackSpeed Then Exit Do - If xniArray0.Contains(Notes(i).ColumnIndex) AndAlso Notes(i).ColumnIndex = Notes(xIComp).ColumnIndex Then - Notes(i).HasError = True - Notes(i).ErrorType = 1 - Exit Do - End If - xIComp -= 1 - Loop + If Notes(i).TempMouseDown Then CheckJack(i, xniArray0) Next @@ -1433,6 +1413,20 @@ EndSearch: Next End Sub + Private Sub CheckJack(ByVal xIN As Integer, ByVal xniArray0() As Integer) + Dim xIComp = xIN - 1 + Do While xIComp > 0 + If Notes(xIComp).VPosition = Notes(xIN).VPosition Then xIComp -= 1 : Continue Do + If GetTimeFromVPosition(Notes(xIN).VPosition) - GetTimeFromVPosition(Notes(xIComp).VPosition) > ErrorJackSpeed Then Exit Do + If xniArray0.Contains(Notes(xIN).ColumnIndex) AndAlso Notes(xIN).ColumnIndex = Notes(xIComp).ColumnIndex Then + Notes(xIN).HasError = True + Notes(xIN).ErrorType = 1 + Exit Do + End If + xIComp -= 1 + Loop + End Sub + Public Sub ExceptionSave(ByVal Path As String) SaveiBMSC(Path) End Sub From bd29b7f4e1818c5bce2c918faa62adc5118b651d Mon Sep 17 00:00:00 2001 From: psyk2642 <60137590+psyk2642@users.noreply.github.com> Date: Sun, 3 Apr 2022 00:00:55 +0800 Subject: [PATCH 098/257] Code revision --- iBMSC/MainWindow.vb | 37 ++++--------------------------------- iBMSC/PanelDraw.vb | 12 +++++++++++- iBMSC/PanelEvents.vb | 13 +------------ 3 files changed, 16 insertions(+), 46 deletions(-) diff --git a/iBMSC/MainWindow.vb b/iBMSC/MainWindow.vb index 56767e1e3..a57a5cb8b 100644 --- a/iBMSC/MainWindow.vb +++ b/iBMSC/MainWindow.vb @@ -161,6 +161,7 @@ Public Class MainWindow Dim hCOM(1295) As String ' Dim hCOMNum As Integer = 0 Dim gXKeyMode As String = "SP" ' Determines from column width 7key mode, 9key mode or 14key mode + Dim gXKeyCol() As Integer Dim wLWAV(1295) As wWav '----AutoSave Options @@ -2629,17 +2630,7 @@ StartCount: If Not NTInput Then ' Array 0: Unmodified array ' Array 1: Modified array based on range ' Array R: Array 1 reversed - Dim xniArray0() As Integer - Select Case gXKeyMode - Case "SP" - xniArray0 = {niA1, niA2, niA3, niA4, niA5, niA6, niA7, niA8} - Case "PMS" - xniArray0 = {niA2, niA3, niA4, niA5, niA6, niD2, niD3, niD4, niD5} - Case "DP" - xniArray0 = {niA1, niA2, niA3, niA4, niA5, niA6, niA7, niA8, niD1, niD2, niD3, niD4, niD5, niD6, niD7, niD8} - Case Else - xniArray0 = {niA1, niA2, niA3, niA4, niA5, niA6, niA7, niA8} - End Select + Dim xniArray0() As Integer = gXKeyCol ' Dim xniArray1 = Integer() ' xniArray0 ' New function: Declare an array to see the range of selected notes. B columns ignored. @@ -2770,17 +2761,7 @@ DoNothing: ' Array 0: Unmodified array ' Array 1: Modified array based on range ' Array R: Array 1 randomized - Dim xniArray0() As Integer - Select Case gXKeyMode - Case "SP" - xniArray0 = {niA1, niA2, niA3, niA4, niA5, niA6, niA7, niA8} - Case "PMS" - xniArray0 = {niA2, niA3, niA4, niA5, niA6, niD2, niD3, niD4, niD5} - Case "DP" - xniArray0 = {niA1, niA2, niA3, niA4, niA5, niA6, niA7, niA8, niD1, niD2, niD3, niD4, niD5, niD6, niD7, niD8} - Case Else - xniArray0 = {niA1, niA2, niA3, niA4, niA5, niA6, niA7, niA8} - End Select + Dim xniArray0() As Integer = gXKeyCol ' Dim xniArray1 = Integer() ' xniArray0 ' New function: Declare an array to see the range of selected notes. B columns ignored. @@ -2948,17 +2929,7 @@ DoNothing: Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo ' Array 1: Unmodified array - Dim xniArray1() As Integer - Select Case gXKeyMode - Case "SP" - xniArray1 = {niA1, niA2, niA3, niA4, niA5, niA6, niA7, niA8} - Case "PMS" - xniArray1 = {niA2, niA3, niA4, niA5, niA6, niD2, niD3, niD4, niD5} - Case "DP" - xniArray1 = {niA1, niA2, niA3, niA4, niA5, niA6, niA7, niA8, niD1, niD2, niD3, niD4, niD5, niD6, niD7, niD8} - Case Else - xniArray1 = {niA1, niA2, niA3, niA4, niA5, niA6, niA7, niA8} - End Select + Dim xniArray1() As Integer = gXKeyCol Dim xniArrayLen = xniArray1.Length diff --git a/iBMSC/PanelDraw.vb b/iBMSC/PanelDraw.vb index 74db1404a..3d8783555 100644 --- a/iBMSC/PanelDraw.vb +++ b/iBMSC/PanelDraw.vb @@ -78,8 +78,18 @@ Partial Public Class MainWindow 'Bg color DrawBackgroundColor(e1, xTHeight, xTWidth, xPanelHScroll, xI1) + ' Determine current mode: PMS, DP or SP - If GetColumn(5).Width = 0 Then gXKeyMode = "PMS" Else If CHPlayer.SelectedIndex <> 0 Then gXKeyMode = "DP" Else gXKeyMode = "SP" + If GetColumn(5).Width = 0 Then + gXKeyMode = "PMS" + gXKeyCol = {niA2, niA3, niA4, niA5, niA6, niD2, niD3, niD4, niD5} + ElseIf CHPlayer.SelectedIndex <> 0 Then + gXKeyMode = "DP" + gXKeyCol = {niA1, niA2, niA3, niA4, niA5, niA6, niA7, niA8, niD1, niD2, niD3, niD4, niD5, niD6, niD7, niD8} + Else + gXKeyMode = "SP" + gXKeyCol = {niA1, niA2, niA3, niA4, niA5, niA6, niA7, niA8} + End If xI1 = DrawPanelLines(e1, xTHeight, xTWidth, xPanelHScroll, xPanelDisplacement, xVSu) diff --git a/iBMSC/PanelEvents.vb b/iBMSC/PanelEvents.vb index e238cdcc2..4e4fe46a4 100644 --- a/iBMSC/PanelEvents.vb +++ b/iBMSC/PanelEvents.vb @@ -828,19 +828,8 @@ Partial Public Class MainWindow If IsNoteVisible(xI1, xTHeight, xVS) AndAlso IsLabelMatch(Notes(xI1), NoteIndex) Then Notes(xI1).Selected = Not Notes(xI1).Selected Next ElseIf ModifierMultiselectNoteActive() Then - Dim xniArray1() As Integer - Select Case gXKeyMode - Case "SP" - xniArray1 = {niA1, niA2, niA3, niA4, niA5, niA6, niA7, niA8, niB} - Case "PMS" - xniArray1 = {niA2, niA3, niA4, niA5, niA6, niD2, niD3, niD4, niD5, niB} - Case "DP" - xniArray1 = {niA1, niA2, niA3, niA4, niA5, niA6, niA7, niA8, niD1, niD2, niD3, niD4, niD5, niD6, niD7, niD8, niB} - Case Else - xniArray1 = {niA1, niA2, niA3, niA4, niA5, niA6, niA7, niA8, niB} - End Select For xI1 = 0 To UBound(Notes) - If IsLabelMatch(Notes(xI1), NoteIndex) AndAlso xniArray1.Contains(Notes(xI1).ColumnIndex) Then Notes(xI1).Selected = Not Notes(xI1).Selected + If IsLabelMatch(Notes(xI1), NoteIndex) AndAlso Iscolumnsound(Notes(xI1).ColumnIndex) Then Notes(xI1).Selected = Not Notes(xI1).Selected Next Else ' az description: If the clicked note is not selected, select only this one. From 51f1083ea320e44799655bd0d2536604243fc882 Mon Sep 17 00:00:00 2001 From: psyk2642 <60137590+psyk2642@users.noreply.github.com> Date: Sun, 3 Apr 2022 14:35:35 +0800 Subject: [PATCH 099/257] Added technical error check + Miscellaneous - Added technical error check (jack notes, impossible chords for PMS, and impossible scratches for DP). Not a toggle because of performance issue. - Changed shortcut for "Select Section" to Ctrl+Alt+R. --- README.md | 6 +- iBMSC/EditorPersistent.vb | 5 + .../x16CheckErrorTechnical.png | Bin 0 -> 5995 bytes iBMSC/MainWindow.designer.vb | 34 ++- iBMSC/MainWindow.vb | 161 ++++++++++++-- iBMSC/My Project/Resources.Designer.vb | 10 + iBMSC/My Project/Resources.resx | 91 ++++---- iBMSC/Option Windows/OpGeneral.Designer.vb | 208 ++++++++++++++---- iBMSC/Option Windows/OpGeneral.vb | 21 +- iBMSC/PanelEvents.vb | 8 +- 10 files changed, 418 insertions(+), 126 deletions(-) create mode 100644 iBMSC/ImageButtonsSmall/x16CheckErrorTechnical.png diff --git a/README.md b/README.md index 8da62c69d..bec2b27f7 100644 --- a/README.md +++ b/README.md @@ -25,7 +25,7 @@ Listed in the order added. * Added note search function (goto measure except it's goto note). One note per VPosition only. * Added sort function. Selected notes are sorted based on their VPosition and Value. * Added mBMplay as a default player. -* Added support for #RANDOM. Supports expansion field and main data field only. Not tested thoroughly, nested #RANDOM in "Modify Section" only. Accessible via the "Select Section" button in Expansion Code or via Ctrl+R. +* Added support for #RANDOM. Supports expansion field and main data field only. Not tested thoroughly, nested #RANDOM in "Modify Section" only. Accessible via the "Select Section" button in Expansion Code or via Ctrl+Alt+R. * Added color overriding options where you can specify a range of notes to appear a specific color, such as red notes for drums and green notes for the piano. Accessible via the Options tab or via Shift+F12. * Added comment notes. Comment notes will be saved as #ECMD and #ECOM within the same bms/pms file. Not tested thoroughly. * The window will now follow notes being moved by arrow keys. @@ -35,6 +35,7 @@ Listed in the order added. * Added "Insert/Remove Space" in Time Selection Tool. Allows inserting space into the measure, either measure only, notes only or both. Also accessible via Ctrl+Insert, Shift+Insert and Ctrl+Shift+Insert respectively. * Added ability to copy and paste measure lengths over multiple measures. * Added ability to duplicate #WAV's. +* Added technical error check (Jack notes, impossible chords for PMS, and impossible scratches for DP). Not a toggle because running it live will severely reduce performance. Accessible via the Options tab or via Ctrl+Alt+E. ## Keyboard shortcuts * Changed keybinding to allow note placement between D1 and D8: @@ -57,7 +58,7 @@ Listed in the order added. * F12 - Visual Options * Added advanced statistics (Ctrl+Shift+T). * Added keyboard shortcuts for previewing and replacing keysounds in the Sounds List (Spacebar to preview, enter to replace). -* Added "Select Section" (Ctrl+R). +* Added "Select Section" (Ctrl+Alt+R). * Added color overriding options (Shift+F12). * Revised shortcuts for grid division values: * Period now increases the division value, and comma now decreases the division value. @@ -68,6 +69,7 @@ Listed in the order added. * Added shortcut for scrolling through #WAV selection (Shift+Scroll). * Added shortcut for defining measures with Time Selection Tool (Insert). * Added shortcut for inserting/removing space with Time Selection Tool (Ctrl+Insert for measure only, Shift+Insert for notes only, and Ctrl+Shift+Insert for both) +* Added shortcut for techincal error check (Ctrl+Alt+E) ## New dialog/option boxes diff --git a/iBMSC/EditorPersistent.vb b/iBMSC/EditorPersistent.vb index 4ae8818c1..4dd1f56c2 100644 --- a/iBMSC/EditorPersistent.vb +++ b/iBMSC/EditorPersistent.vb @@ -85,6 +85,8 @@ Partial Public Class MainWindow .WriteAttributeString("PreviewOnClick", PreviewOnClick) '.WriteAttributeString("PreviewErrorCheck", PreviewErrorCheck) .WriteAttributeString("ClickStopPreview", ClickStopPreview) + .WriteAttributeString("JackBPM", ErrorJackBPM) + .WriteAttributeString("JackTH", ErrorJackTH) .WriteEndElement() .WriteStartElement("Save") @@ -357,6 +359,9 @@ Partial Public Class MainWindow TBPreviewOnClick_Click(TBPreviewOnClick, New System.EventArgs) XMLLoadAttribute(.GetAttribute("ClickStopPreview"), ClickStopPreview) + + XMLLoadAttribute(.GetAttribute("JackBPM"), ErrorJackBPM) + XMLLoadAttribute(.GetAttribute("JackTH"), ErrorJackTH) End With End If diff --git a/iBMSC/ImageButtonsSmall/x16CheckErrorTechnical.png b/iBMSC/ImageButtonsSmall/x16CheckErrorTechnical.png new file mode 100644 index 0000000000000000000000000000000000000000..d859a8578b0c90c78ffd8bb4ffea656999cb5ae7 GIT binary patch literal 5995 zcmeHKc{o(<`yYvv7E8$z#zBX{ zS7ZxOlr~;TUhxu@luFh&OW!kE-nxF@f4Z*U_rK=4&YW|e=W~DV`~KYb^PF?yDDFuxk>B0v->?1 zEUMD&g?BppRX3TO&&r;Q8mc&+_>#L~?$us(abes(J;%F~)RH^a{R7s4S@Hf6n{&F? z{nZqw;#M2wxsuz^mDR2LdtN$hxj4qv_B!{U9bP?tfum*pBlhne4sU;y$co;rX3txD zxk1l$-9$MyL#8_VMySL3vm1}bC}rz%4!UYA_~3Wi|J;HjkIhV@jK^eBy%TG6#phb% zZ`e<5P8!Xh4S!1gh`Ui3RzKZLEm&=pARAVp78yS`S70jAKG)}POym567mxazU)f%v z#a+KjNI!WVdw>)lzEdtOrd``hy=MAQ{^s+Lay17{FLtXX=fZMTMmj=)pf^?*K=HL( z9H}2(bmVFbzwgG9r0M-cfuz$epz~SP#(cxAItyEED2^Gct*<}z*y$5|VL@_-_vKyQ z3LBrG82Z=VDapdFn&iD&I8|X4ZFXhp!nTAD?#VHAW%*eKA4^o;%be0nZ|PaHR^xYw zUj3ho8I&XQLM=puK zq*h?C(y`UmV71{kmy4@{w+3F3RM}-dR@1!pBqg|l+_rVwaHdBhar|j+F!Fi=N|G6M z)RH;4A=~{_=ATEg_bq`TlM)1lQ@lMiH#N<~4`^Qy_?^`gAw^J>dIw^RJ{XkG(U z+p5z!$21^{2ogjw$=gp4t-?#%& zistJ_WVwCb$wIA4UD)KRYwsvpd$fiY6=%e5%sZPLnRL;1H!d@oYhzk=41k&&oB`tbWf->I>vI8oT&eA3(r5 z+SWMjQX9CgQ_^PDJChR@4Tl6>Xmbd5o7t}r3ae1W$-i14mU9j}HP#fY_Mdq0_T97i{vCh#$0}lLcR(t~>pyWzsyp8l z-v8~26W&9Kx?|hP^0Sm|tL~@?L`NWMm>{mIGsrCR_mGrSxasrjgEGC#gD)2qWQR*m z6!|YsV^als`r1a!5GQ29g~}nx=v?3O zow{+`u1#7j#7gpBiQkgcX`}Gu$oCS@;sD{r7T39<5ziOe$0FYrX=yk)b`Itj`3~h3 zx`<>Kx0J5PN5$ovXPMbE(_=J==_~`=adgJhdtT2|W6qo+?)r2;gyyKXr|2H`i0`sZ z^`LT-96F>Q_$|)PIA`QCUPW6a?L7VT&P&IaKWh?BqAVrPJ(m8T= z!NKSN^YwubJ`5z{PTX$#km9n)m4{_)*5ZRk(2tv@3#P-P@0aCI)!aNp{S=gKvy*+%Te=hik%?uKNE9-O^mWGv_xaP2$wcP{n>Dv~wy8N7!NQe7Z&S2y#^n8$ z?NzLx=Cb|#mPN-m)n<}ODbJp5C|6rE<8zr%j(3!ot~2#m zvrg@Zwuu;JtYI{Q3$>@3Hn08zVSM@;K0j46xchi5>O{xZKX+WPIEp`+WTOIOKB73v zsbyUa%1L)_jk?!hJur2AAmz>$dHtpZmneD`QSYs%x(j^MPl=A(p`lasE?s?_4n)i4 zu8GNFj=2Zq6PBM_I@>OfnkGkFFK|fMSHtOjR#|XoPu=t7sHvPyhX$OZPT8G@RG(`# zf4*=3_RN6$!v&>@ZHu5JKltB}MThGGlmF--_H=i5cGU)Ko1KN&91t9DGa85jAI<7) z@Dc3e=1O4jI0zb(M+XoR4j+6(Lm-yc55$0{`hH~SR zfIzl$gaFta;qJwV2xeF?Vb)elEF}bxfCGqVPzfi5D5L*Ni7xPycpj)7S%fm#ZfEP|)K;};6>jtC1BiTDI0QY;oD#8?DR5P(Em zSXdxY7$gP*2N7`LZmx(XfpdlWQi{(U_JEKfVDm+69v3R*q|td{A|eb1&O^V($KkuV zeWT|Jzo-D}ft1krNHhY4o9mi-lWQ zU`@eW3jmE};+PCP?K=t&0UPW}TFCcNNvW716#xJ%JcEUUqbwLSIL;i4g43878k~;9 z(Jhz&4U1->=Bbzrf+J7Bp@HROb7%nolFtp8pO6Ypu%(cRFbv`|bbf>qLKCq-18@zn zxlEo|_%GOt%>g!xXi`1VW}pCOI5QmD0)@etq5lPK1q4E{7p1Id6axF1Sy~tZm<}i{ zP1>m-!Mp{S4S^&8Xd<4#i^mHg!lWTUrIzyz4z>JT7H75)MC_LK{FkoZ41|8Z`@9H3 z*z;3R=zQZ6XpGNJgtTygIqwLx`#i-6q;UfPaD{(qsjuVg|57e9CJxI0@EAB)7CKmQ zfCk57@eDW~V`fTc(Pwe2tqaD z2Vv`$FYoPTJ!mF#QH0(Q~c?{QxQjg8NiHmCg;HJ2;{A6(9aJNNkCT(A< zc+cU#kDEUnt*(nUpENNDJHxtL(SGKyrBD0$AJ?X6Z-C4W6gRXlgfO$;>qiC8rkK=N zvM!qY9&;a?d$XzJ1mb;%oH+c%;Nt^T-7`H7M&pECqZy}rx}SKalk{H$S*IS2R@*qm zUMHU$BH#A-+=q6USO`Krd4b!kzEvANHyidHJh#OxE(75Z;|P~7ggXQ)1LWMy|zL3uvw zeBCyCs?SzANqHpYLR4p3`kPm>6-x?IM`32z1uz9kp+=La_%9y0?S5KK0vTdcIZ^&5 zRP9EkVQDiw!?t)$$cvyHRjSe%oz_8A`qkf7uw;btAMT~p{bQ`#B*@oMh75-AQ*ZgI zjJY@K9ImsuD`;8WiPqAJ^;a3WxZ_53f~D#D_9Nblng&YOz1-6hb=$8j(55IH^Sapm zZj!<=SW3f7Bl!`#%BFM*;+njEbFK1AM)ialrojb|AF7{BG)1Tbkb#{xc`r2H8 zDCu6;6J#Vd!O~kYQK>1HL{Hyj1a^%zJjFMJc04>8qA(*{srY1M^D_5%u-_nL2Y34` IcDrK!0}csvMF0Q* literal 0 HcmV?d00001 diff --git a/iBMSC/MainWindow.designer.vb b/iBMSC/MainWindow.designer.vb index e844fd3b7..992c3bbe7 100644 --- a/iBMSC/MainWindow.designer.vb +++ b/iBMSC/MainWindow.designer.vb @@ -105,6 +105,7 @@ Partial Class MainWindow Me.mnShowFileName = New System.Windows.Forms.ToolStripMenuItem() Me.mnShowWaveform = New System.Windows.Forms.ToolStripMenuItem() Me.ToolStripSeparator20 = New System.Windows.Forms.ToolStripSeparator() + Me.mnTechnicalErrorCheck = New System.Windows.Forms.ToolStripMenuItem() Me.mnGOptions = New System.Windows.Forms.ToolStripMenuItem() Me.mnVOptions = New System.Windows.Forms.ToolStripMenuItem() Me.mnVCOptions = New System.Windows.Forms.ToolStripMenuItem() @@ -127,11 +128,11 @@ Partial Class MainWindow Me.POBSRandom = New System.Windows.Forms.ToolStripMenuItem() Me.POBHRandom = New System.Windows.Forms.ToolStripMenuItem() Me.POBSort = New System.Windows.Forms.ToolStripMenuItem() + Me.POConvert = New System.Windows.Forms.ToolStripDropDownButton() Me.mnPreview = New System.Windows.Forms.ToolStripMenuItem() Me.mnPlayB = New System.Windows.Forms.ToolStripMenuItem() Me.mnPlay = New System.Windows.Forms.ToolStripMenuItem() Me.mnStop = New System.Windows.Forms.ToolStripMenuItem() - Me.POConvert = New System.Windows.Forms.ToolStripDropDownButton() Me.TBMain = New System.Windows.Forms.ToolStrip() Me.TBNew = New System.Windows.Forms.ToolStripButton() Me.TBOpen = New System.Windows.Forms.ToolStripSplitButton() @@ -1051,7 +1052,7 @@ Partial Class MainWindow ' 'mnOptions ' - Me.mnOptions.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.mnNTInput, Me.mnErrorCheck, Me.mnPreviewOnClick, Me.mnShowFileName, Me.mnShowWaveform, Me.ToolStripSeparator20, Me.mnGOptions, Me.mnVOptions, Me.mnVCOptions, Me.mnPOptions, Me.mnLanguage, Me.mnTheme}) + Me.mnOptions.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.mnNTInput, Me.mnErrorCheck, Me.mnPreviewOnClick, Me.mnShowFileName, Me.mnShowWaveform, Me.ToolStripSeparator20, Me.mnTechnicalErrorCheck, Me.mnGOptions, Me.mnVOptions, Me.mnVCOptions, Me.mnPOptions, Me.mnLanguage, Me.mnTheme}) Me.mnOptions.Name = "mnOptions" Me.mnOptions.Size = New System.Drawing.Size(61, 19) Me.mnOptions.Text = "&Options" @@ -1108,6 +1109,13 @@ Partial Class MainWindow Me.ToolStripSeparator20.Name = "ToolStripSeparator20" Me.ToolStripSeparator20.Size = New System.Drawing.Size(250, 6) ' + 'mnTechnicalErrorCheck + ' + Me.mnTechnicalErrorCheck.Image = Global.iBMSC.My.Resources.Resources.x16CheckErrorTechnical + Me.mnTechnicalErrorCheck.Name = "mnTechnicalErrorCheck" + Me.mnTechnicalErrorCheck.Size = New System.Drawing.Size(253, 22) + Me.mnTechnicalErrorCheck.Text = "Technical &Error Check" + ' 'mnGOptions ' Me.mnGOptions.Image = Global.iBMSC.My.Resources.Resources.x16GeneralOptions @@ -1151,6 +1159,7 @@ Partial Class MainWindow ' Me.cmnConversion.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.POBLong, Me.POBShort, Me.POBLongShort, Me.ToolStripSeparator10, Me.POBHidden, Me.POBVisible, Me.POBHiddenVisible, Me.ToolStripSeparator11, Me.POBModify, Me.POBMirror, Me.POBFlip, Me.POBRandom, Me.POBRRandom, Me.POBSRandom, Me.POBHRandom, Me.POBSort}) Me.cmnConversion.Name = "cmnLanguage" + Me.cmnConversion.OwnerItem = Me.mnConversion Me.cmnConversion.Size = New System.Drawing.Size(222, 324) ' 'POBLong @@ -1263,6 +1272,16 @@ Partial Class MainWindow Me.POBSort.Size = New System.Drawing.Size(221, 22) Me.POBSort.Text = "S&ort" ' + 'POConvert + ' + Me.POConvert.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image + Me.POConvert.DropDown = Me.cmnConversion + Me.POConvert.Image = Global.iBMSC.My.Resources.Resources.ConvertNotes + Me.POConvert.ImageTransparentColor = System.Drawing.Color.Magenta + Me.POConvert.Name = "POConvert" + Me.POConvert.Size = New System.Drawing.Size(29, 22) + Me.POConvert.Text = "Convert Notes" + ' 'mnPreview ' Me.mnPreview.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.mnPlayB, Me.mnPlay, Me.mnStop}) @@ -1294,16 +1313,6 @@ Partial Class MainWindow Me.mnStop.Size = New System.Drawing.Size(201, 22) Me.mnStop.Text = "&Stop" ' - 'POConvert - ' - Me.POConvert.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image - Me.POConvert.DropDown = Me.cmnConversion - Me.POConvert.Image = Global.iBMSC.My.Resources.Resources.ConvertNotes - Me.POConvert.ImageTransparentColor = System.Drawing.Color.Magenta - Me.POConvert.Name = "POConvert" - Me.POConvert.Size = New System.Drawing.Size(29, 22) - Me.POConvert.Text = "Convert Notes" - ' 'TBMain ' Me.TBMain.AccessibleRole = System.Windows.Forms.AccessibleRole.ToolBar @@ -4692,4 +4701,5 @@ Partial Class MainWindow Friend WithEvents BInsertOrRemoveSpaceMN As ToolStripButton Friend WithEvents BWAVDuplicate As Button Friend WithEvents BWAVColorOverride As Button + Friend WithEvents mnTechnicalErrorCheck As ToolStripMenuItem End Class diff --git a/iBMSC/MainWindow.vb b/iBMSC/MainWindow.vb index e10e6c0eb..ea7906e94 100644 --- a/iBMSC/MainWindow.vb +++ b/iBMSC/MainWindow.vb @@ -170,7 +170,9 @@ Public Class MainWindow '----ErrorCheck Options Dim ErrorCheck As Boolean = True - Dim ErrorJackSpeed As Double = 255 / 60 / 4 / 16 + Dim ErrorJackBPM As Double = 255 + Dim ErrorJackTH As Double = 16 + Dim ErrorJackSpeed As Double = 60 * 4 / ErrorJackBPM / ErrorJackTH '----Header Options Dim hWAV(1295) As String @@ -1272,10 +1274,11 @@ Public Class MainWindow If NTInput Then For i = 0 To UBound(Notes) - Notes(i).HasError = False - Notes(i).ErrorType = 0 Notes(i).LNPair = 0 If Notes(i).Length < 0 Then Notes(i).Length = 0 + If Notes(i).ErrorType = 1 Then Continue For + Notes(i).HasError = False + Notes(i).ErrorType = 0 Next For i = 1 To UBound(Notes) @@ -1308,9 +1311,6 @@ Public Class MainWindow End If End If End If - - ' Jack checking - If Notes(i).TempMouseDown Then CheckJack(i, xniArray0) Next Else @@ -1393,9 +1393,6 @@ EndSearch: Next End If - - ' Jack checking - If Notes(i).TempMouseDown Then CheckJack(i, xniArray0) Next @@ -1414,20 +1411,143 @@ EndSearch: Next End Sub - Private Sub CheckJack(ByVal xIN As Integer, ByVal xniArray0() As Integer) - Dim xIComp = xIN - 1 - Do While xIComp > 0 - If Notes(xIComp).VPosition = Notes(xIN).VPosition Then xIComp -= 1 : Continue Do - If GetTimeFromVPosition(Notes(xIN).VPosition) - GetTimeFromVPosition(Notes(xIComp).VPosition) > ErrorJackSpeed Then Exit Do - If xniArray0.Contains(Notes(xIN).ColumnIndex) AndAlso Notes(xIN).ColumnIndex = Notes(xIComp).ColumnIndex Then + Private Sub CheckError(sender As Object, e As EventArgs) Handles mnTechnicalErrorCheck.Click + For xIN = 1 To UBound(Notes) + Notes(xIN).HasError = False + Notes(xIN).ErrorType = 0 + Next + If gXKeyMode = "PMS" Then CheckErrorImpossibleChord() + If gXKeyMode = "DP" Then CheckErrorImpossibleScratch() + CheckErrorJack() + End Sub + + Private Sub CheckErrorImpossibleChord() + For xIN = 1 To UBound(Notes) + If Not gXKeyCol.Contains(Notes(xIN).ColumnIndex) Or Not IsPlayableNote(xIN) Then Continue For + Dim xIColArray() As Integer = {FindColumnNumber(Notes(xIN).ColumnIndex)} ' Array of columns + Dim xINArray() As Integer = {xIN} ' Array of notes in the columns + Dim xIComp = xIN - 1 + Do While xIComp > 0 ' If note is in range, add to xIColArray and xINArray + If GetTimeFromVPosition(Notes(xIN).VPosition) - GetTimeFromVPosition(Notes(xIComp).VPosition) > ErrorJackSpeed Then Exit Do + If Not gXKeyCol.Contains(Notes(xIComp).ColumnIndex) Or Not IsPlayableNote(xIComp) Then xIComp -= 1 : Continue Do + ReDim Preserve xIColArray(xIColArray.Length) + xIColArray(UBound(xIColArray)) = FindColumnNumber(Notes(xIComp).ColumnIndex) + ReDim Preserve xINArray(xINArray.Length) + xINArray(UBound(xINArray)) = xIComp + xIComp -= 1 + Loop + + Dim xIColArray2 = FindLNColumnsAtVPosition(Notes(xIN).VPosition) ' Account for LNs + ReDim Preserve xIColArray(UBound(xIColArray) + xIColArray2.Length) + For xINCol = 0 To UBound(xIColArray2) + xIColArray(UBound(xIColArray) - xINCol) = FindColumnNumber(xIColArray2(xINCol)) + Next + Array.Sort(xIColArray) + + Dim posLHand As Integer = 0 ' Position of left hand based on the leftmost note, i.e. 1 - 4 + Dim posRHand As Integer = 0 ' Position of right hand based on the leftmost note, i.e. 4 - 7 + For Each xIN2 In xIColArray + If posLHand = 0 Then ' Assign to left hand + posLHand = xIN2 + Continue For + ElseIf posLHand + 2 < xIN2 AndAlso posRHand = 0 Then ' Assign to right hand + posRHand = xIN2 + ElseIf posRHand <> 0 AndAlso posRHand + 2 < xIN2 Then ' If right hand is assigned and note is out of hand range + For Each xINAssign In xINArray ' Assign error type 1 to every note in xINArray + Notes(xINAssign).HasError = True + Notes(xINAssign).ErrorType = 1 + Next + End If + Next + Next + End Sub + + Private Sub CheckErrorImpossibleScratch() + Dim xKArrayLFull() As Integer = {niA2, niA3, niA4, niA5, niA6, niA7, niA8} + Dim xKArrayRFull() As Integer = {niD1, niD2, niD3, niD4, niD5, niD6, niD7} + Dim xKArrayL() As Integer = {niA5, niA6, niA7, niA8} + Dim xKArrayR() As Integer = {niD1, niD2, niD3, niD4} + Dim xScrL As Integer = niA1 + Dim xScrR As Integer = niD8 + For xIN = 1 To UBound(Notes) ' Check for notes near scratch notes + If (Not Notes(xIN).ColumnIndex = xScrL AndAlso Not Notes(xIN).ColumnIndex = xScrR) Or Not IsPlayableNote(xIN) Then Continue For + Dim xKArray() = xKArrayL + Dim xKArrayFull() = xKArrayLFull + If Notes(xIN).ColumnIndex = xScrR Then xKArray = xKArrayR : xKArrayFull = xKArrayRFull + + Dim xIColArray(-1) As Integer + Dim xIComp = xIN - 1 + Do While xIComp > 0 ' If note is in range, add to xIColArray and xINArray + If GetTimeFromVPosition(Notes(xIN).VPosition) - GetTimeFromVPosition(Notes(xIComp).VPosition) > ErrorJackSpeed Then Exit Do + If Not xKArray.Contains(Notes(xIComp).ColumnIndex) Or Not IsPlayableNote(xIComp) Then xIComp -= 1 : Continue Do + ReDim Preserve xIColArray(xIColArray.Length) + xIComp -= 1 + Loop + xIComp = xIN + 1 + Do While xIComp <= UBound(Notes) ' If note is in range, add to xIColArray and xINArray + If GetTimeFromVPosition(Notes(xIComp).VPosition) - GetTimeFromVPosition(Notes(xIN).VPosition) > ErrorJackSpeed Then Exit Do + If Not xKArray.Contains(Notes(xIComp).ColumnIndex) Or Not IsPlayableNote(xIComp) Then xIComp += 1 : Continue Do + ReDim Preserve xIColArray(xIColArray.Length) + xIComp += 1 + Loop + + Dim xIColArray2 = FindLNColumnsAtVPosition(Notes(xIN).VPosition) ' Account for LNs + Dim xIColArray3(-1) As Integer + For xIComp = 0 To UBound(xIColArray2) + If xKArrayFull.Contains(xIColArray2(xIComp)) Then ReDim Preserve xIColArray3(xIColArray3.Length) + Next + + If xIColArray.Length + xIColArray3.Length > 0 Then Notes(xIN).HasError = True Notes(xIN).ErrorType = 1 - Exit Do End If - xIComp -= 1 - Loop + Next + End Sub + + Private Sub CheckErrorJack() + For xIN = 1 To UBound(Notes) + If Not IsPlayableNote(xIN) Then Continue For + Dim xIComp = xIN - 1 + Do While xIComp > 0 + If Notes(xIComp).VPosition = Notes(xIN).VPosition Then xIComp -= 1 : Continue Do + If GetTimeFromVPosition(Notes(xIN).VPosition) - GetTimeFromVPosition(Notes(xIComp).VPosition) > ErrorJackSpeed Then Exit Do + If gXKeyCol.Contains(Notes(xIN).ColumnIndex) AndAlso Notes(xIN).ColumnIndex = Notes(xIComp).ColumnIndex Then + Notes(xIN).HasError = True + Notes(xIN).ErrorType = 1 + Exit Do + End If + xIComp -= 1 + Loop + Next End Sub + Private Function FindColumnNumber(xI) + For i = 0 To UBound(gXKeyCol) + If xI = gXKeyCol(i) Then Return i + 1 + Next + Return 0 + End Function + + Private Function FindLNColumnsAtVPosition(ByVal VPos As Double) As Integer() + ' NTInput + If Not NTInput Then ConvertBMSE2NT() + + Dim xN = From note In Notes + Where note.Length > 0 AndAlso note.VPosition <= VPos AndAlso VPos <= note.VPosition + note.Length AndAlso gXKeyCol.Contains(note.ColumnIndex) + Select note + + Dim col(xN.Count - 1) As Integer + For i = 0 To UBound(col) + col(i) = xN(i).ColumnIndex + Next + If Not NTInput Then ConvertNT2BMSE() + Return col + End Function + + Private Function IsPlayableNote(ByVal xI As Integer) + Return Not (Notes(xI).Hidden Or Notes(xI).Landmine Or Notes(xI).Comment) + End Function + Public Sub ExceptionSave(ByVal Path As String) SaveiBMSC(Path) End Sub @@ -3656,7 +3776,7 @@ RestartSorting: xSorted = False Dim xDiag As New OpGeneral(gWheel, gPgUpDn, MiddleButtonMoveMethod, xTE, 192.0R / BMSGridLimit, AutoSaveInterval, BeepWhileSaved, BPMx1296, STOPx1296, - AutoFocusMouseEnter, FirstClickDisabled, ClickStopPreview) + AutoFocusMouseEnter, FirstClickDisabled, ClickStopPreview, ErrorJackBPM, ErrorJackTH) If xDiag.ShowDialog() = Windows.Forms.DialogResult.OK Then With xDiag @@ -3673,6 +3793,9 @@ RestartSorting: xSorted = False AutoFocusMouseEnter = .cMEnterFocus.Checked FirstClickDisabled = .cMClickFocus.Checked ClickStopPreview = .cMStopPreview.Checked + ErrorJackBPM = .nJackBPM.Value + ErrorJackTH = .nJackTH.Value + ErrorJackSpeed = 60 * 4 / .nJackBPM.Value / .nJackTH.Value End With If AutoSaveInterval Then AutoSaveTimer.Interval = AutoSaveInterval AutoSaveTimer.Enabled = AutoSaveInterval diff --git a/iBMSC/My Project/Resources.Designer.vb b/iBMSC/My Project/Resources.Designer.vb index c9627dadf..becf38d8a 100644 --- a/iBMSC/My Project/Resources.Designer.vb +++ b/iBMSC/My Project/Resources.Designer.vb @@ -445,6 +445,16 @@ Namespace My.Resources End Get End Property + ''' + ''' Looks up a localized resource of type System.Drawing.Bitmap. + ''' + Friend ReadOnly Property x16CheckErrorTechnical() As System.Drawing.Bitmap + Get + Dim obj As Object = ResourceManager.GetObject("x16CheckErrorTechnical", resourceCulture) + Return CType(obj,System.Drawing.Bitmap) + End Get + End Property + ''' ''' Looks up a localized resource of type System.Drawing.Bitmap. ''' diff --git a/iBMSC/My Project/Resources.resx b/iBMSC/My Project/Resources.resx index cfb52a9b2..35503ee20 100644 --- a/iBMSC/My Project/Resources.resx +++ b/iBMSC/My Project/Resources.resx @@ -127,8 +127,8 @@ ..\About.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\ImageButtonsSmall\x16Up.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\..\..\backup\3.4.0.12\iBMSC\ImageButtonsSmall\x16Flip.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\ImageButtonsSmall\x16ShowWaveform.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -145,30 +145,27 @@ ..\Icon\icon2_16_highlight.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\ImageButtonsSmall\x16New.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + ..\ImageButtonsSmall\CursorResizeDown.cur;System.Byte[], mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - ..\ImageButtonsSmall\x16Refresh.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - ..\SplashScreenx.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\ImageButtonsSmall\x16Find.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + ..\ImageButtonsSmall\x16Play.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\ImageButtonsSmall\x16Redo.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - ..\ImageButtonsSmall\x16Theme.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\ImageButtonsSmall\x16PreviewOnClick.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\ImageButtonsSmall\x16Copy.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - ..\ImageButtonsSmall\x16MeasureRemove.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -196,12 +193,12 @@ ..\ImageButtonsSmall\x16PreviewCheckN.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\ImageButtonsSmall\x16Color.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + ..\ImageButtons\ConvertNotesL.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\MiscButtons\x16Lock.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - ..\ImageButtonsSmall\Expand.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -211,11 +208,14 @@ ..\ImageButtonsSmall\x16SRandom.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\ImageButtonsSmall\x16GeneralOptions.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + ..\MiscButtons\WAVPrecision.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\ImageButtonsSmall\x16Find.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\ImageButtonsSmall\x16Up.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\ImageButtonsSmall\x16Paste.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -232,8 +232,8 @@ ..\MiscButtons\lgpartition.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\ImageButtonsSmall\x16GeneralOptions.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\ImageButtonsSmall\x16Import2.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\ImageButtonsSmall\x16Import.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -253,12 +253,6 @@ ..\ImageButtonsSmall\CursorResizeLeft.cur;System.Byte[], mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - ..\ImageButtonsSmall\x16Import2.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\ImageButtonsSmall\x16ModifyLabelY.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - ..\ImageButtonsSmall\x16Associate.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -289,9 +283,6 @@ ..\O2Mania.Theme.xml;System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-16 - - ..\MiscButtons\WAVOffset.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - ..\ImageButtons\ConvertNotesHV.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -304,15 +295,24 @@ ..\ImageButtonsSmall\x16Export.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\ImageButtonsSmall\x16PreviewCheck.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + ..\ImageButtonsSmall\Collapse.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\ImageButtonsSmall\x16Help.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\ImageButtonsSmall\x16CheckError.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + ..\ImageButtons\Statistics3.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\ImageButtonsSmall\x16Pen.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + ..\TransparentBG.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -322,8 +322,8 @@ ..\ImageButtonsSmall\x16Language.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\ImageButtonsSmall\x16New.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\MiscButtons\x16Lock.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\MiscButtons\WAVWidth.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -331,6 +331,9 @@ ..\ImageButtons\ConvertNotesN.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\MiscButtons\x16PlayerBrowse.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + ..\ImageButtonsSmall\x16Storm.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -340,8 +343,8 @@ ..\MiscButtons\x16Remove.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\MiscButtons\x16PlayerBrowse.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\ImageButtonsSmall\x16Refresh.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\ImageButtons\Shortcut.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -355,11 +358,11 @@ ..\MiscButtons\WAVSaturation.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\ImageButtonsSmall\x16Pen.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\MiscButtons\WAVOffset.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\..\..\backup\3.4.0.12\iBMSC\ImageButtonsSmall\x16Flip.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\ImageButtonsSmall\x16Copy.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\ImageButtonsSmall\x16NTInput.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -373,8 +376,8 @@ ..\ImageButtonsSmall\x16Undo.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\ImageButtonsSmall\x16PreviewCheck.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\ImageButtonsSmall\x16Redo.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\MiscButtons\WAVDuplicate.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -382,8 +385,8 @@ ..\ImageButtonsSmall\x16Stop.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\ImageButtonsSmall\x16CheckError.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\ImageButtonsSmall\x16ModifyLabelY.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\ImageButtonsSmall\x16ModifyLabel.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -409,13 +412,13 @@ ..\ImageButtonsSmall\x16Save.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\ImageButtons\ImageErrorR.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + ..\MiscButtons\lgwidth.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\ImageButtonsSmall\x16Color.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\ImageButtons\ImageErrorR.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\ImageButtonsSmall\x16CheckErrorTechnical.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a \ No newline at end of file diff --git a/iBMSC/Option Windows/OpGeneral.Designer.vb b/iBMSC/Option Windows/OpGeneral.Designer.vb index 18fca2da7..2f74abd8a 100644 --- a/iBMSC/Option Windows/OpGeneral.Designer.vb +++ b/iBMSC/Option Windows/OpGeneral.Designer.vb @@ -53,11 +53,20 @@ Partial Class OpGeneral Me.FlowLayoutPanel1 = New System.Windows.Forms.FlowLayoutPanel() Me.rMiddleAuto = New System.Windows.Forms.RadioButton() Me.rMiddleDrag = New System.Windows.Forms.RadioButton() + Me.nJackBPM = New System.Windows.Forms.NumericUpDown() + Me.Label8 = New System.Windows.Forms.Label() + Me.nJackTH = New System.Windows.Forms.NumericUpDown() + Me.Label9 = New System.Windows.Forms.Label() + Me.LabelTH = New System.Windows.Forms.Label() + Me.TableLayoutPanel2 = New System.Windows.Forms.TableLayoutPanel() Me.TableLayoutPanel1.SuspendLayout() CType(Me.PictureBox1, System.ComponentModel.ISupportInitialize).BeginInit() CType(Me.NAutoSave, System.ComponentModel.ISupportInitialize).BeginInit() CType(Me.nGridPartition, System.ComponentModel.ISupportInitialize).BeginInit() Me.FlowLayoutPanel1.SuspendLayout() + CType(Me.nJackBPM, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.nJackTH, System.ComponentModel.ISupportInitialize).BeginInit() + Me.TableLayoutPanel2.SuspendLayout() Me.SuspendLayout() ' 'TableLayoutPanel1 @@ -68,12 +77,12 @@ Partial Class OpGeneral Me.TableLayoutPanel1.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50.0!)) Me.TableLayoutPanel1.Controls.Add(Me.OK_Button, 0, 0) Me.TableLayoutPanel1.Controls.Add(Me.Cancel_Button, 1, 0) - Me.TableLayoutPanel1.Location = New System.Drawing.Point(229, 463) + Me.TableLayoutPanel1.Location = New System.Drawing.Point(229, 500) Me.TableLayoutPanel1.Name = "TableLayoutPanel1" Me.TableLayoutPanel1.RowCount = 1 Me.TableLayoutPanel1.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50.0!)) Me.TableLayoutPanel1.Size = New System.Drawing.Size(170, 33) - Me.TableLayoutPanel1.TabIndex = 0 + Me.TableLayoutPanel1.TabIndex = 109 ' 'OK_Button ' @@ -96,13 +105,15 @@ Partial Class OpGeneral ' 'CWheel ' + Me.CWheel.Anchor = CType(((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left) _ + Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) Me.CWheel.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList Me.CWheel.FormattingEnabled = True Me.CWheel.Items.AddRange(New Object() {"1", "1 / 2", "1 / 3", "1 / 4"}) - Me.CWheel.Location = New System.Drawing.Point(154, 269) + Me.CWheel.Location = New System.Drawing.Point(154, 306) Me.CWheel.Name = "CWheel" Me.CWheel.Size = New System.Drawing.Size(237, 23) - Me.CWheel.TabIndex = 11 + Me.CWheel.TabIndex = 101 ' 'CTextEncoding ' @@ -112,14 +123,16 @@ Partial Class OpGeneral Me.CTextEncoding.Location = New System.Drawing.Point(137, 18) Me.CTextEncoding.Name = "CTextEncoding" Me.CTextEncoding.Size = New System.Drawing.Size(254, 23) - Me.CTextEncoding.TabIndex = 2 + Me.CTextEncoding.TabIndex = 1 ' 'Label1 ' - Me.Label1.Location = New System.Drawing.Point(12, 271) + Me.Label1.Anchor = CType(((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left) _ + Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) + Me.Label1.Location = New System.Drawing.Point(12, 308) Me.Label1.Name = "Label1" Me.Label1.Size = New System.Drawing.Size(136, 17) - Me.Label1.TabIndex = 40 + Me.Label1.TabIndex = 100 Me.Label1.Text = "Mouse Wheel" Me.Label1.TextAlign = System.Drawing.ContentAlignment.MiddleRight ' @@ -128,7 +141,7 @@ Partial Class OpGeneral Me.Label2.Location = New System.Drawing.Point(-5, 20) Me.Label2.Name = "Label2" Me.Label2.Size = New System.Drawing.Size(136, 17) - Me.Label2.TabIndex = 41 + Me.Label2.TabIndex = 1 Me.Label2.Text = "Text Encoding" Me.Label2.TextAlign = System.Drawing.ContentAlignment.MiddleRight ' @@ -137,7 +150,7 @@ Partial Class OpGeneral Me.Label4.Location = New System.Drawing.Point(-5, 50) Me.Label4.Name = "Label4" Me.Label4.Size = New System.Drawing.Size(136, 17) - Me.Label4.TabIndex = 43 + Me.Label4.TabIndex = 2 Me.Label4.Text = "Associate Filetype" Me.Label4.TextAlign = System.Drawing.ContentAlignment.MiddleRight ' @@ -152,20 +165,24 @@ Partial Class OpGeneral ' 'cBeep ' + Me.cBeep.Anchor = CType(((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Left) _ + Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) Me.cBeep.AutoSize = True Me.cBeep.Checked = True Me.cBeep.CheckState = System.Windows.Forms.CheckState.Checked - Me.cBeep.Location = New System.Drawing.Point(32, 169) + Me.cBeep.Location = New System.Drawing.Point(32, 206) Me.cBeep.Name = "cBeep" Me.cBeep.Size = New System.Drawing.Size(116, 19) - Me.cBeep.TabIndex = 8 + Me.cBeep.TabIndex = 12 Me.cBeep.Text = "Beep while saved" Me.cBeep.UseVisualStyleBackColor = True ' 'PictureBox1 ' + Me.PictureBox1.Anchor = CType(((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left) _ + Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) Me.PictureBox1.BackColor = System.Drawing.Color.FromArgb(CType(CType(64, Byte), Integer), CType(CType(64, Byte), Integer), CType(CType(64, Byte), Integer)) - Me.PictureBox1.Location = New System.Drawing.Point(20, 253) + Me.PictureBox1.Location = New System.Drawing.Point(20, 290) Me.PictureBox1.Name = "PictureBox1" Me.PictureBox1.Size = New System.Drawing.Size(375, 1) Me.PictureBox1.TabIndex = 47 @@ -173,41 +190,49 @@ Partial Class OpGeneral ' 'cBpm1296 ' + Me.cBpm1296.Anchor = CType(((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Left) _ + Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) Me.cBpm1296.AutoSize = True - Me.cBpm1296.Location = New System.Drawing.Point(32, 194) + Me.cBpm1296.Location = New System.Drawing.Point(32, 231) Me.cBpm1296.Name = "cBpm1296" - Me.cBpm1296.Size = New System.Drawing.Size(253, 19) - Me.cBpm1296.TabIndex = 9 + Me.cBpm1296.Size = New System.Drawing.Size(254, 19) + Me.cBpm1296.TabIndex = 13 Me.cBpm1296.Text = "Extend number of multi-byte BPMs to 1296" Me.cBpm1296.UseVisualStyleBackColor = True ' 'cStop1296 ' + Me.cStop1296.Anchor = CType(((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Left) _ + Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) Me.cStop1296.AutoSize = True - Me.cStop1296.Location = New System.Drawing.Point(32, 219) + Me.cStop1296.Location = New System.Drawing.Point(32, 256) Me.cStop1296.Name = "cStop1296" - Me.cStop1296.Size = New System.Drawing.Size(198, 19) - Me.cStop1296.TabIndex = 10 + Me.cStop1296.Size = New System.Drawing.Size(197, 19) + Me.cStop1296.TabIndex = 14 Me.cStop1296.Text = "Extend number of STOPs to 1296" Me.cStop1296.UseVisualStyleBackColor = True ' 'cMEnterFocus ' + Me.cMEnterFocus.Anchor = CType(((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left) _ + Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) Me.cMEnterFocus.AutoSize = True - Me.cMEnterFocus.Location = New System.Drawing.Point(34, 379) + Me.cMEnterFocus.Location = New System.Drawing.Point(34, 416) Me.cMEnterFocus.Name = "cMEnterFocus" Me.cMEnterFocus.Size = New System.Drawing.Size(322, 19) - Me.cMEnterFocus.TabIndex = 14 + Me.cMEnterFocus.TabIndex = 106 Me.cMEnterFocus.Text = "Automatically set focus to editing panel on mouse enter" Me.cMEnterFocus.UseVisualStyleBackColor = True ' 'cMClickFocus ' + Me.cMClickFocus.Anchor = CType(((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left) _ + Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) Me.cMClickFocus.AutoSize = True - Me.cMClickFocus.Location = New System.Drawing.Point(34, 404) + Me.cMClickFocus.Location = New System.Drawing.Point(34, 441) Me.cMClickFocus.Name = "cMClickFocus" Me.cMClickFocus.Size = New System.Drawing.Size(293, 19) - Me.cMClickFocus.TabIndex = 15 + Me.cMClickFocus.TabIndex = 107 Me.cMClickFocus.Text = "Disable first click if the editing panel is not focused" Me.cMClickFocus.UseVisualStyleBackColor = True ' @@ -216,7 +241,7 @@ Partial Class OpGeneral Me.TBAssociatePMS.Location = New System.Drawing.Point(310, 78) Me.TBAssociatePMS.Name = "TBAssociatePMS" Me.TBAssociatePMS.Size = New System.Drawing.Size(81, 23) - Me.TBAssociatePMS.TabIndex = 4 + Me.TBAssociatePMS.TabIndex = 7 Me.TBAssociatePMS.Text = "*.pms" Me.TBAssociatePMS.UseVisualStyleBackColor = True ' @@ -225,43 +250,51 @@ Partial Class OpGeneral Me.TBAssociateIBMSC.Location = New System.Drawing.Point(265, 47) Me.TBAssociateIBMSC.Name = "TBAssociateIBMSC" Me.TBAssociateIBMSC.Size = New System.Drawing.Size(127, 23) - Me.TBAssociateIBMSC.TabIndex = 5 + Me.TBAssociateIBMSC.TabIndex = 4 Me.TBAssociateIBMSC.Text = "*.ibmsc" Me.TBAssociateIBMSC.UseVisualStyleBackColor = True ' 'Label5 ' - Me.Label5.Location = New System.Drawing.Point(12, 300) + Me.Label5.Anchor = CType(((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left) _ + Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) + Me.Label5.Location = New System.Drawing.Point(12, 337) Me.Label5.Name = "Label5" Me.Label5.Size = New System.Drawing.Size(136, 17) - Me.Label5.TabIndex = 56 + Me.Label5.TabIndex = 102 Me.Label5.Text = "PageUp / PageDown" Me.Label5.TextAlign = System.Drawing.ContentAlignment.MiddleRight ' 'CPgUpDn ' + Me.CPgUpDn.Anchor = CType(((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left) _ + Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) Me.CPgUpDn.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList Me.CPgUpDn.FormattingEnabled = True Me.CPgUpDn.Items.AddRange(New Object() {"8", "6", "4", "3", "2", "1", "1 / 2"}) - Me.CPgUpDn.Location = New System.Drawing.Point(154, 298) + Me.CPgUpDn.Location = New System.Drawing.Point(154, 335) Me.CPgUpDn.Name = "CPgUpDn" Me.CPgUpDn.Size = New System.Drawing.Size(237, 23) - Me.CPgUpDn.TabIndex = 12 + Me.CPgUpDn.TabIndex = 103 ' 'NAutoSave ' + Me.NAutoSave.Anchor = CType(((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Left) _ + Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) Me.NAutoSave.DecimalPlaces = 1 - Me.NAutoSave.Location = New System.Drawing.Point(171, 142) + Me.NAutoSave.Location = New System.Drawing.Point(171, 179) Me.NAutoSave.Maximum = New Decimal(New Integer() {60, 0, 0, 0}) Me.NAutoSave.Minimum = New Decimal(New Integer() {1, 0, 0, 0}) Me.NAutoSave.Name = "NAutoSave" Me.NAutoSave.Size = New System.Drawing.Size(62, 23) - Me.NAutoSave.TabIndex = 7 + Me.NAutoSave.TabIndex = 11 Me.NAutoSave.Value = New Decimal(New Integer() {2, 0, 0, 0}) ' 'Label7 ' - Me.Label7.Location = New System.Drawing.Point(239, 144) + Me.Label7.Anchor = CType(((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Left) _ + Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) + Me.Label7.Location = New System.Drawing.Point(239, 181) Me.Label7.Name = "Label7" Me.Label7.Size = New System.Drawing.Size(73, 17) Me.Label7.TabIndex = 59 @@ -270,25 +303,29 @@ Partial Class OpGeneral ' 'cAutoSave ' + Me.cAutoSave.Anchor = CType(((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Left) _ + Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) Me.cAutoSave.AutoSize = True Me.cAutoSave.Checked = True Me.cAutoSave.CheckState = System.Windows.Forms.CheckState.Checked - Me.cAutoSave.Location = New System.Drawing.Point(32, 144) + Me.cAutoSave.Location = New System.Drawing.Point(32, 181) Me.cAutoSave.Name = "cAutoSave" Me.cAutoSave.Size = New System.Drawing.Size(76, 19) - Me.cAutoSave.TabIndex = 6 + Me.cAutoSave.TabIndex = 10 Me.cAutoSave.Text = "AutoSave" Me.cAutoSave.UseVisualStyleBackColor = True ' 'cMStopPreview ' + Me.cMStopPreview.Anchor = CType(((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left) _ + Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) Me.cMStopPreview.AutoSize = True Me.cMStopPreview.Checked = True Me.cMStopPreview.CheckState = System.Windows.Forms.CheckState.Checked - Me.cMStopPreview.Location = New System.Drawing.Point(34, 429) + Me.cMStopPreview.Location = New System.Drawing.Point(34, 466) Me.cMStopPreview.Name = "cMStopPreview" Me.cMStopPreview.Size = New System.Drawing.Size(253, 19) - Me.cMStopPreview.TabIndex = 60 + Me.cMStopPreview.TabIndex = 108 Me.cMStopPreview.Text = "Stop preview if clicked on the editing panel" Me.cMStopPreview.UseVisualStyleBackColor = True ' @@ -299,7 +336,7 @@ Partial Class OpGeneral Me.nGridPartition.Minimum = New Decimal(New Integer() {8, 0, 0, 0}) Me.nGridPartition.Name = "nGridPartition" Me.nGridPartition.Size = New System.Drawing.Size(79, 23) - Me.nGridPartition.TabIndex = 61 + Me.nGridPartition.TabIndex = 9 Me.nGridPartition.Value = New Decimal(New Integer() {192, 0, 0, 0}) ' 'Label6 @@ -307,7 +344,7 @@ Partial Class OpGeneral Me.Label6.Location = New System.Drawing.Point(44, 108) Me.Label6.Name = "Label6" Me.Label6.Size = New System.Drawing.Size(169, 17) - Me.Label6.TabIndex = 62 + Me.Label6.TabIndex = 8 Me.Label6.Text = "Max Grid Partition in BMS" Me.Label6.TextAlign = System.Drawing.ContentAlignment.MiddleRight ' @@ -316,7 +353,7 @@ Partial Class OpGeneral Me.TBAssociateBME.Location = New System.Drawing.Point(137, 78) Me.TBAssociateBME.Name = "TBAssociateBME" Me.TBAssociateBME.Size = New System.Drawing.Size(76, 23) - Me.TBAssociateBME.TabIndex = 63 + Me.TBAssociateBME.TabIndex = 5 Me.TBAssociateBME.Text = "*.bme" Me.TBAssociateBME.UseVisualStyleBackColor = True ' @@ -325,30 +362,34 @@ Partial Class OpGeneral Me.TBAssociateBML.Location = New System.Drawing.Point(219, 78) Me.TBAssociateBML.Name = "TBAssociateBML" Me.TBAssociateBML.Size = New System.Drawing.Size(85, 23) - Me.TBAssociateBML.TabIndex = 64 + Me.TBAssociateBML.TabIndex = 6 Me.TBAssociateBML.Text = "*.bml" Me.TBAssociateBML.UseVisualStyleBackColor = True ' 'Label3 ' - Me.Label3.Location = New System.Drawing.Point(12, 328) + Me.Label3.Anchor = CType(((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left) _ + Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) + Me.Label3.Location = New System.Drawing.Point(12, 365) Me.Label3.Name = "Label3" Me.Label3.Size = New System.Drawing.Size(136, 17) - Me.Label3.TabIndex = 65 + Me.Label3.TabIndex = 104 Me.Label3.Text = "Mouse Middle Button" Me.Label3.TextAlign = System.Drawing.ContentAlignment.MiddleRight ' 'FlowLayoutPanel1 ' + Me.FlowLayoutPanel1.Anchor = CType(((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left) _ + Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) Me.FlowLayoutPanel1.AutoSize = True Me.FlowLayoutPanel1.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink Me.FlowLayoutPanel1.Controls.Add(Me.rMiddleAuto) Me.FlowLayoutPanel1.Controls.Add(Me.rMiddleDrag) Me.FlowLayoutPanel1.FlowDirection = System.Windows.Forms.FlowDirection.TopDown - Me.FlowLayoutPanel1.Location = New System.Drawing.Point(154, 327) + Me.FlowLayoutPanel1.Location = New System.Drawing.Point(154, 364) Me.FlowLayoutPanel1.Name = "FlowLayoutPanel1" Me.FlowLayoutPanel1.Size = New System.Drawing.Size(141, 38) - Me.FlowLayoutPanel1.TabIndex = 66 + Me.FlowLayoutPanel1.TabIndex = 105 ' 'rMiddleAuto ' @@ -375,16 +416,85 @@ Partial Class OpGeneral Me.rMiddleDrag.Text = "Click and Drag" Me.rMiddleDrag.UseVisualStyleBackColor = True ' + 'nJackBPM + ' + Me.nJackBPM.Location = New System.Drawing.Point(3, 3) + Me.nJackBPM.Maximum = New Decimal(New Integer() {10000, 0, 0, 0}) + Me.nJackBPM.Minimum = New Decimal(New Integer() {8, 0, 0, 0}) + Me.nJackBPM.Name = "nJackBPM" + Me.nJackBPM.Size = New System.Drawing.Size(52, 23) + Me.nJackBPM.TabIndex = 9 + Me.nJackBPM.Value = New Decimal(New Integer() {255, 0, 0, 0}) + ' + 'Label8 + ' + Me.Label8.Location = New System.Drawing.Point(44, 141) + Me.Label8.Name = "Label8" + Me.Label8.Size = New System.Drawing.Size(169, 17) + Me.Label8.TabIndex = 8 + Me.Label8.Text = "Min Jack Speed" + Me.Label8.TextAlign = System.Drawing.ContentAlignment.MiddleRight + ' + 'nJackTH + ' + Me.nJackTH.Location = New System.Drawing.Point(105, 3) + Me.nJackTH.Maximum = New Decimal(New Integer() {10000, 0, 0, 0}) + Me.nJackTH.Minimum = New Decimal(New Integer() {8, 0, 0, 0}) + Me.nJackTH.Name = "nJackTH" + Me.nJackTH.Size = New System.Drawing.Size(37, 23) + Me.nJackTH.TabIndex = 9 + Me.nJackTH.Value = New Decimal(New Integer() {16, 0, 0, 0}) + ' + 'Label9 + ' + Me.Label9.Dock = System.Windows.Forms.DockStyle.Fill + Me.Label9.Location = New System.Drawing.Point(61, 0) + Me.Label9.Name = "Label9" + Me.Label9.Size = New System.Drawing.Size(38, 27) + Me.Label9.TabIndex = 8 + Me.Label9.Text = "BPM" + Me.Label9.TextAlign = System.Drawing.ContentAlignment.MiddleCenter + ' + 'LabelTH + ' + Me.LabelTH.Dock = System.Windows.Forms.DockStyle.Fill + Me.LabelTH.Location = New System.Drawing.Point(148, 0) + Me.LabelTH.Name = "LabelTH" + Me.LabelTH.Size = New System.Drawing.Size(29, 27) + Me.LabelTH.TabIndex = 8 + Me.LabelTH.Text = "th" + Me.LabelTH.TextAlign = System.Drawing.ContentAlignment.MiddleCenter + ' + 'TableLayoutPanel2 + ' + Me.TableLayoutPanel2.ColumnCount = 4 + Me.TableLayoutPanel2.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 32.22222!)) + Me.TableLayoutPanel2.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 24.44444!)) + Me.TableLayoutPanel2.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 23.88889!)) + Me.TableLayoutPanel2.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 19.44444!)) + Me.TableLayoutPanel2.Controls.Add(Me.nJackBPM, 0, 0) + Me.TableLayoutPanel2.Controls.Add(Me.Label9, 1, 0) + Me.TableLayoutPanel2.Controls.Add(Me.nJackTH, 2, 0) + Me.TableLayoutPanel2.Controls.Add(Me.LabelTH, 3, 0) + Me.TableLayoutPanel2.Location = New System.Drawing.Point(219, 136) + Me.TableLayoutPanel2.Name = "TableLayoutPanel2" + Me.TableLayoutPanel2.RowCount = 1 + Me.TableLayoutPanel2.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100.0!)) + Me.TableLayoutPanel2.Size = New System.Drawing.Size(180, 27) + Me.TableLayoutPanel2.TabIndex = 110 + ' 'OpGeneral ' Me.AcceptButton = Me.OK_Button Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None Me.CancelButton = Me.Cancel_Button - Me.ClientSize = New System.Drawing.Size(413, 510) + Me.ClientSize = New System.Drawing.Size(413, 547) + Me.Controls.Add(Me.TableLayoutPanel2) Me.Controls.Add(Me.FlowLayoutPanel1) Me.Controls.Add(Me.Label3) Me.Controls.Add(Me.TBAssociateBML) Me.Controls.Add(Me.TBAssociateBME) + Me.Controls.Add(Me.Label8) Me.Controls.Add(Me.Label6) Me.Controls.Add(Me.nGridPartition) Me.Controls.Add(Me.cMStopPreview) @@ -422,6 +532,9 @@ Partial Class OpGeneral CType(Me.nGridPartition, System.ComponentModel.ISupportInitialize).EndInit() Me.FlowLayoutPanel1.ResumeLayout(False) Me.FlowLayoutPanel1.PerformLayout() + CType(Me.nJackBPM, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.nJackTH, System.ComponentModel.ISupportInitialize).EndInit() + Me.TableLayoutPanel2.ResumeLayout(False) Me.ResumeLayout(False) Me.PerformLayout() @@ -457,5 +570,10 @@ Partial Class OpGeneral Friend WithEvents FlowLayoutPanel1 As System.Windows.Forms.FlowLayoutPanel Friend WithEvents rMiddleAuto As System.Windows.Forms.RadioButton Friend WithEvents rMiddleDrag As System.Windows.Forms.RadioButton - + Friend WithEvents nJackBPM As NumericUpDown + Friend WithEvents Label8 As Label + Friend WithEvents nJackTH As NumericUpDown + Friend WithEvents Label9 As Label + Friend WithEvents LabelTH As Label + Friend WithEvents TableLayoutPanel2 As TableLayoutPanel End Class diff --git a/iBMSC/Option Windows/OpGeneral.vb b/iBMSC/Option Windows/OpGeneral.vb index c18db8609..6e636325e 100644 --- a/iBMSC/Option Windows/OpGeneral.vb +++ b/iBMSC/Option Windows/OpGeneral.vb @@ -56,9 +56,9 @@ Public Class OpGeneral Me.Close() End Sub - Public Sub New(ByVal xMsWheel As Integer, ByVal xPgUpDn As Integer, ByVal xMiddleButton As Integer, ByVal xTextEncoding As Integer, ByVal xGridPartition As Integer, _ - ByVal xAutoSave As Integer, ByVal xBeep As Boolean, ByVal xBPMx As Boolean, ByVal xSTOPx As Boolean, _ - ByVal xMFEnter As Boolean, ByVal xMFClick As Boolean, ByVal xMStopPreview As Boolean) + Public Sub New(ByVal xMsWheel As Integer, ByVal xPgUpDn As Integer, ByVal xMiddleButton As Integer, ByVal xTextEncoding As Integer, ByVal xGridPartition As Integer, + ByVal xAutoSave As Integer, ByVal xBeep As Boolean, ByVal xBPMx As Boolean, ByVal xSTOPx As Boolean, + ByVal xMFEnter As Boolean, ByVal xMFClick As Boolean, ByVal xMStopPreview As Boolean, ByVal xJackBPM As Double, ByVal xJackTH As Double) InitializeComponent() On Error Resume Next @@ -82,6 +82,8 @@ Public Class OpGeneral CTextEncoding.SelectedIndex = xTextEncoding 'CSortingMethod.SelectedIndex = xSort nGridPartition.Value = xGridPartition + nJackBPM.Value = xJackBPM + nJackTH.Value = xJackTH If xMiddleButton = 0 Then rMiddleAuto.Checked = True _ Else rMiddleDrag.Checked = True @@ -359,4 +361,17 @@ Public Class OpGeneral Private Sub cAutoSave_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cAutoSave.CheckedChanged NAutoSave.Enabled = cAutoSave.Checked End Sub + + Private Sub nJackTH_ValueChanged(sender As Object, e As EventArgs) Handles nJackTH.ValueChanged + Select Case nJackTH.Value Mod 100 + Case 1, 21, 31, 41, 51, 61, 71, 81, 91 + LabelTH.Text = "st" + Case 2, 22, 32, 42, 52, 62, 72, 82, 92 + LabelTH.Text = "nd" + Case 3, 23, 33, 43, 53, 63, 73, 83, 93 + LabelTH.Text = "rd" + Case Else + LabelTH.Text = "th" + End Select + End Sub End Class diff --git a/iBMSC/PanelEvents.vb b/iBMSC/PanelEvents.vb index 4e4fe46a4..5379cce7b 100644 --- a/iBMSC/PanelEvents.vb +++ b/iBMSC/PanelEvents.vb @@ -275,7 +275,13 @@ Partial Public Class MainWindow Case Keys.C : TBCopy_Click(TBCopy, New EventArgs) Case Keys.V : TBPaste_Click(TBPaste, New EventArgs) Case Keys.A : mnSelectAll_Click(mnSelectAll, New EventArgs) + End Select + End If + + If My.Computer.Keyboard.CtrlKeyDown AndAlso My.Computer.Keyboard.AltKeyDown AndAlso Not My.Computer.Keyboard.ShiftKeyDown Then + Select Case e.KeyCode Case Keys.R : Expand_Load(Nothing, Nothing) + Case Keys.E : CheckError(Nothing, Nothing) End Select End If @@ -829,7 +835,7 @@ Partial Public Class MainWindow Next ElseIf ModifierMultiselectNoteActive() Then For xI1 = 0 To UBound(Notes) - If IsLabelMatch(Notes(xI1), NoteIndex) AndAlso Iscolumnsound(Notes(xI1).ColumnIndex) Then Notes(xI1).Selected = Not Notes(xI1).Selected + If IsLabelMatch(Notes(xI1), NoteIndex) AndAlso IsColumnSound(Notes(xI1).ColumnIndex) Then Notes(xI1).Selected = Not Notes(xI1).Selected Next Else ' az description: If the clicked note is not selected, select only this one. From d3face8c126d3d8026f66da1c6909991a53ec7de Mon Sep 17 00:00:00 2001 From: psyk2642 <60137590+psyk2642@users.noreply.github.com> Date: Sun, 3 Apr 2022 19:48:34 +0800 Subject: [PATCH 100/257] Minor code update --- iBMSC/MainWindow.vb | 9 ++++----- iBMSC/PanelEvents.vb | 2 +- iBMSC/Waveform.vb | 6 +++--- 3 files changed, 8 insertions(+), 9 deletions(-) diff --git a/iBMSC/MainWindow.vb b/iBMSC/MainWindow.vb index ea7906e94..e84dd80d7 100644 --- a/iBMSC/MainWindow.vb +++ b/iBMSC/MainWindow.vb @@ -162,7 +162,7 @@ Public Class MainWindow Dim hCOMNum As Integer = 0 Dim gXKeyMode As String = "SP" ' Determines from column width 7key mode, 9key mode or 14key mode Dim gXKeyCol() As Integer - Dim wLWAV(1295) As wWav + Dim wLWAV(1295) As WavSample '----AutoSave Options Dim PreviousAutoSavedFileName As String = "" @@ -213,7 +213,7 @@ Public Class MainWindow End Sub '----Note Waveforms - Structure wWav + Structure WavSample Public wWavL() As Single Public wWavR() As Single Public wSampleRate As Single @@ -1411,9 +1411,8 @@ EndSearch: Next End Sub - Private Sub CheckError(sender As Object, e As EventArgs) Handles mnTechnicalErrorCheck.Click + Private Sub CheckTechnicalError(sender As Object, e As EventArgs) Handles mnTechnicalErrorCheck.Click For xIN = 1 To UBound(Notes) - Notes(xIN).HasError = False Notes(xIN).ErrorType = 0 Next If gXKeyMode = "PMS" Then CheckErrorImpossibleChord() @@ -2165,7 +2164,7 @@ EndSearch: Next For i = 0 To xLWAVIds.Count - 1 hWAV(xLWAVIds(i) + 1) = "" - wLWAV(xLWAVIds(i) + 1) = New wWav({}, {}, 0) + wLWAV(xLWAVIds(i) + 1) = New WavSample({}, {}, 0) LWAV.Items.Item(xLWAVIds(i)) = C10to36(xLWAVIds(i) + 1) & ": " Next If IsSaved Then SetIsSaved(False) diff --git a/iBMSC/PanelEvents.vb b/iBMSC/PanelEvents.vb index 5379cce7b..97b4564e9 100644 --- a/iBMSC/PanelEvents.vb +++ b/iBMSC/PanelEvents.vb @@ -281,7 +281,7 @@ Partial Public Class MainWindow If My.Computer.Keyboard.CtrlKeyDown AndAlso My.Computer.Keyboard.AltKeyDown AndAlso Not My.Computer.Keyboard.ShiftKeyDown Then Select Case e.KeyCode Case Keys.R : Expand_Load(Nothing, Nothing) - Case Keys.E : CheckError(Nothing, Nothing) + Case Keys.E : CheckTechnicalError(Nothing, Nothing) End Select End If diff --git a/iBMSC/Waveform.vb b/iBMSC/Waveform.vb index 355f67aa5..1fab78c95 100644 --- a/iBMSC/Waveform.vb +++ b/iBMSC/Waveform.vb @@ -25,7 +25,7 @@ Partial Public Class MainWindow If xDWAV.ShowDialog = Windows.Forms.DialogResult.Cancel Then Exit Sub InitPath = ExcludeFileName(xDWAV.FileName) - Dim w As wWav = LoadWaveForm(xDWAV.FileName) + Dim w As WavSample = LoadWaveForm(xDWAV.FileName) wWavL = w.wWavL wWavR = w.wWavR wSampleRate = w.wSampleRate @@ -51,7 +51,7 @@ Partial Public Class MainWindow Private Function LoadWaveForm(ByVal filepath As String) filepath = Audio.CheckFilename(filepath) - If Not System.IO.File.Exists(filepath) Then Return New wWav({}, {}, 0) + If Not System.IO.File.Exists(filepath) Then Return New WavSample({}, {}, 0) Dim src = CSCore.Codecs.CodecFactory.Instance.GetCodec(filepath) @@ -83,6 +83,6 @@ Partial Public Class MainWindow Exit For End If Next - Return New wWav(wWavL, wWavR, src.WaveFormat.SampleRate) + Return New WavSample(wWavL, wWavR, src.WaveFormat.SampleRate) End Function End Class From d0901c955500a20d8440fd387e0b84e2f75e6fba Mon Sep 17 00:00:00 2001 From: psyk2642 <60137590+psyk2642@users.noreply.github.com> Date: Sun, 3 Apr 2022 20:55:09 +0800 Subject: [PATCH 101/257] More Extensions Supported for #WAV Now all audio files (supported by CSCore + .ogg) including .flac, .wma, etc. can be dragged and dropped onto the #WAV list, and can be played even when it's the same file name but with different audio extensions. --- iBMSC/Audio.vb | 23 ++++++++++++++--------- iBMSC/MainWindow.vb | 14 +++++++------- 2 files changed, 21 insertions(+), 16 deletions(-) diff --git a/iBMSC/Audio.vb b/iBMSC/Audio.vb index 0a07c8d95..525791c73 100644 --- a/iBMSC/Audio.vb +++ b/iBMSC/Audio.vb @@ -6,12 +6,14 @@ Imports CSCore.SoundOut Module Audio Dim Output As WasapiOut Dim Source As IWaveSource + Dim SupportedExt() As String = CodecFactory.Instance.GetSupportedFileExtensions() Public Sub Initialize() Output = New WasapiOut() CodecFactory.Instance.Register("ogg", New CodecFactoryEntry(Function(s) Return New NVorbisSource(s).ToWaveSource() End Function, ".ogg")) + SupportedExt = CodecFactory.Instance.GetSupportedFileExtensions() End Sub Public Sub Finalize() @@ -24,18 +26,21 @@ Module Audio If File.Exists(filename) Then Return filename End If - Dim ext = Path.GetExtension(filename) - If String.Compare(ext, ".ogg") = 0 Then - Dim wpath = Path.ChangeExtension(filename, ".wav") - Return IIf(File.Exists(wpath), wpath, filename) - End If - If String.Compare(ext, ".wav") = 0 Then - Dim opath = Path.ChangeExtension(filename, ".ogg") - Return IIf(File.Exists(opath), opath, filename) - End If + + For Each ext In SupportedExt + If File.Exists(Path.ChangeExtension(filename, "." & ext)) Then Return Path.ChangeExtension(filename, "." & ext) + Next Return filename End Function + Public Function GetSupportedExtensions(Optional appendStr As String = ".") + Dim Ext(UBound(SupportedExt)) As String + For i = 0 To UBound(SupportedExt) + Ext(i) = appendStr & SupportedExt(i) + Next + Return Ext + End Function + Public Sub Play(ByVal filename As String) If Source IsNot Nothing Then Output.Stop() diff --git a/iBMSC/MainWindow.vb b/iBMSC/MainWindow.vb index e84dd80d7..3bb5ce5f1 100644 --- a/iBMSC/MainWindow.vb +++ b/iBMSC/MainWindow.vb @@ -37,6 +37,11 @@ Public Class MainWindow 'Private Const SWP_FRAMECHANGED As Integer = &H20 'Private Const SWP_REFRESH As Integer = SWP_NOZORDER Or SWP_NOSIZE Or SWP_NOMOVE Or SWP_NOACTIVATE Or SWP_FRAMECHANGED + Public Sub New() + InitializeComponent() + Audio.Initialize() + SupportedAudioExtension = GetSupportedExtensions() ' I don't think this line is good but it's all I've got. + End Sub Dim MeasureLength(999) As Double Dim MeasureBottom(999) As Double @@ -97,7 +102,8 @@ Public Class MainWindow 'Variables for Drag/Drop Dim DDFileName() As String = {} Dim SupportedFileExtension() As String = {".bms", ".bme", ".bml", ".pms", ".txt", ".sm", ".ibmsc"} - Dim SupportedAudioExtension() As String = {".wav", ".mp3", ".ogg"} + Dim SupportedAudioExtension() As String = {} + 'Variables for theme 'Dim SaveTheme As Boolean = True @@ -317,12 +323,6 @@ Public Class MainWindow Dim fdriValU As Integer Dim fdriCol() As Integer - - Public Sub New() - InitializeComponent() - Audio.Initialize() - End Sub - ''' ''' ''' From 2896944dae9036553a21f78aae788afedfae89a0 Mon Sep 17 00:00:00 2001 From: psyk2642 <60137590+psyk2642@users.noreply.github.com> Date: Sun, 3 Apr 2022 21:00:20 +0800 Subject: [PATCH 102/257] Version up --- README.md | 1 + iBMSC/My Project/AssemblyInfo.vb | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index bec2b27f7..2837872c6 100644 --- a/README.md +++ b/README.md @@ -36,6 +36,7 @@ Listed in the order added. * Added ability to copy and paste measure lengths over multiple measures. * Added ability to duplicate #WAV's. * Added technical error check (Jack notes, impossible chords for PMS, and impossible scratches for DP). Not a toggle because running it live will severely reduce performance. Accessible via the Options tab or via Ctrl+Alt+E. +* Added better support for all audio files (supported by CSCore + ogg). ## Keyboard shortcuts * Changed keybinding to allow note placement between D1 and D8: diff --git a/iBMSC/My Project/AssemblyInfo.vb b/iBMSC/My Project/AssemblyInfo.vb index ad39ae109..3d2bfcccb 100644 --- a/iBMSC/My Project/AssemblyInfo.vb +++ b/iBMSC/My Project/AssemblyInfo.vb @@ -33,7 +33,7 @@ Imports System.Runtime.InteropServices ' by using the '*' as shown below: ' - - + + \ No newline at end of file From 0761b408a2159837471c7600d37ebe4dfb3640f3 Mon Sep 17 00:00:00 2001 From: psyk2642 <60137590+psyk2642@users.noreply.github.com> Date: Tue, 5 Apr 2022 21:13:29 +0800 Subject: [PATCH 103/257] Create VSWorkspaceState.json --- .vs/VSWorkspaceState.json | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 .vs/VSWorkspaceState.json diff --git a/.vs/VSWorkspaceState.json b/.vs/VSWorkspaceState.json new file mode 100644 index 000000000..6b6114114 --- /dev/null +++ b/.vs/VSWorkspaceState.json @@ -0,0 +1,6 @@ +{ + "ExpandedNodes": [ + "" + ], + "PreviewInSolutionExplorer": false +} \ No newline at end of file From 3cb930fbaa9e10b88c8c207bd99a9c5d45f51819 Mon Sep 17 00:00:00 2001 From: psyk2642 <60137590+psyk2642@users.noreply.github.com> Date: Wed, 6 Apr 2022 19:41:07 +0800 Subject: [PATCH 104/257] CheckTechnicalError Slight Update --- iBMSC/MainWindow.vb | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/iBMSC/MainWindow.vb b/iBMSC/MainWindow.vb index 3bb5ce5f1..6dc4b1803 100644 --- a/iBMSC/MainWindow.vb +++ b/iBMSC/MainWindow.vb @@ -1315,6 +1315,7 @@ Public Class MainWindow Else For i = 0 To UBound(Notes) + If Notes(i).ErrorType = 1 Then Continue For Notes(i).HasError = False Notes(i).ErrorType = 0 Notes(i).LNPair = 0 @@ -1413,7 +1414,10 @@ EndSearch: Private Sub CheckTechnicalError(sender As Object, e As EventArgs) Handles mnTechnicalErrorCheck.Click For xIN = 1 To UBound(Notes) - Notes(xIN).ErrorType = 0 + If Notes(xIN).ErrorType = 1 Then + Notes(xIN).ErrorType = 0 + Notes(xIN).HasError = False + End If Next If gXKeyMode = "PMS" Then CheckErrorImpossibleChord() If gXKeyMode = "DP" Then CheckErrorImpossibleScratch() From 1a46b23837689a5854966604b86e8d937ca2abb0 Mon Sep 17 00:00:00 2001 From: psyk2642 <60137590+psyk2642@users.noreply.github.com> Date: Wed, 6 Apr 2022 23:03:39 +0800 Subject: [PATCH 105/257] Status Bar Enhancement (Bars and Seconds) + Misc Added duration of highlighted long note in seconds and bars, and removed the length in 192th's in the status bar. --- iBMSC/EditorPersistent.vb | 9 ++++++ iBMSC/MainWindow.designer.vb | 11 +------- iBMSC/MainWindow.vb | 55 ++++++++++++++++++++++++++++++------ iBMSC/PanelEvents.vb | 2 +- iBMSC/Strings.vb | 12 ++++++-- 5 files changed, 67 insertions(+), 22 deletions(-) diff --git a/iBMSC/EditorPersistent.vb b/iBMSC/EditorPersistent.vb index 4dd1f56c2..25593e0b0 100644 --- a/iBMSC/EditorPersistent.vb +++ b/iBMSC/EditorPersistent.vb @@ -759,10 +759,16 @@ EndOfSub: XMLLoadLocale(eStatusBar.Item("ReducedResolution"), FSP3.ToolTipText) XMLLoadLocale(eStatusBar.Item("MeasureResolution"), FSP2.ToolTipText) XMLLoadLocale(eStatusBar.Item("AbsolutePosition"), FSP4.ToolTipText) + XMLLoadLocale(eStatusBar.Item("Bars"), Strings.StatusBar.Bars) XMLLoadLocale(eStatusBar.Item("Length"), Strings.StatusBar.Length) + XMLLoadLocale(eStatusBar.Item("Note"), Strings.StatusBar.Note) XMLLoadLocale(eStatusBar.Item("LongNote"), Strings.StatusBar.LongNote) XMLLoadLocale(eStatusBar.Item("Hidden"), Strings.StatusBar.Hidden) + XMLLoadLocale(eStatusBar.Item("Landmine"), Strings.StatusBar.Landmine) + XMLLoadLocale(eStatusBar.Item("Comment"), Strings.StatusBar.Comment) + XMLLoadLocale(eStatusBar.Item("Approximate"), Strings.StatusBar.Approximate) XMLLoadLocale(eStatusBar.Item("Error"), Strings.StatusBar.Err) + XMLLoadLocale(eStatusBar.Item("ErrorTechnical"), Strings.StatusBar.ErrTechnical) XMLLoadLocale(eStatusBar.Item("SelStart"), FSSS.ToolTipText) XMLLoadLocale(eStatusBar.Item("SelLength"), FSSL.ToolTipText) XMLLoadLocale(eStatusBar.Item("SelSplit"), FSSH.ToolTipText) @@ -965,6 +971,9 @@ EndOfSub: XMLLoadLocale(eMessages.Item("FileAssociationError"), Strings.Messages.FileAssociationError) XMLLoadLocale(eMessages.Item("RestoreDefaultSettings"), Strings.Messages.RestoreDefaultSettings) XMLLoadLocale(eMessages.Item("RestoreAutosavedFile"), Strings.Messages.RestoreAutosavedFile) + XMLLoadLocale(eMessages.Item("GhostNotesShowMain"), Strings.Messages.GhostNotesShowMain) + XMLLoadLocale(eMessages.Item("GhostNotesModifyExpansion1"), Strings.Messages.GhostNotesModifyExpansion1) + XMLLoadLocale(eMessages.Item("GhostNotesModifyExpansion2"), Strings.Messages.GhostNotesModifyExpansion2) End If Dim eFileType As XmlElement = Root.Item("FileType") diff --git a/iBMSC/MainWindow.designer.vb b/iBMSC/MainWindow.designer.vb index 992c3bbe7..3eff1c8fc 100644 --- a/iBMSC/MainWindow.designer.vb +++ b/iBMSC/MainWindow.designer.vb @@ -208,7 +208,6 @@ Partial Class MainWindow Me.FSP4 = New System.Windows.Forms.ToolStripStatusLabel() Me.TimeStatusLabel = New System.Windows.Forms.ToolStripStatusLabel() Me.FST = New System.Windows.Forms.ToolStripStatusLabel() - Me.FSH = New System.Windows.Forms.ToolStripStatusLabel() Me.FSE = New System.Windows.Forms.ToolStripStatusLabel() Me.TimerMiddle = New System.Windows.Forms.Timer(Me.components) Me.ToolStripContainer1 = New System.Windows.Forms.ToolStripContainer() @@ -1889,7 +1888,7 @@ Partial Class MainWindow 'FStatus ' Me.FStatus.AccessibleRole = System.Windows.Forms.AccessibleRole.StatusBar - Me.FStatus.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.FSC, Me.FSW, Me.FSM, Me.FSP1, Me.FSP3, Me.FSP2, Me.FSP4, Me.TimeStatusLabel, Me.FST, Me.FSH, Me.FSE}) + Me.FStatus.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.FSC, Me.FSW, Me.FSM, Me.FSP1, Me.FSP3, Me.FSP2, Me.FSP4, Me.TimeStatusLabel, Me.FST, Me.FSE}) Me.FStatus.Location = New System.Drawing.Point(0, 0) Me.FStatus.Name = "FStatus" Me.FStatus.ShowItemToolTips = True @@ -1975,13 +1974,6 @@ Partial Class MainWindow Me.FST.Size = New System.Drawing.Size(64, 17) Me.FST.Text = "Length = 0" ' - 'FSH - ' - Me.FSH.ForeColor = System.Drawing.Color.Blue - Me.FSH.Name = "FSH" - Me.FSH.Size = New System.Drawing.Size(46, 17) - Me.FSH.Text = "Hidden" - ' 'FSE ' Me.FSE.ForeColor = System.Drawing.Color.Red @@ -4460,7 +4452,6 @@ Partial Class MainWindow Friend WithEvents FSP3 As System.Windows.Forms.ToolStripStatusLabel Friend WithEvents FSP4 As System.Windows.Forms.ToolStripStatusLabel Friend WithEvents FST As System.Windows.Forms.ToolStripStatusLabel - Friend WithEvents FSH As System.Windows.Forms.ToolStripStatusLabel Friend WithEvents FSE As System.Windows.Forms.ToolStripStatusLabel Friend WithEvents FStatus2 As System.Windows.Forms.StatusStrip Friend WithEvents BVCReverse As System.Windows.Forms.ToolStripButton diff --git a/iBMSC/MainWindow.vb b/iBMSC/MainWindow.vb index 6dc4b1803..8033147e6 100644 --- a/iBMSC/MainWindow.vb +++ b/iBMSC/MainWindow.vb @@ -2671,7 +2671,6 @@ StartCount: If Not NTInput Then FSW.Text = "" FSM.Text = Add3Zeros(xMeasure) FST.Text = "" - FSH.Text = "" FSE.Text = "" ElseIf xI1 <= UBound(Notes) Then @@ -2690,8 +2689,35 @@ StartCount: If Not NTInput Then Notes(xI1).Value / 10000, C10to36(Notes(xI1).Value \ 10000)) FSM.Text = Add3Zeros(xMeasure) - FST.Text = IIf(NTInput, Strings.StatusBar.Length & " = " & Notes(xI1).Length, IIf(Notes(xI1).LongNote, Strings.StatusBar.LongNote, "")) - FSH.Text = IIf(Notes(xI1).Hidden, Strings.StatusBar.Hidden, "") + + ' TODO: Count stops + If Notes(xI1).Length > 0 Then + FST.ForeColor = System.Drawing.Color.Olive + FST.Text = Strings.StatusBar.LongNote & " " & + Notes(xI1).Length / 192.0R * 4 & " " & Strings.StatusBar.Bars & " " & + "(" & GetTimeFromVPosition(Notes(xI1).VPosition + Notes(xI1).Length) - GetTimeFromVPosition(Notes(xI1).VPosition) & "s)" + ElseIf Notes(xI1).LNPair <> 0 Then + FST.ForeColor = System.Drawing.Color.Olive + FST.Text = Strings.StatusBar.LongNote & " " & + Math.Abs(Notes(xI1).VPosition - Notes(Notes(xI1).LNPair).VPosition) / 192.0R * 4 & " " & Strings.StatusBar.Bars & " " & + "(" & Math.Abs(GetTimeFromVPosition(Notes(Notes(xI1).LNPair).VPosition) - GetTimeFromVPosition(Notes(xI1).VPosition)) & "s)" + ElseIf Notes(xI1).LongNote Then + FST.ForeColor = System.Drawing.Color.Olive + FST.Text = Strings.StatusBar.LongNote + ElseIf Notes(xI1).Hidden Then + FST.ForeColor = System.Drawing.Color.Blue + FST.Text = Strings.StatusBar.Hidden + ElseIf Notes(xI1).Landmine Then + FST.ForeColor = System.Drawing.Color.Red + FST.Text = Strings.StatusBar.Landmine + ElseIf Notes(xI1).Comment Then + FST.ForeColor = System.Drawing.Color.Green + FST.Text = Strings.StatusBar.Comment + Else + FST.ForeColor = System.Drawing.Color.Olive + FST.Text = Strings.StatusBar.Note + End If + FSE.Text = IIf(Notes(xI1).HasError, Strings.StatusBar.Err, "") End If @@ -2712,8 +2738,21 @@ StartCount: If Not NTInput Then FSC.Text = nTitle(SelectedColumn) FSW.Text = C10to36(LWAV.SelectedIndex + 1) FSM.Text = Add3Zeros(xMeasure) - FST.Text = IIf(NTInput, TempLength, IIf(My.Computer.Keyboard.ShiftKeyDown, Strings.StatusBar.LongNote, "")) - FSH.Text = IIf(My.Computer.Keyboard.CtrlKeyDown, Strings.StatusBar.Hidden, "") + If TempLength > 0 Then + FST.ForeColor = System.Drawing.Color.Olive + FST.Text = Strings.StatusBar.LongNote & " " & + TempLength / 192.0R * 4 & " " & Strings.StatusBar.Bars & " " & + "(" & Strings.StatusBar.Approximate & " " & GetTimeFromVPosition(TempVPosition + TempLength) - GetTimeFromVPosition(TempVPosition) & "s)" + ElseIf My.Computer.Keyboard.CtrlKeyDown AndAlso My.Computer.Keyboard.ShiftKeyDown Then + FST.ForeColor = System.Drawing.Color.Red + FST.Text = Strings.StatusBar.Landmine + ElseIf My.Computer.Keyboard.ShiftKeyDown AndAlso Not NTInput Then + FST.ForeColor = System.Drawing.Color.Olive + FST.Text = Strings.StatusBar.LongNote + ElseIf My.Computer.Keyboard.CtrlKeyDown Then + FST.ForeColor = System.Drawing.Color.Blue + FST.Text = Strings.StatusBar.Hidden + End If ElseIf TBTimeSelect.Checked Then FSSS.Text = vSelStart @@ -5423,7 +5462,7 @@ case2: Dim xI0 As Integer Case 1 GhostMode = 0 Case 2 - Dim xResult As MsgBoxResult = MsgBox(Strings.Messages.GhostNotesShowMain, MsgBoxStyle.YesNo) + Dim xResult As MsgBoxResult = MsgBox(Strings.Messages.SaveWarning & Strings.Messages.GhostNotesShowMain, MsgBoxStyle.YesNo) If xResult = MsgBoxResult.No Then Exit Sub If xResult = MsgBoxResult.Yes Then SaveBMS() SwapGhostNotes() @@ -5530,11 +5569,11 @@ case2: Dim xI0 As Integer Private Sub TExpansion_Click(sender As Object, e As EventArgs) Handles TExpansion.Click Select Case GhostMode Case 1 - Dim xResult As MsgBoxResult = MsgBox(Strings.Messages.GhostNotesModifyExpansion1, MsgBoxStyle.YesNo) + Dim xResult As MsgBoxResult = MsgBox(Strings.Messages.SaveWarning & Strings.Messages.GhostNotesModifyExpansion1, MsgBoxStyle.YesNo) If xResult = MsgBoxResult.No Then GhostExpansionModify = True : Exit Sub GhostMode = 0 Case 2 - Dim xResult As MsgBoxResult = MsgBox(Strings.Messages.GhostNotesModifyExpansion2, MsgBoxStyle.YesNo) + Dim xResult As MsgBoxResult = MsgBox(Strings.Messages.SaveWarning & Strings.Messages.GhostNotesModifyExpansion2, MsgBoxStyle.YesNo) If xResult = MsgBoxResult.No Then GhostExpansionModify = True : Exit Sub SaveBMS() Expand_RemoveGhostNotes() diff --git a/iBMSC/PanelEvents.vb b/iBMSC/PanelEvents.vb index 97b4564e9..134391c3a 100644 --- a/iBMSC/PanelEvents.vb +++ b/iBMSC/PanelEvents.vb @@ -1125,7 +1125,7 @@ Partial Public Class MainWindow End Select Dim col = GetColumnAtEvent(e, xHS) Dim vps = GetMouseVPosition(gSnap) - If vps <> lastVPos Or col <> lastColumn Then + If vps <> lastVPos Or col <> lastColumn Then ' Or MouseMoveStatus <> LastMouseDownLocation lastVPos = vps lastColumn = col POStatusRefresh() diff --git a/iBMSC/Strings.vb b/iBMSC/Strings.vb index 3dd708f2f..59956272e 100644 --- a/iBMSC/Strings.vb +++ b/iBMSC/Strings.vb @@ -5,10 +5,16 @@ Public Class Strings Public Shared None As String = "None" Public Class StatusBar + Public Shared Bars As String = "Beats" Public Shared Length As String = "Length" + Public Shared Note As String = "Note" Public Shared LongNote As String = "LongNote" Public Shared Hidden As String = "Hidden" + Public Shared Landmine As String = "Landmine" + Public Shared Comment As String = "Comment" + Public Shared Approximate As String = "Approx." Public Shared Err As String = "Error" + Public Shared ErrTechnical As String = "Technical Error" End Class Public Class Messages @@ -42,9 +48,9 @@ Public Class Strings Public Shared FileAssociationError As String = "Error changing file type association:" Public Shared RestoreDefaultSettings As String = "Restore default settings?" Public Shared RestoreAutosavedFile As String = "{} autosaved file(s) have been found. Do you want to recover these files?" - Public Shared GhostNotesShowMain As String = "Warning: The notes in the current section will be changed to ghost notes. Save current section and continue?" - Public Shared GhostNotesModifyExpansion1 As String = "Warning: The current ghost notes will become uneditable. Continue?" - Public Shared GhostNotesModifyExpansion2 As String = "Warning: There are unsaved changes in the ghost notes. Save current section and continue?" + Public Shared GhostNotesShowMain As String = "The notes in the current section will be changed to ghost notes. Save current section and continue?" + Public Shared GhostNotesModifyExpansion1 As String = "The current ghost notes will become uneditable. Continue?" + Public Shared GhostNotesModifyExpansion2 As String = "There are unsaved changes in the ghost notes. Save current section and continue?" End Class Public Class FileType From fdaf2586e81468d543503b1d851f478f367dba82 Mon Sep 17 00:00:00 2001 From: psyk2642 <60137590+psyk2642@users.noreply.github.com> Date: Thu, 7 Apr 2022 07:01:55 +0800 Subject: [PATCH 106/257] Update Strings.vb --- iBMSC/Strings.vb | 484 +++++++++++++++++++++++------------------------ 1 file changed, 242 insertions(+), 242 deletions(-) diff --git a/iBMSC/Strings.vb b/iBMSC/Strings.vb index 59956272e..8a4c50fac 100644 --- a/iBMSC/Strings.vb +++ b/iBMSC/Strings.vb @@ -1,244 +1,244 @@ -Public Class Strings - - Public Shared OK As String = "OK" - Public Shared Cancel As String = "Cancel" - Public Shared None As String = "None" - - Public Class StatusBar - Public Shared Bars As String = "Beats" - Public Shared Length As String = "Length" - Public Shared Note As String = "Note" - Public Shared LongNote As String = "LongNote" - Public Shared Hidden As String = "Hidden" - Public Shared Landmine As String = "Landmine" - Public Shared Comment As String = "Comment" - Public Shared Approximate As String = "Approx." - Public Shared Err As String = "Error" - Public Shared ErrTechnical As String = "Technical Error" - End Class - - Public Class Messages - Public Shared Err As String = "Error" - Public Shared SaveOnExit As String = "Do you want to save changes?" - Public Shared SaveOnExit1 As String = "You should tell me if you want to save changes before closing the computer. -_,-" - Public Shared SaveOnExit2 As String = "You still need to tell me if you want to save changes even though you are closing the application with task manager. -_,-" - Public Shared PromptEnter As String = "Please enter a label." - Public Shared PromptEnterNumeric As String = "Please enter a value." - Public Shared PromptEnterMeasure As String = "Please enter a measure (0-999)." - Public Shared PromptEnterBPM As String = "Please enter a BPM value." - Public Shared PromptEnterSTOP As String = "Please enter a STOP value." - Public Shared PromptEnterSCROLL As String = "Please enter a SCROLL value." - Public Shared PromptSlashValue As String = "When the slash key (""/"") is pressed, change grid division to:" - Public Shared InvalidLabel As String = "Invalid label." - Public Shared CannotFind As String = "Cannot find file {}." - Public Shared PleaseRespecifyPath As String = "Please respecify path." - Public Shared PlayerNotFound As String = "Player not found" - Public Shared PreviewDelError As String = "There must exist at least one player." - Public Shared NegativeFactorError As String = "Factor must be greater than zero." - Public Shared NegativeDivisorError As String = "Divisor must be greater than zero." - Public Shared PreferencePostpone As String = "The preference will take effect on the next start-up of the program." - Public Shared EraserObsolete As String = "The eraser tool has been replaced by right-clicking on the note." - Public Shared SaveWarning As String = "Warning: " - Public Shared NoteOverlapError As String = "Note operlapping detected. Increasing Maximum Grid Partition will resolve this." - Public Shared BPMOverflowError As String = "Numbers of multi-byte BPMs has exceeded supported maximum: " - Public Shared STOPOverflowError As String = "Numbers of STOPs has exceeded supported maximum: " - Public Shared SCROLLOverflowError As String = "Numbers of multi-byte SCROLLs has exceeded supported maximum: " - Public Shared SavedFileWillContainErrors As String = "The saved file will contain errors." - Public Shared FileAssociationPrompt As String = "Do you want to set iBMSC as default program to all {} files?" - Public Shared FileAssociationError As String = "Error changing file type association:" - Public Shared RestoreDefaultSettings As String = "Restore default settings?" - Public Shared RestoreAutosavedFile As String = "{} autosaved file(s) have been found. Do you want to recover these files?" - Public Shared GhostNotesShowMain As String = "The notes in the current section will be changed to ghost notes. Save current section and continue?" - Public Shared GhostNotesModifyExpansion1 As String = "The current ghost notes will become uneditable. Continue?" - Public Shared GhostNotesModifyExpansion2 As String = "There are unsaved changes in the ghost notes. Save current section and continue?" - End Class - - Public Class FileType - Public Shared _all As String = "All files (*.*)" - - Public Shared _bms As String = "Supported BMS Format (*.bms, *.bme, *.bml, *.pms, *.txt)" - Public Shared BMS As String = "Be-Music Script (*.bms)" - Public Shared BME As String = "Be-Music Extended Format (*.bme)" - Public Shared BML As String = "Be-Music Longnote Format (*.bml)" - Public Shared PMS As String = "Po-Mu Script (*.pms)" - Public Shared TXT As String = "Text document (*.txt)" - - Public Shared SM As String = "StepMania Script (*.sm)" - Public Shared IBMSC As String = "iBMSC Binary Format (*.ibmsc)" - Public Shared XML As String = "Extensible Markup Language (*.xml)" - Public Shared THEME_XML As String = "iBMSC Theme File (*.Theme.xml)" - Public Shared TH As String = "iBMSC 2.x Theme File (*.Theme.xml)" - - Public Shared _audio As String = "Supported Audio Format (*.wav, *.ogg, *.mp3, *.mid)" - Public Shared _wave As String = "Supported Wave Audio Format (*.wav, *.ogg, *.mp3)" - Public Shared WAV As String = "Waveform Audio (*.wav)" - Public Shared OGG As String = "Ogg Vorbis Audio (*.ogg)" - Public Shared MP3 As String = "MPEG Layer-3 Audio (*.mp3)" - Public Shared MID As String = "MIDI (*.mid)" - - Public Shared _image As String = "Supported Image Format (*.png, *.bmp, *.jpg, *.gif)" - - Public Shared EXE As String = "Executable file (*.exe)" - End Class - - Public Class fStatistics - Public Shared Title As String = "Statistics" - Public Shared lBPM As String = "BPM" - Public Shared lSTOP As String = "STOP" - Public Shared lSCROLL As String = "SCROLL" - Public Shared lA As String = "A1-A8" - Public Shared lA1 As String = "A1" - Public Shared lA2 As String = "A2" - Public Shared lA3 As String = "A3" - Public Shared lA4 As String = "A4" - Public Shared lA5 As String = "A5" - Public Shared lA6 As String = "A6" - Public Shared lA7 As String = "A7" - Public Shared lA8 As String = "A8" +Public Class Strings + + Public Shared OK As String = "OK" + Public Shared Cancel As String = "Cancel" + Public Shared None As String = "None" + + Public Class StatusBar + Public Shared Bars As String = "Beats" + Public Shared Length As String = "Length" + Public Shared Note As String = "Note" + Public Shared LongNote As String = "LongNote" + Public Shared Hidden As String = "Hidden" + Public Shared Landmine As String = "Landmine" + Public Shared Comment As String = "Comment" + Public Shared Approximate As String = "Approx." + Public Shared Err As String = "Error" + Public Shared ErrTechnical As String = "Technical Error" + End Class + + Public Class Messages + Public Shared Err As String = "Error" + Public Shared SaveOnExit As String = "Do you want to save changes?" + Public Shared SaveOnExit1 As String = "You should tell me if you want to save changes before closing the computer. -_,-" + Public Shared SaveOnExit2 As String = "You still need to tell me if you want to save changes even though you are closing the application with task manager. -_,-" + Public Shared PromptEnter As String = "Please enter a label." + Public Shared PromptEnterNumeric As String = "Please enter a value." + Public Shared PromptEnterMeasure As String = "Please enter a measure (0-999)." + Public Shared PromptEnterBPM As String = "Please enter a BPM value." + Public Shared PromptEnterSTOP As String = "Please enter a STOP value." + Public Shared PromptEnterSCROLL As String = "Please enter a SCROLL value." + Public Shared PromptSlashValue As String = "When the slash key (""/"") is pressed, change grid division to:" + Public Shared InvalidLabel As String = "Invalid label." + Public Shared CannotFind As String = "Cannot find file {}." + Public Shared PleaseRespecifyPath As String = "Please respecify path." + Public Shared PlayerNotFound As String = "Player not found" + Public Shared PreviewDelError As String = "There must exist at least one player." + Public Shared NegativeFactorError As String = "Factor must be greater than zero." + Public Shared NegativeDivisorError As String = "Divisor must be greater than zero." + Public Shared PreferencePostpone As String = "The preference will take effect on the next start-up of the program." + Public Shared EraserObsolete As String = "The eraser tool has been replaced by right-clicking on the note." + Public Shared SaveWarning As String = "Warning: " + Public Shared NoteOverlapError As String = "Note operlapping detected. Increasing Maximum Grid Partition will resolve this." + Public Shared BPMOverflowError As String = "Numbers of multi-byte BPMs has exceeded supported maximum: " + Public Shared STOPOverflowError As String = "Numbers of STOPs has exceeded supported maximum: " + Public Shared SCROLLOverflowError As String = "Numbers of multi-byte SCROLLs has exceeded supported maximum: " + Public Shared SavedFileWillContainErrors As String = "The saved file will contain errors." + Public Shared FileAssociationPrompt As String = "Do you want to set iBMSC as default program to all {} files?" + Public Shared FileAssociationError As String = "Error changing file type association:" + Public Shared RestoreDefaultSettings As String = "Restore default settings?" + Public Shared RestoreAutosavedFile As String = "{} autosaved file(s) have been found. Do you want to recover these files?" + Public Shared GhostNotesShowMain As String = "The notes in the current section will be changed to ghost notes. Save current section and continue?" + Public Shared GhostNotesModifyExpansion1 As String = "The current ghost notes will become uneditable. Continue?" + Public Shared GhostNotesModifyExpansion2 As String = "There are unsaved changes in the ghost notes. Save current section and continue?" + End Class + + Public Class FileType + Public Shared _all As String = "All files (*.*)" + + Public Shared _bms As String = "Supported BMS Format (*.bms, *.bme, *.bml, *.pms, *.txt)" + Public Shared BMS As String = "Be-Music Script (*.bms)" + Public Shared BME As String = "Be-Music Extended Format (*.bme)" + Public Shared BML As String = "Be-Music Longnote Format (*.bml)" + Public Shared PMS As String = "Po-Mu Script (*.pms)" + Public Shared TXT As String = "Text document (*.txt)" + + Public Shared SM As String = "StepMania Script (*.sm)" + Public Shared IBMSC As String = "iBMSC Binary Format (*.ibmsc)" + Public Shared XML As String = "Extensible Markup Language (*.xml)" + Public Shared THEME_XML As String = "iBMSC Theme File (*.Theme.xml)" + Public Shared TH As String = "iBMSC 2.x Theme File (*.Theme.xml)" + + Public Shared _audio As String = "Supported Audio Format (*.wav, *.ogg, *.mp3, *.mid)" + Public Shared _wave As String = "Supported Wave Audio Format (*.wav, *.ogg, *.mp3)" + Public Shared WAV As String = "Waveform Audio (*.wav)" + Public Shared OGG As String = "Ogg Vorbis Audio (*.ogg)" + Public Shared MP3 As String = "MPEG Layer-3 Audio (*.mp3)" + Public Shared MID As String = "MIDI (*.mid)" + + Public Shared _image As String = "Supported Image Format (*.png, *.bmp, *.jpg, *.gif)" + + Public Shared EXE As String = "Executable file (*.exe)" + End Class + + Public Class fStatistics + Public Shared Title As String = "Statistics" + Public Shared lBPM As String = "BPM" + Public Shared lSTOP As String = "STOP" + Public Shared lSCROLL As String = "SCROLL" + Public Shared lA As String = "A1-A8" + Public Shared lA1 As String = "A1" + Public Shared lA2 As String = "A2" + Public Shared lA3 As String = "A3" + Public Shared lA4 As String = "A4" + Public Shared lA5 As String = "A5" + Public Shared lA6 As String = "A6" + Public Shared lA7 As String = "A7" + Public Shared lA8 As String = "A8" Public Shared lD As String = "D1-D8" - Public Shared lD1 As String = "D1" - Public Shared lD2 As String = "D2" - Public Shared lD3 As String = "D3" - Public Shared lD4 As String = "D4" - Public Shared lD5 As String = "D5" - Public Shared lD6 As String = "D6" - Public Shared lD7 As String = "D7" + Public Shared lD1 As String = "D1" + Public Shared lD2 As String = "D2" + Public Shared lD3 As String = "D3" + Public Shared lD4 As String = "D4" + Public Shared lD5 As String = "D5" + Public Shared lD6 As String = "D6" + Public Shared lD7 As String = "D7" Public Shared lD8 As String = "D8" - Public Shared lBGA As String = "BGA" - Public Shared lBGM As String = "BGM" - Public Shared lNotes As String = "Notes" - Public Shared lTotal As String = "Total" - Public Shared lShort As String = "Short" - Public Shared lLong As String = "Long" - Public Shared lLnObj As String = "LnObj" - Public Shared lHidden As String = "Hidden" - Public Shared lLandmines As String = "Landmines" - Public Shared lErrors As String = "Errors" - Public Shared recTotal As String = "" - ' Public Shared recTotal As String = "Recommended #Total:" - Public Shared recTotalValue As String = "" - ' Public Shared recTotalValue As String = "500" - End Class - - Public Class fopPlayer - Public Shared Title As String = "Player Arguments Options" - Public Shared Add As String = "Add" - Public Shared Remove As String = "Remove" - Public Shared Path As String = "Path" - Public Shared PlayFromBeginning As String = "Play from beginning" - Public Shared PlayFromHere As String = "Play from current measure" - Public Shared StopPlaying As String = "Stop" - Public Shared References As String = "References (case-sensitive):" - Public Shared DirectoryOfApp As String = "Directory of the application" - Public Shared CurrMeasure As String = "Current measure" - Public Shared FileName As String = "File Name" - Public Shared RestoreDefault As String = "Restore Default" - End Class - - Public Class fopVisual - Public Shared Title As String = "Visual Options" - Public Shared Width As String = "Width" - Public Shared Caption As String = "Caption" - Public Shared Note As String = "Note" - Public Shared Label As String = "Label" - Public Shared LongNote As String = "Long Note" - Public Shared LongNoteLabel As String = "Long Note Label" - Public Shared Bg As String = "Bg" - Public Shared ColumnCaption As String = "Column Caption" - Public Shared ColumnCaptionFont As String = "Column Caption Font" - Public Shared Background As String = "Background" - Public Shared Grid As String = "Grid" - Public Shared SubGrid As String = "Sub" - Public Shared VerticalLine As String = "Vertical Line" - Public Shared MeasureBarLine As String = "Measure BarLine" - Public Shared BGMWaveform As String = "BGM Waveform" - Public Shared NoteHeight As String = "Note Height" - Public Shared NoteLabel As String = "Note Label" - Public Shared MeasureLabel As String = "Measure Label" - Public Shared LabelVerticalShift As String = "Note Label Vertical Shift" - Public Shared LabelHorizontalShift As String = "Note Label Horizontal Shift" - Public Shared LongNoteLabelHorizontalShift As String = "LongNote Label Horizontal Shift" - Public Shared HiddenNoteOpacity As String = "Hidden Note Opacity" - Public Shared NoteBorderOnMouseOver As String = "Note Border on MouseOver" - Public Shared NoteBorderOnSelection As String = "Note Border on Selection" - Public Shared NoteBorderOnAdjustingLength As String = "Note Border on Adjusting Length" - Public Shared SelectionBoxBorder As String = "Selection Box Border" - Public Shared TSCursor As String = "Time Selection Cursor" - Public Shared TSSplitter As String = "Time Selection Splitter" - Public Shared TSCursorSensitivity As String = "Time Selection Cursor Sensitivity" - Public Shared TSMouseOverBorder As String = "Time Selection MouseOver Border" - Public Shared TSFill As String = "Time Selection Fill" - Public Shared TSBPM As String = "Time Selection BPM" - Public Shared TSBPMFont As String = "Time Selection BPM Font" - Public Shared MiddleSensitivity As String = "Middle Button Release Sensitivity" - End Class - - Public Class fopGeneral - Public Shared Title As String = "General Options" - Public Shared MouseWheel As String = "Mouse Wheel" - Public Shared TextEncoding As String = "Text Encoding" - 'Public Shared SortingMethod As String = "Sorting Method" - 'Public Shared sortBubble As String = "One-directional Bubble Sort" - 'Public Shared sortInsertion As String = "Insertion Sort" - 'Public Shared sortQuick As String = "Quick Sort" - 'Public Shared sortQuickD3 As String = "Quick Sort d3" - 'Public Shared sortHeap As String = "Heap Sort" - Public Shared PageUpDown As String = "PageUp / PageDown" - Public Shared MiddleButton As String = "Mouse Middle Button" - Public Shared MiddleButtonAuto As String = "Click and Auto Scroll" - Public Shared MiddleButtonDrag As String = "Click and Drag" - Public Shared AssociateFileType As String = "Associate Filetype" - Public Shared MaxGridPartition As String = "Max Grid Partition in BMS" - Public Shared BeepWhileSaved As String = "Beep while saved" - Public Shared ExtendBPM As String = "Extend number of multi-byte BPMs to 1296" - Public Shared ExtendSTOP As String = "Extend number of STOPs to 1296" - Public Shared AutoFocusOnMouseEnter As String = "Automatically set focus to editing panel on mouse enter" - Public Shared DisableFirstClick As String = "Disable first click if the editing panel is not focused" - Public Shared AutoSave As String = "AutoSave" - Public Shared minutes As String = "minutes" - Public Shared StopPreviewOnClick As String = "Stop preview if clicked on the editing panel" - Public Shared ModeDP As String = "DP Mode keybinding" - End Class - - Public Class fFind - Public Shared NoteRange As String = "Note Range" - Public Shared MeasureRange As String = "Measure Range" - Public Shared LabelRange As String = "Label Range" - Public Shared ValueRange As String = "Value Range" - Public Shared to_ As String = "to" - Public Shared Selected As String = "Selected" - Public Shared UnSelected As String = "Unselected" - Public Shared ShortNote As String = "Short" - Public Shared LongNote As String = "Long" - Public Shared Hidden As String = "Hidden" - Public Shared Visible As String = "Visible" - Public Shared Column As String = "Column" - Public Shared SelectAll As String = "Select All" - Public Shared SelectInverse As String = "Select Inverse" - Public Shared UnselectAll As String = "Unselect All" - Public Shared Operation As String = "Operation" - Public Shared ReplaceWithLabel As String = "Replace with Label:" - Public Shared ReplaceWithValue As String = "Replace with Value:" - Public Shared Select_ As String = "Select" - Public Shared Unselect_ As String = "Unselect" - Public Shared Delete_ As String = "Delete" - Public Shared Close_ As String = "Close" - End Class - - Public Class fImportSM - Public Shared Title As String = "Import *.SM file" - Public Shared Difficulty As String = "Difficulty" - Public Shared Note As String = "Please note that bg musics and STOP values will not be imported." - End Class - - Public Class FileAssociation - Public Shared BMS As String = "Be-Music Script" - Public Shared BME As String = "Be-Music Extended Format" - Public Shared BML As String = "Be-Music Longnote Format" - Public Shared PMS As String = "Po-Mu Script" - Public Shared IBMSC As String = "iBMSC Binary Format" - Public Shared Open As String = "Open" - Public Shared Preview As String = "Preview" - Public Shared ViewCode As String = "View Code" - End Class -End Class + Public Shared lBGA As String = "BGA" + Public Shared lBGM As String = "BGM" + Public Shared lNotes As String = "Notes" + Public Shared lTotal As String = "Total" + Public Shared lShort As String = "Short" + Public Shared lLong As String = "Long" + Public Shared lLnObj As String = "LnObj" + Public Shared lHidden As String = "Hidden" + Public Shared lLandmines As String = "Landmines" + Public Shared lErrors As String = "Errors" + Public Shared recTotal As String = "" + ' Public Shared recTotal As String = "Recommended #Total:" + Public Shared recTotalValue As String = "" + ' Public Shared recTotalValue As String = "500" + End Class + + Public Class fopPlayer + Public Shared Title As String = "Player Arguments Options" + Public Shared Add As String = "Add" + Public Shared Remove As String = "Remove" + Public Shared Path As String = "Path" + Public Shared PlayFromBeginning As String = "Play from beginning" + Public Shared PlayFromHere As String = "Play from current measure" + Public Shared StopPlaying As String = "Stop" + Public Shared References As String = "References (case-sensitive):" + Public Shared DirectoryOfApp As String = "Directory of the application" + Public Shared CurrMeasure As String = "Current measure" + Public Shared FileName As String = "File Name" + Public Shared RestoreDefault As String = "Restore Default" + End Class + + Public Class fopVisual + Public Shared Title As String = "Visual Options" + Public Shared Width As String = "Width" + Public Shared Caption As String = "Caption" + Public Shared Note As String = "Note" + Public Shared Label As String = "Label" + Public Shared LongNote As String = "Long Note" + Public Shared LongNoteLabel As String = "Long Note Label" + Public Shared Bg As String = "Bg" + Public Shared ColumnCaption As String = "Column Caption" + Public Shared ColumnCaptionFont As String = "Column Caption Font" + Public Shared Background As String = "Background" + Public Shared Grid As String = "Grid" + Public Shared SubGrid As String = "Sub" + Public Shared VerticalLine As String = "Vertical Line" + Public Shared MeasureBarLine As String = "Measure BarLine" + Public Shared BGMWaveform As String = "BGM Waveform" + Public Shared NoteHeight As String = "Note Height" + Public Shared NoteLabel As String = "Note Label" + Public Shared MeasureLabel As String = "Measure Label" + Public Shared LabelVerticalShift As String = "Note Label Vertical Shift" + Public Shared LabelHorizontalShift As String = "Note Label Horizontal Shift" + Public Shared LongNoteLabelHorizontalShift As String = "LongNote Label Horizontal Shift" + Public Shared HiddenNoteOpacity As String = "Hidden Note Opacity" + Public Shared NoteBorderOnMouseOver As String = "Note Border on MouseOver" + Public Shared NoteBorderOnSelection As String = "Note Border on Selection" + Public Shared NoteBorderOnAdjustingLength As String = "Note Border on Adjusting Length" + Public Shared SelectionBoxBorder As String = "Selection Box Border" + Public Shared TSCursor As String = "Time Selection Cursor" + Public Shared TSSplitter As String = "Time Selection Splitter" + Public Shared TSCursorSensitivity As String = "Time Selection Cursor Sensitivity" + Public Shared TSMouseOverBorder As String = "Time Selection MouseOver Border" + Public Shared TSFill As String = "Time Selection Fill" + Public Shared TSBPM As String = "Time Selection BPM" + Public Shared TSBPMFont As String = "Time Selection BPM Font" + Public Shared MiddleSensitivity As String = "Middle Button Release Sensitivity" + End Class + + Public Class fopGeneral + Public Shared Title As String = "General Options" + Public Shared MouseWheel As String = "Mouse Wheel" + Public Shared TextEncoding As String = "Text Encoding" + 'Public Shared SortingMethod As String = "Sorting Method" + 'Public Shared sortBubble As String = "One-directional Bubble Sort" + 'Public Shared sortInsertion As String = "Insertion Sort" + 'Public Shared sortQuick As String = "Quick Sort" + 'Public Shared sortQuickD3 As String = "Quick Sort d3" + 'Public Shared sortHeap As String = "Heap Sort" + Public Shared PageUpDown As String = "PageUp / PageDown" + Public Shared MiddleButton As String = "Mouse Middle Button" + Public Shared MiddleButtonAuto As String = "Click and Auto Scroll" + Public Shared MiddleButtonDrag As String = "Click and Drag" + Public Shared AssociateFileType As String = "Associate Filetype" + Public Shared MaxGridPartition As String = "Max Grid Partition in BMS" + Public Shared BeepWhileSaved As String = "Beep while saved" + Public Shared ExtendBPM As String = "Extend number of multi-byte BPMs to 1296" + Public Shared ExtendSTOP As String = "Extend number of STOPs to 1296" + Public Shared AutoFocusOnMouseEnter As String = "Automatically set focus to editing panel on mouse enter" + Public Shared DisableFirstClick As String = "Disable first click if the editing panel is not focused" + Public Shared AutoSave As String = "AutoSave" + Public Shared minutes As String = "minutes" + Public Shared StopPreviewOnClick As String = "Stop preview if clicked on the editing panel" + Public Shared ModeDP As String = "DP Mode keybinding" + End Class + + Public Class fFind + Public Shared NoteRange As String = "Note Range" + Public Shared MeasureRange As String = "Measure Range" + Public Shared LabelRange As String = "Label Range" + Public Shared ValueRange As String = "Value Range" + Public Shared to_ As String = "to" + Public Shared Selected As String = "Selected" + Public Shared UnSelected As String = "Unselected" + Public Shared ShortNote As String = "Short" + Public Shared LongNote As String = "Long" + Public Shared Hidden As String = "Hidden" + Public Shared Visible As String = "Visible" + Public Shared Column As String = "Column" + Public Shared SelectAll As String = "Select All" + Public Shared SelectInverse As String = "Select Inverse" + Public Shared UnselectAll As String = "Unselect All" + Public Shared Operation As String = "Operation" + Public Shared ReplaceWithLabel As String = "Replace with Label:" + Public Shared ReplaceWithValue As String = "Replace with Value:" + Public Shared Select_ As String = "Select" + Public Shared Unselect_ As String = "Unselect" + Public Shared Delete_ As String = "Delete" + Public Shared Close_ As String = "Close" + End Class + + Public Class fImportSM + Public Shared Title As String = "Import *.SM file" + Public Shared Difficulty As String = "Difficulty" + Public Shared Note As String = "Please note that bg musics and STOP values will not be imported." + End Class + + Public Class FileAssociation + Public Shared BMS As String = "Be-Music Script" + Public Shared BME As String = "Be-Music Extended Format" + Public Shared BML As String = "Be-Music Longnote Format" + Public Shared PMS As String = "Po-Mu Script" + Public Shared IBMSC As String = "iBMSC Binary Format" + Public Shared Open As String = "Open" + Public Shared Preview As String = "Preview" + Public Shared ViewCode As String = "View Code" + End Class +End Class From 66dff4d5053de6ff42ea056a4f8e8f4d181144c8 Mon Sep 17 00:00:00 2001 From: psyk2642 <60137590+psyk2642@users.noreply.github.com> Date: Sun, 10 Apr 2022 11:13:09 +0800 Subject: [PATCH 107/257] Added Key Rebinding Support --- README.md | 19 +- iBMSC/EditorPersistent.vb | 39 +++ iBMSC/ImageButtonsSmall/x16Key.png | Bin 0 -> 10264 bytes iBMSC/MainWindow.designer.vb | 65 +++-- iBMSC/MainWindow.vb | 108 ++++++- iBMSC/My Project/Resources.Designer.vb | 10 + iBMSC/My Project/Resources.resx | 123 ++++---- iBMSC/Option Windows/OpGeneral.Designer.vb | 8 +- iBMSC/Option Windows/OpKeybinding.Designer.vb | 184 ++++++++++++ iBMSC/Option Windows/OpKeybinding.resx | 120 ++++++++ iBMSC/Option Windows/OpKeybinding.vb | 220 ++++++++++++++ iBMSC/Option Windows/OpPlayer.vb | 14 +- .../OpVisualOverride.Designer.vb | 1 + iBMSC/PanelEvents.vb | 271 +++++++++++++----- iBMSC/Strings.vb | 27 +- iBMSC/iBMSC.vbproj | 9 + 16 files changed, 1033 insertions(+), 185 deletions(-) create mode 100644 iBMSC/ImageButtonsSmall/x16Key.png create mode 100644 iBMSC/Option Windows/OpKeybinding.Designer.vb create mode 100644 iBMSC/Option Windows/OpKeybinding.resx create mode 100644 iBMSC/Option Windows/OpKeybinding.vb diff --git a/README.md b/README.md index 2837872c6..ebd51c76b 100644 --- a/README.md +++ b/README.md @@ -3,10 +3,15 @@ pBMSC pBMSC is a modified version of uBMSC (which is a modified version of iBMSC) with a primary focus on quality of life functionalities such as keyboard shortcuts. See README.md.iBMSC for the original iBMSC README file and REAME.md.uBMSC for the last uBMSC README file. +### Discretion +* Themes from Bluvel's uBMSC fork may not be compatible, please use themes from Zadoru's uBMSC fork. +* Please install .NET Framework 4.8 for the program to function properly. + # Changes Listed in the order added. + ## Bugfixes -* Added keybindings for DP and PMS. See **Keyboard Shortcuts** for more information. +* Added keybindings for DP and PMS by default. Now also added support for rebinding keys. See **Keyboard Shortcuts** for more information. * Fixed the search function such that notes on lane A8 and D8 are now searchable. * Fixed the mirror function such that notes between A1 and D8 are reflected locally. Supports PMS as well. * Fixed the Statistic Label not including notes between D1-D8. Statistic window still not fixed. @@ -37,6 +42,7 @@ Listed in the order added. * Added ability to duplicate #WAV's. * Added technical error check (Jack notes, impossible chords for PMS, and impossible scratches for DP). Not a toggle because running it live will severely reduce performance. Accessible via the Options tab or via Ctrl+Alt+E. * Added better support for all audio files (supported by CSCore + ogg). +* Added support for rebinding keys. ## Keyboard shortcuts * Changed keybinding to allow note placement between D1 and D8: @@ -59,7 +65,7 @@ Listed in the order added. * F12 - Visual Options * Added advanced statistics (Ctrl+Shift+T). * Added keyboard shortcuts for previewing and replacing keysounds in the Sounds List (Spacebar to preview, enter to replace). -* Added "Select Section" (Ctrl+Alt+R). +* Added "Select Section" (Ctrl+Alt+R by default). * Added color overriding options (Shift+F12). * Revised shortcuts for grid division values: * Period now increases the division value, and comma now decreases the division value. @@ -70,7 +76,8 @@ Listed in the order added. * Added shortcut for scrolling through #WAV selection (Shift+Scroll). * Added shortcut for defining measures with Time Selection Tool (Insert). * Added shortcut for inserting/removing space with Time Selection Tool (Ctrl+Insert for measure only, Shift+Insert for notes only, and Ctrl+Shift+Insert for both) -* Added shortcut for techincal error check (Ctrl+Alt+E) +* Added shortcut for techincal error check (Ctrl+Alt+E by default) +* Added shortcut for keybinding options (Shift+F10) ## New dialog/option boxes @@ -86,4 +93,8 @@ Listed in the order added. * Remove ghost notes: Remove all ghost notes. ### Visual Override Options -* Creates a list of note ranges with a specified color and replaces specified notes' display color. \ No newline at end of file +* Creates a list of note ranges with a specified color and replaces specified notes' display color. + +### Keybinding Options +* Allows for rebinding keys for a lot of functions, such as note lane assignment. +* Some other functions are also rebindable, such as Snap to Grid, Undo, and Redo. \ No newline at end of file diff --git a/iBMSC/EditorPersistent.vb b/iBMSC/EditorPersistent.vb index 25593e0b0..d6325fb02 100644 --- a/iBMSC/EditorPersistent.vb +++ b/iBMSC/EditorPersistent.vb @@ -41,6 +41,16 @@ Partial Public Class MainWindow w.WriteEndElement() End Sub + Private Sub XMLWriteKeybindings(ByVal w As XmlTextWriter, ByVal I As Integer) + w.WriteStartElement("Option") + w.WriteAttributeString("Index", I) + w.WriteAttributeString("Name", Keybindings(I).OpName) + w.WriteAttributeString("Description", Keybindings(I).Description) + w.WriteAttributeString("Combos", Join(Keybindings(I).Combo, ", ")) + w.WriteAttributeString("Category", Keybindings(I).Category) + w.WriteEndElement() + End Sub + Private Sub SaveSettings(ByVal Path As String, ByVal ThemeOnly As Boolean) Dim w As New XmlTextWriter(Path, System.Text.Encoding.Unicode) With w @@ -152,6 +162,12 @@ Partial Public Class MainWindow XMLWritePlayerArguments(w, i) : Next .WriteEndElement() + .WriteStartElement("KeyBindings") + .WriteAttributeString("Count", UBound(Keybindings)) + For i As Integer = 0 To UBound(Keybindings) + XMLWriteKeybindings(w, i) : Next + .WriteEndElement() + 5000: .WriteStartElement("Columns") '.WriteAttributeString("Count", col.Length) For i As Integer = 0 To UBound(column) @@ -230,6 +246,17 @@ Partial Public Class MainWindow XMLLoadAttribute(n.GetAttribute("Stop"), pArgs(i).aStop) End Sub + Private Sub XMLLoadKeybinding(ByVal n As XmlElement) + Dim i As Integer = -1 + XMLLoadAttribute(n.GetAttribute("Index"), i) + If i < 0 Or i > UBound(Keybindings) Then Exit Sub + + XMLLoadAttribute(n.GetAttribute("Name"), Keybindings(i).OpName) + XMLLoadAttribute(n.GetAttribute("Description"), Keybindings(i).Description) + Keybindings(i).Combo = Split(n.GetAttribute("Combos"), ", ") + XMLLoadAttribute(n.GetAttribute("Category"), Keybindings(i).Category) + End Sub + Private Sub XMLLoadColumn(ByVal n As XmlElement) Dim i As Integer = -1 XMLLoadAttribute(n.GetAttribute("Index"), i) @@ -484,6 +511,18 @@ Partial Public Class MainWindow Next End If + Dim eKeybindings As XmlElement = Root.Item("KeyBindings") + If eKeybindings IsNot Nothing Then + With eKeybindings + Dim xBound = .GetAttribute("Count") + If xBound > UBound(Keybindings) Then ReDim Preserve Keybindings(xBound) + + For Each eeKeybindings In .ChildNodes + XMLLoadKeybinding(eeKeybindings) + Next + End With + End If + 'Columns Dim eColumns As XmlElement = Root.Item("Columns") If eColumns IsNot Nothing Then diff --git a/iBMSC/ImageButtonsSmall/x16Key.png b/iBMSC/ImageButtonsSmall/x16Key.png new file mode 100644 index 0000000000000000000000000000000000000000..c3c4eef746140e953204dce6a6611ddcb7290354 GIT binary patch literal 10264 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 literal 0 HcmV?d00001 diff --git a/iBMSC/MainWindow.designer.vb b/iBMSC/MainWindow.designer.vb index 3eff1c8fc..79b2cb2ba 100644 --- a/iBMSC/MainWindow.designer.vb +++ b/iBMSC/MainWindow.designer.vb @@ -106,10 +106,11 @@ Partial Class MainWindow Me.mnShowWaveform = New System.Windows.Forms.ToolStripMenuItem() Me.ToolStripSeparator20 = New System.Windows.Forms.ToolStripSeparator() Me.mnTechnicalErrorCheck = New System.Windows.Forms.ToolStripMenuItem() + Me.mnPOptions = New System.Windows.Forms.ToolStripMenuItem() Me.mnGOptions = New System.Windows.Forms.ToolStripMenuItem() + Me.mnKOptions = New System.Windows.Forms.ToolStripMenuItem() Me.mnVOptions = New System.Windows.Forms.ToolStripMenuItem() Me.mnVCOptions = New System.Windows.Forms.ToolStripMenuItem() - Me.mnPOptions = New System.Windows.Forms.ToolStripMenuItem() Me.mnConversion = New System.Windows.Forms.ToolStripMenuItem() Me.cmnConversion = New System.Windows.Forms.ContextMenuStrip(Me.components) Me.POBLong = New System.Windows.Forms.ToolStripMenuItem() @@ -176,8 +177,9 @@ Partial Class MainWindow Me.TBStop = New System.Windows.Forms.ToolStripButton() Me.TBPOptions = New System.Windows.Forms.ToolStripButton() Me.ToolStripSeparator7 = New System.Windows.Forms.ToolStripSeparator() - Me.TBVOptions = New System.Windows.Forms.ToolStripButton() Me.TBGOptions = New System.Windows.Forms.ToolStripButton() + Me.TBKOptions = New System.Windows.Forms.ToolStripButton() + Me.TBVOptions = New System.Windows.Forms.ToolStripButton() Me.POBStorm = New System.Windows.Forms.ToolStripButton() Me.TBTotalValue = New System.Windows.Forms.ToolStripLabel() Me.pStatus = New System.Windows.Forms.Panel() @@ -1051,7 +1053,7 @@ Partial Class MainWindow ' 'mnOptions ' - Me.mnOptions.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.mnNTInput, Me.mnErrorCheck, Me.mnPreviewOnClick, Me.mnShowFileName, Me.mnShowWaveform, Me.ToolStripSeparator20, Me.mnTechnicalErrorCheck, Me.mnGOptions, Me.mnVOptions, Me.mnVCOptions, Me.mnPOptions, Me.mnLanguage, Me.mnTheme}) + Me.mnOptions.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.mnNTInput, Me.mnErrorCheck, Me.mnPreviewOnClick, Me.mnShowFileName, Me.mnShowWaveform, Me.ToolStripSeparator20, Me.mnTechnicalErrorCheck, Me.mnPOptions, Me.mnGOptions, Me.mnKOptions, Me.mnVOptions, Me.mnVCOptions, Me.mnLanguage, Me.mnTheme}) Me.mnOptions.Name = "mnOptions" Me.mnOptions.Size = New System.Drawing.Size(61, 19) Me.mnOptions.Text = "&Options" @@ -1115,6 +1117,14 @@ Partial Class MainWindow Me.mnTechnicalErrorCheck.Size = New System.Drawing.Size(253, 22) Me.mnTechnicalErrorCheck.Text = "Technical &Error Check" ' + 'mnPOptions + ' + Me.mnPOptions.Image = Global.iBMSC.My.Resources.Resources.x16PlayerOptions + Me.mnPOptions.Name = "mnPOptions" + Me.mnPOptions.ShortcutKeys = System.Windows.Forms.Keys.F9 + Me.mnPOptions.Size = New System.Drawing.Size(253, 22) + Me.mnPOptions.Text = "&Player Options" + ' 'mnGOptions ' Me.mnGOptions.Image = Global.iBMSC.My.Resources.Resources.x16GeneralOptions @@ -1123,6 +1133,14 @@ Partial Class MainWindow Me.mnGOptions.Size = New System.Drawing.Size(253, 22) Me.mnGOptions.Text = "&General Options" ' + 'mnKOptions + ' + Me.mnKOptions.Image = Global.iBMSC.My.Resources.Resources.x16Key + Me.mnKOptions.Name = "mnKOptions" + Me.mnKOptions.ShortcutKeys = CType((System.Windows.Forms.Keys.Shift Or System.Windows.Forms.Keys.F10), System.Windows.Forms.Keys) + Me.mnKOptions.Size = New System.Drawing.Size(253, 22) + Me.mnKOptions.Text = "&Keybinding Options" + ' 'mnVOptions ' Me.mnVOptions.Image = Global.iBMSC.My.Resources.Resources.x16VisualOptions @@ -1139,14 +1157,6 @@ Partial Class MainWindow Me.mnVCOptions.Size = New System.Drawing.Size(253, 22) Me.mnVCOptions.Text = "C&olor Override Options" ' - 'mnPOptions - ' - Me.mnPOptions.Image = Global.iBMSC.My.Resources.Resources.x16PlayerOptions - Me.mnPOptions.Name = "mnPOptions" - Me.mnPOptions.ShortcutKeys = System.Windows.Forms.Keys.F9 - Me.mnPOptions.Size = New System.Drawing.Size(253, 22) - Me.mnPOptions.Text = "&Player Options" - ' 'mnConversion ' Me.mnConversion.DropDown = Me.cmnConversion @@ -1317,10 +1327,10 @@ Partial Class MainWindow Me.TBMain.AccessibleRole = System.Windows.Forms.AccessibleRole.ToolBar Me.TBMain.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch Me.TBMain.Dock = System.Windows.Forms.DockStyle.None - Me.TBMain.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.TBNew, Me.TBOpen, Me.TBSave, Me.ToolStripSeparator1, Me.TBCut, Me.TBCopy, Me.TBPaste, Me.TBFind, Me.ToolStripSeparator24, Me.TBStatistics, Me.POConvert, Me.TBMyO2, Me.ToolStripSeparator4, Me.TBErrorCheck, Me.TBPreviewOnClick, Me.TBShowFileName, Me.TBShowWaveform, Me.ToolStripSeparator8, Me.TBNTInput, Me.TBWavIncrease, Me.ToolStripSeparator2, Me.TBUndo, Me.TBRedo, Me.ToolStripSeparator5, Me.TBTimeSelect, Me.TBSelect, Me.TBWrite, Me.ToolStripSeparator3, Me.TBPlayB, Me.TBPlay, Me.TBStop, Me.TBPOptions, Me.ToolStripSeparator7, Me.TBVOptions, Me.TBGOptions, Me.TBLanguage, Me.TBTheme, Me.POBStorm, Me.TBTotalValue}) + Me.TBMain.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.TBNew, Me.TBOpen, Me.TBSave, Me.ToolStripSeparator1, Me.TBCut, Me.TBCopy, Me.TBPaste, Me.TBFind, Me.ToolStripSeparator24, Me.TBStatistics, Me.POConvert, Me.TBMyO2, Me.ToolStripSeparator4, Me.TBErrorCheck, Me.TBPreviewOnClick, Me.TBShowFileName, Me.TBShowWaveform, Me.ToolStripSeparator8, Me.TBNTInput, Me.TBWavIncrease, Me.ToolStripSeparator2, Me.TBUndo, Me.TBRedo, Me.ToolStripSeparator5, Me.TBTimeSelect, Me.TBSelect, Me.TBWrite, Me.ToolStripSeparator3, Me.TBPlayB, Me.TBPlay, Me.TBStop, Me.TBPOptions, Me.ToolStripSeparator7, Me.TBGOptions, Me.TBKOptions, Me.TBVOptions, Me.TBLanguage, Me.TBTheme, Me.POBStorm, Me.TBTotalValue}) Me.TBMain.Location = New System.Drawing.Point(3, 23) Me.TBMain.Name = "TBMain" - Me.TBMain.Size = New System.Drawing.Size(787, 25) + Me.TBMain.Size = New System.Drawing.Size(864, 25) Me.TBMain.TabIndex = 64 Me.TBMain.Text = "Main Toolbar" ' @@ -1672,15 +1682,6 @@ Partial Class MainWindow Me.ToolStripSeparator7.Name = "ToolStripSeparator7" Me.ToolStripSeparator7.Size = New System.Drawing.Size(6, 25) ' - 'TBVOptions - ' - Me.TBVOptions.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image - Me.TBVOptions.Image = Global.iBMSC.My.Resources.Resources.x16VisualOptions - Me.TBVOptions.ImageTransparentColor = System.Drawing.Color.Magenta - Me.TBVOptions.Name = "TBVOptions" - Me.TBVOptions.Size = New System.Drawing.Size(23, 22) - Me.TBVOptions.Text = "Visual Options (F12)" - ' 'TBGOptions ' Me.TBGOptions.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image @@ -1690,6 +1691,24 @@ Partial Class MainWindow Me.TBGOptions.Size = New System.Drawing.Size(23, 22) Me.TBGOptions.Text = "General Options (F10)" ' + 'TBKOptions + ' + Me.TBKOptions.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image + Me.TBKOptions.Image = Global.iBMSC.My.Resources.Resources.x16Key + Me.TBKOptions.ImageTransparentColor = System.Drawing.Color.Magenta + Me.TBKOptions.Name = "TBKOptions" + Me.TBKOptions.Size = New System.Drawing.Size(23, 22) + Me.TBKOptions.Text = "Keybinding Options (Shift+F10)" + ' + 'TBVOptions + ' + Me.TBVOptions.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image + Me.TBVOptions.Image = Global.iBMSC.My.Resources.Resources.x16VisualOptions + Me.TBVOptions.ImageTransparentColor = System.Drawing.Color.Magenta + Me.TBVOptions.Name = "TBVOptions" + Me.TBVOptions.Size = New System.Drawing.Size(23, 22) + Me.TBVOptions.Text = "Visual Options (F12)" + ' 'POBStorm ' Me.POBStorm.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image @@ -4693,4 +4712,6 @@ Partial Class MainWindow Friend WithEvents BWAVDuplicate As Button Friend WithEvents BWAVColorOverride As Button Friend WithEvents mnTechnicalErrorCheck As ToolStripMenuItem + Friend WithEvents mnKOptions As ToolStripMenuItem + Friend WithEvents TBKOptions As ToolStripButton End Class diff --git a/iBMSC/MainWindow.vb b/iBMSC/MainWindow.vb index 8033147e6..0b5ae9f4d 100644 --- a/iBMSC/MainWindow.vb +++ b/iBMSC/MainWindow.vb @@ -169,6 +169,7 @@ Public Class MainWindow Dim gXKeyMode As String = "SP" ' Determines from column width 7key mode, 9key mode or 14key mode Dim gXKeyCol() As Integer Dim wLWAV(1295) As WavSample + Public CustomKeybindingEnabled As Integer = 0 '----AutoSave Options Dim PreviousAutoSavedFileName As String = "" @@ -232,8 +233,6 @@ Public Class MainWindow wSampleRate = xSampleRate End Sub End Structure - 'Note Waveform Options - '----Visual Override Options Structure ColorOverride @@ -267,6 +266,72 @@ Public Class MainWindow End Structure Dim COverrides() As ColorOverride = Nothing + '----Keybinding Options + Structure Keybinding + Public OpName As String + Public Description As String + Public Combo() As String + Public Category As Integer + + Public Sub New(ByVal xOpName As String, Optional xDescription As String = "", Optional xKey() As String = Nothing, Optional xCategory As Integer = -1) + OpName = xOpName + Description = xDescription + Combo = xKey + Category = xCategory + End Sub + End Structure + + Public CategorySP As Integer = 1 + Public CategoryPMS As Integer = 2 + Public CategoryDP As Integer = 3 + Public KeybindingCategory() As Integer = {CategoryPMS, CategoryDP, CategorySP, -1} ' Order matters + Public KeybindingsInit() As Keybinding = { ' SP Note Assignments + New Keybinding("Move to A2", "Move note to 1P Lane 1", {"D1", "NumPad1"}, CategorySP), + New Keybinding("Move to A3", "Move note to 1P Lane 2", {"D2", "NumPad2"}, CategorySP), + New Keybinding("Move to A4", "Move note to 1P Lane 3", {"D3", "NumPad3"}, CategorySP), + New Keybinding("Move to A5", "Move note to 1P Lane 4", {"D4", "NumPad4"}, CategorySP), + New Keybinding("Move to A6", "Move note to 1P Lane 5", {"D5", "NumPad5"}, CategorySP), + New Keybinding("Move to A7", "Move note to 1P Lane 6", {"D6", "NumPad6"}, CategorySP), + New Keybinding("Move to A8", "Move note to 1P Lane 7", {"D7", "NumPad7"}, CategorySP), + New Keybinding("Move to A1", Strings.fopKeybinding.MDesc1PS, {"D8", "NumPad8"}, CategorySP), + _ ' DP Note Assignments + New Keybinding("Move to D1", "Move note to 2P Lane 1", {"Q", "Ctrl+D1", "NumPad1"}, CategoryDP), + New Keybinding("Move to D2", "Move note to 2P Lane 2", {"W", "Ctrl+D2", "NumPad2"}, CategoryDP), + New Keybinding("Move to D3", "Move note to 2P Lane 3", {"E", "Ctrl+D3", "NumPad3"}, CategoryDP), + New Keybinding("Move to D4", "Move note to 2P Lane 4", {"R", "Ctrl+D4", "NumPad4"}, CategoryDP), + New Keybinding("Move to D5", "Move note to 2P Lane 5", {"T", "Ctrl+D5", "NumPad5"}, CategoryDP), + New Keybinding("Move to D6", "Move note to 2P Lane 6", {"Y", "Ctrl+D6", "NumPad6"}, CategoryDP), + New Keybinding("Move to D7", "Move note to 2P Lane 7", {"U", "Ctrl+D7", "NumPad7"}, CategoryDP), + New Keybinding("Move to D8", Strings.fopKeybinding.MDesc2PS, {"I", "Ctrl+D8", "NumPad8"}, CategoryDP), + _ ' PMS Note Assignments + New Keybinding("Move to P1", "Move note to PMS Lane 1", {"D1", "NumPad1"}, CategoryPMS), + New Keybinding("Move to P2", "Move note to PMS Lane 2", {"D2", "NumPad2"}, CategoryPMS), + New Keybinding("Move to P3", "Move note to PMS Lane 3", {"D3", "NumPad3"}, CategoryPMS), + New Keybinding("Move to P4", "Move note to PMS Lane 4", {"D4", "NumPad4"}, CategoryPMS), + New Keybinding("Move to P5", "Move note to PMS Lane 5", {"D5", "NumPad5"}, CategoryPMS), + New Keybinding("Move to P6", "Move note to PMS Lane 6", {"D6", "NumPad6"}, CategoryPMS), + New Keybinding("Move to P7", "Move note to PMS Lane 7", {"D7", "NumPad7"}, CategoryPMS), + New Keybinding("Move to P8", "Move note to PMS Lane 8", {"D8", "NumPad8"}, CategoryPMS), + New Keybinding("Move to P9", "Move note to PMS Lane 9", {"D9", "NumPad9"}, CategoryPMS), + _ ' Miscellaneous BMS + New Keybinding("Move to BGM", "Move to BGM Lane", {"D0", "NumPad0"}), + New Keybinding("Disable Vertical Moves", "Disable vertical moves", {"D"}), + New Keybinding("Snap to Grid", "Snap to grid", {"G"}), + New Keybinding("Convert to Long Note", " Long Note", {"L"}), + New Keybinding("Convert to Short Note", " Short Note", {"S"}), + New Keybinding("Check Technical Error", "Check for technical errors such as impossible scratches in DP or impossible chords in PMS", {"Ctrl+Alt+E"}), + New Keybinding("Select Expansion Section", "Select #IF sections in the Expansion field", {"Ctrl+Alt+R"}), + _ ' Miscellaneous Editor + New Keybinding("Undo", "", {"Ctrl+Z"}), + New Keybinding("Redo", "", {"Ctrl+Y"}), + New Keybinding("Cut", "", {"Ctrl+X"}), + New Keybinding("Copy", "", {"Ctrl+C"}), + New Keybinding("Paste", "", {"Ctrl+V"}), + New Keybinding("Select All", "Select all notes", {"Ctrl+A"}), + New Keybinding("Select All with Hovered Note Label", "Select all notes with highlighted note label", {"Ctrl+Shift+A"}) + } + Dim Keybindings() As Keybinding = KeybindingsInit.Clone + '----Preview Options Structure PlayerArguments Public Path As String @@ -281,7 +346,7 @@ Public Class MainWindow End Sub End Structure - Public pArgs() As PlayerArguments = {New PlayerArguments("\mBMplay.exe", + Public pArgsInit() As PlayerArguments = {New PlayerArguments("\mBMplay.exe", """""", "-s """"", "-t"), @@ -293,6 +358,7 @@ Public Class MainWindow "-P -N0 """"", "-P -N """"", "-S")} + Public pArgs() As PlayerArguments = pArgsInit.Clone Public CurrentPlayer As Integer = 0 Dim PreviewOnClick As Boolean = True Dim PreviewErrorCheck As Boolean = False @@ -3844,6 +3910,42 @@ RestartSorting: xSorted = False End If End Sub + Private Sub TBKOptions_Click(sender As Object, e As EventArgs) Handles TBKOptions.Click, mnKOptions.Click + Try + Dim xDiag As New OpKeybinding(Keybindings) + If xDiag.ShowDialog() = Windows.Forms.DialogResult.OK Then + With xDiag + Keybindings = .Keybinds + + ' Rename shortcutstrings + For Each keybind In .Keybinds + Select Case keybind.OpName + Case "Undo" + mnUndo.ShortcutKeyDisplayString = keybind.Combo(0) + TBUndo.Text = "Undo (" & Join(keybind.Combo, ", ") & ")" + Case "Redo" + mnRedo.ShortcutKeyDisplayString = keybind.Combo(0) + TBRedo.Text = "Redo (" & Join(keybind.Combo, ", ") & ")" + Case "Cut" + mnCut.ShortcutKeyDisplayString = keybind.Combo(0) + TBCut.Text = "Cut (" & Join(keybind.Combo, ", ") & ")" + Case "Copy" + mnCopy.ShortcutKeyDisplayString = keybind.Combo(0) + TBCopy.Text = "Copy (" & Join(keybind.Combo, ", ") & ")" + Case "Paste" + mnPaste.ShortcutKeyDisplayString = keybind.Combo(0) + TBPaste.Text = "Paste (" & Join(keybind.Combo, ", ") & ")" + Case "Select All" + mnSelectAll.ShortcutKeyDisplayString = keybind.Combo(0) + End Select + Next + End With + End If + Catch ex As Exception + MsgBox(ex.Message) + End Try + End Sub + Private Sub POBLong_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles POBLong.Click If NTInput Then Exit Sub diff --git a/iBMSC/My Project/Resources.Designer.vb b/iBMSC/My Project/Resources.Designer.vb index becf38d8a..c2589e1f7 100644 --- a/iBMSC/My Project/Resources.Designer.vb +++ b/iBMSC/My Project/Resources.Designer.vb @@ -585,6 +585,16 @@ Namespace My.Resources End Get End Property + ''' + ''' Looks up a localized resource of type System.Drawing.Bitmap. + ''' + Friend ReadOnly Property x16Key() As System.Drawing.Bitmap + Get + Dim obj As Object = ResourceManager.GetObject("x16Key", resourceCulture) + Return CType(obj,System.Drawing.Bitmap) + End Get + End Property + ''' ''' Looks up a localized resource of type System.Drawing.Bitmap. ''' diff --git a/iBMSC/My Project/Resources.resx b/iBMSC/My Project/Resources.resx index 35503ee20..9034e7cc6 100644 --- a/iBMSC/My Project/Resources.resx +++ b/iBMSC/My Project/Resources.resx @@ -127,8 +127,8 @@ ..\About.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\..\..\backup\3.4.0.12\iBMSC\ImageButtonsSmall\x16Flip.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\ImageButtonsSmall\x16Up.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\ImageButtonsSmall\x16ShowWaveform.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -145,44 +145,53 @@ ..\Icon\icon2_16_highlight.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\ImageButtonsSmall\x16New.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\ImageButtonsSmall\x16HRandom.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\ImageButtonsSmall\CursorResizeDown.cur;System.Byte[], mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + ..\ImageButtonsSmall\x16Refresh.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + ..\SplashScreenx.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\ImageButtonsSmall\x16Find.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - ..\ImageButtonsSmall\x16Play.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\ImageButtonsSmall\x16Redo.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + ..\ImageButtonsSmall\x16Theme.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\ImageButtonsSmall\x16PreviewOnClick.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\ImageButtonsSmall\x16CheckErrorTechnical.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\ImageButtons\ImageErrorR.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\ImageButtonsSmall\x16Copy.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + ..\ImageButtonsSmall\x16MeasureRemove.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\ImageButtonsSmall\x16Random.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\MiscButtons\lgheight.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - ..\MiscButtons\x16PlayerDefault.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\ImageButtons\ConvertNotes.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\ImageButtonsSmall\x16HRandom.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\ImageButtonsSmall\x16Paste.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\ImageButtonsSmall\x16SaveAs.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -193,12 +202,15 @@ ..\ImageButtonsSmall\x16PreviewCheckN.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\ImageButtonsSmall\x16Color.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\MiscButtons\WAVSaturation.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\ImageButtons\ConvertNotesL.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\MiscButtons\x16Lock.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + ..\ImageButtonsSmall\Expand.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -208,17 +220,11 @@ ..\ImageButtonsSmall\x16SRandom.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\ImageButtonsSmall\x16GeneralOptions.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - ..\MiscButtons\WAVPrecision.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\ImageButtonsSmall\x16Up.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\ImageButtonsSmall\x16Paste.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\ImageButtonsSmall\x16Find.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\ImageButtonsSmall\x16ShowFileNameN.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -232,8 +238,8 @@ ..\MiscButtons\lgpartition.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\ImageButtonsSmall\x16Import2.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\ImageButtonsSmall\x16GeneralOptions.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\ImageButtonsSmall\x16Import.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -253,14 +259,20 @@ ..\ImageButtonsSmall\CursorResizeLeft.cur;System.Byte[], mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + ..\ImageButtonsSmall\x16Import2.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\ImageButtonsSmall\x16ModifyLabelY.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + ..\ImageButtonsSmall\x16Associate.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\ImageButtonsSmall\x16Down.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\MiscButtons\x16Add.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\MiscButtons\lgheight.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\ImageButtonsSmall\x16PlayerOptions.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -283,6 +295,9 @@ ..\O2Mania.Theme.xml;System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-16 + + ..\MiscButtons\WAVOffset.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + ..\ImageButtons\ConvertNotesHV.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -295,24 +310,15 @@ ..\ImageButtonsSmall\x16Export.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\ImageButtonsSmall\x16PreviewCheck.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - ..\ImageButtonsSmall\Collapse.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\ImageButtonsSmall\x16Help.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\ImageButtonsSmall\x16CheckError.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - ..\ImageButtons\Statistics3.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\ImageButtonsSmall\x16Pen.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - ..\TransparentBG.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -322,8 +328,8 @@ ..\ImageButtonsSmall\x16Language.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\MiscButtons\x16Lock.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\ImageButtonsSmall\x16New.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\MiscButtons\WAVWidth.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -331,9 +337,6 @@ ..\ImageButtons\ConvertNotesN.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\MiscButtons\x16PlayerBrowse.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - ..\ImageButtonsSmall\x16Storm.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -343,11 +346,11 @@ ..\MiscButtons\x16Remove.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\ImageButtonsSmall\x16Refresh.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\MiscButtons\x16PlayerBrowse.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\ImageButtons\Shortcut.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\MiscButtons\x16Add.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\ImageButtons\ImageError.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -355,14 +358,14 @@ ..\MiscButtons\WAVLeft.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\MiscButtons\WAVSaturation.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\ImageButtonsSmall\x16Color.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\MiscButtons\WAVOffset.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\ImageButtonsSmall\x16Pen.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\ImageButtonsSmall\x16Copy.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\..\..\backup\3.4.0.12\iBMSC\ImageButtonsSmall\x16Flip.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\ImageButtonsSmall\x16NTInput.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -376,8 +379,8 @@ ..\ImageButtonsSmall\x16Undo.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\ImageButtonsSmall\x16Redo.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\ImageButtonsSmall\x16PreviewCheck.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\MiscButtons\WAVDuplicate.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -385,11 +388,11 @@ ..\ImageButtonsSmall\x16Stop.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\ImageButtonsSmall\x16ModifyLabelY.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\ImageButtonsSmall\x16CheckError.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\ImageButtonsSmall\x16ModifyLabel.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\ImageButtons\Shortcut.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\ImageButtonsSmall\x16PreviewOnClickN.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -412,13 +415,13 @@ ..\ImageButtonsSmall\x16Save.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\ImageButtons\ImageErrorR.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\ImageButtonsSmall\x16ModifyLabel.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\MiscButtons\lgwidth.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\ImageButtonsSmall\x16CheckErrorTechnical.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\ImageButtonsSmall\x16Key.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a \ No newline at end of file diff --git a/iBMSC/Option Windows/OpGeneral.Designer.vb b/iBMSC/Option Windows/OpGeneral.Designer.vb index 2f74abd8a..1545b4046 100644 --- a/iBMSC/Option Windows/OpGeneral.Designer.vb +++ b/iBMSC/Option Windows/OpGeneral.Designer.vb @@ -437,7 +437,7 @@ Partial Class OpGeneral ' 'nJackTH ' - Me.nJackTH.Location = New System.Drawing.Point(105, 3) + Me.nJackTH.Location = New System.Drawing.Point(104, 3) Me.nJackTH.Maximum = New Decimal(New Integer() {10000, 0, 0, 0}) Me.nJackTH.Minimum = New Decimal(New Integer() {8, 0, 0, 0}) Me.nJackTH.Name = "nJackTH" @@ -450,7 +450,7 @@ Partial Class OpGeneral Me.Label9.Dock = System.Windows.Forms.DockStyle.Fill Me.Label9.Location = New System.Drawing.Point(61, 0) Me.Label9.Name = "Label9" - Me.Label9.Size = New System.Drawing.Size(38, 27) + Me.Label9.Size = New System.Drawing.Size(37, 27) Me.Label9.TabIndex = 8 Me.Label9.Text = "BPM" Me.Label9.TextAlign = System.Drawing.ContentAlignment.MiddleCenter @@ -458,9 +458,9 @@ Partial Class OpGeneral 'LabelTH ' Me.LabelTH.Dock = System.Windows.Forms.DockStyle.Fill - Me.LabelTH.Location = New System.Drawing.Point(148, 0) + Me.LabelTH.Location = New System.Drawing.Point(147, 0) Me.LabelTH.Name = "LabelTH" - Me.LabelTH.Size = New System.Drawing.Size(29, 27) + Me.LabelTH.Size = New System.Drawing.Size(30, 27) Me.LabelTH.TabIndex = 8 Me.LabelTH.Text = "th" Me.LabelTH.TextAlign = System.Drawing.ContentAlignment.MiddleCenter diff --git a/iBMSC/Option Windows/OpKeybinding.Designer.vb b/iBMSC/Option Windows/OpKeybinding.Designer.vb new file mode 100644 index 000000000..e5dde2e6a --- /dev/null +++ b/iBMSC/Option Windows/OpKeybinding.Designer.vb @@ -0,0 +1,184 @@ + +Partial Class OpKeybinding + Inherits System.Windows.Forms.Form + + 'Form overrides dispose to clean up the component list. + + Protected Overrides Sub Dispose(ByVal disposing As Boolean) + Try + If disposing AndAlso components IsNot Nothing Then + components.Dispose() + End If + Finally + MyBase.Dispose(disposing) + End Try + End Sub + + 'Required by the Windows Form Designer + Private components As System.ComponentModel.IContainer + + 'NOTE: The following procedure is required by the Windows Form Designer + 'It can be modified using the Windows Form Designer. + 'Do not modify it using the code editor. + + Private Sub InitializeComponent() + Dim ListViewItem1 As System.Windows.Forms.ListViewItem = New System.Windows.Forms.ListViewItem(New String() {"Demo Option", "Option Description", "Ctrl+Shift+Esc"}, -1) + Me.OK_Button = New System.Windows.Forms.Button() + Me.Cancel_Button = New System.Windows.Forms.Button() + Me.LVKeybinding = New System.Windows.Forms.ListView() + Me.BindingName = CType(New System.Windows.Forms.ColumnHeader(), System.Windows.Forms.ColumnHeader) + Me.Description = CType(New System.Windows.Forms.ColumnHeader(), System.Windows.Forms.ColumnHeader) + Me.BindingKey = CType(New System.Windows.Forms.ColumnHeader(), System.Windows.Forms.ColumnHeader) + Me.BAdd = New System.Windows.Forms.Button() + Me.BRemove = New System.Windows.Forms.Button() + Me.BDefault = New System.Windows.Forms.Button() + Me.LCombos = New System.Windows.Forms.ListBox() + Me.TComboInput = New System.Windows.Forms.TextBox() + Me.SuspendLayout() + ' + 'OK_Button + ' + Me.OK_Button.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) + Me.OK_Button.Location = New System.Drawing.Point(469, 680) + Me.OK_Button.Margin = New System.Windows.Forms.Padding(4, 3, 4, 3) + Me.OK_Button.Name = "OK_Button" + Me.OK_Button.Size = New System.Drawing.Size(78, 27) + Me.OK_Button.TabIndex = 100 + Me.OK_Button.Text = "OK" + ' + 'Cancel_Button + ' + Me.Cancel_Button.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) + Me.Cancel_Button.DialogResult = System.Windows.Forms.DialogResult.Cancel + Me.Cancel_Button.Location = New System.Drawing.Point(554, 680) + Me.Cancel_Button.Margin = New System.Windows.Forms.Padding(4, 3, 4, 3) + Me.Cancel_Button.Name = "Cancel_Button" + Me.Cancel_Button.Size = New System.Drawing.Size(78, 27) + Me.Cancel_Button.TabIndex = 101 + Me.Cancel_Button.Text = "Cancel" + ' + 'LVKeybinding + ' + Me.LVKeybinding.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.LVKeybinding.Columns.AddRange(New System.Windows.Forms.ColumnHeader() {Me.BindingName, Me.Description, Me.BindingKey}) + Me.LVKeybinding.FullRowSelect = True + Me.LVKeybinding.GridLines = True + Me.LVKeybinding.HideSelection = False + Me.LVKeybinding.Items.AddRange(New System.Windows.Forms.ListViewItem() {ListViewItem1}) + Me.LVKeybinding.Location = New System.Drawing.Point(12, 12) + Me.LVKeybinding.MultiSelect = False + Me.LVKeybinding.Name = "LVKeybinding" + Me.LVKeybinding.RightToLeft = System.Windows.Forms.RightToLeft.No + Me.LVKeybinding.Size = New System.Drawing.Size(620, 548) + Me.LVKeybinding.TabIndex = 0 + Me.LVKeybinding.UseCompatibleStateImageBehavior = False + Me.LVKeybinding.View = System.Windows.Forms.View.Details + ' + 'BindingName + ' + Me.BindingName.Text = "Binding Name" + Me.BindingName.Width = 200 + ' + 'Description + ' + Me.Description.Text = "Description" + Me.Description.Width = 250 + ' + 'BindingKey + ' + Me.BindingKey.Text = "Keybindings" + Me.BindingKey.TextAlign = System.Windows.Forms.HorizontalAlignment.Center + Me.BindingKey.Width = 150 + ' + 'BAdd + ' + Me.BAdd.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) + Me.BAdd.Location = New System.Drawing.Point(12, 680) + Me.BAdd.Margin = New System.Windows.Forms.Padding(4, 3, 4, 3) + Me.BAdd.Name = "BAdd" + Me.BAdd.Size = New System.Drawing.Size(78, 27) + Me.BAdd.TabIndex = 3 + Me.BAdd.Text = "Add" + ' + 'BRemove + ' + Me.BRemove.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) + Me.BRemove.Location = New System.Drawing.Point(98, 680) + Me.BRemove.Margin = New System.Windows.Forms.Padding(4, 3, 4, 3) + Me.BRemove.Name = "BRemove" + Me.BRemove.Size = New System.Drawing.Size(78, 27) + Me.BRemove.TabIndex = 4 + Me.BRemove.Text = "Remove" + ' + 'BDefault + ' + Me.BDefault.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) + Me.BDefault.Location = New System.Drawing.Point(245, 680) + Me.BDefault.Margin = New System.Windows.Forms.Padding(4, 3, 4, 3) + Me.BDefault.Name = "BDefault" + Me.BDefault.Size = New System.Drawing.Size(156, 27) + Me.BDefault.TabIndex = 10 + Me.BDefault.Text = "Restore Default" + ' + 'LCombos + ' + Me.LCombos.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left), System.Windows.Forms.AnchorStyles) + Me.LCombos.FormattingEnabled = True + Me.LCombos.ItemHeight = 15 + Me.LCombos.Location = New System.Drawing.Point(12, 566) + Me.LCombos.Name = "LCombos" + Me.LCombos.SelectionMode = System.Windows.Forms.SelectionMode.MultiExtended + Me.LCombos.Size = New System.Drawing.Size(163, 79) + Me.LCombos.TabIndex = 1 + ' + 'TComboInput + ' + Me.TComboInput.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left), System.Windows.Forms.AnchorStyles) + Me.TComboInput.Location = New System.Drawing.Point(12, 651) + Me.TComboInput.Name = "TComboInput" + Me.TComboInput.ReadOnly = True + Me.TComboInput.Size = New System.Drawing.Size(163, 23) + Me.TComboInput.TabIndex = 2 + ' + 'OpKeybinding + ' + Me.AcceptButton = Me.OK_Button + Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None + Me.CancelButton = Me.Cancel_Button + Me.ClientSize = New System.Drawing.Size(645, 719) + Me.Controls.Add(Me.TComboInput) + Me.Controls.Add(Me.LCombos) + Me.Controls.Add(Me.BDefault) + Me.Controls.Add(Me.BRemove) + Me.Controls.Add(Me.BAdd) + Me.Controls.Add(Me.LVKeybinding) + Me.Controls.Add(Me.OK_Button) + Me.Controls.Add(Me.Cancel_Button) + Me.Font = New System.Drawing.Font("Segoe UI", 9.0!) + Me.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog + Me.Margin = New System.Windows.Forms.Padding(4, 3, 4, 3) + Me.MaximizeBox = False + Me.MinimizeBox = False + Me.Name = "OpKeybinding" + Me.ShowInTaskbar = False + Me.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent + Me.Text = "Keybinding Options" + Me.ResumeLayout(False) + Me.PerformLayout() + + End Sub + + Friend WithEvents OK_Button As Button + Friend WithEvents Cancel_Button As Button + Friend WithEvents LVKeybinding As ListView + Friend WithEvents BindingName As ColumnHeader + Friend WithEvents BindingKey As ColumnHeader + Friend WithEvents Description As ColumnHeader + Friend WithEvents BAdd As Button + Friend WithEvents BRemove As Button + Friend WithEvents BDefault As Button + Friend WithEvents LCombos As ListBox + Friend WithEvents TComboInput As TextBox +End Class diff --git a/iBMSC/Option Windows/OpKeybinding.resx b/iBMSC/Option Windows/OpKeybinding.resx new file mode 100644 index 000000000..1af7de150 --- /dev/null +++ b/iBMSC/Option Windows/OpKeybinding.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/iBMSC/Option Windows/OpKeybinding.vb b/iBMSC/Option Windows/OpKeybinding.vb new file mode 100644 index 000000000..c361abf1b --- /dev/null +++ b/iBMSC/Option Windows/OpKeybinding.vb @@ -0,0 +1,220 @@ +Imports System.Linq +Imports System.Windows.Forms + +Public Class OpKeybinding + Public Keybinds() As MainWindow.Keybinding + Dim keyComboEvent() As String + Dim keyComboOK As Boolean + + Public Sub New(ByVal xKeybindings() As MainWindow.Keybinding) + Try + InitializeComponent() + OK_Button.Text = Strings.OK + Cancel_Button.Text = Strings.Cancel + BDefault.Text = Strings.fopPlayer.RestoreDefault + Keybinds = xKeybindings.Clone + InitializeKeybindings() + Catch ex As Exception + MsgBox("New OpKeybinding Error" & vbCrLf & ex.Message) + End Try + End Sub + + Private Sub OK_Button_Click(sender As Object, e As EventArgs) Handles OK_Button.Click + ' Do not close window if textbox is being focused on + If TComboInput.Focused Then + If TComboInput.Text <> "" Then BAdd_Click(sender, New EventArgs) + Exit Sub + End If + + DialogResult = DialogResult.OK + Me.Close() + End Sub + + Private Sub Cancel_Button_Click(sender As Object, e As EventArgs) Handles Cancel_Button.Click + Me.DialogResult = System.Windows.Forms.DialogResult.Cancel + Me.Close() + End Sub + + Private Sub LVKeybinding_Click(sender As Object, e As EventArgs) Handles LVKeybinding.Click, LVKeybinding.KeyUp + ' List keybindings in LCombos + LCombos.Items.Clear() + For Each keyComboIndividual In Keybinds(LVKeybinding.FocusedItem.Index).Combo + LCombos.Items.Add(keyComboIndividual) + Next + End Sub + + Private Sub LVKeybinding_DoubleClick(sender As Object, e As EventArgs) Handles LVKeybinding.DoubleClick + LVKeybinding_Click(sender, e) + TComboInput.Focus() + End Sub + + Private Sub LCombos_KeyDown(sender As Object, e As KeyEventArgs) Handles LCombos.KeyDown + If e.KeyCode = Keys.Delete Then BRemove_Click(sender, New EventArgs) : Exit Sub + End Sub + + Private Sub TComboInput_KeyDown(sender As Object, e As KeyEventArgs) Handles TComboInput.KeyDown + If e.KeyCode = Keys.ControlKey Or e.KeyCode = Keys.ShiftKey Or e.KeyCode = Keys.Menu Then Exit Sub + + If e.KeyCode = Keys.Delete Then BRemove_Click(sender, New EventArgs) : Exit Sub + + ReDim keyComboEvent(-1) + If e.Control Then + ReDim Preserve keyComboEvent(keyComboEvent.Length) + keyComboEvent(UBound(keyComboEvent)) = "Ctrl" + End If + If e.Shift Then + ReDim Preserve keyComboEvent(keyComboEvent.Length) + keyComboEvent(UBound(keyComboEvent)) = "Shift" + End If + If e.Alt Then + ReDim Preserve keyComboEvent(keyComboEvent.Length) + keyComboEvent(UBound(keyComboEvent)) = "Alt" + End If + ReDim Preserve keyComboEvent(keyComboEvent.Length) + keyComboEvent(UBound(keyComboEvent)) = e.KeyCode.ToString + + TComboInput.Text = Join(keyComboEvent, "+") + End Sub + + Private Sub BAdd_Click(sender As Object, e As EventArgs) Handles BAdd.Click + If TComboInput.Text <> "" Then + keyComboOK = True + ' TODO: Check existing keybindings + CheckConflictWithOtherFunctions() + CheckConflictWithOtherKeybindings() + If Not keyComboOK Then Exit Sub + + With Keybinds(LVKeybinding.FocusedItem.Index) + ReDim Preserve .Combo(.Combo.Length) + .Combo(UBound(.Combo)) = TComboInput.Text + + LCombos.Items.Add(TComboInput.Text) + LVKeybinding.FocusedItem.SubItems(2).Text = Join(.Combo, ", ") + End With + TComboInput.Text = "" + End If + End Sub + + Private Sub BRemove_Click(sender As Object, e As EventArgs) Handles BRemove.Click + If LCombos.SelectedIndex <> -1 Then + Dim xIndices(LCombos.SelectedIndices.Count - 1) As Integer + LCombos.SelectedIndices.CopyTo(xIndices, 0) + + Dim TempCombos(-1) As String + For i = 0 To UBound(Keybinds(LVKeybinding.FocusedItem.Index).Combo) + If Not xIndices.Contains(i) Then + ReDim Preserve TempCombos(TempCombos.Length) + TempCombos(UBound(TempCombos)) = LCombos.Items(i) + End If + Next + + Keybinds(LVKeybinding.FocusedItem.Index).Combo = TempCombos + LVKeybinding.FocusedItem.SubItems(2).Text = Join(TempCombos, ", ") + + LVKeybinding_Click(sender, e) + End If + + TComboInput.Text = "" + End Sub + + Private Sub LVKeybinding_ColumnWidthChanged(sender As Object, e As ColumnWidthChangedEventArgs) Handles LVKeybinding.ColumnWidthChanged + BindingKey.Width = LVKeybinding.Width - BindingName.Width - Description.Width - 25 + End Sub + + Private Sub BDefault_Click(sender As Object, e As EventArgs) Handles BDefault.Click + Keybinds = MainWindow.KeybindingsInit.Clone + InitializeKeybindings() + End Sub + + Private Sub CheckConflictWithOtherFunctions() + ' Check with other keys with multiple functions + Dim OtherFunctionKeys() As String = {"Up", "Down", "Left", "Right", + "Insert", "Delete", "Home", "End", "PageUp", "PageDown", + "Oemcomma", "OemPeriod", "OemQuestion", + "Oemplus", "OemMinus", "Add", "Subtract", + "F1", "F2", "F3", "F4", "F5", "F6", "F7", "F8", "F9", "F10", "F11", "F12"} + If OtherFunctionKeys.Contains(keyComboEvent(UBound(keyComboEvent))) Then + keyComboOK = False + MsgBox("Error: " & keyComboEvent(UBound(keyComboEvent)) & " is unavailable for custom keybinding.") + Exit Sub + End If + + ' Check with other key combos + Dim OtherFunctionKeyCombos() As String = {"Ctrl+N", "Ctrl+O", "Ctrl+S", "Ctrl+Alt+S", "Ctrl+Shift+E", "Alt+D1", "Alt+D2", "Alt+D3", "Alt+D4", "Alt+D5", + "Ctrl+F", "Ctrl+G", "Ctrl+T", "Ctrl+Shift+T", + "Alt+B", "Alt+S", "Alt+R", "Alt+G"} + If OtherFunctionKeyCombos.Contains(TComboInput.Text) Then + keyComboOK = False + MsgBox("Error: " & TComboInput.Text & " has been assigned to other functions.") + Exit Sub + End If + + Select Case Keybinds(LVKeybinding.FocusedItem.Index).Category + ' If note assignment option, check if there is shift + Case MainWindow.CategorySP, MainWindow.CategoryDP, MainWindow.CategoryPMS + If keyComboEvent.Contains("Shift") Then + keyComboOK = False + MsgBox("Error: Shift cannot be used for note assignment keybindings.") + Exit Sub + End If + End Select + End Sub + + Private Sub CheckConflictWithOtherKeybindings() + Dim CategoryToIgnore() As Integer = Nothing + ' TODO + Select Case Keybinds(LVKeybinding.FocusedItem.Index).Category + ' If note assignment option, check with each other in the same category + Case MainWindow.CategorySP + CategoryToIgnore = {MainWindow.CategoryDP, MainWindow.CategoryPMS} + Case MainWindow.CategoryDP + CategoryToIgnore = {MainWindow.CategorySP, MainWindow.CategoryPMS} + Case MainWindow.CategoryPMS + CategoryToIgnore = {MainWindow.CategorySP, MainWindow.CategoryDP} + + End Select + + Dim NoteKeybinds = From k In Keybinds + Where Not CategoryToIgnore.Contains(k.Category) + Select k + + For Each keybind In NoteKeybinds + If keybind.Combo.Contains(TComboInput.Text) Then + keyComboOK = False + MsgBox("Error: " & TComboInput.Text & " has been assigned to " & keybind.OpName & ".") + Exit Sub + End If + Next + End Sub + + Private Sub InitializeKeybindings() + LVKeybinding.Items.Clear() + + ' List view array initialization + Dim LVArray(UBound(Keybinds)) As ListViewItem + Dim i As Integer = -1 + For Each keybind In Keybinds + i += 1 + + LVArray(i) = New ListViewItem + ' Option name + LVArray(i).SubItems(0).Text = (keybind.OpName) + ' Add description + LVArray(i).SubItems.Add(keybind.Description) + + ' Add keybindings combined into 1 string + Dim keybindStrings() As String + If Not IsNothing(keybind.Combo) Then + ReDim keybindStrings(UBound(keybind.Combo)) + For xI = 0 To UBound(keybind.Combo) + keybindStrings(xI) = keybind.Combo(xI) + Next + Else + keybindStrings = {""} + End If + LVArray(i).SubItems.Add(Join(keybindStrings, ", ")) + Next + + LVKeybinding.Items.AddRange(LVArray) + End Sub +End Class \ No newline at end of file diff --git a/iBMSC/Option Windows/OpPlayer.vb b/iBMSC/Option Windows/OpPlayer.vb index 8a12cef32..513e19888 100644 --- a/iBMSC/Option Windows/OpPlayer.vb +++ b/iBMSC/Option Windows/OpPlayer.vb @@ -98,18 +98,8 @@ Public Class OpPlayer 'ImplicitChange = True If MsgBox(Strings.Messages.RestoreDefaultSettings, MsgBoxStyle.Question + MsgBoxStyle.YesNo) = MsgBoxResult.No Then Exit Sub - pArg = New MainWindow.PlayerArguments() {New MainWindow.PlayerArguments("\mBMplay.exe", - """""", - "-s """"", - "-t"), - New MainWindow.PlayerArguments("\uBMplay.exe", - "-P -N0 """"", - "-P -N """"", - "-S"), - New MainWindow.PlayerArguments("\o2play.exe", - "-P -N0 """"", - "-P -N """"", - "-S")} + pArg = MainWindow.pArgsInit.Clone + CurrPlayer = 0 ResetLPlayer_ShowInTextbox() 'ImplicitChange = False diff --git a/iBMSC/Option Windows/OpVisualOverride.Designer.vb b/iBMSC/Option Windows/OpVisualOverride.Designer.vb index b3daebf6d..605466801 100644 --- a/iBMSC/Option Windows/OpVisualOverride.Designer.vb +++ b/iBMSC/Option Windows/OpVisualOverride.Designer.vb @@ -284,6 +284,7 @@ Partial Class OpVisualOverride Me.MaximizeBox = False Me.MinimizeBox = False Me.Name = "OpVisualOverride" + Me.ShowInTaskbar = False Me.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent Me.Text = "Visual Override Options" Me.TableLayoutPanel1.ResumeLayout(False) diff --git a/iBMSC/PanelEvents.vb b/iBMSC/PanelEvents.vb index 134391c3a..2de45ba24 100644 --- a/iBMSC/PanelEvents.vb +++ b/iBMSC/PanelEvents.vb @@ -217,97 +217,210 @@ Partial Public Class MainWindow Case Keys.Subtract DecreaseCurrentWav() - Case Keys.G - 'az: don't trigger when we use Go To Measure - If Not My.Computer.Keyboard.CtrlKeyDown Then CGSnap.Checked = Not gSnap - - Case Keys.L - If Not My.Computer.Keyboard.CtrlKeyDown Then POBLong_Click(Nothing, Nothing) + ' Case Keys.G + ' 'az: don't trigger when we use Go To Measure + ' If Not My.Computer.Keyboard.CtrlKeyDown Then CGSnap.Checked = Not gSnap + ' + ' Case Keys.L + ' If Not My.Computer.Keyboard.CtrlKeyDown Then POBLong_Click(Nothing, Nothing) + ' + ' Case Keys.S + ' If Not My.Computer.Keyboard.CtrlKeyDown Then POBNormal_Click(Nothing, Nothing) + ' + ' Case Keys.D + ' CGDisableVertical.Checked = Not CGDisableVertical.Checked + ' + ' Case Keys.NumPad0, Keys.D0 + ' MoveToBGM(xUndo, xRedo) + ' + ' ' Ctrl + Keys → 2P lanes + ' Case Keys.Oem1, Keys.D1 + ' If My.Computer.Keyboard.CtrlKeyDown Then MTCFromMode(niA1, niA2, niD1, xUndo, xRedo) Else MTCFromMode(niA2, niA2, niA2, xUndo, xRedo) + ' Case Keys.Oem2, Keys.D2 + ' If My.Computer.Keyboard.CtrlKeyDown Then MTCFromMode(niA2, niA3, niD2, xUndo, xRedo) Else MTCFromMode(niA3, niA3, niA3, xUndo, xRedo) + ' Case Keys.Oem3, Keys.D3 + ' If My.Computer.Keyboard.CtrlKeyDown Then MTCFromMode(niA3, niA4, niD3, xUndo, xRedo) Else MTCFromMode(niA4, niA4, niA4, xUndo, xRedo) + ' Case Keys.Oem4, Keys.D4 + ' If My.Computer.Keyboard.CtrlKeyDown Then MTCFromMode(niA4, niA5, niD4, xUndo, xRedo) Else MTCFromMode(niA5, niA5, niA5, xUndo, xRedo) + ' Case Keys.Oem5, Keys.D5 + ' If My.Computer.Keyboard.CtrlKeyDown Then MTCFromMode(niA5, niA6, niD5, xUndo, xRedo) Else MTCFromMode(niA6, niA6, niA6, xUndo, xRedo) + ' Case Keys.Oem6, Keys.D6 + ' If My.Computer.Keyboard.CtrlKeyDown Then MTCFromMode(niA6, niD2, niD6, xUndo, xRedo) Else MTCFromMode(niA7, niD2, niA7, xUndo, xRedo) + ' Case Keys.Oem7, Keys.D7 + ' If My.Computer.Keyboard.CtrlKeyDown Then MTCFromMode(niA7, niD3, niD7, xUndo, xRedo) Else MTCFromMode(niA8, niD3, niA8, xUndo, xRedo) + ' Case Keys.Oem8, Keys.D8 + ' If My.Computer.Keyboard.CtrlKeyDown Then MTCFromMode(niA8, niD4, niD8, xUndo, xRedo) Else MTCFromMode(niA1, niD4, niA1, xUndo, xRedo) + ' Case Keys.D9 ' Oem9 not a thing apparently + ' MTCFromMode(-1, niD5, -1, xUndo, xRedo) + ' + ' Case Keys.Q, Keys.NumPad1 : If Not My.Computer.Keyboard.CtrlKeyDown Then MTCFromMode(niA2, niA2, niD1, xUndo, xRedo) + ' Case Keys.W, Keys.NumPad2 : If Not My.Computer.Keyboard.CtrlKeyDown Then MTCFromMode(niA3, niA3, niD2, xUndo, xRedo) + ' Case Keys.E, Keys.NumPad3 : If Not My.Computer.Keyboard.CtrlKeyDown Then MTCFromMode(niA4, niA4, niD3, xUndo, xRedo) + ' Case Keys.R, Keys.NumPad4 : If Not My.Computer.Keyboard.CtrlKeyDown Then MTCFromMode(niA5, niA5, niD4, xUndo, xRedo) + ' Case Keys.T, Keys.NumPad5 : If Not My.Computer.Keyboard.CtrlKeyDown Then MTCFromMode(niA6, niA6, niD5, xUndo, xRedo) + ' Case Keys.Y, Keys.NumPad6 : If Not My.Computer.Keyboard.CtrlKeyDown Then MTCFromMode(niA7, niD2, niD6, xUndo, xRedo) + ' Case Keys.U, Keys.NumPad7 : If Not My.Computer.Keyboard.CtrlKeyDown Then MTCFromMode(niA8, niD3, niD7, xUndo, xRedo) + ' Case Keys.I, Keys.NumPad8 : If Not My.Computer.Keyboard.CtrlKeyDown Then MTCFromMode(niA1, niD4, niD8, xUndo, xRedo) + ' Case Keys.O, Keys.NumPad9 : If Not My.Computer.Keyboard.CtrlKeyDown Then MTCFromMode(-1, niD5, -1, xUndo, xRedo) + End Select - Case Keys.S - If Not My.Computer.Keyboard.CtrlKeyDown Then POBNormal_Click(Nothing, Nothing) + ' If My.Computer.Keyboard.CtrlKeyDown And (Not My.Computer.Keyboard.AltKeyDown) And (Not My.Computer.Keyboard.ShiftKeyDown) Then + ' Select Case e.KeyCode + ' Case Keys.Z : TBUndo_Click(TBUndo, New EventArgs) + ' Case Keys.Y : TBRedo_Click(TBRedo, New EventArgs) + ' Case Keys.X : TBCut_Click(TBCut, New EventArgs) + ' Case Keys.C : TBCopy_Click(TBCopy, New EventArgs) + ' Case Keys.V : TBPaste_Click(TBPaste, New EventArgs) + ' Case Keys.A : mnSelectAll_Click(mnSelectAll, New EventArgs) + ' End Select + ' End If + ' + ' If ModifierMultiselectVisibleActive() Then + ' If e.KeyCode = Keys.A And KMouseOver <> -1 Then + ' SelectAllWithHoveredNoteLabel() + ' End If + ' End If + + ' Turn keycode into string + Dim keyComboEvent(-1) As String + If e.Control Then + ReDim Preserve keyComboEvent(keyComboEvent.Length) + keyComboEvent(UBound(keyComboEvent)) = "Ctrl" + End If + If e.Shift Then + ReDim Preserve keyComboEvent(keyComboEvent.Length) + keyComboEvent(UBound(keyComboEvent)) = "Shift" + End If + If e.Alt Then + ReDim Preserve keyComboEvent(keyComboEvent.Length) + keyComboEvent(UBound(keyComboEvent)) = "Alt" + End If + ReDim Preserve keyComboEvent(keyComboEvent.Length) + keyComboEvent(UBound(keyComboEvent)) = e.KeyCode.ToString - Case Keys.D - CGDisableVertical.Checked = Not CGDisableVertical.Checked + ' Determine + Dim keybindOptionName As String = "Nothing" - Case Keys.NumPad0, Keys.D0 - MoveToBGM(xUndo, xRedo) - - ' Ctrl + Keys → 2P lanes - Case Keys.Oem1, Keys.D1 - If My.Computer.Keyboard.CtrlKeyDown Then MTCFromMode(niA1, niA2, niD1, xUndo, xRedo) Else MTCFromMode(niA2, niA2, niA2, xUndo, xRedo) - Case Keys.Oem2, Keys.D2 - If My.Computer.Keyboard.CtrlKeyDown Then MTCFromMode(niA2, niA3, niD2, xUndo, xRedo) Else MTCFromMode(niA3, niA3, niA3, xUndo, xRedo) - Case Keys.Oem3, Keys.D3 - If My.Computer.Keyboard.CtrlKeyDown Then MTCFromMode(niA3, niA4, niD3, xUndo, xRedo) Else MTCFromMode(niA4, niA4, niA4, xUndo, xRedo) - Case Keys.Oem4, Keys.D4 - If My.Computer.Keyboard.CtrlKeyDown Then MTCFromMode(niA4, niA5, niD4, xUndo, xRedo) Else MTCFromMode(niA5, niA5, niA5, xUndo, xRedo) - Case Keys.Oem5, Keys.D5 - If My.Computer.Keyboard.CtrlKeyDown Then MTCFromMode(niA5, niA6, niD5, xUndo, xRedo) Else MTCFromMode(niA6, niA6, niA6, xUndo, xRedo) - Case Keys.Oem6, Keys.D6 - If My.Computer.Keyboard.CtrlKeyDown Then MTCFromMode(niA6, niD2, niD6, xUndo, xRedo) Else MTCFromMode(niA7, niD2, niA7, xUndo, xRedo) - Case Keys.Oem7, Keys.D7 - If My.Computer.Keyboard.CtrlKeyDown Then MTCFromMode(niA7, niD3, niD7, xUndo, xRedo) Else MTCFromMode(niA8, niD3, niA8, xUndo, xRedo) - Case Keys.Oem8, Keys.D8 - If My.Computer.Keyboard.CtrlKeyDown Then MTCFromMode(niA8, niD4, niD8, xUndo, xRedo) Else MTCFromMode(niA1, niD4, niA1, xUndo, xRedo) - Case Keys.D9 ' Oem9 not a thing apparently - MTCFromMode(-1, niD5, -1, xUndo, xRedo) - - Case Keys.Q, Keys.NumPad1 : If Not My.Computer.Keyboard.CtrlKeyDown Then MTCFromMode(niA2, niA2, niD1, xUndo, xRedo) - Case Keys.W, Keys.NumPad2 : If Not My.Computer.Keyboard.CtrlKeyDown Then MTCFromMode(niA3, niA3, niD2, xUndo, xRedo) - Case Keys.E, Keys.NumPad3 : If Not My.Computer.Keyboard.CtrlKeyDown Then MTCFromMode(niA4, niA4, niD3, xUndo, xRedo) - Case Keys.R, Keys.NumPad4 : If Not My.Computer.Keyboard.CtrlKeyDown Then MTCFromMode(niA5, niA5, niD4, xUndo, xRedo) - Case Keys.T, Keys.NumPad5 : If Not My.Computer.Keyboard.CtrlKeyDown Then MTCFromMode(niA6, niA6, niD5, xUndo, xRedo) - Case Keys.Y, Keys.NumPad6 : If Not My.Computer.Keyboard.CtrlKeyDown Then MTCFromMode(niA7, niD2, niD6, xUndo, xRedo) - Case Keys.U, Keys.NumPad7 : If Not My.Computer.Keyboard.CtrlKeyDown Then MTCFromMode(niA8, niD3, niD7, xUndo, xRedo) - Case Keys.I, Keys.NumPad8 : If Not My.Computer.Keyboard.CtrlKeyDown Then MTCFromMode(niA1, niD4, niD8, xUndo, xRedo) - Case Keys.O, Keys.NumPad9 : If Not My.Computer.Keyboard.CtrlKeyDown Then MTCFromMode(-1, niD5, -1, xUndo, xRedo) + ' Check for specific categories first + For Each P In KeybindingCategory + If (P = CategoryPMS AndAlso gXKeyMode <> "PMS") Or + (P = CategoryDP AndAlso gXKeyMode <> "DP") Then Continue For + Dim keybindOptions = From k In Keybindings + Where k.Category = P + Select k + For Each keybind In keybindOptions + If keybind.Combo.Contains(Join(keyComboEvent, "+")) Then + keybindOptionName = keybind.OpName + GoTo ExecuteKeybind + End If + Next + Next +ExecuteKeybind: + Select Case keybindOptionName + Case "Move to A2" + MoveToColumn(niA2, xUndo, xRedo) + Case "Move to A3" + MoveToColumn(niA3, xUndo, xRedo) + Case "Move to A4" + MoveToColumn(niA4, xUndo, xRedo) + Case "Move to A5" + MoveToColumn(niA5, xUndo, xRedo) + Case "Move to A6" + MoveToColumn(niA6, xUndo, xRedo) + Case "Move to A7" + MoveToColumn(niA7, xUndo, xRedo) + Case "Move to A8" + MoveToColumn(niA8, xUndo, xRedo) + Case "Move to A1" + MoveToColumn(niA1, xUndo, xRedo) + + Case "Move to D1" + MoveToColumn(niD1, xUndo, xRedo) + Case "Move to D2" + MoveToColumn(niD2, xUndo, xRedo) + Case "Move to D3" + MoveToColumn(niD3, xUndo, xRedo) + Case "Move to D4" + MoveToColumn(niD4, xUndo, xRedo) + Case "Move to D5" + MoveToColumn(niD5, xUndo, xRedo) + Case "Move to D6" + MoveToColumn(niD6, xUndo, xRedo) + Case "Move to D7" + MoveToColumn(niD7, xUndo, xRedo) + Case "Move to D8" + MoveToColumn(niD8, xUndo, xRedo) + + Case "Move to P1" + MoveToColumn(niA2, xUndo, xRedo) + Case "Move to P2" + MoveToColumn(niA3, xUndo, xRedo) + Case "Move to P3" + MoveToColumn(niA4, xUndo, xRedo) + Case "Move to P4" + MoveToColumn(niA5, xUndo, xRedo) + Case "Move to P5" + MoveToColumn(niA6, xUndo, xRedo) + Case "Move to P6" + MoveToColumn(niD2, xUndo, xRedo) + Case "Move to P7" + MoveToColumn(niD3, xUndo, xRedo) + Case "Move to P8" + MoveToColumn(niD4, xUndo, xRedo) + Case "Move to P9" + MoveToColumn(niD5, xUndo, xRedo) + + Case "Move to BGM" + MoveToBGM(xUndo, xRedo) + Case "Disable Vertical Moves" + CGDisableVertical.Checked = Not CGDisableVertical.Checked + Case "Snap to Grid" + CGSnap.Checked = Not gSnap + Case "Convert to Long Note" + POBLong_Click(Nothing, Nothing) + Case "Convert to Short Note" + POBNormal_Click(Nothing, Nothing) + Case "Check Technical Error" + CheckTechnicalError(Nothing, Nothing) + Case "Select Expansion Section" + Expand_Load(Nothing, Nothing) + + Case "Undo" + TBUndo_Click(TBUndo, New EventArgs) + Case "Redo" + TBRedo_Click(TBRedo, New EventArgs) + Case "Cut" + TBCut_Click(TBCut, New EventArgs) + Case "Copy" + TBCopy_Click(TBCopy, New EventArgs) + Case "Paste" + TBPaste_Click(TBPaste, New EventArgs) + Case "Select All" + mnSelectAll_Click(mnSelectAll, New EventArgs) + Case "Select All with Hovered Note Label" + If KMouseOver <> -1 Then SelectAllWithHoveredNoteLabel() End Select - If My.Computer.Keyboard.CtrlKeyDown And (Not My.Computer.Keyboard.AltKeyDown) And (Not My.Computer.Keyboard.ShiftKeyDown) Then - Select Case e.KeyCode - Case Keys.Z : TBUndo_Click(TBUndo, New EventArgs) - Case Keys.Y : TBRedo_Click(TBRedo, New EventArgs) - Case Keys.X : TBCut_Click(TBCut, New EventArgs) - Case Keys.C : TBCopy_Click(TBCopy, New EventArgs) - Case Keys.V : TBPaste_Click(TBPaste, New EventArgs) - Case Keys.A : mnSelectAll_Click(mnSelectAll, New EventArgs) - End Select - End If - - If My.Computer.Keyboard.CtrlKeyDown AndAlso My.Computer.Keyboard.AltKeyDown AndAlso Not My.Computer.Keyboard.ShiftKeyDown Then - Select Case e.KeyCode - Case Keys.R : Expand_Load(Nothing, Nothing) - Case Keys.E : CheckTechnicalError(Nothing, Nothing) - End Select - End If - - If ModifierMultiselectVisibleActive() Then - If e.KeyCode = Keys.A And KMouseOver <> -1 Then - SelectAllWithHoveredNoteLabel() - End If - End If - PMainInMouseMove(sender) POStatusRefresh() End Sub - Private Sub MTCFromMode(ByVal ColSP As Integer, ByVal ColPMS As Integer, ByVal ColDP As Integer, xUndo As UndoRedo.LinkedURCmd, xRedo As UndoRedo.LinkedURCmd) - Dim xCol As Integer - Select Case gXKeyMode - Case "SP" - xCol = ColSP - Case "PMS" - xCol = ColPMS - Case "DP" - xCol = ColDP - End Select - If xCol = -1 Then Exit Sub - MoveToColumn(xCol, xUndo, xRedo) - End Sub + ' Private Sub MTCFromMode(ByVal ColSP As Integer, ByVal ColPMS As Integer, ByVal ColDP As Integer, xUndo As UndoRedo.LinkedURCmd, xRedo As UndoRedo.LinkedURCmd) + ' Dim xCol As Integer + ' Select Case gXKeyMode + ' Case "SP" + ' xCol = ColSP + ' Case "PMS" + ' xCol = ColPMS + ' Case "DP" + ' xCol = ColDP + ' End Select + ' If xCol = -1 Then Exit Sub + ' MoveToColumn(xCol, xUndo, xRedo) + ' End Sub Private Sub SelectAllWithHoveredNoteLabel() For xI1 = 0 To UBound(Notes) diff --git a/iBMSC/Strings.vb b/iBMSC/Strings.vb index 8a4c50fac..f6c8b681a 100644 --- a/iBMSC/Strings.vb +++ b/iBMSC/Strings.vb @@ -197,7 +197,32 @@ Public Class Strings Public Shared AutoSave As String = "AutoSave" Public Shared minutes As String = "minutes" Public Shared StopPreviewOnClick As String = "Stop preview if clicked on the editing panel" - Public Shared ModeDP As String = "DP Mode keybinding" + End Class + + Public Class fopKeybinding + Public Shared MPre As String = "Move to " + Public Shared MPost As String = "" + + Public Shared MDesc1PPre As String = "Move note to 1P Lane " + Public Shared MDesc1PPost As String = "" + Public Shared MDesc2PPre As String = "Move note to 2P Lane " + Public Shared MDesc2PPost As String = "" + Public Shared MDesc1PS As String = "Move note to 1P Scratch Lane" + Public Shared MDesc2PS As String = "Move note to 2P Scratch Lane" + + Public Shared MDescPMSPre As String = "Move note to PMS Lane " + Public Shared MDescPMSPost As String = "" + + Public Shared P1 As String = "P1" + Public Shared P2 As String = "P2" + Public Shared P3 As String = "P3" + Public Shared P4 As String = "P4" + Public Shared P5 As String = "P5" + Public Shared P6 As String = "P6" + Public Shared P7 As String = "P7" + Public Shared P8 As String = "P8" + Public Shared P9 As String = "P9" + End Class Public Class fFind diff --git a/iBMSC/iBMSC.vbproj b/iBMSC/iBMSC.vbproj index 069b4b63f..72c1a878d 100644 --- a/iBMSC/iBMSC.vbproj +++ b/iBMSC/iBMSC.vbproj @@ -207,6 +207,12 @@ Form + + OpKeybinding.vb + + + Form + OpVisual.vb @@ -305,6 +311,9 @@ My.Resources Designer + + OpKeybinding.vb + OpExpand.vb From 447dc1e0553f9ffb6d4dcb861c6f8db2c04b6a07 Mon Sep 17 00:00:00 2001 From: psyk2642 <60137590+psyk2642@users.noreply.github.com> Date: Sun, 10 Apr 2022 12:07:29 +0800 Subject: [PATCH 108/257] Miscellaneous Update --- iBMSC.sln | 7 +++++-- iBMSC/MainWindow.designer.vb | 2 +- iBMSC/My Project/AssemblyInfo.vb | 4 ++-- iBMSC/Option Windows/OpKeybinding.vb | 7 ++++--- iBMSC/PanelDraw.vb | 1 + 5 files changed, 13 insertions(+), 8 deletions(-) diff --git a/iBMSC.sln b/iBMSC.sln index ffc713fd2..b782e4dcc 100644 --- a/iBMSC.sln +++ b/iBMSC.sln @@ -1,7 +1,7 @@  Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio 2013 -VisualStudioVersion = 12.0.30723.0 +# Visual Studio Version 17 +VisualStudioVersion = 17.1.32328.378 MinimumVisualStudioVersion = 10.0.40219.1 Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "iBMSC", "iBMSC\iBMSC.vbproj", "{35281D99-2A97-4AA0-AC1E-6CDC78999A3D}" EndProject @@ -19,4 +19,7 @@ Global GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {A780C3E3-D300-46D2-877C-60CC440A49D4} + EndGlobalSection EndGlobal diff --git a/iBMSC/MainWindow.designer.vb b/iBMSC/MainWindow.designer.vb index 79b2cb2ba..e155c61bc 100644 --- a/iBMSC/MainWindow.designer.vb +++ b/iBMSC/MainWindow.designer.vb @@ -1330,7 +1330,7 @@ Partial Class MainWindow Me.TBMain.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.TBNew, Me.TBOpen, Me.TBSave, Me.ToolStripSeparator1, Me.TBCut, Me.TBCopy, Me.TBPaste, Me.TBFind, Me.ToolStripSeparator24, Me.TBStatistics, Me.POConvert, Me.TBMyO2, Me.ToolStripSeparator4, Me.TBErrorCheck, Me.TBPreviewOnClick, Me.TBShowFileName, Me.TBShowWaveform, Me.ToolStripSeparator8, Me.TBNTInput, Me.TBWavIncrease, Me.ToolStripSeparator2, Me.TBUndo, Me.TBRedo, Me.ToolStripSeparator5, Me.TBTimeSelect, Me.TBSelect, Me.TBWrite, Me.ToolStripSeparator3, Me.TBPlayB, Me.TBPlay, Me.TBStop, Me.TBPOptions, Me.ToolStripSeparator7, Me.TBGOptions, Me.TBKOptions, Me.TBVOptions, Me.TBLanguage, Me.TBTheme, Me.POBStorm, Me.TBTotalValue}) Me.TBMain.Location = New System.Drawing.Point(3, 23) Me.TBMain.Name = "TBMain" - Me.TBMain.Size = New System.Drawing.Size(864, 25) + Me.TBMain.Size = New System.Drawing.Size(810, 25) Me.TBMain.TabIndex = 64 Me.TBMain.Text = "Main Toolbar" ' diff --git a/iBMSC/My Project/AssemblyInfo.vb b/iBMSC/My Project/AssemblyInfo.vb index 3d2bfcccb..de2b10d25 100644 --- a/iBMSC/My Project/AssemblyInfo.vb +++ b/iBMSC/My Project/AssemblyInfo.vb @@ -33,7 +33,7 @@ Imports System.Runtime.InteropServices ' by using the '*' as shown below: ' - - + + \ No newline at end of file diff --git a/iBMSC/Option Windows/OpKeybinding.vb b/iBMSC/Option Windows/OpKeybinding.vb index c361abf1b..5df3cfe5f 100644 --- a/iBMSC/Option Windows/OpKeybinding.vb +++ b/iBMSC/Option Windows/OpKeybinding.vb @@ -117,9 +117,10 @@ Public Class OpKeybinding TComboInput.Text = "" End Sub - Private Sub LVKeybinding_ColumnWidthChanged(sender As Object, e As ColumnWidthChangedEventArgs) Handles LVKeybinding.ColumnWidthChanged - BindingKey.Width = LVKeybinding.Width - BindingName.Width - Description.Width - 25 - End Sub + ' This causes the application to crash on other PCs. what + ' Private Sub LVKeybinding_ColumnWidthChanged(sender As Object, e As ColumnWidthChangedEventArgs) Handles LVKeybinding.ColumnWidthChanged + ' BindingKey.Width = LVKeybinding.Width - BindingName.Width - Description.Width - 25 + ' End Sub Private Sub BDefault_Click(sender As Object, e As EventArgs) Handles BDefault.Click Keybinds = MainWindow.KeybindingsInit.Clone diff --git a/iBMSC/PanelDraw.vb b/iBMSC/PanelDraw.vb index 81e358d91..417d11d86 100644 --- a/iBMSC/PanelDraw.vb +++ b/iBMSC/PanelDraw.vb @@ -83,6 +83,7 @@ Partial Public Class MainWindow If GetColumn(5).Width = 0 Then gXKeyMode = "PMS" gXKeyCol = {niA2, niA3, niA4, niA5, niA6, niD2, niD3, niD4, niD5} + If CHPlayer.SelectedIndex = 0 Then CHPlayer.SelectedIndex = 2 ElseIf CHPlayer.SelectedIndex <> 0 Then gXKeyMode = "DP" gXKeyCol = {niA1, niA2, niA3, niA4, niA5, niA6, niA7, niA8, niD1, niD2, niD3, niD4, niD5, niD6, niD7, niD8} From f2e1d13886ced4a2ca4d545a963b08a0c0cfbf3a Mon Sep 17 00:00:00 2001 From: psyk2642 <60137590+psyk2642@users.noreply.github.com> Date: Sun, 10 Apr 2022 12:12:05 +0800 Subject: [PATCH 109/257] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index ebd51c76b..64f378941 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,7 @@ See README.md.iBMSC for the original iBMSC README file and REAME.md.uBMSC for th ### Discretion * Themes from Bluvel's uBMSC fork may not be compatible, please use themes from Zadoru's uBMSC fork. -* Please install .NET Framework 4.8 for the program to function properly. +* Having .NET Framework 4.8 installed is recommended. # Changes Listed in the order added. From 0be1f06797718324459f9d8e498a76c653285859 Mon Sep 17 00:00:00 2001 From: psyk2642 <60137590+psyk2642@users.noreply.github.com> Date: Sun, 10 Apr 2022 14:53:29 +0800 Subject: [PATCH 110/257] Color Override Code Update Code organization. --- iBMSC/ChartIO.vb | 1 + iBMSC/EditorPersistent.vb | 62 ++++++++++++++++++++++++ iBMSC/MainWindow.vb | 12 +++-- iBMSC/Option Windows/OpVisualOverride.vb | 62 ++---------------------- iBMSC/PanelDraw.vb | 30 ------------ iBMSC/PanelEvents.vb | 9 ++-- 6 files changed, 79 insertions(+), 97 deletions(-) diff --git a/iBMSC/ChartIO.vb b/iBMSC/ChartIO.vb index e646fe0a1..07d2a424d 100644 --- a/iBMSC/ChartIO.vb +++ b/iBMSC/ChartIO.vb @@ -275,6 +275,7 @@ SkipUpdateMeasureBottom: If ShowWaveform Then WaveformLoaded = True TExpansion.Text = xExpansion + SkipLWAVAndExpansion: SortByVPositionQuick(0, UBound(Notes)) UpdatePairing() diff --git a/iBMSC/EditorPersistent.vb b/iBMSC/EditorPersistent.vb index d6325fb02..82487e40f 100644 --- a/iBMSC/EditorPersistent.vb +++ b/iBMSC/EditorPersistent.vb @@ -210,6 +210,37 @@ Partial Public Class MainWindow End With End Sub + Private Sub SaveColorOverride(ByVal Path As String) + Dim F As String = "Colors\" + GetFileName(FileName) + ".xml" + Dim w As New XmlTextWriter(F, System.Text.Encoding.Unicode) + With w + .WriteStartDocument() + .Formatting = Formatting.Indented + .Indentation = 4 + + .WriteStartElement("ColorOverride") + .WriteAttributeString("Count", UBound(COverrides)) + + For i = 0 To UBound(COverrides) + .WriteStartElement("Color") + .WriteAttributeString("Index", i) + .WriteAttributeString("Name", COverrides(i).Name) + .WriteAttributeString("RangeL", COverrides(i).RangeL) + .WriteAttributeString("RangeU", COverrides(i).RangeU) + .WriteAttributeString("NoteColor", COverrides(i).NoteColor) + .WriteAttributeString("TextColor", COverrides(i).TextColor) + .WriteAttributeString("LongNoteColor", COverrides(i).LongNoteColor) + .WriteAttributeString("LongTextColor", COverrides(i).LongTextColor) + .WriteAttributeString("BG", COverrides(i).BG) + .WriteEndElement() + Next + + .WriteEndElement() + .WriteEndDocument() + .Close() + End With + End Sub + Private Sub XMLLoadElementValue(ByVal n As XmlElement, ByRef v As Integer) If n Is Nothing Then Exit Sub XMLLoadAttribute(n.GetAttribute("Value"), v) @@ -1332,4 +1363,35 @@ EndOfSub: LoadSettings(My.Application.Info.DirectoryPath & "\Data\" & sender.Text) RefreshPanelAll() End Sub + + Private Sub LoadColorOverride(ByVal Path As String) + Dim F As String = "Colors\" + GetFileName(Path) + ".xml" + If My.Computer.FileSystem.FileExists(F) Then + + Dim Doc As New XmlDocument + Dim FileStream As New IO.FileStream(F, FileMode.Open, FileAccess.Read) + Doc.Load(FileStream) + + Dim Root As XmlElement = Doc.Item("ColorOverride") + + Dim n As Integer = Root.GetAttribute("Count") + ReDim COverrides(n) + Dim i As Integer + For Each eColor As XmlElement In Root.ChildNodes + With eColor + XMLLoadAttribute(.GetAttribute("Index"), i) + XMLLoadAttribute(.GetAttribute("Name"), COverrides(i).Name) + XMLLoadAttribute(.GetAttribute("RangeL"), COverrides(i).RangeL) + XMLLoadAttribute(.GetAttribute("RangeU"), COverrides(i).RangeU) + XMLLoadAttribute(.GetAttribute("NoteColor"), COverrides(i).NoteColor) + XMLLoadAttribute(.GetAttribute("TextColor"), COverrides(i).TextColor) ' Unused + XMLLoadAttribute(.GetAttribute("LongNoteColor"), COverrides(i).LongNoteColor) ' Unused + XMLLoadAttribute(.GetAttribute("LongTextColor"), COverrides(i).LongTextColor) ' Unused + XMLLoadAttribute(.GetAttribute("BG"), COverrides(i).BG) ' Unused + End With + Next + FileStream.Close() + + End If + End Sub End Class diff --git a/iBMSC/MainWindow.vb b/iBMSC/MainWindow.vb index 0b5ae9f4d..218ac2682 100644 --- a/iBMSC/MainWindow.vb +++ b/iBMSC/MainWindow.vb @@ -1062,6 +1062,7 @@ Public Class MainWindow WaveformLoaded = False TExpansion.Text = "" + LoadColorOverride(FileName) LBeat.Items.Clear() For xI1 As Integer = 0 To 999 @@ -1665,6 +1666,7 @@ EndSearch: If ClosingPopSave() Then Exit Sub ClearUndo() + SetFileName("Untitled.bms") InitializeNewBMS() ReDim Notes(0) @@ -1694,7 +1696,6 @@ EndSearch: Next LWAV.SelectedIndex = 0 - SetFileName("Untitled.bms") SetIsSaved(True) 'pIsSaved.Visible = Not IsSaved @@ -1759,9 +1760,9 @@ EndSearch: If xDOpen.ShowDialog = Windows.Forms.DialogResult.Cancel Then Exit Sub InitPath = ExcludeFileName(xDOpen.FileName) + SetFileName(xDOpen.FileName) OpenBMS(My.Computer.FileSystem.ReadAllText(xDOpen.FileName, TextEncoding)) ClearUndo() - SetFileName(xDOpen.FileName) NewRecent(FileName) SetIsSaved(True) 'pIsSaved.Visible = Not IsSaved @@ -3463,8 +3464,11 @@ RestartSorting: xSorted = False End Sub Private Sub TBVCOptions_Click(sender As Object, e As EventArgs) Handles mnVCOptions.Click, BWAVColorOverride.Click - Dim xDiag As New OpVisualOverride(FileName) - xDiag.ShowDialog(Me) + Dim xDiag As New OpVisualOverride(COverrides) + If xDiag.ShowDialog() = Windows.Forms.DialogResult.OK Then + COverrides = xDiag.COverrides + If Not IsNothing(COverrides) Then SaveColorOverride(FileName) + End If UpdateColumnsX() RefreshPanelAll() End Sub diff --git a/iBMSC/Option Windows/OpVisualOverride.vb b/iBMSC/Option Windows/OpVisualOverride.vb index 74490e91d..c8059c492 100644 --- a/iBMSC/Option Windows/OpVisualOverride.vb +++ b/iBMSC/Option Windows/OpVisualOverride.vb @@ -1,40 +1,13 @@ Imports System.Windows.Forms Public Class OpVisualOverride - Dim COverrides() As MainWindow.ColorOverride + Public COverrides() As MainWindow.ColorOverride Dim F As String - Public Sub New(ByVal FileName As String) + Public Sub New(ByVal xColorOverrides() As MainWindow.ColorOverride) InitializeComponent() LOverrides.Items.Clear() - If Not System.IO.Directory.Exists("Colors") Then My.Computer.FileSystem.CreateDirectory("Colors") - - F = "Colors\" + GetFileName(FileName) + ".xml" - If Not My.Computer.FileSystem.FileExists(F) Then Exit Sub - - Dim Doc As New XmlDocument - Dim FileStream As New IO.FileStream(F, FileMode.Open, FileAccess.Read) - Doc.Load(FileStream) - - Dim Root As XmlElement = Doc.Item("ColorOverride") - Dim n As Integer = Root.GetAttribute("Count") - If n = -1 Then FileStream.Close() : IO.File.Delete(F) : Exit Sub - ReDim COverrides(n) - Dim i As Integer - For Each eColor As XmlElement In Root.ChildNodes - With eColor - XMLLoadAttribute(.GetAttribute("Index"), i) - XMLLoadAttribute(.GetAttribute("Name"), COverrides(i).Name) - XMLLoadAttribute(.GetAttribute("RangeL"), COverrides(i).RangeL) - XMLLoadAttribute(.GetAttribute("RangeU"), COverrides(i).RangeU) - XMLLoadAttribute(.GetAttribute("NoteColor"), COverrides(i).NoteColor) - XMLLoadAttribute(.GetAttribute("TextColor"), COverrides(i).TextColor) - XMLLoadAttribute(.GetAttribute("LongNoteColor"), COverrides(i).LongNoteColor) - XMLLoadAttribute(.GetAttribute("LongTextColor"), COverrides(i).LongTextColor) - XMLLoadAttribute(.GetAttribute("BG"), COverrides(i).BG) - End With - Next - FileStream.Close() + COverrides = xColorOverrides.Clone ' List expansion code per line For Each COverride In COverrides @@ -48,35 +21,6 @@ Public Class OpVisualOverride Private Sub OK_Button_Click(sender As Object, e As EventArgs) Handles OK_Button.Click DialogResult = DialogResult.OK Me.Close() - If IsNothing(COverrides) Then Exit Sub - - Dim w As New XmlTextWriter(F, System.Text.Encoding.Unicode) - With w - .WriteStartDocument() - .Formatting = Formatting.Indented - .Indentation = 4 - - .WriteStartElement("ColorOverride") - .WriteAttributeString("Count", UBound(COverrides)) - - For i = 0 To UBound(COverrides) - .WriteStartElement("Color") - .WriteAttributeString("Index", i) - .WriteAttributeString("Name", COverrides(i).Name) - .WriteAttributeString("RangeL", COverrides(i).RangeL) - .WriteAttributeString("RangeU", COverrides(i).RangeU) - .WriteAttributeString("NoteColor", COverrides(i).NoteColor) - .WriteAttributeString("TextColor", COverrides(i).TextColor) - .WriteAttributeString("LongNoteColor", COverrides(i).LongNoteColor) - .WriteAttributeString("LongTextColor", COverrides(i).LongTextColor) - .WriteAttributeString("BG", COverrides(i).BG) - .WriteEndElement() - Next - - .WriteEndElement() - .WriteEndDocument() - .Close() - End With End Sub Private Sub Cancel_Button_Click(sender As Object, e As EventArgs) Handles Cancel_Button.Click diff --git a/iBMSC/PanelDraw.vb b/iBMSC/PanelDraw.vb index 417d11d86..f2e14e5d4 100644 --- a/iBMSC/PanelDraw.vb +++ b/iBMSC/PanelDraw.vb @@ -43,36 +43,6 @@ Partial Public Class MainWindow Dim xVSR As Integer = -PanelVScroll(xIndex) Dim xVSu As Integer = IIf(xVSR + xTHeight / gxHeight > GetMaxVPosition(), GetMaxVPosition(), xVSR + xTHeight / gxHeight) - ' Color override - Dim F As String = "Colors\" + GetFileName(FileName) + ".xml" - If My.Computer.FileSystem.FileExists(F) Then - - Dim Doc As New XmlDocument - Dim FileStream As New IO.FileStream(F, FileMode.Open, FileAccess.Read) - Doc.Load(FileStream) - - Dim Root As XmlElement = Doc.Item("ColorOverride") - - Dim n As Integer = Root.GetAttribute("Count") - ReDim COverrides(n) - Dim i As Integer - For Each eColor As XmlElement In Root.ChildNodes - With eColor - XMLLoadAttribute(.GetAttribute("Index"), i) - XMLLoadAttribute(.GetAttribute("Name"), COverrides(i).Name) - XMLLoadAttribute(.GetAttribute("RangeL"), COverrides(i).RangeL) - XMLLoadAttribute(.GetAttribute("RangeU"), COverrides(i).RangeU) - XMLLoadAttribute(.GetAttribute("NoteColor"), COverrides(i).NoteColor) - XMLLoadAttribute(.GetAttribute("TextColor"), COverrides(i).TextColor) - XMLLoadAttribute(.GetAttribute("LongNoteColor"), COverrides(i).LongNoteColor) - XMLLoadAttribute(.GetAttribute("LongTextColor"), COverrides(i).LongTextColor) - XMLLoadAttribute(.GetAttribute("BG"), COverrides(i).BG) - End With - Next - FileStream.Close() - - End If - 'e1.Graphics.SmoothingMode = Drawing2D.SmoothingMode.AntiAlias Dim xI1 As Integer diff --git a/iBMSC/PanelEvents.vb b/iBMSC/PanelEvents.vb index 2de45ba24..ac6c1a7d6 100644 --- a/iBMSC/PanelEvents.vb +++ b/iBMSC/PanelEvents.vb @@ -4,14 +4,12 @@ Imports iBMSC.Editor Partial Public Class MainWindow Private Sub PMainInPreviewKeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.PreviewKeyDownEventArgs) Handles PMainIn.PreviewKeyDown, PMainInL.PreviewKeyDown, PMainInR.PreviewKeyDown - If e.KeyCode = Keys.ShiftKey Or e.KeyCode = Keys.ControlKey Then + If e.KeyCode = Keys.ShiftKey Or e.KeyCode = Keys.ControlKey Or e.KeyCode = 18 Then RefreshPanelAll() POStatusRefresh() Exit Sub End If - If e.KeyCode = 18 Then Exit Sub - Dim iI As Integer = sender.Tag Dim xI1 As Integer Dim xTargetColumn As Integer = -1 @@ -217,6 +215,9 @@ Partial Public Class MainWindow Case Keys.Subtract DecreaseCurrentWav() + ' Moved a bunch of keybindings to the bottom, see ExecuteKeybind: + ' Might migrate a bunch more from the above? + ' Case Keys.G ' 'az: don't trigger when we use Go To Measure ' If Not My.Computer.Keyboard.CtrlKeyDown Then CGSnap.Checked = Not gSnap @@ -299,7 +300,7 @@ Partial Public Class MainWindow keyComboEvent(UBound(keyComboEvent)) = e.KeyCode.ToString ' Determine - Dim keybindOptionName As String = "Nothing" + Dim keybindOptionName As String = "" ' Check for specific categories first For Each P In KeybindingCategory From ef01c1c8d44dff296662e0fcb50854755a773a04 Mon Sep 17 00:00:00 2001 From: psyk2642 <60137590+psyk2642@users.noreply.github.com> Date: Sun, 10 Apr 2022 20:42:05 +0800 Subject: [PATCH 111/257] Color Override Code Update and Fix --- iBMSC/EditorPersistent.vb | 2 ++ iBMSC/MainWindow.vb | 4 ++-- iBMSC/Option Windows/OpVisualOverride.vb | 21 +++++++++++++-------- 3 files changed, 17 insertions(+), 10 deletions(-) diff --git a/iBMSC/EditorPersistent.vb b/iBMSC/EditorPersistent.vb index 82487e40f..3814f701f 100644 --- a/iBMSC/EditorPersistent.vb +++ b/iBMSC/EditorPersistent.vb @@ -211,6 +211,8 @@ Partial Public Class MainWindow End Sub Private Sub SaveColorOverride(ByVal Path As String) + If Not System.IO.Directory.Exists("Colors") Then My.Computer.FileSystem.CreateDirectory("Colors") + Dim F As String = "Colors\" + GetFileName(FileName) + ".xml" Dim w As New XmlTextWriter(F, System.Text.Encoding.Unicode) With w diff --git a/iBMSC/MainWindow.vb b/iBMSC/MainWindow.vb index 218ac2682..b6e0283e6 100644 --- a/iBMSC/MainWindow.vb +++ b/iBMSC/MainWindow.vb @@ -264,7 +264,7 @@ Public Class MainWindow BG = xBG End Sub End Structure - Dim COverrides() As ColorOverride = Nothing + Dim COverrides(-1) As ColorOverride '----Keybinding Options Structure Keybinding @@ -3467,7 +3467,7 @@ RestartSorting: xSorted = False Dim xDiag As New OpVisualOverride(COverrides) If xDiag.ShowDialog() = Windows.Forms.DialogResult.OK Then COverrides = xDiag.COverrides - If Not IsNothing(COverrides) Then SaveColorOverride(FileName) + If Not IsNothing(COverrides) Then If COverrides.Length > 0 Then SaveColorOverride(FileName) End If UpdateColumnsX() RefreshPanelAll() diff --git a/iBMSC/Option Windows/OpVisualOverride.vb b/iBMSC/Option Windows/OpVisualOverride.vb index c8059c492..722d5f2dc 100644 --- a/iBMSC/Option Windows/OpVisualOverride.vb +++ b/iBMSC/Option Windows/OpVisualOverride.vb @@ -7,15 +7,20 @@ Public Class OpVisualOverride InitializeComponent() LOverrides.Items.Clear() - COverrides = xColorOverrides.Clone - - ' List expansion code per line - For Each COverride In COverrides - LOverrides.Items.Add(COverride.Name) - Next + COverrides = xColorOverrides + + If Not IsNothing(COverrides) Then + ' List expansion code per line + For Each COverride In COverrides + LOverrides.Items.Add(COverride.Name) + Next + + If COverrides.Length > 0 Then + LOverrides.SelectedIndex = 0 + ShowInTextbox() + End If + End If - LOverrides.SelectedIndex = 0 - ShowInTextbox() End Sub Private Sub OK_Button_Click(sender As Object, e As EventArgs) Handles OK_Button.Click From 625c5c2d2089c776c7b83b77742075686a85b442 Mon Sep 17 00:00:00 2001 From: psyk2642 <60137590+psyk2642@users.noreply.github.com> Date: Sun, 10 Apr 2022 22:56:19 +0800 Subject: [PATCH 112/257] Revert "Create VSWorkspaceState.json" This reverts commit 0761b408a2159837471c7600d37ebe4dfb3640f3. --- .vs/VSWorkspaceState.json | 6 ------ 1 file changed, 6 deletions(-) delete mode 100644 .vs/VSWorkspaceState.json diff --git a/.vs/VSWorkspaceState.json b/.vs/VSWorkspaceState.json deleted file mode 100644 index 6b6114114..000000000 --- a/.vs/VSWorkspaceState.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "ExpandedNodes": [ - "" - ], - "PreviewInSolutionExplorer": false -} \ No newline at end of file From 36f52fbc450f2223a314eaa4a85d01f6ba354648 Mon Sep 17 00:00:00 2001 From: psyk2642 <60137590+psyk2642@users.noreply.github.com> Date: Tue, 12 Apr 2022 00:01:28 +0800 Subject: [PATCH 113/257] Added #TOTAL Option Window Currently allows you to choose between one of three available calculation options: IIDX supposition 1, IIDX supposition 2, and multiplier. Accessible by clicking on the value text. Formula source: https://hitkey.nekokan.dyndns.info/total.htm --- iBMSC/EditorPersistent.vb | 17 + iBMSC/MainWindow.designer.vb | 6 +- iBMSC/MainWindow.vb | 40 ++- iBMSC/My Project/AssemblyInfo.vb | 4 +- iBMSC/Option Windows/OpTotal.Designer.vb | 423 +++++++++++++++++++++++ iBMSC/Option Windows/OpTotal.resx | 120 +++++++ iBMSC/Option Windows/OpTotal.vb | 45 +++ iBMSC/iBMSC.vbproj | 9 + 8 files changed, 658 insertions(+), 6 deletions(-) create mode 100644 iBMSC/Option Windows/OpTotal.Designer.vb create mode 100644 iBMSC/Option Windows/OpTotal.resx create mode 100644 iBMSC/Option Windows/OpTotal.vb diff --git a/iBMSC/EditorPersistent.vb b/iBMSC/EditorPersistent.vb index 3814f701f..d2b7ac77f 100644 --- a/iBMSC/EditorPersistent.vb +++ b/iBMSC/EditorPersistent.vb @@ -162,6 +162,13 @@ Partial Public Class MainWindow XMLWritePlayerArguments(w, i) : Next .WriteEndElement() + .WriteStartElement("Total") + .WriteAttributeString("Option", TotalOption) + .WriteAttributeString("Multiplier", TotalMultiplier) + .WriteAttributeString("GlobalMultiplier", TotalGlobalMultiplier) + .WriteAttributeString("RecommendedTextDisplay", TotalRecommendedTextDisplay) + .WriteEndElement() + .WriteStartElement("KeyBindings") .WriteAttributeString("Count", UBound(Keybindings)) For i As Integer = 0 To UBound(Keybindings) @@ -544,6 +551,16 @@ Partial Public Class MainWindow Next End If + Dim eTotal As XmlElement = Root.Item("Total") + If eTotal IsNot Nothing Then + With eTotal + XMLLoadAttribute(.GetAttribute("Option"), TotalOption) + XMLLoadAttribute(.GetAttribute("Multiplier"), TotalMultiplier) + XMLLoadAttribute(.GetAttribute("GlobalMultiplier"), TotalGlobalMultiplier) + XMLLoadAttribute(.GetAttribute("RecommendedTextDisplay"), TotalRecommendedTextDisplay) + End With + End If + Dim eKeybindings As XmlElement = Root.Item("KeyBindings") If eKeybindings IsNot Nothing Then With eKeybindings diff --git a/iBMSC/MainWindow.designer.vb b/iBMSC/MainWindow.designer.vb index e155c61bc..40553d4b0 100644 --- a/iBMSC/MainWindow.designer.vb +++ b/iBMSC/MainWindow.designer.vb @@ -1330,7 +1330,7 @@ Partial Class MainWindow Me.TBMain.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.TBNew, Me.TBOpen, Me.TBSave, Me.ToolStripSeparator1, Me.TBCut, Me.TBCopy, Me.TBPaste, Me.TBFind, Me.ToolStripSeparator24, Me.TBStatistics, Me.POConvert, Me.TBMyO2, Me.ToolStripSeparator4, Me.TBErrorCheck, Me.TBPreviewOnClick, Me.TBShowFileName, Me.TBShowWaveform, Me.ToolStripSeparator8, Me.TBNTInput, Me.TBWavIncrease, Me.ToolStripSeparator2, Me.TBUndo, Me.TBRedo, Me.ToolStripSeparator5, Me.TBTimeSelect, Me.TBSelect, Me.TBWrite, Me.ToolStripSeparator3, Me.TBPlayB, Me.TBPlay, Me.TBStop, Me.TBPOptions, Me.ToolStripSeparator7, Me.TBGOptions, Me.TBKOptions, Me.TBVOptions, Me.TBLanguage, Me.TBTheme, Me.POBStorm, Me.TBTotalValue}) Me.TBMain.Location = New System.Drawing.Point(3, 23) Me.TBMain.Name = "TBMain" - Me.TBMain.Size = New System.Drawing.Size(810, 25) + Me.TBMain.Size = New System.Drawing.Size(993, 25) Me.TBMain.TabIndex = 64 Me.TBMain.Text = "Main Toolbar" ' @@ -1722,8 +1722,8 @@ Partial Class MainWindow 'TBTotalValue ' Me.TBTotalValue.Name = "TBTotalValue" - Me.TBTotalValue.Size = New System.Drawing.Size(13, 22) - Me.TBTotalValue.Text = "0" + Me.TBTotalValue.Size = New System.Drawing.Size(142, 22) + Me.TBTotalValue.Text = "Recommended #TOTAL: 0" ' 'pStatus ' diff --git a/iBMSC/MainWindow.vb b/iBMSC/MainWindow.vb index b6e0283e6..0adfdd4e4 100644 --- a/iBMSC/MainWindow.vb +++ b/iBMSC/MainWindow.vb @@ -380,6 +380,12 @@ Public Class MainWindow Dim spMain() As Panel = {} + '----#TOTAL Options + Dim TotalOption As Integer = 0 + Dim TotalMultiplier As Double = 0.25 + Dim TotalGlobalMultiplier As Double = 1 + Dim TotalRecommendedTextDisplay As Boolean = True + '----Find Delete Replace Options Dim fdriMesL As Integer Dim fdriMesU As Integer @@ -2699,7 +2705,16 @@ StartCount: If Not NTInput Then Next End If - TBTotalValue.Text = Math.Round(xIAll * 7.605 / (0.01 * xIAll + 6.5), 2) + Dim TotalValue As Double + Select Case TotalOption + Case 0 + TotalValue = Math.Round(xIAll * 7.605 / (0.01 * xIAll + 6.5), 2) * TotalGlobalMultiplier + Case 1 + TotalValue = IIf(xIAll < 400, 200 + xIAll / 5, IIf(xIAll < 600, 280 + (xIAll - 400) / 2.5, 360 + (xIAll - 600) / 5)) * TotalGlobalMultiplier + Case 2 + TotalValue = xIAll * TotalMultiplier * TotalGlobalMultiplier + End Select + TBTotalValue.Text = IIf(TotalRecommendedTextDisplay, "Recommended #TOTAL: ", "") & Str(TotalValue) TBStatistics.Text = xIAll End Sub @@ -3826,6 +3841,29 @@ RestartSorting: xSorted = False Next End Sub + Private Sub TBTotalValue_Click(sender As Object, e As EventArgs) Handles TBTotalValue.Click + Dim xDiag As New OpTotal(TBStatistics.Text, TotalOption, TotalMultiplier, TotalGlobalMultiplier, TotalRecommendedTextDisplay) + If xDiag.ShowDialog() = Windows.Forms.DialogResult.OK Then + With xDiag + TotalOption = .TotalOption + TotalMultiplier = .TMultiplier.Text + TotalGlobalMultiplier = .TGlobalMultiplier.Text + TotalRecommendedTextDisplay = .CBDisplayText.Checked + End With + + Dim N As Integer = TBStatistics.Text + Dim TotalValue As Double + Select Case TotalOption + Case 0 + TotalValue = Math.Round(N * 7.605 / (0.01 * N + 6.5), 2) * TotalGlobalMultiplier + Case 1 + TotalValue = IIf(N < 400, 200 + N / 5, IIf(N < 600, 280 + (N - 400) / 2.5, 360 + (N - 600) / 5)) * TotalGlobalMultiplier + Case 2 + TotalValue = N * TotalMultiplier * TotalGlobalMultiplier + End Select + TBTotalValue.Text = IIf(TotalRecommendedTextDisplay, "Recommended #TOTAL: ", "") & Str(TotalValue) + End If + End Sub Private Sub UpdateColumnsX() column(0).Left = 0 diff --git a/iBMSC/My Project/AssemblyInfo.vb b/iBMSC/My Project/AssemblyInfo.vb index de2b10d25..1bf6dd786 100644 --- a/iBMSC/My Project/AssemblyInfo.vb +++ b/iBMSC/My Project/AssemblyInfo.vb @@ -33,7 +33,7 @@ Imports System.Runtime.InteropServices ' by using the '*' as shown below: ' - - + + \ No newline at end of file diff --git a/iBMSC/Option Windows/OpTotal.Designer.vb b/iBMSC/Option Windows/OpTotal.Designer.vb new file mode 100644 index 000000000..5ccb65d84 --- /dev/null +++ b/iBMSC/Option Windows/OpTotal.Designer.vb @@ -0,0 +1,423 @@ + _ +Partial Class OpTotal + Inherits System.Windows.Forms.Form + + 'Form overrides dispose to clean up the component list. + _ + Protected Overrides Sub Dispose(ByVal disposing As Boolean) + Try + If disposing AndAlso components IsNot Nothing Then + components.Dispose() + End If + Finally + MyBase.Dispose(disposing) + End Try + End Sub + + 'Required by the Windows Form Designer + Private components As System.ComponentModel.IContainer + + 'NOTE: The following procedure is required by the Windows Form Designer + 'It can be modified using the Windows Form Designer. + 'Do not modify it using the code editor. + _ + Private Sub InitializeComponent() + Me.CTotalIIDX1 = New System.Windows.Forms.RadioButton() + Me.Label1 = New System.Windows.Forms.Label() + Me.CTotalIIDX2 = New System.Windows.Forms.RadioButton() + Me.TableLayoutPanel1 = New System.Windows.Forms.TableLayoutPanel() + Me.TableLayoutPanel4 = New System.Windows.Forms.TableLayoutPanel() + Me.Label9 = New System.Windows.Forms.Label() + Me.Label7 = New System.Windows.Forms.Label() + Me.Label10 = New System.Windows.Forms.Label() + Me.Label4 = New System.Windows.Forms.Label() + Me.Label3 = New System.Windows.Forms.Label() + Me.Label2 = New System.Windows.Forms.Label() + Me.CTotalMultiplier = New System.Windows.Forms.RadioButton() + Me.LTotalIIDX1 = New System.Windows.Forms.Label() + Me.LTotalIIDX2 = New System.Windows.Forms.Label() + Me.LTotalMultiplier = New System.Windows.Forms.Label() + Me.TMultiplier = New System.Windows.Forms.TextBox() + Me.Label6 = New System.Windows.Forms.Label() + Me.Label8 = New System.Windows.Forms.Label() + Me.TableLayoutPanel2 = New System.Windows.Forms.TableLayoutPanel() + Me.OK_Button = New System.Windows.Forms.Button() + Me.Cancel_Button = New System.Windows.Forms.Button() + Me.CBDisplayText = New System.Windows.Forms.CheckBox() + Me.TableLayoutPanel3 = New System.Windows.Forms.TableLayoutPanel() + Me.TGlobalMultiplier = New System.Windows.Forms.TextBox() + Me.Label5 = New System.Windows.Forms.Label() + Me.TableLayoutPanel1.SuspendLayout() + Me.TableLayoutPanel4.SuspendLayout() + Me.TableLayoutPanel2.SuspendLayout() + Me.TableLayoutPanel3.SuspendLayout() + Me.SuspendLayout() + ' + 'CTotalIIDX1 + ' + Me.CTotalIIDX1.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.CTotalIIDX1.AutoSize = True + Me.CTotalIIDX1.Location = New System.Drawing.Point(4, 20) + Me.CTotalIIDX1.Name = "CTotalIIDX1" + Me.CTotalIIDX1.Size = New System.Drawing.Size(163, 19) + Me.CTotalIIDX1.TabIndex = 1 + Me.CTotalIIDX1.TabStop = True + Me.CTotalIIDX1.Text = "IIDX #TOTAL Supposition 1" + Me.CTotalIIDX1.UseVisualStyleBackColor = True + ' + 'Label1 + ' + Me.Label1.AutoSize = True + Me.Label1.Dock = System.Windows.Forms.DockStyle.Fill + Me.Label1.Location = New System.Drawing.Point(4, 1) + Me.Label1.Name = "Label1" + Me.Label1.Size = New System.Drawing.Size(163, 15) + Me.Label1.TabIndex = 0 + Me.Label1.Text = "#TOTAL Calculation Option" + Me.Label1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter + ' + 'CTotalIIDX2 + ' + Me.CTotalIIDX2.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.CTotalIIDX2.AutoSize = True + Me.CTotalIIDX2.Location = New System.Drawing.Point(4, 46) + Me.CTotalIIDX2.Name = "CTotalIIDX2" + Me.CTotalIIDX2.Size = New System.Drawing.Size(163, 60) + Me.CTotalIIDX2.TabIndex = 2 + Me.CTotalIIDX2.TabStop = True + Me.CTotalIIDX2.Text = "IIDX #TOTAL Supposition 2" + Me.CTotalIIDX2.UseVisualStyleBackColor = True + ' + 'TableLayoutPanel1 + ' + Me.TableLayoutPanel1.CellBorderStyle = System.Windows.Forms.TableLayoutPanelCellBorderStyle.[Single] + Me.TableLayoutPanel1.ColumnCount = 4 + Me.TableLayoutPanel1.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle()) + Me.TableLayoutPanel1.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle()) + Me.TableLayoutPanel1.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle()) + Me.TableLayoutPanel1.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle()) + Me.TableLayoutPanel1.Controls.Add(Me.TableLayoutPanel4, 3, 2) + Me.TableLayoutPanel1.Controls.Add(Me.Label4, 3, 0) + Me.TableLayoutPanel1.Controls.Add(Me.Label3, 2, 0) + Me.TableLayoutPanel1.Controls.Add(Me.Label2, 1, 0) + Me.TableLayoutPanel1.Controls.Add(Me.CTotalIIDX1, 0, 1) + Me.TableLayoutPanel1.Controls.Add(Me.CTotalIIDX2, 0, 2) + Me.TableLayoutPanel1.Controls.Add(Me.CTotalMultiplier, 0, 3) + Me.TableLayoutPanel1.Controls.Add(Me.Label1, 0, 0) + Me.TableLayoutPanel1.Controls.Add(Me.LTotalIIDX1, 2, 1) + Me.TableLayoutPanel1.Controls.Add(Me.LTotalIIDX2, 2, 2) + Me.TableLayoutPanel1.Controls.Add(Me.LTotalMultiplier, 2, 3) + Me.TableLayoutPanel1.Controls.Add(Me.TMultiplier, 1, 3) + Me.TableLayoutPanel1.Controls.Add(Me.Label6, 3, 1) + Me.TableLayoutPanel1.Controls.Add(Me.Label8, 3, 3) + Me.TableLayoutPanel1.Location = New System.Drawing.Point(12, 12) + 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()) + Me.TableLayoutPanel1.RowStyles.Add(New System.Windows.Forms.RowStyle()) + Me.TableLayoutPanel1.RowStyles.Add(New System.Windows.Forms.RowStyle()) + Me.TableLayoutPanel1.Size = New System.Drawing.Size(570, 140) + Me.TableLayoutPanel1.TabIndex = 0 + ' + 'TableLayoutPanel4 + ' + Me.TableLayoutPanel4.AutoSize = True + Me.TableLayoutPanel4.ColumnCount = 1 + Me.TableLayoutPanel4.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle()) + Me.TableLayoutPanel4.Controls.Add(Me.Label9, 0, 2) + Me.TableLayoutPanel4.Controls.Add(Me.Label7, 0, 0) + Me.TableLayoutPanel4.Controls.Add(Me.Label10, 0, 1) + Me.TableLayoutPanel4.Location = New System.Drawing.Point(346, 46) + Me.TableLayoutPanel4.Name = "TableLayoutPanel4" + Me.TableLayoutPanel4.RowCount = 3 + Me.TableLayoutPanel4.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20.0!)) + Me.TableLayoutPanel4.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20.0!)) + Me.TableLayoutPanel4.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20.0!)) + Me.TableLayoutPanel4.Size = New System.Drawing.Size(219, 60) + Me.TableLayoutPanel4.TabIndex = 113 + ' + 'Label9 + ' + Me.Label9.AutoSize = True + Me.Label9.Dock = System.Windows.Forms.DockStyle.Fill + Me.Label9.Location = New System.Drawing.Point(3, 40) + Me.Label9.Name = "Label9" + Me.Label9.Size = New System.Drawing.Size(213, 20) + Me.Label9.TabIndex = 13 + Me.Label9.Text = "Notes > 600 ? 360 + (Notes - 600) / 5" + Me.Label9.TextAlign = System.Drawing.ContentAlignment.MiddleLeft + ' + 'Label7 + ' + Me.Label7.AutoSize = True + Me.Label7.Dock = System.Windows.Forms.DockStyle.Fill + Me.Label7.Location = New System.Drawing.Point(3, 0) + Me.Label7.Name = "Label7" + Me.Label7.Size = New System.Drawing.Size(213, 20) + Me.Label7.TabIndex = 12 + Me.Label7.Text = "Notes < 400 ? 200 + Notes / 5 :" + Me.Label7.TextAlign = System.Drawing.ContentAlignment.MiddleLeft + ' + 'Label10 + ' + Me.Label10.AutoSize = True + Me.Label10.Dock = System.Windows.Forms.DockStyle.Fill + Me.Label10.Location = New System.Drawing.Point(3, 20) + Me.Label10.Name = "Label10" + Me.Label10.Size = New System.Drawing.Size(213, 20) + Me.Label10.TabIndex = 12 + Me.Label10.Text = "Notes < 600 ? 280 + (Notes - 400) / 2.5 :" + Me.Label10.TextAlign = System.Drawing.ContentAlignment.MiddleLeft + ' + 'Label4 + ' + Me.Label4.AutoSize = True + Me.Label4.Dock = System.Windows.Forms.DockStyle.Fill + Me.Label4.Location = New System.Drawing.Point(346, 1) + Me.Label4.Name = "Label4" + Me.Label4.Size = New System.Drawing.Size(220, 15) + Me.Label4.TabIndex = 4 + Me.Label4.Text = "Calculation Formula" + Me.Label4.TextAlign = System.Drawing.ContentAlignment.MiddleCenter + ' + 'Label3 + ' + Me.Label3.AutoSize = True + Me.Label3.Dock = System.Windows.Forms.DockStyle.Fill + Me.Label3.Location = New System.Drawing.Point(281, 1) + Me.Label3.Name = "Label3" + Me.Label3.Size = New System.Drawing.Size(58, 15) + Me.Label3.TabIndex = 3 + Me.Label3.Text = "#TOTAL" + Me.Label3.TextAlign = System.Drawing.ContentAlignment.MiddleCenter + ' + 'Label2 + ' + Me.Label2.AutoSize = True + Me.Label2.Dock = System.Windows.Forms.DockStyle.Fill + Me.Label2.Location = New System.Drawing.Point(174, 1) + Me.Label2.Name = "Label2" + Me.Label2.Size = New System.Drawing.Size(100, 15) + Me.Label2.TabIndex = 2 + Me.Label2.Text = "Parameters" + Me.Label2.TextAlign = System.Drawing.ContentAlignment.MiddleCenter + ' + 'CTotalMultiplier + ' + Me.CTotalMultiplier.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.CTotalMultiplier.AutoSize = True + Me.CTotalMultiplier.Location = New System.Drawing.Point(4, 113) + Me.CTotalMultiplier.Name = "CTotalMultiplier" + Me.CTotalMultiplier.Size = New System.Drawing.Size(163, 23) + Me.CTotalMultiplier.TabIndex = 3 + Me.CTotalMultiplier.TabStop = True + Me.CTotalMultiplier.Text = "Multiplier" + Me.CTotalMultiplier.UseVisualStyleBackColor = True + ' + 'LTotalIIDX1 + ' + Me.LTotalIIDX1.AutoSize = True + Me.LTotalIIDX1.Dock = System.Windows.Forms.DockStyle.Fill + Me.LTotalIIDX1.Location = New System.Drawing.Point(281, 17) + Me.LTotalIIDX1.Name = "LTotalIIDX1" + Me.LTotalIIDX1.Size = New System.Drawing.Size(58, 25) + Me.LTotalIIDX1.TabIndex = 7 + Me.LTotalIIDX1.Text = "IIDX 1" + Me.LTotalIIDX1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter + ' + 'LTotalIIDX2 + ' + Me.LTotalIIDX2.AutoSize = True + Me.LTotalIIDX2.Dock = System.Windows.Forms.DockStyle.Fill + Me.LTotalIIDX2.Location = New System.Drawing.Point(281, 43) + Me.LTotalIIDX2.Name = "LTotalIIDX2" + Me.LTotalIIDX2.Size = New System.Drawing.Size(58, 66) + Me.LTotalIIDX2.TabIndex = 8 + Me.LTotalIIDX2.Text = "IIDX 2" + Me.LTotalIIDX2.TextAlign = System.Drawing.ContentAlignment.MiddleCenter + ' + 'LTotalMultiplier + ' + Me.LTotalMultiplier.AutoSize = True + Me.LTotalMultiplier.Dock = System.Windows.Forms.DockStyle.Fill + Me.LTotalMultiplier.Location = New System.Drawing.Point(281, 110) + Me.LTotalMultiplier.Name = "LTotalMultiplier" + Me.LTotalMultiplier.Size = New System.Drawing.Size(58, 29) + Me.LTotalMultiplier.TabIndex = 9 + Me.LTotalMultiplier.Text = "Multiplier" + Me.LTotalMultiplier.TextAlign = System.Drawing.ContentAlignment.MiddleCenter + ' + 'TMultiplier + ' + Me.TMultiplier.Location = New System.Drawing.Point(174, 113) + Me.TMultiplier.Name = "TMultiplier" + Me.TMultiplier.Size = New System.Drawing.Size(100, 23) + Me.TMultiplier.TabIndex = 6 + Me.TMultiplier.Text = "0.25" + ' + 'Label6 + ' + Me.Label6.AutoSize = True + Me.Label6.Dock = System.Windows.Forms.DockStyle.Fill + Me.Label6.Location = New System.Drawing.Point(346, 17) + Me.Label6.Name = "Label6" + Me.Label6.Size = New System.Drawing.Size(220, 25) + Me.Label6.TabIndex = 10 + Me.Label6.Text = "7.605 * Notes / (0.01 * Notes + 6.5)" + Me.Label6.TextAlign = System.Drawing.ContentAlignment.MiddleLeft + ' + 'Label8 + ' + Me.Label8.AutoSize = True + Me.Label8.Dock = System.Windows.Forms.DockStyle.Fill + Me.Label8.Location = New System.Drawing.Point(346, 110) + Me.Label8.Name = "Label8" + Me.Label8.Size = New System.Drawing.Size(220, 29) + Me.Label8.TabIndex = 12 + Me.Label8.Text = "Notes * Multiplier" + Me.Label8.TextAlign = System.Drawing.ContentAlignment.MiddleLeft + ' + 'TableLayoutPanel2 + ' + Me.TableLayoutPanel2.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) + Me.TableLayoutPanel2.ColumnCount = 2 + Me.TableLayoutPanel2.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50.0!)) + Me.TableLayoutPanel2.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50.0!)) + Me.TableLayoutPanel2.Controls.Add(Me.OK_Button, 0, 0) + Me.TableLayoutPanel2.Controls.Add(Me.Cancel_Button, 1, 0) + Me.TableLayoutPanel2.Location = New System.Drawing.Point(418, 180) + Me.TableLayoutPanel2.Name = "TableLayoutPanel2" + Me.TableLayoutPanel2.RowCount = 1 + Me.TableLayoutPanel2.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50.0!)) + Me.TableLayoutPanel2.Size = New System.Drawing.Size(170, 33) + Me.TableLayoutPanel2.TabIndex = 100 + ' + 'OK_Button + ' + Me.OK_Button.Anchor = System.Windows.Forms.AnchorStyles.None + Me.OK_Button.Location = New System.Drawing.Point(3, 3) + Me.OK_Button.Name = "OK_Button" + Me.OK_Button.Size = New System.Drawing.Size(78, 27) + Me.OK_Button.TabIndex = 0 + Me.OK_Button.Text = "OK" + ' + 'Cancel_Button + ' + Me.Cancel_Button.Anchor = System.Windows.Forms.AnchorStyles.None + Me.Cancel_Button.DialogResult = System.Windows.Forms.DialogResult.Cancel + Me.Cancel_Button.Location = New System.Drawing.Point(88, 3) + Me.Cancel_Button.Name = "Cancel_Button" + Me.Cancel_Button.Size = New System.Drawing.Size(78, 27) + Me.Cancel_Button.TabIndex = 1 + Me.Cancel_Button.Text = "Cancel" + ' + 'CBDisplayText + ' + Me.CBDisplayText.AutoSize = True + Me.CBDisplayText.Checked = True + Me.CBDisplayText.CheckState = System.Windows.Forms.CheckState.Checked + Me.CBDisplayText.Location = New System.Drawing.Point(186, 158) + Me.CBDisplayText.Name = "CBDisplayText" + Me.CBDisplayText.Size = New System.Drawing.Size(200, 19) + Me.CBDisplayText.TabIndex = 2 + Me.CBDisplayText.Text = "Display ""Recommended #TOTAL""" + Me.CBDisplayText.UseVisualStyleBackColor = True + ' + 'TableLayoutPanel3 + ' + Me.TableLayoutPanel3.ColumnCount = 2 + Me.TableLayoutPanel3.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle()) + Me.TableLayoutPanel3.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100.0!)) + Me.TableLayoutPanel3.Controls.Add(Me.TGlobalMultiplier, 1, 0) + Me.TableLayoutPanel3.Controls.Add(Me.Label5, 0, 0) + Me.TableLayoutPanel3.Location = New System.Drawing.Point(12, 158) + Me.TableLayoutPanel3.Name = "TableLayoutPanel3" + Me.TableLayoutPanel3.RowCount = 1 + Me.TableLayoutPanel3.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100.0!)) + Me.TableLayoutPanel3.Size = New System.Drawing.Size(167, 28) + Me.TableLayoutPanel3.TabIndex = 1 + ' + 'TGlobalMultiplier + ' + Me.TGlobalMultiplier.Dock = System.Windows.Forms.DockStyle.Fill + Me.TGlobalMultiplier.Location = New System.Drawing.Point(104, 3) + Me.TGlobalMultiplier.Name = "TGlobalMultiplier" + Me.TGlobalMultiplier.Size = New System.Drawing.Size(60, 23) + Me.TGlobalMultiplier.TabIndex = 1 + Me.TGlobalMultiplier.Text = "1.0" + ' + 'Label5 + ' + Me.Label5.AutoSize = True + Me.Label5.Dock = System.Windows.Forms.DockStyle.Fill + Me.Label5.Location = New System.Drawing.Point(3, 0) + Me.Label5.Name = "Label5" + Me.Label5.Size = New System.Drawing.Size(95, 28) + Me.Label5.TabIndex = 0 + Me.Label5.Text = "Global Multiplier" + Me.Label5.TextAlign = System.Drawing.ContentAlignment.MiddleLeft + ' + 'OpTotal + ' + Me.AcceptButton = Me.OK_Button + Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None + Me.CancelButton = Me.Cancel_Button + Me.ClientSize = New System.Drawing.Size(600, 225) + Me.Controls.Add(Me.TableLayoutPanel3) + Me.Controls.Add(Me.CBDisplayText) + Me.Controls.Add(Me.TableLayoutPanel2) + Me.Controls.Add(Me.TableLayoutPanel1) + Me.Font = New System.Drawing.Font("Segoe UI", 9.0!) + Me.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog + Me.Margin = New System.Windows.Forms.Padding(4, 3, 4, 3) + Me.MaximizeBox = False + Me.MinimizeBox = False + Me.Name = "OpTotal" + Me.ShowInTaskbar = False + Me.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent + Me.Text = "#TOTAL Settings" + Me.TableLayoutPanel1.ResumeLayout(False) + Me.TableLayoutPanel1.PerformLayout() + Me.TableLayoutPanel4.ResumeLayout(False) + Me.TableLayoutPanel4.PerformLayout() + Me.TableLayoutPanel2.ResumeLayout(False) + Me.TableLayoutPanel3.ResumeLayout(False) + Me.TableLayoutPanel3.PerformLayout() + Me.ResumeLayout(False) + Me.PerformLayout() + + End Sub + + Friend WithEvents CTotalIIDX1 As RadioButton + Friend WithEvents Label1 As Label + Friend WithEvents CTotalIIDX2 As RadioButton + Friend WithEvents TableLayoutPanel1 As TableLayoutPanel + Friend WithEvents CTotalMultiplier As RadioButton + Friend WithEvents Label4 As Label + Friend WithEvents Label3 As Label + Friend WithEvents Label2 As Label + Friend WithEvents TableLayoutPanel2 As TableLayoutPanel + Friend WithEvents OK_Button As Button + Friend WithEvents Cancel_Button As Button + Friend WithEvents LTotalIIDX1 As Label + Friend WithEvents LTotalIIDX2 As Label + Friend WithEvents LTotalMultiplier As Label + Friend WithEvents CBDisplayText As CheckBox + Friend WithEvents TableLayoutPanel4 As TableLayoutPanel + Friend WithEvents Label9 As Label + Friend WithEvents Label7 As Label + Friend WithEvents Label10 As Label + Friend WithEvents TMultiplier As TextBox + Friend WithEvents Label6 As Label + Friend WithEvents Label8 As Label + Friend WithEvents TableLayoutPanel3 As TableLayoutPanel + Friend WithEvents TGlobalMultiplier As TextBox + Friend WithEvents Label5 As Label +End Class diff --git a/iBMSC/Option Windows/OpTotal.resx b/iBMSC/Option Windows/OpTotal.resx new file mode 100644 index 000000000..1af7de150 --- /dev/null +++ b/iBMSC/Option Windows/OpTotal.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/iBMSC/Option Windows/OpTotal.vb b/iBMSC/Option Windows/OpTotal.vb new file mode 100644 index 000000000..0e22f2071 --- /dev/null +++ b/iBMSC/Option Windows/OpTotal.vb @@ -0,0 +1,45 @@ +Public Class OpTotal + Dim NoteCount As Integer + Public TotalOption As Integer + Dim CTotalList() As RadioButton + + Public Sub New(ByVal xNoteCount As Integer, ByVal xTotalOption As Integer, ByVal xMultiplier As Double, ByVal xGlobalMultiplier As Double, ByVal xRecommendedTextDisplay As Boolean) + ' This call is required by the designer. + InitializeComponent() + + ' Add any initialization after the InitializeComponent() call. + CTotalList = {CTotalIIDX1, CTotalIIDX2, CTotalMultiplier} + NoteCount = xNoteCount + TotalOption = xTotalOption + TMultiplier.Text = xMultiplier + TGlobalMultiplier.Text = xGlobalMultiplier + CBDisplayText.Checked = xRecommendedTextDisplay + CTotalList(TotalOption).Checked = True + + CalculateTotal() + End Sub + + Private Sub OK_Button_Click(sender As Object, e As EventArgs) Handles OK_Button.Click + Me.DialogResult = System.Windows.Forms.DialogResult.OK + Me.Close() + End Sub + + Private Sub Cancel_Button_Click(sender As Object, e As EventArgs) Handles Cancel_Button.Click + Me.DialogResult = System.Windows.Forms.DialogResult.Cancel + Me.Close() + End Sub + + Private Sub CTotalIIDX1_Click(sender As Object, e As EventArgs) Handles CTotalIIDX1.Click, CTotalIIDX2.Click, CTotalMultiplier.Click + TotalOption = Array.IndexOf(Of RadioButton)(CTotalList, sender) + End Sub + + Private Sub TMultiplier_TextChanged(sender As Object, e As EventArgs) Handles TMultiplier.TextChanged, TGlobalMultiplier.TextChanged + CalculateTotal() + End Sub + + Private Sub CalculateTotal() + LTotalIIDX1.Text = Math.Round(NoteCount * 7.605 / (0.01 * NoteCount + 6.5) * Val(TGlobalMultiplier.Text), 3) + LTotalIIDX2.Text = Math.Round(IIf(NoteCount < 400, 200 + NoteCount / 5, IIf(NoteCount < 600, 280 + (NoteCount - 400) / 2.5, 360 + (NoteCount - 600) / 5)) * Val(TGlobalMultiplier.Text), 3) + LTotalMultiplier.Text = Math.Round(NoteCount * Val(TMultiplier.Text) * Val(TGlobalMultiplier.Text), 3) + End Sub +End Class \ No newline at end of file diff --git a/iBMSC/iBMSC.vbproj b/iBMSC/iBMSC.vbproj index 72c1a878d..4e7d70d3a 100644 --- a/iBMSC/iBMSC.vbproj +++ b/iBMSC/iBMSC.vbproj @@ -207,6 +207,12 @@ Form + + OpTotal.vb + + + Form + OpKeybinding.vb @@ -323,6 +329,9 @@ OpPlayer.vb + + OpTotal.vb + OpVisualOverride.vb From 17ba9fb35a4273cfe1e059845fb0cc4f0acb573e Mon Sep 17 00:00:00 2001 From: psyk2642 <60137590+psyk2642@users.noreply.github.com> Date: Tue, 12 Apr 2022 20:45:05 +0800 Subject: [PATCH 114/257] Keybinding Fix Re-added functionality of per-note assignment using the Shift key. --- iBMSC/PanelEvents.vb | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/iBMSC/PanelEvents.vb b/iBMSC/PanelEvents.vb index ac6c1a7d6..55566a304 100644 --- a/iBMSC/PanelEvents.vb +++ b/iBMSC/PanelEvents.vb @@ -312,7 +312,11 @@ Partial Public Class MainWindow Select k For Each keybind In keybindOptions - If keybind.Combo.Contains(Join(keyComboEvent, "+")) Then + Dim keyComboString = Join(keyComboEvent, "+") + ' To account for per-note assignment using shift + If P = CategorySP Or P = CategoryPMS Or P = CategoryDP Then keyComboString = keyComboString.Replace("Shift+", "") + + If keybind.Combo.Contains(keyComboString) Then keybindOptionName = keybind.OpName GoTo ExecuteKeybind End If From 36517fa3a49ed18e5659695b4621c2a405db8b25 Mon Sep 17 00:00:00 2001 From: psyk2642 <60137590+psyk2642@users.noreply.github.com> Date: Fri, 15 Apr 2022 14:54:46 +0800 Subject: [PATCH 115/257] Scrolling line when previewing note + Misc - Added a green line that scrolls when previewing note, and a red line that indicates the end of the sound. - Added Function GetVPositionFromTime for the preview lines to work. - Added an experimental feature to play highlighted notes in a sequence without opening an external player. Not optimized, will eat up a lot of RAM if a lot of notes are played. --- iBMSC/Audio.vb | 68 +++++++++++ iBMSC/MainWindow.designer.vb | 14 ++- iBMSC/MainWindow.resx | 8 +- iBMSC/MainWindow.vb | 194 +++++++++++++++++++++++++++++-- iBMSC/My Project/AssemblyInfo.vb | 4 +- iBMSC/PanelDraw.vb | 27 ++++- iBMSC/PanelEvents.vb | 20 +++- iBMSC/Waveform.vb | 11 +- 8 files changed, 320 insertions(+), 26 deletions(-) diff --git a/iBMSC/Audio.vb b/iBMSC/Audio.vb index 525791c73..42e3da8f2 100644 --- a/iBMSC/Audio.vb +++ b/iBMSC/Audio.vb @@ -70,6 +70,74 @@ Module Audio End Sub End Module +' P: Probably not the best way to duplicate it into a class +Public Class AudioC + Dim Output As WasapiOut + Dim Source As IWaveSource + Dim SupportedExt() As String = CodecFactory.Instance.GetSupportedFileExtensions() + + Public Sub Initialize() + Output = New WasapiOut() + CodecFactory.Instance.Register("ogg", New CodecFactoryEntry(Function(s) + Return New NVorbisSource(s).ToWaveSource() + End Function, ".ogg")) + SupportedExt = CodecFactory.Instance.GetSupportedFileExtensions() + End Sub + + Public Sub Finalized() + Output.Stop() + Output.Dispose() + Output = Nothing + End Sub + + Public Function CheckFilename(ByVal filename As String) As String + If File.Exists(filename) Then + Return filename + End If + + For Each ext In SupportedExt + If File.Exists(Path.ChangeExtension(filename, "." & ext)) Then Return Path.ChangeExtension(filename, "." & ext) + Next + Return filename + End Function + + Public Function GetSupportedExtensions(Optional appendStr As String = ".") + Dim Ext(UBound(SupportedExt)) As String + For i = 0 To UBound(SupportedExt) + Ext(i) = appendStr & SupportedExt(i) + Next + Return Ext + End Function + + Public Sub Play(ByVal filename As String) + If Source IsNot Nothing Then + Output.Stop() + Source.Dispose() + Source = Nothing + End If + + If filename Is "" Then + Return + End If + + Dim fn = CheckFilename(filename) + + ' P: How to catch without crashing + Try + Source = CodecFactory.Instance.GetCodec(fn) + Output.Initialize(Source) + Output.Play() + Catch ex As Exception + MsgBox("Error: " + ex.Message) + Exit Sub + End Try + End Sub + + Public Sub StopPlaying() + Output.Stop() + End Sub +End Class + Class NVorbisSource Implements CSCore.ISampleSource Dim _stream As Stream diff --git a/iBMSC/MainWindow.designer.vb b/iBMSC/MainWindow.designer.vb index 40553d4b0..a3c8f27a4 100644 --- a/iBMSC/MainWindow.designer.vb +++ b/iBMSC/MainWindow.designer.vb @@ -376,6 +376,8 @@ Partial Class MainWindow Me.Label6 = New System.Windows.Forms.Label() Me.POHeaderSwitch = New System.Windows.Forms.CheckBox() Me.POptionsScroll = New System.Windows.Forms.Panel() + Me.TimerInternalPlay = New System.Windows.Forms.Timer(Me.components) + Me.TimerPreviewNote = New System.Windows.Forms.Timer(Me.components) Me.cmnLanguage.SuspendLayout() Me.cmnTheme.SuspendLayout() Me.Menu1.SuspendLayout() @@ -1330,7 +1332,7 @@ Partial Class MainWindow Me.TBMain.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.TBNew, Me.TBOpen, Me.TBSave, Me.ToolStripSeparator1, Me.TBCut, Me.TBCopy, Me.TBPaste, Me.TBFind, Me.ToolStripSeparator24, Me.TBStatistics, Me.POConvert, Me.TBMyO2, Me.ToolStripSeparator4, Me.TBErrorCheck, Me.TBPreviewOnClick, Me.TBShowFileName, Me.TBShowWaveform, Me.ToolStripSeparator8, Me.TBNTInput, Me.TBWavIncrease, Me.ToolStripSeparator2, Me.TBUndo, Me.TBRedo, Me.ToolStripSeparator5, Me.TBTimeSelect, Me.TBSelect, Me.TBWrite, Me.ToolStripSeparator3, Me.TBPlayB, Me.TBPlay, Me.TBStop, Me.TBPOptions, Me.ToolStripSeparator7, Me.TBGOptions, Me.TBKOptions, Me.TBVOptions, Me.TBLanguage, Me.TBTheme, Me.POBStorm, Me.TBTotalValue}) Me.TBMain.Location = New System.Drawing.Point(3, 23) Me.TBMain.Name = "TBMain" - Me.TBMain.Size = New System.Drawing.Size(993, 25) + Me.TBMain.Size = New System.Drawing.Size(939, 25) Me.TBMain.TabIndex = 64 Me.TBMain.Text = "Main Toolbar" ' @@ -4229,6 +4231,14 @@ Partial Class MainWindow Me.POptionsScroll.Size = New System.Drawing.Size(200, 781) Me.POptionsScroll.TabIndex = 28 ' + 'TimerInternalPlay + ' + Me.TimerInternalPlay.Interval = 1 + ' + 'TimerPreviewNote + ' + Me.TimerPreviewNote.Interval = 1 + ' 'MainWindow ' Me.AllowDrop = True @@ -4714,4 +4724,6 @@ Partial Class MainWindow Friend WithEvents mnTechnicalErrorCheck As ToolStripMenuItem Friend WithEvents mnKOptions As ToolStripMenuItem Friend WithEvents TBKOptions As ToolStripButton + Friend WithEvents TimerInternalPlay As Timer + Friend WithEvents TimerPreviewNote As Timer End Class diff --git a/iBMSC/MainWindow.resx b/iBMSC/MainWindow.resx index d9a9371fc..a2ae3cf65 100644 --- a/iBMSC/MainWindow.resx +++ b/iBMSC/MainWindow.resx @@ -133,7 +133,7 @@ 266, 2 - 400, 47 + 395, 28 737, 2 @@ -196,6 +196,12 @@ 1240, 2 + + 1118, 34 + + + 1265, 33 + 65 diff --git a/iBMSC/MainWindow.vb b/iBMSC/MainWindow.vb index 0adfdd4e4..7fffa5d49 100644 --- a/iBMSC/MainWindow.vb +++ b/iBMSC/MainWindow.vb @@ -169,7 +169,6 @@ Public Class MainWindow Dim gXKeyMode As String = "SP" ' Determines from column width 7key mode, 9key mode or 14key mode Dim gXKeyCol() As Integer Dim wLWAV(1295) As WavSample - Public CustomKeybindingEnabled As Integer = 0 '----AutoSave Options Dim PreviousAutoSavedFileName As String = "" @@ -221,16 +220,19 @@ Public Class MainWindow '----Note Waveforms Structure WavSample - Public wWavL() As Single - Public wWavR() As Single - Public wSampleRate As Single + Public WavL() As Single + Public WavR() As Single + Public SampleRate As Single + Public Duration As Single Public Sub New(xWavL() As Single, xWavR() As Single, - xSampleRate As Integer) - wWavL = xWavL - wWavR = xWavR - wSampleRate = xSampleRate + xSampleRate As Integer, + xDuration As Single) + WavL = xWavL + WavR = xWavR + SampleRate = xSampleRate + Duration = xDuration End Sub End Structure @@ -329,7 +331,10 @@ Public Class MainWindow New Keybinding("Paste", "", {"Ctrl+V"}), New Keybinding("Select All", "Select all notes", {"Ctrl+A"}), New Keybinding("Select All with Hovered Note Label", "Select all notes with highlighted note label", {"Ctrl+Shift+A"}) + _ ' Experimental } + ' New Keybinding("TBPreviewHighlighted_Click", "*EXPERIMENTAL*", {"Shift+F4"}), + ' New Keybinding("GetVPositionFromTime", "*EXPERIMENTAL*", {"Shift+F2"}) Dim Keybindings() As Keybinding = KeybindingsInit.Clone '----Preview Options @@ -365,6 +370,13 @@ Public Class MainWindow Dim ClickStopPreview As Boolean = True Dim pTempFileNames() As String = {} + Dim InternalPlayNotes() As Note + Dim InternalPlayNoteIndex As Integer + Dim InternalPlayTimerStart As Long = 0 + Dim InternalPlayTimerEnd As Long = 0 + Dim InternalPlayTimerCount As Long = 0 + Dim InternalPlayWav(1295) As AudioC + '----Split Panel Options Dim PanelWidth() As Single = {0, 100, 0} Dim PanelHScroll() As Integer = {0, 0, 0} @@ -635,6 +647,7 @@ Public Class MainWindow Private Sub PreviewNote(ByVal xFileLocation As String, ByVal bStop As Boolean) If bStop Then Audio.StopPlaying() + TimerPreviewNote.Enabled = False End If Audio.Play(xFileLocation) End Sub @@ -2241,7 +2254,7 @@ EndSearch: Next For i = 0 To xLWAVIds.Count - 1 hWAV(xLWAVIds(i) + 1) = "" - wLWAV(xLWAVIds(i) + 1) = New WavSample({}, {}, 0) + wLWAV(xLWAVIds(i) + 1) = New WavSample({}, {}, 0, 0) LWAV.Items.Item(xLWAVIds(i)) = C10to36(xLWAVIds(i) + 1) & ": " Next If IsSaved Then SetIsSaved(False) @@ -2398,6 +2411,73 @@ EndSearch: ' Return Mid(pArgs(I), 1, InStr(pArgs(I), vbCrLf) - 1) 'End Function + Private Sub TBPreviewHighlighted_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) + ' Experimental feature. Not optimized, will eat up a lot of RAM if a lot of notes are played. + ' Keybinding disabled for this function. + + + If TimerInternalPlay.Enabled = True Then TimerInternalPlay.Enabled = False : Exit Sub + + ReDim InternalPlayNotes(UBound(Notes)) + Dim xI1 As Integer = -1 + For xI2 = 1 To UBound(Notes) + With Notes(xI2) + If .Selected AndAlso Not .Comment AndAlso IsColumnSound(.ColumnIndex) AndAlso hWAV(.Value / 10000) <> "" Then + xI1 += 1 + InternalPlayNotes(xI1) = Notes(xI2) + End If + End With + Next + ReDim Preserve InternalPlayNotes(xI1) + ' InternalPlayNotes = From Note In Notes Where Note.Selected AndAlso Not Note.Comment AndAlso IsColumnSound(Note.ColumnIndex) AndAlso hWAV(Note.Value / 10000) <> "" + ' Select Note + + If InternalPlayNotes.Count >= 100 Then + Dim xResult As MsgBoxResult = MsgBox("Warning: You're about to play a lot of notes." & vbCrLf & "This is not recommended as this function has not been fully developed." & vbCrLf & "Do you wish to continue?", MsgBoxStyle.YesNo) + If xResult = MsgBoxResult.No Then Exit Sub + End If + InternalPlayTimerStart = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds + InternalPlayTimerEnd = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds + + GetTimeFromVPosition(InternalPlayNotes(InternalPlayNotes.Count - 1).VPosition) - GetTimeFromVPosition(InternalPlayNotes(0).VPosition) + + wLWAV(InternalPlayNotes(InternalPlayNotes.Count - 1).Value / 10000).Duration + InternalPlayNoteIndex = 0 + TimerInternalPlay.Enabled = True + End Sub + + Private Sub TimerInternalPlay_Tick(sender As Object, e As EventArgs) Handles TimerInternalPlay.Tick + InternalPlayTimerCount = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds - InternalPlayTimerStart + InternalPlaySub() + End Sub + + Private Sub InternalPlaySub() + If InternalPlayNoteIndex > InternalPlayNotes.Length - 1 Then + Dim xIWL = InternalPlayNoteIndex - 1 + If InternalPlayTimerCount > GetTimeFromVPosition(InternalPlayNotes(xIWL).VPosition) - GetTimeFromVPosition(InternalPlayNotes(0).VPosition) + + wLWAV(InternalPlayNotes(xIWL).Value / 10000).Duration Then + TimerInternalPlay.Enabled = False + For i = 0 To UBound(InternalPlayWav) + If Not IsNothing(InternalPlayWav(i)) Then InternalPlayWav(i).Finalized() + Next + End If + + Exit Sub + End If + + Dim NoteTime = GetTimeFromVPosition(InternalPlayNotes(InternalPlayNoteIndex).VPosition) - GetTimeFromVPosition(InternalPlayNotes(0).VPosition) + If InternalPlayTimerCount / 1000 >= NoteTime Then + Dim xIW As Integer = InternalPlayNotes(InternalPlayNoteIndex).Value / 10000 + If xIW <= 0 Then xIW = 1 + If xIW >= 1296 Then xIW = 1295 + + Dim xFileLocation As String = IIf(ExcludeFileName(FileName) = "", InitPath, ExcludeFileName(FileName)) & "\" & hWAV(xIW) + InternalPlayWav(xIW) = New AudioC + InternalPlayWav(xIW).Initialize() + InternalPlayWav(xIW).Play(xFileLocation) + + InternalPlayNoteIndex += 1 + End If + End Sub + Private Function GetFileName(ByVal s As String) As String Dim fslash As Integer = InStrRev(s, "/") Dim bslash As Integer = InStrRev(s, "\") @@ -2432,6 +2512,7 @@ EndSearch: xArg = pArgs(CurrentPlayer) End Sub + Private Sub TBPlay_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBPlay.Click, mnPlay.Click 'Dim xStr() As String = Split(pArgs(CurrentPlayer), vbCrLf) Dim xArg As MainWindow.PlayerArguments = pArgs(CurrentPlayer) @@ -2895,6 +2976,94 @@ StartCount: If Not NTInput Then Return stop_contrib + bpm_contrib End Function + Private Function GetVPositionFromTime(ByVal Time As Double) As Double + Dim timing_notes = (From note In Notes + Where note.ColumnIndex = niBPM Or note.ColumnIndex = niSTOP + Group By Column = note.ColumnIndex + Into NoteGroups = Group).ToDictionary(Function(x) x.Column, Function(x) x.NoteGroups) + + Dim bpm_notes = timing_notes.Item(niBPM) + + Dim stop_notes As IEnumerable(Of Note) = Nothing + + If timing_notes.ContainsKey(niSTOP) Then + stop_notes = timing_notes.Item(niSTOP) + End If + + Dim stop_subtract_time As Double + Dim bpm_contrib_time As Double + Dim DurationVPos As Double + Dim remaining_time As Double = Time + + Dim VPos As Double = 0 + + For i = 0 To bpm_notes.Count() - 1 + If remaining_time = 0 Then Exit For + + Dim current_note = bpm_notes.ElementAt(i) + Dim notevpos = Math.Max(0, current_note.VPosition) + + ' Beats per second + Dim current_bps = 60 / (current_note.Value / 10000) + + ' Get duration from BPM notes first + If i + 1 <> bpm_notes.Count() Then + ' Get duration in seconds between this and next bpm notes + Dim next_note = bpm_notes.ElementAt(i + 1) + DurationVPos = next_note.VPosition - notevpos + bpm_contrib_time = current_bps * DurationVPos / 48 + + ' If remaining_time is out of range between current and next bpm_note + If bpm_contrib_time >= remaining_time Then + VPos += 48 * remaining_time / current_bps + remaining_time = 0 + Else + VPos += DurationVPos + remaining_time -= bpm_contrib_time + End If + Else + bpm_contrib_time = remaining_time + VPos += 48 * remaining_time / current_bps + remaining_time = 0 + End If + + If stop_notes Is Nothing Then Continue For + + Dim stops = From stp In stop_notes + Where stp.VPosition >= notevpos And + stp.VPosition < VPos + + Dim stop_contrib As Double = 0 + + For j = 0 To stops.Count() - 1 + ' Calculate time to subtract due to stop note + Dim current_stop_note = stops.ElementAt(j) + If current_stop_note.VPosition >= VPos Then Exit For + + stop_subtract_time = current_bps * current_stop_note.Value / 10000.0 / 48 + + ' If the stop note duration exceeds excess time from current calculation + If stop_subtract_time > remaining_time Then + ' Recalculate VPos from stop note VPos + Dim remaining_time_stop As Double = remaining_time + bpm_contrib_time - current_bps * (current_stop_note.VPosition - notevpos) / 48 - stop_contrib + remaining_time = 0 + VPos = current_stop_note.VPosition + ' If the stop note duration exceeds duration between stop note and specified time + If stop_subtract_time >= remaining_time_stop Then + Exit For + Else + remaining_time_stop -= stop_subtract_time + VPos += 48 * remaining_time_stop / current_bps + End If + Else + remaining_time -= stop_subtract_time + End If + stop_contrib += stop_subtract_time + Next + Next + Return VPos + End Function + Private Sub POBMirror_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles POBMirror.Click Dim xI1 As Integer Dim xI2 As Integer @@ -5742,4 +5911,11 @@ case2: Dim xI0 As Integer Loop hCOMNum = xI - 1 End Sub + + Private Sub TimerPreviewNote_Tick(sender As Object, e As EventArgs) Handles TimerPreviewNote.Tick + Dim TimeNow = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds + If TimeNow > InternalPlayTimerEnd Then TimerPreviewNote.Enabled = False + InternalPlayTimerCount = TimeNow - InternalPlayTimerStart + RefreshPanelAll() + End Sub End Class diff --git a/iBMSC/My Project/AssemblyInfo.vb b/iBMSC/My Project/AssemblyInfo.vb index 1bf6dd786..2f17337a2 100644 --- a/iBMSC/My Project/AssemblyInfo.vb +++ b/iBMSC/My Project/AssemblyInfo.vb @@ -33,7 +33,7 @@ Imports System.Runtime.InteropServices ' by using the '*' as shown below: ' - - + + \ No newline at end of file diff --git a/iBMSC/PanelDraw.vb b/iBMSC/PanelDraw.vb index f2e14e5d4..3d8a87285 100644 --- a/iBMSC/PanelDraw.vb +++ b/iBMSC/PanelDraw.vb @@ -70,6 +70,8 @@ Partial Public Class MainWindow 'WaveForm DrawWaveform(e1, xTHeight, xPanelHScroll, xVSR) + If TimerPreviewNote.Enabled Then DrawPlayLines(e1, xTHeight, xTWidth, xPanelHScroll, xPanelDisplacement) + 'K 'If Not K Is Nothing Then DrawNotes(e1, xTHeight, xPanelHScroll, xPanelDisplacement) @@ -486,9 +488,9 @@ Partial Public Class MainWindow Dim xnLeft = nLeft(Notes(xINote).ColumnIndex) Dim xColumnWidth As Integer = GetColumnWidth(Notes(xINote).ColumnIndex) - xwWavL = wLWAV(xINoteValue).wWavL - xwWavR = wLWAV(xINoteValue).wWavR - xwSampleRate = wLWAV(xINoteValue).wSampleRate + xwWavL = wLWAV(xINoteValue).WavL + xwWavR = wLWAV(xINoteValue).WavR + xwSampleRate = wLWAV(xINoteValue).SampleRate xwPosition = Notes(xINote).VPosition xwLeft = (HorizontalPositiontoDisplay(xnLeft, xHS) + HorizontalPositiontoDisplay(xnLeft + xColumnWidth, xHS)) / 2 End If @@ -862,4 +864,23 @@ Partial Public Class MainWindow End If Return xLabel End Function + + Private Sub DrawPlayLines(e1 As BufferedGraphics, xTHeight As Integer, xTHWidth As Integer, xHS As Integer, xVS As Integer) + If InternalPlayNotes Is Nothing Then Exit Sub + + Dim VPos As Double = GetVPositionFromTime(GetTimeFromVPosition(InternalPlayNotes(0).VPosition) + InternalPlayTimerCount / 1000) + Dim VPosEnd As Double = GetVPositionFromTime(GetTimeFromVPosition(InternalPlayNotes(0).VPosition) + wLWAV(InternalPlayNotes(0).Value / 10000).Duration) + ' VPosition to Panel height + Dim xTHTime As Integer = NoteRowToPanelHeight(VPos, xVS, xTHeight) + Dim xTHTimeEnd As Integer = NoteRowToPanelHeight(VPosEnd, xVS, xTHeight) + + ' Moving play line + Dim p = New Pen(Color.Green) + e1.Graphics.DrawLine(p, 0, xTHTime, xTHWidth, xTHTime) + + ' End line + Dim p2 = New Pen(Color.Red) + e1.Graphics.DrawLine(p2, 0, xTHTimeEnd, xTHWidth, xTHTimeEnd) + + End Sub End Class diff --git a/iBMSC/PanelEvents.vb b/iBMSC/PanelEvents.vb index 55566a304..d24452daa 100644 --- a/iBMSC/PanelEvents.vb +++ b/iBMSC/PanelEvents.vb @@ -407,6 +407,10 @@ ExecuteKeybind: mnSelectAll_Click(mnSelectAll, New EventArgs) Case "Select All with Hovered Note Label" If KMouseOver <> -1 Then SelectAllWithHoveredNoteLabel() + Case "TBPreviewHighlighted_Click" + TBPreviewHighlighted_Click(sender, New EventArgs) + Case "GetVPositionFromTime" + MsgBox("VPosition: " & GetVPositionFromTime(InputBox("Enter time"))) End Select PMainInMouseMove(sender) @@ -695,14 +699,20 @@ ExecuteKeybind: If ClickStopPreview Then PreviewNote("", True) 'My.Computer.Audio.Stop() If NoteIndex > 0 AndAlso PreviewOnClick AndAlso IsColumnSound(Notes(NoteIndex).ColumnIndex) AndAlso Not Notes(NoteIndex).Comment Then - Dim xI2 As Integer = Notes(NoteIndex).Value \ 10000 - If xI2 <= 0 Then xI2 = 1 - If xI2 >= 1296 Then xI2 = 1295 + Dim xIW As Integer = Notes(NoteIndex).Value \ 10000 + If xIW <= 0 Then xIW = 1 + If xIW >= 1296 Then xIW = 1295 - If Not hWAV(xI2) = "" Then ' AndAlso Path.GetExtension(hWAV(xI2)).ToLower = ".wav" Then - Dim xFileLocation As String = IIf(ExcludeFileName(FileName) = "", InitPath, ExcludeFileName(FileName)) & "\" & hWAV(xI2) + If Not hWAV(xIW) = "" Then ' AndAlso Path.GetExtension(hWAV(xI2)).ToLower = ".wav" Then + Dim xFileLocation As String = IIf(ExcludeFileName(FileName) = "", InitPath, ExcludeFileName(FileName)) & "\" & hWAV(xIW) If Not ClickStopPreview Then PreviewNote("", True) PreviewNote(xFileLocation, False) + + If wLWAV(xIW).Duration = 0 Then wLWAV(xIW) = LoadWaveForm(ExcludeFileName(FileName) & "\" & hWAV(xIW)) + TimerPreviewNote.Enabled = True + InternalPlayNotes = New Note() {Notes(NoteIndex)} + InternalPlayTimerStart = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds + InternalPlayTimerEnd = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds + CLng(wLWAV(xIW).Duration * 1000) End If End If End Sub diff --git a/iBMSC/Waveform.vb b/iBMSC/Waveform.vb index 1fab78c95..4d27e769d 100644 --- a/iBMSC/Waveform.vb +++ b/iBMSC/Waveform.vb @@ -26,9 +26,9 @@ Partial Public Class MainWindow InitPath = ExcludeFileName(xDWAV.FileName) Dim w As WavSample = LoadWaveForm(xDWAV.FileName) - wWavL = w.wWavL - wWavR = w.wWavR - wSampleRate = w.wSampleRate + wWavL = w.WavL + wWavR = w.WavR + wSampleRate = w.SampleRate RefreshPanelAll() TWFileName.Text = xDWAV.FileName @@ -51,7 +51,7 @@ Partial Public Class MainWindow Private Function LoadWaveForm(ByVal filepath As String) filepath = Audio.CheckFilename(filepath) - If Not System.IO.File.Exists(filepath) Then Return New WavSample({}, {}, 0) + If Not System.IO.File.Exists(filepath) Then Return New WavSample({}, {}, 0, 0) Dim src = CSCore.Codecs.CodecFactory.Instance.GetCodec(filepath) @@ -83,6 +83,7 @@ Partial Public Class MainWindow Exit For End If Next - Return New WavSample(wWavL, wWavR, src.WaveFormat.SampleRate) + Return New WavSample(wWavL, wWavR, src.WaveFormat.SampleRate, src.GetMilliseconds(src.Length) / 1000) + End Function End Class From 6a685fa36dae3c2541c085dc84e4e2f391fb5b2d Mon Sep 17 00:00:00 2001 From: psyk2642 <60137590+psyk2642@users.noreply.github.com> Date: Fri, 15 Apr 2022 21:18:24 +0800 Subject: [PATCH 116/257] TBPreviewHighlighted_Click Slight Update Will still eat up a lot of ram. --- iBMSC/MainWindow.vb | 31 +++++++++++++++++++------------ iBMSC/iBMSC.vbproj | 1 + 2 files changed, 20 insertions(+), 12 deletions(-) diff --git a/iBMSC/MainWindow.vb b/iBMSC/MainWindow.vb index 7fffa5d49..4989f2632 100644 --- a/iBMSC/MainWindow.vb +++ b/iBMSC/MainWindow.vb @@ -330,11 +330,11 @@ Public Class MainWindow New Keybinding("Copy", "", {"Ctrl+C"}), New Keybinding("Paste", "", {"Ctrl+V"}), New Keybinding("Select All", "Select all notes", {"Ctrl+A"}), - New Keybinding("Select All with Hovered Note Label", "Select all notes with highlighted note label", {"Ctrl+Shift+A"}) - _ ' Experimental + New Keybinding("Select All with Hovered Note Label", "Select all notes with highlighted note label", {"Ctrl+Shift+A"}), + _ ' Experimental + New Keybinding("TBPreviewHighlighted_Click", "*EXPERIMENTAL*", {"Shift+F4"}), + New Keybinding("GetVPositionFromTime", "*EXPERIMENTAL*", {"Shift+F2"}) } - ' New Keybinding("TBPreviewHighlighted_Click", "*EXPERIMENTAL*", {"Shift+F4"}), - ' New Keybinding("GetVPositionFromTime", "*EXPERIMENTAL*", {"Shift+F2"}) Dim Keybindings() As Keybinding = KeybindingsInit.Clone '----Preview Options @@ -2413,10 +2413,19 @@ EndSearch: Private Sub TBPreviewHighlighted_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) ' Experimental feature. Not optimized, will eat up a lot of RAM if a lot of notes are played. - ' Keybinding disabled for this function. + If TimerInternalPlay.Enabled = True Then + TimerInternalPlay.Enabled = False + For i = 1 To UBound(InternalPlayWav) + InternalPlayWav(i).Finalized() + Next + Exit Sub + End If - If TimerInternalPlay.Enabled = True Then TimerInternalPlay.Enabled = False : Exit Sub + For i = 1 To UBound(InternalPlayWav) + InternalPlayWav(i) = New AudioC + InternalPlayWav(i).Initialize() + Next ReDim InternalPlayNotes(UBound(Notes)) Dim xI1 As Integer = -1 @@ -2438,8 +2447,8 @@ EndSearch: End If InternalPlayTimerStart = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds InternalPlayTimerEnd = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds + - GetTimeFromVPosition(InternalPlayNotes(InternalPlayNotes.Count - 1).VPosition) - GetTimeFromVPosition(InternalPlayNotes(0).VPosition) + - wLWAV(InternalPlayNotes(InternalPlayNotes.Count - 1).Value / 10000).Duration + CLng((GetTimeFromVPosition(InternalPlayNotes(InternalPlayNotes.Count - 1).VPosition) - GetTimeFromVPosition(InternalPlayNotes(0).VPosition) + + wLWAV(InternalPlayNotes(InternalPlayNotes.Count - 1).Value / 10000).Duration) * 1000) InternalPlayNoteIndex = 0 TimerInternalPlay.Enabled = True End Sub @@ -2455,8 +2464,8 @@ EndSearch: If InternalPlayTimerCount > GetTimeFromVPosition(InternalPlayNotes(xIWL).VPosition) - GetTimeFromVPosition(InternalPlayNotes(0).VPosition) + wLWAV(InternalPlayNotes(xIWL).Value / 10000).Duration Then TimerInternalPlay.Enabled = False - For i = 0 To UBound(InternalPlayWav) - If Not IsNothing(InternalPlayWav(i)) Then InternalPlayWav(i).Finalized() + For i = 1 To UBound(InternalPlayWav) + InternalPlayWav(i).Finalized() Next End If @@ -2470,8 +2479,6 @@ EndSearch: If xIW >= 1296 Then xIW = 1295 Dim xFileLocation As String = IIf(ExcludeFileName(FileName) = "", InitPath, ExcludeFileName(FileName)) & "\" & hWAV(xIW) - InternalPlayWav(xIW) = New AudioC - InternalPlayWav(xIW).Initialize() InternalPlayWav(xIW).Play(xFileLocation) InternalPlayNoteIndex += 1 diff --git a/iBMSC/iBMSC.vbproj b/iBMSC/iBMSC.vbproj index 4e7d70d3a..7fb5a0faa 100644 --- a/iBMSC/iBMSC.vbproj +++ b/iBMSC/iBMSC.vbproj @@ -310,6 +310,7 @@ MainWindow.vb + Designer VbMyResourcesResXFileCodeGenerator From 4988ebc152827b53d3c2a1dcac95e4022474cb6f Mon Sep 17 00:00:00 2001 From: psyk2642 <60137590+psyk2642@users.noreply.github.com> Date: Fri, 15 Apr 2022 21:25:26 +0800 Subject: [PATCH 117/257] Update README.md --- README.md | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 64f378941..9c91b7444 100644 --- a/README.md +++ b/README.md @@ -22,7 +22,6 @@ Listed in the order added. ## Functionalities * Added Random, R-Random, S-Random and H-Random. Supports PMS as well. -* Added a display for recommended #TOTAL. * The application now saves the option "Disable Vertical Moves". * Changed the temporary bms file extension from .bms to .bmsc. * Added advanced statistics (Ctrl+Shift+T). @@ -43,6 +42,8 @@ Listed in the order added. * Added technical error check (Jack notes, impossible chords for PMS, and impossible scratches for DP). Not a toggle because running it live will severely reduce performance. Accessible via the Options tab or via Ctrl+Alt+E. * Added better support for all audio files (supported by CSCore + ogg). * Added support for rebinding keys. +* Added #TOTAL Options window to set a recommended #TOTAL value based on the selected calculation formula. +* Added lines to scroll along the panel while previewing a keysound and to indicate the keysound's end point. ## Keyboard shortcuts * Changed keybinding to allow note placement between D1 and D8: @@ -78,6 +79,7 @@ Listed in the order added. * Added shortcut for inserting/removing space with Time Selection Tool (Ctrl+Insert for measure only, Shift+Insert for notes only, and Ctrl+Shift+Insert for both) * Added shortcut for techincal error check (Ctrl+Alt+E by default) * Added shortcut for keybinding options (Shift+F10) +* Added experimental feature shortcuts (Preview highlighted notes - Shift+F4, Get VPosition from Time - Shift+F2) ## New dialog/option boxes @@ -97,4 +99,7 @@ Listed in the order added. ### Keybinding Options * Allows for rebinding keys for a lot of functions, such as note lane assignment. -* Some other functions are also rebindable, such as Snap to Grid, Undo, and Redo. \ No newline at end of file +* Some other functions are also rebindable, such as Snap to Grid, Undo, and Redo. + +### #TOTAL Options +* Allows you to set a recommended #TOTAL value based on either IIDX supposition 1, IIDX supposition 2, or a multiplier. \ No newline at end of file From 80dbfcb3d37377150a3b449ee707d099c2c10f62 Mon Sep 17 00:00:00 2001 From: psyk2642 <60137590+psyk2642@users.noreply.github.com> Date: Fri, 15 Apr 2022 22:12:27 +0800 Subject: [PATCH 118/257] Preview Sound Line Code Update --- iBMSC/MainWindow.vb | 8 +++----- iBMSC/PanelDraw.vb | 2 +- iBMSC/PanelEvents.vb | 2 +- iBMSC/Waveform.vb | 11 ++++++++++- 4 files changed, 15 insertions(+), 8 deletions(-) diff --git a/iBMSC/MainWindow.vb b/iBMSC/MainWindow.vb index 4989f2632..65018f249 100644 --- a/iBMSC/MainWindow.vb +++ b/iBMSC/MainWindow.vb @@ -2447,8 +2447,7 @@ EndSearch: End If InternalPlayTimerStart = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds InternalPlayTimerEnd = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds + - CLng((GetTimeFromVPosition(InternalPlayNotes(InternalPlayNotes.Count - 1).VPosition) - GetTimeFromVPosition(InternalPlayNotes(0).VPosition) + - wLWAV(InternalPlayNotes(InternalPlayNotes.Count - 1).Value / 10000).Duration) * 1000) + CLng((GetTimeFromVPosition(InternalPlayNotes(InternalPlayNotes.Count - 1).VPosition) - GetTimeFromVPosition(InternalPlayNotes(0).VPosition)) * 1000) InternalPlayNoteIndex = 0 TimerInternalPlay.Enabled = True End Sub @@ -2461,8 +2460,7 @@ EndSearch: Private Sub InternalPlaySub() If InternalPlayNoteIndex > InternalPlayNotes.Length - 1 Then Dim xIWL = InternalPlayNoteIndex - 1 - If InternalPlayTimerCount > GetTimeFromVPosition(InternalPlayNotes(xIWL).VPosition) - GetTimeFromVPosition(InternalPlayNotes(0).VPosition) + - wLWAV(InternalPlayNotes(xIWL).Value / 10000).Duration Then + If InternalPlayTimerCount > CLng((GetTimeFromVPosition(InternalPlayNotes(xIWL).VPosition) - GetTimeFromVPosition(InternalPlayNotes(0).VPosition)) * 1000) Then TimerInternalPlay.Enabled = False For i = 1 To UBound(InternalPlayWav) InternalPlayWav(i).Finalized() @@ -2473,7 +2471,7 @@ EndSearch: End If Dim NoteTime = GetTimeFromVPosition(InternalPlayNotes(InternalPlayNoteIndex).VPosition) - GetTimeFromVPosition(InternalPlayNotes(0).VPosition) - If InternalPlayTimerCount / 1000 >= NoteTime Then + If InternalPlayTimerCount >= CLng(NoteTime * 1000) Then Dim xIW As Integer = InternalPlayNotes(InternalPlayNoteIndex).Value / 10000 If xIW <= 0 Then xIW = 1 If xIW >= 1296 Then xIW = 1295 diff --git a/iBMSC/PanelDraw.vb b/iBMSC/PanelDraw.vb index 3d8a87285..7b05ff6c0 100644 --- a/iBMSC/PanelDraw.vb +++ b/iBMSC/PanelDraw.vb @@ -875,7 +875,7 @@ Partial Public Class MainWindow Dim xTHTimeEnd As Integer = NoteRowToPanelHeight(VPosEnd, xVS, xTHeight) ' Moving play line - Dim p = New Pen(Color.Green) + Dim p = New Pen(Color.SpringGreen) e1.Graphics.DrawLine(p, 0, xTHTime, xTHWidth, xTHTime) ' End line diff --git a/iBMSC/PanelEvents.vb b/iBMSC/PanelEvents.vb index d24452daa..6166bfa4f 100644 --- a/iBMSC/PanelEvents.vb +++ b/iBMSC/PanelEvents.vb @@ -708,7 +708,7 @@ ExecuteKeybind: If Not ClickStopPreview Then PreviewNote("", True) PreviewNote(xFileLocation, False) - If wLWAV(xIW).Duration = 0 Then wLWAV(xIW) = LoadWaveForm(ExcludeFileName(FileName) & "\" & hWAV(xIW)) + If wLWAV(xIW).Duration = 0 Then wLWAV(xIW) = LoadDuration(ExcludeFileName(FileName) & "\" & hWAV(xIW)) TimerPreviewNote.Enabled = True InternalPlayNotes = New Note() {Notes(NoteIndex)} InternalPlayTimerStart = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds diff --git a/iBMSC/Waveform.vb b/iBMSC/Waveform.vb index 4d27e769d..301e5a62c 100644 --- a/iBMSC/Waveform.vb +++ b/iBMSC/Waveform.vb @@ -83,7 +83,16 @@ Partial Public Class MainWindow Exit For End If Next - Return New WavSample(wWavL, wWavR, src.WaveFormat.SampleRate, src.GetMilliseconds(src.Length) / 1000) + Return New WavSample(wWavL, wWavR, src.WaveFormat.SampleRate, CSng(src.GetMilliseconds(src.Length) / 1000)) End Function + + Private Function LoadDuration(ByVal filepath As String) + filepath = Audio.CheckFilename(filepath) + If Not System.IO.File.Exists(filepath) Then Return 0 + + Dim src = CSCore.Codecs.CodecFactory.Instance.GetCodec(filepath) + + Return New WavSample(Nothing, Nothing, 0, CSng(src.GetMilliseconds(src.Length) / 1000)) + End Function End Class From a1e7b4e28c456f5c4948775383da20afe4e088c8 Mon Sep 17 00:00:00 2001 From: psyk2642 <60137590+psyk2642@users.noreply.github.com> Date: Fri, 15 Apr 2022 22:15:41 +0800 Subject: [PATCH 119/257] Update MainWindow.designer.vb --- iBMSC/MainWindow.designer.vb | 68 ++++++++++++++++++------------------ 1 file changed, 34 insertions(+), 34 deletions(-) diff --git a/iBMSC/MainWindow.designer.vb b/iBMSC/MainWindow.designer.vb index a3c8f27a4..b34304fce 100644 --- a/iBMSC/MainWindow.designer.vb +++ b/iBMSC/MainWindow.designer.vb @@ -25,16 +25,16 @@ Partial Class MainWindow Me.TBLangDef = New System.Windows.Forms.ToolStripMenuItem() Me.TBLangRefresh = New System.Windows.Forms.ToolStripMenuItem() Me.ToolStripSeparator9 = New System.Windows.Forms.ToolStripSeparator() - Me.mnLanguage = New System.Windows.Forms.ToolStripMenuItem() Me.TBLanguage = New System.Windows.Forms.ToolStripDropDownButton() + Me.mnLanguage = New System.Windows.Forms.ToolStripMenuItem() Me.cmnTheme = New System.Windows.Forms.ContextMenuStrip(Me.components) Me.TBThemeDef = New System.Windows.Forms.ToolStripMenuItem() Me.TBThemeSave = New System.Windows.Forms.ToolStripMenuItem() Me.TBThemeRefresh = New System.Windows.Forms.ToolStripMenuItem() Me.TBThemeLoadComptability = New System.Windows.Forms.ToolStripMenuItem() Me.ToolStripSeparator6 = New System.Windows.Forms.ToolStripSeparator() - Me.TBTheme = New System.Windows.Forms.ToolStripDropDownButton() Me.mnTheme = New System.Windows.Forms.ToolStripMenuItem() + Me.TBTheme = New System.Windows.Forms.ToolStripDropDownButton() Me.Timer1 = New System.Windows.Forms.Timer(Me.components) Me.Menu1 = New System.Windows.Forms.ContextMenuStrip(Me.components) Me.MInsert = New System.Windows.Forms.ToolStripMenuItem() @@ -129,11 +129,11 @@ Partial Class MainWindow Me.POBSRandom = New System.Windows.Forms.ToolStripMenuItem() Me.POBHRandom = New System.Windows.Forms.ToolStripMenuItem() Me.POBSort = New System.Windows.Forms.ToolStripMenuItem() - Me.POConvert = New System.Windows.Forms.ToolStripDropDownButton() Me.mnPreview = New System.Windows.Forms.ToolStripMenuItem() Me.mnPlayB = New System.Windows.Forms.ToolStripMenuItem() Me.mnPlay = New System.Windows.Forms.ToolStripMenuItem() Me.mnStop = New System.Windows.Forms.ToolStripMenuItem() + Me.POConvert = New System.Windows.Forms.ToolStripDropDownButton() Me.TBMain = New System.Windows.Forms.ToolStrip() Me.TBNew = New System.Windows.Forms.ToolStripButton() Me.TBOpen = New System.Windows.Forms.ToolStripSplitButton() @@ -462,7 +462,7 @@ Partial Class MainWindow ' Me.cmnLanguage.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.TBLangDef, Me.TBLangRefresh, Me.ToolStripSeparator9}) Me.cmnLanguage.Name = "cmnLanguage" - Me.cmnLanguage.OwnerItem = Me.TBLanguage + Me.cmnLanguage.OwnerItem = Me.mnLanguage Me.cmnLanguage.Size = New System.Drawing.Size(121, 54) ' 'TBLangDef @@ -483,14 +483,6 @@ Partial Class MainWindow Me.ToolStripSeparator9.Name = "ToolStripSeparator9" Me.ToolStripSeparator9.Size = New System.Drawing.Size(117, 6) ' - 'mnLanguage - ' - Me.mnLanguage.DropDown = Me.cmnLanguage - Me.mnLanguage.Image = Global.iBMSC.My.Resources.Resources.x16Language - Me.mnLanguage.Name = "mnLanguage" - Me.mnLanguage.Size = New System.Drawing.Size(253, 22) - Me.mnLanguage.Text = "&Language" - ' 'TBLanguage ' Me.TBLanguage.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image @@ -501,11 +493,19 @@ Partial Class MainWindow Me.TBLanguage.Size = New System.Drawing.Size(29, 22) Me.TBLanguage.Text = "Language" ' + 'mnLanguage + ' + Me.mnLanguage.DropDown = Me.cmnLanguage + Me.mnLanguage.Image = Global.iBMSC.My.Resources.Resources.x16Language + Me.mnLanguage.Name = "mnLanguage" + Me.mnLanguage.Size = New System.Drawing.Size(253, 22) + Me.mnLanguage.Text = "&Language" + ' 'cmnTheme ' Me.cmnTheme.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.TBThemeDef, Me.TBThemeSave, Me.TBThemeRefresh, Me.TBThemeLoadComptability, Me.ToolStripSeparator6}) Me.cmnTheme.Name = "cmnLanguage" - Me.cmnTheme.OwnerItem = Me.mnTheme + Me.cmnTheme.OwnerItem = Me.TBTheme Me.cmnTheme.Size = New System.Drawing.Size(246, 98) ' 'TBThemeDef @@ -539,6 +539,14 @@ Partial Class MainWindow Me.ToolStripSeparator6.Name = "ToolStripSeparator6" Me.ToolStripSeparator6.Size = New System.Drawing.Size(242, 6) ' + 'mnTheme + ' + Me.mnTheme.DropDown = Me.cmnTheme + Me.mnTheme.Image = Global.iBMSC.My.Resources.Resources.x16Theme + Me.mnTheme.Name = "mnTheme" + Me.mnTheme.Size = New System.Drawing.Size(253, 22) + Me.mnTheme.Text = "&Theme" + ' 'TBTheme ' Me.TBTheme.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image @@ -549,14 +557,6 @@ Partial Class MainWindow Me.TBTheme.Size = New System.Drawing.Size(29, 22) Me.TBTheme.Text = "Theme" ' - 'mnTheme - ' - Me.mnTheme.DropDown = Me.cmnTheme - Me.mnTheme.Image = Global.iBMSC.My.Resources.Resources.x16Theme - Me.mnTheme.Name = "mnTheme" - Me.mnTheme.Size = New System.Drawing.Size(253, 22) - Me.mnTheme.Text = "&Theme" - ' 'Timer1 ' Me.Timer1.Interval = 15 @@ -1170,7 +1170,7 @@ Partial Class MainWindow ' Me.cmnConversion.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.POBLong, Me.POBShort, Me.POBLongShort, Me.ToolStripSeparator10, Me.POBHidden, Me.POBVisible, Me.POBHiddenVisible, Me.ToolStripSeparator11, Me.POBModify, Me.POBMirror, Me.POBFlip, Me.POBRandom, Me.POBRRandom, Me.POBSRandom, Me.POBHRandom, Me.POBSort}) Me.cmnConversion.Name = "cmnLanguage" - Me.cmnConversion.OwnerItem = Me.mnConversion + Me.cmnConversion.OwnerItem = Me.POConvert Me.cmnConversion.Size = New System.Drawing.Size(222, 324) ' 'POBLong @@ -1283,16 +1283,6 @@ Partial Class MainWindow Me.POBSort.Size = New System.Drawing.Size(221, 22) Me.POBSort.Text = "S&ort" ' - 'POConvert - ' - Me.POConvert.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image - Me.POConvert.DropDown = Me.cmnConversion - Me.POConvert.Image = Global.iBMSC.My.Resources.Resources.ConvertNotes - Me.POConvert.ImageTransparentColor = System.Drawing.Color.Magenta - Me.POConvert.Name = "POConvert" - Me.POConvert.Size = New System.Drawing.Size(29, 22) - Me.POConvert.Text = "Convert Notes" - ' 'mnPreview ' Me.mnPreview.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.mnPlayB, Me.mnPlay, Me.mnStop}) @@ -1324,6 +1314,16 @@ Partial Class MainWindow Me.mnStop.Size = New System.Drawing.Size(201, 22) Me.mnStop.Text = "&Stop" ' + 'POConvert + ' + Me.POConvert.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image + Me.POConvert.DropDown = Me.cmnConversion + Me.POConvert.Image = Global.iBMSC.My.Resources.Resources.ConvertNotes + Me.POConvert.ImageTransparentColor = System.Drawing.Color.Magenta + Me.POConvert.Name = "POConvert" + Me.POConvert.Size = New System.Drawing.Size(29, 22) + Me.POConvert.Text = "Convert Notes" + ' 'TBMain ' Me.TBMain.AccessibleRole = System.Windows.Forms.AccessibleRole.ToolBar @@ -3000,7 +3000,7 @@ Partial Class MainWindow Me.TWPrecision.Name = "TWPrecision" Me.TWPrecision.Size = New System.Drawing.Size(43, 23) Me.TWPrecision.TabIndex = 507 - Me.TWPrecision.Value = New Decimal(New Integer() {5, 0, 0, 0}) + Me.TWPrecision.Value = New Decimal(New Integer() {1, 0, 0, 0}) ' 'PictureBox4 ' @@ -3125,7 +3125,7 @@ Partial Class MainWindow Me.TWPrecision2.Size = New System.Drawing.Size(107, 28) Me.TWPrecision2.TabIndex = 506 Me.TWPrecision2.TickFrequency = 5 - Me.TWPrecision2.Value = 5 + Me.TWPrecision2.Value = 1 ' 'POWaveFormExpander ' From 5c899fd3a6cdb673a7a2e3e41942ebdde1f46897 Mon Sep 17 00:00:00 2001 From: psyk2642 <60137590+psyk2642@users.noreply.github.com> Date: Fri, 15 Apr 2022 22:31:40 +0800 Subject: [PATCH 120/257] Update OpKeybinding.vb --- iBMSC/Option Windows/OpKeybinding.vb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/iBMSC/Option Windows/OpKeybinding.vb b/iBMSC/Option Windows/OpKeybinding.vb index 5df3cfe5f..4f12c0c2d 100644 --- a/iBMSC/Option Windows/OpKeybinding.vb +++ b/iBMSC/Option Windows/OpKeybinding.vb @@ -162,7 +162,7 @@ Public Class OpKeybinding End Sub Private Sub CheckConflictWithOtherKeybindings() - Dim CategoryToIgnore() As Integer = Nothing + Dim CategoryToIgnore() As Integer = {} ' TODO Select Case Keybinds(LVKeybinding.FocusedItem.Index).Category ' If note assignment option, check with each other in the same category From 0d87e8e5174fa672a23757a6e6f422e8f94463b9 Mon Sep 17 00:00:00 2001 From: psyk2642 <60137590+psyk2642@users.noreply.github.com> Date: Sat, 16 Apr 2022 17:47:12 +0800 Subject: [PATCH 121/257] Keybinding Code Update --- iBMSC/EditorPersistent.vb | 2 ++ iBMSC/MainWindow.vb | 50 +++++++++++++++++++++++---------------- 2 files changed, 31 insertions(+), 21 deletions(-) diff --git a/iBMSC/EditorPersistent.vb b/iBMSC/EditorPersistent.vb index d2b7ac77f..7e64d98af 100644 --- a/iBMSC/EditorPersistent.vb +++ b/iBMSC/EditorPersistent.vb @@ -295,6 +295,8 @@ Partial Public Class MainWindow XMLLoadAttribute(n.GetAttribute("Description"), Keybindings(i).Description) Keybindings(i).Combo = Split(n.GetAttribute("Combos"), ", ") XMLLoadAttribute(n.GetAttribute("Category"), Keybindings(i).Category) + + RenameShortcuts(Keybindings(i)) End Sub Private Sub XMLLoadColumn(ByVal n As XmlElement) diff --git a/iBMSC/MainWindow.vb b/iBMSC/MainWindow.vb index 65018f249..d087de913 100644 --- a/iBMSC/MainWindow.vb +++ b/iBMSC/MainWindow.vb @@ -2794,13 +2794,13 @@ StartCount: If Not NTInput Then Dim TotalValue As Double Select Case TotalOption Case 0 - TotalValue = Math.Round(xIAll * 7.605 / (0.01 * xIAll + 6.5), 2) * TotalGlobalMultiplier + TotalValue = xIAll * 7.605 / (0.01 * xIAll + 6.5) * TotalGlobalMultiplier Case 1 TotalValue = IIf(xIAll < 400, 200 + xIAll / 5, IIf(xIAll < 600, 280 + (xIAll - 400) / 2.5, 360 + (xIAll - 600) / 5)) * TotalGlobalMultiplier Case 2 TotalValue = xIAll * TotalMultiplier * TotalGlobalMultiplier End Select - TBTotalValue.Text = IIf(TotalRecommendedTextDisplay, "Recommended #TOTAL: ", "") & Str(TotalValue) + TBTotalValue.Text = IIf(TotalRecommendedTextDisplay, "Recommended #TOTAL: ", "") & Str(Math.Round(TotalValue, 3)) TBStatistics.Text = xIAll End Sub @@ -4135,25 +4135,7 @@ RestartSorting: xSorted = False ' Rename shortcutstrings For Each keybind In .Keybinds - Select Case keybind.OpName - Case "Undo" - mnUndo.ShortcutKeyDisplayString = keybind.Combo(0) - TBUndo.Text = "Undo (" & Join(keybind.Combo, ", ") & ")" - Case "Redo" - mnRedo.ShortcutKeyDisplayString = keybind.Combo(0) - TBRedo.Text = "Redo (" & Join(keybind.Combo, ", ") & ")" - Case "Cut" - mnCut.ShortcutKeyDisplayString = keybind.Combo(0) - TBCut.Text = "Cut (" & Join(keybind.Combo, ", ") & ")" - Case "Copy" - mnCopy.ShortcutKeyDisplayString = keybind.Combo(0) - TBCopy.Text = "Copy (" & Join(keybind.Combo, ", ") & ")" - Case "Paste" - mnPaste.ShortcutKeyDisplayString = keybind.Combo(0) - TBPaste.Text = "Paste (" & Join(keybind.Combo, ", ") & ")" - Case "Select All" - mnSelectAll.ShortcutKeyDisplayString = keybind.Combo(0) - End Select + RenameShortcuts(keybind) Next End With End If @@ -4162,6 +4144,32 @@ RestartSorting: xSorted = False End Try End Sub + Private Sub RenameShortcuts(ByVal keybind As Keybinding) + Select Case keybind.OpName + Case "Snap to Grid" + CGSnap.Text = "Snap to grid (" & keybind.Combo(0) & ")" + Case "Disable Vertical Moves" + CGDisableVertical.Text = "Disable vertical moves (" & keybind.Combo(0) & ")" + Case "Undo" + mnUndo.ShortcutKeyDisplayString = keybind.Combo(0) + TBUndo.Text = "Undo (" & Join(keybind.Combo, ", ") & ")" + Case "Redo" + mnRedo.ShortcutKeyDisplayString = keybind.Combo(0) + TBRedo.Text = "Redo (" & Join(keybind.Combo, ", ") & ")" + Case "Cut" + mnCut.ShortcutKeyDisplayString = keybind.Combo(0) + TBCut.Text = "Cut (" & Join(keybind.Combo, ", ") & ")" + Case "Copy" + mnCopy.ShortcutKeyDisplayString = keybind.Combo(0) + TBCopy.Text = "Copy (" & Join(keybind.Combo, ", ") & ")" + Case "Paste" + mnPaste.ShortcutKeyDisplayString = keybind.Combo(0) + TBPaste.Text = "Paste (" & Join(keybind.Combo, ", ") & ")" + Case "Select All" + mnSelectAll.ShortcutKeyDisplayString = keybind.Combo(0) + End Select + End Sub + Private Sub POBLong_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles POBLong.Click If NTInput Then Exit Sub From d825658861bf235002e8eff5409bf60278d1d044 Mon Sep 17 00:00:00 2001 From: psyk2642 <60137590+psyk2642@users.noreply.github.com> Date: Mon, 18 Apr 2022 22:43:06 +0800 Subject: [PATCH 122/257] Squashed commit of the following: commit aec7cf84e2931782916d5da072ee4c04f320c6c6 Author: psyk2642 <60137590+psyk2642@users.noreply.github.com> Date: Mon Apr 18 22:30:26 2022 +0800 Option Strict On + Code Optimization Background stuff. --- iBMSC/ApplicationEvents.vb | 10 +- iBMSC/Audio.vb | 8 +- iBMSC/ChartIO.vb | 157 +- iBMSC/Column.vb | 8 +- iBMSC/Dialogs/ColorPicker.vb | 170 +- ...iagFind.Designer.vb => dgFind.designer.vb} | 1758 ++++++++--------- iBMSC/Dialogs/{diagFind.resx => dgFind.resx} | 0 iBMSC/Dialogs/dgFind.vb | 155 ++ iBMSC/Dialogs/dgMyO2.vb | 18 +- iBMSC/Dialogs/dgStatistics.vb | 4 +- iBMSC/Dialogs/dgStatisticsLegacy.vb | 2 +- iBMSC/Dialogs/diagFind.vb | 316 --- iBMSC/EditorColumns.vb | 4 +- iBMSC/EditorPersistent.vb | 414 ++-- iBMSC/EditorRecent.vb | 4 +- iBMSC/EditorUndoRedo.vb | 59 +- iBMSC/MainWindow.vb | 866 ++++---- iBMSC/MyO2.vb | 24 +- iBMSC/Option Windows/Note.vb | 22 +- iBMSC/Option Windows/OpExpand.vb | 12 +- iBMSC/Option Windows/OpGeneral.vb | 12 +- iBMSC/Option Windows/OpKeybinding.vb | 6 +- iBMSC/Option Windows/OpPlayer.vb | 14 +- iBMSC/Option Windows/OpTotal.vb | 13 +- iBMSC/Option Windows/OpVisual.vb | 12 +- iBMSC/Option Windows/OpVisualOverride.vb | 20 +- iBMSC/PanelDraw.vb | 111 +- iBMSC/PanelEvents.vb | 305 ++- iBMSC/TimeSelectionOps.vb | 138 +- iBMSC/UndoRedo.vb | 8 +- iBMSC/Utilities.vb | 32 +- iBMSC/Waveform.vb | 18 +- iBMSC/XMLUtil.vb | 4 +- iBMSC/iBMSC.vbproj | 24 +- 34 files changed, 2253 insertions(+), 2475 deletions(-) rename iBMSC/Dialogs/{diagFind.Designer.vb => dgFind.designer.vb} (97%) rename iBMSC/Dialogs/{diagFind.resx => dgFind.resx} (100%) create mode 100644 iBMSC/Dialogs/dgFind.vb delete mode 100644 iBMSC/Dialogs/diagFind.vb diff --git a/iBMSC/ApplicationEvents.vb b/iBMSC/ApplicationEvents.vb index 6645d6eb0..7b0a3377f 100644 --- a/iBMSC/ApplicationEvents.vb +++ b/iBMSC/ApplicationEvents.vb @@ -11,11 +11,11 @@ Namespace My End Sub Private Sub MyApplication_UnhandledException(ByVal sender As Object, ByVal e As Microsoft.VisualBasic.ApplicationServices.UnhandledExceptionEventArgs) Handles Me.UnhandledException - Dim xRes As MsgBoxResult = MsgBox("An unhandled exception has occurred in the application: " & vbCrLf & _ - e.Exception.Message & vbCrLf & _ - vbCrLf & _ - "Click Yes to save a back-up, click No otherwise, or click Cancel to ignore this exception and continue.", _ - MsgBoxStyle.YesNoCancel + MsgBoxStyle.Critical, _ + Dim xRes As MsgBoxResult = MsgBox("An unhandled exception has occurred in the application: " & vbCrLf & + e.Exception.Message & vbCrLf & + vbCrLf & + "Click Yes to save a back-up, click No otherwise, or click Cancel to ignore this exception and continue.", + CType(MsgBoxStyle.YesNoCancel + MsgBoxStyle.Critical, MsgBoxStyle), "Unhandled Exception") If xRes = MsgBoxResult.Cancel Then e.ExitApplication = False If xRes = MsgBoxResult.Yes Then diff --git a/iBMSC/Audio.vb b/iBMSC/Audio.vb index 42e3da8f2..6b06c907b 100644 --- a/iBMSC/Audio.vb +++ b/iBMSC/Audio.vb @@ -33,7 +33,7 @@ Module Audio Return filename End Function - Public Function GetSupportedExtensions(Optional appendStr As String = ".") + Public Function GetSupportedExtensions(Optional appendStr As String = ".") As String() Dim Ext(UBound(SupportedExt)) As String For i = 0 To UBound(SupportedExt) Ext(i) = appendStr & SupportedExt(i) @@ -101,7 +101,7 @@ Public Class AudioC Return filename End Function - Public Function GetSupportedExtensions(Optional appendStr As String = ".") + Public Function GetSupportedExtensions(Optional appendStr As String = ".") As String() Dim Ext(UBound(SupportedExt)) As String For i = 0 To UBound(SupportedExt) Ext(i) = appendStr & SupportedExt(i) @@ -168,13 +168,13 @@ Class NVorbisSource Public ReadOnly Property Length As Long Implements IAudioSource.Length Get - Return IIf(CanSeek, _vorbisReader.TotalTime.TotalSeconds * _waveFormat.SampleRate * _waveFormat.Channels, 0) + Return CInt(IIf(CanSeek, _vorbisReader.TotalTime.TotalSeconds * _waveFormat.SampleRate * _waveFormat.Channels, 0)) End Get End Property Public Property Position As Long Implements IAudioSource.Position Get - Return IIf(CanSeek, _vorbisReader.TimePosition.TotalSeconds * _vorbisReader.SampleRate * _vorbisReader.Channels, 0) + Return CInt(IIf(CanSeek, _vorbisReader.TimePosition.TotalSeconds * _vorbisReader.SampleRate * _vorbisReader.Channels, 0)) End Get Set(value As Long) If Not CanSeek Then diff --git a/iBMSC/ChartIO.vb b/iBMSC/ChartIO.vb index 07d2a424d..fcdbfe668 100644 --- a/iBMSC/ChartIO.vb +++ b/iBMSC/ChartIO.vb @@ -59,11 +59,11 @@ SkipInitialization: If xGhost Then GoTo SkipLoadingHeader If sLineTrim.StartsWith("#") And Mid(sLineTrim, 5, 3) = "02:" Then - Dim xIndex As Integer = Val(Mid(sLineTrim, 2, 3)) + Dim xIndex As Integer = CInt(Mid(sLineTrim, 2, 3)) Dim xRatio As Double = Val(Mid(sLineTrim, 8)) Dim xxD As Long = GetDenominator(xRatio) MeasureLength(xIndex) = xRatio * 192.0R - LBeat.Items(xIndex) = Add3Zeros(xIndex) & ": " & xRatio & IIf(xxD > 10000, "", " ( " & CLng(xRatio * xxD) & " / " & xxD & " ) ") + LBeat.Items(xIndex) = Add3Zeros(xIndex) & ": " & xRatio & IIf(xxD > 10000, "", " ( " & CLng(xRatio * xxD) & " / " & xxD & " ) ").ToString() GoTo AddToxStrLine2 ElseIf SWIC(sLineTrim, "#WAV") Then @@ -72,16 +72,16 @@ SkipInitialization: ElseIf SWIC(sLineTrim, "#BPM") And Not Mid(sLineTrim, Len("#BPM") + 1, 1).Trim = "" Then 'If BPM## ' zdr: No limits on BPM editing.. they don't make much sense. - hBPM(C36to10(Mid(sLineTrim, Len("#BPM") + 1, 2))) = Val(Mid(sLineTrim, Len("#BPM") + 4)) * 10000 + hBPM(C36to10(Mid(sLineTrim, Len("#BPM") + 1, 2))) = CLng(Mid(sLineTrim, Len("#BPM") + 4)) * 10000 GoTo AddToxStrLine2 'No limits on STOPs either. ElseIf SWIC(sLineTrim, "#STOP") Then - hSTOP(C36to10(Mid(sLineTrim, Len("#STOP") + 1, 2))) = Val(Mid(sLineTrim, Len("#STOP") + 4)) * 10000 + hSTOP(C36to10(Mid(sLineTrim, Len("#STOP") + 1, 2))) = CLng(Mid(sLineTrim, Len("#STOP") + 4)) * 10000 GoTo AddToxStrLine2 ElseIf SWIC(sLineTrim, "#SCROLL") Then - hBMSCROLL(C36to10(Mid(sLineTrim, Len("#SCROLL") + 1, 2))) = Val(Mid(sLineTrim, Len("#SCROLL") + 4)) * 10000 + hBMSCROLL(C36to10(Mid(sLineTrim, Len("#SCROLL") + 1, 2))) = CLng(Mid(sLineTrim, Len("#SCROLL") + 4)) * 10000 GoTo AddToxStrLine2 ElseIf SWIC(sLineTrim, "#TITLE") Then @@ -97,18 +97,18 @@ SkipInitialization: GoTo AddToxStrLine2 ElseIf SWIC(sLineTrim, "#BPM") Then 'If BPM #### - Notes(0).Value = Val(Mid(sLineTrim, Len("#BPM") + 1).Trim) * 10000 - THBPM.Value = Notes(0).Value / 10000 + Notes(0).Value = CLng(Mid(sLineTrim, Len("#BPM") + 1).Trim) * 10000 + THBPM.Value = CDec(Notes(0).Value / 10000) GoTo AddToxStrLine2 ElseIf SWIC(sLineTrim, "#PLAYER") Then - Dim xInt As Integer = Val(Mid(sLineTrim, Len("#PLAYER") + 1).Trim) + Dim xInt As Integer = CInt(Mid(sLineTrim, Len("#PLAYER") + 1).Trim) If xInt >= 1 And xInt <= 4 Then _ CHPlayer.SelectedIndex = xInt - 1 GoTo AddToxStrLine2 ElseIf SWIC(sLineTrim, "#RANK") Then - Dim xInt As Integer = Val(Mid(sLineTrim, Len("#RANK") + 1).Trim) + Dim xInt As Integer = CInt(Mid(sLineTrim, Len("#RANK") + 1).Trim) If xInt >= 0 And xInt <= 4 Then _ CHRank.SelectedIndex = xInt GoTo AddToxStrLine2 @@ -176,7 +176,7 @@ SkipInitialization: Continue For ElseIf SWIC(sLineTrim, "#ECOM") Then ' Comment notes - Dim xComVal = C36to10(Val(Mid(sLineTrim, Len("#ECOM") + 1, 2))) + Dim xComVal As Integer = C36to10(Mid(sLineTrim, Len("#ECOM") + 1, 2).ToString()) hCOM(C36to10(xComVal)) = Mid(sLineTrim, Len("#ECOM") + 4) If xComVal > hCOMNum Then hCOMNum = xComVal Continue For @@ -222,7 +222,7 @@ SkipUpdateMeasureBottom: ' >> Measure = Mid(sLine, 2, 3) ' >> Column Identifier = Mid(sLine, 5, 2) ' >> K = Mid(sLine, xI1, 2) - Dim xMeasure As Integer = Val(Mid(sLineTrim, 2, 3)) + Dim xMeasure As Integer = CInt(Mid(sLineTrim, 2, 3)) Dim Channel As String = Mid(sLineTrim, 5, 2) If BMSChannelToColumn(Channel) = 0 Then Continue For @@ -234,7 +234,7 @@ SkipUpdateMeasureBottom: With Notes(UBound(Notes)) .ColumnIndex = BMSChannelToColumn(Channel) + - IIf(Channel = "01", 1, 0) * (mColumn(xMeasure) - 1) + CInt(IIf(Channel = "01", 1, 0)) * (mColumn(xMeasure) - 1) .LongNote = IsChannelLongNote(Channel) .Hidden = IsChannelHidden(Channel) .Landmine = IsChannelLandmine(Channel) @@ -319,7 +319,7 @@ SkipLWAVAndExpansion: Dim xNTInput As Boolean = NTInput If GhostMode = 2 Then SwapGhostNotes() ' Revert main notes back to non-ghost notes - Dim xKBackUp() As Note = Notes.Clone 'All notes + Dim xKBackUp() As Note = CType(Notes.Clone(), Note()) 'All notes If xNTInput Then NTInput = False ConvertNT2BMSE() @@ -377,11 +377,11 @@ SkipLWAVAndExpansion: If hasOverlapping Then MsgBox(Strings.Messages.SaveWarning & vbCrLf & Strings.Messages.NoteOverlapError & vbCrLf & Strings.Messages.SavedFileWillContainErrors, MsgBoxStyle.Exclamation) - If UBound(hBPM) > IIf(BPMx1296, 1295, 255) Then MsgBox(Strings.Messages.SaveWarning & vbCrLf & - Strings.Messages.BPMOverflowError & UBound(hBPM) & " > " & IIf(BPMx1296, 1295, 255) & vbCrLf & + If UBound(hBPM) > CInt(IIf(BPMx1296, 1295, 255)) Then MsgBox(Strings.Messages.SaveWarning & vbCrLf & + Strings.Messages.BPMOverflowError & UBound(hBPM) & " > " & IIf(BPMx1296, 1295, 255).ToString() & vbCrLf & Strings.Messages.SavedFileWillContainErrors, MsgBoxStyle.Exclamation) - If UBound(hSTOP) > IIf(STOPx1296, 1295, 255) Then MsgBox(Strings.Messages.SaveWarning & vbCrLf & - Strings.Messages.STOPOverflowError & UBound(hSTOP) & " > " & IIf(STOPx1296, 1295, 255) & vbCrLf & + If UBound(hSTOP) > CInt(IIf(STOPx1296, 1295, 255)) Then MsgBox(Strings.Messages.SaveWarning & vbCrLf & + Strings.Messages.STOPOverflowError & UBound(hSTOP) & " > " & IIf(STOPx1296, 1295, 255).ToString() & vbCrLf & Strings.Messages.SavedFileWillContainErrors, MsgBoxStyle.Exclamation) If UBound(hBMSCROLL) > 1295 Then MsgBox(Strings.Messages.SaveWarning & vbCrLf & Strings.Messages.SCROLLOverflowError & UBound(hBMSCROLL) & " > " & 1295 & vbCrLf & @@ -400,11 +400,11 @@ SkipLWAVAndExpansion: GhostModeTemp = GhostMode GhostMode = 0 TExpansion.Text = "" - Dim xKBackUpG() As Note = xKBackUp.Clone + Dim xKBackUpG() As Note = CType(xKBackUp.Clone(), Note()) Dim xStrCompare() As String = Split(Replace(Replace(Replace(SaveBMS(), vbLf, vbCr), vbCr & vbCr, vbCr), vbCr, vbCrLf), vbCrLf,, CompareMethod.Text) ' Save ghost notes - Notes = xKBackUpG.Clone + Notes = CType(xKBackUpG.Clone(), Note()) If xNTInput Then ConvertNT2BMSE() SwapGhostNotes() RemoveGhostNotes() ' Remove Main Notes from Notes() @@ -421,7 +421,7 @@ SkipLWAVAndExpansion: End If Next TExpansion.Text = Join(ExpansionSplit, vbCrLf) - xKBackUp = xKBackUpG.Clone + xKBackUp = CType(xKBackUpG.Clone(), Note()) End If ' Combine all expansion texts Dim xStrExp As String = vbCrLf & "*---------------------- EXPANSION FIELD" & vbCrLf & TExpansion.Text & vbCrLf & vbCrLf @@ -429,7 +429,7 @@ SkipLWAVAndExpansion: ' Add comment notes Dim xStrEditorCommentNotes As String = "" - Notes = xKBackUp.Clone + Notes = CType(xKBackUp.Clone(), Note()) If xNTInput Then ConvertNT2BMSE() ' Swap comment notes. Not a sub/function since expected to use only once. For xI1 = 1 To UBound(Notes) @@ -454,7 +454,7 @@ SkipLWAVAndExpansion: Dim xStrMain As String = "*---------------------- MAIN DATA FIELD" & vbCrLf & vbCrLf & Join(xStrMeasure, "") & vbCrLf ' Restore notes - Notes = xKBackUp.Clone + Notes = CType(xKBackUp.Clone(), Note()) If xNTInput Then NTInput = True End If @@ -514,7 +514,7 @@ ExtractAddExpansion: xExpansion &= sLine & vbCrLf If THBanner.Text <> "" Then xStrHeader &= "#BANNER " & THBanner.Text & vbCrLf If THBackBMP.Text <> "" Then xStrHeader &= "#BACKBMP " & THBackBMP.Text & vbCrLf xStrHeader &= vbCrLf - If CHDifficulty.SelectedIndex Then xStrHeader &= "#DIFFICULTY " & CHDifficulty.SelectedIndex & vbCrLf + If CHDifficulty.SelectedIndex > 0 Then xStrHeader &= "#DIFFICULTY " & CHDifficulty.SelectedIndex & vbCrLf If THExRank.Text <> "" Then xStrHeader &= "#DEFEXRANK " & THExRank.Text & vbCrLf If THTotal.Text <> "" Then xStrHeader &= "#TOTAL " & THTotal.Text & vbCrLf If THComment.Text <> "" Then xStrHeader &= "#COMMENT """ & THComment.Text & """" & vbCrLf @@ -534,12 +534,12 @@ ExtractAddExpansion: xExpansion &= sLine & vbCrLf Next For i = 1 To UBound(hBPM) xStrHeader &= "#BPM" & - IIf(BPMx1296, C10to36(i), Mid("0" & Hex(i), Len(Hex(i)))) & + IIf(BPMx1296, C10to36(i), Mid("0" & Hex(i), Len(Hex(i)))).ToString() & " " & WriteDecimalWithDot(hBPM(i) / 10000) & vbCrLf Next For i = 1 To UBound(hSTOP) xStrHeader &= "#STOP" & - IIf(STOPx1296, C10to36(i), Mid("0" & Hex(i), Len(Hex(i)))) & + IIf(STOPx1296, C10to36(i), Mid("0" & Hex(i), Len(Hex(i)))).ToString() & " " & WriteDecimalWithDot(hSTOP(i) / 10000) & vbCrLf Next For i = 1 To UBound(hBMSCROLL) @@ -578,8 +578,8 @@ ExtractAddExpansion: xExpansion &= sLine & vbCrLf Dim Ret As String = "" For Each CurrentBMSChannel In BMSChannelList 'Start rendering other notes - Dim relativeMeasurePos(-1) 'Ks in the same column - Dim NoteStrings(-1) 'Ks in the same column + Dim relativeMeasurePos(-1) As Double 'Ks in the same column + Dim NoteStrings(-1) As String 'Ks in the same column ' Background tracks take care of this. If CurrentBMSChannel = "01" Then Continue For @@ -598,7 +598,7 @@ ExtractAddExpansion: xExpansion &= sLine & vbCrLf If CurrentBMSChannel = "03" Then 'If integer bpm NoteStrings(UBound(NoteStrings)) = Mid("0" & Hex(currentNote.Value \ 10000), Len(Hex(currentNote.Value \ 10000))) ElseIf CurrentBMSChannel = "08" Then 'If bpm requires declaration - Dim BpmIndex + Dim BpmIndex As Integer For BpmIndex = 1 To UBound(hBPM) ' find BPM value in existing array If currentNote.Value = hBPM(BpmIndex) Then Exit For Next @@ -606,9 +606,9 @@ ExtractAddExpansion: xExpansion &= sLine & vbCrLf ReDim Preserve hBPM(UBound(hBPM) + 1) hBPM(UBound(hBPM)) = currentNote.Value End If - NoteStrings(UBound(NoteStrings)) = IIf(BPMx1296, C10to36(BpmIndex), Mid("0" & Hex(BpmIndex), Len(Hex(BpmIndex)))) + NoteStrings(UBound(NoteStrings)) = IIf(BPMx1296, C10to36(BpmIndex), Mid("0" & Hex(BpmIndex), Len(Hex(BpmIndex)))).ToString() ElseIf CurrentBMSChannel = "09" Then 'If STOP - Dim StopIndex + Dim StopIndex As Integer For StopIndex = 1 To UBound(hSTOP) ' find STOP value in existing array If currentNote.Value = hSTOP(StopIndex) Then Exit For Next @@ -617,9 +617,9 @@ ExtractAddExpansion: xExpansion &= sLine & vbCrLf ReDim Preserve hSTOP(UBound(hSTOP) + 1) hSTOP(UBound(hSTOP)) = currentNote.Value End If - NoteStrings(UBound(NoteStrings)) = IIf(STOPx1296, C10to36(StopIndex), Mid("0" & Hex(StopIndex), Len(Hex(StopIndex)))) + NoteStrings(UBound(NoteStrings)) = IIf(STOPx1296, C10to36(StopIndex), Mid("0" & Hex(StopIndex), Len(Hex(StopIndex)))).ToString() ElseIf CurrentBMSChannel = "SC" Then 'If SCROLL - Dim ScrollIndex + Dim ScrollIndex As Integer For ScrollIndex = 1 To UBound(hBMSCROLL) ' find SCROLL value in existing array If currentNote.Value = hBMSCROLL(ScrollIndex) Then Exit For Next @@ -649,20 +649,21 @@ ExtractAddExpansion: xExpansion &= sLine & vbCrLf Next For i = 0 To UBound(relativeMeasurePos) 'assign K texts + Dim CBMSCI As Integer = CInt(CurrentBMSChannel) If CInt(relativeMeasurePos(i) / xGCD) > UBound(xStrKey) Then ReDim Preserve xprevNotes(UBound(xprevNotes) + 1) With xprevNotes(UBound(xprevNotes)) - .ColumnIndex = BMSChannelToColumn(BMSChannelList(CurrentBMSChannel)) - .LongNote = IsChannelLongNote(BMSChannelList(CurrentBMSChannel)) - .Hidden = IsChannelHidden(BMSChannelList(CurrentBMSChannel)) + .ColumnIndex = BMSChannelToColumn(BMSChannelList(CBMSCI)) + .LongNote = IsChannelLongNote(BMSChannelList(CBMSCI)) + .Hidden = IsChannelHidden(BMSChannelList(CBMSCI)) .VPosition = MeasureBottom(MeasureIndex) .Value = C36to10(NoteStrings(i)) End With - If BMSChannelList(CurrentBMSChannel) = "08" Then _ - xprevNotes(UBound(xprevNotes)).Value = IIf(BPMx1296, hBPM(C36to10(NoteStrings(i))), hBPM(Convert.ToInt32(NoteStrings(i), 16))) - If BMSChannelList(CurrentBMSChannel) = "09" Then _ - xprevNotes(UBound(xprevNotes)).Value = IIf(STOPx1296, hSTOP(C36to10(NoteStrings(i))), hSTOP(Convert.ToInt32(NoteStrings(i), 16))) - If BMSChannelList(CurrentBMSChannel) = "SC" Then _ + If BMSChannelList(CBMSCI) = "08" Then _ + xprevNotes(UBound(xprevNotes)).Value = CLng(IIf(BPMx1296, hBPM(C36to10(NoteStrings(i))), hBPM(Convert.ToInt32(NoteStrings(i), 16)))) + If BMSChannelList(CBMSCI) = "09" Then _ + xprevNotes(UBound(xprevNotes)).Value = CLng(IIf(STOPx1296, hSTOP(C36to10(NoteStrings(i))), hSTOP(Convert.ToInt32(NoteStrings(i), 16)))) + If BMSChannelList(CBMSCI) = "SC" Then _ xprevNotes(UBound(xprevNotes)).Value = hBMSCROLL(C36to10(NoteStrings(i))) Continue For End If @@ -800,11 +801,11 @@ ExtractAddExpansion: xExpansion &= sLine & vbCrLf Dim xItem() As String = Split(xLine, ",") Dim xVal1 As Double - Dim xVal2 As Double + Dim xVal2 As Long For xI1 As Integer = 0 To UBound(xItem) - xVal1 = Mid(xItem(xI1), 1, InStr(xItem(xI1), "=") - 1) - xVal2 = Mid(xItem(xI1), InStr(xItem(xI1), "=") + 1) + xVal1 = CDbl(Mid(xItem(xI1), 1, InStr(xItem(xI1), "=") - 1)) + xVal2 = CLng(Mid(xItem(xI1), InStr(xItem(xI1), "=") + 1)) If xVal1 <> 0 Then ReDim Preserve Notes(Notes.Length) @@ -902,7 +903,7 @@ Jump1: LWAV.SelectedIndex = 0 LWAV.Visible = True - THBPM.Value = Notes(0).Value / 10000 + THBPM.Value = CDec(Notes(0).Value / 10000) SortByVPositionQuick(0, UBound(Notes)) UpdatePairing() CalculateTotalPlayableNotes() @@ -947,54 +948,54 @@ Jump1: Case &H66657250 'Preferences Dim xPref As Integer = br.ReadInt32 - NTInput = xPref And &H1 + NTInput = CBool(xPref And &H1) TBNTInput.Checked = NTInput mnNTInput.Checked = NTInput POBLong.Enabled = Not NTInput POBLongShort.Enabled = Not NTInput - ErrorCheck = xPref And &H2 + ErrorCheck = CBool(xPref And &H2) TBErrorCheck.Checked = ErrorCheck TBErrorCheck_Click(TBErrorCheck, New System.EventArgs) - PreviewOnClick = xPref And &H4 + PreviewOnClick = CBool(xPref And &H4) TBPreviewOnClick.Checked = PreviewOnClick TBPreviewOnClick_Click(TBPreviewOnClick, New System.EventArgs) - ShowFileName = xPref And &H8 + ShowFileName = CBool(xPref And &H8) TBShowFileName.Checked = ShowFileName TBShowFileName_Click(TBShowFileName, New System.EventArgs) - mnSMenu.Checked = xPref And &H100 - mnSTB.Checked = xPref And &H200 - mnSOP.Checked = xPref And &H400 - mnSStatus.Checked = xPref And &H800 - mnSLSplitter.Checked = xPref And &H1000 - mnSRSplitter.Checked = xPref And &H2000 - - CGShow.Checked = xPref And &H4000 - CGShowS.Checked = xPref And &H8000 - CGShowBG.Checked = xPref And &H10000 - CGShowM.Checked = xPref And &H20000 - CGShowMB.Checked = xPref And &H40000 - CGShowV.Checked = xPref And &H80000 - CGShowC.Checked = xPref And &H100000 - CGBLP.Checked = xPref And &H200000 - CGSTOP.Checked = xPref And &H400000 - CGSCROLL.Checked = xPref And &H20000000 - CGBPM.Checked = xPref And &H800000 - - CGSnap.Checked = xPref And &H1000000 - CGDisableVertical.Checked = xPref And &H2000000 - cVSLockL.Checked = xPref And &H4000000 - cVSLock.Checked = xPref And &H8000000 - cVSLockR.Checked = xPref And &H10000000 + mnSMenu.Checked = CBool(xPref And &H100) + mnSTB.Checked = CBool(xPref And &H200) + mnSOP.Checked = CBool(xPref And &H400) + mnSStatus.Checked = CBool(xPref And &H800) + mnSLSplitter.Checked = CBool(xPref And &H1000) + mnSRSplitter.Checked = CBool(xPref And &H2000) + + CGShow.Checked = CBool(xPref And &H4000) + CGShowS.Checked = CBool(xPref And &H8000) + CGShowBG.Checked = CBool(xPref And &H10000) + CGShowM.Checked = CBool(xPref And &H20000) + CGShowMB.Checked = CBool(xPref And &H40000) + CGShowV.Checked = CBool(xPref And &H80000) + CGShowC.Checked = CBool(xPref And &H100000) + CGBLP.Checked = CBool(xPref And &H200000) + CGSTOP.Checked = CBool(xPref And &H400000) + CGSCROLL.Checked = CBool(xPref And &H20000000) + CGBPM.Checked = CBool(xPref And &H800000) + + CGSnap.Checked = CBool(xPref And &H1000000) + CGDisableVertical.Checked = CBool(xPref And &H2000000) + cVSLockL.Checked = CBool(xPref And &H4000000) + cVSLock.Checked = CBool(xPref And &H8000000) + cVSLockR.Checked = CBool(xPref And &H10000000) CGDivide.Value = br.ReadInt32 CGSub.Value = br.ReadInt32 gSlash = br.ReadInt32 - CGHeight.Value = br.ReadSingle - CGWidth.Value = br.ReadSingle + CGHeight.Value = CDec(br.ReadSingle) + CGWidth.Value = CDec(br.ReadSingle) CGB.Value = br.ReadInt32 Case &H64616548 'Header @@ -1025,10 +1026,10 @@ Jump1: Case &H564157 'WAV List Dim xWAVOptions As Integer = br.ReadByte - WAVMultiSelect = xWAVOptions And &H1 + WAVMultiSelect = CBool(xWAVOptions And &H1) CWAVMultiSelect.Checked = WAVMultiSelect CWAVMultiSelect_CheckedChanged(CWAVMultiSelect, New EventArgs) - WAVChangeLabel = xWAVOptions And &H2 + WAVChangeLabel = CBool(xWAVOptions And &H2) CWAVChangeLabel.Checked = WAVChangeLabel CWAVChangeLabel_CheckedChanged(CWAVChangeLabel, New EventArgs) @@ -1054,7 +1055,7 @@ Jump1: MeasureLength(xIndex) = br.ReadDouble Dim xRatio As Double = MeasureLength(xIndex) / 192.0R Dim xxD As Long = GetDenominator(xRatio) - LBeat.Items(xIndex) = Add3Zeros(xIndex) & ": " & xRatio & IIf(xxD > 10000, "", " ( " & CLng(xRatio * xxD) & " / " & xxD & " ) ") + LBeat.Items(xIndex) = Add3Zeros(xIndex) & ": " & xRatio & IIf(xxD > 10000, "", " ( " & CLng(xRatio * xxD) & " / " & xxD & " ) ").ToString() Next Case &H6E707845 'Expansion Code @@ -1116,7 +1117,7 @@ EndOfSub: LWAV.SelectedIndex = 0 LWAV.Visible = True - THBPM.Value = Notes(0).Value / 10000 + THBPM.Value = CDec(Notes(0).Value / 10000) SortByVPositionQuick(0, UBound(Notes)) UpdatePairing() UpdateMeasureBottom() diff --git a/iBMSC/Column.vb b/iBMSC/Column.vb index c6128ad4a..f6e6296fb 100644 --- a/iBMSC/Column.vb +++ b/iBMSC/Column.vb @@ -89,15 +89,15 @@ cNote = c 'cCacheB = (c And &HFF000000) Or &H808080 Or ((c And &HFFFFFF) >> 1) 'cCacheD = (c And &HFF000000) Or ((c And &HFEFEFE) >> 1) - cCacheB = AdjustBrightness(Color.FromArgb(c), 50, ((c >> 24) And &HFF) / 255).ToArgb - cCacheD = AdjustBrightness(Color.FromArgb(c), -25, ((c >> 24) And &HFF) / 255).ToArgb + cCacheB = AdjustBrightness(Color.FromArgb(c), 50, CSng(((c >> 24) And &HFF) / 255)).ToArgb + cCacheD = AdjustBrightness(Color.FromArgb(c), -25, CSng(((c >> 24) And &HFF) / 255)).ToArgb End Sub Public Sub setLNoteColor(ByVal c As Integer) cLNote = c 'cCacheLB = (c And &HFF000000) Or &H808080 Or ((c And &HFFFFFF) >> 1) 'cCacheLD = (c And &HFF000000) Or ((c And &HFEFEFE) >> 1) - cCacheLB = AdjustBrightness(Color.FromArgb(c), 50, ((c >> 24) And &HFF) / 255).ToArgb - cCacheLD = AdjustBrightness(Color.FromArgb(c), -25, ((c >> 24) And &HFF) / 255).ToArgb + cCacheLB = AdjustBrightness(Color.FromArgb(c), 50, CSng(((c >> 24) And &HFF) / 255)).ToArgb + cCacheLD = AdjustBrightness(Color.FromArgb(c), -25, CSng(((c >> 24) And &HFF) / 255)).ToArgb End Sub Public Sub New(ByVal xLeft As Integer, ByVal xWidth As Integer, ByVal xTitle As String, diff --git a/iBMSC/Dialogs/ColorPicker.vb b/iBMSC/Dialogs/ColorPicker.vb index 647536f40..26cdcdcae 100644 --- a/iBMSC/Dialogs/ColorPicker.vb +++ b/iBMSC/Dialogs/ColorPicker.vb @@ -34,25 +34,25 @@ Public Class ColorPicker Private Sub SetCursor() Select Case DrawingIndex Case 0 - mMain = New Point(inS.Value / 1000 * 255, (1000 - inL.Value) / 1000 * 255) - m1 = (360 - inH.Value) * 255 / 360 + mMain = New Point(CInt(inS.Value / 1000 * 255), CInt((1000 - inL.Value) / 1000 * 255)) + m1 = CInt((360 - inH.Value) * 255 / 360) Case 1 - mMain = New Point(inH.Value * 255 / 360, (1000 - inL.Value) / 1000 * 255) - m1 = (1000 - inS.Value) * 255 / 1000 + mMain = New Point(CInt(inH.Value * 255 / 360), CInt((1000 - inL.Value) / 1000 * 255)) + m1 = CInt((1000 - inS.Value) * 255 / 1000) Case 2 - mMain = New Point(inH.Value * 255 / 360, (1000 - inS.Value) * 255 / 1000) - m1 = (1000 - inL.Value) * 255 / 1000 + mMain = New Point(CInt(inH.Value * 255 / 360), CInt((1000 - inS.Value) * 255 / 1000)) + m1 = CInt((1000 - inL.Value) * 255 / 1000) Case 3 - mMain = New Point(inB.Value, 255 - inG.Value) - m1 = 255 - inR.Value + mMain = New Point(CInt(inB.Value), CInt(255 - inG.Value)) + m1 = CInt(255 - inR.Value) Case 4 - mMain = New Point(inB.Value, 255 - inR.Value) - m1 = 255 - inG.Value + mMain = New Point(CInt(inB.Value), CInt(255 - inR.Value)) + m1 = CInt(255 - inG.Value) Case 5 - mMain = New Point(inG.Value, 255 - inR.Value) - m1 = 255 - inB.Value + mMain = New Point(CInt(inG.Value), CInt(255 - inR.Value)) + m1 = CInt(255 - inB.Value) End Select - mAlpha = inA.Value + mAlpha = CInt(inA.Value) End Sub @@ -88,7 +88,7 @@ Public Class ColorPicker xG = (xG * xxS * (1 - Math.Abs(xxB)) + xxB + 1) * 255 / 2 xB = (xB * xxS * (1 - Math.Abs(xxB)) + xxB + 1) * 255 / 2 - Return Color.FromArgb(xA, xR, xG, xB) + Return Color.FromArgb(xA, CInt(xR), CInt(xG), CInt(xB)) End Function Private Sub PCMain_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PCMain.MouseDown @@ -105,14 +105,14 @@ Public Class ColorPicker Select Case DrawingIndex Case 0 - inL.Value = 1000 - mMain.Y / 255 * 1000 - inS.Value = mMain.X / 255 * 1000 + inL.Value = CDec(1000 - mMain.Y / 255 * 1000) + inS.Value = CDec(mMain.X / 255 * 1000) Case 1 - inL.Value = 1000 - mMain.Y / 255 * 1000 - inH.Value = mMain.X / 255 * 360 + inL.Value = CDec(1000 - mMain.Y / 255 * 1000) + inH.Value = CDec(mMain.X / 255 * 360) Case 2 - inS.Value = 1000 - mMain.Y / 255 * 1000 - inH.Value = mMain.X / 255 * 360 + inS.Value = CDec(1000 - mMain.Y / 255 * 1000) + inH.Value = CDec(mMain.X / 255 * 360) Case 3 inG.Value = 255 - mMain.Y inB.Value = mMain.X @@ -138,13 +138,13 @@ Public Class ColorPicker Select Case DrawingIndex Case 0 - Dim xHue As Integer = inH.Value + Dim xHue As Integer = CInt(inH.Value) For xI1 = 0 To 255 Step xPrecision e1.Graphics.FillRectangle(New Drawing2D.LinearGradientBrush( New Point(0, 0), New Point(0, 128), Color.White, - HSL2RGB(xHue, xI1 / 255 * 1000, 500)), + HSL2RGB(xHue, CInt(xI1 / 255 * 1000), 500)), xI1, 0, xPrecision, @@ -152,7 +152,7 @@ Public Class ColorPicker e1.Graphics.FillRectangle(New Drawing2D.LinearGradientBrush( New Point(0, 128), New Point(0, 256), - HSL2RGB(xHue, xI1 / 255 * 1000, 500), + HSL2RGB(xHue, CInt(xI1 / 255 * 1000), 500), Color.Black), xI1, 128, @@ -160,13 +160,13 @@ Public Class ColorPicker 128) Next Case 1 - Dim xSaturation As Integer = inS.Value + Dim xSaturation As Integer = CInt(inS.Value) For xI1 = 0 To 255 Step xPrecision e1.Graphics.FillRectangle(New Drawing2D.LinearGradientBrush( New Point(0, 0), New Point(0, 128), Color.White, - HSL2RGB(xI1 / 255 * 360, xSaturation, 500)), + HSL2RGB(CInt(xI1 / 255 * 360), xSaturation, 500)), xI1, 0, xPrecision, @@ -174,7 +174,7 @@ Public Class ColorPicker e1.Graphics.FillRectangle(New Drawing2D.LinearGradientBrush( New Point(0, 128), New Point(0, 256), - HSL2RGB(xI1 / 255 * 360, xSaturation, 500), + HSL2RGB(CInt(xI1 / 255 * 360), xSaturation, 500), Color.Black), xI1, 128, @@ -182,20 +182,20 @@ Public Class ColorPicker 128) Next Case 2 - Dim xLightness As Integer = inL.Value + Dim xLightness As Integer = CInt(inL.Value) For xI1 = 0 To 255 Step xPrecision e1.Graphics.FillRectangle(New Drawing2D.LinearGradientBrush( New Point(0, 0), New Point(0, 256), - HSL2RGB(xI1 / 255 * 360, 1000, xLightness), - HSL2RGB(xI1 / 255 * 360, 0, xLightness)), + HSL2RGB(CInt(xI1 / 255 * 360), 1000, xLightness), + HSL2RGB(CInt(xI1 / 255 * 360), 0, xLightness)), xI1, 0, xPrecision, 256) Next Case 3 - Dim xRed As Integer = inR.Value + Dim xRed As Integer = CInt(inR.Value) For xI1 = 0 To 255 Step xPrecision e1.Graphics.FillRectangle(New Drawing2D.LinearGradientBrush( New Point(0, 0), @@ -208,7 +208,7 @@ Public Class ColorPicker 256) Next Case 4 - Dim xGreen As Integer = inG.Value + Dim xGreen As Integer = CInt(inG.Value) For xI1 = 0 To 255 Step xPrecision e1.Graphics.FillRectangle(New Drawing2D.LinearGradientBrush( New Point(0, 0), @@ -221,7 +221,7 @@ Public Class ColorPicker 256) Next Case 5 - Dim xBlue As Integer = inB.Value + Dim xBlue As Integer = CInt(inB.Value) For xI1 = 0 To 255 Step xPrecision e1.Graphics.FillRectangle(New Drawing2D.LinearGradientBrush( New Point(0, 0), @@ -236,34 +236,34 @@ Public Class ColorPicker End Select e1.Graphics.SmoothingMode = Drawing2D.SmoothingMode.AntiAlias - e1.Graphics.DrawEllipse(IIf(inL.Value > 500, Pens.Black, Pens.White), mMain.X - 4, mMain.Y - 4, 8, 8) + e1.Graphics.DrawEllipse(CType(IIf(inL.Value > 500, Pens.Black, Pens.White), Pen), mMain.X - 4, mMain.Y - 4, 8, 8) e1.Render(PCMain.CreateGraphics) e1.Dispose() End Sub Private Sub rbH_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles rbH.CheckedChanged - If sender.Checked Then DrawingIndex = 0 : SetCursor() : RefreshMain(PCMain.DisplayRectangle) : Refresh1(PC1.DisplayRectangle) : RefreshA(PCA.DisplayRectangle) + If rbH.Checked Then DrawingIndex = 0 : SetCursor() : RefreshMain(PCMain.DisplayRectangle) : Refresh1(PC1.DisplayRectangle) : RefreshA(PCA.DisplayRectangle) End Sub Private Sub rbS_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles rbS.CheckedChanged - If sender.Checked Then DrawingIndex = 1 : SetCursor() : RefreshMain(PCMain.DisplayRectangle) : Refresh1(PC1.DisplayRectangle) : RefreshA(PCA.DisplayRectangle) + If rbS.Checked Then DrawingIndex = 1 : SetCursor() : RefreshMain(PCMain.DisplayRectangle) : Refresh1(PC1.DisplayRectangle) : RefreshA(PCA.DisplayRectangle) End Sub Private Sub rbL_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles rbL.CheckedChanged - If sender.Checked Then DrawingIndex = 2 : SetCursor() : RefreshMain(PCMain.DisplayRectangle) : Refresh1(PC1.DisplayRectangle) : RefreshA(PCA.DisplayRectangle) + If rbL.Checked Then DrawingIndex = 2 : SetCursor() : RefreshMain(PCMain.DisplayRectangle) : Refresh1(PC1.DisplayRectangle) : RefreshA(PCA.DisplayRectangle) End Sub Private Sub rbR_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles rbR.CheckedChanged - If sender.Checked Then DrawingIndex = 3 : SetCursor() : RefreshMain(PCMain.DisplayRectangle) : Refresh1(PC1.DisplayRectangle) : RefreshA(PCA.DisplayRectangle) + If rbR.Checked Then DrawingIndex = 3 : SetCursor() : RefreshMain(PCMain.DisplayRectangle) : Refresh1(PC1.DisplayRectangle) : RefreshA(PCA.DisplayRectangle) End Sub Private Sub rbG_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles rbG.CheckedChanged - If sender.Checked Then DrawingIndex = 4 : SetCursor() : RefreshMain(PCMain.DisplayRectangle) : Refresh1(PC1.DisplayRectangle) : RefreshA(PCA.DisplayRectangle) + If rbG.Checked Then DrawingIndex = 4 : SetCursor() : RefreshMain(PCMain.DisplayRectangle) : Refresh1(PC1.DisplayRectangle) : RefreshA(PCA.DisplayRectangle) End Sub Private Sub rbB_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles rbB.CheckedChanged - If sender.Checked Then DrawingIndex = 5 : SetCursor() : RefreshMain(PCMain.DisplayRectangle) : Refresh1(PC1.DisplayRectangle) : RefreshA(PCA.DisplayRectangle) + If rbB.Checked Then DrawingIndex = 5 : SetCursor() : RefreshMain(PCMain.DisplayRectangle) : Refresh1(PC1.DisplayRectangle) : RefreshA(PCA.DisplayRectangle) End Sub Private Sub inH_ValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles inH.ValueChanged @@ -271,7 +271,7 @@ Public Class ColorPicker If PassiveValueChange Then Exit Sub PassiveValueChange = True - SetNewColor(HSL2RGB(inH.Value, inS.Value, inL.Value, inA.Value)) + SetNewColor(HSL2RGB(CInt(inH.Value), CInt(inS.Value), CInt(inL.Value), CInt(inA.Value))) inR.Value = NewColor.R inG.Value = NewColor.G inB.Value = NewColor.B @@ -285,7 +285,7 @@ Public Class ColorPicker Private Sub inS_ValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles inS.ValueChanged If PassiveValueChange Then Exit Sub PassiveValueChange = True - SetNewColor(HSL2RGB(inH.Value, inS.Value, inL.Value, inA.Value)) + SetNewColor(HSL2RGB(CInt(inH.Value), CInt(inS.Value), CInt(inL.Value), CInt(inA.Value))) inR.Value = NewColor.R inG.Value = NewColor.G inB.Value = NewColor.B @@ -299,7 +299,7 @@ Public Class ColorPicker Private Sub inL_ValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles inL.ValueChanged If PassiveValueChange Then Exit Sub PassiveValueChange = True - SetNewColor(HSL2RGB(inH.Value, inS.Value, inL.Value, inA.Value)) + SetNewColor(HSL2RGB(CInt(inH.Value), CInt(inS.Value), CInt(inL.Value), CInt(inA.Value))) inR.Value = NewColor.R inG.Value = NewColor.G inB.Value = NewColor.B @@ -313,10 +313,10 @@ Public Class ColorPicker Private Sub inR_ValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles inR.ValueChanged If PassiveValueChange Then Exit Sub PassiveValueChange = True - SetNewColor(Color.FromArgb(inA.Value, inR.Value, inG.Value, inB.Value)) - inH.Value = NewColor.GetHue - inS.Value = NewColor.GetSaturation * 1000 - inL.Value = NewColor.GetBrightness * 1000 + SetNewColor(Color.FromArgb(CInt(inA.Value), CInt(inR.Value), CInt(inG.Value), CInt(inB.Value))) + inH.Value = CDec(NewColor.GetHue) + inS.Value = CDec(NewColor.GetSaturation * 1000) + inL.Value = CDec(NewColor.GetBrightness * 1000) RefreshMain(PCMain.DisplayRectangle) Refresh1(PC1.DisplayRectangle) @@ -327,10 +327,10 @@ Public Class ColorPicker Private Sub inG_ValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles inG.ValueChanged If PassiveValueChange Then Exit Sub PassiveValueChange = True - SetNewColor(Color.FromArgb(inA.Value, inR.Value, inG.Value, inB.Value)) - inH.Value = NewColor.GetHue - inS.Value = NewColor.GetSaturation * 1000 - inL.Value = NewColor.GetBrightness * 1000 + SetNewColor(Color.FromArgb(CInt(inA.Value), CInt(inR.Value), CInt(inG.Value), CInt(inB.Value))) + inH.Value = CDec(NewColor.GetHue) + inS.Value = CDec(NewColor.GetSaturation * 1000) + inL.Value = CDec(NewColor.GetBrightness * 1000) RefreshMain(PCMain.DisplayRectangle) Refresh1(PC1.DisplayRectangle) @@ -341,10 +341,10 @@ Public Class ColorPicker Private Sub inB_ValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles inB.ValueChanged If PassiveValueChange Then Exit Sub PassiveValueChange = True - SetNewColor(Color.FromArgb(inA.Value, inR.Value, inG.Value, inB.Value)) - inH.Value = NewColor.GetHue - inS.Value = NewColor.GetSaturation * 1000 - inL.Value = NewColor.GetBrightness * 1000 + SetNewColor(Color.FromArgb(CInt(inA.Value), CInt(inR.Value), CInt(inG.Value), CInt(inB.Value))) + inH.Value = CDec(NewColor.GetHue) + inS.Value = CDec(NewColor.GetSaturation * 1000) + inL.Value = CDec(NewColor.GetBrightness * 1000) RefreshMain(PCMain.DisplayRectangle) Refresh1(PC1.DisplayRectangle) @@ -355,7 +355,7 @@ Public Class ColorPicker Private Sub inA_ValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles inA.ValueChanged If PassiveValueChange Then Exit Sub PassiveValueChange = True - SetNewColor(Color.FromArgb(inA.Value, inR.Value, inG.Value, inB.Value)) + SetNewColor(Color.FromArgb(CInt(inA.Value), CInt(inR.Value), CInt(inG.Value), CInt(inB.Value))) 'RefreshMain(PCMain.DisplayRectangle) 'Refresh1(PC1.DisplayRectangle) @@ -375,11 +375,11 @@ Public Class ColorPicker Select Case DrawingIndex Case 0 - inH.Value = 360 - m1 / 255 * 360 + inH.Value = CDec(360 - m1 / 255 * 360) Case 1 - inS.Value = 1000 - m1 / 255 * 1000 + inS.Value = CDec(1000 - m1 / 255 * 1000) Case 2 - inL.Value = 1000 - m1 / 255 * 1000 + inL.Value = CDec(1000 - m1 / 255 * 1000) Case 3 inR.Value = 255 - m1 Case 4 @@ -401,14 +401,14 @@ Public Class ColorPicker Select Case DrawingIndex Case 0 - Dim xxS As Integer = inS.Value - Dim xxL As Integer = inL.Value + Dim xxS As Integer = CInt(inS.Value) + Dim xxL As Integer = CInt(inL.Value) For xI1 = 0 To 255 Step xPrecision - e1.Graphics.FillRectangle(New Drawing.SolidBrush(HSL2RGB((255 - xI1) / 255 * 360, xxS, xxL)), 0, xI1, xWidth, xPrecision) + e1.Graphics.FillRectangle(New Drawing.SolidBrush(HSL2RGB(CInt((255 - xI1) / 255 * 360), xxS, xxL)), 0, xI1, xWidth, xPrecision) Next Case 1 - Dim xxH As Integer = inH.Value - Dim xxL As Integer = inL.Value + Dim xxH As Integer = CInt(inH.Value) + Dim xxL As Integer = CInt(inL.Value) e1.Graphics.FillRectangle(New Drawing2D.LinearGradientBrush( New Point(0, 0), New Point(0, 256), @@ -416,8 +416,8 @@ Public Class ColorPicker HSL2RGB(xxH, 0, xxL)), 0, 0, xWidth, 256) Case 2 - Dim xxH As Integer = inH.Value - Dim xxS As Integer = inS.Value + Dim xxH As Integer = CInt(inH.Value) + Dim xxS As Integer = CInt(inS.Value) e1.Graphics.FillRectangle(New Drawing2D.LinearGradientBrush( New Point(0, 0), New Point(0, 128), @@ -431,8 +431,8 @@ Public Class ColorPicker HSL2RGB(xxH, xxS, 0)), 0, 128, xWidth, 128) Case 3 - Dim xxG As Integer = inG.Value - Dim xxB As Integer = inB.Value + Dim xxG As Integer = CInt(inG.Value) + Dim xxB As Integer = CInt(inB.Value) e1.Graphics.FillRectangle(New Drawing2D.LinearGradientBrush( New Point(0, 0), New Point(0, 256), @@ -440,8 +440,8 @@ Public Class ColorPicker Color.FromArgb(0, xxG, xxB)), 0, 0, xWidth, 256) Case 4 - Dim xxR As Integer = inR.Value - Dim xxB As Integer = inB.Value + Dim xxR As Integer = CInt(inR.Value) + Dim xxB As Integer = CInt(inB.Value) e1.Graphics.FillRectangle(New Drawing2D.LinearGradientBrush( New Point(0, 0), New Point(0, 256), @@ -449,8 +449,8 @@ Public Class ColorPicker Color.FromArgb(xxR, 0, xxB)), 0, 0, xWidth, 256) Case 5 - Dim xxR As Integer = inR.Value - Dim xxG As Integer = inG.Value + Dim xxR As Integer = CInt(inR.Value) + Dim xxG As Integer = CInt(inG.Value) e1.Graphics.FillRectangle(New Drawing2D.LinearGradientBrush( New Point(0, 0), New Point(0, 256), @@ -463,8 +463,8 @@ Public Class ColorPicker Dim xTri2() As Point = {New Point(xWidth - 5, m1), New Point(xWidth, m1 - 2), New Point(xWidth, m1 + 2)} e1.Graphics.SmoothingMode = Drawing2D.SmoothingMode.AntiAlias - e1.Graphics.FillPolygon(IIf(inL.Value > 500, Brushes.Black, Brushes.White), xTri1) - e1.Graphics.FillPolygon(IIf(inL.Value > 500, Brushes.Black, Brushes.White), xTri2) + e1.Graphics.FillPolygon(CType(IIf(inL.Value > 500, Brushes.Black, Brushes.White), Brush), xTri1) + e1.Graphics.FillPolygon(CType(IIf(inL.Value > 500, Brushes.Black, Brushes.White), Brush), xTri2) e1.Render(PC1.CreateGraphics) e1.Dispose() @@ -492,7 +492,7 @@ Public Class ColorPicker Dim xI1 As Integer Dim xHeight As Integer = PCA.DisplayRectangle.Height Dim xPrecision As Integer = tbPrecision.Value - Dim xColor As Color = Color.FromArgb(inR.Value, inG.Value, inB.Value) + Dim xColor As Color = Color.FromArgb(CInt(inR.Value), CInt(inG.Value), CInt(inB.Value)) 'Dim xAlphaRect(314) As Rectangle 'e1.Graphics.FillRectangle(Brushes.White, PCA.DisplayRectangle) @@ -512,11 +512,11 @@ Public Class ColorPicker Dim xTri1() As Point = {New Point(mAlpha, 4), New Point(mAlpha - 2, -1), New Point(mAlpha + 2, -1)} Dim xTri2() As Point = {New Point(mAlpha, xHeight - 5), New Point(mAlpha - 2, xHeight), New Point(mAlpha + 2, xHeight)} - xI1 = inL.Value + (255 - inA.Value) * 1000 / 255 + xI1 = CInt(inL.Value + (255 - inA.Value) * 1000 / 255) e1.Graphics.SmoothingMode = Drawing2D.SmoothingMode.AntiAlias - e1.Graphics.FillPolygon(IIf(xI1 > 500, Brushes.Black, Brushes.White), xTri1) - e1.Graphics.FillPolygon(IIf(xI1 > 500, Brushes.Black, Brushes.White), xTri2) + e1.Graphics.FillPolygon(CType(IIf(xI1 > 500, Brushes.Black, Brushes.White), Brush), xTri1) + e1.Graphics.FillPolygon(CType(IIf(xI1 > 500, Brushes.Black, Brushes.White), Brush), xTri2) e1.Render(PCA.CreateGraphics) e1.Dispose() @@ -540,13 +540,13 @@ Public Class ColorPicker If xRegion.X < 62 Then e1.Graphics.FillRectangle(New Drawing.SolidBrush(OrigColor), 0, 0, 61, 28) e1.Graphics.DrawLine(New Pen(Color.FromKnownColor(KnownColor.WindowFrame)), 61, 0, 61, 28) - e1.Graphics.DrawString("Orig", xFont, IIf(OrigColor.GetBrightness + (255 - OrigColor.A) / 255 > 0.5, Brushes.Black, Brushes.White), + e1.Graphics.DrawString("Orig", xFont, CType(IIf(OrigColor.GetBrightness + (255 - OrigColor.A) / 255 > 0.5, Brushes.Black, Brushes.White), Brush), 31 - e1.Graphics.MeasureString("Orig", xFont).Width / 2, 14 - e1.Graphics.MeasureString("Orig", xFont).Height / 2) End If e1.Graphics.FillRectangle(New Drawing.SolidBrush(NewColor), 62, 0, 61, 28) - e1.Graphics.DrawString("New", xFont, IIf(NewColor.GetBrightness + (255 - NewColor.A) / 255 > 0.5, Brushes.Black, Brushes.White), + e1.Graphics.DrawString("New", xFont, CType(IIf(NewColor.GetBrightness + (255 - NewColor.A) / 255 > 0.5, Brushes.Black, Brushes.White), Brush), 93 - e1.Graphics.MeasureString("New", xFont).Width / 2, 14 - e1.Graphics.MeasureString("New", xFont).Height / 2) @@ -569,9 +569,9 @@ Public Class ColorPicker inR.Value = NewColor.R inG.Value = NewColor.G inB.Value = NewColor.B - inH.Value = NewColor.GetHue - inS.Value = NewColor.GetSaturation * 1000 - inL.Value = NewColor.GetBrightness * 1000 + inH.Value = CDec(NewColor.GetHue) + inS.Value = CDec(NewColor.GetSaturation * 1000) + inL.Value = CDec(NewColor.GetBrightness * 1000) inA.Value = NewColor.A SetCursor() @@ -600,9 +600,9 @@ Public Class ColorPicker inR.Value = NewColor.R inG.Value = NewColor.G inB.Value = NewColor.B - inH.Value = NewColor.GetHue - inS.Value = NewColor.GetSaturation * 1000 - inL.Value = NewColor.GetBrightness * 1000 + inH.Value = CDec(NewColor.GetHue) + inS.Value = CDec(NewColor.GetSaturation * 1000) + inL.Value = CDec(NewColor.GetBrightness * 1000) inA.Value = NewColor.A SetCursor() diff --git a/iBMSC/Dialogs/diagFind.Designer.vb b/iBMSC/Dialogs/dgFind.designer.vb similarity index 97% rename from iBMSC/Dialogs/diagFind.Designer.vb rename to iBMSC/Dialogs/dgFind.designer.vb index e5a4db840..52c70762d 100644 --- a/iBMSC/Dialogs/diagFind.Designer.vb +++ b/iBMSC/Dialogs/dgFind.designer.vb @@ -1,5 +1,5 @@  _ -Partial Class diagFind +Partial Class dgFind Inherits System.Windows.Forms.Form 'Form 重写 Dispose,以清理组件列表。 @@ -22,881 +22,881 @@ Partial Class diagFind '不要使用代码编辑器修改它。 _ Private Sub InitializeComponent() - Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(diagFind)) - Me.Label1 = New System.Windows.Forms.Label() - Me.Label2 = New System.Windows.Forms.Label() - Me.mr1 = New System.Windows.Forms.NumericUpDown() - Me.mr2 = New System.Windows.Forms.NumericUpDown() - Me.lr1 = New System.Windows.Forms.TextBox() - Me.lr2 = New System.Windows.Forms.TextBox() - Me.vr2 = New System.Windows.Forms.NumericUpDown() - Me.vr1 = New System.Windows.Forms.NumericUpDown() - Me.cb1 = New System.Windows.Forms.CheckBox() - Me.cb2 = New System.Windows.Forms.CheckBox() - Me.cba1 = New System.Windows.Forms.CheckBox() - Me.cba2 = New System.Windows.Forms.CheckBox() - Me.cba3 = New System.Windows.Forms.CheckBox() - Me.cba4 = New System.Windows.Forms.CheckBox() - Me.cba5 = New System.Windows.Forms.CheckBox() - Me.cba6 = New System.Windows.Forms.CheckBox() - Me.cba7 = New System.Windows.Forms.CheckBox() - Me.cba8 = New System.Windows.Forms.CheckBox() - Me.cbd1 = New System.Windows.Forms.CheckBox() - Me.cbd2 = New System.Windows.Forms.CheckBox() - Me.cbd3 = New System.Windows.Forms.CheckBox() - Me.cbd4 = New System.Windows.Forms.CheckBox() - Me.cbd5 = New System.Windows.Forms.CheckBox() - Me.cbd6 = New System.Windows.Forms.CheckBox() - Me.cbd7 = New System.Windows.Forms.CheckBox() - Me.cbd8 = New System.Windows.Forms.CheckBox() - Me.cb3 = New System.Windows.Forms.CheckBox() - Me.cb4 = New System.Windows.Forms.CheckBox() - Me.cb5 = New System.Windows.Forms.CheckBox() - Me.cbb1 = New System.Windows.Forms.CheckBox() - Me.Panel1 = New System.Windows.Forms.Panel() - Me.BSAll = New System.Windows.Forms.Button() - Me.BSInv = New System.Windows.Forms.Button() - Me.BSNone = New System.Windows.Forms.Button() - Me.Label3 = New System.Windows.Forms.Label() - Me.Label4 = New System.Windows.Forms.Label() - Me.TBSelect = New System.Windows.Forms.Button() - Me.TBClose = New System.Windows.Forms.Button() - Me.TBDelete = New System.Windows.Forms.Button() - Me.TBrl = New System.Windows.Forms.Button() - Me.TBrv = New System.Windows.Forms.Button() - Me.Label5 = New System.Windows.Forms.Label() - Me.Label6 = New System.Windows.Forms.Label() - Me.Label7 = New System.Windows.Forms.Label() - Me.Ttv = New System.Windows.Forms.NumericUpDown() - Me.Ttl = New System.Windows.Forms.TextBox() - Me.Label8 = New System.Windows.Forms.Label() - Me.Label9 = New System.Windows.Forms.Label() - Me.PictureBox3 = New System.Windows.Forms.PictureBox() - Me.PictureBox2 = New System.Windows.Forms.PictureBox() - Me.PictureBox1 = New System.Windows.Forms.PictureBox() - Me.cbx1 = New System.Windows.Forms.CheckBox() - Me.cbx2 = New System.Windows.Forms.CheckBox() - Me.cbx3 = New System.Windows.Forms.CheckBox() - Me.TBUnselect = New System.Windows.Forms.Button() - Me.cbx4 = New System.Windows.Forms.CheckBox() - Me.cbx5 = New System.Windows.Forms.CheckBox() - Me.cbx6 = New System.Windows.Forms.CheckBox() - Me.FNotePrevious = New System.Windows.Forms.Button() - Me.FNoteNext = New System.Windows.Forms.Button() - CType(Me.mr1, System.ComponentModel.ISupportInitialize).BeginInit() - CType(Me.mr2, System.ComponentModel.ISupportInitialize).BeginInit() - CType(Me.vr2, System.ComponentModel.ISupportInitialize).BeginInit() - CType(Me.vr1, System.ComponentModel.ISupportInitialize).BeginInit() - Me.Panel1.SuspendLayout() - CType(Me.Ttv, System.ComponentModel.ISupportInitialize).BeginInit() - CType(Me.PictureBox3, System.ComponentModel.ISupportInitialize).BeginInit() - CType(Me.PictureBox2, System.ComponentModel.ISupportInitialize).BeginInit() - CType(Me.PictureBox1, System.ComponentModel.ISupportInitialize).BeginInit() - Me.SuspendLayout() - ' - 'Label1 - ' - Me.Label1.Location = New System.Drawing.Point(26, 20) - Me.Label1.Name = "Label1" - Me.Label1.Size = New System.Drawing.Size(120, 17) - Me.Label1.TabIndex = 2 - Me.Label1.Text = "Note Range" - Me.Label1.TextAlign = System.Drawing.ContentAlignment.MiddleRight - ' - 'Label2 - ' - Me.Label2.Location = New System.Drawing.Point(26, 73) - Me.Label2.Name = "Label2" - Me.Label2.Size = New System.Drawing.Size(120, 17) - Me.Label2.TabIndex = 4 - Me.Label2.Text = "Measure Range" - Me.Label2.TextAlign = System.Drawing.ContentAlignment.MiddleRight - ' - 'mr1 - ' - Me.mr1.Location = New System.Drawing.Point(152, 72) - Me.mr1.Maximum = New Decimal(New Integer() {999, 0, 0, 0}) - Me.mr1.Name = "mr1" - Me.mr1.Size = New System.Drawing.Size(70, 23) - Me.mr1.TabIndex = 5 - ' - 'mr2 - ' - Me.mr2.Location = New System.Drawing.Point(258, 72) - Me.mr2.Maximum = New Decimal(New Integer() {999, 0, 0, 0}) - Me.mr2.Name = "mr2" - Me.mr2.Size = New System.Drawing.Size(70, 23) - Me.mr2.TabIndex = 6 - Me.mr2.Value = New Decimal(New Integer() {999, 0, 0, 0}) - ' - 'lr1 - ' - Me.lr1.Location = New System.Drawing.Point(152, 101) - Me.lr1.MaxLength = 2 - Me.lr1.Name = "lr1" - Me.lr1.Size = New System.Drawing.Size(70, 23) - Me.lr1.TabIndex = 7 - Me.lr1.Text = "01" - ' - 'lr2 - ' - Me.lr2.Location = New System.Drawing.Point(258, 101) - Me.lr2.MaxLength = 2 - Me.lr2.Name = "lr2" - Me.lr2.Size = New System.Drawing.Size(70, 23) - Me.lr2.TabIndex = 8 - Me.lr2.Text = "ZZ" - ' - 'vr2 - ' - Me.vr2.DecimalPlaces = 4 - Me.vr2.Location = New System.Drawing.Point(258, 130) - Me.vr2.Maximum = New Decimal(New Integer() {655359999, 0, 0, 262144}) - Me.vr2.Minimum = New Decimal(New Integer() {1, 0, 0, 262144}) - Me.vr2.Name = "vr2" - Me.vr2.Size = New System.Drawing.Size(100, 23) - Me.vr2.TabIndex = 10 - Me.vr2.Value = New Decimal(New Integer() {655359999, 0, 0, 262144}) - ' - 'vr1 - ' - Me.vr1.DecimalPlaces = 4 - Me.vr1.Location = New System.Drawing.Point(152, 130) - Me.vr1.Maximum = New Decimal(New Integer() {655359999, 0, 0, 262144}) - Me.vr1.Minimum = New Decimal(New Integer() {1, 0, 0, 262144}) - Me.vr1.Name = "vr1" - Me.vr1.Size = New System.Drawing.Size(70, 23) - Me.vr1.TabIndex = 9 - Me.vr1.Value = New Decimal(New Integer() {1, 0, 0, 262144}) - ' - 'cb1 - ' - Me.cb1.Appearance = System.Windows.Forms.Appearance.Button - Me.cb1.Checked = True - Me.cb1.CheckState = System.Windows.Forms.CheckState.Checked - Me.cb1.FlatStyle = System.Windows.Forms.FlatStyle.System - Me.cb1.Location = New System.Drawing.Point(3, 2) - Me.cb1.Name = "cb1" - Me.cb1.Size = New System.Drawing.Size(50, 25) - Me.cb1.TabIndex = 0 - Me.cb1.Tag = "1" - Me.cb1.Text = "BPM" - Me.cb1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter - Me.cb1.UseVisualStyleBackColor = False - ' - 'cb2 - ' - Me.cb2.Appearance = System.Windows.Forms.Appearance.Button - Me.cb2.Checked = True - Me.cb2.CheckState = System.Windows.Forms.CheckState.Checked - Me.cb2.FlatStyle = System.Windows.Forms.FlatStyle.System - Me.cb2.Location = New System.Drawing.Point(53, 2) - Me.cb2.Name = "cb2" - Me.cb2.Size = New System.Drawing.Size(50, 25) - Me.cb2.TabIndex = 1 - Me.cb2.Tag = "2" - Me.cb2.Text = "STOP" - Me.cb2.TextAlign = System.Drawing.ContentAlignment.MiddleCenter - Me.cb2.UseVisualStyleBackColor = True - ' - 'cba1 - ' - Me.cba1.Appearance = System.Windows.Forms.Appearance.Button - Me.cba1.Checked = True - Me.cba1.CheckState = System.Windows.Forms.CheckState.Checked - Me.cba1.FlatStyle = System.Windows.Forms.FlatStyle.System - Me.cba1.Location = New System.Drawing.Point(3, 27) - Me.cba1.Name = "cba1" - Me.cba1.Size = New System.Drawing.Size(35, 25) - Me.cba1.TabIndex = 2 - Me.cba1.Tag = "4" - Me.cba1.Text = "A1" - Me.cba1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter - Me.cba1.UseVisualStyleBackColor = True - ' - 'cba2 - ' - Me.cba2.Appearance = System.Windows.Forms.Appearance.Button - Me.cba2.Checked = True - Me.cba2.CheckState = System.Windows.Forms.CheckState.Checked - Me.cba2.FlatStyle = System.Windows.Forms.FlatStyle.System - Me.cba2.Location = New System.Drawing.Point(38, 27) - Me.cba2.Name = "cba2" - Me.cba2.Size = New System.Drawing.Size(35, 25) - Me.cba2.TabIndex = 3 - Me.cba2.Tag = "5" - Me.cba2.Text = "A2" - Me.cba2.TextAlign = System.Drawing.ContentAlignment.MiddleCenter - Me.cba2.UseVisualStyleBackColor = True - ' - 'cba3 - ' - Me.cba3.Appearance = System.Windows.Forms.Appearance.Button - Me.cba3.Checked = True - Me.cba3.CheckState = System.Windows.Forms.CheckState.Checked - Me.cba3.FlatStyle = System.Windows.Forms.FlatStyle.System - Me.cba3.Location = New System.Drawing.Point(73, 27) - Me.cba3.Name = "cba3" - Me.cba3.Size = New System.Drawing.Size(35, 25) - Me.cba3.TabIndex = 4 - Me.cba3.Tag = "6" - Me.cba3.Text = "A3" - Me.cba3.TextAlign = System.Drawing.ContentAlignment.MiddleCenter - Me.cba3.UseVisualStyleBackColor = True - ' - 'cba4 - ' - Me.cba4.Appearance = System.Windows.Forms.Appearance.Button - Me.cba4.Checked = True - Me.cba4.CheckState = System.Windows.Forms.CheckState.Checked - Me.cba4.FlatStyle = System.Windows.Forms.FlatStyle.System - Me.cba4.Location = New System.Drawing.Point(108, 27) - Me.cba4.Name = "cba4" - Me.cba4.Size = New System.Drawing.Size(35, 25) - Me.cba4.TabIndex = 5 - Me.cba4.Tag = "7" - Me.cba4.Text = "A4" - Me.cba4.TextAlign = System.Drawing.ContentAlignment.MiddleCenter - Me.cba4.UseVisualStyleBackColor = True - ' - 'cba5 - ' - Me.cba5.Appearance = System.Windows.Forms.Appearance.Button - Me.cba5.Checked = True - Me.cba5.CheckState = System.Windows.Forms.CheckState.Checked - Me.cba5.FlatStyle = System.Windows.Forms.FlatStyle.System - Me.cba5.Location = New System.Drawing.Point(143, 27) - Me.cba5.Name = "cba5" - Me.cba5.Size = New System.Drawing.Size(35, 25) - Me.cba5.TabIndex = 6 - Me.cba5.Tag = "8" - Me.cba5.Text = "A5" - Me.cba5.TextAlign = System.Drawing.ContentAlignment.MiddleCenter - Me.cba5.UseVisualStyleBackColor = True - ' - 'cba6 - ' - Me.cba6.Appearance = System.Windows.Forms.Appearance.Button - Me.cba6.Checked = True - Me.cba6.CheckState = System.Windows.Forms.CheckState.Checked - Me.cba6.FlatStyle = System.Windows.Forms.FlatStyle.System - Me.cba6.Location = New System.Drawing.Point(178, 27) - Me.cba6.Name = "cba6" - Me.cba6.Size = New System.Drawing.Size(35, 25) - Me.cba6.TabIndex = 7 - Me.cba6.Tag = "9" - Me.cba6.Text = "A6" - Me.cba6.TextAlign = System.Drawing.ContentAlignment.MiddleCenter - Me.cba6.UseVisualStyleBackColor = True - ' - 'cba7 - ' - Me.cba7.Appearance = System.Windows.Forms.Appearance.Button - Me.cba7.Checked = True - Me.cba7.CheckState = System.Windows.Forms.CheckState.Checked - Me.cba7.FlatStyle = System.Windows.Forms.FlatStyle.System - Me.cba7.Location = New System.Drawing.Point(213, 27) - Me.cba7.Name = "cba7" - Me.cba7.Size = New System.Drawing.Size(35, 25) - Me.cba7.TabIndex = 8 - Me.cba7.Tag = "10" - Me.cba7.Text = "A7" - Me.cba7.TextAlign = System.Drawing.ContentAlignment.MiddleCenter - Me.cba7.UseVisualStyleBackColor = True - ' - 'cba8 - ' - Me.cba8.Appearance = System.Windows.Forms.Appearance.Button - Me.cba8.Checked = True - Me.cba8.CheckState = System.Windows.Forms.CheckState.Checked - Me.cba8.FlatStyle = System.Windows.Forms.FlatStyle.System - Me.cba8.Location = New System.Drawing.Point(248, 27) - Me.cba8.Name = "cba8" - Me.cba8.Size = New System.Drawing.Size(35, 25) - Me.cba8.TabIndex = 9 - Me.cba8.Tag = "11" - Me.cba8.Text = "A8" - Me.cba8.TextAlign = System.Drawing.ContentAlignment.MiddleCenter - Me.cba8.UseVisualStyleBackColor = True - ' - 'cbd1 - ' - Me.cbd1.Appearance = System.Windows.Forms.Appearance.Button - Me.cbd1.Checked = True - Me.cbd1.CheckState = System.Windows.Forms.CheckState.Checked - Me.cbd1.FlatStyle = System.Windows.Forms.FlatStyle.System - Me.cbd1.Location = New System.Drawing.Point(3, 52) - Me.cbd1.Name = "cbd1" - Me.cbd1.Size = New System.Drawing.Size(35, 25) - Me.cbd1.TabIndex = 10 - Me.cbd1.Tag = "13" - Me.cbd1.Text = "D1" - Me.cbd1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter - Me.cbd1.UseVisualStyleBackColor = True - ' - 'cbd2 - ' - Me.cbd2.Appearance = System.Windows.Forms.Appearance.Button - Me.cbd2.Checked = True - Me.cbd2.CheckState = System.Windows.Forms.CheckState.Checked - Me.cbd2.FlatStyle = System.Windows.Forms.FlatStyle.System - Me.cbd2.Location = New System.Drawing.Point(38, 52) - Me.cbd2.Name = "cbd2" - Me.cbd2.Size = New System.Drawing.Size(35, 25) - Me.cbd2.TabIndex = 11 - Me.cbd2.Tag = "14" - Me.cbd2.Text = "D2" - Me.cbd2.TextAlign = System.Drawing.ContentAlignment.MiddleCenter - Me.cbd2.UseVisualStyleBackColor = True - ' - 'cbd3 - ' - Me.cbd3.Appearance = System.Windows.Forms.Appearance.Button - Me.cbd3.Checked = True - Me.cbd3.CheckState = System.Windows.Forms.CheckState.Checked - Me.cbd3.FlatStyle = System.Windows.Forms.FlatStyle.System - Me.cbd3.Location = New System.Drawing.Point(73, 52) - Me.cbd3.Name = "cbd3" - Me.cbd3.Size = New System.Drawing.Size(35, 25) - Me.cbd3.TabIndex = 12 - Me.cbd3.Tag = "15" - Me.cbd3.Text = "D3" - Me.cbd3.TextAlign = System.Drawing.ContentAlignment.MiddleCenter - Me.cbd3.UseVisualStyleBackColor = True - ' - 'cbd4 - ' - Me.cbd4.Appearance = System.Windows.Forms.Appearance.Button - Me.cbd4.Checked = True - Me.cbd4.CheckState = System.Windows.Forms.CheckState.Checked - Me.cbd4.FlatStyle = System.Windows.Forms.FlatStyle.System - Me.cbd4.Location = New System.Drawing.Point(108, 52) - Me.cbd4.Name = "cbd4" - Me.cbd4.Size = New System.Drawing.Size(35, 25) - Me.cbd4.TabIndex = 13 - Me.cbd4.Tag = "16" - Me.cbd4.Text = "D4" - Me.cbd4.TextAlign = System.Drawing.ContentAlignment.MiddleCenter - Me.cbd4.UseVisualStyleBackColor = True - ' - 'cbd5 - ' - Me.cbd5.Appearance = System.Windows.Forms.Appearance.Button - Me.cbd5.Checked = True - Me.cbd5.CheckState = System.Windows.Forms.CheckState.Checked - Me.cbd5.FlatStyle = System.Windows.Forms.FlatStyle.System - Me.cbd5.Location = New System.Drawing.Point(143, 52) - Me.cbd5.Name = "cbd5" - Me.cbd5.Size = New System.Drawing.Size(35, 25) - Me.cbd5.TabIndex = 14 - Me.cbd5.Tag = "17" - Me.cbd5.Text = "D5" - Me.cbd5.TextAlign = System.Drawing.ContentAlignment.MiddleCenter - Me.cbd5.UseVisualStyleBackColor = True - ' - 'cbd6 - ' - Me.cbd6.Appearance = System.Windows.Forms.Appearance.Button - Me.cbd6.Checked = True - Me.cbd6.CheckState = System.Windows.Forms.CheckState.Checked - Me.cbd6.FlatStyle = System.Windows.Forms.FlatStyle.System - Me.cbd6.Location = New System.Drawing.Point(178, 52) - Me.cbd6.Name = "cbd6" - Me.cbd6.Size = New System.Drawing.Size(35, 25) - Me.cbd6.TabIndex = 15 - Me.cbd6.Tag = "18" - Me.cbd6.Text = "D6" - Me.cbd6.TextAlign = System.Drawing.ContentAlignment.MiddleCenter - Me.cbd6.UseVisualStyleBackColor = True - ' - 'cbd7 - ' - Me.cbd7.Appearance = System.Windows.Forms.Appearance.Button - Me.cbd7.Checked = True - Me.cbd7.CheckState = System.Windows.Forms.CheckState.Checked - Me.cbd7.FlatStyle = System.Windows.Forms.FlatStyle.System - Me.cbd7.Location = New System.Drawing.Point(213, 52) - Me.cbd7.Name = "cbd7" - Me.cbd7.Size = New System.Drawing.Size(35, 25) - Me.cbd7.TabIndex = 16 - Me.cbd7.Tag = "19" - Me.cbd7.Text = "D7" - Me.cbd7.TextAlign = System.Drawing.ContentAlignment.MiddleCenter - Me.cbd7.UseVisualStyleBackColor = True - ' - 'cbd8 - ' - Me.cbd8.Appearance = System.Windows.Forms.Appearance.Button - Me.cbd8.Checked = True - Me.cbd8.CheckState = System.Windows.Forms.CheckState.Checked - Me.cbd8.FlatStyle = System.Windows.Forms.FlatStyle.System - Me.cbd8.Location = New System.Drawing.Point(248, 52) - Me.cbd8.Name = "cbd8" - Me.cbd8.Size = New System.Drawing.Size(35, 25) - Me.cbd8.TabIndex = 17 - Me.cbd8.Tag = "20" - Me.cbd8.Text = "D8" - Me.cbd8.TextAlign = System.Drawing.ContentAlignment.MiddleCenter - Me.cbd8.UseVisualStyleBackColor = True - ' - 'cb3 - ' - Me.cb3.Appearance = System.Windows.Forms.Appearance.Button - Me.cb3.Checked = True - Me.cb3.CheckState = System.Windows.Forms.CheckState.Checked - Me.cb3.FlatStyle = System.Windows.Forms.FlatStyle.System - Me.cb3.Location = New System.Drawing.Point(3, 77) - Me.cb3.Name = "cb3" - Me.cb3.Size = New System.Drawing.Size(55, 25) - Me.cb3.TabIndex = 18 - Me.cb3.Tag = "22" - Me.cb3.Text = "BGA" - Me.cb3.TextAlign = System.Drawing.ContentAlignment.MiddleCenter - Me.cb3.UseVisualStyleBackColor = True - ' - 'cb4 - ' - Me.cb4.Appearance = System.Windows.Forms.Appearance.Button - Me.cb4.Checked = True - Me.cb4.CheckState = System.Windows.Forms.CheckState.Checked - Me.cb4.FlatStyle = System.Windows.Forms.FlatStyle.System - Me.cb4.Location = New System.Drawing.Point(58, 77) - Me.cb4.Name = "cb4" - Me.cb4.Size = New System.Drawing.Size(55, 25) - Me.cb4.TabIndex = 19 - Me.cb4.Tag = "23" - Me.cb4.Text = "LAYER" - Me.cb4.TextAlign = System.Drawing.ContentAlignment.MiddleCenter - Me.cb4.UseVisualStyleBackColor = True - ' - 'cb5 - ' - Me.cb5.Appearance = System.Windows.Forms.Appearance.Button - Me.cb5.Checked = True - Me.cb5.CheckState = System.Windows.Forms.CheckState.Checked - Me.cb5.FlatStyle = System.Windows.Forms.FlatStyle.System - Me.cb5.Location = New System.Drawing.Point(113, 77) - Me.cb5.Name = "cb5" - Me.cb5.Size = New System.Drawing.Size(55, 25) - Me.cb5.TabIndex = 20 - Me.cb5.Tag = "24" - Me.cb5.Text = "POOR" - Me.cb5.TextAlign = System.Drawing.ContentAlignment.MiddleCenter - Me.cb5.UseVisualStyleBackColor = True - ' - 'cbb1 - ' - Me.cbb1.Appearance = System.Windows.Forms.Appearance.Button - Me.cbb1.Checked = True - Me.cbb1.CheckState = System.Windows.Forms.CheckState.Checked - Me.cbb1.FlatStyle = System.Windows.Forms.FlatStyle.System - Me.cbb1.Location = New System.Drawing.Point(3, 102) - Me.cbb1.Name = "cbb1" - Me.cbb1.Size = New System.Drawing.Size(35, 25) - Me.cbb1.TabIndex = 21 - Me.cbb1.Tag = "26" - Me.cbb1.Text = "B1" - Me.cbb1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter - Me.cbb1.UseVisualStyleBackColor = True - ' - 'Panel1 - ' - Me.Panel1.AutoScroll = True - Me.Panel1.Controls.Add(Me.cb1) - Me.Panel1.Controls.Add(Me.cbd8) - Me.Panel1.Controls.Add(Me.cb2) - Me.Panel1.Controls.Add(Me.cb3) - Me.Panel1.Controls.Add(Me.cba1) - Me.Panel1.Controls.Add(Me.cbd7) - Me.Panel1.Controls.Add(Me.cb4) - Me.Panel1.Controls.Add(Me.cba2) - Me.Panel1.Controls.Add(Me.cbd6) - Me.Panel1.Controls.Add(Me.cb5) - Me.Panel1.Controls.Add(Me.cba3) - Me.Panel1.Controls.Add(Me.cbd5) - Me.Panel1.Controls.Add(Me.cbb1) - Me.Panel1.Controls.Add(Me.cba4) - Me.Panel1.Controls.Add(Me.cbd4) - Me.Panel1.Controls.Add(Me.cbd3) - Me.Panel1.Controls.Add(Me.cba5) - Me.Panel1.Controls.Add(Me.cbd2) - Me.Panel1.Controls.Add(Me.cbd1) - Me.Panel1.Controls.Add(Me.cba6) - Me.Panel1.Controls.Add(Me.cba8) - Me.Panel1.Controls.Add(Me.cba7) - Me.Panel1.Location = New System.Drawing.Point(26, 186) - Me.Panel1.Name = "Panel1" - Me.Panel1.Size = New System.Drawing.Size(302, 131) - Me.Panel1.TabIndex = 22 - ' - 'BSAll - ' - Me.BSAll.FlatStyle = System.Windows.Forms.FlatStyle.System - Me.BSAll.Location = New System.Drawing.Point(334, 189) - Me.BSAll.Name = "BSAll" - Me.BSAll.Size = New System.Drawing.Size(120, 23) - Me.BSAll.TabIndex = 23 - Me.BSAll.Text = "Select All" - Me.BSAll.UseVisualStyleBackColor = True - ' - 'BSInv - ' - Me.BSInv.FlatStyle = System.Windows.Forms.FlatStyle.System - Me.BSInv.Location = New System.Drawing.Point(334, 218) - Me.BSInv.Name = "BSInv" - Me.BSInv.Size = New System.Drawing.Size(120, 23) - Me.BSInv.TabIndex = 24 - Me.BSInv.Text = "Select Inverse" - Me.BSInv.UseVisualStyleBackColor = True - ' - 'BSNone - ' - Me.BSNone.FlatStyle = System.Windows.Forms.FlatStyle.System - Me.BSNone.Location = New System.Drawing.Point(334, 247) - Me.BSNone.Name = "BSNone" - Me.BSNone.Size = New System.Drawing.Size(120, 23) - Me.BSNone.TabIndex = 25 - Me.BSNone.Text = "Unselect All" - Me.BSNone.UseVisualStyleBackColor = True - ' - 'Label3 - ' - Me.Label3.Location = New System.Drawing.Point(26, 103) - Me.Label3.Name = "Label3" - Me.Label3.Size = New System.Drawing.Size(120, 17) - Me.Label3.TabIndex = 26 - Me.Label3.Text = "Label Range" - Me.Label3.TextAlign = System.Drawing.ContentAlignment.MiddleRight - ' - 'Label4 - ' - Me.Label4.Location = New System.Drawing.Point(26, 131) - Me.Label4.Name = "Label4" - Me.Label4.Size = New System.Drawing.Size(120, 17) - Me.Label4.TabIndex = 27 - Me.Label4.Text = "Value Range" - Me.Label4.TextAlign = System.Drawing.ContentAlignment.MiddleRight - ' - 'TBSelect - ' - Me.TBSelect.Location = New System.Drawing.Point(298, 354) - Me.TBSelect.Name = "TBSelect" - Me.TBSelect.Size = New System.Drawing.Size(75, 23) - Me.TBSelect.TabIndex = 28 - Me.TBSelect.Text = "Select" - Me.TBSelect.UseVisualStyleBackColor = True - ' - 'TBClose - ' - Me.TBClose.DialogResult = System.Windows.Forms.DialogResult.Cancel - Me.TBClose.Location = New System.Drawing.Point(379, 412) - Me.TBClose.Name = "TBClose" - Me.TBClose.Size = New System.Drawing.Size(75, 23) - Me.TBClose.TabIndex = 29 - Me.TBClose.Text = "Close" - Me.TBClose.UseVisualStyleBackColor = True - ' - 'TBDelete - ' - Me.TBDelete.Location = New System.Drawing.Point(298, 412) - Me.TBDelete.Name = "TBDelete" - Me.TBDelete.Size = New System.Drawing.Size(75, 23) - Me.TBDelete.TabIndex = 30 - Me.TBDelete.Text = "Delete" - Me.TBDelete.UseVisualStyleBackColor = True - ' - 'TBrl - ' - Me.TBrl.Location = New System.Drawing.Point(26, 354) - Me.TBrl.Name = "TBrl" - Me.TBrl.Size = New System.Drawing.Size(178, 23) - Me.TBrl.TabIndex = 33 - Me.TBrl.Text = "Replace with Label:" - Me.TBrl.UseVisualStyleBackColor = True - ' - 'TBrv - ' - Me.TBrv.Location = New System.Drawing.Point(26, 383) - Me.TBrv.Name = "TBrv" - Me.TBrv.Size = New System.Drawing.Size(178, 23) - Me.TBrv.TabIndex = 35 - Me.TBrv.Text = "Replace with Value:" - Me.TBrv.UseVisualStyleBackColor = True - ' - 'Label5 - ' - Me.Label5.Location = New System.Drawing.Point(221, 103) - Me.Label5.Name = "Label5" - Me.Label5.Size = New System.Drawing.Size(39, 16) - Me.Label5.TabIndex = 50 - Me.Label5.Text = "to" - Me.Label5.TextAlign = System.Drawing.ContentAlignment.MiddleCenter - ' - 'Label6 - ' - Me.Label6.Location = New System.Drawing.Point(221, 74) - Me.Label6.Name = "Label6" - Me.Label6.Size = New System.Drawing.Size(39, 16) - Me.Label6.TabIndex = 51 - Me.Label6.Text = "to" - Me.Label6.TextAlign = System.Drawing.ContentAlignment.MiddleCenter - ' - 'Label7 - ' - Me.Label7.Location = New System.Drawing.Point(221, 132) - Me.Label7.Name = "Label7" - Me.Label7.Size = New System.Drawing.Size(39, 16) - Me.Label7.TabIndex = 52 - Me.Label7.Text = "to" - Me.Label7.TextAlign = System.Drawing.ContentAlignment.MiddleCenter - ' - 'Ttv - ' - Me.Ttv.DecimalPlaces = 4 - Me.Ttv.Location = New System.Drawing.Point(210, 383) - Me.Ttv.Maximum = New Decimal(New Integer() {655359999, 0, 0, 262144}) - Me.Ttv.Minimum = New Decimal(New Integer() {1, 0, 0, 262144}) - Me.Ttv.Name = "Ttv" - Me.Ttv.Size = New System.Drawing.Size(70, 23) - Me.Ttv.TabIndex = 34 - Me.Ttv.Value = New Decimal(New Integer() {120, 0, 0, 0}) - ' - 'Ttl - ' - Me.Ttl.Location = New System.Drawing.Point(210, 354) - Me.Ttl.MaxLength = 2 - Me.Ttl.Name = "Ttl" - Me.Ttl.Size = New System.Drawing.Size(70, 23) - Me.Ttl.TabIndex = 32 - Me.Ttl.Text = "01" - ' - 'Label8 - ' - Me.Label8.AutoSize = True - Me.Label8.Location = New System.Drawing.Point(12, 165) - Me.Label8.Name = "Label8" - Me.Label8.Size = New System.Drawing.Size(50, 15) - Me.Label8.TabIndex = 56 - Me.Label8.Text = "Column" - ' - 'Label9 - ' - Me.Label9.AutoSize = True - Me.Label9.Location = New System.Drawing.Point(12, 327) - Me.Label9.Name = "Label9" - Me.Label9.Size = New System.Drawing.Size(60, 15) - Me.Label9.TabIndex = 57 - Me.Label9.Text = "Operation" - ' - 'PictureBox3 - ' - Me.PictureBox3.BackColor = System.Drawing.Color.FromArgb(CType(CType(64, Byte), Integer), CType(CType(64, Byte), Integer), CType(CType(64, Byte), Integer)) - Me.PictureBox3.Location = New System.Drawing.Point(289, 354) - Me.PictureBox3.Name = "PictureBox3" - Me.PictureBox3.Size = New System.Drawing.Size(1, 81) - Me.PictureBox3.TabIndex = 55 - Me.PictureBox3.TabStop = False - ' - 'PictureBox2 - ' - Me.PictureBox2.BackColor = System.Drawing.Color.FromArgb(CType(CType(64, Byte), Integer), CType(CType(64, Byte), Integer), CType(CType(64, Byte), Integer)) - Me.PictureBox2.Location = New System.Drawing.Point(12, 335) - Me.PictureBox2.Name = "PictureBox2" - Me.PictureBox2.Size = New System.Drawing.Size(450, 1) - Me.PictureBox2.TabIndex = 49 - Me.PictureBox2.TabStop = False - ' - 'PictureBox1 - ' - Me.PictureBox1.BackColor = System.Drawing.Color.FromArgb(CType(CType(64, Byte), Integer), CType(CType(64, Byte), Integer), CType(CType(64, Byte), Integer)) - Me.PictureBox1.Location = New System.Drawing.Point(12, 173) - Me.PictureBox1.Name = "PictureBox1" - Me.PictureBox1.Size = New System.Drawing.Size(450, 1) - Me.PictureBox1.TabIndex = 48 - Me.PictureBox1.TabStop = False - ' - 'cbx1 - ' - Me.cbx1.Appearance = System.Windows.Forms.Appearance.Button - Me.cbx1.Checked = True - Me.cbx1.CheckState = System.Windows.Forms.CheckState.Checked - Me.cbx1.FlatStyle = System.Windows.Forms.FlatStyle.System - Me.cbx1.Location = New System.Drawing.Point(152, 16) - Me.cbx1.Name = "cbx1" - Me.cbx1.Size = New System.Drawing.Size(100, 25) - Me.cbx1.TabIndex = 58 - Me.cbx1.Tag = "1" - Me.cbx1.Text = "Selected" - Me.cbx1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter - Me.cbx1.UseVisualStyleBackColor = False - ' - 'cbx2 - ' - Me.cbx2.Appearance = System.Windows.Forms.Appearance.Button - Me.cbx2.Checked = True - Me.cbx2.CheckState = System.Windows.Forms.CheckState.Checked - Me.cbx2.FlatStyle = System.Windows.Forms.FlatStyle.System - Me.cbx2.Location = New System.Drawing.Point(152, 41) - Me.cbx2.Name = "cbx2" - Me.cbx2.Size = New System.Drawing.Size(100, 25) - Me.cbx2.TabIndex = 59 - Me.cbx2.Tag = "1" - Me.cbx2.Text = "Unselected" - Me.cbx2.TextAlign = System.Drawing.ContentAlignment.MiddleCenter - Me.cbx2.UseVisualStyleBackColor = False - ' - 'cbx3 - ' - Me.cbx3.Appearance = System.Windows.Forms.Appearance.Button - Me.cbx3.Checked = True - Me.cbx3.CheckState = System.Windows.Forms.CheckState.Checked - Me.cbx3.FlatStyle = System.Windows.Forms.FlatStyle.System - Me.cbx3.Location = New System.Drawing.Point(258, 16) - Me.cbx3.Name = "cbx3" - Me.cbx3.Size = New System.Drawing.Size(70, 25) - Me.cbx3.TabIndex = 60 - Me.cbx3.Tag = "1" - Me.cbx3.Text = "Short" - Me.cbx3.TextAlign = System.Drawing.ContentAlignment.MiddleCenter - Me.cbx3.UseVisualStyleBackColor = False - ' - 'TBUnselect - ' - Me.TBUnselect.Location = New System.Drawing.Point(379, 354) - Me.TBUnselect.Name = "TBUnselect" - Me.TBUnselect.Size = New System.Drawing.Size(75, 23) - Me.TBUnselect.TabIndex = 31 - Me.TBUnselect.Text = "Unselect" - Me.TBUnselect.UseVisualStyleBackColor = True - ' - 'cbx4 - ' - Me.cbx4.Appearance = System.Windows.Forms.Appearance.Button - Me.cbx4.Checked = True - Me.cbx4.CheckState = System.Windows.Forms.CheckState.Checked - Me.cbx4.FlatStyle = System.Windows.Forms.FlatStyle.System - Me.cbx4.Location = New System.Drawing.Point(258, 41) - Me.cbx4.Name = "cbx4" - Me.cbx4.Size = New System.Drawing.Size(70, 25) - Me.cbx4.TabIndex = 61 - Me.cbx4.Tag = "1" - Me.cbx4.Text = "Long" - Me.cbx4.TextAlign = System.Drawing.ContentAlignment.MiddleCenter - Me.cbx4.UseVisualStyleBackColor = False - ' - 'cbx5 - ' - Me.cbx5.Appearance = System.Windows.Forms.Appearance.Button - Me.cbx5.Checked = True - Me.cbx5.CheckState = System.Windows.Forms.CheckState.Checked - Me.cbx5.FlatStyle = System.Windows.Forms.FlatStyle.System - Me.cbx5.Location = New System.Drawing.Point(334, 16) - Me.cbx5.Name = "cbx5" - Me.cbx5.Size = New System.Drawing.Size(80, 25) - Me.cbx5.TabIndex = 62 - Me.cbx5.Tag = "1" - Me.cbx5.Text = "Hidden" - Me.cbx5.TextAlign = System.Drawing.ContentAlignment.MiddleCenter - Me.cbx5.UseVisualStyleBackColor = False - ' - 'cbx6 - ' - Me.cbx6.Appearance = System.Windows.Forms.Appearance.Button - Me.cbx6.Checked = True - Me.cbx6.CheckState = System.Windows.Forms.CheckState.Checked - Me.cbx6.FlatStyle = System.Windows.Forms.FlatStyle.System - Me.cbx6.Location = New System.Drawing.Point(334, 41) - Me.cbx6.Name = "cbx6" - Me.cbx6.Size = New System.Drawing.Size(80, 25) - Me.cbx6.TabIndex = 63 - Me.cbx6.Tag = "1" - Me.cbx6.Text = "Visible" - Me.cbx6.TextAlign = System.Drawing.ContentAlignment.MiddleCenter - Me.cbx6.UseVisualStyleBackColor = False - ' - 'FNotePrevious - ' - Me.FNotePrevious.Location = New System.Drawing.Point(298, 383) - Me.FNotePrevious.Name = "FNotePrevious" - Me.FNotePrevious.Size = New System.Drawing.Size(75, 23) - Me.FNotePrevious.TabIndex = 64 - Me.FNotePrevious.Text = "Previous" - Me.FNotePrevious.UseVisualStyleBackColor = True - ' - 'FNoteNext - ' - Me.FNoteNext.DialogResult = System.Windows.Forms.DialogResult.Cancel - Me.FNoteNext.Location = New System.Drawing.Point(379, 383) - Me.FNoteNext.Name = "FNoteNext" - Me.FNoteNext.Size = New System.Drawing.Size(75, 23) - Me.FNoteNext.TabIndex = 65 - Me.FNoteNext.Text = "Next" - Me.FNoteNext.UseVisualStyleBackColor = True - ' - 'diagFind - ' - Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None - Me.CancelButton = Me.TBClose - Me.ClientSize = New System.Drawing.Size(474, 451) - Me.Controls.Add(Me.FNoteNext) - Me.Controls.Add(Me.FNotePrevious) - Me.Controls.Add(Me.cbx6) - Me.Controls.Add(Me.cbx5) - Me.Controls.Add(Me.cbx4) - Me.Controls.Add(Me.TBUnselect) - Me.Controls.Add(Me.cbx3) - Me.Controls.Add(Me.cbx2) - Me.Controls.Add(Me.cbx1) - Me.Controls.Add(Me.Label9) - Me.Controls.Add(Me.Label8) - Me.Controls.Add(Me.PictureBox3) - Me.Controls.Add(Me.Ttv) - Me.Controls.Add(Me.Ttl) - Me.Controls.Add(Me.PictureBox2) - Me.Controls.Add(Me.PictureBox1) - Me.Controls.Add(Me.TBrv) - Me.Controls.Add(Me.TBrl) - Me.Controls.Add(Me.TBDelete) - Me.Controls.Add(Me.TBClose) - Me.Controls.Add(Me.TBSelect) - Me.Controls.Add(Me.Label4) - Me.Controls.Add(Me.Label3) - Me.Controls.Add(Me.BSNone) - Me.Controls.Add(Me.BSInv) - Me.Controls.Add(Me.BSAll) - Me.Controls.Add(Me.Panel1) - Me.Controls.Add(Me.vr2) - Me.Controls.Add(Me.vr1) - Me.Controls.Add(Me.lr2) - Me.Controls.Add(Me.lr1) - Me.Controls.Add(Me.mr2) - Me.Controls.Add(Me.mr1) - Me.Controls.Add(Me.Label2) - Me.Controls.Add(Me.Label1) - Me.Controls.Add(Me.Label7) - Me.Controls.Add(Me.Label6) - Me.Controls.Add(Me.Label5) - Me.Font = New System.Drawing.Font("Segoe UI", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) - Me.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle - Me.Icon = CType(resources.GetObject("$this.Icon"), System.Drawing.Icon) - Me.MaximizeBox = False - Me.MinimizeBox = False - Me.Name = "diagFind" - Me.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent - Me.Text = "Find / Delete / Replace" - Me.TopMost = True - CType(Me.mr1, System.ComponentModel.ISupportInitialize).EndInit() - CType(Me.mr2, System.ComponentModel.ISupportInitialize).EndInit() - CType(Me.vr2, System.ComponentModel.ISupportInitialize).EndInit() - CType(Me.vr1, System.ComponentModel.ISupportInitialize).EndInit() - Me.Panel1.ResumeLayout(False) - CType(Me.Ttv, System.ComponentModel.ISupportInitialize).EndInit() - CType(Me.PictureBox3, System.ComponentModel.ISupportInitialize).EndInit() - CType(Me.PictureBox2, System.ComponentModel.ISupportInitialize).EndInit() - CType(Me.PictureBox1, System.ComponentModel.ISupportInitialize).EndInit() - Me.ResumeLayout(False) - Me.PerformLayout() - + Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(dgFind)) + Me.Label1 = New System.Windows.Forms.Label() + Me.Label2 = New System.Windows.Forms.Label() + Me.mr1 = New System.Windows.Forms.NumericUpDown() + Me.mr2 = New System.Windows.Forms.NumericUpDown() + Me.lr1 = New System.Windows.Forms.TextBox() + Me.lr2 = New System.Windows.Forms.TextBox() + Me.vr2 = New System.Windows.Forms.NumericUpDown() + Me.vr1 = New System.Windows.Forms.NumericUpDown() + Me.cb1 = New System.Windows.Forms.CheckBox() + Me.cb2 = New System.Windows.Forms.CheckBox() + Me.cba1 = New System.Windows.Forms.CheckBox() + Me.cba2 = New System.Windows.Forms.CheckBox() + Me.cba3 = New System.Windows.Forms.CheckBox() + Me.cba4 = New System.Windows.Forms.CheckBox() + Me.cba5 = New System.Windows.Forms.CheckBox() + Me.cba6 = New System.Windows.Forms.CheckBox() + Me.cba7 = New System.Windows.Forms.CheckBox() + Me.cba8 = New System.Windows.Forms.CheckBox() + Me.cbd1 = New System.Windows.Forms.CheckBox() + Me.cbd2 = New System.Windows.Forms.CheckBox() + Me.cbd3 = New System.Windows.Forms.CheckBox() + Me.cbd4 = New System.Windows.Forms.CheckBox() + Me.cbd5 = New System.Windows.Forms.CheckBox() + Me.cbd6 = New System.Windows.Forms.CheckBox() + Me.cbd7 = New System.Windows.Forms.CheckBox() + Me.cbd8 = New System.Windows.Forms.CheckBox() + Me.cb3 = New System.Windows.Forms.CheckBox() + Me.cb4 = New System.Windows.Forms.CheckBox() + Me.cb5 = New System.Windows.Forms.CheckBox() + Me.cbb1 = New System.Windows.Forms.CheckBox() + Me.Panel1 = New System.Windows.Forms.Panel() + Me.BSAll = New System.Windows.Forms.Button() + Me.BSInv = New System.Windows.Forms.Button() + Me.BSNone = New System.Windows.Forms.Button() + Me.Label3 = New System.Windows.Forms.Label() + Me.Label4 = New System.Windows.Forms.Label() + Me.TBSelect = New System.Windows.Forms.Button() + Me.TBClose = New System.Windows.Forms.Button() + Me.TBDelete = New System.Windows.Forms.Button() + Me.TBrl = New System.Windows.Forms.Button() + Me.TBrv = New System.Windows.Forms.Button() + Me.Label5 = New System.Windows.Forms.Label() + Me.Label6 = New System.Windows.Forms.Label() + Me.Label7 = New System.Windows.Forms.Label() + Me.Ttv = New System.Windows.Forms.NumericUpDown() + Me.Ttl = New System.Windows.Forms.TextBox() + Me.Label8 = New System.Windows.Forms.Label() + Me.Label9 = New System.Windows.Forms.Label() + Me.PictureBox3 = New System.Windows.Forms.PictureBox() + Me.PictureBox2 = New System.Windows.Forms.PictureBox() + Me.PictureBox1 = New System.Windows.Forms.PictureBox() + Me.cbx1 = New System.Windows.Forms.CheckBox() + Me.cbx2 = New System.Windows.Forms.CheckBox() + Me.cbx3 = New System.Windows.Forms.CheckBox() + Me.TBUnselect = New System.Windows.Forms.Button() + Me.cbx4 = New System.Windows.Forms.CheckBox() + Me.cbx5 = New System.Windows.Forms.CheckBox() + Me.cbx6 = New System.Windows.Forms.CheckBox() + Me.FNotePrevious = New System.Windows.Forms.Button() + Me.FNoteNext = New System.Windows.Forms.Button() + CType(Me.mr1, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.mr2, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.vr2, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.vr1, System.ComponentModel.ISupportInitialize).BeginInit() + Me.Panel1.SuspendLayout() + CType(Me.Ttv, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.PictureBox3, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.PictureBox2, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.PictureBox1, System.ComponentModel.ISupportInitialize).BeginInit() + Me.SuspendLayout() + ' + 'Label1 + ' + Me.Label1.Location = New System.Drawing.Point(26, 20) + Me.Label1.Name = "Label1" + Me.Label1.Size = New System.Drawing.Size(120, 17) + Me.Label1.TabIndex = 2 + Me.Label1.Text = "Note Range" + Me.Label1.TextAlign = System.Drawing.ContentAlignment.MiddleRight + ' + 'Label2 + ' + Me.Label2.Location = New System.Drawing.Point(26, 73) + Me.Label2.Name = "Label2" + Me.Label2.Size = New System.Drawing.Size(120, 17) + Me.Label2.TabIndex = 4 + Me.Label2.Text = "Measure Range" + Me.Label2.TextAlign = System.Drawing.ContentAlignment.MiddleRight + ' + 'mr1 + ' + Me.mr1.Location = New System.Drawing.Point(152, 72) + Me.mr1.Maximum = New Decimal(New Integer() {999, 0, 0, 0}) + Me.mr1.Name = "mr1" + Me.mr1.Size = New System.Drawing.Size(70, 23) + Me.mr1.TabIndex = 5 + ' + 'mr2 + ' + Me.mr2.Location = New System.Drawing.Point(258, 72) + Me.mr2.Maximum = New Decimal(New Integer() {999, 0, 0, 0}) + Me.mr2.Name = "mr2" + Me.mr2.Size = New System.Drawing.Size(70, 23) + Me.mr2.TabIndex = 6 + Me.mr2.Value = New Decimal(New Integer() {999, 0, 0, 0}) + ' + 'lr1 + ' + Me.lr1.Location = New System.Drawing.Point(152, 101) + Me.lr1.MaxLength = 2 + Me.lr1.Name = "lr1" + Me.lr1.Size = New System.Drawing.Size(70, 23) + Me.lr1.TabIndex = 7 + Me.lr1.Text = "01" + ' + 'lr2 + ' + Me.lr2.Location = New System.Drawing.Point(258, 101) + Me.lr2.MaxLength = 2 + Me.lr2.Name = "lr2" + Me.lr2.Size = New System.Drawing.Size(70, 23) + Me.lr2.TabIndex = 8 + Me.lr2.Text = "ZZ" + ' + 'vr2 + ' + Me.vr2.DecimalPlaces = 4 + Me.vr2.Location = New System.Drawing.Point(258, 130) + Me.vr2.Maximum = New Decimal(New Integer() {655359999, 0, 0, 262144}) + Me.vr2.Minimum = New Decimal(New Integer() {1, 0, 0, 262144}) + Me.vr2.Name = "vr2" + Me.vr2.Size = New System.Drawing.Size(100, 23) + Me.vr2.TabIndex = 10 + Me.vr2.Value = New Decimal(New Integer() {655359999, 0, 0, 262144}) + ' + 'vr1 + ' + Me.vr1.DecimalPlaces = 4 + Me.vr1.Location = New System.Drawing.Point(152, 130) + Me.vr1.Maximum = New Decimal(New Integer() {655359999, 0, 0, 262144}) + Me.vr1.Minimum = New Decimal(New Integer() {1, 0, 0, 262144}) + Me.vr1.Name = "vr1" + Me.vr1.Size = New System.Drawing.Size(70, 23) + Me.vr1.TabIndex = 9 + Me.vr1.Value = New Decimal(New Integer() {1, 0, 0, 262144}) + ' + 'cb1 + ' + Me.cb1.Appearance = System.Windows.Forms.Appearance.Button + Me.cb1.Checked = True + Me.cb1.CheckState = System.Windows.Forms.CheckState.Checked + Me.cb1.FlatStyle = System.Windows.Forms.FlatStyle.System + Me.cb1.Location = New System.Drawing.Point(3, 2) + Me.cb1.Name = "cb1" + Me.cb1.Size = New System.Drawing.Size(50, 25) + Me.cb1.TabIndex = 0 + Me.cb1.Tag = "1" + Me.cb1.Text = "BPM" + Me.cb1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter + Me.cb1.UseVisualStyleBackColor = False + ' + 'cb2 + ' + Me.cb2.Appearance = System.Windows.Forms.Appearance.Button + Me.cb2.Checked = True + Me.cb2.CheckState = System.Windows.Forms.CheckState.Checked + Me.cb2.FlatStyle = System.Windows.Forms.FlatStyle.System + Me.cb2.Location = New System.Drawing.Point(53, 2) + Me.cb2.Name = "cb2" + Me.cb2.Size = New System.Drawing.Size(50, 25) + Me.cb2.TabIndex = 1 + Me.cb2.Tag = "2" + Me.cb2.Text = "STOP" + Me.cb2.TextAlign = System.Drawing.ContentAlignment.MiddleCenter + Me.cb2.UseVisualStyleBackColor = True + ' + 'cba1 + ' + Me.cba1.Appearance = System.Windows.Forms.Appearance.Button + Me.cba1.Checked = True + Me.cba1.CheckState = System.Windows.Forms.CheckState.Checked + Me.cba1.FlatStyle = System.Windows.Forms.FlatStyle.System + Me.cba1.Location = New System.Drawing.Point(3, 27) + Me.cba1.Name = "cba1" + Me.cba1.Size = New System.Drawing.Size(35, 25) + Me.cba1.TabIndex = 2 + Me.cba1.Tag = "4" + Me.cba1.Text = "A1" + Me.cba1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter + Me.cba1.UseVisualStyleBackColor = True + ' + 'cba2 + ' + Me.cba2.Appearance = System.Windows.Forms.Appearance.Button + Me.cba2.Checked = True + Me.cba2.CheckState = System.Windows.Forms.CheckState.Checked + Me.cba2.FlatStyle = System.Windows.Forms.FlatStyle.System + Me.cba2.Location = New System.Drawing.Point(38, 27) + Me.cba2.Name = "cba2" + Me.cba2.Size = New System.Drawing.Size(35, 25) + Me.cba2.TabIndex = 3 + Me.cba2.Tag = "5" + Me.cba2.Text = "A2" + Me.cba2.TextAlign = System.Drawing.ContentAlignment.MiddleCenter + Me.cba2.UseVisualStyleBackColor = True + ' + 'cba3 + ' + Me.cba3.Appearance = System.Windows.Forms.Appearance.Button + Me.cba3.Checked = True + Me.cba3.CheckState = System.Windows.Forms.CheckState.Checked + Me.cba3.FlatStyle = System.Windows.Forms.FlatStyle.System + Me.cba3.Location = New System.Drawing.Point(73, 27) + Me.cba3.Name = "cba3" + Me.cba3.Size = New System.Drawing.Size(35, 25) + Me.cba3.TabIndex = 4 + Me.cba3.Tag = "6" + Me.cba3.Text = "A3" + Me.cba3.TextAlign = System.Drawing.ContentAlignment.MiddleCenter + Me.cba3.UseVisualStyleBackColor = True + ' + 'cba4 + ' + Me.cba4.Appearance = System.Windows.Forms.Appearance.Button + Me.cba4.Checked = True + Me.cba4.CheckState = System.Windows.Forms.CheckState.Checked + Me.cba4.FlatStyle = System.Windows.Forms.FlatStyle.System + Me.cba4.Location = New System.Drawing.Point(108, 27) + Me.cba4.Name = "cba4" + Me.cba4.Size = New System.Drawing.Size(35, 25) + Me.cba4.TabIndex = 5 + Me.cba4.Tag = "7" + Me.cba4.Text = "A4" + Me.cba4.TextAlign = System.Drawing.ContentAlignment.MiddleCenter + Me.cba4.UseVisualStyleBackColor = True + ' + 'cba5 + ' + Me.cba5.Appearance = System.Windows.Forms.Appearance.Button + Me.cba5.Checked = True + Me.cba5.CheckState = System.Windows.Forms.CheckState.Checked + Me.cba5.FlatStyle = System.Windows.Forms.FlatStyle.System + Me.cba5.Location = New System.Drawing.Point(143, 27) + Me.cba5.Name = "cba5" + Me.cba5.Size = New System.Drawing.Size(35, 25) + Me.cba5.TabIndex = 6 + Me.cba5.Tag = "8" + Me.cba5.Text = "A5" + Me.cba5.TextAlign = System.Drawing.ContentAlignment.MiddleCenter + Me.cba5.UseVisualStyleBackColor = True + ' + 'cba6 + ' + Me.cba6.Appearance = System.Windows.Forms.Appearance.Button + Me.cba6.Checked = True + Me.cba6.CheckState = System.Windows.Forms.CheckState.Checked + Me.cba6.FlatStyle = System.Windows.Forms.FlatStyle.System + Me.cba6.Location = New System.Drawing.Point(178, 27) + Me.cba6.Name = "cba6" + Me.cba6.Size = New System.Drawing.Size(35, 25) + Me.cba6.TabIndex = 7 + Me.cba6.Tag = "9" + Me.cba6.Text = "A6" + Me.cba6.TextAlign = System.Drawing.ContentAlignment.MiddleCenter + Me.cba6.UseVisualStyleBackColor = True + ' + 'cba7 + ' + Me.cba7.Appearance = System.Windows.Forms.Appearance.Button + Me.cba7.Checked = True + Me.cba7.CheckState = System.Windows.Forms.CheckState.Checked + Me.cba7.FlatStyle = System.Windows.Forms.FlatStyle.System + Me.cba7.Location = New System.Drawing.Point(213, 27) + Me.cba7.Name = "cba7" + Me.cba7.Size = New System.Drawing.Size(35, 25) + Me.cba7.TabIndex = 8 + Me.cba7.Tag = "10" + Me.cba7.Text = "A7" + Me.cba7.TextAlign = System.Drawing.ContentAlignment.MiddleCenter + Me.cba7.UseVisualStyleBackColor = True + ' + 'cba8 + ' + Me.cba8.Appearance = System.Windows.Forms.Appearance.Button + Me.cba8.Checked = True + Me.cba8.CheckState = System.Windows.Forms.CheckState.Checked + Me.cba8.FlatStyle = System.Windows.Forms.FlatStyle.System + Me.cba8.Location = New System.Drawing.Point(248, 27) + Me.cba8.Name = "cba8" + Me.cba8.Size = New System.Drawing.Size(35, 25) + Me.cba8.TabIndex = 9 + Me.cba8.Tag = "11" + Me.cba8.Text = "A8" + Me.cba8.TextAlign = System.Drawing.ContentAlignment.MiddleCenter + Me.cba8.UseVisualStyleBackColor = True + ' + 'cbd1 + ' + Me.cbd1.Appearance = System.Windows.Forms.Appearance.Button + Me.cbd1.Checked = True + Me.cbd1.CheckState = System.Windows.Forms.CheckState.Checked + Me.cbd1.FlatStyle = System.Windows.Forms.FlatStyle.System + Me.cbd1.Location = New System.Drawing.Point(3, 52) + Me.cbd1.Name = "cbd1" + Me.cbd1.Size = New System.Drawing.Size(35, 25) + Me.cbd1.TabIndex = 10 + Me.cbd1.Tag = "13" + Me.cbd1.Text = "D1" + Me.cbd1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter + Me.cbd1.UseVisualStyleBackColor = True + ' + 'cbd2 + ' + Me.cbd2.Appearance = System.Windows.Forms.Appearance.Button + Me.cbd2.Checked = True + Me.cbd2.CheckState = System.Windows.Forms.CheckState.Checked + Me.cbd2.FlatStyle = System.Windows.Forms.FlatStyle.System + Me.cbd2.Location = New System.Drawing.Point(38, 52) + Me.cbd2.Name = "cbd2" + Me.cbd2.Size = New System.Drawing.Size(35, 25) + Me.cbd2.TabIndex = 11 + Me.cbd2.Tag = "14" + Me.cbd2.Text = "D2" + Me.cbd2.TextAlign = System.Drawing.ContentAlignment.MiddleCenter + Me.cbd2.UseVisualStyleBackColor = True + ' + 'cbd3 + ' + Me.cbd3.Appearance = System.Windows.Forms.Appearance.Button + Me.cbd3.Checked = True + Me.cbd3.CheckState = System.Windows.Forms.CheckState.Checked + Me.cbd3.FlatStyle = System.Windows.Forms.FlatStyle.System + Me.cbd3.Location = New System.Drawing.Point(73, 52) + Me.cbd3.Name = "cbd3" + Me.cbd3.Size = New System.Drawing.Size(35, 25) + Me.cbd3.TabIndex = 12 + Me.cbd3.Tag = "15" + Me.cbd3.Text = "D3" + Me.cbd3.TextAlign = System.Drawing.ContentAlignment.MiddleCenter + Me.cbd3.UseVisualStyleBackColor = True + ' + 'cbd4 + ' + Me.cbd4.Appearance = System.Windows.Forms.Appearance.Button + Me.cbd4.Checked = True + Me.cbd4.CheckState = System.Windows.Forms.CheckState.Checked + Me.cbd4.FlatStyle = System.Windows.Forms.FlatStyle.System + Me.cbd4.Location = New System.Drawing.Point(108, 52) + Me.cbd4.Name = "cbd4" + Me.cbd4.Size = New System.Drawing.Size(35, 25) + Me.cbd4.TabIndex = 13 + Me.cbd4.Tag = "16" + Me.cbd4.Text = "D4" + Me.cbd4.TextAlign = System.Drawing.ContentAlignment.MiddleCenter + Me.cbd4.UseVisualStyleBackColor = True + ' + 'cbd5 + ' + Me.cbd5.Appearance = System.Windows.Forms.Appearance.Button + Me.cbd5.Checked = True + Me.cbd5.CheckState = System.Windows.Forms.CheckState.Checked + Me.cbd5.FlatStyle = System.Windows.Forms.FlatStyle.System + Me.cbd5.Location = New System.Drawing.Point(143, 52) + Me.cbd5.Name = "cbd5" + Me.cbd5.Size = New System.Drawing.Size(35, 25) + Me.cbd5.TabIndex = 14 + Me.cbd5.Tag = "17" + Me.cbd5.Text = "D5" + Me.cbd5.TextAlign = System.Drawing.ContentAlignment.MiddleCenter + Me.cbd5.UseVisualStyleBackColor = True + ' + 'cbd6 + ' + Me.cbd6.Appearance = System.Windows.Forms.Appearance.Button + Me.cbd6.Checked = True + Me.cbd6.CheckState = System.Windows.Forms.CheckState.Checked + Me.cbd6.FlatStyle = System.Windows.Forms.FlatStyle.System + Me.cbd6.Location = New System.Drawing.Point(178, 52) + Me.cbd6.Name = "cbd6" + Me.cbd6.Size = New System.Drawing.Size(35, 25) + Me.cbd6.TabIndex = 15 + Me.cbd6.Tag = "18" + Me.cbd6.Text = "D6" + Me.cbd6.TextAlign = System.Drawing.ContentAlignment.MiddleCenter + Me.cbd6.UseVisualStyleBackColor = True + ' + 'cbd7 + ' + Me.cbd7.Appearance = System.Windows.Forms.Appearance.Button + Me.cbd7.Checked = True + Me.cbd7.CheckState = System.Windows.Forms.CheckState.Checked + Me.cbd7.FlatStyle = System.Windows.Forms.FlatStyle.System + Me.cbd7.Location = New System.Drawing.Point(213, 52) + Me.cbd7.Name = "cbd7" + Me.cbd7.Size = New System.Drawing.Size(35, 25) + Me.cbd7.TabIndex = 16 + Me.cbd7.Tag = "19" + Me.cbd7.Text = "D7" + Me.cbd7.TextAlign = System.Drawing.ContentAlignment.MiddleCenter + Me.cbd7.UseVisualStyleBackColor = True + ' + 'cbd8 + ' + Me.cbd8.Appearance = System.Windows.Forms.Appearance.Button + Me.cbd8.Checked = True + Me.cbd8.CheckState = System.Windows.Forms.CheckState.Checked + Me.cbd8.FlatStyle = System.Windows.Forms.FlatStyle.System + Me.cbd8.Location = New System.Drawing.Point(248, 52) + Me.cbd8.Name = "cbd8" + Me.cbd8.Size = New System.Drawing.Size(35, 25) + Me.cbd8.TabIndex = 17 + Me.cbd8.Tag = "20" + Me.cbd8.Text = "D8" + Me.cbd8.TextAlign = System.Drawing.ContentAlignment.MiddleCenter + Me.cbd8.UseVisualStyleBackColor = True + ' + 'cb3 + ' + Me.cb3.Appearance = System.Windows.Forms.Appearance.Button + Me.cb3.Checked = True + Me.cb3.CheckState = System.Windows.Forms.CheckState.Checked + Me.cb3.FlatStyle = System.Windows.Forms.FlatStyle.System + Me.cb3.Location = New System.Drawing.Point(3, 77) + Me.cb3.Name = "cb3" + Me.cb3.Size = New System.Drawing.Size(55, 25) + Me.cb3.TabIndex = 18 + Me.cb3.Tag = "22" + Me.cb3.Text = "BGA" + Me.cb3.TextAlign = System.Drawing.ContentAlignment.MiddleCenter + Me.cb3.UseVisualStyleBackColor = True + ' + 'cb4 + ' + Me.cb4.Appearance = System.Windows.Forms.Appearance.Button + Me.cb4.Checked = True + Me.cb4.CheckState = System.Windows.Forms.CheckState.Checked + Me.cb4.FlatStyle = System.Windows.Forms.FlatStyle.System + Me.cb4.Location = New System.Drawing.Point(58, 77) + Me.cb4.Name = "cb4" + Me.cb4.Size = New System.Drawing.Size(55, 25) + Me.cb4.TabIndex = 19 + Me.cb4.Tag = "23" + Me.cb4.Text = "LAYER" + Me.cb4.TextAlign = System.Drawing.ContentAlignment.MiddleCenter + Me.cb4.UseVisualStyleBackColor = True + ' + 'cb5 + ' + Me.cb5.Appearance = System.Windows.Forms.Appearance.Button + Me.cb5.Checked = True + Me.cb5.CheckState = System.Windows.Forms.CheckState.Checked + Me.cb5.FlatStyle = System.Windows.Forms.FlatStyle.System + Me.cb5.Location = New System.Drawing.Point(113, 77) + Me.cb5.Name = "cb5" + Me.cb5.Size = New System.Drawing.Size(55, 25) + Me.cb5.TabIndex = 20 + Me.cb5.Tag = "24" + Me.cb5.Text = "POOR" + Me.cb5.TextAlign = System.Drawing.ContentAlignment.MiddleCenter + Me.cb5.UseVisualStyleBackColor = True + ' + 'cbb1 + ' + Me.cbb1.Appearance = System.Windows.Forms.Appearance.Button + Me.cbb1.Checked = True + Me.cbb1.CheckState = System.Windows.Forms.CheckState.Checked + Me.cbb1.FlatStyle = System.Windows.Forms.FlatStyle.System + Me.cbb1.Location = New System.Drawing.Point(3, 102) + Me.cbb1.Name = "cbb1" + Me.cbb1.Size = New System.Drawing.Size(35, 25) + Me.cbb1.TabIndex = 21 + Me.cbb1.Tag = "26" + Me.cbb1.Text = "B1" + Me.cbb1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter + Me.cbb1.UseVisualStyleBackColor = True + ' + 'Panel1 + ' + Me.Panel1.AutoScroll = True + Me.Panel1.Controls.Add(Me.cb1) + Me.Panel1.Controls.Add(Me.cbd8) + Me.Panel1.Controls.Add(Me.cb2) + Me.Panel1.Controls.Add(Me.cb3) + Me.Panel1.Controls.Add(Me.cba1) + Me.Panel1.Controls.Add(Me.cbd7) + Me.Panel1.Controls.Add(Me.cb4) + Me.Panel1.Controls.Add(Me.cba2) + Me.Panel1.Controls.Add(Me.cbd6) + Me.Panel1.Controls.Add(Me.cb5) + Me.Panel1.Controls.Add(Me.cba3) + Me.Panel1.Controls.Add(Me.cbd5) + Me.Panel1.Controls.Add(Me.cbb1) + Me.Panel1.Controls.Add(Me.cba4) + Me.Panel1.Controls.Add(Me.cbd4) + Me.Panel1.Controls.Add(Me.cbd3) + Me.Panel1.Controls.Add(Me.cba5) + Me.Panel1.Controls.Add(Me.cbd2) + Me.Panel1.Controls.Add(Me.cbd1) + Me.Panel1.Controls.Add(Me.cba6) + Me.Panel1.Controls.Add(Me.cba8) + Me.Panel1.Controls.Add(Me.cba7) + Me.Panel1.Location = New System.Drawing.Point(26, 186) + Me.Panel1.Name = "Panel1" + Me.Panel1.Size = New System.Drawing.Size(302, 131) + Me.Panel1.TabIndex = 22 + ' + 'BSAll + ' + Me.BSAll.FlatStyle = System.Windows.Forms.FlatStyle.System + Me.BSAll.Location = New System.Drawing.Point(334, 189) + Me.BSAll.Name = "BSAll" + Me.BSAll.Size = New System.Drawing.Size(120, 23) + Me.BSAll.TabIndex = 23 + Me.BSAll.Text = "Select All" + Me.BSAll.UseVisualStyleBackColor = True + ' + 'BSInv + ' + Me.BSInv.FlatStyle = System.Windows.Forms.FlatStyle.System + Me.BSInv.Location = New System.Drawing.Point(334, 218) + Me.BSInv.Name = "BSInv" + Me.BSInv.Size = New System.Drawing.Size(120, 23) + Me.BSInv.TabIndex = 24 + Me.BSInv.Text = "Select Inverse" + Me.BSInv.UseVisualStyleBackColor = True + ' + 'BSNone + ' + Me.BSNone.FlatStyle = System.Windows.Forms.FlatStyle.System + Me.BSNone.Location = New System.Drawing.Point(334, 247) + Me.BSNone.Name = "BSNone" + Me.BSNone.Size = New System.Drawing.Size(120, 23) + Me.BSNone.TabIndex = 25 + Me.BSNone.Text = "Unselect All" + Me.BSNone.UseVisualStyleBackColor = True + ' + 'Label3 + ' + Me.Label3.Location = New System.Drawing.Point(26, 103) + Me.Label3.Name = "Label3" + Me.Label3.Size = New System.Drawing.Size(120, 17) + Me.Label3.TabIndex = 26 + Me.Label3.Text = "Label Range" + Me.Label3.TextAlign = System.Drawing.ContentAlignment.MiddleRight + ' + 'Label4 + ' + Me.Label4.Location = New System.Drawing.Point(26, 131) + Me.Label4.Name = "Label4" + Me.Label4.Size = New System.Drawing.Size(120, 17) + Me.Label4.TabIndex = 27 + Me.Label4.Text = "Value Range" + Me.Label4.TextAlign = System.Drawing.ContentAlignment.MiddleRight + ' + 'TBSelect + ' + Me.TBSelect.Location = New System.Drawing.Point(298, 354) + Me.TBSelect.Name = "TBSelect" + Me.TBSelect.Size = New System.Drawing.Size(75, 23) + Me.TBSelect.TabIndex = 28 + Me.TBSelect.Text = "Select" + Me.TBSelect.UseVisualStyleBackColor = True + ' + 'TBClose + ' + Me.TBClose.DialogResult = System.Windows.Forms.DialogResult.Cancel + Me.TBClose.Location = New System.Drawing.Point(379, 412) + Me.TBClose.Name = "TBClose" + Me.TBClose.Size = New System.Drawing.Size(75, 23) + Me.TBClose.TabIndex = 29 + Me.TBClose.Text = "Close" + Me.TBClose.UseVisualStyleBackColor = True + ' + 'TBDelete + ' + Me.TBDelete.Location = New System.Drawing.Point(298, 412) + Me.TBDelete.Name = "TBDelete" + Me.TBDelete.Size = New System.Drawing.Size(75, 23) + Me.TBDelete.TabIndex = 30 + Me.TBDelete.Text = "Delete" + Me.TBDelete.UseVisualStyleBackColor = True + ' + 'TBrl + ' + Me.TBrl.Location = New System.Drawing.Point(26, 354) + Me.TBrl.Name = "TBrl" + Me.TBrl.Size = New System.Drawing.Size(178, 23) + Me.TBrl.TabIndex = 33 + Me.TBrl.Text = "Replace with Label:" + Me.TBrl.UseVisualStyleBackColor = True + ' + 'TBrv + ' + Me.TBrv.Location = New System.Drawing.Point(26, 383) + Me.TBrv.Name = "TBrv" + Me.TBrv.Size = New System.Drawing.Size(178, 23) + Me.TBrv.TabIndex = 35 + Me.TBrv.Text = "Replace with Value:" + Me.TBrv.UseVisualStyleBackColor = True + ' + 'Label5 + ' + Me.Label5.Location = New System.Drawing.Point(221, 103) + Me.Label5.Name = "Label5" + Me.Label5.Size = New System.Drawing.Size(39, 16) + Me.Label5.TabIndex = 50 + Me.Label5.Text = "to" + Me.Label5.TextAlign = System.Drawing.ContentAlignment.MiddleCenter + ' + 'Label6 + ' + Me.Label6.Location = New System.Drawing.Point(221, 74) + Me.Label6.Name = "Label6" + Me.Label6.Size = New System.Drawing.Size(39, 16) + Me.Label6.TabIndex = 51 + Me.Label6.Text = "to" + Me.Label6.TextAlign = System.Drawing.ContentAlignment.MiddleCenter + ' + 'Label7 + ' + Me.Label7.Location = New System.Drawing.Point(221, 132) + Me.Label7.Name = "Label7" + Me.Label7.Size = New System.Drawing.Size(39, 16) + Me.Label7.TabIndex = 52 + Me.Label7.Text = "to" + Me.Label7.TextAlign = System.Drawing.ContentAlignment.MiddleCenter + ' + 'Ttv + ' + Me.Ttv.DecimalPlaces = 4 + Me.Ttv.Location = New System.Drawing.Point(210, 383) + Me.Ttv.Maximum = New Decimal(New Integer() {655359999, 0, 0, 262144}) + Me.Ttv.Minimum = New Decimal(New Integer() {1, 0, 0, 262144}) + Me.Ttv.Name = "Ttv" + Me.Ttv.Size = New System.Drawing.Size(70, 23) + Me.Ttv.TabIndex = 34 + Me.Ttv.Value = New Decimal(New Integer() {120, 0, 0, 0}) + ' + 'Ttl + ' + Me.Ttl.Location = New System.Drawing.Point(210, 354) + Me.Ttl.MaxLength = 2 + Me.Ttl.Name = "Ttl" + Me.Ttl.Size = New System.Drawing.Size(70, 23) + Me.Ttl.TabIndex = 32 + Me.Ttl.Text = "01" + ' + 'Label8 + ' + Me.Label8.AutoSize = True + Me.Label8.Location = New System.Drawing.Point(12, 165) + Me.Label8.Name = "Label8" + Me.Label8.Size = New System.Drawing.Size(50, 15) + Me.Label8.TabIndex = 56 + Me.Label8.Text = "Column" + ' + 'Label9 + ' + Me.Label9.AutoSize = True + Me.Label9.Location = New System.Drawing.Point(12, 327) + Me.Label9.Name = "Label9" + Me.Label9.Size = New System.Drawing.Size(60, 15) + Me.Label9.TabIndex = 57 + Me.Label9.Text = "Operation" + ' + 'PictureBox3 + ' + Me.PictureBox3.BackColor = System.Drawing.Color.FromArgb(CType(CType(64, Byte), Integer), CType(CType(64, Byte), Integer), CType(CType(64, Byte), Integer)) + Me.PictureBox3.Location = New System.Drawing.Point(289, 354) + Me.PictureBox3.Name = "PictureBox3" + Me.PictureBox3.Size = New System.Drawing.Size(1, 81) + Me.PictureBox3.TabIndex = 55 + Me.PictureBox3.TabStop = False + ' + 'PictureBox2 + ' + Me.PictureBox2.BackColor = System.Drawing.Color.FromArgb(CType(CType(64, Byte), Integer), CType(CType(64, Byte), Integer), CType(CType(64, Byte), Integer)) + Me.PictureBox2.Location = New System.Drawing.Point(12, 335) + Me.PictureBox2.Name = "PictureBox2" + Me.PictureBox2.Size = New System.Drawing.Size(450, 1) + Me.PictureBox2.TabIndex = 49 + Me.PictureBox2.TabStop = False + ' + 'PictureBox1 + ' + Me.PictureBox1.BackColor = System.Drawing.Color.FromArgb(CType(CType(64, Byte), Integer), CType(CType(64, Byte), Integer), CType(CType(64, Byte), Integer)) + Me.PictureBox1.Location = New System.Drawing.Point(12, 173) + Me.PictureBox1.Name = "PictureBox1" + Me.PictureBox1.Size = New System.Drawing.Size(450, 1) + Me.PictureBox1.TabIndex = 48 + Me.PictureBox1.TabStop = False + ' + 'cbx1 + ' + Me.cbx1.Appearance = System.Windows.Forms.Appearance.Button + Me.cbx1.Checked = True + Me.cbx1.CheckState = System.Windows.Forms.CheckState.Checked + Me.cbx1.FlatStyle = System.Windows.Forms.FlatStyle.System + Me.cbx1.Location = New System.Drawing.Point(152, 16) + Me.cbx1.Name = "cbx1" + Me.cbx1.Size = New System.Drawing.Size(100, 25) + Me.cbx1.TabIndex = 58 + Me.cbx1.Tag = "1" + Me.cbx1.Text = "Selected" + Me.cbx1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter + Me.cbx1.UseVisualStyleBackColor = False + ' + 'cbx2 + ' + Me.cbx2.Appearance = System.Windows.Forms.Appearance.Button + Me.cbx2.Checked = True + Me.cbx2.CheckState = System.Windows.Forms.CheckState.Checked + Me.cbx2.FlatStyle = System.Windows.Forms.FlatStyle.System + Me.cbx2.Location = New System.Drawing.Point(152, 41) + Me.cbx2.Name = "cbx2" + Me.cbx2.Size = New System.Drawing.Size(100, 25) + Me.cbx2.TabIndex = 59 + Me.cbx2.Tag = "1" + Me.cbx2.Text = "Unselected" + Me.cbx2.TextAlign = System.Drawing.ContentAlignment.MiddleCenter + Me.cbx2.UseVisualStyleBackColor = False + ' + 'cbx3 + ' + Me.cbx3.Appearance = System.Windows.Forms.Appearance.Button + Me.cbx3.Checked = True + Me.cbx3.CheckState = System.Windows.Forms.CheckState.Checked + Me.cbx3.FlatStyle = System.Windows.Forms.FlatStyle.System + Me.cbx3.Location = New System.Drawing.Point(258, 16) + Me.cbx3.Name = "cbx3" + Me.cbx3.Size = New System.Drawing.Size(70, 25) + Me.cbx3.TabIndex = 60 + Me.cbx3.Tag = "1" + Me.cbx3.Text = "Short" + Me.cbx3.TextAlign = System.Drawing.ContentAlignment.MiddleCenter + Me.cbx3.UseVisualStyleBackColor = False + ' + 'TBUnselect + ' + Me.TBUnselect.Location = New System.Drawing.Point(379, 354) + Me.TBUnselect.Name = "TBUnselect" + Me.TBUnselect.Size = New System.Drawing.Size(75, 23) + Me.TBUnselect.TabIndex = 31 + Me.TBUnselect.Text = "Unselect" + Me.TBUnselect.UseVisualStyleBackColor = True + ' + 'cbx4 + ' + Me.cbx4.Appearance = System.Windows.Forms.Appearance.Button + Me.cbx4.Checked = True + Me.cbx4.CheckState = System.Windows.Forms.CheckState.Checked + Me.cbx4.FlatStyle = System.Windows.Forms.FlatStyle.System + Me.cbx4.Location = New System.Drawing.Point(258, 41) + Me.cbx4.Name = "cbx4" + Me.cbx4.Size = New System.Drawing.Size(70, 25) + Me.cbx4.TabIndex = 61 + Me.cbx4.Tag = "1" + Me.cbx4.Text = "Long" + Me.cbx4.TextAlign = System.Drawing.ContentAlignment.MiddleCenter + Me.cbx4.UseVisualStyleBackColor = False + ' + 'cbx5 + ' + Me.cbx5.Appearance = System.Windows.Forms.Appearance.Button + Me.cbx5.Checked = True + Me.cbx5.CheckState = System.Windows.Forms.CheckState.Checked + Me.cbx5.FlatStyle = System.Windows.Forms.FlatStyle.System + Me.cbx5.Location = New System.Drawing.Point(334, 16) + Me.cbx5.Name = "cbx5" + Me.cbx5.Size = New System.Drawing.Size(80, 25) + Me.cbx5.TabIndex = 62 + Me.cbx5.Tag = "1" + Me.cbx5.Text = "Hidden" + Me.cbx5.TextAlign = System.Drawing.ContentAlignment.MiddleCenter + Me.cbx5.UseVisualStyleBackColor = False + ' + 'cbx6 + ' + Me.cbx6.Appearance = System.Windows.Forms.Appearance.Button + Me.cbx6.Checked = True + Me.cbx6.CheckState = System.Windows.Forms.CheckState.Checked + Me.cbx6.FlatStyle = System.Windows.Forms.FlatStyle.System + Me.cbx6.Location = New System.Drawing.Point(334, 41) + Me.cbx6.Name = "cbx6" + Me.cbx6.Size = New System.Drawing.Size(80, 25) + Me.cbx6.TabIndex = 63 + Me.cbx6.Tag = "1" + Me.cbx6.Text = "Visible" + Me.cbx6.TextAlign = System.Drawing.ContentAlignment.MiddleCenter + Me.cbx6.UseVisualStyleBackColor = False + ' + 'FNotePrevious + ' + Me.FNotePrevious.Location = New System.Drawing.Point(298, 383) + Me.FNotePrevious.Name = "FNotePrevious" + Me.FNotePrevious.Size = New System.Drawing.Size(75, 23) + Me.FNotePrevious.TabIndex = 64 + Me.FNotePrevious.Text = "Previous" + Me.FNotePrevious.UseVisualStyleBackColor = True + ' + 'FNoteNext + ' + Me.FNoteNext.DialogResult = System.Windows.Forms.DialogResult.Cancel + Me.FNoteNext.Location = New System.Drawing.Point(379, 383) + Me.FNoteNext.Name = "FNoteNext" + Me.FNoteNext.Size = New System.Drawing.Size(75, 23) + Me.FNoteNext.TabIndex = 65 + Me.FNoteNext.Text = "Next" + Me.FNoteNext.UseVisualStyleBackColor = True + ' + 'diagFind + ' + Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None + Me.CancelButton = Me.TBClose + Me.ClientSize = New System.Drawing.Size(474, 451) + Me.Controls.Add(Me.FNoteNext) + Me.Controls.Add(Me.FNotePrevious) + Me.Controls.Add(Me.cbx6) + Me.Controls.Add(Me.cbx5) + Me.Controls.Add(Me.cbx4) + Me.Controls.Add(Me.TBUnselect) + Me.Controls.Add(Me.cbx3) + Me.Controls.Add(Me.cbx2) + Me.Controls.Add(Me.cbx1) + Me.Controls.Add(Me.Label9) + Me.Controls.Add(Me.Label8) + Me.Controls.Add(Me.PictureBox3) + Me.Controls.Add(Me.Ttv) + Me.Controls.Add(Me.Ttl) + Me.Controls.Add(Me.PictureBox2) + Me.Controls.Add(Me.PictureBox1) + Me.Controls.Add(Me.TBrv) + Me.Controls.Add(Me.TBrl) + Me.Controls.Add(Me.TBDelete) + Me.Controls.Add(Me.TBClose) + Me.Controls.Add(Me.TBSelect) + Me.Controls.Add(Me.Label4) + Me.Controls.Add(Me.Label3) + Me.Controls.Add(Me.BSNone) + Me.Controls.Add(Me.BSInv) + Me.Controls.Add(Me.BSAll) + Me.Controls.Add(Me.Panel1) + Me.Controls.Add(Me.vr2) + Me.Controls.Add(Me.vr1) + Me.Controls.Add(Me.lr2) + Me.Controls.Add(Me.lr1) + Me.Controls.Add(Me.mr2) + Me.Controls.Add(Me.mr1) + Me.Controls.Add(Me.Label2) + Me.Controls.Add(Me.Label1) + Me.Controls.Add(Me.Label7) + Me.Controls.Add(Me.Label6) + Me.Controls.Add(Me.Label5) + Me.Font = New System.Drawing.Font("Segoe UI", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle + Me.Icon = CType(resources.GetObject("$this.Icon"), System.Drawing.Icon) + Me.MaximizeBox = False + Me.MinimizeBox = False + Me.Name = "diagFind" + Me.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent + Me.Text = "Find / Delete / Replace" + Me.TopMost = True + CType(Me.mr1, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.mr2, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.vr2, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.vr1, System.ComponentModel.ISupportInitialize).EndInit() + Me.Panel1.ResumeLayout(False) + CType(Me.Ttv, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.PictureBox3, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.PictureBox2, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.PictureBox1, System.ComponentModel.ISupportInitialize).EndInit() + Me.ResumeLayout(False) + Me.PerformLayout() + End Sub Friend WithEvents Label1 As System.Windows.Forms.Label Friend WithEvents Label2 As System.Windows.Forms.Label @@ -955,7 +955,7 @@ Partial Class diagFind Friend WithEvents TBUnselect As System.Windows.Forms.Button Friend WithEvents cbx4 As System.Windows.Forms.CheckBox Friend WithEvents cbx5 As System.Windows.Forms.CheckBox - Friend WithEvents cbx6 As System.Windows.Forms.CheckBox - Friend WithEvents FNotePrevious As Button - Friend WithEvents FNoteNext As Button + Friend WithEvents cbx6 As System.Windows.Forms.CheckBox + Friend WithEvents FNotePrevious As Button + Friend WithEvents FNoteNext As Button End Class diff --git a/iBMSC/Dialogs/diagFind.resx b/iBMSC/Dialogs/dgFind.resx similarity index 100% rename from iBMSC/Dialogs/diagFind.resx rename to iBMSC/Dialogs/dgFind.resx diff --git a/iBMSC/Dialogs/dgFind.vb b/iBMSC/Dialogs/dgFind.vb new file mode 100644 index 000000000..996f6e0b6 --- /dev/null +++ b/iBMSC/Dialogs/dgFind.vb @@ -0,0 +1,155 @@ +Imports System.Windows.Forms + +Public Class dgFind + Dim bCol As Integer = 46 + Dim msg1 As String = "Error" + Dim msg2 As String = "Invalid label." + + Public Sub New(ByVal xbCol As Integer, ByVal xmsg1 As String, ByVal xmsg2 As String) + InitializeComponent() + bCol = xbCol + msg1 = xmsg1 + msg2 = xmsg2 + End Sub + + Private Sub CloseDialog(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBClose.Click + Me.Close() + End Sub + + Private Sub BSAll_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BSAll.Click + For Each xCB As CheckBox In Panel1.Controls + xCB.Checked = True + Next + End Sub + Private Sub BSInv_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BSInv.Click + For Each xCB As CheckBox In Panel1.Controls + xCB.Checked = Not xCB.Checked + Next + End Sub + Private Sub BSNone_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BSNone.Click + For Each xCB As CheckBox In Panel1.Controls + xCB.Checked = False + Next + End Sub + + Private Sub diagFind_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load + Me.Font = MainWindow.Font + Dim xBold As New Font(Me.Font, FontStyle.Bold) + + TBSelect.Font = xBold + Label8.Font = xBold + Label9.Font = xBold + + 'Dim xS() As String = Form1.lpfdr + Me.Text = MainWindow.TBFind.Text + + Label1.Text = Strings.fFind.NoteRange + Label2.Text = Strings.fFind.MeasureRange + Label3.Text = Strings.fFind.LabelRange + Label4.Text = Strings.fFind.ValueRange + Label5.Text = Strings.fFind.to_ + Label6.Text = Strings.fFind.to_ + Label7.Text = Strings.fFind.to_ + + cbx1.Text = Strings.fFind.Selected + cbx2.Text = Strings.fFind.UnSelected + cbx3.Text = Strings.fFind.ShortNote + cbx4.Text = Strings.fFind.LongNote + cbx5.Text = Strings.fFind.Hidden + cbx6.Text = Strings.fFind.Visible + + Label8.Text = Strings.fFind.Column + BSAll.Text = Strings.fFind.SelectAll + BSInv.Text = Strings.fFind.SelectInverse + BSNone.Text = Strings.fFind.UnselectAll + + Label9.Text = Strings.fFind.Operation + TBrl.Text = Strings.fFind.ReplaceWithLabel + TBrv.Text = Strings.fFind.ReplaceWithValue + TBSelect.Text = Strings.fFind.Select_ + TBUnselect.Text = Strings.fFind.Unselect_ + TBDelete.Text = Strings.fFind.Delete_ + TBClose.Text = Strings.fFind.Close_ + + For xI1 As Integer = 27 To bCol + Dim xCB As New CheckBox + With xCB + .Appearance = Appearance.Button + .Checked = True + .FlatStyle = FlatStyle.System + .Location = New Point(((xI1 - 26) Mod 8) * 35 + 3, ((xI1 - 26) \ 8) * 25 + 103) + .Size = New Size(35, 25) + .Tag = xI1 + .Text = "B" & (xI1 - 25).ToString + .TextAlign = ContentAlignment.MiddleCenter + .UseVisualStyleBackColor = True + End With + Panel1.Controls.Add(xCB) + Next + + AddHandler lr1.KeyDown, AddressOf lblKeyDown + AddHandler lr2.KeyDown, AddressOf lblKeyDown + AddHandler Ttl.KeyDown, AddressOf lblKeyDown + End Sub + + Private Function ValidLabel(ByVal xStr As String) As Boolean + xStr = UCase(Trim(xStr)) + + If Len(xStr) = 0 Then Return False + If xStr = "00" Or xStr = "0" Then Return False + If Not Len(xStr) = 1 And Not Len(xStr) = 2 Then Return False + + Dim xI3 As Integer = Asc(Mid(xStr, 1, 1)) + If Not ((xI3 >= 48 And xI3 <= 57) Or (xI3 >= 65 And xI3 <= 90)) Then Return False + If Len(xStr) = 2 Then + Dim xI4 As Integer = Asc(Mid(xStr, 2, 1)) + If Not ((xI4 >= 48 And xI4 <= 57) Or (xI4 >= 65 And xI4 <= 90)) Then Return False + End If + Return True + MsgBox(msg2, MsgBoxStyle.Critical, msg1) + End Function + + Private Sub lblKeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) + If Not e.KeyCode = Keys.Enter Then Exit Sub + ValidateLabel(sender) + End Sub + + Private Function ValidateLabel(ByVal sender As Object) As Boolean + Dim TextboxS As TextBox = CType(sender, TextBox) + Dim xBool As Boolean = ValidLabel(TextboxS.Text) + If Not xBool Then + MsgBox(msg2, MsgBoxStyle.Critical, msg1) + TextboxS.Focus() + TextboxS.SelectAll() + End If + Return xBool + End Function + + Private Sub NoteFunction(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBSelect.Click, TBUnselect.Click, FNotePrevious.Click, FNoteNext.Click, TBrl.Click, TBrv.Click, TBDelete.Click + If Not ValidateLabel(lr1) Or Not ValidateLabel(lr2) Then Exit Sub + + Dim LabelS As String = CType(sender, Button).Name + Dim xCol() As Integer = {} + For Each xCB As CheckBox In Panel1.Controls + If xCB.Checked Then + ReDim Preserve xCol(UBound(xCol) + 1) + xCol(UBound(xCol)) = CInt(xCB.Tag) + End If + Next + + Dim ArrCB() As CheckBox = {cbx1, cbx2, cbx3, cbx4, cbx5, cbx6} + Dim xRange(UBound(ArrCB)) As Boolean + For i = 0 To UBound(ArrCB) + xRange(i) = ArrCB(i).Checked + Next + + Dim xReplaceLbl As String = Ttl.Text + Dim xReplaceVal As Integer = CInt(Ttv.Value * 10000) + + MainWindow.fdrFind(xRange, + CInt(mr1.Value), CInt(mr2.Value), + lr1.Text, lr2.Text, + CInt(vr1.Value * 10000), CInt(vr2.Value * 10000), + xCol, LabelS, xReplaceLbl, xReplaceVal) + End Sub +End Class diff --git a/iBMSC/Dialogs/dgMyO2.vb b/iBMSC/Dialogs/dgMyO2.vb index 26f754c68..c411337c9 100644 --- a/iBMSC/Dialogs/dgMyO2.vb +++ b/iBMSC/Dialogs/dgMyO2.vb @@ -33,7 +33,7 @@ Public Class dgMyO2 End Sub Private Sub bApply1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bApply1.Click - MainWindow.MyO2ConstBPM(vBPM.Value * 10000) + MainWindow.MyO2ConstBPM(CInt(vBPM.Value * 10000)) End Sub Private Sub bApply2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bApply2.Click @@ -44,15 +44,15 @@ Public Class dgMyO2 For xI1 As Integer = 0 To UBound(Aj) Dim xW() As String = Split(xStrItem(xI1), "_") With Aj(xI1) - .Measure = Val(xW(0)) - .ColumnIndex = Val(xW(1)) + .Measure = CInt(xW(0)) + .ColumnIndex = CInt(xW(1)) .ColumnName = xW(2) .Grid = xW(3) - .LongNote = Val(xW(4)) - .Hidden = Val(xW(5)) - .AdjTo64 = Val(xW(6)) - .D64 = Val(xW(7)) - .D48 = Val(xW(8)) + .LongNote = CBool(xW(4)) + .Hidden = CBool(xW(5)) + .AdjTo64 = CBool(xW(6)) + .D64 = CInt(xW(7)) + .D48 = CInt(xW(8)) End With AddAdjItem(Aj(xI1), xI1) @@ -70,6 +70,6 @@ Public Class dgMyO2 Private Sub lResult_CellEndEdit(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles lResult.CellEndEdit If e.ColumnIndex <> 6 Then Return If e.RowIndex < 0 Then Return - Aj(Val(lResult.Item(0, e.RowIndex).Value)).AdjTo64 = lResult.Item(6, e.RowIndex).Value + Aj(CInt(lResult.Item(0, e.RowIndex).Value)).AdjTo64 = CBool(lResult.Item(6, e.RowIndex).Value) End Sub End Class diff --git a/iBMSC/Dialogs/dgStatistics.vb b/iBMSC/Dialogs/dgStatistics.vb index db0e97053..27cd867a6 100644 --- a/iBMSC/Dialogs/dgStatistics.vb +++ b/iBMSC/Dialogs/dgStatistics.vb @@ -80,7 +80,7 @@ Public Class dgStatistics xLabel.TextAlign = ContentAlignment.MiddleCenter xLabel.Margin = New Padding(0) xLabel.Font = New Font(Me.Font, FontStyle.Bold) - If data(row - 1, col - 1) <> 0 Then xLabel.Text = data(row - 1, col - 1) + If data(row - 1, col - 1) <> 0 Then xLabel.Text = CStr(data(row - 1, col - 1)) If row Mod 2 = 1 Then xLabel.BackColor = Color.FromArgb(&H10000000) TableLayoutPanel1.Controls.Add(xLabel, col, row) Next @@ -100,7 +100,7 @@ Public Class dgStatistics Private Function C10to36(ByVal xStart As Long) As String ' Copied from Utilities If xStart < 1 Then xStart = 1 If xStart > 1295 Then xStart = 1295 - Return C10to36S(xStart \ 36) & C10to36S(xStart Mod 36) + Return C10to36S(CInt(xStart \ 36)) & C10to36S(CInt(xStart Mod 36)) End Function Private Function C10to36S(ByVal xStart As Integer) As Char ' Copied from Utilities If xStart < 10 Then Return CChar(CStr(xStart)) Else Return Chr(xStart + 55) diff --git a/iBMSC/Dialogs/dgStatisticsLegacy.vb b/iBMSC/Dialogs/dgStatisticsLegacy.vb index 3e964f6db..a7825815c 100644 --- a/iBMSC/Dialogs/dgStatisticsLegacy.vb +++ b/iBMSC/Dialogs/dgStatisticsLegacy.vb @@ -41,7 +41,7 @@ Public Class dgStatisticsLegacy xLabel.TextAlign = ContentAlignment.MiddleCenter xLabel.Margin = New Padding(0) xLabel.Font = New Font(Me.Font, FontStyle.Bold) - If data(row, col) <> 0 Then xLabel.Text = data(row, col) + If data(row, col) <> 0 Then xLabel.Text = CStr(data(row, col)) If row Mod 2 = 0 Then xLabel.BackColor = Color.FromArgb(&H10000000) TableLayoutPanel1.Controls.Add(xLabel, col + 1, row + 1) Next diff --git a/iBMSC/Dialogs/diagFind.vb b/iBMSC/Dialogs/diagFind.vb deleted file mode 100644 index 262f4d471..000000000 --- a/iBMSC/Dialogs/diagFind.vb +++ /dev/null @@ -1,316 +0,0 @@ -Imports System.Windows.Forms - -Public Class diagFind - Dim bCol As Integer = 46 - Dim msg1 As String = "Error" - Dim msg2 As String = "Invalid label." - - Public Sub New(ByVal xbCol As Integer, ByVal xmsg1 As String, ByVal xmsg2 As String) - InitializeComponent() - bCol = xbCol - msg1 = xmsg1 - msg2 = xmsg2 - End Sub - - Private Sub CloseDialog(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBClose.Click - Me.Close() - End Sub - - Private Sub BSAll_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BSAll.Click - For Each xCB As CheckBox In Panel1.Controls - xCB.Checked = True - Next - End Sub - Private Sub BSInv_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BSInv.Click - For Each xCB As CheckBox In Panel1.Controls - xCB.Checked = Not xCB.Checked - Next - End Sub - Private Sub BSNone_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BSNone.Click - For Each xCB As CheckBox In Panel1.Controls - xCB.Checked = False - Next - End Sub - - Private Sub diagFind_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load - Me.Font = MainWindow.Font - Dim xBold As New Font(Me.Font, FontStyle.Bold) - - TBSelect.Font = xBold - Label8.Font = xBold - Label9.Font = xBold - - 'Dim xS() As String = Form1.lpfdr - Me.Text = MainWindow.TBFind.Text - - Label1.Text = Strings.fFind.NoteRange - Label2.Text = Strings.fFind.MeasureRange - Label3.Text = Strings.fFind.LabelRange - Label4.Text = Strings.fFind.ValueRange - Label5.Text = Strings.fFind.to_ - Label6.Text = Strings.fFind.to_ - Label7.Text = Strings.fFind.to_ - - cbx1.Text = Strings.fFind.Selected - cbx2.Text = Strings.fFind.UnSelected - cbx3.Text = Strings.fFind.ShortNote - cbx4.Text = Strings.fFind.LongNote - cbx5.Text = Strings.fFind.Hidden - cbx6.Text = Strings.fFind.Visible - - Label8.Text = Strings.fFind.Column - BSAll.Text = Strings.fFind.SelectAll - BSInv.Text = Strings.fFind.SelectInverse - BSNone.Text = Strings.fFind.UnselectAll - - Label9.Text = Strings.fFind.Operation - TBrl.Text = Strings.fFind.ReplaceWithLabel - TBrv.Text = Strings.fFind.ReplaceWithValue - TBSelect.Text = Strings.fFind.Select_ - TBUnselect.Text = Strings.fFind.Unselect_ - TBDelete.Text = Strings.fFind.Delete_ - TBClose.Text = Strings.fFind.Close_ - - For xI1 As Integer = 27 To bCol - Dim xCB As New CheckBox - With xCB - .Appearance = Appearance.Button - .Checked = True - .FlatStyle = FlatStyle.System - .Location = New Point(((xI1 - 26) Mod 8) * 35 + 3, ((xI1 - 26) \ 8) * 25 + 103) - .Size = New Size(35, 25) - .Tag = xI1 - .Text = "B" & (xI1 - 25).ToString - .TextAlign = ContentAlignment.MiddleCenter - .UseVisualStyleBackColor = True - End With - Panel1.Controls.Add(xCB) - Next - - AddHandler lr1.KeyDown, AddressOf lblKeyDown - AddHandler lr2.KeyDown, AddressOf lblKeyDown - AddHandler Ttl.KeyDown, AddressOf lblKeyDown - End Sub - - Private Function ValidLabel(ByVal xStr As String) As Boolean - xStr = UCase(Trim(xStr)) - - If Len(xStr) = 0 Then Return False - If xStr = "00" Or xStr = "0" Then Return False - If Not Len(xStr) = 1 And Not Len(xStr) = 2 Then Return False - - Dim xI3 As Integer = Asc(Mid(xStr, 1, 1)) - If Not ((xI3 >= 48 And xI3 <= 57) Or (xI3 >= 65 And xI3 <= 90)) Then Return False - If Len(xStr) = 2 Then - Dim xI4 As Integer = Asc(Mid(xStr, 2, 1)) - If Not ((xI4 >= 48 And xI4 <= 57) Or (xI4 >= 65 And xI4 <= 90)) Then Return False - End If - Return True - MsgBox(msg2, MsgBoxStyle.Critical, msg1) - End Function - - Private Sub lblKeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) - If Not e.KeyCode = Keys.Enter Then Exit Sub - ValidateLabel(sender) - End Sub - - Private Function ValidateLabel(ByVal sender As Object) As Boolean - Dim xBool As Boolean = ValidLabel(sender.Text) - If Not xBool Then - MsgBox(msg2, MsgBoxStyle.Critical, msg1) - sender.Focus() - sender.SelectAll() - End If - ValidateLabel = xBool - End Function - - Private Sub TBSelect_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBSelect.Click - If Not ValidateLabel(lr1) Then Exit Sub - If Not ValidateLabel(lr2) Then Exit Sub - - Dim xCol() As Integer = {} - For Each xCB As CheckBox In Panel1.Controls - If xCB.Checked Then - ReDim Preserve xCol(UBound(xCol) + 1) - xCol(UBound(xCol)) = xCB.Tag - End If - Next - - Dim xRange As Integer = 1 - If cbx1.Checked Then xRange *= 2 - If cbx2.Checked Then xRange *= 3 - If cbx3.Checked Then xRange *= 5 - If cbx4.Checked Then xRange *= 7 - If cbx5.Checked Then xRange *= 11 - If cbx6.Checked Then xRange *= 13 - - MainWindow.fdrSelect(xRange, - mr1.Value, mr2.Value, - lr1.Text, lr2.Text, - vr1.Value * 10000, vr2.Value * 10000, - xCol) - End Sub - - Private Sub TBUnselect_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBUnselect.Click - If Not ValidateLabel(lr1) Then Exit Sub - If Not ValidateLabel(lr2) Then Exit Sub - - Dim xCol() As Integer = {} - For Each xCB As CheckBox In Panel1.Controls - If xCB.Checked Then - ReDim Preserve xCol(UBound(xCol) + 1) - xCol(UBound(xCol)) = xCB.Tag - End If - Next - - Dim xRange As Integer = 1 - If cbx1.Checked Then xRange *= 2 - If cbx2.Checked Then xRange *= 3 - If cbx3.Checked Then xRange *= 5 - If cbx4.Checked Then xRange *= 7 - If cbx5.Checked Then xRange *= 11 - If cbx6.Checked Then xRange *= 13 - - MainWindow.fdrUnselect(xRange, - mr1.Value, mr2.Value, - lr1.Text, lr2.Text, - vr1.Value * 10000, vr2.Value * 10000, - xCol) - End Sub - - Private Sub TBDelete_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBDelete.Click - If Not ValidateLabel(lr1) Then Exit Sub - If Not ValidateLabel(lr2) Then Exit Sub - - Dim xCol() As Integer = {} - For Each xCB As CheckBox In Panel1.Controls - If xCB.Checked Then - ReDim Preserve xCol(UBound(xCol) + 1) - xCol(UBound(xCol)) = xCB.Tag - End If - Next - - Dim xRange As Integer = 1 - If cbx1.Checked Then xRange *= 2 - If cbx2.Checked Then xRange *= 3 - If cbx3.Checked Then xRange *= 5 - If cbx4.Checked Then xRange *= 7 - If cbx5.Checked Then xRange *= 11 - If cbx6.Checked Then xRange *= 13 - - MainWindow.fdrDelete(xRange, - mr1.Value, mr2.Value, - lr1.Text, lr2.Text, - vr1.Value * 10000, vr2.Value * 10000, - xCol) - End Sub - - Private Sub TBrl_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBrl.Click - If Not ValidateLabel(lr1) Then Exit Sub - If Not ValidateLabel(lr2) Then Exit Sub - If Not ValidateLabel(Ttl) Then Exit Sub - - Dim xCol() As Integer = {} - For Each xCB As CheckBox In Panel1.Controls - If xCB.Checked Then - ReDim Preserve xCol(UBound(xCol) + 1) - xCol(UBound(xCol)) = xCB.Tag - End If - Next - - Dim xRange As Integer = 1 - If cbx1.Checked Then xRange *= 2 - If cbx2.Checked Then xRange *= 3 - If cbx3.Checked Then xRange *= 5 - If cbx4.Checked Then xRange *= 7 - If cbx5.Checked Then xRange *= 11 - If cbx6.Checked Then xRange *= 13 - - MainWindow.fdrReplaceL(xRange, - mr1.Value, mr2.Value, - lr1.Text, lr2.Text, - vr1.Value * 10000, vr2.Value * 10000, - xCol, Ttl.Text) - End Sub - - Private Sub TBrv_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBrv.Click - If Not ValidateLabel(lr1) Then Exit Sub - If Not ValidateLabel(lr2) Then Exit Sub - - Dim xCol() As Integer = {} - For Each xCB As CheckBox In Panel1.Controls - If xCB.Checked Then - ReDim Preserve xCol(UBound(xCol) + 1) - xCol(UBound(xCol)) = xCB.Tag - End If - Next - - Dim xRange As Integer = 1 - If cbx1.Checked Then xRange *= 2 - If cbx2.Checked Then xRange *= 3 - If cbx3.Checked Then xRange *= 5 - If cbx4.Checked Then xRange *= 7 - If cbx5.Checked Then xRange *= 11 - If cbx6.Checked Then xRange *= 13 - - MainWindow.fdrReplaceV(xRange, - mr1.Value, mr2.Value, - lr1.Text, lr2.Text, - vr1.Value * 10000, vr2.Value * 10000, - xCol, Ttv.Value * 10000) - End Sub - - Private Sub FNotePrevious_Click(sender As Object, e As EventArgs) Handles FNotePrevious.Click - If Not ValidateLabel(lr1) Then Exit Sub - If Not ValidateLabel(lr2) Then Exit Sub - - Dim xCol() As Integer = {} - For Each xCB As CheckBox In Panel1.Controls - If xCB.Checked Then - ReDim Preserve xCol(UBound(xCol) + 1) - xCol(UBound(xCol)) = xCB.Tag - End If - Next - - Dim xRange As Integer = 1 - If cbx1.Checked Then xRange *= 2 - If cbx2.Checked Then xRange *= 3 - If cbx3.Checked Then xRange *= 5 - If cbx4.Checked Then xRange *= 7 - If cbx5.Checked Then xRange *= 11 - If cbx6.Checked Then xRange *= 13 - - MainWindow.fdrPrevious(xRange, - mr1.Value, mr2.Value, - lr1.Text, lr2.Text, - vr1.Value * 10000, vr2.Value * 10000, - xCol) - End Sub - - Private Sub FNoteNext_Click(sender As Object, e As EventArgs) Handles FNoteNext.Click - If Not ValidateLabel(lr1) Then Exit Sub - If Not ValidateLabel(lr2) Then Exit Sub - - Dim xCol() As Integer = {} - For Each xCB As CheckBox In Panel1.Controls - If xCB.Checked Then - ReDim Preserve xCol(UBound(xCol) + 1) - xCol(UBound(xCol)) = xCB.Tag - End If - Next - - Dim xRange As Integer = 1 - If cbx1.Checked Then xRange *= 2 - If cbx2.Checked Then xRange *= 3 - If cbx3.Checked Then xRange *= 5 - If cbx4.Checked Then xRange *= 7 - If cbx5.Checked Then xRange *= 11 - If cbx6.Checked Then xRange *= 13 - - MainWindow.fdrNext(xRange, - mr1.Value, mr2.Value, - lr1.Text, lr2.Text, - vr1.Value * 10000, vr2.Value * 10000, - xCol) - End Sub -End Class diff --git a/iBMSC/EditorColumns.vb b/iBMSC/EditorColumns.vb index 0bfbda76b..cdc9829f6 100644 --- a/iBMSC/EditorColumns.vb +++ b/iBMSC/EditorColumns.vb @@ -134,10 +134,10 @@ Partial Public Class MainWindow If iCol < niB Then Return column(iCol) Else Return column(niB) End Function - Private Function BMSEChannelToColumnIndex(ByVal I As String) + Private Function BMSEChannelToColumnIndex(ByVal I As String) As Integer Dim Ivalue = Val(I) If Ivalue > 100 Then - Return niB + Ivalue - 101 + Return CInt(niB + Ivalue - 101) ElseIf Ivalue < 100 And Ivalue > 0 Then Return BMSChannelToColumn(Mid(I, 2, 2)) End If diff --git a/iBMSC/EditorPersistent.vb b/iBMSC/EditorPersistent.vb index 7e64d98af..023912c04 100644 --- a/iBMSC/EditorPersistent.vb +++ b/iBMSC/EditorPersistent.vb @@ -4,21 +4,21 @@ Partial Public Class MainWindow Private Sub XMLWriteColumn(ByVal w As XmlTextWriter, ByVal I As Integer) w.WriteStartElement("Column") - w.WriteAttributeString("Index", I) + w.WriteAttributeString("Index", I.ToString()) With column(I) 'w.WriteAttributeString("Left", .Left) - w.WriteAttributeString("Width", .Width) + w.WriteAttributeString("Width", .Width.ToString()) w.WriteAttributeString("Title", .Title) 'w.WriteAttributeString("Text", .Text) 'w.WriteAttributeString("Enabled", .Enabled) 'w.WriteAttributeString("isNumeric", .isNumeric) 'w.WriteAttributeString("Visible", .Visible) 'w.WriteAttributeString("Identifier", .Identifier) - w.WriteAttributeString("NoteColor", .cNote) - w.WriteAttributeString("TextColor", .cText.ToArgb) - w.WriteAttributeString("LongNoteColor", .cLNote) - w.WriteAttributeString("LongTextColor", .cLText.ToArgb) - w.WriteAttributeString("BG", .cBG.ToArgb) + w.WriteAttributeString("NoteColor", .cNote.ToString()) + w.WriteAttributeString("TextColor", .cText.ToArgb.ToString()) + w.WriteAttributeString("LongNoteColor", .cLNote.ToString()) + w.WriteAttributeString("LongTextColor", .cLText.ToArgb.ToString()) + w.WriteAttributeString("BG", .cBG.ToArgb.ToString()) End With w.WriteEndElement() End Sub @@ -26,14 +26,14 @@ Partial Public Class MainWindow Private Sub XMLWriteFont(ByVal w As XmlTextWriter, ByVal local As String, ByVal f As Font) w.WriteStartElement(local) w.WriteAttributeString("Name", f.FontFamily.Name) - w.WriteAttributeString("Size", f.SizeInPoints) - w.WriteAttributeString("Style", f.Style) + w.WriteAttributeString("Size", f.SizeInPoints.ToString()) + w.WriteAttributeString("Style", CInt(f.Style).ToString()) w.WriteEndElement() End Sub Private Sub XMLWritePlayerArguments(ByVal w As XmlTextWriter, ByVal I As Integer) w.WriteStartElement("Player") - w.WriteAttributeString("Index", I) + w.WriteAttributeString("Index", I.ToString()) w.WriteAttributeString("Path", pArgs(I).Path) w.WriteAttributeString("FromBeginning", pArgs(I).aBegin) w.WriteAttributeString("FromHere", pArgs(I).aHere) @@ -43,11 +43,11 @@ Partial Public Class MainWindow Private Sub XMLWriteKeybindings(ByVal w As XmlTextWriter, ByVal I As Integer) w.WriteStartElement("Option") - w.WriteAttributeString("Index", I) + w.WriteAttributeString("Index", I.ToString()) w.WriteAttributeString("Name", Keybindings(I).OpName) w.WriteAttributeString("Description", Keybindings(I).Description) w.WriteAttributeString("Combos", Join(Keybindings(I).Combo, ", ")) - w.WriteAttributeString("Category", Keybindings(I).Category) + w.WriteAttributeString("Category", Keybindings(I).Category.ToString()) w.WriteEndElement() End Sub @@ -59,18 +59,18 @@ Partial Public Class MainWindow .Indentation = 4 .WriteStartElement("iBMSC") - .WriteAttributeString("Major", My.Application.Info.Version.Major) - .WriteAttributeString("Minor", My.Application.Info.Version.Minor) - .WriteAttributeString("Build", My.Application.Info.Version.Build) + .WriteAttributeString("Major", My.Application.Info.Version.Major.ToString()) + .WriteAttributeString("Minor", My.Application.Info.Version.Minor.ToString()) + .WriteAttributeString("Build", My.Application.Info.Version.Build.ToString()) If ThemeOnly Then GoTo 5000 .WriteStartElement("Form") - .WriteAttributeString("WindowState", IIf(isFullScreen, previousWindowState, Me.WindowState)) - .WriteAttributeString("Width", IIf(isFullScreen, previousWindowPosition.Width, Me.Width)) - .WriteAttributeString("Height", IIf(isFullScreen, previousWindowPosition.Height, Me.Height)) - .WriteAttributeString("Top", IIf(isFullScreen, previousWindowPosition.Top, Me.Top)) - .WriteAttributeString("Left", IIf(isFullScreen, previousWindowPosition.Left, Me.Left)) + .WriteAttributeString("WindowState", IIf(isFullScreen, previousWindowState, Me.WindowState).ToString()) + .WriteAttributeString("Width", IIf(isFullScreen, previousWindowPosition.Width, Me.Width).ToString()) + .WriteAttributeString("Height", IIf(isFullScreen, previousWindowPosition.Height, Me.Height).ToString()) + .WriteAttributeString("Top", IIf(isFullScreen, previousWindowPosition.Top, Me.Top).ToString()) + .WriteAttributeString("Left", IIf(isFullScreen, previousWindowPosition.Left, Me.Left).ToString()) .WriteEndElement() .WriteStartElement("Recent") @@ -82,95 +82,95 @@ Partial Public Class MainWindow .WriteEndElement() .WriteStartElement("Edit") - .WriteAttributeString("NTInput", NTInput) + .WriteAttributeString("NTInput", NTInput.ToString()) .WriteAttributeString("Language", DispLang) '.WriteAttributeString("SortingMethod", SortingMethod) - .WriteAttributeString("ErrorCheck", ErrorCheck) - .WriteAttributeString("AutoFocusMouseEnter", AutoFocusMouseEnter) - .WriteAttributeString("FirstClickDisabled", FirstClickDisabled) - .WriteAttributeString("ShowFileName", ShowFileName) - .WriteAttributeString("ShowWaveform", ShowWaveform) - .WriteAttributeString("MiddleButtonMoveMethod", MiddleButtonMoveMethod) - .WriteAttributeString("AutoSaveInterval", AutoSaveInterval) - .WriteAttributeString("PreviewOnClick", PreviewOnClick) + .WriteAttributeString("ErrorCheck", ErrorCheck.ToString()) + .WriteAttributeString("AutoFocusMouseEnter", AutoFocusMouseEnter.ToString()) + .WriteAttributeString("FirstClickDisabled", FirstClickDisabled.ToString()) + .WriteAttributeString("ShowFileName", ShowFileName.ToString()) + .WriteAttributeString("ShowWaveform", ShowWaveform.ToString()) + .WriteAttributeString("MiddleButtonMoveMethod", MiddleButtonMoveMethod.ToString()) + .WriteAttributeString("AutoSaveInterval", AutoSaveInterval.ToString()) + .WriteAttributeString("PreviewOnClick", PreviewOnClick.ToString()) '.WriteAttributeString("PreviewErrorCheck", PreviewErrorCheck) - .WriteAttributeString("ClickStopPreview", ClickStopPreview) - .WriteAttributeString("JackBPM", ErrorJackBPM) - .WriteAttributeString("JackTH", ErrorJackTH) + .WriteAttributeString("ClickStopPreview", ClickStopPreview.ToString()) + .WriteAttributeString("JackBPM", ErrorJackBPM.ToString()) + .WriteAttributeString("JackTH", ErrorJackTH.ToString()) .WriteEndElement() .WriteStartElement("Save") .WriteAttributeString("TextEncoding", EncodingToString(TextEncoding)) - .WriteAttributeString("BMSGridLimit", BMSGridLimit) - .WriteAttributeString("BeepWhileSaved", BeepWhileSaved) - .WriteAttributeString("BPMx1296", BPMx1296) - .WriteAttributeString("STOPx1296", STOPx1296) + .WriteAttributeString("BMSGridLimit", BMSGridLimit.ToString()) + .WriteAttributeString("BeepWhileSaved", BeepWhileSaved.ToString()) + .WriteAttributeString("BPMx1296", BPMx1296.ToString()) + .WriteAttributeString("STOPx1296", STOPx1296.ToString()) .WriteEndElement() .WriteStartElement("WAV") - .WriteAttributeString("WAVMultiSelect", WAVMultiSelect) - .WriteAttributeString("WAVChangeLabel", WAVChangeLabel) - .WriteAttributeString("BeatChangeMode", BeatChangeMode) + .WriteAttributeString("WAVMultiSelect", WAVMultiSelect.ToString()) + .WriteAttributeString("WAVChangeLabel", WAVChangeLabel.ToString()) + .WriteAttributeString("BeatChangeMode", BeatChangeMode.ToString()) .WriteEndElement() .WriteStartElement("ShowHide") - .WriteAttributeString("showMenu", mnSMenu.Checked) - .WriteAttributeString("showTB", mnSTB.Checked) - .WriteAttributeString("showOpPanel", mnSOP.Checked) - .WriteAttributeString("showStatus", mnSStatus.Checked) - .WriteAttributeString("showLSplit", mnSLSplitter.Checked) - .WriteAttributeString("showRSplit", mnSRSplitter.Checked) + .WriteAttributeString("showMenu", mnSMenu.Checked.ToString()) + .WriteAttributeString("showTB", mnSTB.Checked.ToString()) + .WriteAttributeString("showOpPanel", mnSOP.Checked.ToString()) + .WriteAttributeString("showStatus", mnSStatus.Checked.ToString()) + .WriteAttributeString("showLSplit", mnSLSplitter.Checked.ToString()) + .WriteAttributeString("showRSplit", mnSRSplitter.Checked.ToString()) .WriteEndElement() .WriteStartElement("Grid") - .WriteAttributeString("gSnap", gSnap) - .WriteAttributeString("xmlDisableVertical", DisableVerticalMove) - .WriteAttributeString("gWheel", gWheel) - .WriteAttributeString("gPgUpDn", gPgUpDn) - .WriteAttributeString("gShow", gShowGrid) - .WriteAttributeString("gShowS", gShowSubGrid) - .WriteAttributeString("gShowBG", gShowBG) - .WriteAttributeString("gShowM", gShowMeasureNumber) - .WriteAttributeString("gShowV", gShowVerticalLine) - .WriteAttributeString("gShowMB", gShowMeasureBar) - .WriteAttributeString("gShowC", gShowC) - .WriteAttributeString("gBPM", gBPM) - .WriteAttributeString("gSTOP", gSTOP) - .WriteAttributeString("gSCROLL", gSCROLL) - .WriteAttributeString("gBLP", gDisplayBGAColumn) - .WriteAttributeString("gP2", CHPlayer.SelectedIndex) - .WriteAttributeString("gCol", CGB.Value) - .WriteAttributeString("gDivide", gDivide) - .WriteAttributeString("gSub", gSub) - .WriteAttributeString("gSlash", gSlash) - .WriteAttributeString("gxHeight", gxHeight) - .WriteAttributeString("gxWidth", gxWidth) + .WriteAttributeString("gSnap", gSnap.ToString()) + .WriteAttributeString("xmlDisableVertical", DisableVerticalMove.ToString()) + .WriteAttributeString("gWheel", gWheel.ToString()) + .WriteAttributeString("gPgUpDn", gPgUpDn.ToString()) + .WriteAttributeString("gShow", gShowGrid.ToString()) + .WriteAttributeString("gShowS", gShowSubGrid.ToString()) + .WriteAttributeString("gShowBG", gShowBG.ToString()) + .WriteAttributeString("gShowM", gShowMeasureNumber.ToString()) + .WriteAttributeString("gShowV", gShowVerticalLine.ToString()) + .WriteAttributeString("gShowMB", gShowMeasureBar.ToString()) + .WriteAttributeString("gShowC", gShowC.ToString()) + .WriteAttributeString("gBPM", gBPM.ToString()) + .WriteAttributeString("gSTOP", gSTOP.ToString()) + .WriteAttributeString("gSCROLL", gSCROLL.ToString()) + .WriteAttributeString("gBLP", gDisplayBGAColumn.ToString()) + .WriteAttributeString("gP2", CHPlayer.SelectedIndex.ToString()) + .WriteAttributeString("gCol", CGB.Value.ToString()) + .WriteAttributeString("gDivide", gDivide.ToString()) + .WriteAttributeString("gSub", gSub.ToString()) + .WriteAttributeString("gSlash", gSlash.ToString()) + .WriteAttributeString("gxHeight", gxHeight.ToString()) + .WriteAttributeString("gxWidth", gxWidth.ToString()) .WriteEndElement() .WriteStartElement("WaveForm") - .WriteAttributeString("wLock", wLock) - .WriteAttributeString("wPosition", wPosition) - .WriteAttributeString("wLeft", wLeft) - .WriteAttributeString("wWidth", wWidth) - .WriteAttributeString("wPrecision", wPrecision) + .WriteAttributeString("wLock", wLock.ToString()) + .WriteAttributeString("wPosition", wPosition.ToString()) + .WriteAttributeString("wLeft", wLeft.ToString()) + .WriteAttributeString("wWidth", wWidth.ToString()) + .WriteAttributeString("wPrecision", wPrecision.ToString()) .WriteEndElement() .WriteStartElement("Player") - .WriteAttributeString("Count", pArgs.Length) - .WriteAttributeString("CurrentPlayer", CurrentPlayer) + .WriteAttributeString("Count", pArgs.Length.ToString()) + .WriteAttributeString("CurrentPlayer", CurrentPlayer.ToString()) For i As Integer = 0 To UBound(pArgs) XMLWritePlayerArguments(w, i) : Next .WriteEndElement() .WriteStartElement("Total") - .WriteAttributeString("Option", TotalOption) - .WriteAttributeString("Multiplier", TotalMultiplier) - .WriteAttributeString("GlobalMultiplier", TotalGlobalMultiplier) - .WriteAttributeString("RecommendedTextDisplay", TotalRecommendedTextDisplay) + .WriteAttributeString("Option", TotalOption.ToString()) + .WriteAttributeString("Multiplier", TotalMultiplier.ToString()) + .WriteAttributeString("GlobalMultiplier", TotalGlobalMultiplier.ToString()) + .WriteAttributeString("RecommendedTextDisplay", TotalRecommendedTextDisplay.ToString()) .WriteEndElement() .WriteStartElement("KeyBindings") - .WriteAttributeString("Count", UBound(Keybindings)) + .WriteAttributeString("Count", UBound(Keybindings).ToString()) For i As Integer = 0 To UBound(Keybindings) XMLWriteKeybindings(w, i) : Next .WriteEndElement() @@ -182,33 +182,33 @@ Partial Public Class MainWindow .WriteEndElement() .WriteStartElement("VisualSettings") - XMLWriteValue(w, "ColumnTitle", vo.ColumnTitle.Color.ToArgb) + XMLWriteValue(w, "ColumnTitle", vo.ColumnTitle.Color.ToArgb.ToString()) XMLWriteFont(w, "ColumnTitleFont", vo.ColumnTitleFont) - XMLWriteValue(w, "Bg", vo.Bg.Color.ToArgb) - XMLWriteValue(w, "Grid", vo.pGrid.Color.ToArgb) - XMLWriteValue(w, "Sub", vo.pSub.Color.ToArgb) - XMLWriteValue(w, "VLine", vo.pVLine.Color.ToArgb) - XMLWriteValue(w, "MLine", vo.pMLine.Color.ToArgb) - XMLWriteValue(w, "BGMWav", vo.pBGMWav.Color.ToArgb) - XMLWriteValue(w, "SelBox", vo.SelBox.Color.ToArgb) - XMLWriteValue(w, "TSCursor", vo.PECursor.Color.ToArgb) - XMLWriteValue(w, "TSHalf", vo.PEHalf.Color.ToArgb) - XMLWriteValue(w, "TSDeltaMouseOver", vo.PEDeltaMouseOver) - XMLWriteValue(w, "TSMouseOver", vo.PEMouseOver.Color.ToArgb) - XMLWriteValue(w, "TSSel", vo.PESel.Color.ToArgb) - XMLWriteValue(w, "TSBPM", vo.PEBPM.Color.ToArgb) + XMLWriteValue(w, "Bg", vo.Bg.Color.ToArgb.ToString()) + XMLWriteValue(w, "Grid", vo.pGrid.Color.ToArgb.ToString()) + XMLWriteValue(w, "Sub", vo.pSub.Color.ToArgb.ToString()) + XMLWriteValue(w, "VLine", vo.pVLine.Color.ToArgb.ToString()) + XMLWriteValue(w, "MLine", vo.pMLine.Color.ToArgb.ToString()) + XMLWriteValue(w, "BGMWav", vo.pBGMWav.Color.ToArgb.ToString()) + XMLWriteValue(w, "SelBox", vo.SelBox.Color.ToArgb.ToString()) + XMLWriteValue(w, "TSCursor", vo.PECursor.Color.ToArgb.ToString()) + XMLWriteValue(w, "TSHalf", vo.PEHalf.Color.ToArgb.ToString()) + XMLWriteValue(w, "TSDeltaMouseOver", vo.PEDeltaMouseOver.ToString()) + XMLWriteValue(w, "TSMouseOver", vo.PEMouseOver.Color.ToArgb.ToString()) + XMLWriteValue(w, "TSSel", vo.PESel.Color.ToArgb.ToString()) + XMLWriteValue(w, "TSBPM", vo.PEBPM.Color.ToArgb.ToString()) XMLWriteFont(w, "TSBPMFont", vo.PEBPMFont) - XMLWriteValue(w, "MiddleDeltaRelease", vo.MiddleDeltaRelease) - XMLWriteValue(w, "kHeight", vo.kHeight) + XMLWriteValue(w, "MiddleDeltaRelease", vo.MiddleDeltaRelease.ToString()) + XMLWriteValue(w, "kHeight", vo.kHeight.ToString()) XMLWriteFont(w, "kFont", vo.kFont) XMLWriteFont(w, "kMFont", vo.kMFont) - XMLWriteValue(w, "kLabelVShift", vo.kLabelVShift) - XMLWriteValue(w, "kLabelHShift", vo.kLabelHShift) - XMLWriteValue(w, "kLabelHShiftL", vo.kLabelHShiftL) - XMLWriteValue(w, "kMouseOver", vo.kMouseOver.Color.ToArgb) - XMLWriteValue(w, "kMouseOverE", vo.kMouseOverE.Color.ToArgb) - XMLWriteValue(w, "kSelected", vo.kSelected.Color.ToArgb) - XMLWriteValue(w, "kOpacity", vo.kOpacity) + XMLWriteValue(w, "kLabelVShift", vo.kLabelVShift.ToString()) + XMLWriteValue(w, "kLabelHShift", vo.kLabelHShift.ToString()) + XMLWriteValue(w, "kLabelHShiftL", vo.kLabelHShiftL.ToString()) + XMLWriteValue(w, "kMouseOver", vo.kMouseOver.Color.ToArgb.ToString()) + XMLWriteValue(w, "kMouseOverE", vo.kMouseOverE.Color.ToArgb.ToString()) + XMLWriteValue(w, "kSelected", vo.kSelected.Color.ToArgb.ToString()) + XMLWriteValue(w, "kOpacity", vo.kOpacity.ToString()) .WriteEndElement() .WriteEndElement() @@ -228,19 +228,19 @@ Partial Public Class MainWindow .Indentation = 4 .WriteStartElement("ColorOverride") - .WriteAttributeString("Count", UBound(COverrides)) + .WriteAttributeString("Count", UBound(COverrides).ToString()) For i = 0 To UBound(COverrides) .WriteStartElement("Color") - .WriteAttributeString("Index", i) - .WriteAttributeString("Name", COverrides(i).Name) - .WriteAttributeString("RangeL", COverrides(i).RangeL) - .WriteAttributeString("RangeU", COverrides(i).RangeU) - .WriteAttributeString("NoteColor", COverrides(i).NoteColor) - .WriteAttributeString("TextColor", COverrides(i).TextColor) - .WriteAttributeString("LongNoteColor", COverrides(i).LongNoteColor) - .WriteAttributeString("LongTextColor", COverrides(i).LongTextColor) - .WriteAttributeString("BG", COverrides(i).BG) + .WriteAttributeString("Index", i.ToString()) + .WriteAttributeString("Name", COverrides(i).Name.ToString()) + .WriteAttributeString("RangeL", COverrides(i).RangeL.ToString()) + .WriteAttributeString("RangeU", COverrides(i).RangeU.ToString()) + .WriteAttributeString("NoteColor", COverrides(i).NoteColor.ToString()) + .WriteAttributeString("TextColor", COverrides(i).TextColor.ToString()) + .WriteAttributeString("LongNoteColor", COverrides(i).LongNoteColor.ToString()) + .WriteAttributeString("LongTextColor", COverrides(i).LongTextColor.ToString()) + .WriteAttributeString("BG", COverrides(i).BG.ToString()) .WriteEndElement() Next @@ -267,7 +267,7 @@ Partial Public Class MainWindow If n Is Nothing Then Exit Sub Dim xName As String = Me.Font.FontFamily.Name - Dim xSize As Integer = Me.Font.Size + Dim xSize As Integer = CInt(Me.Font.Size) Dim xStyle As Integer = Me.Font.Style XMLLoadAttribute(n.GetAttribute("Name"), xName) XMLLoadAttribute(n.GetAttribute("Size"), xSize) @@ -312,7 +312,7 @@ Partial Public Class MainWindow Dim Display As Boolean Dim attr = n.GetAttribute("Display") XMLLoadAttribute(attr, Display) - .isVisible = IIf(String.IsNullOrEmpty(attr), .isVisible, Display) + .isVisible = CBool(IIf(String.IsNullOrEmpty(attr), .isVisible, Display)) 'XMLLoadAttribute(n.GetAttribute("isNumeric"), .isNumeric) 'XMLLoadAttribute(n.GetAttribute("Visible"), .Visible) @@ -352,9 +352,9 @@ Partial Public Class MainWindow Dim Minor As Integer = My.Application.Info.Version.Minor Dim Build As Integer = My.Application.Info.Version.Build Try - Dim xMajor As Integer = Val(Root.Attributes("Major").Value) - Dim xMinor As Integer = Val(Root.Attributes("Minor").Value) - Dim xBuild As Integer = Val(Root.Attributes("Build").Value) + Dim xMajor As Integer = CInt(Root.Attributes("Major").Value) + Dim xMinor As Integer = CInt(Root.Attributes("Minor").Value) + Dim xBuild As Integer = CInt(Root.Attributes("Build").Value) Major = xMajor Minor = xMinor Build = xBuild @@ -421,7 +421,7 @@ Partial Public Class MainWindow XMLLoadAttribute(.GetAttribute("FirstClickDisabled"), FirstClickDisabled) XMLLoadAttribute(.GetAttribute("AutoSaveInterval"), AutoSaveInterval) - If AutoSaveInterval Then AutoSaveTimer.Interval = AutoSaveInterval Else AutoSaveTimer.Enabled = False + If AutoSaveInterval > 0 Then AutoSaveTimer.Interval = AutoSaveInterval Else AutoSaveTimer.Enabled = False XMLLoadAttribute(.GetAttribute("PreviewOnClick"), PreviewOnClick) TBPreviewOnClick.Checked = PreviewOnClick @@ -544,7 +544,7 @@ Partial Public Class MainWindow With ePlayer XMLLoadAttribute(.GetAttribute("CurrentPlayer"), CurrentPlayer) - Dim xCount As Integer = .GetAttribute("Count") + Dim xCount As Integer = CInt(.GetAttribute("Count")) If xCount > 0 Then ReDim Preserve pArgs(xCount - 1) End With @@ -566,10 +566,10 @@ Partial Public Class MainWindow Dim eKeybindings As XmlElement = Root.Item("KeyBindings") If eKeybindings IsNot Nothing Then With eKeybindings - Dim xBound = .GetAttribute("Count") + Dim xBound = CInt(.GetAttribute("Count")) If xBound > UBound(Keybindings) Then ReDim Preserve Keybindings(xBound) - For Each eeKeybindings In .ChildNodes + For Each eeKeybindings As XmlElement In .ChildNodes XMLLoadKeybinding(eeKeybindings) Next End With @@ -598,8 +598,8 @@ Partial Public Class MainWindow XMLLoadElementValue(.Item("BGMWav"), vo.pBGMWav.Color) TWTransparency.Value = vo.pBGMWav.Color.A TWTransparency2.Value = vo.pBGMWav.Color.A - TWSaturation.Value = vo.pBGMWav.Color.GetSaturation * 1000 - TWSaturation2.Value = vo.pBGMWav.Color.GetSaturation * 1000 + TWSaturation.Value = CDec(vo.pBGMWav.Color.GetSaturation * 1000) + TWSaturation2.Value = CInt(vo.pBGMWav.Color.GetSaturation * 1000) XMLLoadElementValue(.Item("SelBox"), vo.SelBox.Color) XMLLoadElementValue(.Item("TSCursor"), vo.PECursor.Color) @@ -675,7 +675,7 @@ EndOfSub: Dim eFont As XmlElement = Root.Item("Font") If eFont IsNot Nothing Then Dim xSize As Integer = 9 - If eFont.HasAttribute("Size") Then xSize = Val(eFont.GetAttribute("Size")) + If eFont.HasAttribute("Size") Then xSize = CInt(eFont.GetAttribute("Size")) Dim fRegular As New Font(Me.Font.FontFamily, xSize, FontStyle.Regular) Dim xChildNode As XmlNode = eFont.LastChild @@ -687,8 +687,38 @@ EndOfSub: xChildNode = xChildNode.PreviousSibling Loop - Dim rList() As Object = {Me, mnSys, Menu1, mnMain, cmnLanguage, cmnTheme, cmnConversion, TBMain, FStatus, FStatus2} - For Each c As Object In rList + Font = fRegular + Dim TMIList() As ToolStripMenuItem = {mnSys} + Dim CMSList() As ContextMenuStrip = {Menu1, cmnLanguage, cmnTheme, cmnConversion} + Dim MSList() As MenuStrip = {mnMain} + Dim TSList() As ToolStrip = {TBMain} + Dim SSList() As StatusStrip = {FStatus, FStatus2} + ' Not sure if a function would work using object type as a variable + For Each c In TMIList + Try + c.Font = fRegular + Catch ex As Exception + End Try + Next + For Each c In CMSList + Try + c.Font = fRegular + Catch ex As Exception + End Try + Next + For Each c In MSList + Try + c.Font = fRegular + Catch ex As Exception + End Try + Next + For Each c In TSList + Try + c.Font = fRegular + Catch ex As Exception + End Try + Next + For Each c In SSList Try c.Font = fRegular Catch ex As Exception @@ -697,8 +727,23 @@ EndOfSub: Dim fBold As New Font(fRegular, FontStyle.Bold) - Dim bList() As Object = {TBStatistics, FSSS, FSSL, FSSH, TVCM, TVCD, TVCBPM, FSP1, FSP3, FSP2, PMain, PMainIn, PMainR, PMainInR, PMainL, PMainInL} - For Each c As Object In bList + Dim TSBList() As ToolStripButton = {TBStatistics, FSSS, FSSL, FSSH} + Dim TSTBList() As ToolStripTextBox = {TVCM, TVCD, TVCBPM} + Dim TSSLList() As ToolStripStatusLabel = {FSP1, FSP3, FSP2} + Dim PList() As Panel = {PMain, PMainIn, PMainR, PMainInR, PMainL, PMainInL} + For Each c In TSBList + Try + c.Font = fBold + Catch ex As Exception + End Try + Next + For Each c In TSTBList + Try + c.Font = fBold + Catch ex As Exception + End Try + Next + For Each c In TSSLList Try c.Font = fBold Catch ex As Exception @@ -709,7 +754,7 @@ EndOfSub: Dim eMonoFont As XmlElement = Root.Item("MonoFont") If eMonoFont IsNot Nothing Then Dim xSize As Integer = 9 - If eMonoFont.HasAttribute("Size") Then xSize = Val(eMonoFont.GetAttribute("Size")) + If eMonoFont.HasAttribute("Size") Then xSize = CInt(eMonoFont.GetAttribute("Size")) Dim fMono As New Font(POWAVInner.Font.FontFamily, xSize) Dim xChildNode As XmlNode = eMonoFont.LastChild @@ -721,10 +766,17 @@ EndOfSub: xChildNode = xChildNode.PreviousSibling Loop - Dim mList() As Object = {LWAV, LBeat, TExpansion} - For Each c As Object In mList + Dim LBList() As ListBox = {LWAV, LBeat} + Dim TBList() As TextBox = {TExpansion} + For Each c In LBList + Try + c.Font = fMono + Catch ex As Exception + End Try + Next + For Each c In TBList Try - c.font = fMono + c.Font = fMono Catch ex As Exception End Try Next @@ -973,26 +1025,26 @@ EndOfSub: XMLLoadLocale(eHeader.Item("LnObj"), Label24.Text) RemoveHandler CHPlayer.SelectedIndexChanged, AddressOf CHPlayer_SelectedIndexChanged - XMLLoadLocale(eHeader.Item("Player1"), CHPlayer.Items.Item(0)) - XMLLoadLocale(eHeader.Item("Player2"), CHPlayer.Items.Item(1)) - XMLLoadLocale(eHeader.Item("Player3"), CHPlayer.Items.Item(2)) + XMLLoadLocale(eHeader.Item("Player1"), CHPlayer.Items.Item(0).ToString()) + XMLLoadLocale(eHeader.Item("Player2"), CHPlayer.Items.Item(1).ToString()) + XMLLoadLocale(eHeader.Item("Player3"), CHPlayer.Items.Item(2).ToString()) AddHandler CHPlayer.SelectedIndexChanged, AddressOf CHPlayer_SelectedIndexChanged RemoveHandler CHRank.SelectedIndexChanged, AddressOf THGenre_TextChanged - XMLLoadLocale(eHeader.Item("Rank0"), CHRank.Items.Item(0)) - XMLLoadLocale(eHeader.Item("Rank1"), CHRank.Items.Item(1)) - XMLLoadLocale(eHeader.Item("Rank2"), CHRank.Items.Item(2)) - XMLLoadLocale(eHeader.Item("Rank3"), CHRank.Items.Item(3)) - XMLLoadLocale(eHeader.Item("Rank4"), CHRank.Items.Item(4)) + XMLLoadLocale(eHeader.Item("Rank0"), CHRank.Items.Item(0).ToString()) + XMLLoadLocale(eHeader.Item("Rank1"), CHRank.Items.Item(1).ToString()) + XMLLoadLocale(eHeader.Item("Rank2"), CHRank.Items.Item(2).ToString()) + XMLLoadLocale(eHeader.Item("Rank3"), CHRank.Items.Item(3).ToString()) + XMLLoadLocale(eHeader.Item("Rank4"), CHRank.Items.Item(4).ToString()) AddHandler CHRank.SelectedIndexChanged, AddressOf THGenre_TextChanged RemoveHandler CHDifficulty.SelectedIndexChanged, AddressOf THGenre_TextChanged - XMLLoadLocale(eHeader.Item("Difficulty0"), CHDifficulty.Items.Item(0)) - XMLLoadLocale(eHeader.Item("Difficulty1"), CHDifficulty.Items.Item(1)) - XMLLoadLocale(eHeader.Item("Difficulty2"), CHDifficulty.Items.Item(2)) - XMLLoadLocale(eHeader.Item("Difficulty3"), CHDifficulty.Items.Item(3)) - XMLLoadLocale(eHeader.Item("Difficulty4"), CHDifficulty.Items.Item(4)) - XMLLoadLocale(eHeader.Item("Difficulty5"), CHDifficulty.Items.Item(5)) + XMLLoadLocale(eHeader.Item("Difficulty0"), CHDifficulty.Items.Item(0).ToString()) + XMLLoadLocale(eHeader.Item("Difficulty1"), CHDifficulty.Items.Item(1).ToString()) + XMLLoadLocale(eHeader.Item("Difficulty2"), CHDifficulty.Items.Item(2).ToString()) + XMLLoadLocale(eHeader.Item("Difficulty3"), CHDifficulty.Items.Item(3).ToString()) + XMLLoadLocale(eHeader.Item("Difficulty4"), CHDifficulty.Items.Item(4).ToString()) + XMLLoadLocale(eHeader.Item("Difficulty5"), CHDifficulty.Items.Item(5).ToString()) AddHandler CHDifficulty.SelectedIndexChanged, AddressOf THGenre_TextChanged End If @@ -1257,43 +1309,45 @@ EndOfSub: xW1 = UCase(Mid(xLine, 1, InStr(xLine, "=") - 1)) xW2 = Mid(xLine, InStr(xLine, "=") + 1) + Dim xW2Int As Integer = CInt(xW2) + Select Case xW1 - Case "VOTITLE" : vo.ColumnTitle.Color = Color.FromArgb(Val(xW2)) + Case "VOTITLE" : vo.ColumnTitle.Color = Color.FromArgb(xW2Int) Case "VOTITLEFONT" : vo.ColumnTitleFont = StringToFont(xW2, Me.Font) - Case "VOBG" : vo.Bg.Color = Color.FromArgb(Val(xW2)) - Case "VOGRID" : vo.pGrid.Color = Color.FromArgb(Val(xW2)) - Case "VOSUB" : vo.pSub.Color = Color.FromArgb(Val(xW2)) - Case "VOVLINE" : vo.pVLine.Color = Color.FromArgb(Val(xW2)) - Case "VOMLINE" : vo.pMLine.Color = Color.FromArgb(Val(xW2)) + Case "VOBG" : vo.Bg.Color = Color.FromArgb(xW2Int) + Case "VOGRID" : vo.pGrid.Color = Color.FromArgb(xW2Int) + Case "VOSUB" : vo.pSub.Color = Color.FromArgb(xW2Int) + Case "VOVLINE" : vo.pVLine.Color = Color.FromArgb(xW2Int) + Case "VOMLINE" : vo.pMLine.Color = Color.FromArgb(xW2Int) Case "VOBGMWAV" - vo.pBGMWav.Color = Color.FromArgb(Val(xW2)) + vo.pBGMWav.Color = Color.FromArgb(xW2Int) TWTransparency.Value = vo.pBGMWav.Color.A TWTransparency2.Value = vo.pBGMWav.Color.A - TWSaturation.Value = vo.pBGMWav.Color.GetSaturation * 1000 - TWSaturation2.Value = vo.pBGMWav.Color.GetSaturation * 1000 - Case "VOSELBOX" : vo.SelBox.Color = Color.FromArgb(Val(xW2)) - Case "VOPECURSOR" : vo.PECursor.Color = Color.FromArgb(Val(xW2)) - Case "VOPEHALF" : vo.PEHalf.Color = Color.FromArgb(Val(xW2)) - Case "VOPEDELTAMOUSEOVER" : vo.PEDeltaMouseOver = Val(xW2) - Case "VOPEMOUSEOVER" : vo.PEMouseOver.Color = Color.FromArgb(Val(xW2)) - Case "VOPESEL" : vo.PESel.Color = Color.FromArgb(Val(xW2)) - Case "VOPEBPM" : vo.PEBPM.Color = Color.FromArgb(Val(xW2)) + TWSaturation.Value = CDec(vo.pBGMWav.Color.GetSaturation * 1000) + TWSaturation2.Value = CInt(vo.pBGMWav.Color.GetSaturation * 1000) + Case "VOSELBOX" : vo.SelBox.Color = Color.FromArgb(xW2Int) + Case "VOPECURSOR" : vo.PECursor.Color = Color.FromArgb(xW2Int) + Case "VOPEHALF" : vo.PEHalf.Color = Color.FromArgb(xW2Int) + Case "VOPEDELTAMOUSEOVER" : vo.PEDeltaMouseOver = xW2Int + Case "VOPEMOUSEOVER" : vo.PEMouseOver.Color = Color.FromArgb(xW2Int) + Case "VOPESEL" : vo.PESel.Color = Color.FromArgb(xW2Int) + Case "VOPEBPM" : vo.PEBPM.Color = Color.FromArgb(xW2Int) Case "VOPEBPMFONT" : vo.PEBPMFont = StringToFont(xW2, Me.Font) - Case "VKHEIGHT" : vo.kHeight = Val(xW2) + Case "VKHEIGHT" : vo.kHeight = xW2Int Case "VKFONT" : vo.kFont = StringToFont(xW2, Me.Font) Case "VKMFONT" : vo.kMFont = StringToFont(xW2, Me.Font) - Case "VKLABELVSHIFT" : vo.kLabelVShift = Val(xW2) - Case "VKLABELHSHIFT" : vo.kLabelHShift = Val(xW2) - Case "VKLABELHSHIFTL" : vo.kLabelHShiftL = Val(xW2) - Case "VKMOUSEOVER" : vo.kMouseOver.Color = Color.FromArgb(Val(xW2)) - Case "VKMOUSEOVERE " : vo.kMouseOverE.Color = Color.FromArgb(Val(xW2)) - Case "VKSELECTED" : vo.kSelected.Color = Color.FromArgb(Val(xW2)) - 'Case "VKHIDTRANSPARENCY" : vo.kOpacity = Val(xW2) + Case "VKLABELVSHIFT" : vo.kLabelVShift = xW2Int + Case "VKLABELHSHIFT" : vo.kLabelHShift = xW2Int + Case "VKLABELHSHIFTL" : vo.kLabelHShiftL = xW2Int + Case "VKMOUSEOVER" : vo.kMouseOver.Color = Color.FromArgb(xW2Int) + Case "VKMOUSEOVERE " : vo.kMouseOverE.Color = Color.FromArgb(xW2Int) + Case "VKSELECTED" : vo.kSelected.Color = Color.FromArgb(xW2Int) + 'Case "VKHIDTRANSPARENCY" : vo.kOpacity = xW2Int Case "KLENGTH" Dim xE() As String = LoadThemeComptability_SplitStringInto26Parts(xW2) For i As Integer = 0 To 26 - column(i).Width = Val(xE(i)) + column(i).Width = CInt(xE(i)) Next Case "KTITLE" @@ -1305,31 +1359,31 @@ EndOfSub: Case "KCOLOR" Dim xE() As String = LoadThemeComptability_SplitStringInto26Parts(xW2) For i As Integer = 0 To 26 - column(i).setNoteColor(Val(xE(i))) + column(i).setNoteColor(CInt(xE(i))) Next Case "KCOLORL" Dim xE() As String = LoadThemeComptability_SplitStringInto26Parts(xW2) For i As Integer = 0 To 26 - column(i).setLNoteColor(Val(xE(i))) + column(i).setLNoteColor(CInt(xE(i))) Next Case "KFORECOLOR" Dim xE() As String = LoadThemeComptability_SplitStringInto26Parts(xW2) For i As Integer = 0 To 26 - column(i).cText = Color.FromArgb(Val(xE(i))) + column(i).cText = Color.FromArgb(CInt(xE(i))) Next Case "KFORECOLORL" Dim xE() As String = LoadThemeComptability_SplitStringInto26Parts(xW2) For i As Integer = 0 To 26 - column(i).cLText = Color.FromArgb(Val(xE(i))) + column(i).cLText = Color.FromArgb(CInt(xE(i))) Next Case "KBGCOLOR" Dim xE() As String = LoadThemeComptability_SplitStringInto26Parts(xW2) For i As Integer = 0 To 26 - column(i).cBG = Color.FromArgb(Val(xE(i))) + column(i).cBG = Color.FromArgb(CInt(xE(i))) Next End Select @@ -1352,7 +1406,8 @@ EndOfSub: End Function Private Sub LoadLang(ByVal sender As System.Object, ByVal e As System.EventArgs) - Dim xFN2 As String = sender.ToolTipText + Dim LangS As ToolStripItem = CType(sender, ToolStripItem) + Dim xFN2 As String = LangS.ToolTipText 'ReadLanguagePack(xFN2) LoadLocale(xFN2) End Sub @@ -1381,7 +1436,8 @@ EndOfSub: 'If Not File.Exists(My.Application.Info.DirectoryPath & "\Data\" & sender.Text) Then Exit Sub 'SaveTheme = True 'LoadCFF(My.Computer.FileSystem.ReadAllText(My.Application.Info.DirectoryPath & "\Theme\" & sender.Text, System.Text.Encoding.Unicode)) - LoadSettings(My.Application.Info.DirectoryPath & "\Data\" & sender.Text) + Dim ThemeS As ToolStripItem = CType(sender, ToolStripItem) + LoadSettings(My.Application.Info.DirectoryPath & "\Data\" & ThemeS.Text) RefreshPanelAll() End Sub @@ -1395,7 +1451,7 @@ EndOfSub: Dim Root As XmlElement = Doc.Item("ColorOverride") - Dim n As Integer = Root.GetAttribute("Count") + Dim n As Integer = CInt(Root.GetAttribute("Count")) ReDim COverrides(n) Dim i As Integer For Each eColor As XmlElement In Root.ChildNodes diff --git a/iBMSC/EditorRecent.vb b/iBMSC/EditorRecent.vb index a2c1e52d2..3ccc5dea2 100644 --- a/iBMSC/EditorRecent.vb +++ b/iBMSC/EditorRecent.vb @@ -45,8 +45,8 @@ Case Else : Return End Select - xTBOpenR.Text = IIf(Text = "", "<" & Strings.None & ">", GetFileName(Text)) : xTBOpenR.ToolTipText = Text : xTBOpenR.Enabled = Not Text = "" - xmnOpenR.Text = IIf(Text = "", "<" & Strings.None & ">", GetFileName(Text)) : xmnOpenR.ToolTipText = Text : xmnOpenR.Enabled = Not Text = "" + xTBOpenR.Text = IIf(Text = "", "<" & Strings.None & ">", GetFileName(Text)).ToString() : xTBOpenR.ToolTipText = Text : xTBOpenR.Enabled = Not Text = "" + xmnOpenR.Text = IIf(Text = "", "<" & Strings.None & ">", GetFileName(Text)).ToString() : xmnOpenR.ToolTipText = Text : xmnOpenR.Enabled = Not Text = "" End Sub Private Sub OpenRecent(ByVal xFileName As String) diff --git a/iBMSC/EditorUndoRedo.vb b/iBMSC/EditorUndoRedo.vb index c8abdcb8a..1d1d91e03 100644 --- a/iBMSC/EditorUndoRedo.vb +++ b/iBMSC/EditorUndoRedo.vb @@ -12,7 +12,7 @@ Partial Public Class MainWindow Select Case xType Case UndoRedo.opAddNote - Dim xCmd As UndoRedo.AddNote = sCmd + Dim xCmd As UndoRedo.AddNote = CType(sCmd, UndoRedo.AddNote) ReDim Preserve Notes(UBound(Notes) + 1) Notes(UBound(Notes)) = xCmd.note @@ -21,7 +21,7 @@ Partial Public Class MainWindow IncreaseCurrentWav() End If Case UndoRedo.opRemoveNote - Dim xCmd As UndoRedo.RemoveNote = sCmd + Dim xCmd As UndoRedo.RemoveNote = CType(sCmd, UndoRedo.RemoveNote) Dim xI2 As Integer = FindNoteIndex(xCmd.note) If xI2 < Notes.Length Then @@ -36,7 +36,7 @@ Partial Public Class MainWindow End If Case UndoRedo.opChangeNote - Dim xCmd As UndoRedo.ChangeNote = sCmd + Dim xCmd As UndoRedo.ChangeNote = CType(sCmd, UndoRedo.ChangeNote) Dim xI2 As Integer = FindNoteIndex(xCmd.note) If xI2 < Notes.Length Then @@ -44,7 +44,7 @@ Partial Public Class MainWindow End If Case UndoRedo.opMoveNote - Dim xCmd As UndoRedo.MoveNote = sCmd + Dim xCmd As UndoRedo.MoveNote = CType(sCmd, UndoRedo.MoveNote) Dim xI2 As Integer = FindNoteIndex(xCmd.note) If xI2 < Notes.Length Then @@ -56,7 +56,7 @@ Partial Public Class MainWindow End If Case UndoRedo.opLongNoteModify - Dim xCmd As UndoRedo.LongNoteModify = sCmd + Dim xCmd As UndoRedo.LongNoteModify = CType(sCmd, UndoRedo.LongNoteModify) Dim xI2 As Integer = FindNoteIndex(xCmd.note) If xI2 < Notes.Length Then @@ -65,14 +65,14 @@ Partial Public Class MainWindow .VPosition = xCmd.NVPosition .Length = xCmd.NLongNote Else - .LongNote = xCmd.NLongNote + .LongNote = CBool(xCmd.NLongNote) End If .Selected = xCmd.note.Selected And nEnabled(.ColumnIndex) End With End If Case UndoRedo.opHiddenNoteModify - Dim xCmd As UndoRedo.HiddenNoteModify = sCmd + Dim xCmd As UndoRedo.HiddenNoteModify = CType(sCmd, UndoRedo.HiddenNoteModify) Dim xI2 As Integer = FindNoteIndex(xCmd.note) If xI2 < Notes.Length Then @@ -81,7 +81,7 @@ Partial Public Class MainWindow End If Case UndoRedo.opRelabelNote - Dim xCmd As UndoRedo.RelabelNote = sCmd + Dim xCmd As UndoRedo.RelabelNote = CType(sCmd, UndoRedo.RelabelNote) Dim xI2 As Integer = FindNoteIndex(xCmd.note) If xI2 < Notes.Length Then @@ -93,35 +93,35 @@ Partial Public Class MainWindow ReDim Preserve Notes(0) Case UndoRedo.opChangeMeasureLength - Dim xCmd As UndoRedo.ChangeMeasureLength = sCmd + Dim xCmd As UndoRedo.ChangeMeasureLength = CType(sCmd, UndoRedo.ChangeMeasureLength) Dim xxD As Long = GetDenominator(xCmd.Value / 192) 'Dim xDenom As Integer = 192 / GCD(xCmd.Value, 192.0R) 'If xDenom < 4 Then xDenom = 4 For Each xM As Integer In xCmd.Indices MeasureLength(xM) = xCmd.Value - LBeat.Items(xM) = Add3Zeros(xM) & ": " & (xCmd.Value / 192) & IIf(xxD > 10000, "", " ( " & CLng(xCmd.Value / 192 * xxD) & " / " & xxD & " ) ") + LBeat.Items(xM) = Add3Zeros(xM) & ": " & (xCmd.Value / 192) & IIf(xxD > 10000, "", " ( " & CLng(xCmd.Value / 192 * xxD) & " / " & xxD & " ) ").ToString() LBeat.SelectedIndices.Add(xM) Next UpdateMeasureBottom() Case UndoRedo.opChangeMeasure - Dim xCmd As UndoRedo.ChangeMeasure = sCmd + Dim xCmd As UndoRedo.ChangeMeasure = CType(sCmd, UndoRedo.ChangeMeasure) For xIM = 0 To UBound(xCmd.MeasureLength) MeasureLength(xIM) = xCmd.MeasureLength(xIM) Dim a As Double = MeasureLength(xIM) / 192.0R Dim xxD = GetDenominator(a) - LBeat.Items(xIM) = Add3Zeros(xIM) & ": " & a & IIf(xxD > 10000, "", " ( " & CLng(a * xxD) & " / " & xxD & " ) ") + LBeat.Items(xIM) = Add3Zeros(xIM) & ": " & a & IIf(xxD > 10000, "", " ( " & CLng(a * xxD) & " / " & xxD & " ) ").ToString() Next UpdateMeasureBottom() Case UndoRedo.opChangeTimeSelection - Dim xCmd As UndoRedo.ChangeTimeSelection = sCmd + Dim xCmd As UndoRedo.ChangeTimeSelection = CType(sCmd, UndoRedo.ChangeTimeSelection) vSelStart = xCmd.SelStart vSelLength = xCmd.SelLength vSelHalf = xCmd.SelHalf If xCmd.Selected Then - Dim xSelLo As Double = vSelStart + IIf(vSelLength < 0, vSelLength, 0) - Dim xSelHi As Double = vSelStart + IIf(vSelLength > 0, vSelLength, 0) + Dim xSelLo As Double = vSelStart + CDbl(IIf(vSelLength < 0, vSelLength, 0)) + Dim xSelHi As Double = vSelStart + CDbl(IIf(vSelLength > 0, vSelLength, 0)) For xI2 As Integer = 1 To UBound(Notes) Notes(xI2).Selected = Notes(xI2).VPosition >= xSelLo AndAlso Notes(xI2).VPosition < xSelHi AndAlso @@ -130,7 +130,7 @@ Partial Public Class MainWindow End If Case UndoRedo.opNT - Dim xCmd As UndoRedo.NT = sCmd + Dim xCmd As UndoRedo.NT = CType(sCmd, UndoRedo.NT) NTInput = xCmd.BecomeNT TBNTInput.Checked = NTInput mnNTInput.Checked = NTInput @@ -144,7 +144,7 @@ Partial Public Class MainWindow If NTInput Then ConvertBMSE2NT() Else ConvertNT2BMSE() End If Case UndoRedo.opWavAutoincFlag - Dim xcmd As UndoRedo.WavAutoincFlag = sCmd + Dim xcmd As UndoRedo.WavAutoincFlag = CType(sCmd, UndoRedo.WavAutoincFlag) TBWavIncrease.Checked = xcmd.Checked Case UndoRedo.opVoid @@ -157,7 +157,7 @@ Partial Public Class MainWindow sCmd = sCmd.Next Loop - THBPM.Value = Notes(0).Value / 10000 + THBPM.Value = CDec(Notes(0).Value / 10000) If IsSaved Then SetIsSaved(False) SortByVPositionInsertion() @@ -236,9 +236,9 @@ Partial Public Class MainWindow Dim xUndo As New UndoRedo.RemoveNote(Notes(xI1)) Dim xRedo As New UndoRedo.AddNote(Notes(xI1)) xUndo.Next = BaseUndo - BaseUndo = xUndo - If BaseRedo IsNot Nothing Then BaseRedo.Next = xRedo - BaseRedo = xRedo + BaseUndo = xUndo + If BaseRedo IsNot Nothing Then BaseRedo.Next = xRedo + BaseRedo = xRedo Next End Sub @@ -248,7 +248,7 @@ Partial Public Class MainWindow Dim xRedo As New UndoRedo.AddNote(Notes(xI1)) If BaseRedo IsNot Nothing Then BaseRedo.Next = xRedo - BaseRedo = xRedo + BaseRedo = xRedo Next Dim xUndo As New UndoRedo.RemoveAllNotes @@ -338,6 +338,19 @@ Partial Public Class MainWindow BaseRedo = xRedo End Sub + Private Sub RedoLongNoteModify(note As Note, nVPos As Double, nLongB As Boolean, ByRef BaseUndo As UndoRedo.LinkedURCmd, ByRef BaseRedo As UndoRedo.LinkedURCmd) + Dim n = note + n.VPosition = nVPos + n.LongNote = nLongB + + Dim xUndo As New UndoRedo.LongNoteModify(n, note.VPosition, note.Length) + Dim xRedo As New UndoRedo.LongNoteModify(note, nVPos, n.Length) + xUndo.Next = BaseUndo + BaseUndo = xUndo + If BaseRedo IsNot Nothing Then BaseRedo.Next = xRedo + BaseRedo = xRedo + End Sub + Private Sub RedoHiddenNoteModify(xN As Note, nHide As Boolean, xSel As Boolean, ByRef BaseUndo As UndoRedo.LinkedURCmd, ByRef BaseRedo As UndoRedo.LinkedURCmd) Dim noteAfterModification = xN noteAfterModification.Hidden = nHide @@ -388,7 +401,7 @@ Partial Public Class MainWindow xUndo(UBound(xUndo)).Next = BaseUndo BaseUndo = xUndo(0) - Dim xRedo As New UndoRedo.ChangeMeasureLength(nVal, xIndices.Clone) + Dim xRedo As New UndoRedo.ChangeMeasureLength(nVal, CType(xIndices.Clone(), Integer())) If BaseRedo IsNot Nothing Then BaseRedo.Next = xRedo BaseRedo = xRedo End Sub diff --git a/iBMSC/MainWindow.vb b/iBMSC/MainWindow.vb index d087de913..eff3f4cb2 100644 --- a/iBMSC/MainWindow.vb +++ b/iBMSC/MainWindow.vb @@ -123,9 +123,9 @@ Public Class MainWindow Dim bAdjustLength As Boolean 'If adjusting note length instead of moving it Dim bAdjustUpper As Boolean 'true = Adjusting upper end, false = adjusting lower end Dim bAdjustSingle As Boolean 'true if there is only one note to be adjusted + Dim tempX As Integer Dim tempY As Integer Dim tempV As Integer - Dim tempX As Integer Dim tempH As Integer Dim MiddleButtonLocation As New Point(0, 0) Dim MiddleButtonClicked As Boolean = False @@ -222,7 +222,7 @@ Public Class MainWindow Structure WavSample Public WavL() As Single Public WavR() As Single - Public SampleRate As Single + Public SampleRate As Integer Public Duration As Single Public Sub New(xWavL() As Single, @@ -335,7 +335,7 @@ Public Class MainWindow New Keybinding("TBPreviewHighlighted_Click", "*EXPERIMENTAL*", {"Shift+F4"}), New Keybinding("GetVPositionFromTime", "*EXPERIMENTAL*", {"Shift+F2"}) } - Dim Keybindings() As Keybinding = KeybindingsInit.Clone + Dim Keybindings() As Keybinding = CType(KeybindingsInit.Clone(), Keybinding()) '----Preview Options Structure PlayerArguments @@ -363,7 +363,7 @@ Public Class MainWindow "-P -N0 """"", "-P -N """"", "-S")} - Public pArgs() As PlayerArguments = pArgsInit.Clone + Public pArgs() As PlayerArguments = CType(pArgsInit.Clone(), PlayerArguments()) Public CurrentPlayer As Integer = 0 Dim PreviewOnClick As Boolean = True Dim PreviewErrorCheck As Boolean = False @@ -620,11 +620,11 @@ Public Class MainWindow Public Function PrevCodeToReal(ByVal InitStr As String) As String Dim xFileName As String = IIf(Not PathIsValid(FileName), IIf(InitPath = "", My.Application.Info.DirectoryPath, InitPath), - ExcludeFileName(FileName)) _ + ExcludeFileName(FileName)).ToString() _ & "\___TempBMS.bmsc" Dim xMeasure As Integer = MeasureAtDisplacement(Math.Abs(PanelVScroll(PanelFocus))) Dim xS1 As String = Replace(InitStr, "", My.Application.Info.DirectoryPath) - Dim xS2 As String = Replace(xS1, "", xMeasure) + Dim xS2 As String = Replace(xS1, "", xMeasure.ToString()) Dim xS3 As String = Replace(xS2, "", xFileName) Return xS3 End Function @@ -639,8 +639,8 @@ Public Class MainWindow 'pttl.Refresh() 'pIsSaved.Visible = Not xBool Dim xVersion As String = My.Application.Info.Version.Major & "." & My.Application.Info.Version.Minor & - IIf(My.Application.Info.Version.Build = 0, "", "." & My.Application.Info.Version.Build) - Text = IIf(isSaved, "", "*") & GetFileName(FileName) & " - " & My.Application.Info.Title & " " & xVersion + IIf(My.Application.Info.Version.Build = 0, "", "." & My.Application.Info.Version.Build).ToString() + Text = IIf(isSaved, "", "*").ToString() & GetFileName(FileName) & " - " & My.Application.Info.Title & " " & xVersion Me.IsSaved = isSaved End Sub @@ -706,7 +706,7 @@ Public Class MainWindow Notes(xI1).Selected = False Next - Dim xVS As Long = PanelVScroll(PanelFocus) + Dim xVS As Long = CLng(PanelVScroll(PanelFocus)) Dim xTempVP As Double Dim xKbu() As Note = Notes @@ -722,9 +722,9 @@ Public Class MainWindow If UBound(xStrSub) = 5 And xTempVP >= 0 And xTempVP < GetMaxVPosition() Then ReDim Preserve Notes(UBound(Notes) + 1) With Notes(UBound(Notes)) - .ColumnIndex = Val(xStrSub(0)) + .ColumnIndex = CInt(xStrSub(0)) .VPosition = xTempVP - .Value = Val(xStrSub(2)) + .Value = CLng(xStrSub(2)) .LongNote = CBool(Val(xStrSub(3))) .Hidden = CBool(Val(xStrSub(4))) .Landmine = CBool(Val(xStrSub(5))) @@ -765,9 +765,9 @@ Public Class MainWindow If UBound(xStrSub) = 5 And xTempVP >= 0 And xTempVP < GetMaxVPosition() Then ReDim Preserve Notes(UBound(Notes) + 1) With Notes(UBound(Notes)) - .ColumnIndex = Val(xStrSub(0)) + .ColumnIndex = CInt(xStrSub(0)) .VPosition = xTempVP - .Value = Val(xStrSub(2)) + .Value = CLng(xStrSub(2)) .Length = Val(xStrSub(3)) .Hidden = CBool(Val(xStrSub(4))) .Landmine = CBool(Val(xStrSub(5))) @@ -820,7 +820,7 @@ Public Class MainWindow With Notes(UBound(Notes)) .ColumnIndex = lineCol .VPosition = vPos - .Value = Value + .Value = CLng(Value) .LongNote = attribute = "2" .Hidden = attribute = "1" .Selected = xSelected And nEnabled(.ColumnIndex) @@ -854,14 +854,14 @@ Public Class MainWindow End Sub Private Sub CopyNotes(Optional ByVal Unselect As Boolean = True) - Dim xStrAll As String = "iBMSC Clipboard Data" & IIf(NTInput, " xNT", "") + Dim xStrAll As String = "iBMSC Clipboard Data" & IIf(NTInput, " xNT", "").ToString() Dim xI1 As Integer Dim MinMeasure As Double = 999 For xI1 = 1 To UBound(Notes) If Notes(xI1).Selected And MeasureAtDisplacement(Notes(xI1).VPosition) < MinMeasure Then MinMeasure = MeasureAtDisplacement(Notes(xI1).VPosition) Next - MinMeasure = MeasureBottom(MinMeasure) + MinMeasure = MeasureBottom(CInt(MinMeasure)) If Not NTInput Then For xI1 = 1 To UBound(Notes) @@ -915,7 +915,7 @@ Public Class MainWindow ' Check and remove comments For xI1 = 1 To UBound(Notes) If Notes(xI1).Comment Then - xIC = Notes(xI1).Value / 10000 + xIC = CInt(Notes(xI1).Value / 10000) xComCount(xIC) += 1 End If Next @@ -1320,7 +1320,7 @@ Public Class MainWindow If xFiles Is Nothing OrElse xFiles.Length = 0 Then GoTo 1000 'Me.TopMost = True - If MsgBox(Replace(Strings.Messages.RestoreAutosavedFile, "{}", xFiles.Length), MsgBoxStyle.YesNo Or MsgBoxStyle.MsgBoxSetForeground) = MsgBoxResult.Yes Then + If MsgBox(Replace(Strings.Messages.RestoreAutosavedFile, "{}", xFiles.Length.ToString()), MsgBoxStyle.YesNo Or MsgBoxStyle.MsgBoxSetForeground) = MsgBoxResult.Yes Then For Each xF As FileInfo In xFiles 'MsgBox(xF.FullName) System.Diagnostics.Process.Start(Application.ExecutablePath, """" & xF.FullName & """") @@ -1339,7 +1339,7 @@ Public Class MainWindow tempResize = Me.WindowState Me.TopMost = False - Me.WindowState = tempResize + Me.WindowState = CType(tempResize, FormWindowState) Me.Visible = True End Sub @@ -1610,7 +1610,7 @@ EndSearch: Next End Sub - Private Function FindColumnNumber(xI) + Private Function FindColumnNumber(xI As Integer) As Integer For i = 0 To UBound(gXKeyCol) If xI = gXKeyCol(i) Then Return i + 1 Next @@ -1633,7 +1633,7 @@ EndSearch: Return col End Function - Private Function IsPlayableNote(ByVal xI As Integer) + Private Function IsPlayableNote(ByVal xI As Integer) As Boolean Return Not (Notes(xI).Hidden Or Notes(xI).Landmine Or Notes(xI).Comment) End Function @@ -1775,7 +1775,7 @@ EndSearch: Strings.FileType.TXT & "|*.txt|" & Strings.FileType._all & "|*.*" xDOpen.DefaultExt = "bms" - xDOpen.InitialDirectory = IIf(ExcludeFileName(FileName) = "", InitPath, ExcludeFileName(FileName)) + xDOpen.InitialDirectory = IIf(ExcludeFileName(FileName) = "", InitPath, ExcludeFileName(FileName)).ToString() If xDOpen.ShowDialog = Windows.Forms.DialogResult.Cancel Then Exit Sub InitPath = ExcludeFileName(xDOpen.FileName) @@ -1796,7 +1796,7 @@ EndSearch: Dim xDOpen As New OpenFileDialog xDOpen.Filter = Strings.FileType.IBMSC & "|*.ibmsc" xDOpen.DefaultExt = "ibmsc" - xDOpen.InitialDirectory = IIf(ExcludeFileName(FileName) = "", InitPath, ExcludeFileName(FileName)) + xDOpen.InitialDirectory = IIf(ExcludeFileName(FileName) = "", InitPath, ExcludeFileName(FileName)).ToString() If xDOpen.ShowDialog = Windows.Forms.DialogResult.Cancel Then Return InitPath = ExcludeFileName(xDOpen.FileName) @@ -1816,7 +1816,7 @@ EndSearch: Dim xDOpen As New OpenFileDialog xDOpen.Filter = Strings.FileType.SM & "|*.sm" xDOpen.DefaultExt = "sm" - xDOpen.InitialDirectory = IIf(ExcludeFileName(FileName) = "", InitPath, ExcludeFileName(FileName)) + xDOpen.InitialDirectory = IIf(ExcludeFileName(FileName) = "", InitPath, ExcludeFileName(FileName)).ToString() If xDOpen.ShowDialog = Windows.Forms.DialogResult.Cancel Then Exit Sub If OpenSM(My.Computer.FileSystem.ReadAllText(xDOpen.FileName, TextEncoding)) Then Exit Sub @@ -1871,7 +1871,7 @@ EndSearch: Strings.FileType.TXT & "|*.txt|" & Strings.FileType._all & "|*.*" xDSave.DefaultExt = "bms" - xDSave.InitialDirectory = IIf(ExcludeFileName(FileName) = "", InitPath, ExcludeFileName(FileName)) + xDSave.InitialDirectory = IIf(ExcludeFileName(FileName) = "", InitPath, ExcludeFileName(FileName)).ToString() If xDSave.ShowDialog = Windows.Forms.DialogResult.Cancel Then Exit Sub InitPath = ExcludeFileName(xDSave.FileName) @@ -1893,7 +1893,7 @@ EndSearch: Dim xDSave As New SaveFileDialog xDSave.Filter = Strings.FileType.IBMSC & "|*.ibmsc" xDSave.DefaultExt = "ibmsc" - xDSave.InitialDirectory = IIf(ExcludeFileName(FileName) = "", InitPath, ExcludeFileName(FileName)) + xDSave.InitialDirectory = IIf(ExcludeFileName(FileName) = "", InitPath, ExcludeFileName(FileName)).ToString() If xDSave.ShowDialog = Windows.Forms.DialogResult.Cancel Then Exit Sub SaveiBMSC(xDSave.FileName) @@ -1902,27 +1902,28 @@ EndSearch: If BeepWhileSaved Then Beep() End Sub - - Private Sub VSGotFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles MainPanelScroll.GotFocus, LeftPanelScroll.GotFocus, RightPanelScroll.GotFocus - PanelFocus = sender.Tag + Dim VScrollS As VScrollBar = CType(sender, VScrollBar) + PanelFocus = CInt(VScrollS.Tag) spMain(PanelFocus).Focus() End Sub Private Sub VSValueChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles MainPanelScroll.ValueChanged, LeftPanelScroll.ValueChanged, RightPanelScroll.ValueChanged - Dim iI As Integer = sender.Tag + Dim VScrollS As VScrollBar = CType(sender, VScrollBar) + + Dim iI As Integer = CInt(VScrollS.Tag) ' az: We got a wheel event when we're zooming in/out If My.Computer.Keyboard.CtrlKeyDown Or My.Computer.Keyboard.ShiftKeyDown Then - sender.Value = VSValue ' Undo the scroll + VScrollS.Value = VSValue ' Undo the scroll Exit Sub End If - If iI = PanelFocus And Not LastMouseDownLocation = New Point(-1, -1) And Not VSValue = -1 Then LastMouseDownLocation.Y += (VSValue - sender.Value) * gxHeight - PanelVScroll(iI) = sender.Value + If iI = PanelFocus And Not LastMouseDownLocation = New Point(-1, -1) And Not VSValue = -1 Then LastMouseDownLocation.Y += (VSValue - VScrollS.Value) * gxHeight + PanelVScroll(iI) = VScrollS.Value If spLock((iI + 1) Mod 3) Then - Dim xVS As Integer = PanelVScroll(iI) + spDiff(iI) + Dim xVS As Integer = CInt(PanelVScroll(iI) + spDiff(iI)) If xVS > 0 Then xVS = 0 If xVS < MainPanelScroll.Minimum Then xVS = MainPanelScroll.Minimum Select Case iI @@ -1933,7 +1934,7 @@ EndSearch: End If If spLock((iI + 2) Mod 3) Then - Dim xVS As Integer = PanelVScroll(iI) - spDiff((iI + 2) Mod 3) + Dim xVS As Integer = CInt(PanelVScroll(iI) - spDiff((iI + 2) Mod 3)) If xVS > 0 Then xVS = 0 If xVS < MainPanelScroll.Minimum Then xVS = MainPanelScroll.Minimum Select Case iI @@ -1943,34 +1944,37 @@ EndSearch: End Select End If - spDiff(iI) = PanelVScroll((iI + 1) Mod 3) - PanelVScroll(iI) - spDiff((iI + 2) Mod 3) = PanelVScroll(iI) - PanelVScroll((iI + 2) Mod 3) + spDiff(iI) = CInt(PanelVScroll((iI + 1) Mod 3) - PanelVScroll(iI)) + spDiff((iI + 2) Mod 3) = CInt(PanelVScroll(iI) - PanelVScroll((iI + 2) Mod 3)) - VSValue = sender.Value + VSValue = VScrollS.Value RefreshPanel(iI, spMain(iI).DisplayRectangle) End Sub Private Sub cVSLock_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cVSLockL.CheckedChanged, cVSLock.CheckedChanged, cVSLockR.CheckedChanged - Dim iI As Integer = sender.Tag - spLock(iI) = sender.Checked + Dim CBS As CheckBox = CType(sender, CheckBox) + Dim iI As Integer = CInt(CBS.Tag) + spLock(iI) = CBS.Checked If Not spLock(iI) Then Return - spDiff(iI) = PanelVScroll((iI + 1) Mod 3) - PanelVScroll(iI) - spDiff((iI + 2) Mod 3) = PanelVScroll(iI) - PanelVScroll((iI + 2) Mod 3) + spDiff(iI) = CInt(PanelVScroll((iI + 1) Mod 3) - PanelVScroll(iI)) + spDiff((iI + 2) Mod 3) = CInt(PanelVScroll(iI) - PanelVScroll((iI + 2) Mod 3)) 'POHeaderB.Text = spDiff(0) & "_" & spDiff(1) & "_" & spDiff(2) End Sub Private Sub HSGotFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles HS.GotFocus, HSL.GotFocus, HSR.GotFocus - PanelFocus = sender.Tag + Dim HScrollS As HScrollBar = CType(sender, HScrollBar) + PanelFocus = CInt(HScrollS.Tag) spMain(PanelFocus).Focus() End Sub Private Sub HSValueChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles HS.ValueChanged, HSL.ValueChanged, HSR.ValueChanged - Dim iI As Integer = sender.Tag - If Not LastMouseDownLocation = New Point(-1, -1) And Not HSValue = -1 Then LastMouseDownLocation.X += (HSValue - sender.Value) * gxWidth - PanelHScroll(iI) = sender.Value - HSValue = sender.Value + Dim HScrollS As HScrollBar = CType(sender, HScrollBar) + Dim iI As Integer = CInt(HScrollS.Tag) + If Not LastMouseDownLocation = New Point(-1, -1) And Not HSValue = -1 Then LastMouseDownLocation.X += (HSValue - HScrollS.Value) * gxWidth + PanelHScroll(iI) = HScrollS.Value + HSValue = HScrollS.Value RefreshPanel(iI, spMain(iI).DisplayRectangle) End Sub @@ -2048,45 +2052,45 @@ EndSearch: Private Sub CGHeight_ValueChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles CGHeight.ValueChanged gxHeight = CSng(CGHeight.Value) - CGHeight2.Value = IIf(CGHeight.Value * 4 < CGHeight2.Maximum, CDec(CGHeight.Value * 4), CGHeight2.Maximum) + CGHeight2.Value = CInt(IIf(CGHeight.Value * 4 < CGHeight2.Maximum, CDec(CGHeight.Value * 4), CGHeight2.Maximum)) RefreshPanelAll() End Sub Private Sub CGHeight2_Scroll(ByVal sender As Object, ByVal e As System.EventArgs) Handles CGHeight2.Scroll - CGHeight.Value = CGHeight2.Value / 4 + CGHeight.Value = CDec(CGHeight2.Value / 4) End Sub Private Sub CGWidth_ValueChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles CGWidth.ValueChanged gxWidth = CSng(CGWidth.Value) - CGWidth2.Value = IIf(CGWidth.Value * 4 < CGWidth2.Maximum, CDec(CGWidth.Value * 4), CGWidth2.Maximum) + CGWidth2.Value = CInt(IIf(CGWidth.Value * 4 < CGWidth2.Maximum, CDec(CGWidth.Value * 4), CGWidth2.Maximum)) - HS.LargeChange = PMainIn.Width / gxWidth + HS.LargeChange = CInt(PMainIn.Width / gxWidth) If HS.Value > HS.Maximum - HS.LargeChange + 1 Then HS.Value = HS.Maximum - HS.LargeChange + 1 - HSL.LargeChange = PMainInL.Width / gxWidth + HSL.LargeChange = CInt(PMainInL.Width / gxWidth) If HSL.Value > HSL.Maximum - HSL.LargeChange + 1 Then HSL.Value = HSL.Maximum - HSL.LargeChange + 1 - HSR.LargeChange = PMainInR.Width / gxWidth + HSR.LargeChange = CInt(PMainInR.Width / gxWidth) If HSR.Value > HSR.Maximum - HSR.LargeChange + 1 Then HSR.Value = HSR.Maximum - HSR.LargeChange + 1 RefreshPanelAll() End Sub Private Sub CGWidth2_Scroll(ByVal sender As Object, ByVal e As System.EventArgs) Handles CGWidth2.Scroll - CGWidth.Value = CGWidth2.Value / 4 + CGWidth.Value = CDec(CGWidth2.Value / 4) End Sub Private Sub CGDivide_ValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CGDivide.ValueChanged - gDivide = CGDivide.Value + gDivide = CInt(CGDivide.Value) RefreshPanelAll() End Sub Private Sub CGSub_ValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CGSub.ValueChanged - gSub = CGSub.Value + gSub = CInt(CGSub.Value) RefreshPanelAll() End Sub Private Sub BGSlash_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BGSlash.Click - Dim xd As Integer = Val(InputBox(Strings.Messages.PromptSlashValue, , gSlash)) + Dim xd As Integer = CInt(InputBox(Strings.Messages.PromptSlashValue, , gSlash.ToString())) If xd = 0 Then Exit Sub - If xd > CGDivide.Maximum Then xd = CGDivide.Maximum - If xd < CGDivide.Minimum Then xd = CGDivide.Minimum + If xd > CGDivide.Maximum Then xd = CInt(CGDivide.Maximum) + If xd < CGDivide.Minimum Then xd = CInt(CGDivide.Minimum) gSlash = xd End Sub @@ -2104,13 +2108,13 @@ EndSearch: Select Case PanelFocus Case 0 With LeftPanelScroll - xI1 = .Value + (tempY / 5) / gxHeight + xI1 = CInt(.Value + (tempY / 5) / gxHeight) If xI1 > 0 Then xI1 = 0 If xI1 < .Minimum Then xI1 = .Minimum .Value = xI1 End With With HSL - xI1 = .Value + (tempX / 10) / gxWidth + xI1 = CInt(.Value + (tempX / 10) / gxWidth) If xI1 > .Maximum - .LargeChange + 1 Then xI1 = .Maximum - .LargeChange + 1 If xI1 < .Minimum Then xI1 = .Minimum .Value = xI1 @@ -2118,13 +2122,13 @@ EndSearch: Case 1 With MainPanelScroll - xI1 = .Value + (tempY / 5) / gxHeight + xI1 = CInt(.Value + (tempY / 5) / gxHeight) If xI1 > 0 Then xI1 = 0 If xI1 < .Minimum Then xI1 = .Minimum .Value = xI1 End With With HS - xI1 = .Value + (tempX / 10) / gxWidth + xI1 = CInt(.Value + (tempX / 10) / gxWidth) If xI1 > .Maximum - .LargeChange + 1 Then xI1 = .Maximum - .LargeChange + 1 If xI1 < .Minimum Then xI1 = .Minimum .Value = xI1 @@ -2132,13 +2136,13 @@ EndSearch: Case 2 With RightPanelScroll - xI1 = .Value + (tempY / 5) / gxHeight + xI1 = CInt(.Value + (tempY / 5) / gxHeight) If xI1 > 0 Then xI1 = 0 If xI1 < .Minimum Then xI1 = .Minimum .Value = xI1 End With With HSR - xI1 = .Value + (tempX / 10) / gxWidth + xI1 = CInt(.Value + (tempX / 10) / gxWidth) If xI1 > .Maximum - .LargeChange + 1 Then xI1 = .Maximum - .LargeChange + 1 If xI1 < .Minimum Then xI1 = .Minimum .Value = xI1 @@ -2158,13 +2162,13 @@ EndSearch: Select Case PanelFocus Case 0 With LeftPanelScroll - xI1 = .Value + (Cursor.Position.Y - MiddleButtonLocation.Y) / 5 / gxHeight + xI1 = CInt(.Value + (Cursor.Position.Y - MiddleButtonLocation.Y) / 5 / gxHeight) If xI1 > 0 Then xI1 = 0 If xI1 < .Minimum Then xI1 = .Minimum .Value = xI1 End With With HSL - xI1 = .Value + (Cursor.Position.X - MiddleButtonLocation.X) / 5 / gxWidth + xI1 = CInt(.Value + (Cursor.Position.X - MiddleButtonLocation.X) / 5 / gxWidth) If xI1 > .Maximum - .LargeChange + 1 Then xI1 = .Maximum - .LargeChange + 1 If xI1 < .Minimum Then xI1 = .Minimum .Value = xI1 @@ -2172,13 +2176,13 @@ EndSearch: Case 1 With MainPanelScroll - xI1 = .Value + (Cursor.Position.Y - MiddleButtonLocation.Y) / 5 / gxHeight + xI1 = CInt(.Value + (Cursor.Position.Y - MiddleButtonLocation.Y) / 5 / gxHeight) If xI1 > 0 Then xI1 = 0 If xI1 < .Minimum Then xI1 = .Minimum .Value = xI1 End With With HS - xI1 = .Value + (Cursor.Position.X - MiddleButtonLocation.X) / 5 / gxWidth + xI1 = CInt(.Value + (Cursor.Position.X - MiddleButtonLocation.X) / 5 / gxWidth) If xI1 > .Maximum - .LargeChange + 1 Then xI1 = .Maximum - .LargeChange + 1 If xI1 < .Minimum Then xI1 = .Minimum .Value = xI1 @@ -2186,13 +2190,13 @@ EndSearch: Case 2 With RightPanelScroll - xI1 = .Value + (Cursor.Position.Y - MiddleButtonLocation.Y) / 5 / gxHeight + xI1 = CInt(.Value + (Cursor.Position.Y - MiddleButtonLocation.Y) / 5 / gxHeight) If xI1 > 0 Then xI1 = 0 If xI1 < .Minimum Then xI1 = .Minimum .Value = xI1 End With With HSR - xI1 = .Value + (Cursor.Position.X - MiddleButtonLocation.X) / 5 / gxWidth + xI1 = CInt(.Value + (Cursor.Position.X - MiddleButtonLocation.X) / 5 / gxWidth) If xI1 > .Maximum - .LargeChange + 1 Then xI1 = .Maximum - .LargeChange + 1 If xI1 < .Minimum Then xI1 = .Minimum .Value = xI1 @@ -2218,7 +2222,7 @@ EndSearch: If Not PreviewOnClick Then Exit Sub If hWAV(LWAV.SelectedIndex + 1) = "" Then Exit Sub - Dim xFileLocation As String = IIf(ExcludeFileName(FileName) = "", InitPath, ExcludeFileName(FileName)) & "\" & hWAV(LWAV.SelectedIndex + 1) + Dim xFileLocation As String = IIf(ExcludeFileName(FileName) = "", InitPath, ExcludeFileName(FileName)).ToString() & "\" & hWAV(LWAV.SelectedIndex + 1) PreviewNote(xFileLocation, False) End Sub @@ -2231,7 +2235,7 @@ EndSearch: Strings.FileType.MP3 & "|*.mp3|" & Strings.FileType._all & "|*.*" xDWAV.Multiselect = True - xDWAV.InitialDirectory = IIf(ExcludeFileName(FileName) = "", InitPath, ExcludeFileName(FileName)) + xDWAV.InitialDirectory = IIf(ExcludeFileName(FileName) = "", InitPath, ExcludeFileName(FileName)).ToString() If xDWAV.ShowDialog = Windows.Forms.DialogResult.Cancel Then Exit Sub InitPath = ExcludeFileName(xDWAV.FileName) @@ -2262,21 +2266,34 @@ EndSearch: End Sub Private Sub TBErrorCheck_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBErrorCheck.Click, mnErrorCheck.Click - ErrorCheck = sender.Checked + If TypeOf sender Is ToolStripButton Then + Dim senderC As ToolStripButton = CType(sender, ToolStripButton) + ErrorCheck = senderC.Checked + ElseIf TypeOf sender Is ToolStripMenuItem Then + Dim senderC As ToolStripMenuItem = CType(sender, ToolStripMenuItem) + ErrorCheck = senderC.Checked + End If + TBErrorCheck.Checked = ErrorCheck mnErrorCheck.Checked = ErrorCheck - TBErrorCheck.Image = IIf(TBErrorCheck.Checked, My.Resources.x16CheckError, My.Resources.x16CheckErrorN) - mnErrorCheck.Image = IIf(TBErrorCheck.Checked, My.Resources.x16CheckError, My.Resources.x16CheckErrorN) + TBErrorCheck.Image = CType(IIf(TBErrorCheck.Checked, My.Resources.x16CheckError, My.Resources.x16CheckErrorN), Image) + mnErrorCheck.Image = CType(IIf(TBErrorCheck.Checked, My.Resources.x16CheckError, My.Resources.x16CheckErrorN), Image) RefreshPanelAll() End Sub Private Sub TBPreviewOnClick_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBPreviewOnClick.Click, mnPreviewOnClick.Click PreviewNote("", True) - PreviewOnClick = sender.Checked + If TypeOf sender Is ToolStripButton Then + Dim senderC As ToolStripButton = CType(sender, ToolStripButton) + PreviewOnClick = senderC.Checked + ElseIf TypeOf sender Is ToolStripMenuItem Then + Dim senderC As ToolStripMenuItem = CType(sender, ToolStripMenuItem) + PreviewOnClick = senderC.Checked + End If TBPreviewOnClick.Checked = PreviewOnClick mnPreviewOnClick.Checked = PreviewOnClick - TBPreviewOnClick.Image = IIf(PreviewOnClick, My.Resources.x16PreviewOnClick, My.Resources.x16PreviewOnClickN) - mnPreviewOnClick.Image = IIf(PreviewOnClick, My.Resources.x16PreviewOnClick, My.Resources.x16PreviewOnClickN) + TBPreviewOnClick.Image = CType(IIf(PreviewOnClick, My.Resources.x16PreviewOnClick, My.Resources.x16PreviewOnClickN), Image) + mnPreviewOnClick.Image = CType(IIf(PreviewOnClick, My.Resources.x16PreviewOnClick, My.Resources.x16PreviewOnClickN), Image) End Sub 'Private Sub TBPreviewErrorCheck_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) @@ -2285,20 +2302,32 @@ EndSearch: 'End Sub Private Sub TBShowFileName_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBShowFileName.Click, mnShowFileName.Click - ShowFileName = sender.Checked + If TypeOf sender Is ToolStripButton Then + Dim senderC As ToolStripButton = CType(sender, ToolStripButton) + ShowFileName = senderC.Checked + ElseIf TypeOf sender Is ToolStripMenuItem Then + Dim senderC As ToolStripMenuItem = CType(sender, ToolStripMenuItem) + ShowFileName = senderC.Checked + End If TBShowFileName.Checked = ShowFileName mnShowFileName.Checked = ShowFileName - TBShowFileName.Image = IIf(ShowFileName, My.Resources.x16ShowFileName, My.Resources.x16ShowFileNameN) - mnShowFileName.Image = IIf(ShowFileName, My.Resources.x16ShowFileName, My.Resources.x16ShowFileNameN) + TBShowFileName.Image = CType(IIf(ShowFileName, My.Resources.x16ShowFileName, My.Resources.x16ShowFileNameN), Image) + mnShowFileName.Image = CType(IIf(ShowFileName, My.Resources.x16ShowFileName, My.Resources.x16ShowFileNameN), Image) RefreshPanelAll() End Sub Private Sub TBShowWaveform_Click(sender As Object, e As EventArgs) Handles TBShowWaveform.Click, mnShowWaveform.Click - ShowWaveform = sender.Checked + If TypeOf sender Is ToolStripButton Then + Dim senderC As ToolStripButton = CType(sender, ToolStripButton) + ShowWaveform = senderC.Checked + ElseIf TypeOf sender Is ToolStripMenuItem Then + Dim senderC As ToolStripMenuItem = CType(sender, ToolStripMenuItem) + ShowWaveform = senderC.Checked + End If TBShowWaveform.Checked = ShowWaveform mnShowWaveform.Checked = ShowWaveform - TBShowWaveform.Image = IIf(ShowWaveform, My.Resources.x16ShowWaveform, My.Resources.x16ShowWaveformN) - mnShowWaveform.Image = IIf(ShowWaveform, My.Resources.x16ShowWaveform, My.Resources.x16ShowWaveformN) + TBShowWaveform.Image = CType(IIf(ShowWaveform, My.Resources.x16ShowWaveform, My.Resources.x16ShowWaveformN), Image) + mnShowWaveform.Image = CType(IIf(ShowWaveform, My.Resources.x16ShowWaveform, My.Resources.x16ShowWaveformN), Image) If Not WaveformLoaded AndAlso ShowWaveform Then For xI1 = 1 To UBound(wLWAV) If hWAV(xI1) <> "" Then wLWAV(xI1) = LoadWaveForm(ExcludeFileName(FileName) & "\" & hWAV(xI1)) @@ -2373,7 +2402,7 @@ EndSearch: Dim xUndo As UndoRedo.LinkedURCmd = Nothing Dim xRedo As UndoRedo.LinkedURCmd = New UndoRedo.Void Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo - Dim xMeasureLengthBefore = MeasureLength.Clone + Dim xMeasureLengthBefore = CType(MeasureLength.Clone, Double()) Dim xMeasureLengthClipboard() As String = Split(Clipboard.GetText, vbCrLf) @@ -2394,7 +2423,7 @@ EndSearch: LBeat.SelectedIndices.Add(xIL0 + xI1) Next - RedoChangeMeasure(xMeasureLengthBefore, MeasureLength.Clone, xUndo, xRedo) + RedoChangeMeasure(xMeasureLengthBefore, CType(MeasureLength.Clone(), Double()), xUndo, xRedo) AddUndo(xUndo, xBaseRedo.Next) RefreshPanelAll() @@ -2431,7 +2460,7 @@ EndSearch: Dim xI1 As Integer = -1 For xI2 = 1 To UBound(Notes) With Notes(xI2) - If .Selected AndAlso Not .Comment AndAlso IsColumnSound(.ColumnIndex) AndAlso hWAV(.Value / 10000) <> "" Then + If .Selected AndAlso Not .Comment AndAlso IsColumnSound(.ColumnIndex) AndAlso hWAV(CInt(.Value / 10000)) <> "" Then xI1 += 1 InternalPlayNotes(xI1) = Notes(xI2) End If @@ -2472,11 +2501,11 @@ EndSearch: Dim NoteTime = GetTimeFromVPosition(InternalPlayNotes(InternalPlayNoteIndex).VPosition) - GetTimeFromVPosition(InternalPlayNotes(0).VPosition) If InternalPlayTimerCount >= CLng(NoteTime * 1000) Then - Dim xIW As Integer = InternalPlayNotes(InternalPlayNoteIndex).Value / 10000 + Dim xIW As Integer = CInt(InternalPlayNotes(InternalPlayNoteIndex).Value / 10000) If xIW <= 0 Then xIW = 1 If xIW >= 1296 Then xIW = 1295 - Dim xFileLocation As String = IIf(ExcludeFileName(FileName) = "", InitPath, ExcludeFileName(FileName)) & "\" & hWAV(xIW) + Dim xFileLocation As String = IIf(ExcludeFileName(FileName) = "", InitPath, ExcludeFileName(FileName)).ToString() & "\" & hWAV(xIW) InternalPlayWav(xIW).Play(xFileLocation) InternalPlayNoteIndex += 1 @@ -2486,14 +2515,14 @@ EndSearch: Private Function GetFileName(ByVal s As String) As String Dim fslash As Integer = InStrRev(s, "/") Dim bslash As Integer = InStrRev(s, "\") - Return Mid(s, IIf(fslash > bslash, fslash, bslash) + 1) + Return Mid(s, CInt(IIf(fslash > bslash, fslash, bslash)) + 1) End Function Private Function ExcludeFileName(ByVal s As String) As String Dim fslash As Integer = InStrRev(s, "/") Dim bslash As Integer = InStrRev(s, "\") If (bslash Or fslash) = 0 Then Return "" - Return Mid(s, 1, IIf(fslash > bslash, fslash, bslash) - 1) + Return Mid(s, 1, CInt(IIf(fslash > bslash, fslash, bslash)) - 1) End Function Private Sub PlayerMissingPrompt() @@ -2504,7 +2533,7 @@ EndSearch: Dim xDOpen As New OpenFileDialog xDOpen.InitialDirectory = IIf(ExcludeFileName(PrevCodeToReal(xArg.Path)) = "", My.Application.Info.DirectoryPath, - ExcludeFileName(PrevCodeToReal(xArg.Path))) + ExcludeFileName(PrevCodeToReal(xArg.Path))).ToString() xDOpen.FileName = PrevCodeToReal(xArg.Path) xDOpen.Filter = Strings.FileType.EXE & "|*.exe" xDOpen.DefaultExt = "exe" @@ -2535,7 +2564,7 @@ EndSearch: Dim xStrAll As String = SaveBMS() Dim xFileName As String = IIf(Not PathIsValid(FileName), IIf(InitPath = "", My.Application.Info.DirectoryPath, InitPath), - ExcludeFileName(FileName)) & "\___TempBMS.bmsc" + ExcludeFileName(FileName)).ToString() & "\___TempBMS.bmsc" My.Computer.FileSystem.WriteAllText(xFileName, xStrAll, False, TextEncoding) AddTempFileList(xFileName) @@ -2558,7 +2587,7 @@ EndSearch: Dim xStrAll As String = SaveBMS() Dim xFileName As String = IIf(Not PathIsValid(FileName), IIf(InitPath = "", My.Application.Info.DirectoryPath, InitPath), - ExcludeFileName(FileName)) & "\___TempBMS.bmsc" + ExcludeFileName(FileName)).ToString() & "\___TempBMS.bmsc" My.Computer.FileSystem.WriteAllText(xFileName, xStrAll, False, TextEncoding) AddTempFileList(xFileName) @@ -2703,15 +2732,16 @@ StartCount: If Not NTInput Then End Select -StartCount: If Not NTInput Then +StartCount: Dim idWAV As Integer = CInt(.Value / 10000) + If Not NTInput Then If Not (.LongNote Or .Hidden Or .Landmine Or .Hidden Or .Value \ 10000 = LnObj Or .Comment) Then data(row, 0) += 1 If noteLanes.Contains(.ColumnIndex) Or .ColumnIndex >= niB Then - dataWAV(.Value / 10000, 1) += 1 + dataWAV(idWAV, 1) += 1 End If End If If .LongNote Then - If dataLNToggle Then data(row, 1) += 1 : dataWAV(.Value / 10000, 1) += 1 + If dataLNToggle Then data(row, 1) += 1 : dataWAV(idWAV, 1) += 1 dataLNToggle = Not dataLNToggle End If If .Value \ 10000 = LnObj Then data(row, 2) += 1 @@ -2723,7 +2753,7 @@ StartCount: If Not NTInput Then If Not (.LongNote Or .Hidden Or .Landmine Or .Hidden Or .Value \ 10000 = LnObj Or .Comment) Then data(row, 0) += 1 If noteLanes.Contains(.ColumnIndex) Or .ColumnIndex >= niB Then - dataWAV(.Value / 10000, 1) += 1 + dataWAV(idWAV, 1) += 1 End If End If If .Length <> 0 Then data(row, 1) += 1 @@ -2781,7 +2811,7 @@ StartCount: If Not NTInput Then End If End With Next - xIAll += xITemp / 2 + xIAll += CInt(xITemp / 2) Else For xI1 = 1 To UBound(Notes) With Notes(xI1) @@ -2796,15 +2826,15 @@ StartCount: If Not NTInput Then Case 0 TotalValue = xIAll * 7.605 / (0.01 * xIAll + 6.5) * TotalGlobalMultiplier Case 1 - TotalValue = IIf(xIAll < 400, 200 + xIAll / 5, IIf(xIAll < 600, 280 + (xIAll - 400) / 2.5, 360 + (xIAll - 600) / 5)) * TotalGlobalMultiplier + TotalValue = CDbl(IIf(xIAll < 400, 200 + xIAll / 5, IIf(xIAll < 600, 280 + (xIAll - 400) / 2.5, 360 + (xIAll - 600) / 5))) * TotalGlobalMultiplier Case 2 TotalValue = xIAll * TotalMultiplier * TotalGlobalMultiplier End Select - TBTotalValue.Text = IIf(TotalRecommendedTextDisplay, "Recommended #TOTAL: ", "") & Str(Math.Round(TotalValue, 3)) - TBStatistics.Text = xIAll + TBTotalValue.Text = IIf(TotalRecommendedTextDisplay, "Recommended #TOTAL: ", "").ToString() & Str(Math.Round(TotalValue, 3)) + TBStatistics.Text = xIAll.ToString() End Sub - Public Function GetMouseVPosition(Optional snap As Boolean = True) + Public Function GetMouseVPosition(Optional snap As Boolean = True) As Double Dim panHeight = spMain(PanelFocus).Height Dim panDisplacement = PanelVScroll(PanelFocus) Dim vpos = (panHeight - panDisplacement * gxHeight - MouseMoveStatus.Y - 1) / gxHeight @@ -2828,7 +2858,7 @@ StartCount: If Not NTInput Then Dim xMeasure As Integer = MeasureAtDisplacement(TempVPosition) Dim xMLength As Double = MeasureLength(xMeasure) Dim xVposMod As Double = TempVPosition - MeasureBottom(xMeasure) - Dim xGCD As Double = GCD(IIf(xVposMod = 0, xMLength, xVposMod), xMLength) + Dim xGCD As Double = GCD(CDbl(IIf(xVposMod = 0, xMLength, xVposMod)), xMLength) FSP1.Text = (xVposMod * gDivide / 192).ToString & " / " & (xMLength * gDivide / 192).ToString & " " FSP2.Text = xVposMod.ToString & " / " & xMLength & " " @@ -2845,7 +2875,7 @@ StartCount: If Not NTInput Then Dim xMeasure As Integer = MeasureAtDisplacement(Notes(xI1).VPosition) Dim xMLength As Double = MeasureLength(xMeasure) Dim xVposMod As Double = Notes(xI1).VPosition - MeasureBottom(xMeasure) - Dim xGCD As Double = GCD(IIf(xVposMod = 0, xMLength, xVposMod), xMLength) + Dim xGCD As Double = GCD(CDbl(IIf(xVposMod = 0, xMLength, xVposMod)), xMLength) FSP1.Text = (xVposMod * gDivide / 192).ToString & " / " & (xMLength * gDivide / 192).ToString & " " FSP2.Text = xVposMod.ToString & " / " & xMLength & " " @@ -2855,7 +2885,7 @@ StartCount: If Not NTInput Then FSC.Text = nTitle(Notes(xI1).ColumnIndex) FSW.Text = IIf(IsColumnNumeric(Notes(xI1).ColumnIndex), Notes(xI1).Value / 10000, - C10to36(Notes(xI1).Value \ 10000)) + C10to36(Notes(xI1).Value \ 10000)).ToString() FSM.Text = Add3Zeros(xMeasure) ' TODO: Count stops @@ -2886,7 +2916,7 @@ StartCount: If Not NTInput Then FST.Text = Strings.StatusBar.Note End If - FSE.Text = IIf(Notes(xI1).HasError, Strings.StatusBar.Err, "") + FSE.Text = IIf(Notes(xI1).HasError, Strings.StatusBar.Err, "").ToString() End If @@ -2896,7 +2926,7 @@ StartCount: If Not NTInput Then Dim xMeasure As Integer = MeasureAtDisplacement(TempVPosition) Dim xMLength As Double = MeasureLength(xMeasure) Dim xVposMod As Double = TempVPosition - MeasureBottom(xMeasure) - Dim xGCD As Double = GCD(IIf(xVposMod = 0, xMLength, xVposMod), xMLength) + Dim xGCD As Double = GCD(CDbl(IIf(xVposMod = 0, xMLength, xVposMod)), xMLength) FSP1.Text = (xVposMod * gDivide / 192).ToString & " / " & (xMLength * gDivide / 192).ToString & " " FSP2.Text = xVposMod.ToString & " / " & xMLength & " " @@ -2923,9 +2953,9 @@ StartCount: If Not NTInput Then End If ElseIf TBTimeSelect.Checked Then - FSSS.Text = vSelStart - FSSL.Text = vSelLength - FSSH.Text = vSelHalf + FSSS.Text = vSelStart.ToString() + FSSL.Text = vSelLength.ToString() + FSSH.Text = vSelHalf.ToString() End If FStatus.Invalidate() @@ -3130,7 +3160,7 @@ MirrorSkip1: MirrorSkip2: - Dim xniArray1(xRangeU - xRangeL - 1) + Dim xniArray1(xRangeU - xRangeL - 1) As Integer For xI1 = 0 To xRangeU - xRangeL - 1 xniArray1(xI1) = xniArray0(xI1 + xRangeL) Next @@ -3202,7 +3232,9 @@ DoNothing: RefreshPanelAll() End Sub - Private Sub POBRandomAll(ByVal Mode As String) + Private Sub POBRandomAll(sender As Object, e As EventArgs) Handles POBRandom.Click, POBRRandom.Click, POBSRandom.Click, POBHRandom.Click + Dim NameS As String = CType(sender, ToolStripMenuItem).Name + Dim xI1 As Integer Dim xI2 As Integer Dim xUndo As UndoRedo.LinkedURCmd = Nothing @@ -3260,21 +3292,21 @@ Skip1: Next Skip2: - Dim xniArray1(xRangeU - xRangeL - 1) + Dim xniArray1(xRangeU - xRangeL - 1) As Integer For xI1 = 0 To xRangeU - xRangeL - 1 xniArray1(xI1) = xniArray0(xI1 + xRangeL) Next - Dim xniArrayR = xniArray1.Clone() + Dim xniArrayR() As Integer = CType(xniArray1.Clone(), Integer()) - Select Case Mode - Case "Random", "RRandom" + Select Case NameS + Case "POBRandom", "POBRRandom" ' Shuffle columns - If Mode = "Random" Then + If NameS = "POBRandom" Then Shuffle(xniArrayR) Else - Dim R As Integer = Math.Floor(xniArrayR.Length * Rnd()) - Dim M As Integer = Math.Floor(2 * Rnd()) * 2 - 1 + Dim R As Integer = CInt(Math.Floor(xniArrayR.Length * Rnd())) + Dim M As Integer = CInt(Math.Floor(2 * Rnd()) * 2 - 1) For i = 0 To UBound(xniArrayR) xniArrayR(i) = xniArray1((i * M + R + xniArrayR.Length) Mod xniArrayR.Length) Next @@ -3299,11 +3331,11 @@ Skip2: .ColumnIndex = xCol End With Next - Case "SRandom", "HRandom" + Case "POBSRandom", "POBHRandom" ' Find array of indexes of selected notes in the same vPosition xI1 = 1 Dim xI1Arr(-1) As Integer - Dim vPos As Integer + Dim vPos As Double Dim xI1ArrPrevUBound As Integer = -1 ' Used for HRandom ' Find the first index of selected notes Do While xI1 <= UBound(Notes) @@ -3318,11 +3350,11 @@ Skip2: Loop ' Shuffle columns - If Mode = "SRandom" Or xI1ArrPrevUBound = -1 Then ' If SRandom or for HRandom, if it's the first set of notes + If NameS = "POBSRandom" Or xI1ArrPrevUBound = -1 Then ' If SRandom or for HRandom, if it's the first set of notes Shuffle(xniArrayR) Else - Dim xniArrayR1(xI1ArrPrevUBound) As String - Dim xniArrayR2(UBound(xniArray1) - xI1ArrPrevUBound - 1) As String + Dim xniArrayR1(xI1ArrPrevUBound) As Integer + Dim xniArrayR2(UBound(xniArray1) - xI1ArrPrevUBound - 1) As Integer For i = 0 To UBound(xniArrayR1) xniArrayR1(i) = xniArrayR(i) Next @@ -3357,21 +3389,7 @@ DoNothing: UpdatePairing() RefreshPanelAll() End Sub - Private Sub POBRandom_Click(sender As Object, e As EventArgs) Handles POBRandom.Click - POBRandomAll("Random") - End Sub - Private Sub POBRRandom_Click(sender As Object, e As EventArgs) Handles POBRRandom.Click - POBRandomAll("RRandom") - End Sub - - Private Sub POBSRandom_Click(sender As Object, e As EventArgs) Handles POBSRandom.Click - POBRandomAll("SRandom") - End Sub - - Private Sub POBHRandom_Click(sender As Object, e As EventArgs) Handles POBHRandom.Click - POBRandomAll("HRandom") - End Sub Private Sub POBSort_Click(sender As Object, e As EventArgs) Handles POBSort.Click Dim xI1 As Integer Dim xI2 As Integer @@ -3384,12 +3402,12 @@ DoNothing: Dim xniArrayLen = xniArray1.Length - Dim vPos As Integer = -1 + Dim vPos As Double = -1 Dim xIArray(0) As Integer - Dim xValueArray(0) As Integer + Dim xValueArray(0) As Long Dim xI3 As Integer = 0 Dim xITemp As Integer - Dim xValueTemp As Integer + Dim xValueTemp As Long Dim xSorted As Boolean = False For xI1 = 1 To UBound(Notes) @@ -3480,10 +3498,10 @@ RestartSorting: xSorted = False Private Sub TVCM_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TVCM.KeyDown If e.KeyCode = Keys.Enter Then - TVCM.Text = Val(TVCM.Text) + TVCM.Text = Val(TVCM.Text).ToString() If Val(TVCM.Text) <= 0 Then MsgBox(Strings.Messages.NegativeFactorError, MsgBoxStyle.Critical, Strings.Messages.Err) - TVCM.Text = 1 + TVCM.Text = 1.ToString() TVCM.Focus() TVCM.SelectAll() Else @@ -3493,10 +3511,10 @@ RestartSorting: xSorted = False End Sub Private Sub TVCM_LostFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles TVCM.LostFocus - TVCM.Text = Val(TVCM.Text) + TVCM.Text = Val(TVCM.Text).ToString() If Val(TVCM.Text) <= 0 Then MsgBox(Strings.Messages.NegativeFactorError, MsgBoxStyle.Critical, Strings.Messages.Err) - TVCM.Text = 1 + TVCM.Text = 1.ToString() TVCM.Focus() TVCM.SelectAll() End If @@ -3504,10 +3522,10 @@ RestartSorting: xSorted = False Private Sub TVCD_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TVCD.KeyDown If e.KeyCode = Keys.Enter Then - TVCD.Text = Val(TVCD.Text) + TVCD.Text = Val(TVCD.Text).ToString() If Val(TVCD.Text) <= 0 Then MsgBox(Strings.Messages.NegativeDivisorError, MsgBoxStyle.Critical, Strings.Messages.Err) - TVCD.Text = 1 + TVCD.Text = 1.ToString() TVCD.Focus() TVCD.SelectAll() Else @@ -3517,10 +3535,10 @@ RestartSorting: xSorted = False End Sub Private Sub TVCD_LostFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles TVCD.LostFocus - TVCD.Text = Val(TVCD.Text) + TVCD.Text = Val(TVCD.Text).ToString() If Val(TVCD.Text) <= 0 Then MsgBox(Strings.Messages.NegativeDivisorError, MsgBoxStyle.Critical, Strings.Messages.Err) - TVCD.Text = 1 + TVCD.Text = 1.ToString() TVCD.Focus() TVCD.SelectAll() End If @@ -3528,10 +3546,10 @@ RestartSorting: xSorted = False Private Sub TVCBPM_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TVCBPM.KeyDown If e.KeyCode = Keys.Enter Then - TVCBPM.Text = Val(TVCBPM.Text) + TVCBPM.Text = Val(TVCBPM.Text).ToString() If Val(TVCBPM.Text) <= 0 Then MsgBox(Strings.Messages.NegativeDivisorError, MsgBoxStyle.Critical, Strings.Messages.Err) - TVCBPM.Text = Notes(0).Value / 10000 + TVCBPM.Text = (Notes(0).Value / 10000).ToString() TVCBPM.Focus() TVCBPM.SelectAll() Else @@ -3541,10 +3559,10 @@ RestartSorting: xSorted = False End Sub Private Sub TVCBPM_LostFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles TVCBPM.LostFocus - TVCBPM.Text = Val(TVCBPM.Text) + TVCBPM.Text = Val(TVCBPM.Text).ToString() If Val(TVCBPM.Text) <= 0 Then MsgBox(Strings.Messages.NegativeDivisorError, MsgBoxStyle.Critical, Strings.Messages.Err) - TVCBPM.Text = Notes(0).Value / 10000 + TVCBPM.Text = (Notes(0).Value / 10000).ToString() TVCBPM.Focus() TVCBPM.SelectAll() End If @@ -3568,11 +3586,11 @@ RestartSorting: xSorted = False Private Function sIA() As Integer - Return IIf(sI > 98, 0, sI + 1) + Return CInt(IIf(sI > 98, 0, sI + 1)) End Function Private Function sIM() As Integer - Return IIf(sI < 1, 99, sI - 1) + Return CInt(IIf(sI < 1, 99, sI - 1)) End Function @@ -3703,7 +3721,7 @@ RestartSorting: xSorted = False Next LWAV.SelectedIndices.Clear() - For xI1 As Integer = 0 To IIf(UBound(xIndices) < UBound(xPath), UBound(xIndices), UBound(xPath)) + For xI1 As Integer = 0 To CInt(IIf(UBound(xIndices) < UBound(xPath), UBound(xIndices), UBound(xPath))) LWAV.SelectedIndices.Add(xIndices(xI1)) Next @@ -3742,7 +3760,7 @@ RestartSorting: xSorted = False End Sub Private Sub POWAV_Resize(ByVal sender As Object, ByVal e As System.EventArgs) Handles POWAV.Resize - LWAV.Height = sender.Height - 25 + LWAV.Height = POWAV.Height - 25 End Sub Private Sub POBeat_Resize(ByVal sender As Object, ByVal e As System.EventArgs) Handles POBeat.Resize LBeat.Height = POBeat.Height - 25 @@ -3752,18 +3770,22 @@ RestartSorting: xSorted = False End Sub Private Sub mn_DropDownClosed(ByVal sender As Object, ByVal e As System.EventArgs) - sender.ForeColor = Color.White + Dim TSMIS As ToolStripMenuItem = CType(sender, ToolStripMenuItem) + TSMIS.ForeColor = Color.White End Sub Private Sub mn_DropDownOpened(ByVal sender As Object, ByVal e As System.EventArgs) - sender.ForeColor = Color.Black + Dim TSMIS As ToolStripMenuItem = CType(sender, ToolStripMenuItem) + TSMIS.ForeColor = Color.Black End Sub Private Sub mn_MouseEnter(ByVal sender As Object, ByVal e As System.EventArgs) - If sender.Pressed Then Return - sender.ForeColor = Color.Black + Dim TSMIS As ToolStripMenuItem = CType(sender, ToolStripMenuItem) + If TSMIS.Pressed Then Return + TSMIS.ForeColor = Color.Black End Sub Private Sub mn_MouseLeave(ByVal sender As Object, ByVal e As System.EventArgs) - If sender.Pressed Then Return - sender.ForeColor = Color.White + Dim TSMIS As ToolStripMenuItem = CType(sender, ToolStripMenuItem) + If TSMIS.Pressed Then Return + TSMIS.ForeColor = Color.White End Sub Private Sub TBPOptions_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBPOptions.Click, mnPOptions.Click @@ -3892,7 +3914,7 @@ RestartSorting: xSorted = False Dim xRedo As UndoRedo.LinkedURCmd = New UndoRedo.Void Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo - TBWavIncrease.Checked = Not sender.Checked + TBWavIncrease.Checked = Not TBWavIncrease.Checked Me.RedoWavIncrease(TBWavIncrease.Checked, xUndo, xRedo) AddUndo(xUndo, xBaseRedo.Next) End Sub @@ -3906,7 +3928,13 @@ RestartSorting: xSorted = False Me.RedoRemoveNoteAll(False, xUndo, xRedo) - NTInput = sender.Checked + If TypeOf sender Is ToolStripButton Then + Dim senderC As ToolStripButton = CType(sender, ToolStripButton) + NTInput = senderC.Checked + ElseIf TypeOf sender Is ToolStripMenuItem Then + Dim senderC As ToolStripMenuItem = CType(sender, ToolStripMenuItem) + NTInput = senderC.Checked + End If TBNTInput.Checked = NTInput mnNTInput.Checked = NTInput @@ -3929,44 +3957,44 @@ RestartSorting: xSorted = False End Sub Private Sub THBPM_ValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles THBPM.ValueChanged - If Notes IsNot Nothing Then Notes(0).Value = THBPM.Value * 10000 : RefreshPanelAll() + If Notes IsNot Nothing Then Notes(0).Value = CLng(THBPM.Value * 10000) : RefreshPanelAll() If IsSaved Then SetIsSaved(False) End Sub Private Sub TWPosition_ValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TWPosition.ValueChanged wPosition = TWPosition.Value - TWPosition2.Value = IIf(wPosition > TWPosition2.Maximum, TWPosition2.Maximum, wPosition) + TWPosition2.Value = CInt(IIf(wPosition > TWPosition2.Maximum, TWPosition2.Maximum, wPosition)) RefreshPanelAll() End Sub Private Sub TWLeft_ValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TWLeft.ValueChanged - wLeft = TWLeft.Value - TWLeft2.Value = IIf(wLeft > TWLeft2.Maximum, TWLeft2.Maximum, wLeft) + wLeft = CInt(TWLeft.Value) + TWLeft2.Value = CInt(IIf(wLeft > TWLeft2.Maximum, TWLeft2.Maximum, wLeft)) RefreshPanelAll() End Sub Private Sub TWWidth_ValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TWWidth.ValueChanged - wWidth = TWWidth.Value - TWWidth2.Value = IIf(wWidth > TWWidth2.Maximum, TWWidth2.Maximum, wWidth) + wWidth = CInt(TWWidth.Value) + TWWidth2.Value = CInt(IIf(wWidth > TWWidth2.Maximum, TWWidth2.Maximum, wWidth)) RefreshPanelAll() End Sub Private Sub TWPrecision_ValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TWPrecision.ValueChanged - wPrecision = TWPrecision.Value - TWPrecision2.Value = IIf(wPrecision > TWPrecision2.Maximum, TWPrecision2.Maximum, wPrecision) + wPrecision = CInt(TWPrecision.Value) + TWPrecision2.Value = CInt(IIf(wPrecision > TWPrecision2.Maximum, TWPrecision2.Maximum, wPrecision)) RefreshPanelAll() End Sub Private Sub TWTransparency_ValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TWTransparency.ValueChanged - TWTransparency2.Value = TWTransparency.Value - vo.pBGMWav.Color = Color.FromArgb(TWTransparency.Value, vo.pBGMWav.Color) + TWTransparency2.Value = CInt(TWTransparency.Value) + vo.pBGMWav.Color = Color.FromArgb(CInt(TWTransparency.Value), vo.pBGMWav.Color) RefreshPanelAll() End Sub Private Sub TWSaturation_ValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TWSaturation.ValueChanged Dim xColor As Color = vo.pBGMWav.Color - TWSaturation2.Value = TWSaturation.Value - vo.pBGMWav.Color = HSL2RGB(xColor.GetHue, TWSaturation.Value, xColor.GetBrightness * 1000, xColor.A) + TWSaturation2.Value = CInt(TWSaturation.Value) + vo.pBGMWav.Color = HSL2RGB(CInt(xColor.GetHue), CInt(TWSaturation.Value), CInt(xColor.GetBrightness * 1000), xColor.A) RefreshPanelAll() End Sub @@ -4016,26 +4044,26 @@ RestartSorting: xSorted = False End Sub Private Sub TBTotalValue_Click(sender As Object, e As EventArgs) Handles TBTotalValue.Click - Dim xDiag As New OpTotal(TBStatistics.Text, TotalOption, TotalMultiplier, TotalGlobalMultiplier, TotalRecommendedTextDisplay) + Dim xDiag As New OpTotal(CInt(TBStatistics.Text), TotalOption, TotalMultiplier, TotalGlobalMultiplier, TotalRecommendedTextDisplay) If xDiag.ShowDialog() = Windows.Forms.DialogResult.OK Then With xDiag TotalOption = .TotalOption - TotalMultiplier = .TMultiplier.Text - TotalGlobalMultiplier = .TGlobalMultiplier.Text + TotalMultiplier = CDbl(.TMultiplier.Text) + TotalGlobalMultiplier = CDbl(.TGlobalMultiplier.Text) TotalRecommendedTextDisplay = .CBDisplayText.Checked End With - Dim N As Integer = TBStatistics.Text + Dim N As Integer = CInt(TBStatistics.Text) Dim TotalValue As Double Select Case TotalOption Case 0 - TotalValue = Math.Round(N * 7.605 / (0.01 * N + 6.5), 2) * TotalGlobalMultiplier + TotalValue = N * 7.605 / (0.01 * N + 6.5) * TotalGlobalMultiplier Case 1 - TotalValue = IIf(N < 400, 200 + N / 5, IIf(N < 600, 280 + (N - 400) / 2.5, 360 + (N - 600) / 5)) * TotalGlobalMultiplier + TotalValue = CDbl(IIf(N < 400, 200 + N / 5, IIf(N < 600, 280 + (N - 400) / 2.5, 360 + (N - 600) / 5))) * TotalGlobalMultiplier Case 2 TotalValue = N * TotalMultiplier * TotalGlobalMultiplier End Select - TBTotalValue.Text = IIf(TotalRecommendedTextDisplay, "Recommended #TOTAL: ", "") & Str(TotalValue) + TBTotalValue.Text = IIf(TotalRecommendedTextDisplay, "Recommended #TOTAL: ", "").ToString() & Str(Math.Round(TotalValue, 3)) End If End Sub @@ -4044,7 +4072,7 @@ RestartSorting: xSorted = False 'If col(0).Width = 0 Then col(0).Visible = False For xI1 As Integer = 1 To UBound(column) - column(xI1).Left = column(xI1 - 1).Left + IIf(column(xI1 - 1).isVisible, column(xI1 - 1).Width, 0) + column(xI1).Left = column(xI1 - 1).Left + CInt(IIf(column(xI1 - 1).isVisible, column(xI1 - 1).Width, 0)) 'If col(xI1).Width = 0 Then col(xI1).Visible = False Next HSL.Maximum = nLeft(gColumns) + column(niB).Width @@ -4078,7 +4106,7 @@ RestartSorting: xSorted = False End Sub Private Sub CGB_ValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CGB.ValueChanged - gColumns = niB + CGB.Value - 1 + gColumns = CInt(niB + CGB.Value - 1) UpdateColumnsX() RefreshPanelAll() End Sub @@ -4098,7 +4126,7 @@ RestartSorting: xSorted = False Case Else : xTE = 0 End Select - Dim xDiag As New OpGeneral(gWheel, gPgUpDn, MiddleButtonMoveMethod, xTE, 192.0R / BMSGridLimit, + Dim xDiag As New OpGeneral(gWheel, gPgUpDn, MiddleButtonMoveMethod, xTE, CInt(192.0R / BMSGridLimit), AutoSaveInterval, BeepWhileSaved, BPMx1296, STOPx1296, AutoFocusMouseEnter, FirstClickDisabled, ClickStopPreview, ErrorJackBPM, ErrorJackTH) @@ -4121,8 +4149,8 @@ RestartSorting: xSorted = False ErrorJackTH = .nJackTH.Value ErrorJackSpeed = 60 * 4 / .nJackBPM.Value / .nJackTH.Value End With - If AutoSaveInterval Then AutoSaveTimer.Interval = AutoSaveInterval - AutoSaveTimer.Enabled = AutoSaveInterval + If AutoSaveInterval > 0 Then AutoSaveTimer.Interval = AutoSaveInterval + AutoSaveTimer.Enabled = AutoSaveInterval > 0 End If End Sub @@ -4302,7 +4330,7 @@ RestartSorting: xSorted = False If Not (xNum Or xLbl) Then Exit Sub If xNum Then - Dim xD1 As Double = Val(InputBox(Strings.Messages.PromptEnterNumeric, Text)) * 10000 + Dim xD1 As Long = CLng(InputBox(Strings.Messages.PromptEnterNumeric, Text)) * 10000 If Not xD1 = 0 Then If xD1 <= 0 Then xD1 = 1 @@ -4362,15 +4390,15 @@ Jump2: Private Sub TBFind_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBFind.Click, mnFind.Click - Dim xDiag As New diagFind(gColumns, Strings.Messages.Err, Strings.Messages.InvalidLabel) + Dim xDiag As New dgFind(gColumns, Strings.Messages.Err, Strings.Messages.InvalidLabel) xDiag.Show() End Sub Private Function fdrCheck(ByVal xNote As Note) As Boolean Return xNote.VPosition >= MeasureBottom(fdriMesL) And xNote.VPosition < MeasureBottom(fdriMesU) + MeasureLength(fdriMesU) AndAlso - IIf(IsColumnNumeric(xNote.ColumnIndex), + CBool(IIf(IsColumnNumeric(xNote.ColumnIndex), xNote.Value >= fdriValL And xNote.Value <= fdriValU, - xNote.Value >= fdriLblL And xNote.Value <= fdriLblU) AndAlso + xNote.Value >= fdriLblL And xNote.Value <= fdriLblU)) AndAlso Array.IndexOf(fdriCol, xNote.ColumnIndex - 1) <> -1 ' lol Fixed End Function @@ -4379,178 +4407,11 @@ Jump2: Return (Not xbLim1 And xbLim2 And xVal) Or (xbLim1 And Not xbLim2 And Not xVal) Or (xbLim1 And xbLim2) End Function - Public Sub fdrSelect(ByVal iRange As Integer, - ByVal xMesL As Integer, ByVal xMesU As Integer, - ByVal xLblL As String, ByVal xLblU As String, - ByVal xValL As Integer, ByVal xValU As Integer, - ByVal iCol() As Integer) - - fdriMesL = xMesL - fdriMesU = xMesU - fdriLblL = C36to10(xLblL) * 10000 - fdriLblU = C36to10(xLblU) * 10000 - fdriValL = xValL - fdriValU = xValU - fdriCol = iCol - - Dim xbSel As Boolean = iRange Mod 2 = 0 - Dim xbUnsel As Boolean = iRange Mod 3 = 0 - Dim xbShort As Boolean = iRange Mod 5 = 0 - Dim xbLong As Boolean = iRange Mod 7 = 0 - Dim xbHidden As Boolean = iRange Mod 11 = 0 - Dim xbVisible As Boolean = iRange Mod 13 = 0 - - Dim xSel(UBound(Notes)) As Boolean - For xI1 As Integer = 1 To UBound(Notes) - xSel(xI1) = Notes(xI1).Selected - Next - - 'Main process - For xI1 As Integer = 1 To UBound(Notes) - With Notes(xI1) - If ((xbSel And xSel(xI1)) Or (xbUnsel And Not xSel(xI1))) AndAlso - nEnabled(.ColumnIndex) AndAlso fdrRangeS(xbShort, xbLong, IIf(NTInput, .Length, .LongNote)) And fdrRangeS(xbVisible, xbHidden, .Hidden) Then - .Selected = fdrCheck(Notes(xI1)) - End If - End With - Next - - RefreshPanelAll() - Beep() - End Sub - - Public Sub fdrUnselect(ByVal iRange As Integer, - ByVal xMesL As Integer, ByVal xMesU As Integer, - ByVal xLblL As String, ByVal xLblU As String, - ByVal xValL As Integer, ByVal xValU As Integer, - ByVal iCol() As Integer) - - fdriMesL = xMesL - fdriMesU = xMesU - fdriLblL = C36to10(xLblL) * 10000 - fdriLblU = C36to10(xLblU) * 10000 - fdriValL = xValL - fdriValU = xValU - fdriCol = iCol - - Dim xbSel As Boolean = iRange Mod 2 = 0 - Dim xbUnsel As Boolean = iRange Mod 3 = 0 - Dim xbShort As Boolean = iRange Mod 5 = 0 - Dim xbLong As Boolean = iRange Mod 7 = 0 - Dim xbHidden As Boolean = iRange Mod 11 = 0 - Dim xbVisible As Boolean = iRange Mod 13 = 0 - - Dim xSel(UBound(Notes)) As Boolean - For xI1 As Integer = 1 To UBound(Notes) - xSel(xI1) = Notes(xI1).Selected - Next - - 'Main process - For xI1 As Integer = 1 To UBound(Notes) - With Notes(xI1) - If ((xbSel And xSel(xI1)) Or (xbUnsel And Not xSel(xI1))) AndAlso - nEnabled(.ColumnIndex) AndAlso fdrRangeS(xbShort, xbLong, IIf(NTInput, .Length, .LongNote)) And fdrRangeS(xbVisible, xbHidden, .Hidden) Then - .Selected = Not fdrCheck(Notes(xI1)) - End If - End With - Next - - RefreshPanelAll() - Beep() - End Sub - - Public Sub fdrPrevious(ByVal iRange As Integer, - ByVal xMesL As Integer, ByVal xMesU As Integer, - ByVal xLblL As String, ByVal xLblU As String, - ByVal xValL As Integer, ByVal xValU As Integer, - ByVal iCol() As Integer) - ' P: 1 note on 1 line at a time. Good enough. - fdriMesL = xMesL - fdriMesU = xMesU - fdriLblL = C36to10(xLblL) * 10000 - fdriLblU = C36to10(xLblU) * 10000 - fdriValL = xValL - fdriValU = xValU - fdriCol = iCol - - Dim xbSel As Boolean = iRange Mod 2 = 0 - Dim xbUnsel As Boolean = iRange Mod 3 = 0 - Dim xbShort As Boolean = iRange Mod 5 = 0 - Dim xbLong As Boolean = iRange Mod 7 = 0 - Dim xbHidden As Boolean = iRange Mod 11 = 0 - Dim xbVisible As Boolean = iRange Mod 13 = 0 - - Dim xSel(UBound(Notes)) As Boolean - For xI1 As Integer = 1 To UBound(Notes) - xSel(xI1) = Notes(xI1).Selected - Notes(xI1).Selected = False - Next - - For xI1 = UBound(Notes) To 1 Step -1 - With Notes(xI1) - If ((xbSel And xSel(xI1)) Or (xbUnsel And Not xSel(xI1))) AndAlso - nEnabled(.ColumnIndex) AndAlso fdrRangeS(xbShort, xbLong, IIf(NTInput, .Length, .LongNote)) And fdrRangeS(xbVisible, xbHidden, .Hidden) AndAlso - fdrCheck(Notes(xI1)) AndAlso - .VPosition < -PanelVScroll(PanelFocus) Then - PanelVScroll(PanelFocus) = - .VPosition - .Selected = True - Exit For - End If - End With - Next - - RefreshPanelAll() - Beep() - End Sub - Public Sub fdrNext(ByVal iRange As Integer, - ByVal xMesL As Integer, ByVal xMesU As Integer, - ByVal xLblL As String, ByVal xLblU As String, - ByVal xValL As Integer, ByVal xValU As Integer, - ByVal iCol() As Integer) - ' P: 1 note on 1 line at a time. Good enough. - fdriMesL = xMesL - fdriMesU = xMesU - fdriLblL = C36to10(xLblL) * 10000 - fdriLblU = C36to10(xLblU) * 10000 - fdriValL = xValL - fdriValU = xValU - fdriCol = iCol - - Dim xbSel As Boolean = iRange Mod 2 = 0 - Dim xbUnsel As Boolean = iRange Mod 3 = 0 - Dim xbShort As Boolean = iRange Mod 5 = 0 - Dim xbLong As Boolean = iRange Mod 7 = 0 - Dim xbHidden As Boolean = iRange Mod 11 = 0 - Dim xbVisible As Boolean = iRange Mod 13 = 0 - - Dim xSel(UBound(Notes)) As Boolean - For xI1 As Integer = 1 To UBound(Notes) - xSel(xI1) = Notes(xI1).Selected - Notes(xI1).Selected = False - Next - - For xI1 = 1 To UBound(Notes) - With Notes(xI1) - If ((xbSel And xSel(xI1)) Or (xbUnsel And Not xSel(xI1))) AndAlso - nEnabled(.ColumnIndex) AndAlso fdrRangeS(xbShort, xbLong, IIf(NTInput, .Length, .LongNote)) And fdrRangeS(xbVisible, xbHidden, .Hidden) AndAlso - fdrCheck(Notes(xI1)) AndAlso - .VPosition > -PanelVScroll(PanelFocus) Then - PanelVScroll(PanelFocus) = - .VPosition - .Selected = True - Exit For - End If - End With - Next - - RefreshPanelAll() - Beep() - End Sub - - Public Sub fdrDelete(ByVal iRange As Integer, + Public Sub fdrFind(ByVal iRange() As Boolean, ByVal xMesL As Integer, ByVal xMesU As Integer, ByVal xLblL As String, ByVal xLblU As String, ByVal xValL As Integer, ByVal xValU As Integer, - ByVal iCol() As Integer) + ByVal iCol() As Integer, ByVal fdrFunction As String, Optional xReplaceLbl As String = Nothing, Optional xReplaceVal As Integer = Nothing) fdriMesL = xMesL fdriMesU = xMesU @@ -4560,119 +4421,143 @@ Jump2: fdriValU = xValU fdriCol = iCol - Dim xbSel As Boolean = iRange Mod 2 = 0 - Dim xbUnsel As Boolean = iRange Mod 3 = 0 - Dim xbShort As Boolean = iRange Mod 5 = 0 - Dim xbLong As Boolean = iRange Mod 7 = 0 - Dim xbHidden As Boolean = iRange Mod 11 = 0 - Dim xbVisible As Boolean = iRange Mod 13 = 0 - - Dim xUndo As UndoRedo.LinkedURCmd = Nothing - Dim xRedo As UndoRedo.LinkedURCmd = New UndoRedo.Void - Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo - - 'Main process - Dim xI1 As Integer = 1 - Do While xI1 <= UBound(Notes) - With Notes(xI1) - If (Not .Ghost) AndAlso ((xbSel And .Selected) Or (xbUnsel And Not .Selected)) AndAlso - fdrCheck(Notes(xI1)) AndAlso nEnabled(.ColumnIndex) AndAlso fdrRangeS(xbShort, xbLong, IIf(NTInput, .Length, .LongNote)) And fdrRangeS(xbVisible, xbHidden, .Hidden) Then - RedoRemoveNote(Notes(xI1), xUndo, xRedo) - RemoveNote(xI1, False) - Else - xI1 += 1 - End If - End With - Loop - - AddUndo(xUndo, xBaseRedo.Next) - SortByVPositionInsertion() - UpdatePairing() - RefreshPanelAll() - CalculateTotalPlayableNotes() - Beep() - End Sub - - Public Sub fdrReplaceL(ByVal iRange As Integer, - ByVal xMesL As Integer, ByVal xMesU As Integer, - ByVal xLblL As String, ByVal xLblU As String, - ByVal xValL As Integer, ByVal xValU As Integer, - ByVal iCol() As Integer, ByVal xReplaceLbl As String) + Dim xbSel As Boolean = iRange(0) + Dim xbUnsel As Boolean = iRange(1) + Dim xbShort As Boolean = iRange(2) + Dim xbLong As Boolean = iRange(3) + Dim xbHidden As Boolean = iRange(4) + Dim xbVisible As Boolean = iRange(5) + + Select Case fdrFunction + Case "TBSelect" + Dim xSel(UBound(Notes)) As Boolean + For xI1 As Integer = 1 To UBound(Notes) + xSel(xI1) = Notes(xI1).Selected + Next - fdriMesL = xMesL - fdriMesU = xMesU - fdriLblL = C36to10(xLblL) * 10000 - fdriLblU = C36to10(xLblU) * 10000 - fdriValL = xValL - fdriValU = xValU - fdriCol = iCol + 'Main process + For xI1 As Integer = 1 To UBound(Notes) + With Notes(xI1) + If ((xbSel And xSel(xI1)) Or (xbUnsel And Not xSel(xI1))) AndAlso + nEnabled(.ColumnIndex) AndAlso fdrRangeS(xbShort, xbLong, CBool(IIf(NTInput, .Length, .LongNote))) And fdrRangeS(xbVisible, xbHidden, .Hidden) Then + .Selected = fdrCheck(Notes(xI1)) + End If + End With + Next + Case "TBUnselect" + Dim xSel(UBound(Notes)) As Boolean + For xI1 As Integer = 1 To UBound(Notes) + xSel(xI1) = Notes(xI1).Selected + Next - Dim xbSel As Boolean = iRange Mod 2 = 0 - Dim xbUnsel As Boolean = iRange Mod 3 = 0 - Dim xbShort As Boolean = iRange Mod 5 = 0 - Dim xbLong As Boolean = iRange Mod 7 = 0 - Dim xbHidden As Boolean = iRange Mod 11 = 0 - Dim xbVisible As Boolean = iRange Mod 13 = 0 + 'Main process + For xI1 As Integer = 1 To UBound(Notes) + With Notes(xI1) + If ((xbSel And xSel(xI1)) Or (xbUnsel And Not xSel(xI1))) AndAlso + nEnabled(.ColumnIndex) AndAlso fdrRangeS(xbShort, xbLong, CBool(IIf(NTInput, .Length, .LongNote))) And fdrRangeS(xbVisible, xbHidden, .Hidden) Then + .Selected = Not fdrCheck(Notes(xI1)) + End If + End With + Next + Case "FNotePrevious" + Dim xSel(UBound(Notes)) As Boolean + For xI1 As Integer = 1 To UBound(Notes) + xSel(xI1) = Notes(xI1).Selected + Notes(xI1).Selected = False + Next - Dim xxLbl As Integer = C36to10(xReplaceLbl) * 10000 + For xI1 = UBound(Notes) To 1 Step -1 + With Notes(xI1) + If ((xbSel And xSel(xI1)) Or (xbUnsel And Not xSel(xI1))) AndAlso + nEnabled(.ColumnIndex) AndAlso fdrRangeS(xbShort, xbLong, CBool(IIf(NTInput, .Length, .LongNote))) And fdrRangeS(xbVisible, xbHidden, .Hidden) AndAlso + fdrCheck(Notes(xI1)) AndAlso + .VPosition < -PanelVScroll(PanelFocus) Then + PanelVScroll(PanelFocus) = - .VPosition + .Selected = True + Exit For + End If + End With + Next + Case "FNoteNext" + Dim xSel(UBound(Notes)) As Boolean + For xI1 As Integer = 1 To UBound(Notes) + xSel(xI1) = Notes(xI1).Selected + Notes(xI1).Selected = False + Next - Dim xUndo As UndoRedo.LinkedURCmd = Nothing - Dim xRedo As UndoRedo.LinkedURCmd = New UndoRedo.Void - Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo + For xI1 = 1 To UBound(Notes) + With Notes(xI1) + If ((xbSel And xSel(xI1)) Or (xbUnsel And Not xSel(xI1))) AndAlso + nEnabled(.ColumnIndex) AndAlso fdrRangeS(xbShort, xbLong, CBool(IIf(NTInput, .Length, .LongNote))) And fdrRangeS(xbVisible, xbHidden, .Hidden) AndAlso + fdrCheck(Notes(xI1)) AndAlso + .VPosition > -PanelVScroll(PanelFocus) Then + PanelVScroll(PanelFocus) = - .VPosition + .Selected = True + Exit For + End If + End With + Next + Case "TBDelete" + Dim xUndo As UndoRedo.LinkedURCmd = Nothing + Dim xRedo As UndoRedo.LinkedURCmd = New UndoRedo.Void + Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo - 'Main process - For xI1 As Integer = 1 To UBound(Notes) - With Notes(xI1) - If (Not .Ghost) AndAlso ((xbSel And .Selected) Or (xbUnsel And Not .Selected)) AndAlso - fdrCheck(Notes(xI1)) AndAlso nEnabled(.ColumnIndex) And Not IsColumnNumeric(.ColumnIndex) AndAlso fdrRangeS(xbShort, xbLong, IIf(NTInput, .Length, .LongNote)) And fdrRangeS(xbVisible, xbHidden, .Hidden) Then - Me.RedoRelabelNote(Notes(xI1), xxLbl, xUndo, xRedo) - .Value = xxLbl - End If - End With - Next + 'Main process + Dim xI1 As Integer = 1 + Do While xI1 <= UBound(Notes) + With Notes(xI1) + If (Not .Ghost) AndAlso ((xbSel And .Selected) Or (xbUnsel And Not .Selected)) AndAlso + fdrCheck(Notes(xI1)) AndAlso nEnabled(.ColumnIndex) AndAlso fdrRangeS(xbShort, xbLong, CBool(IIf(NTInput, .Length, .LongNote))) And fdrRangeS(xbVisible, xbHidden, .Hidden) Then + RedoRemoveNote(Notes(xI1), xUndo, xRedo) + RemoveNote(xI1, False) + Else + xI1 += 1 + End If + End With + Loop - AddUndo(xUndo, xBaseRedo.Next) - RefreshPanelAll() - Beep() - End Sub + AddUndo(xUndo, xBaseRedo.Next) + SortByVPositionInsertion() + UpdatePairing() + CalculateTotalPlayableNotes() + Case "TBrl" + Dim xxLbl As Integer = C36to10(xReplaceLbl) * 10000 - Public Sub fdrReplaceV(ByVal iRange As Integer, - ByVal xMesL As Integer, ByVal xMesU As Integer, - ByVal xLblL As String, ByVal xLblU As String, - ByVal xValL As Integer, ByVal xValU As Integer, - ByVal iCol() As Integer, ByVal xReplaceVal As Integer) + Dim xUndo As UndoRedo.LinkedURCmd = Nothing + Dim xRedo As UndoRedo.LinkedURCmd = New UndoRedo.Void + Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo - fdriMesL = xMesL - fdriMesU = xMesU - fdriLblL = C36to10(xLblL) * 10000 - fdriLblU = C36to10(xLblU) * 10000 - fdriValL = xValL - fdriValU = xValU - fdriCol = iCol + 'Main process + For xI1 As Integer = 1 To UBound(Notes) + With Notes(xI1) + If (Not .Ghost) AndAlso ((xbSel And .Selected) Or (xbUnsel And Not .Selected)) AndAlso + fdrCheck(Notes(xI1)) AndAlso nEnabled(.ColumnIndex) And Not IsColumnNumeric(.ColumnIndex) AndAlso fdrRangeS(xbShort, xbLong, CBool(IIf(NTInput, .Length, .LongNote))) And fdrRangeS(xbVisible, xbHidden, .Hidden) Then + Me.RedoRelabelNote(Notes(xI1), xxLbl, xUndo, xRedo) + .Value = xxLbl + End If + End With + Next - Dim xbSel As Boolean = iRange Mod 2 = 0 - Dim xbUnsel As Boolean = iRange Mod 3 = 0 - Dim xbShort As Boolean = iRange Mod 5 = 0 - Dim xbLong As Boolean = iRange Mod 7 = 0 - Dim xbHidden As Boolean = iRange Mod 11 = 0 - Dim xbVisible As Boolean = iRange Mod 13 = 0 + AddUndo(xUndo, xBaseRedo.Next) + Case "TBrv" + Dim xUndo As UndoRedo.LinkedURCmd = Nothing + Dim xRedo As UndoRedo.LinkedURCmd = New UndoRedo.Void + Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo - Dim xUndo As UndoRedo.LinkedURCmd = Nothing - Dim xRedo As UndoRedo.LinkedURCmd = New UndoRedo.Void - Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo + 'Main process + For xI1 As Integer = 1 To UBound(Notes) + With Notes(xI1) + If (Not .Ghost) AndAlso ((xbSel And .Selected) Or (xbUnsel And Not .Selected)) AndAlso + fdrCheck(Notes(xI1)) AndAlso nEnabled(.ColumnIndex) And IsColumnNumeric(.ColumnIndex) AndAlso fdrRangeS(xbShort, xbLong, CBool(IIf(NTInput, .Length, .LongNote))) And fdrRangeS(xbVisible, xbHidden, .Hidden) Then + Me.RedoRelabelNote(Notes(xI1), xReplaceVal, xUndo, xRedo) + .Value = xReplaceVal + End If + End With + Next - 'Main process - For xI1 As Integer = 1 To UBound(Notes) - With Notes(xI1) - If (Not .Ghost) AndAlso ((xbSel And .Selected) Or (xbUnsel And Not .Selected)) AndAlso - fdrCheck(Notes(xI1)) AndAlso nEnabled(.ColumnIndex) And IsColumnNumeric(.ColumnIndex) AndAlso fdrRangeS(xbShort, xbLong, IIf(NTInput, .Length, .LongNote)) And fdrRangeS(xbVisible, xbHidden, .Hidden) Then - Me.RedoRelabelNote(Notes(xI1), xReplaceVal, xUndo, xRedo) - .Value = xReplaceVal - End If - End With - Next + AddUndo(xUndo, xBaseRedo.Next) + End Select - AddUndo(xUndo, xBaseRedo.Next) RefreshPanelAll() Beep() End Sub @@ -4710,7 +4595,7 @@ Jump2: Notes(xI1).Length += xdVP ElseIf Notes(xI1).VPosition + Notes(xI1).Length >= xVP Then - xdVP = IIf(Notes(xI1).VPosition + Notes(xI1).Length > MeasureBottom(999) - 1, GetMaxVPosition() - 1 - Notes(xI1).VPosition - Notes(xI1).Length, xMLength) + xdVP = CDbl(IIf(Notes(xI1).VPosition + Notes(xI1).Length > MeasureBottom(999) - 1, GetMaxVPosition() - 1 - Notes(xI1).VPosition - Notes(xI1).Length, xMLength)) Me.RedoLongNoteModify(Notes(xI1), Notes(xI1).VPosition, Notes(xI1).Length + xdVP, xUndo, xRedo) Notes(xI1).Length += xdVP End If @@ -4781,7 +4666,7 @@ Jump2: Notes(xI1).Length -= xdVP ElseIf Notes(xI1).VPosition + Notes(xI1).Length >= xVP Then - xdVP = IIf(Notes(xI1).VPosition + Notes(xI1).Length >= xVP + xMLength, xMLength, Notes(xI1).VPosition + Notes(xI1).Length - xVP + 1) + xdVP = CDbl(IIf(Notes(xI1).VPosition + Notes(xI1).Length >= xVP + xMLength, xMLength, Notes(xI1).VPosition + Notes(xI1).Length - xVP + 1)) Me.RedoLongNoteModify(Notes(xI1), Notes(xI1).VPosition, Notes(xI1).Length - xdVP, xUndo, xRedo) Notes(xI1).Length -= xdVP End If @@ -4881,9 +4766,9 @@ Jump2: End Function Private Sub FSSS_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles FSSS.Click - Dim xMax As Double = IIf(vSelLength > 0, GetMaxVPosition() - vSelLength, GetMaxVPosition) - Dim xMin As Double = IIf(vSelLength < 0, -vSelLength, 0) - Dim xDouble As Double = InputBoxDouble("Please enter a number between " & xMin & " and " & xMax & ".", xMin, xMax, , vSelStart) + Dim xMax As Double = CDbl(IIf(vSelLength > 0, GetMaxVPosition() - vSelLength, GetMaxVPosition)) + Dim xMin As Double = CDbl(IIf(vSelLength < 0, -vSelLength, 0)) + Dim xDouble As Double = InputBoxDouble("Please enter a number between " & xMin & " and " & xMax & ".", xMin, xMax, , vSelStart.ToString()) If xDouble = Double.PositiveInfinity Then Return vSelStart = xDouble @@ -4895,7 +4780,7 @@ Jump2: Private Sub FSSL_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles FSSL.Click Dim xMax As Double = GetMaxVPosition() - vSelStart Dim xMin As Double = -vSelStart - Dim xDouble As Double = InputBoxDouble("Please enter a number between " & xMin & " and " & xMax & ".", xMin, xMax, , vSelLength) + Dim xDouble As Double = InputBoxDouble("Please enter a number between " & xMin & " and " & xMax & ".", xMin, xMax, , vSelLength.ToString()) If xDouble = Double.PositiveInfinity Then Return vSelLength = xDouble @@ -4905,9 +4790,9 @@ Jump2: End Sub Private Sub FSSH_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles FSSH.Click - Dim xMax As Double = IIf(vSelLength > 0, vSelLength, 0) - Dim xMin As Double = IIf(vSelLength > 0, 0, -vSelLength) - Dim xDouble As Double = InputBoxDouble("Please enter a number between " & xMin & " and " & xMax & ".", xMin, xMax, , vSelHalf) + Dim xMax As Double = CDbl(IIf(vSelLength > 0, vSelLength, 0)) + Dim xMin As Double = CDbl(IIf(vSelLength > 0, 0, -vSelLength)) + Dim xDouble As Double = InputBoxDouble("Please enter a number between " & xMin & " and " & xMax & ".", xMin, xMax, , vSelHalf.ToString()) If xDouble = Double.PositiveInfinity Then Return vSelHalf = xDouble @@ -4944,7 +4829,7 @@ Jump2: Private Sub CWAVMultiSelect_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CWAVMultiSelect.CheckedChanged WAVMultiSelect = CWAVMultiSelect.Checked - LWAV.SelectionMode = IIf(WAVMultiSelect, SelectionMode.MultiExtended, SelectionMode.One) + LWAV.SelectionMode = CType(IIf(WAVMultiSelect, SelectionMode.MultiExtended, SelectionMode.One), SelectionMode) End Sub Private Sub CWAVChangeLabel_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CWAVChangeLabel.CheckedChanged @@ -5077,7 +4962,7 @@ Jump2: Strings.FileType.OGG & "|*.ogg|" & Strings.FileType.MP3 & "|*.mp3|" & Strings.FileType._all & "|*.*" - xDWAV.InitialDirectory = IIf(ExcludeFileName(FileName) = "", InitPath, ExcludeFileName(FileName)) + xDWAV.InitialDirectory = CStr(IIf(ExcludeFileName(FileName) = "", InitPath, ExcludeFileName(FileName))) xDWAV.Multiselect = WAVMultiSelect If xDWAV.ShowDialog = Windows.Forms.DialogResult.Cancel Then Exit Sub @@ -5355,8 +5240,9 @@ Jump2: Private Sub CBeatPreserve_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CBeatPreserve.Click, CBeatMeasure.Click, CBeatCut.Click, CBeatScale.Click 'If Not sender.Checked Then Exit Sub + Dim RadioS As RadioButton = CType(sender, RadioButton) Dim xBeatList() As RadioButton = {CBeatPreserve, CBeatMeasure, CBeatCut, CBeatScale} - BeatChangeMode = Array.IndexOf(Of RadioButton)(xBeatList, sender) + BeatChangeMode = Array.IndexOf(Of RadioButton)(xBeatList, RadioS) 'For xI1 As Integer = 0 To mnBeat.Items.Count - 1 'If xI1 <> BeatChangeMode Then CType(mnBeat.Items(xI1), ToolStripMenuItem).Checked = False 'Next @@ -5369,7 +5255,7 @@ Jump2: If Double.TryParse(tBeatValue.Text, a) Then If a <= 0.0# Or a >= 1000.0# Then tBeatValue.BackColor = Color.FromArgb(&HFFFFC0C0) Else tBeatValue.BackColor = Nothing - tBeatValue.Text = a + tBeatValue.Text = a.ToString() End If End Sub @@ -5379,10 +5265,10 @@ Jump2: SortByVPositionInsertion() If xN = -1 AndAlso xD = -1 Then If xRatio = 1 Then - xD = CGSub.Value + xD = CInt(CGSub.Value) xN = xD Else - xD = GetDenominator(xRatio) + xD = CInt(GetDenominator(xRatio)) xN = CInt(xRatio * xD) End If End If @@ -5554,8 +5440,8 @@ case2: Dim xI0 As Integer Dim xRedo As UndoRedo.LinkedURCmd = New UndoRedo.Void Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo - Dim xxD As Integer = nBeatD.Value - Dim xxN As Integer = nBeatN.Value + Dim xxD As Integer = CInt(nBeatD.Value) + Dim xxN As Integer = CInt(nBeatN.Value) Dim xxRatio As Double = xxN / xxD ApplyBeat(xxRatio, xUndo, xRedo, xxN, xxD) @@ -5589,7 +5475,7 @@ case2: Dim xI0 As Integer Dim xDiag As New OpenFileDialog xDiag.Filter = Strings.FileType._image & "|*.bmp;*.png;*.jpg;*.gif|" & Strings.FileType._all & "|*.*" - xDiag.InitialDirectory = IIf(ExcludeFileName(FileName) = "", InitPath, ExcludeFileName(FileName)) + xDiag.InitialDirectory = IIf(ExcludeFileName(FileName) = "", InitPath, ExcludeFileName(FileName)).ToString() xDiag.DefaultExt = "png" If xDiag.ShowDialog = Windows.Forms.DialogResult.Cancel Then Exit Sub @@ -5684,7 +5570,7 @@ case2: Dim xI0 As Integer Try Dim Source As Button = CType(sender, Button) - Dim Target As Panel = Source.Parent + Dim Target As Panel = CType(Source.Parent, Panel) Dim xHeight As Integer = Target.Height + e.Y - tempResize If xHeight < 10 Then xHeight = 10 @@ -5749,18 +5635,22 @@ case2: Dim xI0 As Integer ' Interpolation, Value = F + (C - F) * (i - Floor(i)) Dim i As Double - If Double.TryParse(s, i) AndAlso i > 0 AndAlso i < 999 Then PanelVScroll(PanelFocus) = -(MeasureBottom(Math.Floor(i)) + (MeasureBottom(Math.Ceiling(i)) - MeasureBottom(Math.Floor(i))) * (i - Math.Floor(i))) + If Double.TryParse(s, i) AndAlso i > 0 AndAlso i < 999 Then + Dim iCe As Integer = CInt(Math.Ceiling(i)) + Dim iFl As Integer = CInt(Math.Floor(i)) + PanelVScroll(PanelFocus) = -(MeasureBottom(iFl) + (MeasureBottom(iCe) - MeasureBottom(iFl)) * (i - iFl)) + End If End Sub ' Generic shuffle for basic type arrays - Public Function Shuffle(Of T)(items As T()) + Public Function Shuffle(Of T)(items As T()) As T() Dim temp As T Dim j As Int32 For i = items.Count To 2 Step -1 ' Pick an item for position i. - j = Math.Floor(i * Rnd()) + j = CInt(Math.Floor(i * Rnd())) ' Swap i -= 1 temp = items(i) @@ -5889,7 +5779,7 @@ case2: Dim xI0 As Integer final += allowableChars(rand.Next(allowableChars.Length - 1)) Next - Return IIf(upper, final.ToUpper(), final) + Return IIf(upper, final.ToUpper(), final).ToString() End Function Private Sub TExpansion_Click(sender As Object, e As EventArgs) Handles TExpansion.Click diff --git a/iBMSC/MyO2.vb b/iBMSC/MyO2.vb index 691b67b40..f37b1eee3 100644 --- a/iBMSC/MyO2.vb +++ b/iBMSC/MyO2.vb @@ -22,14 +22,14 @@ 'Adjust note Dim xcTime As Double = 0 Dim xcVPos As Double = 0 - Dim xcBPM As Integer = Notes(0).Value + Dim xcBPM As Integer = CInt(Notes(0).Value) If Not NTInput Then For xI1 = 1 To UBound(Notes) If Notes(xI1).ColumnIndex = niBPM Then xcTime += (Notes(xI1).VPosition - xcVPos) / xcBPM xcVPos = Notes(xI1).VPosition - xcBPM = Notes(xI1).Value + xcBPM = CInt(Notes(xI1).Value) Else Notes(xI1).VPosition = vBPM * (xcTime + (Notes(xI1).VPosition - xcVPos) / xcBPM) End If @@ -40,7 +40,7 @@ If Notes(xI1).ColumnIndex = niBPM Then xcTime += (Notes(xI1).VPosition - xcVPos) / xcBPM xcVPos = Notes(xI1).VPosition - xcBPM = Notes(xI1).Value + xcBPM = CInt(Notes(xI1).Value) ElseIf Notes(xI1).Length = 0 Then Notes(xI1).VPosition = vBPM * (xcTime + (Notes(xI1).VPosition - xcVPos) / xcBPM) Else @@ -55,7 +55,7 @@ If Notes(xI2).ColumnIndex = niBPM Then xcTime2 += (Notes(xI2).VPosition - xcVPos2) / xcBPM2 xcVPos2 = Notes(xI2).VPosition - xcBPM2 = Notes(xI2).Value + xcBPM2 = CInt(Notes(xI2).Value) End If Next Dim xNewTimeU As Double = (xcTime2 + (Notes(xI1).VPosition + Notes(xI1).Length - xcVPos2) / xcBPM2) @@ -94,7 +94,7 @@ SortByVPositionInsertion() UpdatePairing() Notes(0).Value = vBPM - THBPM.Value = vBPM / 10000 + THBPM.Value = CDec(vBPM / 10000) CalculateTotalPlayableNotes() CalculateGreatestVPosition() RefreshPanelAll() @@ -151,8 +151,8 @@ Dim xD48 As Integer = 0 Dim xD64 As Integer = 0 For xI2 As Integer = 0 To UBound(xVPos) - xD48 += Math.Abs(xVPos(xI2) - CInt(xVPos(xI2) / 4) * 4) - xD64 += Math.Abs(xVPos(xI2) - CInt(xVPos(xI2) / 3) * 3) + xD48 += CInt(Math.Abs(xVPos(xI2) - CInt(xVPos(xI2) / 4) * 4)) + xD64 += CInt(Math.Abs(xVPos(xI2) - CInt(xVPos(xI2) / 3) * 3)) Next xAdj64 = xD48 > xD64 @@ -212,8 +212,8 @@ Dim xD48 As Integer = 0 Dim xD64 As Integer = 0 For xI2 As Integer = 0 To UBound(xVPos) - xD48 += Math.Abs(xVPos(xI2) - CInt(xVPos(xI2) / 4) * 4) - xD64 += Math.Abs(xVPos(xI2) - CInt(xVPos(xI2) / 3) * 3) + xD48 += CInt(Math.Abs(xVPos(xI2) - CInt(xVPos(xI2) / 4) * 4)) + xD64 += CInt(Math.Abs(xVPos(xI2) - CInt(xVPos(xI2) / 3) * 3)) Next xAdj64 = xD48 > xD64 @@ -259,7 +259,7 @@ Notes(xI1).ColumnIndex = xadj.ColumnIndex And Notes(xI1).LongNote = xadj.LongNote And Notes(xI1).Hidden = xadj.Hidden Then - Notes(xI1).VPosition = CLng(Notes(xI1).VPosition / IIf(xadj.AdjTo64, 3, 4)) * IIf(xadj.AdjTo64, 3, 4) + Notes(xI1).VPosition = CLng(Notes(xI1).VPosition / CDbl(IIf(xadj.AdjTo64, 3, 4))) * CDbl(IIf(xadj.AdjTo64, 3, 4)) End If Next Next @@ -274,13 +274,13 @@ If MeasureAtDisplacement(Notes(xI1).VPosition) = xadj.Measure And Notes(xI1).ColumnIndex = xadj.ColumnIndex And Notes(xI1).Hidden = xadj.Hidden Then _ - xStart = CLng(Notes(xI1).VPosition / IIf(xadj.AdjTo64, 3, 4)) * IIf(xadj.AdjTo64, 3, 4) + xStart = CLng(Notes(xI1).VPosition / CDbl(IIf(xadj.AdjTo64, 3, 4))) * CDbl(IIf(xadj.AdjTo64, 3, 4)) If Notes(xI1).Length > 0 AndAlso MeasureAtDisplacement(Notes(xI1).VPosition + Notes(xI1).Length) = xadj.Measure And Notes(xI1).ColumnIndex = xadj.ColumnIndex And Notes(xI1).Hidden = xadj.Hidden Then _ - xEnd = CLng((Notes(xI1).VPosition + Notes(xI1).Length) / IIf(xadj.AdjTo64, 3, 4)) * IIf(xadj.AdjTo64, 3, 4) + xEnd = CLng((Notes(xI1).VPosition + Notes(xI1).Length) / CDbl(IIf(xadj.AdjTo64, 3, 4))) * CDbl(IIf(xadj.AdjTo64, 3, 4)) Notes(xI1).VPosition = xStart If Notes(xI1).Length > 0 Then Notes(xI1).Length = xEnd - Notes(xI1).VPosition diff --git a/iBMSC/Option Windows/Note.vb b/iBMSC/Option Windows/Note.vb index 0d26a0ecf..465ee3a75 100644 --- a/iBMSC/Option Windows/Note.vb +++ b/iBMSC/Option Windows/Note.vb @@ -53,7 +53,7 @@ VPosition = nVposition ColumnIndex = nColumnIndex Value = nValue - LongNote = nLongNote + LongNote = CBool(IIf(nLongNote > 0, True, False)) Length = nLongNote Hidden = nHidden Landmine = nLandmine @@ -61,6 +61,26 @@ Comment = nComment End Sub + Public Sub New(nColumnIndex As Integer, + nVposition As Double, + nValue As Long, + Optional nLongNote As Boolean = False, + Optional nHidden As Boolean = False, + Optional nSelected As Boolean = False, + Optional nLandmine As Boolean = False, + Optional nGhost As Boolean = False, + Optional nComment As Boolean = False) + VPosition = nVposition + ColumnIndex = nColumnIndex + Value = nValue + LongNote = nLongNote + Length = 0 + Hidden = nHidden + Landmine = nLandmine + Ghost = nGhost + Comment = nComment + End Sub + Friend Function ToBytes() As Byte() Dim MS As New MemoryStream() Dim bw As New BinaryWriter(MS) diff --git a/iBMSC/Option Windows/OpExpand.vb b/iBMSC/Option Windows/OpExpand.vb index 8765ce28f..1a5d41f71 100644 --- a/iBMSC/Option Windows/OpExpand.vb +++ b/iBMSC/Option Windows/OpExpand.vb @@ -33,7 +33,7 @@ Public Class OpExpand Private Sub BDisplayGhostAll_Click(sender As Object, e As EventArgs) Handles BDisplayGhostAll.Click MainWindow.ExpansionSplit(1) = "" - For Each xStrLine In MainWindow.TExpansion.Text.Split(vbCrLf) + For Each xStrLine As String In MainWindow.TExpansion.Text.Split(CChar(vbCrLf)) If xStrLine <> "" AndAlso Not SWIC(xStrLine, "#RANDOM") AndAlso Not SWIC(xStrLine, "#IF") Then MainWindow.ExpansionSplit(1) &= xStrLine & vbCrLf Next Me.Close() @@ -71,7 +71,7 @@ Public Class OpExpand Dim fslash As Integer = InStrRev(s, "/") Dim bslash As Integer = InStrRev(s, "\") If (bslash Or fslash) = 0 Then Return "" - Return Mid(s, 1, IIf(fslash > bslash, fslash, bslash) - 1) + Return Mid(s, 1, CInt(IIf(fslash > bslash, fslash, bslash)) - 1) End Function Private Sub BRemoveGhostNotes_Click(sender As Object, e As EventArgs) Handles BRemoveGhostNotes.Click @@ -89,11 +89,11 @@ Public Class OpExpand ' Find the first line of the currect #if section, right after #if For L = CurrSelection To 0 Step -1 - If SWIC(LExpansionCode.Items(L), "#ENDIF") AndAlso L <> CurrSelection Then + If SWIC(LExpansionCode.Items(L).ToString(), "#ENDIF") AndAlso L <> CurrSelection Then xStack += 1 End If - If SWIC(LExpansionCode.Items(L), "#IF") Then + If SWIC(LExpansionCode.Items(L).ToString(), "#IF") Then If xStack > 0 Then xStack -= 1 Else @@ -105,11 +105,11 @@ Public Class OpExpand Next ' Find the last line of the currect #if section, right before #endif For U = CurrSelection To TExpansionTextSplit.Length - 1 - If SWIC(LExpansionCode.Items(U), "#IF") AndAlso U <> CurrSelection Then + If SWIC(LExpansionCode.Items(U).ToString(), "#IF") AndAlso U <> CurrSelection Then xStack += 1 End If - If SWIC(LExpansionCode.Items(U), "#ENDIF") Then + If SWIC(LExpansionCode.Items(U).ToString(), "#ENDIF") Then If xStack > 0 Then xStack -= 1 Else diff --git a/iBMSC/Option Windows/OpGeneral.vb b/iBMSC/Option Windows/OpGeneral.vb index 6e636325e..36b24dea0 100644 --- a/iBMSC/Option Windows/OpGeneral.vb +++ b/iBMSC/Option Windows/OpGeneral.vb @@ -44,9 +44,9 @@ Public Class OpGeneral Case 8 : zEncoding = System.Text.Encoding.GetEncoding(51949) End Select 'zSort = CSortingMethod.SelectedIndex - zMiddle = IIf(rMiddleDrag.Checked, 1, 0) - zAutoSave = IIf(cAutoSave.Checked, 1, 0) * NAutoSave.Value * 60000 - zGridPartition = nGridPartition.Value + zMiddle = CInt(IIf(rMiddleDrag.Checked, 1, 0)) + zAutoSave = CInt(IIf(cAutoSave.Checked, NAutoSave.Value * 60000, 0)) + zGridPartition = CInt(nGridPartition.Value) Me.DialogResult = System.Windows.Forms.DialogResult.OK Me.Close() End Sub @@ -82,8 +82,8 @@ Public Class OpGeneral CTextEncoding.SelectedIndex = xTextEncoding 'CSortingMethod.SelectedIndex = xSort nGridPartition.Value = xGridPartition - nJackBPM.Value = xJackBPM - nJackTH.Value = xJackTH + nJackBPM.Value = CDec(xJackBPM) + nJackTH.Value = CDec(xJackTH) If xMiddleButton = 0 Then rMiddleAuto.Checked = True _ Else rMiddleDrag.Checked = True @@ -91,7 +91,7 @@ Public Class OpGeneral If xAutoSave / 60000 > NAutoSave.Maximum Or xAutoSave / 60000 < NAutoSave.Minimum Then cAutoSave.Checked = False Else - NAutoSave.Value = xAutoSave / 60000 + NAutoSave.Value = CDec(xAutoSave / 60000) End If cBeep.Checked = xBeep diff --git a/iBMSC/Option Windows/OpKeybinding.vb b/iBMSC/Option Windows/OpKeybinding.vb index 4f12c0c2d..7bba2c660 100644 --- a/iBMSC/Option Windows/OpKeybinding.vb +++ b/iBMSC/Option Windows/OpKeybinding.vb @@ -12,7 +12,7 @@ Public Class OpKeybinding OK_Button.Text = Strings.OK Cancel_Button.Text = Strings.Cancel BDefault.Text = Strings.fopPlayer.RestoreDefault - Keybinds = xKeybindings.Clone + Keybinds = CType(xKeybindings.Clone(), MainWindow.Keybinding()) InitializeKeybindings() Catch ex As Exception MsgBox("New OpKeybinding Error" & vbCrLf & ex.Message) @@ -104,7 +104,7 @@ Public Class OpKeybinding For i = 0 To UBound(Keybinds(LVKeybinding.FocusedItem.Index).Combo) If Not xIndices.Contains(i) Then ReDim Preserve TempCombos(TempCombos.Length) - TempCombos(UBound(TempCombos)) = LCombos.Items(i) + TempCombos(UBound(TempCombos)) = LCombos.Items(i).ToString() End If Next @@ -123,7 +123,7 @@ Public Class OpKeybinding ' End Sub Private Sub BDefault_Click(sender As Object, e As EventArgs) Handles BDefault.Click - Keybinds = MainWindow.KeybindingsInit.Clone + Keybinds = CType(MainWindow.KeybindingsInit.Clone(), MainWindow.Keybinding()) InitializeKeybindings() End Sub diff --git a/iBMSC/Option Windows/OpPlayer.vb b/iBMSC/Option Windows/OpPlayer.vb index 513e19888..00f70dd21 100644 --- a/iBMSC/Option Windows/OpPlayer.vb +++ b/iBMSC/Option Windows/OpPlayer.vb @@ -9,7 +9,7 @@ Public Class OpPlayer DialogResult = DialogResult.OK Close() - MainWindow.pArgs = pArg.Clone + MainWindow.pArgs = CType(pArg.Clone(), MainWindow.PlayerArguments()) MainWindow.CurrentPlayer = CurrPlayer Dispose() @@ -78,7 +78,7 @@ Public Class OpPlayer LPlayer.Items.RemoveAt(CurrPlayer) 'AddHandler LPlayer.SelectedIndexChanged, AddressOf LPlayer_SelectedIndexChanged - LPlayer.SelectedIndex = IIf(CurrPlayer > UBound(pArg), CurrPlayer - 1, CurrPlayer) + LPlayer.SelectedIndex = CInt(IIf(CurrPlayer > UBound(pArg), CurrPlayer - 1, CurrPlayer)) CurrPlayer = Math.Min(CurrPlayer, UBound(pArg)) ShowInTextbox() End Sub @@ -87,7 +87,7 @@ Public Class OpPlayer Dim xDOpen As New OpenFileDialog xDOpen.InitialDirectory = IIf(Path.GetDirectoryName(Replace(TPath.Text, "", My.Application.Info.DirectoryPath)) = "", My.Application.Info.DirectoryPath, - Path.GetDirectoryName(Replace(TPath.Text, "", My.Application.Info.DirectoryPath))) + Path.GetDirectoryName(Replace(TPath.Text, "", My.Application.Info.DirectoryPath))).ToString() xDOpen.Filter = Strings.FileType.EXE & "|*.exe" xDOpen.DefaultExt = "exe" If xDOpen.ShowDialog = Windows.Forms.DialogResult.Cancel Then Exit Sub @@ -96,9 +96,9 @@ Public Class OpPlayer Private Sub BPrevDefault_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BDefault.Click 'ImplicitChange = True - If MsgBox(Strings.Messages.RestoreDefaultSettings, MsgBoxStyle.Question + MsgBoxStyle.YesNo) = MsgBoxResult.No Then Exit Sub + If MsgBox(Strings.Messages.RestoreDefaultSettings, CType(MsgBoxStyle.Question + MsgBoxStyle.YesNo, Global.Microsoft.VisualBasic.MsgBoxStyle)) = MsgBoxResult.No Then Exit Sub - pArg = MainWindow.pArgsInit.Clone + pArg = CType(MainWindow.pArgsInit.Clone(), MainWindow.PlayerArguments()) CurrPlayer = 0 ResetLPlayer_ShowInTextbox() @@ -174,7 +174,7 @@ Public Class OpPlayer Public Sub New(ByVal xCurrPlayer As Integer) InitializeComponent() - pArg = MainWindow.pArgs.Clone + pArg = CType(MainWindow.pArgs.Clone(), MainWindow.PlayerArguments()) CurrPlayer = xCurrPlayer ResetLPlayer_ShowInTextbox() End Sub @@ -199,6 +199,6 @@ Public Class OpPlayer Private Function GetFileName(ByVal s As String) As String Dim fslash As Integer = InStrRev(s, "/") Dim bslash As Integer = InStrRev(s, "\") - Return Mid(s, IIf(fslash > bslash, fslash, bslash) + 1) + Return Mid(s, CInt(IIf(fslash > bslash, fslash, bslash)) + 1) End Function End Class diff --git a/iBMSC/Option Windows/OpTotal.vb b/iBMSC/Option Windows/OpTotal.vb index 0e22f2071..81aa07210 100644 --- a/iBMSC/Option Windows/OpTotal.vb +++ b/iBMSC/Option Windows/OpTotal.vb @@ -11,8 +11,8 @@ CTotalList = {CTotalIIDX1, CTotalIIDX2, CTotalMultiplier} NoteCount = xNoteCount TotalOption = xTotalOption - TMultiplier.Text = xMultiplier - TGlobalMultiplier.Text = xGlobalMultiplier + TMultiplier.Text = xMultiplier.ToString() + TGlobalMultiplier.Text = xGlobalMultiplier.ToString() CBDisplayText.Checked = xRecommendedTextDisplay CTotalList(TotalOption).Checked = True @@ -30,7 +30,8 @@ End Sub Private Sub CTotalIIDX1_Click(sender As Object, e As EventArgs) Handles CTotalIIDX1.Click, CTotalIIDX2.Click, CTotalMultiplier.Click - TotalOption = Array.IndexOf(Of RadioButton)(CTotalList, sender) + Dim RadioS As RadioButton = CType(sender, RadioButton) + TotalOption = Array.IndexOf(Of RadioButton)(CTotalList, RadioS) End Sub Private Sub TMultiplier_TextChanged(sender As Object, e As EventArgs) Handles TMultiplier.TextChanged, TGlobalMultiplier.TextChanged @@ -38,8 +39,8 @@ End Sub Private Sub CalculateTotal() - LTotalIIDX1.Text = Math.Round(NoteCount * 7.605 / (0.01 * NoteCount + 6.5) * Val(TGlobalMultiplier.Text), 3) - LTotalIIDX2.Text = Math.Round(IIf(NoteCount < 400, 200 + NoteCount / 5, IIf(NoteCount < 600, 280 + (NoteCount - 400) / 2.5, 360 + (NoteCount - 600) / 5)) * Val(TGlobalMultiplier.Text), 3) - LTotalMultiplier.Text = Math.Round(NoteCount * Val(TMultiplier.Text) * Val(TGlobalMultiplier.Text), 3) + LTotalIIDX1.Text = Math.Round(NoteCount * 7.605 / (0.01 * NoteCount + 6.5) * Val(TGlobalMultiplier.Text), 3).ToString() + LTotalIIDX2.Text = Math.Round(CDbl(IIf(NoteCount < 400, 200 + NoteCount / 5, IIf(NoteCount < 600, 280 + (NoteCount - 400) / 2.5, 360 + (NoteCount - 600) / 5))) * Val(TGlobalMultiplier.Text), 3).ToString() + LTotalMultiplier.Text = Math.Round(NoteCount * Val(TMultiplier.Text) * Val(TGlobalMultiplier.Text), 3).ToString() End Sub End Class \ No newline at end of file diff --git a/iBMSC/Option Windows/OpVisual.vb b/iBMSC/Option Windows/OpVisual.vb index 1943a197e..9dcc12eff 100644 --- a/iBMSC/Option Windows/OpVisual.vb +++ b/iBMSC/Option Windows/OpVisual.vb @@ -83,7 +83,7 @@ Public Class OpVisual Me.iLabelVerticalShift.SetValClamped(vo.kLabelVShift) Me.iLabelHorizShift.SetValClamped(vo.kLabelHShift) Me.iLongLabelHorizShift.SetValClamped(vo.kLabelHShiftL) - Me.iHiddenNoteOpacity.SetValClamped(vo.kOpacity) + Me.iHiddenNoteOpacity.SetValClamped(CDec(vo.kOpacity)) Me.iTSSensitivity.SetValClamped(vo.PEDeltaMouseOver) Me.iMiddleSensitivity.SetValClamped(vo.MiddleDeltaRelease) @@ -95,7 +95,7 @@ Public Class OpVisual 'lForeColorL = xlForeColorL 'lBg = xlBg - col = xcol.Clone + col = CType(xcol.Clone(), Column()) ReDim co(UBound(col)) For xI1 As Integer = 0 To UBound(col) @@ -173,7 +173,7 @@ Public Class OpVisual .Location = New Point(lLeft(xI1), 323) .Size = New Size(33, 66) .BackColor = col(xI1).cBG - .ForeColor = IIf(CInt(col(xI1).cBG.GetBrightness * 255) + 255 - col(xI1).cBG.A >= 128, Color.Black, Color.White) + .ForeColor = CType(IIf(CInt(col(xI1).cBG.GetBrightness * 255) + 255 - col(xI1).cBG.A >= 128, Color.Black, Color.White), Color) .Text = To4Hex(col(xI1).cBG.ToArgb) .Name = "cBG" .Tag = Nothing @@ -206,7 +206,7 @@ Public Class OpVisual Private Sub cButtonChange(ByVal xbutton As Button, ByVal c As Color) xbutton.Text = Hex(c.ToArgb) xbutton.BackColor = c - xbutton.ForeColor = IIf(CInt(c.GetBrightness * 255) + 255 - c.A >= 128, Color.Black, Color.White) + xbutton.ForeColor = CType(IIf(CInt(c.GetBrightness * 255) + 255 - c.A >= 128, Color.Black, Color.White), Color) End Sub Private Sub fButtonChange(ByVal xbutton As Button, ByVal f As Font) @@ -299,7 +299,7 @@ Public Class OpVisual For xI1 As Integer = 0 To UBound(co) col(xI1).Title = co(xI1).Title.Text - col(xI1).Width = co(xI1).Width.Value + col(xI1).Width = CInt(co(xI1).Width.Value) col(xI1).setNoteColor(co(xI1).SNote.BackColor.ToArgb) col(xI1).cText = co(xI1).SText.ForeColor col(xI1).setLNoteColor(co(xI1).LNote.BackColor.ToArgb) @@ -753,7 +753,7 @@ Public Class OpVisual CType(s.Tag, Button).ForeColor = xColorPicker.NewColor Case "cBG" s.BackColor = xColorPicker.NewColor - s.ForeColor = IIf(CInt(xColorPicker.NewColor.GetBrightness * 255) + 255 - xColorPicker.NewColor.A >= 128, Color.Black, Color.White) + s.ForeColor = CType(IIf(CInt(xColorPicker.NewColor.GetBrightness * 255) + 255 - xColorPicker.NewColor.A >= 128, Color.Black, Color.White), Color) End Select 'lColor(xI) = xColorPicker.NewColor 'sender.Text = To4Hex(lColor(xI).ToArgb) diff --git a/iBMSC/Option Windows/OpVisualOverride.vb b/iBMSC/Option Windows/OpVisualOverride.vb index 722d5f2dc..2fc00152d 100644 --- a/iBMSC/Option Windows/OpVisualOverride.vb +++ b/iBMSC/Option Windows/OpVisualOverride.vb @@ -41,12 +41,12 @@ Public Class OpVisualOverride End If With COverrides(UBound(COverrides)) .Name = "New Item" - .RangeL = "01" - .RangeU = "02" - .NoteColor = "0" - .LongNoteColor = "0" - .LongTextColor = "0" - .BG = "0" + .RangeL = 1 + .RangeU = 2 + .NoteColor = 0 + .LongNoteColor = 0 + .LongTextColor = 0 + .BG = 0 End With LOverrides.Items.Insert(LOverrides.Items.Count, "New Item") @@ -70,7 +70,7 @@ Public Class OpVisualOverride TName.Text = .Name TRangeL.Text = C10to36(.RangeL) TRangeU.Text = C10to36(.RangeU) - BColor.Text = .NoteColor + BColor.Text = .NoteColor.ToString() cButtonChange(BColor, Color.FromArgb(.NoteColor)) End With @@ -79,7 +79,7 @@ Public Class OpVisualOverride Private Function GetFileName(ByVal s As String) As String ' Copied from MainWindow Dim fslash As Integer = InStrRev(s, "/") Dim bslash As Integer = InStrRev(s, "\") - Return Mid(s, IIf(fslash > bslash, fslash, bslash) + 1) + Return Mid(s, CInt(IIf(fslash > bslash, fslash, bslash)) + 1) End Function Private Sub SaveCOverride(sender As Object, e As KeyEventArgs) Handles TName.KeyUp, TRangeL.KeyUp, TRangeU.KeyUp @@ -103,7 +103,7 @@ Public Class OpVisualOverride Private Sub cButtonChange(ByVal xbutton As Button, ByVal c As Color) ' Copied from OpPlayer xbutton.Text = Hex(c.ToArgb) xbutton.BackColor = c - xbutton.ForeColor = IIf(CInt(c.GetBrightness * 255) + 255 - c.A >= 128, Color.Black, Color.White) + xbutton.ForeColor = CType(IIf(CInt(c.GetBrightness * 255) + 255 - c.A >= 128, Color.Black, Color.White), Color) End Sub ' Below are copied from Utilities @@ -122,7 +122,7 @@ Public Class OpVisualOverride Public Function C10to36(ByVal xStart As Long) As String If xStart < 1 Then xStart = 1 If xStart > 1295 Then xStart = 1295 - Return C10to36S(xStart \ 36) & C10to36S(xStart Mod 36) + Return C10to36S(CInt(xStart \ 36)) & C10to36S(CInt(xStart Mod 36)) End Function Public Function C36to10(ByVal xStart As String) As Integer xStart = Mid("00" & xStart, Len(xStart) + 1) diff --git a/iBMSC/PanelDraw.vb b/iBMSC/PanelDraw.vb index 7b05ff6c0..2573bffbf 100644 --- a/iBMSC/PanelDraw.vb +++ b/iBMSC/PanelDraw.vb @@ -11,7 +11,7 @@ Partial Public Class MainWindow Dim bufferlist As Dictionary(Of Integer, BufferedGraphics) = New Dictionary(Of Integer, BufferedGraphics) Dim rectList As Dictionary(Of Integer, Rectangle) = New Dictionary(Of Integer, Rectangle) - Private Function GetBuffer(xIndex As Integer, DisplayRect As Rectangle) + Private Function GetBuffer(xIndex As Integer, DisplayRect As Rectangle) As BufferedGraphics If bufferlist.ContainsKey(xIndex) AndAlso rectList.Item(xIndex) = DisplayRect Then Return bufferlist.Item(xIndex) Else @@ -39,9 +39,9 @@ Partial Public Class MainWindow Dim xTHeight As Integer = spMain(xIndex).Height Dim xTWidth As Integer = spMain(xIndex).Width Dim xPanelHScroll As Integer = PanelHScroll(xIndex) - Dim xPanelDisplacement As Integer = PanelVScroll(xIndex) - Dim xVSR As Integer = -PanelVScroll(xIndex) - Dim xVSu As Integer = IIf(xVSR + xTHeight / gxHeight > GetMaxVPosition(), GetMaxVPosition(), xVSR + xTHeight / gxHeight) + Dim xPanelDisplacement As Integer = CInt(PanelVScroll(xIndex)) + Dim xVSR As Integer = CInt(-PanelVScroll(xIndex)) + Dim xVSu As Integer = CInt(IIf(xVSR + xTHeight / gxHeight > GetMaxVPosition(), GetMaxVPosition(), xVSR + xTHeight / gxHeight)) 'e1.Graphics.SmoothingMode = Drawing2D.SmoothingMode.AntiAlias Dim xI1 As Integer @@ -54,12 +54,15 @@ Partial Public Class MainWindow gXKeyMode = "PMS" gXKeyCol = {niA2, niA3, niA4, niA5, niA6, niD2, niD3, niD4, niD5} If CHPlayer.SelectedIndex = 0 Then CHPlayer.SelectedIndex = 2 + POBFlip.Visible = False ElseIf CHPlayer.SelectedIndex <> 0 Then gXKeyMode = "DP" gXKeyCol = {niA1, niA2, niA3, niA4, niA5, niA6, niA7, niA8, niD1, niD2, niD3, niD4, niD5, niD6, niD7, niD8} + POBFlip.Visible = True Else gXKeyMode = "SP" gXKeyCol = {niA1, niA2, niA3, niA4, niA5, niA6, niA7, niA8} + POBFlip.Visible = False End If xI1 = DrawPanelLines(e1, xTHeight, xTWidth, xPanelHScroll, xPanelDisplacement, xVSu) @@ -174,8 +177,8 @@ Partial Public Class MainWindow If UBound(DDFileName) > -1 Then 'Dim xFont As New Font("Cambria", 12) Dim xBrush As New SolidBrush(Color.FromArgb(&HC0FFFFFF)) - Dim xCenterX As Single = spMain(xIndex).DisplayRectangle.Width / 2 - Dim xCenterY As Single = spMain(xIndex).DisplayRectangle.Height / 2 + Dim xCenterX As Single = CSng(spMain(xIndex).DisplayRectangle.Width / 2) + Dim xCenterY As Single = CSng(spMain(xIndex).DisplayRectangle.Height / 2) Dim xFormat As New System.Drawing.StringFormat xFormat.Alignment = StringAlignment.Center xFormat.LineAlignment = StringAlignment.Center @@ -185,14 +188,14 @@ Partial Public Class MainWindow Private Sub DrawSelectionBox(xIndex As Integer, e1 As BufferedGraphics) If TBSelect.Checked AndAlso xIndex = PanelFocus AndAlso Not (pMouseMove = New Point(-1, -1) Or LastMouseDownLocation = New Point(-1, -1)) Then - e1.Graphics.DrawRectangle(vo.SelBox, IIf(pMouseMove.X > LastMouseDownLocation.X, LastMouseDownLocation.X, pMouseMove.X), - IIf(pMouseMove.Y > LastMouseDownLocation.Y, LastMouseDownLocation.Y, pMouseMove.Y), + e1.Graphics.DrawRectangle(vo.SelBox, CSng(IIf(pMouseMove.X > LastMouseDownLocation.X, LastMouseDownLocation.X, pMouseMove.X)), + CSng(IIf(pMouseMove.Y > LastMouseDownLocation.Y, LastMouseDownLocation.Y, pMouseMove.Y)), Math.Abs(pMouseMove.X - LastMouseDownLocation.X), Math.Abs(pMouseMove.Y - LastMouseDownLocation.Y)) End If End Sub - Function GetColumnHighlightColor(col As Color, Optional factor As Double = 2.0) - Dim clamp = Function(x) IIf(x > 255, 255, x) + Function GetColumnHighlightColor(col As Color, Optional factor As Double = 2.0) As Color + Dim clamp = Function(x As Double) CInt(IIf(x > 255, 255, x)) Return Color.FromArgb( clamp(col.A * factor), clamp(col.R * factor), @@ -252,7 +255,7 @@ Partial Public Class MainWindow End If 'Grid, Sub, Measure - Dim Measure + Dim Measure As Integer For Measure = MeasureAtDisplacement(-xVS) To MeasureAtDisplacement(xVSu) 'grid If gShowGrid Then DrawGridLines(e1, @@ -302,7 +305,7 @@ Partial Public Class MainWindow Loop End Sub - Private Function IsNoteVisible(note As Note, xTHeight As Integer, xVS As Integer) As Boolean + Private Function IsNoteVisible(note As Note, xTHeight As Integer, xVS As Long) As Boolean Dim xUpperBorder As Single = Math.Abs(xVS) + xTHeight / gxHeight Dim xLowerBorder As Single = Math.Abs(xVS) - vo.kHeight / gxHeight @@ -318,7 +321,7 @@ Partial Public Class MainWindow Return NoteInside OrElse IntersectsNT OrElse IntersectsNT End Function - Private Function IsNoteVisible(noteindex As Integer, xTHeight As Integer, xVS As Integer) As Boolean + Private Function IsNoteVisible(noteindex As Integer, xTHeight As Integer, xVS As Long) As Boolean Return IsNoteVisible(Notes(noteindex), xTHeight, xVS) End Function @@ -341,16 +344,16 @@ Partial Public Class MainWindow Private Function GetNoteRectangle(note As Note, xTHeight As Integer, xHS As Integer, xVS As Integer) As Rectangle Dim xDispX As Integer = HorizontalPositiontoDisplay(nLeft(note.ColumnIndex), xHS) - Dim xDispY As Integer = IIf(Not NTInput Or (bAdjustLength And Not bAdjustUpper), + Dim xDispY As Integer = CInt(IIf(Not NTInput Or (bAdjustLength And Not bAdjustUpper), NoteRowToPanelHeight(note.VPosition, xVS, xTHeight) - vo.kHeight - 1, NoteRowToPanelHeight(note.VPosition + note.Length, xVS, xTHeight) - - vo.kHeight - 1) + vo.kHeight - 1)) - Dim xDispW As Integer = GetColumnWidth(note.ColumnIndex) * gxWidth + 1 - Dim xDispH As Integer = IIf(Not NTInput Or bAdjustLength, - vo.kHeight + 3, - note.Length * gxHeight + vo.kHeight + 3) + Dim xDispW As Integer = CInt(GetColumnWidth(note.ColumnIndex) * gxWidth + 1) + Dim xDispH As Integer = CInt(IIf(Not NTInput Or bAdjustLength, + vo.kHeight + 3, + note.Length * gxHeight + vo.kHeight + 3)) Return New Rectangle(xDispX, xDispY, xDispW, xDispH) End Function @@ -368,7 +371,7 @@ Partial Public Class MainWindow End If Dim rect = GetNoteRectangle(KMouseOver, xTHeight, xHS, xVS) - Dim pen = IIf(bAdjustLength, vo.kMouseOverE, vo.kMouseOver) + Dim pen = CType(IIf(bAdjustLength, vo.kMouseOverE, vo.kMouseOver), Pen) e1.Graphics.DrawRectangle(pen, rect.X, rect.Y, rect.Width - 1, rect.Height - 1) If ModifierMultiselectVisibleActive() Or ModifierMultiselectNoteActive() Then @@ -400,7 +403,7 @@ Partial Public Class MainWindow 'Selection area e1.Graphics.FillRectangle(vo.PESel, 0, - NoteRowToPanelHeight(vSelStart + IIf(vSelLength > 0, vSelLength, 0), xVS, xTHeight) + Math.Abs(CInt(vSelLength <> 0)), + NoteRowToPanelHeight(vSelStart + CDbl(IIf(vSelLength > 0, vSelLength, 0)), xVS, xTHeight) + Math.Abs(CInt(vSelLength <> 0)), xTWidth, CInt(Math.Abs(vSelLength) * gxHeight)) 'End Cursor @@ -416,17 +419,17 @@ Partial Public Class MainWindow xTWidth, NoteRowToPanelHeight(vSelStart + vSelHalf, xVS, xTHeight)) 'Start BPM - e1.Graphics.DrawString(xBPMStart / 10000, + e1.Graphics.DrawString((xBPMStart / 10000).ToString(), vo.PEBPMFont, vo.PEBPM, (-xHS + nLeft(niBPM)) * gxWidth, NoteRowToPanelHeight(vSelStart, xVS, xTHeight) - vo.PEBPMFont.Height + 3) 'Half BPM - e1.Graphics.DrawString(xBPMHalf / 10000, + e1.Graphics.DrawString((xBPMHalf / 10000).ToString(), vo.PEBPMFont, vo.PEBPM, (-xHS + nLeft(niBPM)) * gxWidth, NoteRowToPanelHeight(vSelStart + vSelHalf, xVS, xTHeight) - vo.PEBPMFont.Height + 3) 'End BPM - e1.Graphics.DrawString(xBPMEnd / 10000, + e1.Graphics.DrawString((xBPMEnd / 10000).ToString(), vo.PEBPMFont, vo.PEBPM, (-xHS + nLeft(niBPM)) * gxWidth, NoteRowToPanelHeight(vSelStart + vSelLength, xVS, xTHeight) - vo.PEBPMFont.Height + 3) @@ -459,9 +462,9 @@ Partial Public Class MainWindow If Not (xInitX = xCurrX And xInitY = xCurrY) Then Dim xPointx() As PointF = {New PointF(xCurrX, xCurrY), - New PointF(Math.Cos(xAngle + Math.PI / 2) * 10 + xInitX, Math.Sin(xAngle + Math.PI / 2) * 10 + xInitY), - New PointF(Math.Cos(xAngle - Math.PI / 2) * 10 + xInitX, Math.Sin(xAngle - Math.PI / 2) * 10 + xInitY)} - e1.Graphics.FillPolygon(New Drawing2D.LinearGradientBrush(New Point(xInitX, xInitY), New Point(xCurrX, xCurrY), Color.FromArgb(0), Color.FromArgb(-1)), xPointx) + New PointF(CSng(Math.Cos(xAngle + Math.PI / 2) * 10 + xInitX), CSng(Math.Sin(xAngle + Math.PI / 2) * 10 + xInitY)), + New PointF(CSng(Math.Cos(xAngle - Math.PI / 2) * 10 + xInitX), CSng(Math.Sin(xAngle - Math.PI / 2) * 10 + xInitY))} + e1.Graphics.FillPolygon(New Drawing2D.LinearGradientBrush(New PointF(xInitX, xInitY), New PointF(xCurrX, xCurrY), Color.FromArgb(0), Color.FromArgb(-1)), xPointx) End If e1.Graphics.FillEllipse(Brushes.LightGray, xInitX - 10, xInitY - 10, 20, 20) @@ -484,15 +487,15 @@ Partial Public Class MainWindow xwPosition = wPosition xwLeft = wLeft Else - Dim xINoteValue = Notes(xINote).Value / 10000 - Dim xnLeft = nLeft(Notes(xINote).ColumnIndex) + Dim xINoteValue As Integer = CInt(Notes(xINote).Value / 10000) + Dim xnLeft As Integer = nLeft(Notes(xINote).ColumnIndex) Dim xColumnWidth As Integer = GetColumnWidth(Notes(xINote).ColumnIndex) xwWavL = wLWAV(xINoteValue).WavL xwWavR = wLWAV(xINoteValue).WavR xwSampleRate = wLWAV(xINoteValue).SampleRate xwPosition = Notes(xINote).VPosition - xwLeft = (HorizontalPositiontoDisplay(xnLeft, xHS) + HorizontalPositiontoDisplay(xnLeft + xColumnWidth, xHS)) / 2 + xwLeft = CInt((HorizontalPositiontoDisplay(xnLeft, xHS) + HorizontalPositiontoDisplay(xnLeft + xColumnWidth, xHS)) / 2) End If If xwWavL IsNot Nothing And xwWavR IsNot Nothing And wPrecision > 0 Then @@ -508,7 +511,7 @@ Partial Public Class MainWindow Dim xD1 As Double Dim bVPosition() As Double = {xwPosition} - Dim bBPM() As Decimal = {Notes(0).Value / 10000} + Dim bBPM() As Decimal = {CDec(Notes(0).Value / 10000)} Dim bWavDataIndex() As Decimal = {0} For xI1 = 1 To UBound(Notes) @@ -518,10 +521,10 @@ Partial Public Class MainWindow ReDim Preserve bBPM(UBound(bBPM) + 1) ReDim Preserve bWavDataIndex(UBound(bWavDataIndex) + 1) bVPosition(UBound(bVPosition)) = Notes(xI1).VPosition - bBPM(UBound(bBPM)) = Notes(xI1).Value / 10000 - bWavDataIndex(UBound(bWavDataIndex)) = (Notes(xI1).VPosition - bVPosition(UBound(bVPosition) - 1)) * 1.25 * xwSampleRate / bBPM(UBound(bBPM) - 1) + bWavDataIndex(UBound(bWavDataIndex) - 1) + bBPM(UBound(bBPM)) = CDec(Notes(xI1).Value / 10000) + bWavDataIndex(UBound(bWavDataIndex)) = CDec((Notes(xI1).VPosition - bVPosition(UBound(bVPosition) - 1)) * 1.25 * xwSampleRate / bBPM(UBound(bBPM) - 1) + bWavDataIndex(UBound(bWavDataIndex) - 1)) Else - bBPM(0) = Notes(xI1).Value / 10000 + bBPM(0) = CDec(Notes(xI1).Value / 10000) End If End If Next @@ -540,8 +543,8 @@ Partial Public Class MainWindow If xD1 <= UBound(xwWavL) And xD1 >= 0 Then xIPts += 1 - xPtsL(xIPts) = New PointF(xwWavL(Int(xD1)) * wWidth + xwLeft, xI1 / wPrecision) - xPtsR(xIPts) = New PointF(xwWavR(Int(xD1)) * wWidth + xwLeft, xI1 / wPrecision) + xPtsL(xIPts) = New PointF(xwWavL(CInt(xD1)) * wWidth + xwLeft, CSng(xI1 / wPrecision)) + xPtsR(xIPts) = New PointF(xwWavR(CInt(xD1)) * wWidth + xwLeft, CSng(xI1 / wPrecision)) End If Next ReDim Preserve xPtsL(xIPts) @@ -574,7 +577,7 @@ Partial Public Class MainWindow If Not nEnabled(sNote.ColumnIndex) Then Exit Sub Dim xAlpha As Single = 1.0F If sNote.Hidden Then xAlpha = vo.kOpacity - If sNote.Ghost Then xAlpha *= 0.1 + If sNote.Ghost Then xAlpha *= 0.1F Dim xLabel As String = GetNoteLabel(sNote) @@ -613,8 +616,8 @@ Partial Public Class MainWindow ' bright = Color.FromArgb(CONoteColor * xAlpha) - bright = Color.FromArgb(CONoteColor * xAlpha) - dark = Color.FromArgb(CONoteColor * xAlpha) + bright = Color.FromArgb(CInt(CONoteColor * xAlpha)) + dark = Color.FromArgb(CInt(CONoteColor * xAlpha)) Exit For End If @@ -653,7 +656,7 @@ Partial Public Class MainWindow e.Graphics.DrawString(xLabel, vo.kFont, xBrush2, HorizontalPositiontoDisplay(xnLeft, xHS) + vo.kLabelHShift, - NoteRowToPanelHeight(sNote.VPosition, xVS, xHeight) - vo.kHeight + vo.kLabelVShift - IIf(sNote.Comment, CInt(sNote.Length * gxHeight), 0)) + NoteRowToPanelHeight(sNote.VPosition, xVS, xHeight) - vo.kHeight + vo.kLabelVShift - CInt(IIf(sNote.Comment, CInt(sNote.Length * gxHeight), 0))) If sNote.ColumnIndex < niB Then If sNote.LNPair <> 0 Then @@ -673,7 +676,7 @@ Partial Public Class MainWindow ErrorGraphics = My.Resources.ImageError End Select If ErrorCheck AndAlso sNote.HasError Then e.Graphics.DrawImage(ErrorGraphics, - CInt(HorizontalPositiontoDisplay(xnLeft + xColumnWidth / 2, xHS) - 12), + CInt(HorizontalPositiontoDisplay(CInt(xnLeft + xColumnWidth / 2), xHS) - 12), CInt(NoteRowToPanelHeight(sNote.VPosition, xVS, xHeight) - vo.kHeight / 2 - 12), 24, 24) @@ -686,9 +689,9 @@ Partial Public Class MainWindow Dim xColumnWidth = GetColumnWidth(sNote.ColumnIndex) Dim xPen2 As New Pen(GetColumn(sNote.ColumnIndex).getLongBright(xAlpha)) Dim xBrush3 As New Drawing2D.LinearGradientBrush( - New Point(HorizontalPositiontoDisplay(xnLeft - 0.5 * xColumnWidth, xHS), + New Point(HorizontalPositiontoDisplay(CInt(xnLeft - 0.5 * xColumnWidth), xHS), NoteRowToPanelHeight(Notes(sNote.LNPair).VPosition, xVS, xHeight)), - New Point(HorizontalPositiontoDisplay(xnLeft + 1.5 * xColumnWidth, xHS), + New Point(HorizontalPositiontoDisplay(CInt(xnLeft + 1.5 * xColumnWidth), xHS), NoteRowToPanelHeight(sNote.VPosition, xVS, xHeight) + vo.kHeight), GetColumn(sNote.ColumnIndex).getLongBright(xAlpha), GetColumn(sNote.ColumnIndex).getLongDark(xAlpha)) @@ -719,7 +722,7 @@ Partial Public Class MainWindow If Not nEnabled(sNote.ColumnIndex) Then Exit Sub Dim xAlpha As Single = 1.0F If sNote.Hidden Then xAlpha = vo.kOpacity - If sNote.Ghost Then xAlpha *= 0.1 + If sNote.Ghost Then xAlpha *= 0.1F Dim xLabel As String = GetNoteLabel(sNote) @@ -756,8 +759,8 @@ Partial Public Class MainWindow ' bright = Color.FromArgb(CONoteColor * xAlpha) - bright = Color.FromArgb(CONoteColor * xAlpha) - dark = Color.FromArgb(CONoteColor * xAlpha) + bright = Color.FromArgb(CInt(CONoteColor * xAlpha)) + dark = Color.FromArgb(CInt(CONoteColor * xAlpha)) Exit For End If @@ -776,9 +779,9 @@ Partial Public Class MainWindow End If xBrush2 = New SolidBrush(GetColumn(sNote.ColumnIndex).cText) Else - p1 = New Point(HorizontalPositiontoDisplay(xnLeft - 0.5 * xColumnWidth, xHS), + p1 = New Point(HorizontalPositiontoDisplay(CInt(xnLeft - 0.5 * xColumnWidth), xHS), NoteRowToPanelHeight(sNote.VPosition + sNote.Length, xVS, xHeight) - vo.kHeight) - p2 = New Point(HorizontalPositiontoDisplay(xnLeft + 1.5 * xColumnWidth, xHS), + p2 = New Point(HorizontalPositiontoDisplay(CInt(xnLeft + 1.5 * xColumnWidth), xHS), NoteRowToPanelHeight(sNote.VPosition, xVS, xHeight)) xBrush2 = New SolidBrush(GetColumn(sNote.ColumnIndex).cLText) @@ -803,7 +806,7 @@ Partial Public Class MainWindow e.Graphics.DrawString(xLabel, vo.kFont, xBrush2, HorizontalPositiontoDisplay(xnLeft, xHS) + vo.kLabelHShiftL - 2, - NoteRowToPanelHeight(sNote.VPosition, xVS, xHeight) - vo.kHeight + vo.kLabelVShift - IIf(sNote.Comment, CInt(sNote.Length * gxHeight), 0)) + NoteRowToPanelHeight(sNote.VPosition, xVS, xHeight) - vo.kHeight + vo.kLabelVShift - CInt(IIf(sNote.Comment, CInt(sNote.Length * gxHeight), 0))) ' Draw paired body If sNote.ColumnIndex < niB Then @@ -832,7 +835,7 @@ Partial Public Class MainWindow End Select If ErrorCheck AndAlso sNote.HasError Then e.Graphics.DrawImage(ErrorGraphics, - CInt(HorizontalPositiontoDisplay(xnLeft + xColumnWidth / 2, xHS) - 12), + CInt(HorizontalPositiontoDisplay(CInt(xnLeft + xColumnWidth / 2), xHS) - 12), CInt(NoteRowToPanelHeight(sNote.VPosition, xVS, xHeight) - vo.kHeight / 2 - 12), 24, 24) End If @@ -842,12 +845,12 @@ Partial Public Class MainWindow End Sub - Private Function WordWrapConvert(ByVal s As String) + Private Function WordWrapConvert(ByVal s As String) As String If s = "" Then Return "" Return s.Replace("\n", vbCrLf) End Function - Private Function GetNoteLabel(ByVal sNote As Note) + Private Function GetNoteLabel(ByVal sNote As Note) As String Dim xLabel As String = C10to36(sNote.Value \ 10000) ' If note is a comment note If sNote.Comment Then @@ -858,7 +861,7 @@ Partial Public Class MainWindow xLabel = WordWrapConvert(hCOM(C36to10(xLabel))) End If ElseIf IsColumnNumeric(sNote.ColumnIndex) Then ' IIf(IsColumnNumeric(sNote.ColumnIndex) AndAlso Not sNote.Comment, sNote.Value / 10000, xLabel) - xLabel = sNote.Value / 10000 + xLabel = (sNote.Value / 10000).ToString() ElseIf ShowFileName AndAlso hWAV(C36to10(xLabel)) <> "" Then xLabel = Path.GetFileNameWithoutExtension(hWAV(C36to10(xLabel))) End If @@ -869,7 +872,7 @@ Partial Public Class MainWindow If InternalPlayNotes Is Nothing Then Exit Sub Dim VPos As Double = GetVPositionFromTime(GetTimeFromVPosition(InternalPlayNotes(0).VPosition) + InternalPlayTimerCount / 1000) - Dim VPosEnd As Double = GetVPositionFromTime(GetTimeFromVPosition(InternalPlayNotes(0).VPosition) + wLWAV(InternalPlayNotes(0).Value / 10000).Duration) + Dim VPosEnd As Double = GetVPositionFromTime(GetTimeFromVPosition(InternalPlayNotes(0).VPosition) + wLWAV(CInt(InternalPlayNotes(0).Value / 10000)).Duration) ' VPosition to Panel height Dim xTHTime As Integer = NoteRowToPanelHeight(VPos, xVS, xTHeight) Dim xTHTimeEnd As Integer = NoteRowToPanelHeight(VPosEnd, xVS, xTHeight) diff --git a/iBMSC/PanelEvents.vb b/iBMSC/PanelEvents.vb index 6166bfa4f..ce4156b2c 100644 --- a/iBMSC/PanelEvents.vb +++ b/iBMSC/PanelEvents.vb @@ -10,7 +10,7 @@ Partial Public Class MainWindow Exit Sub End If - Dim iI As Integer = sender.Tag + Dim PanelS As Panel = CType(sender, Panel) Dim xI1 As Integer Dim xTargetColumn As Integer = -1 Dim xUndo As UndoRedo.LinkedURCmd = Nothing @@ -28,9 +28,10 @@ Partial Public Class MainWindow For xI1 = 1 To UBound(Notes) If Notes(xI1).Selected Then 'K(xI1).VPosition = Math.Floor(K(xI1).VPosition / (192 / gDivide)) * 192 / gDivide - muVPosition = IIf(Notes(xI1).VPosition + IIf(NTInput, Notes(xI1).Length, 0) + xVPosition > muVPosition, - Notes(xI1).VPosition + IIf(NTInput, Notes(xI1).Length, 0) + xVPosition, - muVPosition) + Dim NTLength As Double = CDbl(IIf(NTInput, Notes(xI1).Length, 0)) + muVPosition = CDbl(IIf(Notes(xI1).VPosition + NTLength + xVPosition > muVPosition, + Notes(xI1).VPosition + NTLength + xVPosition, + muVPosition)) End If Next muVPosition -= 191999 @@ -60,9 +61,9 @@ Partial Public Class MainWindow For xI1 = 1 To UBound(Notes) If Notes(xI1).Selected Then 'K(xI1).VPosition = Math.Ceiling(K(xI1).VPosition / (192 / gDivide)) * 192 / gDivide - mVPosition = IIf(Notes(xI1).VPosition + xVPosition < mVPosition, + mVPosition = CDbl(IIf(Notes(xI1).VPosition + xVPosition < mVPosition, Notes(xI1).VPosition + xVPosition, - mVPosition) + mVPosition)) End If Next @@ -91,9 +92,9 @@ Partial Public Class MainWindow 'Ks cannot be beyond the left boundary Dim mLeft As Integer = 0 For xI1 = 1 To UBound(Notes) - If Notes(xI1).Selected Then mLeft = IIf(ColumnArrayIndexToEnabledColumnIndex(Notes(xI1).ColumnIndex) - 1 < mLeft, + If Notes(xI1).Selected Then mLeft = CInt(IIf(ColumnArrayIndexToEnabledColumnIndex(Notes(xI1).ColumnIndex) - 1 < mLeft, ColumnArrayIndexToEnabledColumnIndex(Notes(xI1).ColumnIndex) - 1, - mLeft) + mLeft)) Next Dim xCol As Integer @@ -156,24 +157,24 @@ Partial Public Class MainWindow If PanelFocus = 2 Then RightPanelScroll.Value = RightPanelScroll.Minimum Case Keys.PageUp - If PanelFocus = 0 Then LeftPanelScroll.Value = IIf(LeftPanelScroll.Value - gPgUpDn > LeftPanelScroll.Minimum, LeftPanelScroll.Value - gPgUpDn, LeftPanelScroll.Minimum) - If PanelFocus = 1 Then MainPanelScroll.Value = IIf(MainPanelScroll.Value - gPgUpDn > MainPanelScroll.Minimum, MainPanelScroll.Value - gPgUpDn, MainPanelScroll.Minimum) - If PanelFocus = 2 Then RightPanelScroll.Value = IIf(RightPanelScroll.Value - gPgUpDn > RightPanelScroll.Minimum, RightPanelScroll.Value - gPgUpDn, RightPanelScroll.Minimum) + If PanelFocus = 0 Then LeftPanelScroll.Value = CInt(IIf(LeftPanelScroll.Value - gPgUpDn > LeftPanelScroll.Minimum, LeftPanelScroll.Value - gPgUpDn, LeftPanelScroll.Minimum)) + If PanelFocus = 1 Then MainPanelScroll.Value = CInt(IIf(MainPanelScroll.Value - gPgUpDn > MainPanelScroll.Minimum, MainPanelScroll.Value - gPgUpDn, MainPanelScroll.Minimum)) + If PanelFocus = 2 Then RightPanelScroll.Value = CInt(IIf(RightPanelScroll.Value - gPgUpDn > RightPanelScroll.Minimum, RightPanelScroll.Value - gPgUpDn, RightPanelScroll.Minimum)) Case Keys.PageDown - If PanelFocus = 0 Then LeftPanelScroll.Value = IIf(LeftPanelScroll.Value + gPgUpDn < 0, LeftPanelScroll.Value + gPgUpDn, 0) - If PanelFocus = 1 Then MainPanelScroll.Value = IIf(MainPanelScroll.Value + gPgUpDn < 0, MainPanelScroll.Value + gPgUpDn, 0) - If PanelFocus = 2 Then RightPanelScroll.Value = IIf(RightPanelScroll.Value + gPgUpDn < 0, RightPanelScroll.Value + gPgUpDn, 0) + If PanelFocus = 0 Then LeftPanelScroll.Value = CInt(IIf(LeftPanelScroll.Value + gPgUpDn < 0, LeftPanelScroll.Value + gPgUpDn, 0)) + If PanelFocus = 1 Then MainPanelScroll.Value = CInt(IIf(MainPanelScroll.Value + gPgUpDn < 0, MainPanelScroll.Value + gPgUpDn, 0)) + If PanelFocus = 2 Then RightPanelScroll.Value = CInt(IIf(RightPanelScroll.Value + gPgUpDn < 0, RightPanelScroll.Value + gPgUpDn, 0)) Case Keys.Oemcomma With My.Computer.Keyboard - Dim Modif As Integer = IIf(.ShiftKeyDown, 3, 2) + Dim Modif As Integer = CInt(IIf(.ShiftKeyDown, 3, 2)) If Not .CtrlKeyDown And Not .AltKeyDown Then ' Divide CGDivide - If CGDivide.Value \ Modif >= CGDivide.Minimum Then CGDivide.Value \= Modif + If CLng(CGDivide.Value) / Modif >= CGDivide.Minimum Then CGDivide.Value = CGDivide.Value / Modif ElseIf .CtrlKeyDown And Not .AltKeyDown Then ' Decrease CGDivide by 1 If CGDivide.Value - 1 >= CGDivide.Minimum Then CGDivide.Value -= 1 ElseIf Not .CtrlKeyDown And .AltKeyDown Then ' Divide CGSub - If CGSub.Value \ Modif >= CGSub.Minimum Then CGSub.Value \= Modif + If CLng(CGSub.Value) / Modif >= CGSub.Minimum Then CGSub.Value = CGSub.Value / Modif Else ' Decrease CGSub by 1 If CGSub.Value - 1 >= CGSub.Minimum Then CGSub.Value -= 1 End If @@ -181,7 +182,7 @@ Partial Public Class MainWindow Case Keys.OemPeriod With My.Computer.Keyboard - Dim Modif As Integer = IIf(.ShiftKeyDown, 3, 2) + Dim Modif As Integer = CInt(IIf(.ShiftKeyDown, 3, 2)) If Not .CtrlKeyDown And Not .AltKeyDown Then ' Divide CGDivide If CGDivide.Value * Modif <= CGDivide.Maximum Then CGDivide.Value *= Modif ElseIf .CtrlKeyDown And Not .AltKeyDown Then ' Decrease CGDivide by 1 @@ -201,12 +202,12 @@ Partial Public Class MainWindow Case Keys.Oemplus With CGHeight - .Value += IIf(.Value > .Maximum - .Increment, .Maximum - .Value, .Increment) + .Value += CDec(IIf(.Value > .Maximum - .Increment, .Maximum - .Value, .Increment)) End With Case Keys.OemMinus With CGHeight - .Value -= IIf(.Value < .Minimum + .Increment, .Value - .Minimum, .Increment) + .Value -= CDec(IIf(.Value < .Minimum + .Increment, .Value - .Minimum, .Increment)) End With Case Keys.Add @@ -215,73 +216,8 @@ Partial Public Class MainWindow Case Keys.Subtract DecreaseCurrentWav() - ' Moved a bunch of keybindings to the bottom, see ExecuteKeybind: - ' Might migrate a bunch more from the above? - - ' Case Keys.G - ' 'az: don't trigger when we use Go To Measure - ' If Not My.Computer.Keyboard.CtrlKeyDown Then CGSnap.Checked = Not gSnap - ' - ' Case Keys.L - ' If Not My.Computer.Keyboard.CtrlKeyDown Then POBLong_Click(Nothing, Nothing) - ' - ' Case Keys.S - ' If Not My.Computer.Keyboard.CtrlKeyDown Then POBNormal_Click(Nothing, Nothing) - ' - ' Case Keys.D - ' CGDisableVertical.Checked = Not CGDisableVertical.Checked - ' - ' Case Keys.NumPad0, Keys.D0 - ' MoveToBGM(xUndo, xRedo) - ' - ' ' Ctrl + Keys → 2P lanes - ' Case Keys.Oem1, Keys.D1 - ' If My.Computer.Keyboard.CtrlKeyDown Then MTCFromMode(niA1, niA2, niD1, xUndo, xRedo) Else MTCFromMode(niA2, niA2, niA2, xUndo, xRedo) - ' Case Keys.Oem2, Keys.D2 - ' If My.Computer.Keyboard.CtrlKeyDown Then MTCFromMode(niA2, niA3, niD2, xUndo, xRedo) Else MTCFromMode(niA3, niA3, niA3, xUndo, xRedo) - ' Case Keys.Oem3, Keys.D3 - ' If My.Computer.Keyboard.CtrlKeyDown Then MTCFromMode(niA3, niA4, niD3, xUndo, xRedo) Else MTCFromMode(niA4, niA4, niA4, xUndo, xRedo) - ' Case Keys.Oem4, Keys.D4 - ' If My.Computer.Keyboard.CtrlKeyDown Then MTCFromMode(niA4, niA5, niD4, xUndo, xRedo) Else MTCFromMode(niA5, niA5, niA5, xUndo, xRedo) - ' Case Keys.Oem5, Keys.D5 - ' If My.Computer.Keyboard.CtrlKeyDown Then MTCFromMode(niA5, niA6, niD5, xUndo, xRedo) Else MTCFromMode(niA6, niA6, niA6, xUndo, xRedo) - ' Case Keys.Oem6, Keys.D6 - ' If My.Computer.Keyboard.CtrlKeyDown Then MTCFromMode(niA6, niD2, niD6, xUndo, xRedo) Else MTCFromMode(niA7, niD2, niA7, xUndo, xRedo) - ' Case Keys.Oem7, Keys.D7 - ' If My.Computer.Keyboard.CtrlKeyDown Then MTCFromMode(niA7, niD3, niD7, xUndo, xRedo) Else MTCFromMode(niA8, niD3, niA8, xUndo, xRedo) - ' Case Keys.Oem8, Keys.D8 - ' If My.Computer.Keyboard.CtrlKeyDown Then MTCFromMode(niA8, niD4, niD8, xUndo, xRedo) Else MTCFromMode(niA1, niD4, niA1, xUndo, xRedo) - ' Case Keys.D9 ' Oem9 not a thing apparently - ' MTCFromMode(-1, niD5, -1, xUndo, xRedo) - ' - ' Case Keys.Q, Keys.NumPad1 : If Not My.Computer.Keyboard.CtrlKeyDown Then MTCFromMode(niA2, niA2, niD1, xUndo, xRedo) - ' Case Keys.W, Keys.NumPad2 : If Not My.Computer.Keyboard.CtrlKeyDown Then MTCFromMode(niA3, niA3, niD2, xUndo, xRedo) - ' Case Keys.E, Keys.NumPad3 : If Not My.Computer.Keyboard.CtrlKeyDown Then MTCFromMode(niA4, niA4, niD3, xUndo, xRedo) - ' Case Keys.R, Keys.NumPad4 : If Not My.Computer.Keyboard.CtrlKeyDown Then MTCFromMode(niA5, niA5, niD4, xUndo, xRedo) - ' Case Keys.T, Keys.NumPad5 : If Not My.Computer.Keyboard.CtrlKeyDown Then MTCFromMode(niA6, niA6, niD5, xUndo, xRedo) - ' Case Keys.Y, Keys.NumPad6 : If Not My.Computer.Keyboard.CtrlKeyDown Then MTCFromMode(niA7, niD2, niD6, xUndo, xRedo) - ' Case Keys.U, Keys.NumPad7 : If Not My.Computer.Keyboard.CtrlKeyDown Then MTCFromMode(niA8, niD3, niD7, xUndo, xRedo) - ' Case Keys.I, Keys.NumPad8 : If Not My.Computer.Keyboard.CtrlKeyDown Then MTCFromMode(niA1, niD4, niD8, xUndo, xRedo) - ' Case Keys.O, Keys.NumPad9 : If Not My.Computer.Keyboard.CtrlKeyDown Then MTCFromMode(-1, niD5, -1, xUndo, xRedo) End Select - ' If My.Computer.Keyboard.CtrlKeyDown And (Not My.Computer.Keyboard.AltKeyDown) And (Not My.Computer.Keyboard.ShiftKeyDown) Then - ' Select Case e.KeyCode - ' Case Keys.Z : TBUndo_Click(TBUndo, New EventArgs) - ' Case Keys.Y : TBRedo_Click(TBRedo, New EventArgs) - ' Case Keys.X : TBCut_Click(TBCut, New EventArgs) - ' Case Keys.C : TBCopy_Click(TBCopy, New EventArgs) - ' Case Keys.V : TBPaste_Click(TBPaste, New EventArgs) - ' Case Keys.A : mnSelectAll_Click(mnSelectAll, New EventArgs) - ' End Select - ' End If - ' - ' If ModifierMultiselectVisibleActive() Then - ' If e.KeyCode = Keys.A And KMouseOver <> -1 Then - ' SelectAllWithHoveredNoteLabel() - ' End If - ' End If - ' Turn keycode into string Dim keyComboEvent(-1) As String If e.Control Then @@ -410,10 +346,10 @@ ExecuteKeybind: Case "TBPreviewHighlighted_Click" TBPreviewHighlighted_Click(sender, New EventArgs) Case "GetVPositionFromTime" - MsgBox("VPosition: " & GetVPositionFromTime(InputBox("Enter time"))) + MsgBox("VPosition: " & GetVPositionFromTime(CDbl(InputBox("Enter time")))) End Select - PMainInMouseMove(sender) + PMainInMouseMove(PanelS) POStatusRefresh() End Sub @@ -433,15 +369,15 @@ ExecuteKeybind: Private Sub SelectAllWithHoveredNoteLabel() For xI1 = 0 To UBound(Notes) - Notes(xI1).Selected = IIf(IsLabelMatch(Notes(xI1), KMouseOver), True, Notes(xI1).Selected) + Notes(xI1).Selected = CBool(IIf(IsLabelMatch(Notes(xI1), KMouseOver), True, Notes(xI1).Selected)) Next End Sub Private Function IsLabelMatch(note As Note, index As Integer) As Boolean If TBShowFileName.Checked Then - Dim wavidx = Notes(index).Value / 10000 + Dim wavidx = CInt(Notes(index).Value / 10000) Dim wav = hWAV(wavidx) - If hWAV(note.Value / 10000) = wav Then + If hWAV(CInt(note.Value / 10000)) = wav Then Return True End If Else @@ -552,29 +488,30 @@ ExecuteKeybind: Private Sub PMainInResize(ByVal sender As Object, ByVal e As System.EventArgs) Handles PMainIn.Resize, PMainInL.Resize, PMainInR.Resize If Not Me.Created Then Exit Sub - Dim iI As Integer = sender.Tag + Dim PanelS As Panel = CType(sender, Panel) + Dim iI As Integer = CInt(PanelS.Tag) PanelWidth(0) = PMainL.Width PanelWidth(1) = PMain.Width PanelWidth(2) = PMainR.Width Select Case iI Case 0 - LeftPanelScroll.LargeChange = sender.Height * 0.9 + LeftPanelScroll.LargeChange = CInt(PanelS.Height * 0.9) LeftPanelScroll.Maximum = LeftPanelScroll.LargeChange - 1 - HSL.LargeChange = sender.Width / gxWidth + HSL.LargeChange = CInt(PanelS.Width / gxWidth) If HSL.Value > HSL.Maximum - HSL.LargeChange + 1 Then HSL.Value = HSL.Maximum - HSL.LargeChange + 1 Case 1 - MainPanelScroll.LargeChange = sender.Height * 0.9 + MainPanelScroll.LargeChange = CInt(PanelS.Height * 0.9) MainPanelScroll.Maximum = MainPanelScroll.LargeChange - 1 - HS.LargeChange = sender.Width / gxWidth + HS.LargeChange = CInt(PanelS.Width / gxWidth) If HS.Value > HS.Maximum - HS.LargeChange + 1 Then HS.Value = HS.Maximum - HS.LargeChange + 1 Case 2 - RightPanelScroll.LargeChange = sender.Height * 0.9 + RightPanelScroll.LargeChange = CInt(PanelS.Height * 0.9) RightPanelScroll.Maximum = RightPanelScroll.LargeChange - 1 - HSR.LargeChange = sender.Width / gxWidth + HSR.LargeChange = CInt(PanelS.Width / gxWidth) If HSR.Value > HSR.Maximum - HSR.LargeChange + 1 Then HSR.Value = HSR.Maximum - HSR.LargeChange + 1 End Select - RefreshPanel(iI, sender.DisplayRectangle) + RefreshPanel(iI, PanelS.DisplayRectangle) End Sub Private Sub PMainInLostFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles PMainIn.LostFocus, PMainInL.LostFocus, PMainInR.LostFocus @@ -582,12 +519,14 @@ ExecuteKeybind: End Sub Private Sub PMainInMouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PMainIn.MouseDown, PMainInL.MouseDown, PMainInR.MouseDown - tempFirstMouseDown = FirstClickDisabled And Not sender.Focused - PanelFocus = sender.Tag - sender.Focus() + Dim PanelS As Panel = CType(sender, Panel) + tempFirstMouseDown = FirstClickDisabled And Not PanelS.Focused + + PanelFocus = CInt(PanelS.Tag) + PanelS.Focus() LastMouseDownLocation = New Point(-1, -1) - VSValue = PanelVScroll(PanelFocus) + VSValue = CInt(PanelVScroll(PanelFocus)) If NTInput Then bAdjustUpper = False : bAdjustLength = False Me.ctrlPressed = False : Me.DuplicatedSelectedNotes = False @@ -595,7 +534,7 @@ ExecuteKeybind: If MiddleButtonClicked Then MiddleButtonClicked = False : Exit Sub Dim xHS As Long = PanelHScroll(PanelFocus) - Dim xVS As Long = PanelVScroll(PanelFocus) + Dim xVS As Long = CLng(PanelVScroll(PanelFocus)) Dim xHeight As Integer = spMain(PanelFocus).Height Select Case e.Button @@ -622,8 +561,8 @@ ExecuteKeybind: If MiddleButtonMoveMethod = 1 Then tempX = e.X tempY = e.Y - tempV = xVS - tempH = xHS + tempV = CInt(xVS) + tempH = CInt(xHS) Else MiddleButtonLocation = Cursor.Position MiddleButtonClicked = True @@ -679,7 +618,7 @@ ExecuteKeybind: If MouseInNote(e, xHS, xVS, xHeight, Notes(xI1)) Then ' found it! NoteIndex = xI1 - deltaVPosition = IIf(NTInput, GetMouseVPosition(False) - Notes(xI1).VPosition, 0) + deltaVPosition = CDbl(IIf(NTInput, GetMouseVPosition(False) - Notes(xI1).VPosition, 0)) If NTInput And My.Computer.Keyboard.ShiftKeyDown Then bAdjustUpper = e.Y <= NoteRowToPanelHeight(Notes(xI1).VPosition + Notes(xI1).Length, xVS, xHeight) @@ -699,12 +638,12 @@ ExecuteKeybind: If ClickStopPreview Then PreviewNote("", True) 'My.Computer.Audio.Stop() If NoteIndex > 0 AndAlso PreviewOnClick AndAlso IsColumnSound(Notes(NoteIndex).ColumnIndex) AndAlso Not Notes(NoteIndex).Comment Then - Dim xIW As Integer = Notes(NoteIndex).Value \ 10000 + Dim xIW As Integer = CInt(Notes(NoteIndex).Value \ 10000) If xIW <= 0 Then xIW = 1 If xIW >= 1296 Then xIW = 1295 If Not hWAV(xIW) = "" Then ' AndAlso Path.GetExtension(hWAV(xI2)).ToLower = ".wav" Then - Dim xFileLocation As String = IIf(ExcludeFileName(FileName) = "", InitPath, ExcludeFileName(FileName)) & "\" & hWAV(xIW) + Dim xFileLocation As String = IIf(ExcludeFileName(FileName) = "", InitPath, ExcludeFileName(FileName)).ToString() & "\" & hWAV(xIW) If Not ClickStopPreview Then PreviewNote("", True) PreviewNote(xFileLocation, False) @@ -772,7 +711,7 @@ ExecuteKeybind: Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo Dim valstr As String = InputBox(xMessage, Text) - Dim value As Double = Val(valstr) * 10000 + Dim value As Long = CLng(valstr) * 10000 If valstr.StartsWith("-c ") Then ' Input comment notes If valstr = "-c " Then valstr &= " " For xI1 = 1 To UBound(Notes) @@ -909,7 +848,7 @@ ExecuteKeybind: If gSnap And NoteIndex <= 0 And Not My.Computer.Keyboard.CtrlKeyDown Then xL1 = SnapToGrid(xL1) AddUndo(New UndoRedo.Void, New UndoRedo.Void) - BPMChangeTop(IIf(vSelMouseOverLine = 3, xL1 - vSelStart, vSelStart + vSelLength - xL1) / vSelLength, , True) + BPMChangeTop(CDbl(IIf(vSelMouseOverLine = 3, xL1 - vSelStart, vSelStart + vSelLength - xL1)) / vSelLength, , True) SortByVPositionInsertion() UpdatePairing() CalculateGreatestVPosition() @@ -922,9 +861,9 @@ ExecuteKeybind: End If - If vSelLength Then - Dim xVLower As Double = IIf(vSelLength > 0, vSelStart, vSelStart + vSelLength) - Dim xVUpper As Double = IIf(vSelLength < 0, vSelStart, vSelStart + vSelLength) + If vSelLength > 0 Then + Dim xVLower As Double = CDbl(IIf(vSelLength > 0, vSelStart, vSelStart + vSelLength)) + Dim xVUpper As Double = CDbl(IIf(vSelLength < 0, vSelStart, vSelStart + vSelLength)) If NTInput Then For xI2 As Integer = 1 To UBound(Notes) Notes(xI2).Selected = Not Notes(xI2).VPosition >= xVUpper And Not Notes(xI2).VPosition + Notes(xI2).Length < xVLower And nEnabled(Notes(xI2).ColumnIndex) @@ -943,7 +882,7 @@ ExecuteKeybind: End If End Sub - Private Sub OnSelectModeLeftClick(e As MouseEventArgs, NoteIndex As Integer, xTHeight As Integer, xVS As Integer) + Private Sub OnSelectModeLeftClick(e As MouseEventArgs, NoteIndex As Integer, xTHeight As Integer, xVS As Long) If NoteIndex >= 0 And e.Clicks = 2 Then DoubleClickNoteIndex(NoteIndex) ElseIf NoteIndex > 0 Then @@ -1041,10 +980,10 @@ ExecuteKeybind: If Note.Comment Then ' Edit comment Dim xMessage As String = Strings.Messages.PromptEnter - Dim valstr As String = InputBox(xMessage, Me.Text, hCOM(Note.Value / 10000)) + Dim valstr As String = InputBox(xMessage, Text, hCOM(CInt(Note.Value / 10000))) If valstr = "" Then valstr = " " ' Replace comment - hCOM(Note.Value / 10000) = valstr + hCOM(CInt(Note.Value / 10000)) = valstr ElseIf IsColumnNumeric(NoteColumn) Then 'BPM/Stop prompt Dim xMessage As String = Strings.Messages.PromptEnterNumeric @@ -1054,14 +993,14 @@ ExecuteKeybind: Dim valstr As String = InputBox(xMessage, Me.Text) - Dim PromptValue As Double = Val(valstr) * 10000 + Dim PromptValue As Long = CLng(valstr) * 10000 If (NoteColumn = niSCROLL And valstr = "0") Or PromptValue <> 0 Then Dim xUndo As UndoRedo.LinkedURCmd = Nothing Dim xRedo As UndoRedo.LinkedURCmd = Nothing RedoRelabelNote(Note, PromptValue, xUndo, xRedo) If NoteIndex = 0 Then - THBPM.Value = PromptValue / 10000 + THBPM.Value = CDec(PromptValue / 10000) Else Notes(NoteIndex).Value = PromptValue End If @@ -1090,15 +1029,15 @@ ExecuteKeybind: Private Function MouseInNote(e As MouseEventArgs, xHS As Long, xVS As Long, xHeight As Integer, note As Note) As Boolean Return e.X >= HorizontalPositiontoDisplay(nLeft(note.ColumnIndex), xHS) + 1 And e.X <= HorizontalPositiontoDisplay(nLeft(note.ColumnIndex) + GetColumnWidth(note.ColumnIndex), xHS) - 1 And - e.Y >= NoteRowToPanelHeight(note.VPosition + IIf(NTInput, note.Length, 0), xVS, xHeight) - vo.kHeight And + e.Y >= NoteRowToPanelHeight(note.VPosition + CDbl(IIf(NTInput, note.Length, 0)), xVS, xHeight) - vo.kHeight And e.Y <= NoteRowToPanelHeight(note.VPosition, xVS, xHeight) End Function Private Sub PMainInMouseEnter(ByVal sender As Object, ByVal e As System.EventArgs) Handles PMainIn.MouseEnter, PMainInL.MouseEnter, PMainInR.MouseEnter - spMouseOver = sender.Tag - Dim xPMainIn As Panel = sender - If AutoFocusMouseEnter AndAlso Me.Focused Then xPMainIn.Focus() : PanelFocus = spMouseOver - If FirstMouseEnter Then FirstMouseEnter = False : xPMainIn.Focus() : PanelFocus = spMouseOver + Dim PanelS As Panel = CType(sender, Panel) + spMouseOver = CInt(PanelS.Tag) + If AutoFocusMouseEnter AndAlso Me.Focused Then PanelS.Focus() : PanelFocus = spMouseOver + If FirstMouseEnter Then FirstMouseEnter = False : PanelS.Focus() : PanelFocus = spMouseOver End Sub Private Sub PMainInMouseLeave(ByVal sender As Object, ByVal e As System.EventArgs) Handles PMainIn.MouseLeave, PMainInL.MouseLeave, PMainInR.MouseLeave @@ -1118,10 +1057,11 @@ ExecuteKeybind: Private Sub PMainInMouseMove(ByVal sender As Object, ByVal e As MouseEventArgs) Handles PMainIn.MouseMove, PMainInL.MouseMove, PMainInR.MouseMove MouseMoveStatus = e.Location - Dim iI As Integer = sender.Tag + Dim PanelS As Panel = CType(sender, Panel) + Dim iI As Integer = CInt(PanelS.Tag) Dim xHS As Long = PanelHScroll(iI) - Dim xVS As Long = PanelVScroll(iI) + Dim xVS As Long = CLng(PanelVScroll(iI)) Dim xHeight As Integer = spMain(iI).Height Dim xWidth As Integer = spMain(iI).Width @@ -1262,10 +1202,10 @@ ExecuteKeybind: End Sub - Dim lastVPos = -1 - Dim lastColumn = -1 + Dim lastVPos As Double = -1 + Dim lastColumn As Integer = -1 - Private Sub UpdateSelectedNotes(xHeight As Double, xvs As Double, xhs As Double, e As MouseEventArgs) + Private Sub UpdateSelectedNotes(xHeight As Integer, xVS As Long, xHS As Long, e As MouseEventArgs) Dim mouseVPosition As Double Dim xITemp As Integer @@ -1290,7 +1230,7 @@ ExecuteKeybind: ' Dim foundNoteIndex As Integer = -1 For noteIndex = 1 To UBound(Notes) - If MouseInNote(e, xhs, xvs, xHeight, Notes(noteIndex)) Then + If MouseInNote(e, xHS, xVS, xHeight, Notes(noteIndex)) Then foundNoteIndex = noteIndex Exit For End If @@ -1298,7 +1238,7 @@ ExecuteKeybind: 'If moving If Not bAdjustLength Then - OnSelectModeMoveNotes(e, xhs, xITemp) + OnSelectModeMoveNotes(e, xHS, xITemp) ElseIf bAdjustUpper Then 'If adjusting upper end Dim dVPosition = mouseVPosition - Notes(xITemp).VPosition - Notes(xITemp).Length 'delta Length @@ -1323,8 +1263,8 @@ ExecuteKeybind: Private Sub OnPanelMousePan(e As MouseEventArgs) If MiddleButtonMoveMethod = 1 Then - Dim xI1 As Integer = tempV + (tempY - e.Y) / gxHeight - Dim xI2 As Integer = tempH + (tempX - e.X) / gxWidth + Dim xI1 As Integer = CInt(tempV + (tempY - e.Y) / gxHeight) + Dim xI2 As Integer = CInt(tempH + (tempX - e.X) / gxWidth) If xI1 > 0 Then xI1 = 0 If xI2 < 0 Then xI2 = 0 @@ -1354,12 +1294,12 @@ ExecuteKeybind: End If End Sub - Private Sub OnTimeSelectClick(xHeight As Double, xHS As Double, xvs As Double, e As MouseEventArgs) + Private Sub OnTimeSelectClick(xHeight As Integer, xHS As Long, xVS As Long, e As MouseEventArgs) Dim xI1 As Integer Dim xITemp As Integer = -1 If Notes IsNot Nothing Then For xI1 = UBound(Notes) To 0 Step -1 ' az: MouseInNote implied, but I'm not sure yet - If MouseInNote(e, xHS, xvs, xHeight, Notes(xI1)) Then + If MouseInNote(e, xHS, xVS, xHeight, Notes(xI1)) Then xITemp = xI1 Exit For End If @@ -1368,7 +1308,7 @@ ExecuteKeybind: If Not vSelAdjust Then If vSelMouseOverLine = 1 Then - Dim xV As Double = (xHeight - xvs * gxHeight - e.Y - 1) / gxHeight + Dim xV As Double = (xHeight - xVS * gxHeight - e.Y - 1) / gxHeight If xITemp >= 0 Then xV = Notes(xITemp).VPosition If gSnap And xITemp <= 0 And Not My.Computer.Keyboard.CtrlKeyDown Then xV = SnapToGrid(xV) vSelLength += vSelStart - xV @@ -1376,13 +1316,13 @@ ExecuteKeybind: vSelStart = xV ElseIf vSelMouseOverLine = 2 Then - vSelHalf = (xHeight - xvs * gxHeight - e.Y - 1) / gxHeight + vSelHalf = (xHeight - xVS * gxHeight - e.Y - 1) / gxHeight If xITemp >= 0 Then vSelHalf = Notes(xITemp).VPosition If gSnap And xITemp <= 0 And Not My.Computer.Keyboard.CtrlKeyDown Then vSelHalf = SnapToGrid(vSelHalf) vSelHalf -= vSelStart ElseIf vSelMouseOverLine = 3 Then - vSelLength = (xHeight - xvs * gxHeight - e.Y - 1) / gxHeight + vSelLength = (xHeight - xVS * gxHeight - e.Y - 1) / gxHeight If xITemp >= 0 Then vSelLength = Notes(xITemp).VPosition If gSnap And xITemp <= 0 And Not My.Computer.Keyboard.CtrlKeyDown Then vSelLength = SnapToGrid(vSelLength) vSelLength -= vSelStart @@ -1391,7 +1331,7 @@ ExecuteKeybind: If xITemp >= 0 Then vSelLength = Notes(xITemp).VPosition Else - vSelLength = (xHeight - xvs * gxHeight - e.Y - 1) / gxHeight + vSelLength = (xHeight - xVS * gxHeight - e.Y - 1) / gxHeight If gSnap And Not My.Computer.Keyboard.CtrlKeyDown Then vSelLength = SnapToGrid(vSelLength) End If vSelLength -= vSelStart @@ -1400,7 +1340,7 @@ ExecuteKeybind: ValidateSelection() Else - Dim xL1 As Double = (xHeight - xvs * gxHeight - e.Y - 1) / gxHeight + Dim xL1 As Double = (xHeight - xVS * gxHeight - e.Y - 1) / gxHeight If vSelMouseOverLine = 2 Then vSelStart = vSelPStart @@ -1423,7 +1363,7 @@ ExecuteKeybind: ReDim Preserve Notes(UBound(Notes)) If gSnap And Not My.Computer.Keyboard.CtrlKeyDown Then xL1 = SnapToGrid(xL1) - BPMChangeTop(IIf(vSelMouseOverLine = 3, xL1 - vSelStart, vSelStart + vSelLength - xL1) / vSelLength, , True) + BPMChangeTop(CDbl(IIf(vSelMouseOverLine = 3, xL1 - vSelStart, vSelStart + vSelLength - xL1)) / vSelLength, , True) SortByVPositionInsertion() UpdatePairing() CalculateGreatestVPosition() @@ -1437,9 +1377,9 @@ ExecuteKeybind: End If End If - If vSelLength Then - Dim xVLower As Double = IIf(vSelLength > 0, vSelStart, vSelStart + vSelLength) - Dim xVUpper As Double = IIf(vSelLength < 0, vSelStart, vSelStart + vSelLength) + If vSelLength > 0 Then + Dim xVLower As Double = CDbl(IIf(vSelLength > 0, vSelStart, vSelStart + vSelLength)) + Dim xVUpper As Double = CDbl(IIf(vSelLength < 0, vSelStart, vSelStart + vSelLength)) If NTInput Then For xI2 As Integer = 1 To UBound(Notes) Notes(xI2).Selected = Notes(xI2).VPosition < xVUpper And Notes(xI2).VPosition + Notes(xI2).Length >= xVLower And nEnabled(Notes(xI2).ColumnIndex) @@ -1530,7 +1470,7 @@ ExecuteKeybind: End If End Sub - Private Sub OnDuplicateSelectedNotes(xHeight As Double, xVS As Double, xHS As Double, e As MouseEventArgs) + Private Sub OnDuplicateSelectedNotes(xHeight As Integer, xVS As Long, xHS As Long, e As MouseEventArgs) Dim tempNoteIndex As Integer For tempNoteIndex = 1 To UBound(Notes) If Notes(tempNoteIndex).TempMouseDown Then Exit For @@ -1558,8 +1498,9 @@ ExecuteKeybind: If Notes(xI1).VPosition + dVPosition < mVPosition Then _ mVPosition = Notes(xI1).VPosition + dVPosition - If Notes(xI1).VPosition + IIf(NTInput, Notes(xI1).Length, 0) + dVPosition > muVPosition Then _ - muVPosition = Notes(xI1).VPosition + IIf(NTInput, Notes(xI1).Length, 0) + dVPosition + Dim NTLength As Double = CDbl(IIf(NTInput, Notes(xI1).Length, 0)) + If Notes(xI1).VPosition + NTLength + dVPosition > muVPosition Then _ + muVPosition = Notes(xI1).VPosition + NTLength + dVPosition Next muVPosition -= 191999 @@ -1661,7 +1602,7 @@ ExecuteKeybind: Dim mouseColumn As Integer Dim xI1 = 0 - Dim mLeft As Integer = e.X / gxWidth + xHS 'horizontal position of the mouse + Dim mLeft As Integer = CInt(e.X / gxWidth + xHS) 'horizontal position of the mouse If mLeft >= 0 Then Do If mLeft < nLeft(xI1 + 1) Or xI1 >= gColumns Then mouseColumn = ColumnArrayIndexToEnabledColumnIndex(xI1) : Exit Do 'get the column where mouse is @@ -1677,15 +1618,16 @@ ExecuteKeybind: Dim muVPosition As Double = 191999 For xI1 = 1 To UBound(Notes) If Notes(xI1).Selected Then - mLeft = IIf(ColumnArrayIndexToEnabledColumnIndex(Notes(xI1).ColumnIndex) + dColumn < mLeft, + mLeft = CInt(IIf(ColumnArrayIndexToEnabledColumnIndex(Notes(xI1).ColumnIndex) + dColumn < mLeft, ColumnArrayIndexToEnabledColumnIndex(Notes(xI1).ColumnIndex) + dColumn, - mLeft) - mVPosition = IIf(Notes(xI1).VPosition + dVPosition < mVPosition, + mLeft)) + mVPosition = CDbl(IIf(Notes(xI1).VPosition + dVPosition < mVPosition, Notes(xI1).VPosition + dVPosition, - mVPosition) - muVPosition = IIf(Notes(xI1).VPosition + IIf(NTInput, Notes(xI1).Length, 0) + dVPosition > muVPosition, - Notes(xI1).VPosition + IIf(NTInput, Notes(xI1).Length, 0) + dVPosition, - muVPosition) + mVPosition)) + Dim NTLength As Double = CDbl(IIf(NTInput, Notes(xI1).Length, 0)) + muVPosition = CDbl(IIf(Notes(xI1).VPosition + NTLength + dVPosition > muVPosition, + Notes(xI1).VPosition + NTLength + dVPosition, + muVPosition)) End If Next muVPosition -= 191999 @@ -1717,18 +1659,19 @@ ExecuteKeybind: End Sub Private Sub UpdateSelectionBox(xHS As Long, xVS As Long, xHeight As Integer) - Dim SelectionBox As New Rectangle(IIf(pMouseMove.X > LastMouseDownLocation.X, LastMouseDownLocation.X, pMouseMove.X), - IIf(pMouseMove.Y > LastMouseDownLocation.Y, LastMouseDownLocation.Y, pMouseMove.Y), - Math.Abs(pMouseMove.X - LastMouseDownLocation.X), - Math.Abs(pMouseMove.Y - LastMouseDownLocation.Y)) + Dim SelectionBox As New Rectangle(CInt(IIf(pMouseMove.X > LastMouseDownLocation.X, LastMouseDownLocation.X, pMouseMove.X)), + CInt(IIf(pMouseMove.Y > LastMouseDownLocation.Y, LastMouseDownLocation.Y, pMouseMove.Y)), + CInt(Math.Abs(pMouseMove.X - LastMouseDownLocation.X)), + CInt(Math.Abs(pMouseMove.Y - LastMouseDownLocation.Y))) Dim NoteRect As Rectangle Dim xI1 As Integer For xI1 = 1 To UBound(Notes) + Dim NTLength As Double = CDbl(IIf(NTInput, Notes(xI1).Length, 0)) NoteRect = New Rectangle(HorizontalPositiontoDisplay(nLeft(Notes(xI1).ColumnIndex), xHS) + 1, - NoteRowToPanelHeight(Notes(xI1).VPosition + IIf(NTInput, Notes(xI1).Length, 0), xVS, xHeight) - vo.kHeight, - GetColumnWidth(Notes(xI1).ColumnIndex) * gxWidth - 2, - vo.kHeight + IIf(NTInput, Notes(xI1).Length * gxHeight, 0)) + NoteRowToPanelHeight(Notes(xI1).VPosition + NTLength, xVS, xHeight) - vo.kHeight, + CInt(GetColumnWidth(Notes(xI1).ColumnIndex) * gxWidth - 2), + vo.kHeight + CInt(NTLength * gxHeight)) If NoteRect.IntersectsWith(SelectionBox) Then @@ -1780,20 +1723,20 @@ ExecuteKeybind: Private Sub DrawNoteHoverHighlight(iI As Integer, xHS As Long, xVS As Long, xHeight As Integer, foundNoteIndex As Integer) Dim xDispX As Integer = HorizontalPositiontoDisplay(nLeft(Notes(foundNoteIndex).ColumnIndex), xHS) - Dim xDispY As Integer = IIf(Not NTInput Or (bAdjustLength And Not bAdjustUpper), + Dim xDispY As Integer = CInt(IIf(Not NTInput Or (bAdjustLength And Not bAdjustUpper), NoteRowToPanelHeight(Notes(foundNoteIndex).VPosition, xVS, xHeight) - vo.kHeight - 1, - NoteRowToPanelHeight(Notes(foundNoteIndex).VPosition + Notes(foundNoteIndex).Length, xVS, xHeight) - vo.kHeight - 1) - Dim xDispW As Integer = GetColumnWidth(Notes(foundNoteIndex).ColumnIndex) * gxWidth + 1 - Dim xDispH As Integer = IIf(Not NTInput Or bAdjustLength, + NoteRowToPanelHeight(Notes(foundNoteIndex).VPosition + Notes(foundNoteIndex).Length, xVS, xHeight) - vo.kHeight - 1)) + Dim xDispW As Integer = CInt(GetColumnWidth(Notes(foundNoteIndex).ColumnIndex) * gxWidth + 1) + Dim xDispH As Integer = CInt(IIf(Not NTInput Or bAdjustLength, vo.kHeight + 3, - Notes(foundNoteIndex).Length * gxHeight + vo.kHeight + 3) + Notes(foundNoteIndex).Length * gxHeight + vo.kHeight + 3)) Dim e1 As BufferedGraphics = BufferedGraphicsManager.Current.Allocate(spMain(iI).CreateGraphics, New Rectangle(xDispX, xDispY, xDispW, xDispH)) e1.Graphics.FillRectangle(vo.Bg, New Rectangle(xDispX, xDispY, xDispW, xDispH)) If NTInput Then DrawNoteNT(Notes(foundNoteIndex), e1, xHS, xVS, xHeight, COverrides) Else DrawNote(Notes(foundNoteIndex), e1, xHS, xVS, xHeight, COverrides) - e1.Graphics.DrawRectangle(IIf(bAdjustLength, vo.kMouseOverE, vo.kMouseOver), xDispX, xDispY, xDispW - 1, xDispH - 1) + e1.Graphics.DrawRectangle(CType(IIf(bAdjustLength, vo.kMouseOverE, vo.kMouseOver), Pen), xDispX, xDispY, xDispW - 1, xDispH - 1) e1.Render(spMain(iI).CreateGraphics) e1.Dispose() @@ -1807,9 +1750,9 @@ ExecuteKeybind: End If End Sub - Private Function GetColumnAtX(x As Integer, xHS As Integer) As Integer + Private Function GetColumnAtX(x As Integer, xHS As Long) As Integer Dim xI1 As Integer = 0 - Dim mLeft As Integer = x / gxWidth + xHS 'horizontal position of the mouse + Dim mLeft As Integer = CInt(x / gxWidth + xHS) 'horizontal position of the mouse Dim xColumn = 0 If mLeft >= 0 Then Do @@ -1821,7 +1764,7 @@ ExecuteKeybind: Return EnabledColumnIndexToColumnArrayIndex(ColumnArrayIndexToEnabledColumnIndex(xColumn)) 'get the enabled column where mouse is End Function - Private Function GetColumnAtEvent(e As MouseEventArgs, xHS As Integer) + Private Function GetColumnAtEvent(e As MouseEventArgs, xHS As Long) As Integer Return GetColumnAtX(e.X, xHS) End Function @@ -1830,8 +1773,8 @@ ExecuteKeybind: With My.Computer.Keyboard If .CtrlKeyDown Then Dim dv = Math.Round(CGHeight2.Value + e.Delta / 120) - CGHeight2.Value = Math.Min(CGHeight2.Maximum, Math.Max(CGHeight2.Minimum, dv)) - CGHeight.Value = CGHeight2.Value / 4 + CGHeight2.Value = CInt(Math.Min(CGHeight2.Maximum, Math.Max(CGHeight2.Minimum, dv))) + CGHeight.Value = CDec(CGHeight2.Value / 4) ElseIf .ShiftKeyDown Then If Math.Sign(e.Delta) = -1 Then IncreaseCurrentWav() Else DecreaseCurrentWav() End If @@ -1850,7 +1793,8 @@ ExecuteKeybind: 'KMouseDown = -1 ReDim SelectedNotes(-1) - Dim iI As Integer = sender.Tag + Dim PanelS As Panel = CType(sender, Panel) + Dim iI As Integer = CInt(PanelS.Tag) If MiddleButtonClicked AndAlso e.Button = Windows.Forms.MouseButtons.Middle AndAlso (MiddleButtonLocation.X - Cursor.Position.X) ^ 2 + (MiddleButtonLocation.Y - Cursor.Position.Y) ^ 2 >= vo.MiddleDeltaRelease Then @@ -1876,14 +1820,14 @@ ExecuteKeybind: Dim xVPosition As Double - xVPosition = (sender.Height - PanelVScroll(iI) * gxHeight - e.Y - 1) / gxHeight 'VPosition of the mouse + xVPosition = (PanelS.Height - PanelVScroll(iI) * gxHeight - e.Y - 1) / gxHeight 'VPosition of the mouse If gSnap Then xVPosition = SnapToGrid(xVPosition) Dim xColumn = GetColumnAtEvent(e, PanelHScroll(iI)) If e.Button = Windows.Forms.MouseButtons.Left Then Dim HiddenNote As Boolean = ModifierHiddenActive() - Dim LongNote As Boolean = ModifierLongNoteActive() + Dim LongNote As Double = CDbl(IIf(ModifierLongNoteActive(), 1, 0)) Dim Landmine As Boolean = ModifierLandmineActive() Dim xUndo As UndoRedo.LinkedURCmd = Nothing Dim xRedo As UndoRedo.LinkedURCmd = New UndoRedo.Void @@ -1896,7 +1840,7 @@ ExecuteKeybind: If xColumn = niSCROLL Then xMessage = Strings.Messages.PromptEnterSCROLL Dim valstr As String = InputBox(xMessage, Me.Text) - Dim value As Long = Val(valstr) * 10000 + Dim value As Long = CLng(valstr) * 10000 If valstr.StartsWith("-c ") Then ' Input comment notes If valstr = "-c " Then valstr &= " " For xI1 = 1 To UBound(Notes) @@ -1959,19 +1903,19 @@ ExecuteKeybind: Select Case spMouseOver Case 0 'xI1 = spV(iI) - Math.Sign(e.Delta) * VSL.SmallChange * 5 / gxHeight - xI1 = PanelVScroll(spMouseOver) - Math.Sign(e.Delta) * gWheel + xI1 = CInt(PanelVScroll(spMouseOver) - Math.Sign(e.Delta) * gWheel) If xI1 > 0 Then xI1 = 0 If xI1 < LeftPanelScroll.Minimum Then xI1 = LeftPanelScroll.Minimum LeftPanelScroll.Value = xI1 Case 1 'xI1 = spV(iI) - Math.Sign(e.Delta) * VS.SmallChange * 5 / gxHeight - xI1 = PanelVScroll(spMouseOver) - Math.Sign(e.Delta) * gWheel + xI1 = CInt(PanelVScroll(spMouseOver) - Math.Sign(e.Delta) * gWheel) If xI1 > 0 Then xI1 = 0 If xI1 < MainPanelScroll.Minimum Then xI1 = MainPanelScroll.Minimum MainPanelScroll.Value = xI1 Case 2 'xI1 = spV(iI) - Math.Sign(e.Delta) * VSR.SmallChange * 5 / gxHeight - xI1 = PanelVScroll(spMouseOver) - Math.Sign(e.Delta) * gWheel + xI1 = CInt(PanelVScroll(spMouseOver) - Math.Sign(e.Delta) * gWheel) If xI1 > 0 Then xI1 = 0 If xI1 < RightPanelScroll.Minimum Then xI1 = RightPanelScroll.Minimum RightPanelScroll.Value = xI1 @@ -1979,6 +1923,7 @@ ExecuteKeybind: End Sub Private Sub PMainInPaint(ByVal sender As System.Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles PMainIn.Paint, PMainInL.Paint, PMainInR.Paint - RefreshPanel(sender.Tag, e.ClipRectangle) + Dim PanelS As Panel = CType(sender, Panel) + RefreshPanel(CInt(PanelS.Tag), e.ClipRectangle) End Sub End Class diff --git a/iBMSC/TimeSelectionOps.vb b/iBMSC/TimeSelectionOps.vb index 623097621..c7ffff6c4 100644 --- a/iBMSC/TimeSelectionOps.vb +++ b/iBMSC/TimeSelectionOps.vb @@ -7,7 +7,7 @@ Partial Public Class MainWindow If Not TBTimeSelect.Checked Then Exit Sub SortByVPositionInsertion() - BPMChangeByValue(Val(TVCBPM.Text) * 10000) + BPMChangeByValue(CInt(Val(TVCBPM.Text) * 10000)) SortByVPositionInsertion() UpdatePairing() @@ -121,12 +121,12 @@ Partial Public Class MainWindow If vSelLength = 0 Then GoTo EndofSub If xRatio = 1 Or xRatio <= 0 Then GoTo EndofSub - Dim xVLower As Double = IIf(vSelLength > 0, vSelStart, vSelStart + vSelLength) - Dim xVUpper As Double = IIf(vSelLength < 0, vSelStart, vSelStart + vSelLength) + Dim xVLower As Double = CDbl(IIf(vSelLength > 0, vSelStart, vSelStart + vSelLength)) + Dim xVUpper As Double = CDbl(IIf(vSelLength < 0, vSelStart, vSelStart + vSelLength)) If xVLower < 0 Then xVLower = 0 If xVUpper >= GetMaxVPosition() Then xVUpper = GetMaxVPosition() - 1 - Dim xBPM As Integer = Notes(0).Value + Dim xBPM As Integer = CInt(Notes(0).Value) Dim xI1 As Integer Dim xI2 As Integer Dim xI3 As Integer @@ -149,7 +149,7 @@ Partial Public Class MainWindow 'Below Selection For xI1 = 1 To UBound(Notes) If Notes(xI1).VPosition > xVLower Then Exit For - If Notes(xI1).ColumnIndex = niBPM Then xBPM = Notes(xI1).Value + If Notes(xI1).ColumnIndex = niBPM Then xBPM = CInt(Notes(xI1).Value) Next xValueL = xBPM xI2 = xI1 @@ -158,8 +158,8 @@ Partial Public Class MainWindow For xI1 = xI2 To UBound(Notes) If Notes(xI1).VPosition > xVUpper Then Exit For If Notes(xI1).ColumnIndex = niBPM Then - xBPM = Notes(xI1).Value - Notes(xI1).Value = Notes(xI1).Value * xRatio + xBPM = CInt(Notes(xI1).Value) + Notes(xI1).Value = CLng(Notes(xI1).Value * xRatio) End If Notes(xI1).VPosition = (Notes(xI1).VPosition - xVLower) * xRatio + xVLower Next @@ -172,8 +172,8 @@ Partial Public Class MainWindow Next 'Add BPMs - AddNote(New Note(niBPM, xVLower, xValueL * xRatio), False, True, False) - AddNote(New Note(niBPM, xVUpper + (xRatio - 1) * (xVUpper - xVLower), xValueU), False, True, False) + AddNote(New Note(niBPM, xVLower, CLng(xValueL * xRatio), False), False, True, False) + AddNote(New Note(niBPM, xVUpper + (xRatio - 1) * (xVUpper - xVLower), xValueU, False), False, True, False) Else Dim xAddBPML As Boolean = True @@ -184,25 +184,25 @@ Partial Public Class MainWindow If Notes(xI1).VPosition <= xVLower Then 'check BPM If Notes(xI1).ColumnIndex = niBPM Then - xValueL = Notes(xI1).Value - xValueU = Notes(xI1).Value - If Notes(xI1).VPosition = xVLower Then xAddBPML = False : Notes(xI1).Value = IIf(Notes(xI1).Value * xRatio <= 655359999, Notes(xI1).Value * xRatio, 655359999) + xValueL = CInt(Notes(xI1).Value) + xValueU = CInt(Notes(xI1).Value) + If Notes(xI1).VPosition = xVLower Then xAddBPML = False : Notes(xI1).Value = CLng(IIf(Notes(xI1).Value * xRatio <= 655359999, Notes(xI1).Value * xRatio, 655359999)) End If 'If longnote then adjust length If Notes(xI1).VPosition + Notes(xI1).Length > xVLower Then - Notes(xI1).Length += (IIf(xVUpper < Notes(xI1).VPosition + Notes(xI1).Length, xVUpper, Notes(xI1).VPosition + Notes(xI1).Length) - xVLower) * (xRatio - 1) + Notes(xI1).Length += (CDbl(IIf(xVUpper < Notes(xI1).VPosition + Notes(xI1).Length, xVUpper, Notes(xI1).VPosition + Notes(xI1).Length)) - xVLower) * (xRatio - 1) End If ElseIf Notes(xI1).VPosition <= xVUpper Then 'check BPM If Notes(xI1).ColumnIndex = niBPM Then - xValueU = Notes(xI1).Value - If Notes(xI1).VPosition = xVUpper Then xAddBPMU = False Else Notes(xI1).Value = IIf(Notes(xI1).Value * xRatio <= 655359999, Notes(xI1).Value * xRatio, 655359999) + xValueU = CInt(Notes(xI1).Value) + If Notes(xI1).VPosition = xVUpper Then xAddBPMU = False Else Notes(xI1).Value = CLng(IIf(Notes(xI1).Value * xRatio <= 655359999, Notes(xI1).Value * xRatio, 655359999)) End If 'Adjust Length - Notes(xI1).Length += (IIf(xVUpper < Notes(xI1).Length + Notes(xI1).VPosition, xVUpper, Notes(xI1).Length + Notes(xI1).VPosition) - Notes(xI1).VPosition) * (xRatio - 1) + Notes(xI1).Length += (CLng(IIf(xVUpper < Notes(xI1).Length + Notes(xI1).VPosition, xVUpper, Notes(xI1).Length + Notes(xI1).VPosition)) - Notes(xI1).VPosition) * (xRatio - 1) 'Adjust VPosition Notes(xI1).VPosition = (Notes(xI1).VPosition - xVLower) * xRatio + xVLower @@ -213,8 +213,8 @@ Partial Public Class MainWindow Next 'Add BPMs - If xAddBPML Then AddNote(New Note(niBPM, xVLower, xValueL * xRatio), False, True, False) - If xAddBPMU Then AddNote(New Note(niBPM, (xVUpper - xVLower) * xRatio + xVLower, xValueU), False, True, False) + If xAddBPML Then AddNote(New Note(niBPM, xVLower, CLng(xValueL * xRatio), False), False, True, False) + If xAddBPMU Then AddNote(New Note(niBPM, (xVUpper - xVLower) * xRatio + xVLower, xValueU, False), False, True, False) End If 'Check BPM Overflow @@ -243,8 +243,8 @@ Partial Public Class MainWindow ' "SA_" & vSelStart & "_" & vSelLength & "_" & vSelHalf & "_1" 'Restore note selection - xVLower = IIf(vSelLength > 0, vSelStart, vSelStart + vSelLength) - xVUpper = IIf(vSelLength < 0, vSelStart, vSelStart + vSelLength) + xVLower = CDbl(IIf(vSelLength > 0, vSelStart, vSelStart + vSelLength)) + xVUpper = CDbl(IIf(vSelLength < 0, vSelStart, vSelStart + vSelLength)) If Not NTInput Then For xI3 = 1 To UBound(Notes) Notes(xI3).Selected = Notes(xI3).VPosition >= xVLower And Notes(xI3).VPosition < xVUpper And nEnabled(Notes(xI3).ColumnIndex) @@ -269,9 +269,9 @@ EndofSub: If vSelLength = 0 Then GoTo EndofSub If dVPosition = 0 Then GoTo EndofSub - Dim xVLower As Double = IIf(vSelLength > 0, vSelStart, vSelStart + vSelLength) + Dim xVLower As Double = CDbl(IIf(vSelLength > 0, vSelStart, vSelStart + vSelLength)) Dim xVHalf As Double = vSelStart + vSelHalf - Dim xVUpper As Double = IIf(vSelLength < 0, vSelStart, vSelStart + vSelLength) + Dim xVUpper As Double = CDbl(IIf(vSelLength < 0, vSelStart, vSelStart + vSelLength)) If dVPosition + xVHalf <= xVLower Or dVPosition + xVHalf >= xVUpper Then GoTo EndofSub If xVLower < 0 Then xVLower = 0 @@ -279,7 +279,7 @@ EndofSub: If xVHalf > xVUpper Then xVHalf = xVUpper If xVHalf < xVLower Then xVHalf = xVLower - Dim xBPM As Integer = Notes(0).Value + Dim xBPM As Integer = CInt(Notes(0).Value) Dim xI1 As Integer Dim xI2 As Integer Dim xI3 As Integer @@ -305,7 +305,7 @@ EndofSub: 'Below Selection For xI1 = 1 To UBound(Notes) If Notes(xI1).VPosition > xVLower Then Exit For - If Notes(xI1).ColumnIndex = niBPM Then xBPM = Notes(xI1).Value + If Notes(xI1).ColumnIndex = niBPM Then xBPM = CInt(Notes(xI1).Value) Next xValueL = xBPM xI2 = xI1 @@ -314,8 +314,8 @@ EndofSub: For xI1 = xI2 To UBound(Notes) If Notes(xI1).VPosition > xVHalf Then Exit For If Notes(xI1).ColumnIndex = niBPM Then - xBPM = Notes(xI1).Value - Notes(xI1).Value = Notes(xI1).Value * xRatio1 + xBPM = CInt(Notes(xI1).Value) + Notes(xI1).Value = CLng(Notes(xI1).Value * xRatio1) End If Notes(xI1).VPosition = (Notes(xI1).VPosition - xVLower) * xRatio1 + xVLower Next @@ -326,8 +326,8 @@ EndofSub: For xI1 = xI2 To UBound(Notes) If Notes(xI1).VPosition > xVUpper Then Exit For If Notes(xI1).ColumnIndex = niBPM Then - xBPM = Notes(xI1).Value - Notes(xI1).Value = IIf(Notes(xI1).Value * xRatio2 <= 655359999, Notes(xI1).Value * xRatio2, 655359999) + xBPM = CInt(Notes(xI1).Value) + Notes(xI1).Value = CLng(IIf(Notes(xI1).Value * xRatio2 <= 655359999, Notes(xI1).Value * xRatio2, 655359999)) End If Notes(xI1).VPosition = (Notes(xI1).VPosition - xVHalf) * xRatio2 + xVHalf + dVPosition Next @@ -342,11 +342,11 @@ EndofSub: 'Add BPMs ' az: cond. removed; ' IIf(xVHalf <> xVLower AndAlso xValueL * xRatio1 <= 655359999, xValueL * xRatio1, 655359999) - AddNote(New Note(niBPM, xVLower, xValueL * xRatio1), False, True, False) + AddNote(New Note(niBPM, xVLower, CLng(xValueL * xRatio1), False), False, True, False) ' az: cond removed; ' IIf(xVHalf <> xVUpper AndAlso xValueM * xRatio2 <= 655359999, xValueM * xRatio2, 655359999) - AddNote(New Note(niBPM, xVHalf + dVPosition, xValueM * xRatio2), False, True, False) - AddNote(New Note(niBPM, xVUpper, xValueU), False, True, False) + AddNote(New Note(niBPM, xVHalf + dVPosition, CLng(xValueM * xRatio2), False), False, True, False) + AddNote(New Note(niBPM, xVUpper, xValueU, False), False, True, False) Else Dim xAddBPML As Boolean = True @@ -358,15 +358,15 @@ EndofSub: If Notes(xI1).VPosition <= xVLower Then 'check BPM If Notes(xI1).ColumnIndex = niBPM Then - xValueL = Notes(xI1).Value - xValueM = Notes(xI1).Value - xValueU = Notes(xI1).Value + xValueL = CInt(Notes(xI1).Value) + xValueM = CInt(Notes(xI1).Value) + xValueU = CInt(Notes(xI1).Value) If Notes(xI1).VPosition = xVLower Then xAddBPML = False ' az: condition removed; ' IIf(xVHalf <> xVLower AndAlso Notes(xI1).Value * xRatio1 <= 655359999, Notes(xI1).Value * xRatio1, 655359999) - Notes(xI1).Value = Notes(xI1).Value * xRatio1 + Notes(xI1).Value = CLng(Notes(xI1).Value * xRatio1) End If End If @@ -382,17 +382,17 @@ EndofSub: ElseIf Notes(xI1).VPosition <= xVHalf Then 'check BPM If Notes(xI1).ColumnIndex = niBPM Then - xValueM = Notes(xI1).Value - xValueU = Notes(xI1).Value + xValueM = CInt(Notes(xI1).Value) + xValueU = CInt(Notes(xI1).Value) If Notes(xI1).VPosition = xVHalf Then xAddBPMM = False ' az: cond. remove ' IIf(xVHalf <> xVUpper AndAlso Notes(xI1).Value * xRatio2 <= 655359999, Notes(xI1).Value * xRatio2, 655359999) - Notes(xI1).Value = Notes(xI1).Value * xRatio2 + Notes(xI1).Value *= CLng(xRatio2) Else ' az: cond. remove ' IIf(Notes(xI1).Value * xRatio1 <= 655359999, Notes(xI1).Value * xRatio1, 655359999) - Notes(xI1).Value = Notes(xI1).Value * xRatio1 + Notes(xI1).Value *= CLng(xRatio1) End If End If @@ -412,8 +412,8 @@ EndofSub: ElseIf Notes(xI1).VPosition <= xVUpper Then 'check BPM If Notes(xI1).ColumnIndex = niBPM Then - xValueU = Notes(xI1).Value - If Notes(xI1).VPosition = xVUpper Then xAddBPMU = False Else Notes(xI1).Value = IIf(Notes(xI1).Value * xRatio2 <= 655359999, Notes(xI1).Value * xRatio2, 655359999) + xValueU = CInt(Notes(xI1).Value) + If Notes(xI1).VPosition = xVUpper Then xAddBPMU = False Else Notes(xI1).Value = CLng(IIf(Notes(xI1).Value * xRatio2 <= 655359999, Notes(xI1).Value * xRatio2, 655359999)) End If 'Adjust Length @@ -434,10 +434,10 @@ EndofSub: 'Add BPMs ' IIf(xVHalf <> xVLower AndAlso xValueL * xRatio1 <= 655359999, xValueL * xRatio1, 655359999) - If xAddBPML Then AddNote(New Note(niBPM, xVLower, xValueL * xRatio1), False, True, False) + If xAddBPML Then AddNote(New Note(niBPM, xVLower, CLng(xValueL * xRatio1), False), False, True, False) ' IIf(xVHalf <> xVUpper AndAlso xValueM * xRatio2 <= 655359999, xValueM * xRatio2, 655359999) - If xAddBPMM Then AddNote(New Note(niBPM, xVHalf + dVPosition, xValueM * xRatio2), False, True, False) - If xAddBPMU Then AddNote(New Note(niBPM, xVUpper, xValueU), False, True, False) + If xAddBPMM Then AddNote(New Note(niBPM, xVHalf + dVPosition, CLng(xValueM * xRatio2), False), False, True, False) + If xAddBPMU Then AddNote(New Note(niBPM, xVUpper, xValueU, False), False, True, False) End If 'Check BPM Overflow @@ -460,8 +460,8 @@ EndofSub: 'Restore note selection - xVLower = IIf(vSelLength > 0, vSelStart, vSelStart + vSelLength) - xVUpper = IIf(vSelLength < 0, vSelStart, vSelStart + vSelLength) + xVLower = CDbl(IIf(vSelLength > 0, vSelStart, vSelStart + vSelLength)) + xVUpper = CDbl(IIf(vSelLength < 0, vSelStart, vSelStart + vSelLength)) If Not NTInput Then For xI3 = 1 To UBound(Notes) Notes(xI3).Selected = Notes(xI3).VPosition >= xVLower And Notes(xI3).VPosition < xVUpper And nEnabled(Notes(xI3).ColumnIndex) @@ -485,9 +485,9 @@ EndofSub: If vSelLength = 0 Then Return - Dim xVLower As Double = IIf(vSelLength > 0, vSelStart, vSelStart + vSelLength) + Dim xVLower As Double = CDbl(IIf(vSelLength > 0, vSelStart, vSelStart + vSelLength)) Dim xVHalf As Double = vSelStart + vSelHalf - Dim xVUpper As Double = IIf(vSelLength < 0, vSelStart, vSelStart + vSelLength) + Dim xVUpper As Double = CDbl(IIf(vSelLength < 0, vSelStart, vSelStart + vSelLength)) If xVHalf = xVUpper Then xVHalf = xVLower 'If dVPosition + xVHalf <= xVLower Or dVPosition + xVHalf >= xVUpper Then GoTo EndofSub @@ -588,7 +588,7 @@ EndofSub: Dim xTempEnd As Double For xI1 = 1 To UBound(Notes) - If Notes(xI1).Length Then xTempEnd = Notes(xI1).VPosition + Notes(xI1).Length + If Notes(xI1).Length > 0 Then xTempEnd = Notes(xI1).VPosition + Notes(xI1).Length If Notes(xI1).VPosition > xVLower And Notes(xI1).VPosition < xVUpper Then xTempTime = 0 @@ -607,7 +607,7 @@ EndofSub: End If End If - If Notes(xI1).Length Then + If Notes(xI1).Length > 0 Then If xTempEnd > xVLower And xTempEnd < xVUpper Then xTempTime = 0 @@ -652,7 +652,7 @@ EndOfAdjustment: With Notes(UBound(Notes) - 1) .ColumnIndex = niBPM .VPosition = xVHalf - .Value = xResult + .Value = CLng(xResult) End With With Notes(UBound(Notes)) .ColumnIndex = niBPM @@ -678,8 +678,8 @@ EndOfAdjustment: Me.RedoAddNoteAll(False, xUndo, xRedo) 'Restore note selection - xVLower = IIf(vSelLength > 0, vSelStart, vSelStart + vSelLength) - xVUpper = IIf(vSelLength < 0, vSelStart, vSelStart + vSelLength) + xVLower = CDbl(IIf(vSelLength > 0, vSelStart, vSelStart + vSelLength)) + xVUpper = CDbl(IIf(vSelLength < 0, vSelStart, vSelStart + vSelLength)) If Not NTInput Then For xI3 = 1 To UBound(Notes) Notes(xI3).Selected = Notes(xI3).VPosition >= xVLower And Notes(xI3).VPosition < xVUpper And nEnabled(Notes(xI3).ColumnIndex) @@ -701,8 +701,8 @@ EndOfAdjustment: If vSelLength = 0 Then Return - Dim xVLower As Double = IIf(vSelLength > 0, vSelStart, vSelStart + vSelLength) - Dim xVUpper As Double = IIf(vSelLength < 0, vSelStart, vSelStart + vSelLength) + Dim xVLower As Double = CDbl(IIf(vSelLength > 0, vSelStart, vSelStart + vSelLength)) + Dim xVUpper As Double = CDbl(IIf(vSelLength < 0, vSelStart, vSelStart + vSelLength)) Dim notesInRange = From note In Notes Where note.VPosition > xVLower And note.VPosition <= xVUpper @@ -727,7 +727,7 @@ EndOfAdjustment: With Notes(UBound(Notes)) .ColumnIndex = niSTOP .VPosition = xVLower - .Value = vSelLength * 10000 + .Value = CLng(vSelLength * 10000) End With Me.RedoAddNoteAll(False, xUndo, xRedo) @@ -741,7 +741,7 @@ EndOfAdjustment: Dim xRedo As UndoRedo.LinkedURCmd = New UndoRedo.Void Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo - Dim xMeasureLengthBefore = MeasureLength.Clone + Dim xMeasureLengthBefore() As Double = CType(MeasureLength.Clone(), Double()) ' TODO: Incorporate MeasureAtDisplacement If vSelLength = 0 Then @@ -755,8 +755,8 @@ EndOfAdjustment: End If Next Else - Dim xVLower As Double = IIf(vSelLength > 0, vSelStart, vSelStart + vSelLength) - Dim xVUpper As Double = IIf(vSelLength < 0, vSelStart, vSelStart + vSelLength) + Dim xVLower As Double = CDbl(IIf(vSelLength > 0, vSelStart, vSelStart + vSelLength)) + Dim xVUpper As Double = CDbl(IIf(vSelLength < 0, vSelStart, vSelStart + vSelLength)) Dim xIML As Integer = -1 Dim xIMU As Integer = -1 @@ -784,11 +784,11 @@ EndOfAdjustment: End If EndOfSub: - RedoChangeMeasure(xMeasureLengthBefore, MeasureLength.Clone, xUndo, xRedo) + RedoChangeMeasure(xMeasureLengthBefore, CType(MeasureLength.Clone(), Double()), xUndo, xRedo) AddUndo(xUndo, xBaseRedo.Next) End Sub - Private Sub AddMeasureLine(ByVal vPos As Integer) + Private Sub AddMeasureLine(ByVal vPos As Double) For xIM = 1 To UBound(MeasureLength) If vPos < MeasureBottom(xIM) Then For xIM2 = UBound(MeasureLength) To xIM + 1 Step -1 @@ -803,7 +803,7 @@ EndOfSub: For xILB = 0 To 999 Dim a As Double = MeasureLength(xILB) / 192.0R Dim xxD = GetDenominator(a) - LBeat.Items(xILB) = Add3Zeros(xILB) & ": " & a & IIf(xxD > 10000, "", " ( " & CLng(a * xxD) & " / " & xxD & " ) ") + LBeat.Items(xILB) = Add3Zeros(xILB) & ": " & a & IIf(xxD > 10000, "", " ( " & CLng(a * xxD) & " / " & xxD & " ) ").ToString() Next UpdateMeasureBottom() @@ -819,31 +819,31 @@ EndOfSub: For xILB = 0 To 999 Dim a As Double = MeasureLength(xILB) / 192.0R Dim xxD = GetDenominator(a) - LBeat.Items(xILB) = Add3Zeros(xILB) & ": " & a & IIf(xxD > 10000, "", " ( " & CLng(a * xxD) & " / " & xxD & " ) ") + LBeat.Items(xILB) = Add3Zeros(xILB) & ": " & a & IIf(xxD > 10000, "", " ( " & CLng(a * xxD) & " / " & xxD & " ) ").ToString() Next UpdateMeasureBottom() End Sub Private Sub InsertOrRemoveSpaceMeasure(ByRef xUndo As UndoRedo.LinkedURCmd, ByRef xRedo As UndoRedo.LinkedURCmd) - Dim xMeasureLengthBefore = MeasureLength.Clone() + Dim xMeasureLengthBefore() As Double = CType(MeasureLength.Clone(), Double()) - Dim xVLower As Double = IIf(vSelLength > 0, vSelStart, vSelStart + vSelLength) + Dim xVLower As Double = CDbl(IIf(vSelLength > 0, vSelStart, vSelStart + vSelLength)) Dim xIM As Integer = MeasureAtDisplacement(xVLower) MeasureLength(xIM) = Math.Max((MeasureLength(xIM) + vSelLength), 1) Dim a As Double = MeasureLength(xIM) / 192.0R Dim xxD As Long = GetDenominator(a) - LBeat.Items(xIM) = Add3Zeros(xIM) & ": " & a & IIf(xxD > 10000, "", " ( " & CLng(a * xxD) & " / " & xxD & " ) ") + LBeat.Items(xIM) = Add3Zeros(xIM) & ": " & a & IIf(xxD > 10000, "", " ( " & CLng(a * xxD) & " / " & xxD & " ) ").ToString() - RedoChangeMeasure(xMeasureLengthBefore, MeasureLength.Clone, xUndo, xRedo) + RedoChangeMeasure(xMeasureLengthBefore, CType(MeasureLength.Clone(), Double()), xUndo, xRedo) UpdateMeasureBottom() End Sub Private Sub InsertOrRemoveSpaceNote(ByRef xUndo As UndoRedo.LinkedURCmd, ByRef xRedo As UndoRedo.LinkedURCmd) - Dim xVLower As Double = IIf(vSelLength > 0, vSelStart, vSelStart + vSelLength) - Dim xVUpper As Double = IIf(vSelLength < 0, vSelStart, vSelStart + vSelLength) + Dim xVLower As Double = CDbl(IIf(vSelLength > 0, vSelStart, vSelStart + vSelLength)) + Dim xVUpper As Double = CDbl(IIf(vSelLength < 0, vSelStart, vSelStart + vSelLength)) ' Change to NTInput because easier to code If Not NTInput Then diff --git a/iBMSC/UndoRedo.vb b/iBMSC/UndoRedo.vb index 05346d4d4..611a813a8 100644 --- a/iBMSC/UndoRedo.vb +++ b/iBMSC/UndoRedo.vb @@ -411,7 +411,7 @@ Public Class UndoRedo xSta(0), xSta(1), xSta(2), xSta(3), xSta(4), xSta(5), xSta(6), xSta(7), xLen(0), xLen(1), xLen(2), xLen(3), xLen(4), xLen(5), xLen(6), xLen(7), xHalf(0), xHalf(1), xHalf(2), xHalf(3), xHalf(4), xHalf(5), xHalf(6), xHalf(7), - IIf(Selected, trueByte, falseByte)} + CType(IIf(Selected, trueByte, falseByte), Byte)} End Function Public Sub New(ByVal b() As Byte) @@ -442,8 +442,8 @@ Public Class UndoRedo Public Overrides Function toBytes() As Byte() toBytes = New Byte() {opNT, - IIf(BecomeNT, trueByte, falseByte), - IIf(AutoConvert, trueByte, falseByte)} + CType(IIf(BecomeNT, trueByte, falseByte), Byte), + CType(IIf(AutoConvert, trueByte, falseByte), Byte)} End Function Public Sub New(ByVal b() As Byte) @@ -469,7 +469,7 @@ Public Class UndoRedo End Sub Public Overrides Function toBytes() As Byte() toBytes = New Byte() {opWavAutoincFlag, - IIf(Checked, trueByte, falseByte)} + CType(IIf(Checked, trueByte, falseByte), Byte)} End Function Public Sub New(ByVal b() As Byte) diff --git a/iBMSC/Utilities.vb b/iBMSC/Utilities.vb index 4b5dbe46b..f787332af 100644 --- a/iBMSC/Utilities.vb +++ b/iBMSC/Utilities.vb @@ -33,13 +33,17 @@ Namespace Editor Public Function C10to36(ByVal xStart As Long) As String If xStart < 1 Then xStart = 1 If xStart > 1295 Then xStart = 1295 - Return C10to36S(xStart \ 36) & C10to36S(xStart Mod 36) + Return C10to36S(CInt(xStart \ 36)) & C10to36S(CInt(xStart Mod 36)) End Function Public Function C36to10(ByVal xStart As String) As Integer xStart = Mid("00" & xStart, Len(xStart) + 1) Return C36to10S(xStart.Chars(0)) * 36 + C36to10S(xStart.Chars(1)) End Function + Public Function C36to10(ByVal xStart As Integer) As Integer + Return C36to10(xStart.ToString()) + End Function + Public Function EncodingToString(TextEncoding As System.Text.Encoding) As String If TextEncoding Is System.Text.Encoding.Default Then Return "System Ansi" If TextEncoding Is System.Text.Encoding.Unicode Then Return "Little Endian UTF16" @@ -64,10 +68,10 @@ Namespace Editor Return Color.FromArgb(0) Else Return Color.FromArgb( - cStart.A * iTransparency, - cStart.R * (100 - Math.Abs(iPercent)) * 0.01 + Math.Abs(CInt(iPercent >= 0) * iPercent) * 2.55, - cStart.G * (100 - Math.Abs(iPercent)) * 0.01 + Math.Abs(CInt(iPercent >= 0) * iPercent) * 2.55, - cStart.B * (100 - Math.Abs(iPercent)) * 0.01 + Math.Abs(CInt(iPercent >= 0) * iPercent) * 2.55) + CInt(cStart.A * iTransparency), + CInt(cStart.R * (100 - Math.Abs(iPercent)) * 0.01 + Math.Abs(CInt(iPercent >= 0) * iPercent) * 2.55), + CInt(cStart.G * (100 - Math.Abs(iPercent)) * 0.01 + Math.Abs(CInt(iPercent >= 0) * iPercent) * 2.55), + CInt(cStart.B * (100 - Math.Abs(iPercent)) * 0.01 + Math.Abs(CInt(iPercent >= 0) * iPercent) * 2.55)) End If End Function @@ -84,7 +88,7 @@ Namespace Editor Public Function RandomFileName(ByVal extWithDot As String) As String Do Randomize() - RandomFileName = Now.Ticks & Mid(Rnd(), 3) & extWithDot + RandomFileName = Now.Ticks & Mid(Rnd().ToString(), 3) & extWithDot Loop While File.Exists(RandomFileName) Or Directory.Exists(RandomFileName) End Function @@ -120,7 +124,7 @@ Namespace Editor xG = (xG * xxS * (1 - Math.Abs(xxB)) + xxB + 1) * 255 / 2 xB = (xB * xxS * (1 - Math.Abs(xxB)) + xxB + 1) * 255 / 2 - Return Color.FromArgb(xA, xR, xG, xB) + Return Color.FromArgb(xA, CInt(xR), CInt(xG), CInt(xB)) End Function Public Function FontToString(ByVal xFont As Font) As String @@ -139,7 +143,7 @@ Namespace Editor Public Function StringToFont(ByVal xStr As String, ByVal xDefault As Font) As Font Dim xLine() As String = Split(xStr, ",") If UBound(xLine) = 2 Then - Dim xFontStyle As System.Drawing.FontStyle = Val(xLine(2)) + Dim xFontStyle As System.Drawing.FontStyle = CType(xLine(2), FontStyle) Return New Font(xLine(0), CSng(Val(xLine(1))), xFontStyle, GraphicsUnit.Pixel) Else Return xDefault @@ -149,7 +153,7 @@ Namespace Editor Public Function ArrayToString(ByVal xInt() As Integer) As String Dim xStr As String = "" For xI1 As Integer = 0 To UBound(xInt) - xStr &= xInt(xI1).ToString & IIf(xI1 = UBound(xInt), "", ",") + xStr &= xInt(xI1).ToString() & IIf(xI1 = UBound(xInt), "", ",").ToString() Next Return xStr End Function @@ -157,7 +161,7 @@ Namespace Editor Public Function ArrayToString(ByVal xBool() As Boolean) As String Dim xStr As String = "" For xI1 As Integer = 0 To UBound(xBool) - xStr &= CInt(xBool(xI1)).ToString & IIf(xI1 = UBound(xBool), "", ",") + xStr &= CInt(xBool(xI1)).ToString() & IIf(xI1 = UBound(xBool), "", ",").ToString() Next Return xStr End Function @@ -165,7 +169,7 @@ Namespace Editor Public Function ArrayToString(ByVal xColor() As Color) As String Dim xStr As String = "" For xI1 As Integer = 0 To UBound(xColor) - xStr &= xColor(xI1).ToArgb.ToString & IIf(xI1 = UBound(xColor), "", ",") + xStr &= xColor(xI1).ToArgb.ToString() & IIf(xI1 = UBound(xColor), "", ",").ToString() Next Return xStr End Function @@ -174,7 +178,7 @@ Namespace Editor Dim xL() As String = Split(xStr, ",") Dim xInt(UBound(xL)) As Integer For xI1 As Integer = 0 To UBound(xInt) - xInt(xI1) = Val(xL(xI1)) + xInt(xI1) = CInt(xL(xI1)) Next Return xInt End Function @@ -194,7 +198,7 @@ Namespace Editor Dim m10 As Long = 0 Dim m11 As Long = 1 Dim x As Double = a - Dim ai As Long = Int(x) + Dim ai As Long = CLng(Int(x)) Do While m10 * ai + m11 <= maxDenom Dim t As Long @@ -209,7 +213,7 @@ Namespace Editor x = 1 / (x - ai) If x > CDbl(&H7FFFFFFFFFFFFFFF) Then Exit Do - ai = Int(x) + ai = CLng(Int(x)) Loop Return m10 diff --git a/iBMSC/Waveform.vb b/iBMSC/Waveform.vb index 301e5a62c..bd41284c0 100644 --- a/iBMSC/Waveform.vb +++ b/iBMSC/Waveform.vb @@ -20,7 +20,7 @@ Partial Public Class MainWindow Dim xDWAV As New OpenFileDialog xDWAV.Filter = "Wave files (*.wav, *.ogg)" & "|*.wav;*.ogg" xDWAV.DefaultExt = "wav" - xDWAV.InitialDirectory = IIf(ExcludeFileName(FileName) = "", InitPath, ExcludeFileName(FileName)) + xDWAV.InitialDirectory = CStr(IIf(ExcludeFileName(FileName) = "", InitPath, ExcludeFileName(FileName))) If xDWAV.ShowDialog = Windows.Forms.DialogResult.Cancel Then Exit Sub InitPath = ExcludeFileName(xDWAV.FileName) @@ -49,22 +49,22 @@ Partial Public Class MainWindow RefreshPanelAll() End Sub - Private Function LoadWaveForm(ByVal filepath As String) + Private Function LoadWaveForm(ByVal filepath As String) As WavSample filepath = Audio.CheckFilename(filepath) If Not System.IO.File.Exists(filepath) Then Return New WavSample({}, {}, 0, 0) Dim src = CSCore.Codecs.CodecFactory.Instance.GetCodec(filepath) src.ToStereo() - Dim samples(src.Length) As Single - src.ToSampleSource().Read(samples, 0, src.Length) + Dim samples(CInt(src.Length)) As Single + src.ToSampleSource().Read(samples, 0, CInt(src.Length)) Dim flen = (src.Length - 1) / src.WaveFormat.Channels ' Copy interleaved data - ReDim wWavL(flen + 1) - ReDim wWavR(flen + 1) - For i As Integer = 0 To flen + ReDim wWavL(CInt(flen) + 1) + ReDim wWavR(CInt(flen) + 1) + For i As Integer = 0 To CInt(flen) If 2 * i < src.Length Then wWavL(i) = samples(2 * i) End If @@ -87,9 +87,9 @@ Partial Public Class MainWindow End Function - Private Function LoadDuration(ByVal filepath As String) + Private Function LoadDuration(ByVal filepath As String) As WavSample filepath = Audio.CheckFilename(filepath) - If Not System.IO.File.Exists(filepath) Then Return 0 + If Not System.IO.File.Exists(filepath) Then Return New WavSample({}, {}, 0, 0) Dim src = CSCore.Codecs.CodecFactory.Instance.GetCodec(filepath) diff --git a/iBMSC/XMLUtil.vb b/iBMSC/XMLUtil.vb index 44f725df7..a80027ecc 100644 --- a/iBMSC/XMLUtil.vb +++ b/iBMSC/XMLUtil.vb @@ -1,7 +1,7 @@ Module XMLUtil Public Sub XMLWriteValue(ByVal w As XmlTextWriter, ByVal local As String, ByVal val As String) w.WriteStartElement(local) - w.WriteAttributeString("Value", Editor.WriteDecimalWithDot(val)) + w.WriteAttributeString("Value", Editor.WriteDecimalWithDot(CDbl(val))) w.WriteEndElement() End Sub @@ -22,7 +22,7 @@ Static nfi As New System.Globalization.NumberFormatInfo() nfi.NumberDecimalSeparator = "." - v = Double.Parse(s, nfi) + v = Single.Parse(s, nfi) End Sub Public Sub XMLLoadAttribute(ByVal s As String, ByRef v As Double) If s.Length = 0 Then Exit Sub diff --git a/iBMSC/iBMSC.vbproj b/iBMSC/iBMSC.vbproj index 7fb5a0faa..d6705e1e7 100644 --- a/iBMSC/iBMSC.vbproj +++ b/iBMSC/iBMSC.vbproj @@ -38,8 +38,10 @@ bin\Debug\ - 41999,42016,42017,42018,42019,42020,42021,42022,42032,42036 + + false + 41999,42016,42017,42018,42019,42020,42021,42022,42032,42036 AnyCPU @@ -50,8 +52,10 @@ bin\pBMSC\ - 41999,42016,42017,42018,42019,42020,42021,42022,42032,42036 + + false + 41999,42016,42017,42018,42019,42020,42021,42022,42032,42036 On @@ -60,7 +64,7 @@ Binary - Off + On On @@ -77,9 +81,11 @@ true - 41999,42016,42017,42018,42019,42020,42021,42022,42032,42036 + + pdbonly AnyCPU + 41999,42016,42017,42018,42019,42020,42021,42022,42032,42036 @@ -167,10 +173,10 @@ Form - - diagFind.vb + + dgFind.vb - + Form @@ -299,8 +305,8 @@ dgStatistics.vb - - diagFind.vb + + dgFind.vb fLoadFileProgress.vb From 54e91997d31935cd85cda0dce27eed9091841c97 Mon Sep 17 00:00:00 2001 From: psyk2642 <60137590+psyk2642@users.noreply.github.com> Date: Fri, 22 Apr 2022 21:25:37 +0800 Subject: [PATCH 123/257] Code Cleanup + Changing Long to Integer for HS and VS --- iBMSC/Audio.vb | 4 +-- iBMSC/Dialogs/ColorPicker.vb | 2 -- iBMSC/Dialogs/dgFind.vb | 2 -- iBMSC/Dialogs/dgImportSM.vb | 2 -- iBMSC/Dialogs/dgStatistics.vb | 2 -- iBMSC/Dialogs/dgStatisticsLegacy.vb | 2 -- iBMSC/Dialogs/fLoadFileProgress.vb | 2 -- iBMSC/MainWindow.vb | 17 ++-------- iBMSC/My Project/AssemblyInfo.vb | 13 +++----- iBMSC/Option Windows/OpExpand.vb | 4 +-- iBMSC/Option Windows/OpGeneral.vb | 2 -- iBMSC/Option Windows/OpKeybinding.vb | 1 - iBMSC/Option Windows/OpPlayer.vb | 2 -- iBMSC/Option Windows/OpVisual.vb | 2 -- iBMSC/Option Windows/OpVisualOverride.vb | 4 +-- iBMSC/PanelDraw.vb | 14 ++++----- iBMSC/PanelEvents.vb | 40 ++++++++++++------------ iBMSC/UndoRedo.vb | 2 +- iBMSC/VisualSettings.vb | 4 +-- iBMSC/Waveform.vb | 5 +-- 20 files changed, 43 insertions(+), 83 deletions(-) diff --git a/iBMSC/Audio.vb b/iBMSC/Audio.vb index 6b06c907b..f94651bad 100644 --- a/iBMSC/Audio.vb +++ b/iBMSC/Audio.vb @@ -1,7 +1,7 @@ -Imports NVorbis -Imports CSCore +Imports CSCore Imports CSCore.Codecs Imports CSCore.SoundOut +Imports NVorbis Module Audio Dim Output As WasapiOut diff --git a/iBMSC/Dialogs/ColorPicker.vb b/iBMSC/Dialogs/ColorPicker.vb index 26cdcdcae..084fc4a5a 100644 --- a/iBMSC/Dialogs/ColorPicker.vb +++ b/iBMSC/Dialogs/ColorPicker.vb @@ -1,5 +1,3 @@ -Imports System.Windows.Forms - Public Class ColorPicker Public OrigColor As Color = Color.Black Public NewColor As Color = Color.Black diff --git a/iBMSC/Dialogs/dgFind.vb b/iBMSC/Dialogs/dgFind.vb index 996f6e0b6..b70acb60d 100644 --- a/iBMSC/Dialogs/dgFind.vb +++ b/iBMSC/Dialogs/dgFind.vb @@ -1,5 +1,3 @@ -Imports System.Windows.Forms - Public Class dgFind Dim bCol As Integer = 46 Dim msg1 As String = "Error" diff --git a/iBMSC/Dialogs/dgImportSM.vb b/iBMSC/Dialogs/dgImportSM.vb index 3a5b1b9b2..57b2aec07 100644 --- a/iBMSC/Dialogs/dgImportSM.vb +++ b/iBMSC/Dialogs/dgImportSM.vb @@ -1,5 +1,3 @@ -Imports System.Windows.Forms - Public Class dgImportSM Public iResult As Integer = -1 diff --git a/iBMSC/Dialogs/dgStatistics.vb b/iBMSC/Dialogs/dgStatistics.vb index 27cd867a6..6cec7ab6f 100644 --- a/iBMSC/Dialogs/dgStatistics.vb +++ b/iBMSC/Dialogs/dgStatistics.vb @@ -1,5 +1,3 @@ -Imports System.Windows.Forms - Public Class dgStatistics Private Sub OK_Button_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OK_Button.Click diff --git a/iBMSC/Dialogs/dgStatisticsLegacy.vb b/iBMSC/Dialogs/dgStatisticsLegacy.vb index a7825815c..517bd3953 100644 --- a/iBMSC/Dialogs/dgStatisticsLegacy.vb +++ b/iBMSC/Dialogs/dgStatisticsLegacy.vb @@ -1,5 +1,3 @@ -Imports System.Windows.Forms - Public Class dgStatisticsLegacy Private Sub OK_Button_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OK_Button.Click diff --git a/iBMSC/Dialogs/fLoadFileProgress.vb b/iBMSC/Dialogs/fLoadFileProgress.vb index cf6056de0..32ce9b4d3 100644 --- a/iBMSC/Dialogs/fLoadFileProgress.vb +++ b/iBMSC/Dialogs/fLoadFileProgress.vb @@ -1,5 +1,3 @@ -Imports System.Windows.Forms - Public Class fLoadFileProgress Dim xPath(-1) As String Dim CancelPressed As Boolean = False diff --git a/iBMSC/MainWindow.vb b/iBMSC/MainWindow.vb index eff3f4cb2..c7a9cb4d2 100644 --- a/iBMSC/MainWindow.vb +++ b/iBMSC/MainWindow.vb @@ -414,7 +414,7 @@ Public Class MainWindow ''' HS.Value - Private Function HorizontalPositiontoDisplay(ByVal xHPosition As Integer, ByVal xHSVal As Long) As Integer + Private Function HorizontalPositiontoDisplay(ByVal xHPosition As Integer, ByVal xHSVal As Integer) As Integer Return CInt(xHPosition * gxWidth - xHSVal * gxWidth) End Function @@ -426,7 +426,7 @@ Public Class MainWindow ''' Height of the panel. (DisplayRectangle, but not ClipRectangle) - Private Function NoteRowToPanelHeight(ByVal xVPosition As Double, ByVal xVSVal As Long, ByVal xTHeight As Integer) As Integer + Private Function NoteRowToPanelHeight(ByVal xVPosition As Double, ByVal xVSVal As Integer, ByVal xTHeight As Integer) As Integer Return xTHeight - CInt((xVPosition + xVSVal) * gxHeight) - 1 End Function @@ -706,7 +706,7 @@ Public Class MainWindow Notes(xI1).Selected = False Next - Dim xVS As Long = CLng(PanelVScroll(PanelFocus)) + Dim xVS As Integer = CInt(PanelVScroll(PanelFocus)) Dim xTempVP As Double Dim xKbu() As Note = Notes @@ -1346,17 +1346,6 @@ Public Class MainWindow Private Sub UpdatePairing() Dim i As Integer, j As Integer - Dim xniArray0() As Integer - Select Case gXKeyMode - Case "SP" - xniArray0 = {niA1, niA2, niA3, niA4, niA5, niA6, niA7, niA8} - Case "PMS" - xniArray0 = {niA2, niA3, niA4, niA5, niA6, niD2, niD3, niD4, niD5} - Case "DP" - xniArray0 = {niA1, niA2, niA3, niA4, niA5, niA6, niA7, niA8, niD1, niD2, niD3, niD4, niD5, niD6, niD7, niD8} - Case Else - xniArray0 = {niA1, niA2, niA3, niA4, niA5, niA6, niA7, niA8} - End Select If NTInput Then For i = 0 To UBound(Notes) diff --git a/iBMSC/My Project/AssemblyInfo.vb b/iBMSC/My Project/AssemblyInfo.vb index 2f17337a2..69843b035 100644 --- a/iBMSC/My Project/AssemblyInfo.vb +++ b/iBMSC/My Project/AssemblyInfo.vb @@ -1,8 +1,5 @@ -Imports System.Resources - -Imports System -Imports System.Reflection -Imports System.Runtime.InteropServices +Imports System.Reflection +Imports System.Resources ' General Information about an assembly is controlled through the following ' set of attributes. Change these attribute values to modify the information @@ -15,9 +12,9 @@ Imports System.Runtime.InteropServices - + - + 'The following GUID is for the ID of the typelib if this project is exposed to COM @@ -36,4 +33,4 @@ Imports System.Runtime.InteropServices - \ No newline at end of file + \ No newline at end of file diff --git a/iBMSC/Option Windows/OpExpand.vb b/iBMSC/Option Windows/OpExpand.vb index 1a5d41f71..5341d29fd 100644 --- a/iBMSC/Option Windows/OpExpand.vb +++ b/iBMSC/Option Windows/OpExpand.vb @@ -1,6 +1,4 @@ -Imports System.Windows.Forms - -Public Class OpExpand +Public Class OpExpand Dim TExpansionTextSplit() As String = Split(MainWindow.TExpansion.Text, vbCrLf, , CompareMethod.Text) Dim CurrSelection As Integer = -1 diff --git a/iBMSC/Option Windows/OpGeneral.vb b/iBMSC/Option Windows/OpGeneral.vb index 36b24dea0..28de8d24d 100644 --- a/iBMSC/Option Windows/OpGeneral.vb +++ b/iBMSC/Option Windows/OpGeneral.vb @@ -1,5 +1,3 @@ -Imports System.Windows.Forms - Public Class OpGeneral Public zWheel As Integer Public zPgUpDn As Integer diff --git a/iBMSC/Option Windows/OpKeybinding.vb b/iBMSC/Option Windows/OpKeybinding.vb index 7bba2c660..11226ca87 100644 --- a/iBMSC/Option Windows/OpKeybinding.vb +++ b/iBMSC/Option Windows/OpKeybinding.vb @@ -1,5 +1,4 @@ Imports System.Linq -Imports System.Windows.Forms Public Class OpKeybinding Public Keybinds() As MainWindow.Keybinding diff --git a/iBMSC/Option Windows/OpPlayer.vb b/iBMSC/Option Windows/OpPlayer.vb index 00f70dd21..699182d9a 100644 --- a/iBMSC/Option Windows/OpPlayer.vb +++ b/iBMSC/Option Windows/OpPlayer.vb @@ -1,5 +1,3 @@ -Imports System.Windows.Forms - Public Class OpPlayer Dim pArg() As MainWindow.PlayerArguments 'Dim ImplicitChange As Boolean = False diff --git a/iBMSC/Option Windows/OpVisual.vb b/iBMSC/Option Windows/OpVisual.vb index 9dcc12eff..c1899a4d3 100644 --- a/iBMSC/Option Windows/OpVisual.vb +++ b/iBMSC/Option Windows/OpVisual.vb @@ -1,5 +1,3 @@ -Imports System.Runtime.CompilerServices -Imports System.Windows.Forms Imports iBMSC.Editor Public Class OpVisual diff --git a/iBMSC/Option Windows/OpVisualOverride.vb b/iBMSC/Option Windows/OpVisualOverride.vb index 2fc00152d..0443675bd 100644 --- a/iBMSC/Option Windows/OpVisualOverride.vb +++ b/iBMSC/Option Windows/OpVisualOverride.vb @@ -1,6 +1,4 @@ -Imports System.Windows.Forms - -Public Class OpVisualOverride +Public Class OpVisualOverride Public COverrides() As MainWindow.ColorOverride Dim F As String Public Sub New(ByVal xColorOverrides() As MainWindow.ColorOverride) diff --git a/iBMSC/PanelDraw.vb b/iBMSC/PanelDraw.vb index 2573bffbf..2caab8183 100644 --- a/iBMSC/PanelDraw.vb +++ b/iBMSC/PanelDraw.vb @@ -38,8 +38,8 @@ Partial Public Class MainWindow Dim xTHeight As Integer = spMain(xIndex).Height Dim xTWidth As Integer = spMain(xIndex).Width - Dim xPanelHScroll As Integer = PanelHScroll(xIndex) - Dim xPanelDisplacement As Integer = CInt(PanelVScroll(xIndex)) + Dim xPanelHScroll As Integer = PanelHScroll(xIndex) ' Stick with integer instead of long since you will never scroll there + Dim xPanelDisplacement As Integer = CInt(PanelVScroll(xIndex)) ' Stick with integer instead of long since you will never scroll there Dim xVSR As Integer = CInt(-PanelVScroll(xIndex)) Dim xVSu As Integer = CInt(IIf(xVSR + xTHeight / gxHeight > GetMaxVPosition(), GetMaxVPosition(), xVSR + xTHeight / gxHeight)) @@ -305,7 +305,7 @@ Partial Public Class MainWindow Loop End Sub - Private Function IsNoteVisible(note As Note, xTHeight As Integer, xVS As Long) As Boolean + Private Function IsNoteVisible(note As Note, xTHeight As Integer, xVS As Integer) As Boolean Dim xUpperBorder As Single = Math.Abs(xVS) + xTHeight / gxHeight Dim xLowerBorder As Single = Math.Abs(xVS) - vo.kHeight / gxHeight @@ -321,7 +321,7 @@ Partial Public Class MainWindow Return NoteInside OrElse IntersectsNT OrElse IntersectsNT End Function - Private Function IsNoteVisible(noteindex As Integer, xTHeight As Integer, xVS As Long) As Boolean + Private Function IsNoteVisible(noteindex As Integer, xTHeight As Integer, xVS As Integer) As Boolean Return IsNoteVisible(Notes(noteindex), xTHeight, xVS) End Function @@ -573,7 +573,7 @@ Partial Public Class MainWindow ''' VS.Value. ''' Display height of the panel. (not ClipRectangle.Height) - Private Sub DrawNote(ByVal sNote As Note, ByVal e As BufferedGraphics, ByVal xHS As Long, ByVal xVS As Long, ByVal xHeight As Integer, Optional CO() As ColorOverride = Nothing) ', Optional ByVal CheckError As Boolean = True) ', Optional ByVal ConnectToIndex As Long = 0) + Private Sub DrawNote(ByVal sNote As Note, ByVal e As BufferedGraphics, ByVal xHS As Integer, ByVal xVS As Integer, ByVal xHeight As Integer, Optional CO() As ColorOverride = Nothing) ', Optional ByVal CheckError As Boolean = True) ', Optional ByVal ConnectToIndex As Long = 0) If Not nEnabled(sNote.ColumnIndex) Then Exit Sub Dim xAlpha As Single = 1.0F If sNote.Hidden Then xAlpha = vo.kOpacity @@ -684,7 +684,7 @@ Partial Public Class MainWindow End Sub - Private Sub DrawPairedLNBody(sNote As Note, e As BufferedGraphics, xHS As Long, xVS As Long, xHeight As Integer, xAlpha As Single) + Private Sub DrawPairedLNBody(sNote As Note, e As BufferedGraphics, xHS As Integer, xVS As Integer, xHeight As Integer, xAlpha As Single) Dim xnLeft = nLeft(sNote.ColumnIndex) Dim xColumnWidth = GetColumnWidth(sNote.ColumnIndex) Dim xPen2 As New Pen(GetColumn(sNote.ColumnIndex).getLongBright(xAlpha)) @@ -718,7 +718,7 @@ Partial Public Class MainWindow ''' VS.Value. ''' Display height of the panel. (not ClipRectangle.Height) - Private Sub DrawNoteNT(ByVal sNote As Note, ByVal e As BufferedGraphics, ByVal xHS As Long, ByVal xVS As Long, ByVal xHeight As Integer, Optional CO() As ColorOverride = Nothing) ', Optional ByVal CheckError As Boolean = True) + Private Sub DrawNoteNT(ByVal sNote As Note, ByVal e As BufferedGraphics, ByVal xHS As Integer, ByVal xVS As Integer, ByVal xHeight As Integer, Optional CO() As ColorOverride = Nothing) ', Optional ByVal CheckError As Boolean = True) If Not nEnabled(sNote.ColumnIndex) Then Exit Sub Dim xAlpha As Single = 1.0F If sNote.Hidden Then xAlpha = vo.kOpacity diff --git a/iBMSC/PanelEvents.vb b/iBMSC/PanelEvents.vb index ce4156b2c..aaf75eb82 100644 --- a/iBMSC/PanelEvents.vb +++ b/iBMSC/PanelEvents.vb @@ -170,11 +170,11 @@ Partial Public Class MainWindow With My.Computer.Keyboard Dim Modif As Integer = CInt(IIf(.ShiftKeyDown, 3, 2)) If Not .CtrlKeyDown And Not .AltKeyDown Then ' Divide CGDivide - If CLng(CGDivide.Value) / Modif >= CGDivide.Minimum Then CGDivide.Value = CGDivide.Value / Modif + If CInt(CGDivide.Value) / Modif >= CGDivide.Minimum Then CGDivide.Value = CGDivide.Value / Modif ElseIf .CtrlKeyDown And Not .AltKeyDown Then ' Decrease CGDivide by 1 If CGDivide.Value - 1 >= CGDivide.Minimum Then CGDivide.Value -= 1 ElseIf Not .CtrlKeyDown And .AltKeyDown Then ' Divide CGSub - If CLng(CGSub.Value) / Modif >= CGSub.Minimum Then CGSub.Value = CGSub.Value / Modif + If CInt(CGSub.Value) / Modif >= CGSub.Minimum Then CGSub.Value = CGSub.Value / Modif Else ' Decrease CGSub by 1 If CGSub.Value - 1 >= CGSub.Minimum Then CGSub.Value -= 1 End If @@ -533,8 +533,8 @@ ExecuteKeybind: If MiddleButtonClicked Then MiddleButtonClicked = False : Exit Sub - Dim xHS As Long = PanelHScroll(PanelFocus) - Dim xVS As Long = CLng(PanelVScroll(PanelFocus)) + Dim xHS As Integer = PanelHScroll(PanelFocus) + Dim xVS As Integer = CInt(PanelVScroll(PanelFocus)) Dim xHeight As Integer = spMain(PanelFocus).Height Select Case e.Button @@ -574,7 +574,7 @@ ExecuteKeybind: End Select End Sub - Private Sub DeselectOrRemove(e As MouseEventArgs, xHS As Long, xVS As Long, xHeight As Integer) + Private Sub DeselectOrRemove(e As MouseEventArgs, xHS As Integer, xVS As Integer, xHeight As Integer) KMouseOver = -1 'KMouseDown = -1 ReDim SelectedNotes(-1) @@ -611,7 +611,7 @@ ExecuteKeybind: End If End Sub - Private Function GetClickedNote(e As MouseEventArgs, xHS As Long, xVS As Long, xHeight As Integer) As Integer + Private Function GetClickedNote(e As MouseEventArgs, xHS As Integer, xVS As Integer, xHeight As Integer) As Integer Dim NoteIndex As Integer = -1 For xI1 = UBound(Notes) To 0 Step -1 'If mouse is clicking on a K @@ -656,7 +656,7 @@ ExecuteKeybind: End If End Sub - Private Sub HandleCurrentModeOnClick(e As MouseEventArgs, xHS As Long, xVS As Long, xHeight As Integer, ByRef NoteIndex As Integer) + Private Sub HandleCurrentModeOnClick(e As MouseEventArgs, xHS As Integer, xVS As Integer, xHeight As Integer, ByRef NoteIndex As Integer) If TBSelect.Checked Then OnSelectModeLeftClick(e, NoteIndex, xHeight, xVS) ElseIf NTInput And TBWrite.Checked Then @@ -882,7 +882,7 @@ ExecuteKeybind: End If End Sub - Private Sub OnSelectModeLeftClick(e As MouseEventArgs, NoteIndex As Integer, xTHeight As Integer, xVS As Long) + Private Sub OnSelectModeLeftClick(e As MouseEventArgs, NoteIndex As Integer, xTHeight As Integer, xVS As Integer) If NoteIndex >= 0 And e.Clicks = 2 Then DoubleClickNoteIndex(NoteIndex) ElseIf NoteIndex > 0 Then @@ -1026,7 +1026,7 @@ ExecuteKeybind: End If End Sub - Private Function MouseInNote(e As MouseEventArgs, xHS As Long, xVS As Long, xHeight As Integer, note As Note) As Boolean + Private Function MouseInNote(e As MouseEventArgs, xHS As Integer, xVS As Integer, xHeight As Integer, note As Note) As Boolean Return e.X >= HorizontalPositiontoDisplay(nLeft(note.ColumnIndex), xHS) + 1 And e.X <= HorizontalPositiontoDisplay(nLeft(note.ColumnIndex) + GetColumnWidth(note.ColumnIndex), xHS) - 1 And e.Y >= NoteRowToPanelHeight(note.VPosition + CDbl(IIf(NTInput, note.Length, 0)), xVS, xHeight) - vo.kHeight And @@ -1060,8 +1060,8 @@ ExecuteKeybind: Dim PanelS As Panel = CType(sender, Panel) Dim iI As Integer = CInt(PanelS.Tag) - Dim xHS As Long = PanelHScroll(iI) - Dim xVS As Long = CLng(PanelVScroll(iI)) + Dim xHS As Integer = PanelHScroll(iI) + Dim xVS As Integer = CInt(PanelVScroll(iI)) Dim xHeight As Integer = spMain(iI).Height Dim xWidth As Integer = spMain(iI).Width @@ -1205,7 +1205,7 @@ ExecuteKeybind: Dim lastVPos As Double = -1 Dim lastColumn As Integer = -1 - Private Sub UpdateSelectedNotes(xHeight As Integer, xVS As Long, xHS As Long, e As MouseEventArgs) + Private Sub UpdateSelectedNotes(xHeight As Integer, xVS As Integer, xHS As Integer, e As MouseEventArgs) Dim mouseVPosition As Double Dim xITemp As Integer @@ -1294,7 +1294,7 @@ ExecuteKeybind: End If End Sub - Private Sub OnTimeSelectClick(xHeight As Integer, xHS As Long, xVS As Long, e As MouseEventArgs) + Private Sub OnTimeSelectClick(xHeight As Integer, xHS As Integer, xVS As Integer, e As MouseEventArgs) Dim xI1 As Integer Dim xITemp As Integer = -1 If Notes IsNot Nothing Then @@ -1470,7 +1470,7 @@ ExecuteKeybind: End If End Sub - Private Sub OnDuplicateSelectedNotes(xHeight As Integer, xVS As Long, xHS As Long, e As MouseEventArgs) + Private Sub OnDuplicateSelectedNotes(xHeight As Integer, xVS As Integer, xHS As Integer, e As MouseEventArgs) Dim tempNoteIndex As Integer For tempNoteIndex = 1 To UBound(Notes) If Notes(tempNoteIndex).TempMouseDown Then Exit For @@ -1535,7 +1535,7 @@ ExecuteKeybind: End Sub - Private Sub OnWriteModeMouseMove(xHeight As Integer, xVS As Long, e As MouseEventArgs) + Private Sub OnWriteModeMouseMove(xHeight As Integer, xVS As Integer, e As MouseEventArgs) 'If Not KMouseDown = -1 Then If SelectedNotes.Length <> 0 Then @@ -1594,7 +1594,7 @@ ExecuteKeybind: End If End Sub - Private Sub OnSelectModeMoveNotes(e As MouseEventArgs, xHS As Long, xITemp As Integer) + Private Sub OnSelectModeMoveNotes(e As MouseEventArgs, xHS As Integer, xITemp As Integer) If Notes(xITemp).Ghost Then Exit Sub Dim mouseVPosition = GetMouseVPosition(gSnap) If DisableVerticalMove Then mouseVPosition = SelectedNotes(0).VPosition @@ -1658,7 +1658,7 @@ ExecuteKeybind: 'End If End Sub - Private Sub UpdateSelectionBox(xHS As Long, xVS As Long, xHeight As Integer) + Private Sub UpdateSelectionBox(xHS As Integer, xVS As Integer, xHeight As Integer) Dim SelectionBox As New Rectangle(CInt(IIf(pMouseMove.X > LastMouseDownLocation.X, LastMouseDownLocation.X, pMouseMove.X)), CInt(IIf(pMouseMove.Y > LastMouseDownLocation.Y, LastMouseDownLocation.Y, pMouseMove.Y)), CInt(Math.Abs(pMouseMove.X - LastMouseDownLocation.X)), @@ -1721,7 +1721,7 @@ ExecuteKeybind: AddUndo(xUndo, xBaseRedo.Next) End Sub - Private Sub DrawNoteHoverHighlight(iI As Integer, xHS As Long, xVS As Long, xHeight As Integer, foundNoteIndex As Integer) + Private Sub DrawNoteHoverHighlight(iI As Integer, xHS As Integer, xVS As Integer, xHeight As Integer, foundNoteIndex As Integer) Dim xDispX As Integer = HorizontalPositiontoDisplay(nLeft(Notes(foundNoteIndex).ColumnIndex), xHS) Dim xDispY As Integer = CInt(IIf(Not NTInput Or (bAdjustLength And Not bAdjustUpper), NoteRowToPanelHeight(Notes(foundNoteIndex).VPosition, xVS, xHeight) - vo.kHeight - 1, @@ -1750,7 +1750,7 @@ ExecuteKeybind: End If End Sub - Private Function GetColumnAtX(x As Integer, xHS As Long) As Integer + Private Function GetColumnAtX(x As Integer, xHS As Integer) As Integer Dim xI1 As Integer = 0 Dim mLeft As Integer = CInt(x / gxWidth + xHS) 'horizontal position of the mouse Dim xColumn = 0 @@ -1764,7 +1764,7 @@ ExecuteKeybind: Return EnabledColumnIndexToColumnArrayIndex(ColumnArrayIndexToEnabledColumnIndex(xColumn)) 'get the enabled column where mouse is End Function - Private Function GetColumnAtEvent(e As MouseEventArgs, xHS As Long) As Integer + Private Function GetColumnAtEvent(e As MouseEventArgs, xHS As Integer) As Integer Return GetColumnAtX(e.X, xHS) End Function diff --git a/iBMSC/UndoRedo.vb b/iBMSC/UndoRedo.vb index 611a813a8..597c7011b 100644 --- a/iBMSC/UndoRedo.vb +++ b/iBMSC/UndoRedo.vb @@ -376,7 +376,7 @@ Public Class UndoRedo xToBytes(xI1 + xIb) = xId(xIb) Next Next - Return xToBytes + Return xToBytes End Function Public Sub New(ByVal b() As Byte) diff --git a/iBMSC/VisualSettings.vb b/iBMSC/VisualSettings.vb index df632d730..4847700bb 100644 --- a/iBMSC/VisualSettings.vb +++ b/iBMSC/VisualSettings.vb @@ -70,7 +70,7 @@ ByVal voVLine As Pen, ByVal voMLine As Pen, ByVal voBGMWav As Pen, _ - _ + _ ByVal voSelBox As Pen, ByVal voPECursor As Pen, ByVal voPEHalf As Pen, @@ -80,7 +80,7 @@ ByVal voPEBPM As SolidBrush, ByVal voPEBPMFont As Font, ByVal xMiddleDeltaRelease As Integer, _ - _ + _ ByVal vKHeight As Integer, ByVal vKFont As Font, ByVal vKMFont As Font, diff --git a/iBMSC/Waveform.vb b/iBMSC/Waveform.vb index bd41284c0..2e3beef66 100644 --- a/iBMSC/Waveform.vb +++ b/iBMSC/Waveform.vb @@ -1,7 +1,4 @@ -Imports CSCore.Streams -Imports CSCore.Streams.Effects -Imports CSCore -Imports CSCore.Codecs +Imports CSCore Partial Public Class MainWindow From 951cab46e9c3896f79b6aee3a8d947a6415cff62 Mon Sep 17 00:00:00 2001 From: psyk2642 <60137590+psyk2642@users.noreply.github.com> Date: Sat, 23 Apr 2022 22:45:52 +0800 Subject: [PATCH 124/257] Removed most Goto's + Code Optimization + Fix --- iBMSC/ChartIO.vb | 778 +++++++++++++++++++------------------- iBMSC/EditorPersistent.vb | 707 +++++++++++++++++----------------- iBMSC/MainWindow.vb | 420 +++++++++----------- iBMSC/MyO2.vb | 18 +- iBMSC/PanelEvents.vb | 10 +- iBMSC/TimeSelectionOps.vb | 659 ++++++++++++++++---------------- iBMSC/iBMSC.vbproj | 3 + 7 files changed, 1261 insertions(+), 1334 deletions(-) diff --git a/iBMSC/ChartIO.vb b/iBMSC/ChartIO.vb index fcdbfe668..0c6d5e79c 100644 --- a/iBMSC/ChartIO.vb +++ b/iBMSC/ChartIO.vb @@ -17,25 +17,29 @@ Partial Public Class MainWindow Dim nNotes As Integer = 1 ' Assume ghost note strings contain only notes in the section. Expansion field to be saved separately - If xGhost Then nNotes = Notes.Length : GoTo SkipInitialization - If xComment Then xStrLine2 = xStrLine : nNotes = Notes.Length : GoTo SkipInitialization - - ReDim Notes(0) - ReDim mColumn(999) - ReDim hWAV(1295) - ReDim hBPM(1295) 'x10000 - ReDim hSTOP(1295) - ReDim hBMSCROLL(1295) - Me.InitializeNewBMS() - Me.InitializeOpenBMS() - - With Notes(0) - .ColumnIndex = niBPM - .VPosition = -1 - '.LongNote = False - '.Selected = False - .Value = 1200000 - End With + If xGhost Then + nNotes = Notes.Length + ElseIf xComment Then + xStrLine2 = xStrLine + nNotes = Notes.Length + Else ' Initialization + ReDim Notes(0) + ReDim mColumn(999) + ReDim hWAV(1295) + ReDim hBPM(1295) 'x10000 + ReDim hSTOP(1295) + ReDim hBMSCROLL(1295) + Me.InitializeNewBMS() + Me.InitializeOpenBMS() + + With Notes(0) + .ColumnIndex = niBPM + .VPosition = -1 + '.LongNote = False + '.Selected = False + .Value = 1200000 + End With + End If 'old list below, not sure what this means 'random, setRandom 0 @@ -47,7 +51,7 @@ Partial Public Class MainWindow 'case, skip, def 0 'endSw -1 'P: I'm gonna do what's called a pro gamer move -SkipInitialization: + Dim xStack As Integer = 0 Dim nLine As Integer = -1 @@ -55,165 +59,156 @@ SkipInitialization: Dim sLineTrim As String = sLine.Trim If sLineTrim = "" Then Continue For - If xStack > 0 Then GoTo Expansion - If xGhost Then GoTo SkipLoadingHeader - - If sLineTrim.StartsWith("#") And Mid(sLineTrim, 5, 3) = "02:" Then - Dim xIndex As Integer = CInt(Mid(sLineTrim, 2, 3)) - Dim xRatio As Double = Val(Mid(sLineTrim, 8)) - Dim xxD As Long = GetDenominator(xRatio) - MeasureLength(xIndex) = xRatio * 192.0R - LBeat.Items(xIndex) = Add3Zeros(xIndex) & ": " & xRatio & IIf(xxD > 10000, "", " ( " & CLng(xRatio * xxD) & " / " & xxD & " ) ").ToString() - GoTo AddToxStrLine2 - - ElseIf SWIC(sLineTrim, "#WAV") Then - hWAV(C36to10(Mid(sLineTrim, Len("#WAV") + 1, 2))) = Mid(sLineTrim, Len("#WAV") + 4) - GoTo AddToxStrLine2 - - ElseIf SWIC(sLineTrim, "#BPM") And Not Mid(sLineTrim, Len("#BPM") + 1, 1).Trim = "" Then 'If BPM## - ' zdr: No limits on BPM editing.. they don't make much sense. - hBPM(C36to10(Mid(sLineTrim, Len("#BPM") + 1, 2))) = CLng(Mid(sLineTrim, Len("#BPM") + 4)) * 10000 - GoTo AddToxStrLine2 - - 'No limits on STOPs either. - ElseIf SWIC(sLineTrim, "#STOP") Then - hSTOP(C36to10(Mid(sLineTrim, Len("#STOP") + 1, 2))) = CLng(Mid(sLineTrim, Len("#STOP") + 4)) * 10000 - GoTo AddToxStrLine2 - - ElseIf SWIC(sLineTrim, "#SCROLL") Then - hBMSCROLL(C36to10(Mid(sLineTrim, Len("#SCROLL") + 1, 2))) = CLng(Mid(sLineTrim, Len("#SCROLL") + 4)) * 10000 - GoTo AddToxStrLine2 - - ElseIf SWIC(sLineTrim, "#TITLE") Then - THTitle.Text = Mid(sLineTrim, Len("#TITLE") + 1).Trim - GoTo AddToxStrLine2 - - ElseIf SWIC(sLineTrim, "#ARTIST") Then - THArtist.Text = Mid(sLineTrim, Len("#ARTIST") + 1).Trim - GoTo AddToxStrLine2 - - ElseIf SWIC(sLineTrim, "#GENRE") Then - THGenre.Text = Mid(sLineTrim, Len("#GENRE") + 1).Trim - GoTo AddToxStrLine2 - - ElseIf SWIC(sLineTrim, "#BPM") Then 'If BPM #### - Notes(0).Value = CLng(Mid(sLineTrim, Len("#BPM") + 1).Trim) * 10000 - THBPM.Value = CDec(Notes(0).Value / 10000) - GoTo AddToxStrLine2 - - ElseIf SWIC(sLineTrim, "#PLAYER") Then - Dim xInt As Integer = CInt(Mid(sLineTrim, Len("#PLAYER") + 1).Trim) - If xInt >= 1 And xInt <= 4 Then _ - CHPlayer.SelectedIndex = xInt - 1 - GoTo AddToxStrLine2 - - ElseIf SWIC(sLineTrim, "#RANK") Then - Dim xInt As Integer = CInt(Mid(sLineTrim, Len("#RANK") + 1).Trim) - If xInt >= 0 And xInt <= 4 Then _ - CHRank.SelectedIndex = xInt - GoTo AddToxStrLine2 - - ElseIf SWIC(sLineTrim, "#PLAYLEVEL") Then - THPlayLevel.Text = Mid(sLineTrim, Len("#PLAYLEVEL") + 1).Trim - GoTo AddToxStrLine2 - - ElseIf SWIC(sLineTrim, "#SUBTITLE") Then - THSubTitle.Text = Mid(sLineTrim, Len("#SUBTITLE") + 1).Trim - GoTo AddToxStrLine2 - - ElseIf SWIC(sLineTrim, "#SUBARTIST") Then - THSubArtist.Text = Mid(sLineTrim, Len("#SUBARTIST") + 1).Trim - GoTo AddToxStrLine2 - - ElseIf SWIC(sLineTrim, "#STAGEFILE") Then - THStageFile.Text = Mid(sLineTrim, Len("#STAGEFILE") + 1).Trim - GoTo AddToxStrLine2 - - ElseIf SWIC(sLineTrim, "#BANNER") Then - THBanner.Text = Mid(sLineTrim, Len("#BANNER") + 1).Trim - GoTo AddToxStrLine2 - - ElseIf SWIC(sLineTrim, "#BACKBMP") Then - THBackBMP.Text = Mid(sLineTrim, Len("#BACKBMP") + 1).Trim - GoTo AddToxStrLine2 - - ElseIf SWIC(sLineTrim, "#DIFFICULTY") Then - Try - CHDifficulty.SelectedIndex = Integer.Parse(Mid(sLineTrim, Len("#DIFFICULTY") + 1).Trim) - Catch ex As Exception - End Try - GoTo AddToxStrLine2 - - ElseIf SWIC(sLineTrim, "#DEFEXRANK") Then - THExRank.Text = Mid(sLineTrim, Len("#DEFEXRANK") + 1).Trim - GoTo AddToxStrLine2 - - ElseIf SWIC(sLineTrim, "#TOTAL") Then - Dim xStr As String = Mid(sLineTrim, Len("#TOTAL") + 1).Trim - 'If xStr.EndsWith("%") Then xStr = Mid(xStr, 1, Len(xStr) - 1) - THTotal.Text = xStr - GoTo AddToxStrLine2 - - ElseIf SWIC(sLineTrim, "#COMMENT") Then - Dim xStr As String = Mid(sLineTrim, Len("#COMMENT") + 1).Trim - If xStr.StartsWith("""") Then xStr = Mid(xStr, 2) - If xStr.EndsWith("""") Then xStr = Mid(xStr, 1, Len(xStr) - 1) - THComment.Text = xStr - GoTo AddToxStrLine2 - - ElseIf SWIC(sLineTrim, "#LNTYPE") Then - 'THLnType.Text = Mid(sLineTrim, Len("#LNTYPE") + 1).Trim - If Val(Mid(sLineTrim, Len("#LNTYPE") + 1).Trim) = 1 Then CHLnObj.SelectedIndex = 0 - GoTo AddToxStrLine2 - - ElseIf SWIC(sLineTrim, "#LNOBJ") Then - Dim xValue As Integer = C36to10(Mid(sLineTrim, Len("#LNOBJ") + 1).Trim) - CHLnObj.SelectedIndex = xValue - GoTo AddToxStrLine2 - - ElseIf SWIC(sLineTrim, "#ECMD") Then - xEditorExpansion &= sLineTrim.Replace("#ECMD", "#") & vbCrLf - Continue For + If xStack > 0 Then AddToExpansion(xExpansion, xStack, sLine) : Continue For + If Not xGhost AndAlso Not xComment Then ' Load header if not ghost notes and not comment notes - ElseIf SWIC(sLineTrim, "#ECOM") Then ' Comment notes - Dim xComVal As Integer = C36to10(Mid(sLineTrim, Len("#ECOM") + 1, 2).ToString()) - hCOM(C36to10(xComVal)) = Mid(sLineTrim, Len("#ECOM") + 4) - If xComVal > hCOMNum Then hCOMNum = xComVal - Continue For + If sLineTrim.StartsWith("#") And Mid(sLineTrim, 5, 3) = "02:" Then + Dim xIndex As Integer = CInt(Mid(sLineTrim, 2, 3)) + Dim xRatio As Double = Val(Mid(sLineTrim, 8)) + Dim xxD As Long = GetDenominator(xRatio) + MeasureLength(xIndex) = xRatio * 192.0R + LBeat.Items(xIndex) = Add3Zeros(xIndex) & ": " & xRatio & IIf(xxD > 10000, "", " ( " & CLng(xRatio * xxD) & " / " & xxD & " ) ").ToString() + Continue For + + ElseIf SWIC(sLineTrim, "#WAV") Then + hWAV(C36to10(Mid(sLineTrim, Len("#WAV") + 1, 2))) = Mid(sLineTrim, Len("#WAV") + 4) + Continue For + + ElseIf SWIC(sLineTrim, "#BPM") And Not Mid(sLineTrim, Len("#BPM") + 1, 1).Trim = "" Then 'If BPM## + ' zdr: No limits on BPM editing.. they don't make much sense. + hBPM(C36to10(Mid(sLineTrim, Len("#BPM") + 1, 2))) = CLng(CDbl(Mid(sLineTrim, Len("#BPM") + 4)) * 10000) + Continue For + + 'No limits on STOPs either. + ElseIf SWIC(sLineTrim, "#STOP") Then + hSTOP(C36to10(Mid(sLineTrim, Len("#STOP") + 1, 2))) = CLng(CDbl(Mid(sLineTrim, Len("#STOP") + 4)) * 10000) + Continue For + + ElseIf SWIC(sLineTrim, "#SCROLL") Then + hBMSCROLL(C36to10(Mid(sLineTrim, Len("#SCROLL") + 1, 2))) = CLng(CDbl(Mid(sLineTrim, Len("#SCROLL") + 4)) * 10000) + Continue For + + ElseIf SWIC(sLineTrim, "#TITLE") Then + THTitle.Text = Mid(sLineTrim, Len("#TITLE") + 1).Trim + Continue For + + ElseIf SWIC(sLineTrim, "#ARTIST") Then + THArtist.Text = Mid(sLineTrim, Len("#ARTIST") + 1).Trim + Continue For + + ElseIf SWIC(sLineTrim, "#GENRE") Then + THGenre.Text = Mid(sLineTrim, Len("#GENRE") + 1).Trim + Continue For + + ElseIf SWIC(sLineTrim, "#BPM") Then 'If BPM #### + Notes(0).Value = CLng(CDbl(Mid(sLineTrim, Len("#BPM") + 1).Trim)) * 10000 + THBPM.Value = CDec(Notes(0).Value / 10000) + Continue For + + ElseIf SWIC(sLineTrim, "#PLAYER") Then + Dim xInt As Integer = CInt(Mid(sLineTrim, Len("#PLAYER") + 1).Trim) + If xInt >= 1 And xInt <= 4 Then _ + CHPlayer.SelectedIndex = xInt - 1 + Continue For + + ElseIf SWIC(sLineTrim, "#RANK") Then + Dim xInt As Integer = CInt(Mid(sLineTrim, Len("#RANK") + 1).Trim) + If xInt >= 0 And xInt <= 4 Then _ + CHRank.SelectedIndex = xInt + Continue For + + ElseIf SWIC(sLineTrim, "#PLAYLEVEL") Then + THPlayLevel.Text = Mid(sLineTrim, Len("#PLAYLEVEL") + 1).Trim + Continue For + + ElseIf SWIC(sLineTrim, "#SUBTITLE") Then + THSubTitle.Text = Mid(sLineTrim, Len("#SUBTITLE") + 1).Trim + Continue For + + ElseIf SWIC(sLineTrim, "#SUBARTIST") Then + THSubArtist.Text = Mid(sLineTrim, Len("#SUBARTIST") + 1).Trim + Continue For + + ElseIf SWIC(sLineTrim, "#STAGEFILE") Then + THStageFile.Text = Mid(sLineTrim, Len("#STAGEFILE") + 1).Trim + Continue For + + ElseIf SWIC(sLineTrim, "#BANNER") Then + THBanner.Text = Mid(sLineTrim, Len("#BANNER") + 1).Trim + Continue For + + ElseIf SWIC(sLineTrim, "#BACKBMP") Then + THBackBMP.Text = Mid(sLineTrim, Len("#BACKBMP") + 1).Trim + Continue For + + ElseIf SWIC(sLineTrim, "#DIFFICULTY") Then + Try + CHDifficulty.SelectedIndex = Integer.Parse(Mid(sLineTrim, Len("#DIFFICULTY") + 1).Trim) + Catch ex As Exception + End Try + Continue For + + ElseIf SWIC(sLineTrim, "#DEFEXRANK") Then + THExRank.Text = Mid(sLineTrim, Len("#DEFEXRANK") + 1).Trim + Continue For + + ElseIf SWIC(sLineTrim, "#TOTAL") Then + Dim xStr As String = Mid(sLineTrim, Len("#TOTAL") + 1).Trim + 'If xStr.EndsWith("%") Then xStr = Mid(xStr, 1, Len(xStr) - 1) + THTotal.Text = xStr + Continue For + + ElseIf SWIC(sLineTrim, "#COMMENT") Then + Dim xStr As String = Mid(sLineTrim, Len("#COMMENT") + 1).Trim + If xStr.StartsWith("""") Then xStr = Mid(xStr, 2) + If xStr.EndsWith("""") Then xStr = Mid(xStr, 1, Len(xStr) - 1) + THComment.Text = xStr + Continue For + + ElseIf SWIC(sLineTrim, "#LNTYPE") Then + 'THLnType.Text = Mid(sLineTrim, Len("#LNTYPE") + 1).Trim + If Val(Mid(sLineTrim, Len("#LNTYPE") + 1).Trim) = 1 Then CHLnObj.SelectedIndex = 0 + Continue For + + ElseIf SWIC(sLineTrim, "#LNOBJ") Then + Dim xValue As Integer = C36to10(Mid(sLineTrim, Len("#LNOBJ") + 1).Trim) + CHLnObj.SelectedIndex = xValue + Continue For + + ElseIf SWIC(sLineTrim, "#ECMD") Then + xEditorExpansion &= sLineTrim.Replace("#ECMD", "#") & vbCrLf + Continue For + + ElseIf SWIC(sLineTrim, "#ECOM") Then ' Comment notes + Dim xComVal As Integer = C36to10(Mid(sLineTrim, Len("#ECOM") + 1, 2).ToString()) + hCOM(C36to10(xComVal)) = Mid(sLineTrim, Len("#ECOM") + 4) + If xComVal > hCOMNum Then hCOMNum = xComVal + Continue For + End If + 'TODO: LNOBJ value validation + + 'ElseIf SWIC(sLineTrim,"#LNTYPE") Then + ' CAdLNTYPE.Checked = True + ' If Mid(sLineTrim, 9) = "" Or Mid(sLineTrim, 9) = "1" Or Mid(sLineTrim, 9) = "01" Then CAdLNTYPEb.Text = "1" + ' CAdLNTYPEb.Text = Mid(sLineTrim, 9) End If - 'TODO: LNOBJ value validation - 'ElseIf SWIC(sLineTrim,"#LNTYPE") Then - ' CAdLNTYPE.Checked = True - ' If Mid(sLineTrim, 9) = "" Or Mid(sLineTrim, 9) = "1" Or Mid(sLineTrim, 9) = "01" Then CAdLNTYPEb.Text = "1" - ' CAdLNTYPEb.Text = Mid(sLineTrim, 9) -SkipLoadingHeader: If sLineTrim.StartsWith("#") And Mid(sLineTrim, 7, 1) = ":" Then 'If the line contains Ks Dim xIdentifier As String = Mid(sLineTrim, 5, 2) - If BMSChannelToColumn(xIdentifier) = 0 Then GoTo AddExpansion + If BMSChannelToColumn(xIdentifier) = 0 Then xExpansion &= sLine & vbCrLf : Continue For - ' If does not belong to expansion code, execute below -AddToxStrLine2: nLine += 1 + nLine += 1 xStrLine2(nLine) = sLineTrim Else -Expansion: If SWIC(sLineTrim, "#IF") Or SWIC(sLineTrim, "#SWITCH") Or SWIC(sLineTrim, "#SETSWITCH") Then - xStack += 1 : GoTo AddExpansion - ElseIf SWIC(sLineTrim, "#ENDIF") Or SWIC(sLineTrim, "#ENDSW") Then - xStack -= 1 : GoTo AddExpansion - - ElseIf sLineTrim.StartsWith("#") Then -AddExpansion: xExpansion &= sLine & vbCrLf - - End If - + AddToExpansion(xExpansion, xStack, sLine) End If Next UpdateMeasureBottom() -SkipUpdateMeasureBottom: ' BPM must be updated before loading notes, do not combine loops + ' xStrLine2 should contain only # lines for notes ReDim Preserve xStrLine2(nLine) For Each sLineTrim In xStrLine2 @@ -255,28 +250,25 @@ SkipUpdateMeasureBottom: If xEditorExpansion <> "" Then OpenBMS(xEditorExpansion,, True) - If xGhost Then - If NTInput Then ConvertBMSE2NT(nNotes) - GoTo SkipLWAVAndExpansion - ElseIf xComment Then - GoTo SkipLWAVAndExpansion - End If - If NTInput Then ConvertBMSE2NT() - - LWAV.Visible = False - LWAV.Items.Clear() - For xI1 = 1 To 1295 - LWAV.Items.Add(C10to36(xI1) & ": " & hWAV(xI1)) - ' Add waveforms to wLWAV - If hWAV(xI1) <> "" AndAlso ShowWaveform Then wLWAV(xI1) = LoadWaveForm(ExcludeFileName(FileName) & "\" & hWAV(xI1)) - Next - LWAV.SelectedIndex = 0 - LWAV.Visible = True - If ShowWaveform Then WaveformLoaded = True + If xGhost Or xComment Then + If xGhost AndAlso NTInput Then ConvertBMSE2NT(nNotes) + Else + If NTInput Then ConvertBMSE2NT() + + LWAV.Visible = False + LWAV.Items.Clear() + For xI1 = 1 To 1295 + LWAV.Items.Add(C10to36(xI1) & ": " & hWAV(xI1)) + ' Add waveforms to wLWAV + If hWAV(xI1) <> "" AndAlso ShowWaveform Then wLWAV(xI1) = LoadWaveForm(ExcludeFileName(FileName) & "\" & hWAV(xI1)) + Next + LWAV.SelectedIndex = 0 + LWAV.Visible = True + If ShowWaveform Then WaveformLoaded = True - TExpansion.Text = xExpansion + TExpansion.Text = xExpansion + End If -SkipLWAVAndExpansion: SortByVPositionQuick(0, UBound(Notes)) UpdatePairing() CalculateTotalPlayableNotes() @@ -285,6 +277,19 @@ SkipLWAVAndExpansion: POStatusRefresh() End Sub + Private Sub AddToExpansion(ByRef xExpansion As String, ByRef xStack As Integer, ByVal sLine As String) + Dim sLineTrim As String = sLine.Trim + If SWIC(sLineTrim, "#IF") Or SWIC(sLineTrim, "#SWITCH") Or SWIC(sLineTrim, "#SETSWITCH") Then + xStack += 1 + xExpansion &= sLine & vbCrLf + ElseIf SWIC(sLineTrim, "#ENDIF") Or SWIC(sLineTrim, "#ENDSW") Then + xStack -= 1 + xExpansion &= sLine & vbCrLf + ElseIf sLineTrim.StartsWith("#") Then + xExpansion &= sLine & vbCrLf + End If + End Sub + ReadOnly BMSChannelList() As String = {"01", "03", "04", "06", "07", "08", "09", "11", "12", "13", "14", "15", "16", "18", "19", "21", "22", "23", "24", "25", "26", "28", "29", @@ -313,18 +318,23 @@ SkipLWAVAndExpansion: Dim xStrMeasure(MeasureAtDisplacement(GreatestVPosition) + 1) As String ' We regenerate these when traversing the bms event list. - ReDim hBPM(0) - ReDim hSTOP(0) - ReDim hBMSCROLL(0) Dim xNTInput As Boolean = NTInput If GhostMode = 2 Then SwapGhostNotes() ' Revert main notes back to non-ghost notes - Dim xKBackUp() As Note = CType(Notes.Clone(), Note()) 'All notes + ' TODO: Fix Ghost mode 1 and 2 not saving BPMs, STOPs and SCROLLs + Dim xNotesBackup() As Note = CType(Notes.Clone(), Note()) 'All notes + If xNTInput Then NTInput = False ConvertNT2BMSE() End If + If Not xRandom Then + ReDim hBPM(0) + ReDim hSTOP(0) + ReDim hBMSCROLL(0) + End If + Dim tempNote As Note 'Temp K Dim xprevNotes(-1) As Note 'Notes too close to the next measure @@ -400,7 +410,7 @@ SkipLWAVAndExpansion: GhostModeTemp = GhostMode GhostMode = 0 TExpansion.Text = "" - Dim xKBackUpG() As Note = CType(xKBackUp.Clone(), Note()) + Dim xKBackUpG() As Note = CType(xNotesBackup.Clone(), Note()) Dim xStrCompare() As String = Split(Replace(Replace(Replace(SaveBMS(), vbLf, vbCr), vbCr & vbCr, vbCr), vbCr, vbCrLf), vbCrLf,, CompareMethod.Text) ' Save ghost notes @@ -421,7 +431,7 @@ SkipLWAVAndExpansion: End If Next TExpansion.Text = Join(ExpansionSplit, vbCrLf) - xKBackUp = CType(xKBackUpG.Clone(), Note()) + xNotesBackup = CType(xKBackUpG.Clone(), Note()) End If ' Combine all expansion texts Dim xStrExp As String = vbCrLf & "*---------------------- EXPANSION FIELD" & vbCrLf & TExpansion.Text & vbCrLf & vbCrLf @@ -429,7 +439,7 @@ SkipLWAVAndExpansion: ' Add comment notes Dim xStrEditorCommentNotes As String = "" - Notes = CType(xKBackUp.Clone(), Note()) + Notes = CType(xNotesBackup.Clone(), Note()) If xNTInput Then ConvertNT2BMSE() ' Swap comment notes. Not a sub/function since expected to use only once. For xI1 = 1 To UBound(Notes) @@ -454,7 +464,7 @@ SkipLWAVAndExpansion: Dim xStrMain As String = "*---------------------- MAIN DATA FIELD" & vbCrLf & vbCrLf & Join(xStrMeasure, "") & vbCrLf ' Restore notes - Notes = CType(xKBackUp.Clone(), Note()) + Notes = CType(xNotesBackup.Clone(), Note()) If xNTInput Then NTInput = True End If @@ -478,20 +488,16 @@ SkipLWAVAndExpansion: For Each sLine In xStrLine Dim sLineTrim As String = sLine.Trim If xStack > 0 Then - GoTo ExtractExpansion + AddToExpansion(xExpansion, xStack, sLine) + Continue For + ElseIf sLineTrim.StartsWith("#") And Mid(sLineTrim, 7, 1) = ":" Then 'If the line contains Ks Dim xIdentifier As String = Mid(sLineTrim, 5, 2) - If BMSChannelToColumn(xIdentifier) = 0 Then GoTo ExtractAddExpansion - Else -ExtractExpansion: If SWIC(sLineTrim, "#IF") Or SWIC(sLineTrim, "#SWITCH") Or SWIC(sLineTrim, "#SETSWITCH") Then - xStack += 1 : GoTo ExtractAddExpansion - ElseIf SWIC(sLineTrim, "#ENDIF") Or SWIC(sLineTrim, "#ENDSW") Then - xStack -= 1 : GoTo ExtractAddExpansion + If BMSChannelToColumn(xIdentifier) = 0 Then xExpansion &= sLine & vbCrLf - ElseIf sLineTrim.StartsWith("#") Then -ExtractAddExpansion: xExpansion &= sLine & vbCrLf + Else + AddToExpansion(xExpansion, xStack, sLine) - End If End If Next @@ -823,7 +829,7 @@ ExtractAddExpansion: xExpansion &= sLine & vbCrLf Next ElseIf UCase(sL).StartsWith("#NOTES:") Then - If iCurrentDiff <> iDiff Then iCurrentDiff += 1 : GoTo Jump1 + If iCurrentDiff <> iDiff Then iCurrentDiff += 1 : Continue For iCurrentDiff += 1 Dim xLine As String = Mid(sL, Len("#NOTES:") + 1) @@ -832,7 +838,7 @@ ExtractAddExpansion: xExpansion &= sLine & vbCrLf xItem(xI1) = xItem(xI1).Trim Next - If xItem.Length <> 6 Then GoTo Jump1 + If xItem.Length <> 6 Then Continue For THPlayLevel.Text = xItem(3) @@ -889,7 +895,6 @@ ExtractAddExpansion: xExpansion &= sLine & vbCrLf End If Next Next -Jump1: End If Next @@ -919,189 +924,190 @@ Jump1: Dim br As New BinaryReader(New FileStream(Path, FileMode.Open, FileAccess.Read), System.Text.Encoding.Unicode) - If br.ReadInt32 <> &H534D4269 Then GoTo EndOfSub - If br.ReadByte <> CByte(&H43) Then GoTo EndOfSub - Dim xMajor As Integer = br.ReadByte - Dim xMinor As Integer = br.ReadByte - Dim xBuild As Integer = br.ReadByte - - ClearUndo() - ReDim Notes(0) - ReDim mColumn(999) - ReDim hWAV(1295) - Me.InitializeNewBMS() - Me.InitializeOpenBMS() - - With Notes(0) - .ColumnIndex = niBPM - .VPosition = -1 - '.LongNote = False - '.Selected = False - .Value = 1200000 - End With - - Do Until br.BaseStream.Position >= br.BaseStream.Length - Dim BlockID As Integer = br.ReadInt32() - - Select Case BlockID - - Case &H66657250 'Preferences - Dim xPref As Integer = br.ReadInt32 - - NTInput = CBool(xPref And &H1) - TBNTInput.Checked = NTInput - mnNTInput.Checked = NTInput - POBLong.Enabled = Not NTInput - POBLongShort.Enabled = Not NTInput - - ErrorCheck = CBool(xPref And &H2) - TBErrorCheck.Checked = ErrorCheck - TBErrorCheck_Click(TBErrorCheck, New System.EventArgs) - - PreviewOnClick = CBool(xPref And &H4) - TBPreviewOnClick.Checked = PreviewOnClick - TBPreviewOnClick_Click(TBPreviewOnClick, New System.EventArgs) - - ShowFileName = CBool(xPref And &H8) - TBShowFileName.Checked = ShowFileName - TBShowFileName_Click(TBShowFileName, New System.EventArgs) - - mnSMenu.Checked = CBool(xPref And &H100) - mnSTB.Checked = CBool(xPref And &H200) - mnSOP.Checked = CBool(xPref And &H400) - mnSStatus.Checked = CBool(xPref And &H800) - mnSLSplitter.Checked = CBool(xPref And &H1000) - mnSRSplitter.Checked = CBool(xPref And &H2000) - - CGShow.Checked = CBool(xPref And &H4000) - CGShowS.Checked = CBool(xPref And &H8000) - CGShowBG.Checked = CBool(xPref And &H10000) - CGShowM.Checked = CBool(xPref And &H20000) - CGShowMB.Checked = CBool(xPref And &H40000) - CGShowV.Checked = CBool(xPref And &H80000) - CGShowC.Checked = CBool(xPref And &H100000) - CGBLP.Checked = CBool(xPref And &H200000) - CGSTOP.Checked = CBool(xPref And &H400000) - CGSCROLL.Checked = CBool(xPref And &H20000000) - CGBPM.Checked = CBool(xPref And &H800000) - - CGSnap.Checked = CBool(xPref And &H1000000) - CGDisableVertical.Checked = CBool(xPref And &H2000000) - cVSLockL.Checked = CBool(xPref And &H4000000) - cVSLock.Checked = CBool(xPref And &H8000000) - cVSLockR.Checked = CBool(xPref And &H10000000) - - CGDivide.Value = br.ReadInt32 - CGSub.Value = br.ReadInt32 - gSlash = br.ReadInt32 - CGHeight.Value = CDec(br.ReadSingle) - CGWidth.Value = CDec(br.ReadSingle) - CGB.Value = br.ReadInt32 - - Case &H64616548 'Header - THTitle.Text = br.ReadString - THArtist.Text = br.ReadString - THGenre.Text = br.ReadString - Notes(0).Value = br.ReadInt64 - Dim xPlayerRank As Integer = br.ReadByte - THPlayLevel.Text = br.ReadString - - CHPlayer.SelectedIndex = xPlayerRank And &HF - CHRank.SelectedIndex = xPlayerRank >> 4 - - THSubTitle.Text = br.ReadString - THSubArtist.Text = br.ReadString - 'THMaker.Text = br.ReadString - THStageFile.Text = br.ReadString - THBanner.Text = br.ReadString - THBackBMP.Text = br.ReadString - 'THMidiFile.Text = br.ReadString - CHDifficulty.SelectedIndex = br.ReadByte - THExRank.Text = br.ReadString - THTotal.Text = br.ReadString - 'THVolWAV.Text = br.ReadString - THComment.Text = br.ReadString - 'THLnType.Text = br.ReadString - CHLnObj.SelectedIndex = br.ReadInt16 - - Case &H564157 'WAV List - Dim xWAVOptions As Integer = br.ReadByte - WAVMultiSelect = CBool(xWAVOptions And &H1) - CWAVMultiSelect.Checked = WAVMultiSelect - CWAVMultiSelect_CheckedChanged(CWAVMultiSelect, New EventArgs) - WAVChangeLabel = CBool(xWAVOptions And &H2) - CWAVChangeLabel.Checked = WAVChangeLabel - CWAVChangeLabel_CheckedChanged(CWAVChangeLabel, New EventArgs) - - Dim xWAVCount As Integer = br.ReadInt32 - For xxi As Integer = 1 To xWAVCount - Dim xI As Integer = br.ReadInt16 - hWAV(xI) = br.ReadString - Next - - Case &H74616542 'Beat - nBeatN.Value = br.ReadInt16 - nBeatD.Value = br.ReadInt16 - 'nBeatD.SelectedIndex = br.ReadByte - - Dim xBeatChangeMode As Integer = br.ReadByte - Dim xBeatChangeList As RadioButton() = {CBeatPreserve, CBeatMeasure, CBeatCut, CBeatScale} - xBeatChangeList(xBeatChangeMode).Checked = True - CBeatPreserve_Click(xBeatChangeList(xBeatChangeMode), New System.EventArgs) - - Dim xBeatCount As Integer = br.ReadInt32 - For xxi As Integer = 1 To xBeatCount - Dim xIndex As Integer = br.ReadInt16 - MeasureLength(xIndex) = br.ReadDouble - Dim xRatio As Double = MeasureLength(xIndex) / 192.0R - Dim xxD As Long = GetDenominator(xRatio) - LBeat.Items(xIndex) = Add3Zeros(xIndex) & ": " & xRatio & IIf(xxD > 10000, "", " ( " & CLng(xRatio * xxD) & " / " & xxD & " ) ").ToString() - Next - - Case &H6E707845 'Expansion Code - TExpansion.Text = br.ReadString - - Case &H65746F4E 'Note - Dim xNoteUbound As Integer = br.ReadInt32 - ReDim Preserve Notes(xNoteUbound) - For i As Integer = 1 To UBound(Notes) - Notes(i).FromBinReader(br) - Next - - Case &H6F646E55 'Undo / Redo Commands - Dim URCount As Integer = br.ReadInt32 'Should be 100 - sI = br.ReadInt32 - - For xI As Integer = 0 To 99 - Dim xUndoCount As Integer = br.ReadInt32 - Dim xBaseUndo As New UndoRedo.Void - Dim xIteratorUndo As UndoRedo.LinkedURCmd = xBaseUndo - - For xxj As Integer = 1 To xUndoCount - Dim xByteLen As Integer = br.ReadInt32 - Dim xByte() As Byte = br.ReadBytes(xByteLen) - xIteratorUndo.Next = UndoRedo.fromBytes(xByte) - xIteratorUndo = xIteratorUndo.Next - Next - - sUndo(xI) = xBaseUndo.Next - - Dim xRedoCount As Integer = br.ReadInt32 - Dim xBaseRedo As New UndoRedo.Void - Dim xIteratorRedo As UndoRedo.LinkedURCmd = xBaseRedo - For xxj As Integer = 1 To xRedoCount - Dim xByteLen As Integer = br.ReadInt32 - Dim xByte() As Byte = br.ReadBytes(xByteLen) - xIteratorRedo.Next = UndoRedo.fromBytes(xByte) - xIteratorRedo = xIteratorRedo.Next - Next - sRedo(xI) = xBaseRedo.Next - Next + If br.ReadInt32 = &H534D4269 Then + If br.ReadByte = CByte(&H43) Then + Dim xMajor As Integer = br.ReadByte + Dim xMinor As Integer = br.ReadByte + Dim xBuild As Integer = br.ReadByte + + ClearUndo() + ReDim Notes(0) + ReDim mColumn(999) + ReDim hWAV(1295) + Me.InitializeNewBMS() + Me.InitializeOpenBMS() + + With Notes(0) + .ColumnIndex = niBPM + .VPosition = -1 + '.LongNote = False + '.Selected = False + .Value = 1200000 + End With - End Select - Loop + Do Until br.BaseStream.Position >= br.BaseStream.Length + Dim BlockID As Integer = br.ReadInt32() + + Select Case BlockID + + Case &H66657250 'Preferences + Dim xPref As Integer = br.ReadInt32 + + NTInput = CBool(xPref And &H1) + TBNTInput.Checked = NTInput + mnNTInput.Checked = NTInput + POBLong.Enabled = Not NTInput + POBLongShort.Enabled = Not NTInput + + ErrorCheck = CBool(xPref And &H2) + TBErrorCheck.Checked = ErrorCheck + TBErrorCheck_Click(TBErrorCheck, New System.EventArgs) + + PreviewOnClick = CBool(xPref And &H4) + TBPreviewOnClick.Checked = PreviewOnClick + TBPreviewOnClick_Click(TBPreviewOnClick, New System.EventArgs) + + ShowFileName = CBool(xPref And &H8) + TBShowFileName.Checked = ShowFileName + TBShowFileName_Click(TBShowFileName, New System.EventArgs) + + mnSMenu.Checked = CBool(xPref And &H100) + mnSTB.Checked = CBool(xPref And &H200) + mnSOP.Checked = CBool(xPref And &H400) + mnSStatus.Checked = CBool(xPref And &H800) + mnSLSplitter.Checked = CBool(xPref And &H1000) + mnSRSplitter.Checked = CBool(xPref And &H2000) + + CGShow.Checked = CBool(xPref And &H4000) + CGShowS.Checked = CBool(xPref And &H8000) + CGShowBG.Checked = CBool(xPref And &H10000) + CGShowM.Checked = CBool(xPref And &H20000) + CGShowMB.Checked = CBool(xPref And &H40000) + CGShowV.Checked = CBool(xPref And &H80000) + CGShowC.Checked = CBool(xPref And &H100000) + CGBLP.Checked = CBool(xPref And &H200000) + CGSTOP.Checked = CBool(xPref And &H400000) + CGSCROLL.Checked = CBool(xPref And &H20000000) + CGBPM.Checked = CBool(xPref And &H800000) + + CGSnap.Checked = CBool(xPref And &H1000000) + CGDisableVertical.Checked = CBool(xPref And &H2000000) + cVSLockL.Checked = CBool(xPref And &H4000000) + cVSLock.Checked = CBool(xPref And &H8000000) + cVSLockR.Checked = CBool(xPref And &H10000000) + + CGDivide.Value = br.ReadInt32 + CGSub.Value = br.ReadInt32 + gSlash = br.ReadInt32 + CGHeight.Value = CDec(br.ReadSingle) + CGWidth.Value = CDec(br.ReadSingle) + CGB.Value = br.ReadInt32 + + Case &H64616548 'Header + THTitle.Text = br.ReadString + THArtist.Text = br.ReadString + THGenre.Text = br.ReadString + Notes(0).Value = br.ReadInt64 + Dim xPlayerRank As Integer = br.ReadByte + THPlayLevel.Text = br.ReadString + + CHPlayer.SelectedIndex = xPlayerRank And &HF + CHRank.SelectedIndex = xPlayerRank >> 4 + + THSubTitle.Text = br.ReadString + THSubArtist.Text = br.ReadString + 'THMaker.Text = br.ReadString + THStageFile.Text = br.ReadString + THBanner.Text = br.ReadString + THBackBMP.Text = br.ReadString + 'THMidiFile.Text = br.ReadString + CHDifficulty.SelectedIndex = br.ReadByte + THExRank.Text = br.ReadString + THTotal.Text = br.ReadString + 'THVolWAV.Text = br.ReadString + THComment.Text = br.ReadString + 'THLnType.Text = br.ReadString + CHLnObj.SelectedIndex = br.ReadInt16 + + Case &H564157 'WAV List + Dim xWAVOptions As Integer = br.ReadByte + WAVMultiSelect = CBool(xWAVOptions And &H1) + CWAVMultiSelect.Checked = WAVMultiSelect + CWAVMultiSelect_CheckedChanged(CWAVMultiSelect, New EventArgs) + WAVChangeLabel = CBool(xWAVOptions And &H2) + CWAVChangeLabel.Checked = WAVChangeLabel + CWAVChangeLabel_CheckedChanged(CWAVChangeLabel, New EventArgs) + + Dim xWAVCount As Integer = br.ReadInt32 + For xxi As Integer = 1 To xWAVCount + Dim xI As Integer = br.ReadInt16 + hWAV(xI) = br.ReadString + Next + + Case &H74616542 'Beat + nBeatN.Value = br.ReadInt16 + nBeatD.Value = br.ReadInt16 + 'nBeatD.SelectedIndex = br.ReadByte + + Dim xBeatChangeMode As Integer = br.ReadByte + Dim xBeatChangeList As RadioButton() = {CBeatPreserve, CBeatMeasure, CBeatCut, CBeatScale} + xBeatChangeList(xBeatChangeMode).Checked = True + CBeatPreserve_Click(xBeatChangeList(xBeatChangeMode), New System.EventArgs) + + Dim xBeatCount As Integer = br.ReadInt32 + For xxi As Integer = 1 To xBeatCount + Dim xIndex As Integer = br.ReadInt16 + MeasureLength(xIndex) = br.ReadDouble + Dim xRatio As Double = MeasureLength(xIndex) / 192.0R + Dim xxD As Long = GetDenominator(xRatio) + LBeat.Items(xIndex) = Add3Zeros(xIndex) & ": " & xRatio & IIf(xxD > 10000, "", " ( " & CLng(xRatio * xxD) & " / " & xxD & " ) ").ToString() + Next + + Case &H6E707845 'Expansion Code + TExpansion.Text = br.ReadString + + Case &H65746F4E 'Note + Dim xNoteUbound As Integer = br.ReadInt32 + ReDim Preserve Notes(xNoteUbound) + For i As Integer = 1 To UBound(Notes) + Notes(i).FromBinReader(br) + Next + + Case &H6F646E55 'Undo / Redo Commands + Dim URCount As Integer = br.ReadInt32 'Should be 100 + sI = br.ReadInt32 + + For xI As Integer = 0 To 99 + Dim xUndoCount As Integer = br.ReadInt32 + Dim xBaseUndo As New UndoRedo.Void + Dim xIteratorUndo As UndoRedo.LinkedURCmd = xBaseUndo + + For xxj As Integer = 1 To xUndoCount + Dim xByteLen As Integer = br.ReadInt32 + Dim xByte() As Byte = br.ReadBytes(xByteLen) + xIteratorUndo.Next = UndoRedo.fromBytes(xByte) + xIteratorUndo = xIteratorUndo.Next + Next + + sUndo(xI) = xBaseUndo.Next + + Dim xRedoCount As Integer = br.ReadInt32 + Dim xBaseRedo As New UndoRedo.Void + Dim xIteratorRedo As UndoRedo.LinkedURCmd = xBaseRedo + For xxj As Integer = 1 To xRedoCount + Dim xByteLen As Integer = br.ReadInt32 + Dim xByte() As Byte = br.ReadBytes(xByteLen) + xIteratorRedo.Next = UndoRedo.fromBytes(xByte) + xIteratorRedo = xIteratorRedo.Next + Next + sRedo(xI) = xBaseRedo.Next + Next + + End Select + Loop -EndOfSub: + End If + End If br.Close() TBUndo.Enabled = sUndo(sI).ofType <> UndoRedo.opNoOperation diff --git a/iBMSC/EditorPersistent.vb b/iBMSC/EditorPersistent.vb index 023912c04..5cc987b42 100644 --- a/iBMSC/EditorPersistent.vb +++ b/iBMSC/EditorPersistent.vb @@ -63,119 +63,120 @@ Partial Public Class MainWindow .WriteAttributeString("Minor", My.Application.Info.Version.Minor.ToString()) .WriteAttributeString("Build", My.Application.Info.Version.Build.ToString()) - If ThemeOnly Then GoTo 5000 - - .WriteStartElement("Form") - .WriteAttributeString("WindowState", IIf(isFullScreen, previousWindowState, Me.WindowState).ToString()) - .WriteAttributeString("Width", IIf(isFullScreen, previousWindowPosition.Width, Me.Width).ToString()) - .WriteAttributeString("Height", IIf(isFullScreen, previousWindowPosition.Height, Me.Height).ToString()) - .WriteAttributeString("Top", IIf(isFullScreen, previousWindowPosition.Top, Me.Top).ToString()) - .WriteAttributeString("Left", IIf(isFullScreen, previousWindowPosition.Left, Me.Left).ToString()) - .WriteEndElement() + If Not ThemeOnly Then + + .WriteStartElement("Form") + .WriteAttributeString("WindowState", IIf(isFullScreen, previousWindowState, Me.WindowState).ToString()) + .WriteAttributeString("Width", IIf(isFullScreen, previousWindowPosition.Width, Me.Width).ToString()) + .WriteAttributeString("Height", IIf(isFullScreen, previousWindowPosition.Height, Me.Height).ToString()) + .WriteAttributeString("Top", IIf(isFullScreen, previousWindowPosition.Top, Me.Top).ToString()) + .WriteAttributeString("Left", IIf(isFullScreen, previousWindowPosition.Left, Me.Left).ToString()) + .WriteEndElement() - .WriteStartElement("Recent") - .WriteAttributeString("Recent0", Recent(0)) - .WriteAttributeString("Recent1", Recent(1)) - .WriteAttributeString("Recent2", Recent(2)) - .WriteAttributeString("Recent3", Recent(3)) - .WriteAttributeString("Recent4", Recent(4)) - .WriteEndElement() + .WriteStartElement("Recent") + .WriteAttributeString("Recent0", Recent(0)) + .WriteAttributeString("Recent1", Recent(1)) + .WriteAttributeString("Recent2", Recent(2)) + .WriteAttributeString("Recent3", Recent(3)) + .WriteAttributeString("Recent4", Recent(4)) + .WriteEndElement() - .WriteStartElement("Edit") - .WriteAttributeString("NTInput", NTInput.ToString()) - .WriteAttributeString("Language", DispLang) - '.WriteAttributeString("SortingMethod", SortingMethod) - .WriteAttributeString("ErrorCheck", ErrorCheck.ToString()) - .WriteAttributeString("AutoFocusMouseEnter", AutoFocusMouseEnter.ToString()) - .WriteAttributeString("FirstClickDisabled", FirstClickDisabled.ToString()) - .WriteAttributeString("ShowFileName", ShowFileName.ToString()) - .WriteAttributeString("ShowWaveform", ShowWaveform.ToString()) - .WriteAttributeString("MiddleButtonMoveMethod", MiddleButtonMoveMethod.ToString()) - .WriteAttributeString("AutoSaveInterval", AutoSaveInterval.ToString()) - .WriteAttributeString("PreviewOnClick", PreviewOnClick.ToString()) - '.WriteAttributeString("PreviewErrorCheck", PreviewErrorCheck) - .WriteAttributeString("ClickStopPreview", ClickStopPreview.ToString()) - .WriteAttributeString("JackBPM", ErrorJackBPM.ToString()) - .WriteAttributeString("JackTH", ErrorJackTH.ToString()) - .WriteEndElement() + .WriteStartElement("Edit") + .WriteAttributeString("NTInput", NTInput.ToString()) + .WriteAttributeString("Language", DispLang) + '.WriteAttributeString("SortingMethod", SortingMethod) + .WriteAttributeString("ErrorCheck", ErrorCheck.ToString()) + .WriteAttributeString("AutoFocusMouseEnter", AutoFocusMouseEnter.ToString()) + .WriteAttributeString("FirstClickDisabled", FirstClickDisabled.ToString()) + .WriteAttributeString("ShowFileName", ShowFileName.ToString()) + .WriteAttributeString("ShowWaveform", ShowWaveform.ToString()) + .WriteAttributeString("MiddleButtonMoveMethod", MiddleButtonMoveMethod.ToString()) + .WriteAttributeString("AutoSaveInterval", AutoSaveInterval.ToString()) + .WriteAttributeString("PreviewOnClick", PreviewOnClick.ToString()) + '.WriteAttributeString("PreviewErrorCheck", PreviewErrorCheck) + .WriteAttributeString("ClickStopPreview", ClickStopPreview.ToString()) + .WriteAttributeString("JackBPM", ErrorJackBPM.ToString()) + .WriteAttributeString("JackTH", ErrorJackTH.ToString()) + .WriteEndElement() - .WriteStartElement("Save") - .WriteAttributeString("TextEncoding", EncodingToString(TextEncoding)) - .WriteAttributeString("BMSGridLimit", BMSGridLimit.ToString()) - .WriteAttributeString("BeepWhileSaved", BeepWhileSaved.ToString()) - .WriteAttributeString("BPMx1296", BPMx1296.ToString()) - .WriteAttributeString("STOPx1296", STOPx1296.ToString()) - .WriteEndElement() + .WriteStartElement("Save") + .WriteAttributeString("TextEncoding", EncodingToString(TextEncoding)) + .WriteAttributeString("BMSGridLimit", BMSGridLimit.ToString()) + .WriteAttributeString("BeepWhileSaved", BeepWhileSaved.ToString()) + .WriteAttributeString("BPMx1296", BPMx1296.ToString()) + .WriteAttributeString("STOPx1296", STOPx1296.ToString()) + .WriteEndElement() - .WriteStartElement("WAV") - .WriteAttributeString("WAVMultiSelect", WAVMultiSelect.ToString()) - .WriteAttributeString("WAVChangeLabel", WAVChangeLabel.ToString()) - .WriteAttributeString("BeatChangeMode", BeatChangeMode.ToString()) - .WriteEndElement() + .WriteStartElement("WAV") + .WriteAttributeString("WAVMultiSelect", WAVMultiSelect.ToString()) + .WriteAttributeString("WAVChangeLabel", WAVChangeLabel.ToString()) + .WriteAttributeString("BeatChangeMode", BeatChangeMode.ToString()) + .WriteEndElement() - .WriteStartElement("ShowHide") - .WriteAttributeString("showMenu", mnSMenu.Checked.ToString()) - .WriteAttributeString("showTB", mnSTB.Checked.ToString()) - .WriteAttributeString("showOpPanel", mnSOP.Checked.ToString()) - .WriteAttributeString("showStatus", mnSStatus.Checked.ToString()) - .WriteAttributeString("showLSplit", mnSLSplitter.Checked.ToString()) - .WriteAttributeString("showRSplit", mnSRSplitter.Checked.ToString()) - .WriteEndElement() + .WriteStartElement("ShowHide") + .WriteAttributeString("showMenu", mnSMenu.Checked.ToString()) + .WriteAttributeString("showTB", mnSTB.Checked.ToString()) + .WriteAttributeString("showOpPanel", mnSOP.Checked.ToString()) + .WriteAttributeString("showStatus", mnSStatus.Checked.ToString()) + .WriteAttributeString("showLSplit", mnSLSplitter.Checked.ToString()) + .WriteAttributeString("showRSplit", mnSRSplitter.Checked.ToString()) + .WriteEndElement() - .WriteStartElement("Grid") - .WriteAttributeString("gSnap", gSnap.ToString()) - .WriteAttributeString("xmlDisableVertical", DisableVerticalMove.ToString()) - .WriteAttributeString("gWheel", gWheel.ToString()) - .WriteAttributeString("gPgUpDn", gPgUpDn.ToString()) - .WriteAttributeString("gShow", gShowGrid.ToString()) - .WriteAttributeString("gShowS", gShowSubGrid.ToString()) - .WriteAttributeString("gShowBG", gShowBG.ToString()) - .WriteAttributeString("gShowM", gShowMeasureNumber.ToString()) - .WriteAttributeString("gShowV", gShowVerticalLine.ToString()) - .WriteAttributeString("gShowMB", gShowMeasureBar.ToString()) - .WriteAttributeString("gShowC", gShowC.ToString()) - .WriteAttributeString("gBPM", gBPM.ToString()) - .WriteAttributeString("gSTOP", gSTOP.ToString()) - .WriteAttributeString("gSCROLL", gSCROLL.ToString()) - .WriteAttributeString("gBLP", gDisplayBGAColumn.ToString()) - .WriteAttributeString("gP2", CHPlayer.SelectedIndex.ToString()) - .WriteAttributeString("gCol", CGB.Value.ToString()) - .WriteAttributeString("gDivide", gDivide.ToString()) - .WriteAttributeString("gSub", gSub.ToString()) - .WriteAttributeString("gSlash", gSlash.ToString()) - .WriteAttributeString("gxHeight", gxHeight.ToString()) - .WriteAttributeString("gxWidth", gxWidth.ToString()) - .WriteEndElement() + .WriteStartElement("Grid") + .WriteAttributeString("gSnap", gSnap.ToString()) + .WriteAttributeString("xmlDisableVertical", DisableVerticalMove.ToString()) + .WriteAttributeString("gWheel", gWheel.ToString()) + .WriteAttributeString("gPgUpDn", gPgUpDn.ToString()) + .WriteAttributeString("gShow", gShowGrid.ToString()) + .WriteAttributeString("gShowS", gShowSubGrid.ToString()) + .WriteAttributeString("gShowBG", gShowBG.ToString()) + .WriteAttributeString("gShowM", gShowMeasureNumber.ToString()) + .WriteAttributeString("gShowV", gShowVerticalLine.ToString()) + .WriteAttributeString("gShowMB", gShowMeasureBar.ToString()) + .WriteAttributeString("gShowC", gShowC.ToString()) + .WriteAttributeString("gBPM", gBPM.ToString()) + .WriteAttributeString("gSTOP", gSTOP.ToString()) + .WriteAttributeString("gSCROLL", gSCROLL.ToString()) + .WriteAttributeString("gBLP", gDisplayBGAColumn.ToString()) + .WriteAttributeString("gP2", CHPlayer.SelectedIndex.ToString()) + .WriteAttributeString("gCol", CGB.Value.ToString()) + .WriteAttributeString("gDivide", gDivide.ToString()) + .WriteAttributeString("gSub", gSub.ToString()) + .WriteAttributeString("gSlash", gSlash.ToString()) + .WriteAttributeString("gxHeight", gxHeight.ToString()) + .WriteAttributeString("gxWidth", gxWidth.ToString()) + .WriteEndElement() - .WriteStartElement("WaveForm") - .WriteAttributeString("wLock", wLock.ToString()) - .WriteAttributeString("wPosition", wPosition.ToString()) - .WriteAttributeString("wLeft", wLeft.ToString()) - .WriteAttributeString("wWidth", wWidth.ToString()) - .WriteAttributeString("wPrecision", wPrecision.ToString()) - .WriteEndElement() + .WriteStartElement("WaveForm") + .WriteAttributeString("wLock", wLock.ToString()) + .WriteAttributeString("wPosition", wPosition.ToString()) + .WriteAttributeString("wLeft", wLeft.ToString()) + .WriteAttributeString("wWidth", wWidth.ToString()) + .WriteAttributeString("wPrecision", wPrecision.ToString()) + .WriteEndElement() - .WriteStartElement("Player") - .WriteAttributeString("Count", pArgs.Length.ToString()) - .WriteAttributeString("CurrentPlayer", CurrentPlayer.ToString()) - For i As Integer = 0 To UBound(pArgs) - XMLWritePlayerArguments(w, i) : Next - .WriteEndElement() + .WriteStartElement("Player") + .WriteAttributeString("Count", pArgs.Length.ToString()) + .WriteAttributeString("CurrentPlayer", CurrentPlayer.ToString()) + For i As Integer = 0 To UBound(pArgs) + XMLWritePlayerArguments(w, i) : Next + .WriteEndElement() - .WriteStartElement("Total") - .WriteAttributeString("Option", TotalOption.ToString()) - .WriteAttributeString("Multiplier", TotalMultiplier.ToString()) - .WriteAttributeString("GlobalMultiplier", TotalGlobalMultiplier.ToString()) - .WriteAttributeString("RecommendedTextDisplay", TotalRecommendedTextDisplay.ToString()) - .WriteEndElement() + .WriteStartElement("Total") + .WriteAttributeString("Option", TotalOption.ToString()) + .WriteAttributeString("Multiplier", TotalMultiplier.ToString()) + .WriteAttributeString("GlobalMultiplier", TotalGlobalMultiplier.ToString()) + .WriteAttributeString("RecommendedTextDisplay", TotalRecommendedTextDisplay.ToString()) + .WriteEndElement() - .WriteStartElement("KeyBindings") - .WriteAttributeString("Count", UBound(Keybindings).ToString()) - For i As Integer = 0 To UBound(Keybindings) - XMLWriteKeybindings(w, i) : Next - .WriteEndElement() + .WriteStartElement("KeyBindings") + .WriteAttributeString("Count", UBound(Keybindings).ToString()) + For i As Integer = 0 To UBound(Keybindings) + XMLWriteKeybindings(w, i) : Next + .WriteEndElement() -5000: .WriteStartElement("Columns") + End If + .WriteStartElement("Columns") '.WriteAttributeString("Count", col.Length) For i As Integer = 0 To UBound(column) XMLWriteColumn(w, i) : Next @@ -345,285 +346,285 @@ Partial Public Class MainWindow Doc.Load(FileStream) Dim Root As XmlElement = Doc.Item("iBMSC") - If Root Is Nothing Then GoTo EndOfSub - - 'version - Dim Major As Integer = My.Application.Info.Version.Major - Dim Minor As Integer = My.Application.Info.Version.Minor - Dim Build As Integer = My.Application.Info.Version.Build - Try - Dim xMajor As Integer = CInt(Root.Attributes("Major").Value) - Dim xMinor As Integer = CInt(Root.Attributes("Minor").Value) - Dim xBuild As Integer = CInt(Root.Attributes("Build").Value) - Major = xMajor - Minor = xMinor - Build = xBuild - Catch ex As Exception - End Try - - 'form - Dim eForm As XmlElement = Root.Item("Form") - If eForm IsNot Nothing Then - With eForm - Select Case Val(.GetAttribute("WindowState")) - Case FormWindowState.Normal - Me.WindowState = FormWindowState.Normal - XMLLoadAttribute(.GetAttribute("Width"), Me.Width) - XMLLoadAttribute(.GetAttribute("Height"), Me.Height) - XMLLoadAttribute(.GetAttribute("Top"), Me.Top) - XMLLoadAttribute(.GetAttribute("Left"), Me.Left) - Case FormWindowState.Maximized - Me.WindowState = FormWindowState.Maximized - End Select - End With - End If + If Root IsNot Nothing Then + + 'version + Dim Major As Integer = My.Application.Info.Version.Major + Dim Minor As Integer = My.Application.Info.Version.Minor + Dim Build As Integer = My.Application.Info.Version.Build + Try + Dim xMajor As Integer = CInt(Root.Attributes("Major").Value) + Dim xMinor As Integer = CInt(Root.Attributes("Minor").Value) + Dim xBuild As Integer = CInt(Root.Attributes("Build").Value) + Major = xMajor + Minor = xMinor + Build = xBuild + Catch ex As Exception + End Try + + 'form + Dim eForm As XmlElement = Root.Item("Form") + If eForm IsNot Nothing Then + With eForm + Select Case Val(.GetAttribute("WindowState")) + Case FormWindowState.Normal + Me.WindowState = FormWindowState.Normal + XMLLoadAttribute(.GetAttribute("Width"), Me.Width) + XMLLoadAttribute(.GetAttribute("Height"), Me.Height) + XMLLoadAttribute(.GetAttribute("Top"), Me.Top) + XMLLoadAttribute(.GetAttribute("Left"), Me.Left) + Case FormWindowState.Maximized + Me.WindowState = FormWindowState.Maximized + End Select + End With + End If - 'recent - Dim eRecent As XmlElement = Root.Item("Recent") - If eRecent IsNot Nothing Then - With eRecent - XMLLoadAttribute(.GetAttribute("Recent0"), Recent(0)) : SetRecent(0, Recent(0)) - XMLLoadAttribute(.GetAttribute("Recent1"), Recent(1)) : SetRecent(1, Recent(1)) - XMLLoadAttribute(.GetAttribute("Recent2"), Recent(2)) : SetRecent(2, Recent(2)) - XMLLoadAttribute(.GetAttribute("Recent3"), Recent(3)) : SetRecent(3, Recent(3)) - XMLLoadAttribute(.GetAttribute("Recent4"), Recent(4)) : SetRecent(4, Recent(4)) - End With - End If + 'recent + Dim eRecent As XmlElement = Root.Item("Recent") + If eRecent IsNot Nothing Then + With eRecent + XMLLoadAttribute(.GetAttribute("Recent0"), Recent(0)) : SetRecent(0, Recent(0)) + XMLLoadAttribute(.GetAttribute("Recent1"), Recent(1)) : SetRecent(1, Recent(1)) + XMLLoadAttribute(.GetAttribute("Recent2"), Recent(2)) : SetRecent(2, Recent(2)) + XMLLoadAttribute(.GetAttribute("Recent3"), Recent(3)) : SetRecent(3, Recent(3)) + XMLLoadAttribute(.GetAttribute("Recent4"), Recent(4)) : SetRecent(4, Recent(4)) + End With + End If - 'edit - Dim eEdit As XmlElement = Root.Item("Edit") - If eEdit IsNot Nothing Then - With eEdit - XMLLoadAttribute(.GetAttribute("NTInput"), NTInput) - TBNTInput.Checked = NTInput - mnNTInput.Checked = NTInput - POBLong.Enabled = Not NTInput - POBLongShort.Enabled = Not NTInput + 'edit + Dim eEdit As XmlElement = Root.Item("Edit") + If eEdit IsNot Nothing Then + With eEdit + XMLLoadAttribute(.GetAttribute("NTInput"), NTInput) + TBNTInput.Checked = NTInput + mnNTInput.Checked = NTInput + POBLong.Enabled = Not NTInput + POBLongShort.Enabled = Not NTInput - LoadLocale(My.Application.Info.DirectoryPath & "\" & .GetAttribute("Language")) + LoadLocale(My.Application.Info.DirectoryPath & "\" & .GetAttribute("Language")) - 'XMLLoadAttribute(.GetAttribute("SortingMethod"), SortingMethod) + 'XMLLoadAttribute(.GetAttribute("SortingMethod"), SortingMethod) - XMLLoadAttribute(.GetAttribute("ErrorCheck"), ErrorCheck) - TBErrorCheck.Checked = ErrorCheck - TBErrorCheck_Click(TBErrorCheck, New System.EventArgs) + XMLLoadAttribute(.GetAttribute("ErrorCheck"), ErrorCheck) + TBErrorCheck.Checked = ErrorCheck + TBErrorCheck_Click(TBErrorCheck, New System.EventArgs) - XMLLoadAttribute(.GetAttribute("ShowFileName"), ShowFileName) - TBShowFileName.Checked = ShowFileName - TBShowFileName_Click(TBShowFileName, New System.EventArgs) + XMLLoadAttribute(.GetAttribute("ShowFileName"), ShowFileName) + TBShowFileName.Checked = ShowFileName + TBShowFileName_Click(TBShowFileName, New System.EventArgs) - XMLLoadAttribute(.GetAttribute("ShowWaveform"), ShowWaveform) - TBShowWaveform.Checked = ShowWaveform - TBShowWaveform_Click(TBShowWaveform, New System.EventArgs) + XMLLoadAttribute(.GetAttribute("ShowWaveform"), ShowWaveform) + TBShowWaveform.Checked = ShowWaveform + TBShowWaveform_Click(TBShowWaveform, New System.EventArgs) - XMLLoadAttribute(.GetAttribute("MiddleButtonMoveMethod"), MiddleButtonMoveMethod) - XMLLoadAttribute(.GetAttribute("AutoFocusMouseEnter"), AutoFocusMouseEnter) - XMLLoadAttribute(.GetAttribute("FirstClickDisabled"), FirstClickDisabled) + XMLLoadAttribute(.GetAttribute("MiddleButtonMoveMethod"), MiddleButtonMoveMethod) + XMLLoadAttribute(.GetAttribute("AutoFocusMouseEnter"), AutoFocusMouseEnter) + XMLLoadAttribute(.GetAttribute("FirstClickDisabled"), FirstClickDisabled) - XMLLoadAttribute(.GetAttribute("AutoSaveInterval"), AutoSaveInterval) - If AutoSaveInterval > 0 Then AutoSaveTimer.Interval = AutoSaveInterval Else AutoSaveTimer.Enabled = False + XMLLoadAttribute(.GetAttribute("AutoSaveInterval"), AutoSaveInterval) + If AutoSaveInterval > 0 Then AutoSaveTimer.Interval = AutoSaveInterval Else AutoSaveTimer.Enabled = False - XMLLoadAttribute(.GetAttribute("PreviewOnClick"), PreviewOnClick) - TBPreviewOnClick.Checked = PreviewOnClick - TBPreviewOnClick_Click(TBPreviewOnClick, New System.EventArgs) + XMLLoadAttribute(.GetAttribute("PreviewOnClick"), PreviewOnClick) + TBPreviewOnClick.Checked = PreviewOnClick + TBPreviewOnClick_Click(TBPreviewOnClick, New System.EventArgs) - XMLLoadAttribute(.GetAttribute("ClickStopPreview"), ClickStopPreview) + XMLLoadAttribute(.GetAttribute("ClickStopPreview"), ClickStopPreview) - XMLLoadAttribute(.GetAttribute("JackBPM"), ErrorJackBPM) - XMLLoadAttribute(.GetAttribute("JackTH"), ErrorJackTH) - End With - End If + XMLLoadAttribute(.GetAttribute("JackBPM"), ErrorJackBPM) + XMLLoadAttribute(.GetAttribute("JackTH"), ErrorJackTH) + End With + End If - 'save - Dim eSave As XmlElement = Root.Item("Save") - If eSave IsNot Nothing Then - With eSave - Select Case UCase(.GetAttribute("TextEncoding")) - Case "SYSTEM ANSI" : TextEncoding = System.Text.Encoding.Default - Case "LITTLE ENDIAN UTF16" : TextEncoding = System.Text.Encoding.Unicode - Case "ASCII" : TextEncoding = System.Text.Encoding.ASCII - Case "BIG ENDIAN UTF16" : TextEncoding = System.Text.Encoding.BigEndianUnicode - Case "LITTLE ENDIAN UTF32" : TextEncoding = System.Text.Encoding.UTF32 - Case "UTF7" : TextEncoding = System.Text.Encoding.UTF7 - Case "UTF8" : TextEncoding = System.Text.Encoding.UTF8 - Case "SJIS" : TextEncoding = System.Text.Encoding.GetEncoding(932) - Case "EUC-KR" : TextEncoding = System.Text.Encoding.GetEncoding(51949) - ' leave current encoding - ' Case Else - End Select + 'save + Dim eSave As XmlElement = Root.Item("Save") + If eSave IsNot Nothing Then + With eSave + Select Case UCase(.GetAttribute("TextEncoding")) + Case "SYSTEM ANSI" : TextEncoding = System.Text.Encoding.Default + Case "LITTLE ENDIAN UTF16" : TextEncoding = System.Text.Encoding.Unicode + Case "ASCII" : TextEncoding = System.Text.Encoding.ASCII + Case "BIG ENDIAN UTF16" : TextEncoding = System.Text.Encoding.BigEndianUnicode + Case "LITTLE ENDIAN UTF32" : TextEncoding = System.Text.Encoding.UTF32 + Case "UTF7" : TextEncoding = System.Text.Encoding.UTF7 + Case "UTF8" : TextEncoding = System.Text.Encoding.UTF8 + Case "SJIS" : TextEncoding = System.Text.Encoding.GetEncoding(932) + Case "EUC-KR" : TextEncoding = System.Text.Encoding.GetEncoding(51949) + ' leave current encoding + ' Case Else + End Select + + XMLLoadAttribute(.GetAttribute("BMSGridLimit"), BMSGridLimit) + XMLLoadAttribute(.GetAttribute("BeepWhileSaved"), BeepWhileSaved) + XMLLoadAttribute(.GetAttribute("BPMx1296"), BPMx1296) + XMLLoadAttribute(.GetAttribute("STOPx1296"), STOPx1296) + End With + End If - XMLLoadAttribute(.GetAttribute("BMSGridLimit"), BMSGridLimit) - XMLLoadAttribute(.GetAttribute("BeepWhileSaved"), BeepWhileSaved) - XMLLoadAttribute(.GetAttribute("BPMx1296"), BPMx1296) - XMLLoadAttribute(.GetAttribute("STOPx1296"), STOPx1296) - End With - End If + 'WAV + Dim eWAV As XmlElement = Root.Item("WAV") + If eWAV IsNot Nothing Then + With eWAV + XMLLoadAttribute(.GetAttribute("WAVMultiSelect"), WAVMultiSelect) + CWAVMultiSelect.Checked = WAVMultiSelect + CWAVMultiSelect_CheckedChanged(CWAVMultiSelect, New EventArgs) + + XMLLoadAttribute(.GetAttribute("WAVChangeLabel"), WAVChangeLabel) + CWAVChangeLabel.Checked = WAVChangeLabel + CWAVChangeLabel_CheckedChanged(CWAVChangeLabel, New EventArgs) + + Dim xInt As Integer = CInt(.GetAttribute("BeatChangeMode")) + Dim xBeatOpList As RadioButton() = {CBeatPreserve, CBeatMeasure, CBeatCut, CBeatScale} + If xInt >= 0 And xInt < xBeatOpList.Length Then + xBeatOpList(xInt).Checked = True + CBeatPreserve_Click(xBeatOpList(xInt), New System.EventArgs) + End If + End With + End If - 'WAV - Dim eWAV As XmlElement = Root.Item("WAV") - If eWAV IsNot Nothing Then - With eWAV - XMLLoadAttribute(.GetAttribute("WAVMultiSelect"), WAVMultiSelect) - CWAVMultiSelect.Checked = WAVMultiSelect - CWAVMultiSelect_CheckedChanged(CWAVMultiSelect, New EventArgs) - - XMLLoadAttribute(.GetAttribute("WAVChangeLabel"), WAVChangeLabel) - CWAVChangeLabel.Checked = WAVChangeLabel - CWAVChangeLabel_CheckedChanged(CWAVChangeLabel, New EventArgs) - - Dim xInt As Integer = CInt(.GetAttribute("BeatChangeMode")) - Dim xBeatOpList As RadioButton() = {CBeatPreserve, CBeatMeasure, CBeatCut, CBeatScale} - If xInt >= 0 And xInt < xBeatOpList.Length Then - xBeatOpList(xInt).Checked = True - CBeatPreserve_Click(xBeatOpList(xInt), New System.EventArgs) - End If - End With - End If + 'ShowHide + Dim eShowHide As XmlElement = Root.Item("ShowHide") + If eShowHide IsNot Nothing Then + With eShowHide + XMLLoadAttribute(.GetAttribute("showMenu"), mnSMenu.Checked) + XMLLoadAttribute(.GetAttribute("showTB"), mnSTB.Checked) + XMLLoadAttribute(.GetAttribute("showOpPanel"), mnSOP.Checked) + XMLLoadAttribute(.GetAttribute("showStatus"), mnSStatus.Checked) + XMLLoadAttribute(.GetAttribute("showLSplit"), mnSLSplitter.Checked) + XMLLoadAttribute(.GetAttribute("showRSplit"), mnSRSplitter.Checked) + End With + End If - 'ShowHide - Dim eShowHide As XmlElement = Root.Item("ShowHide") - If eShowHide IsNot Nothing Then - With eShowHide - XMLLoadAttribute(.GetAttribute("showMenu"), mnSMenu.Checked) - XMLLoadAttribute(.GetAttribute("showTB"), mnSTB.Checked) - XMLLoadAttribute(.GetAttribute("showOpPanel"), mnSOP.Checked) - XMLLoadAttribute(.GetAttribute("showStatus"), mnSStatus.Checked) - XMLLoadAttribute(.GetAttribute("showLSplit"), mnSLSplitter.Checked) - XMLLoadAttribute(.GetAttribute("showRSplit"), mnSRSplitter.Checked) - End With - End If + 'Grid + Dim eGrid As XmlElement = Root.Item("Grid") + If eGrid IsNot Nothing Then + With eGrid + XMLLoadAttribute(.GetAttribute("gSnap"), CGSnap.Checked) + XMLLoadAttribute(.GetAttribute("xmlDisableVertical"), CGDisableVertical.Checked) + XMLLoadAttribute(.GetAttribute("gWheel"), gWheel) + XMLLoadAttribute(.GetAttribute("gPgUpDn"), gPgUpDn) + XMLLoadAttribute(.GetAttribute("gShow"), CGShow.Checked) + XMLLoadAttribute(.GetAttribute("gShowS"), CGShowS.Checked) + XMLLoadAttribute(.GetAttribute("gShowBG"), CGShowBG.Checked) + XMLLoadAttribute(.GetAttribute("gShowM"), CGShowM.Checked) + XMLLoadAttribute(.GetAttribute("gShowV"), CGShowV.Checked) + XMLLoadAttribute(.GetAttribute("gShowMB"), CGShowMB.Checked) + XMLLoadAttribute(.GetAttribute("gShowC"), CGShowC.Checked) + XMLLoadAttribute(.GetAttribute("gBPM"), CGBPM.Checked) + XMLLoadAttribute(.GetAttribute("gSTOP"), CGSTOP.Checked) + XMLLoadAttribute(.GetAttribute("gSCROLL"), CGSCROLL.Checked) + XMLLoadAttribute(.GetAttribute("gBLP"), CGBLP.Checked) + XMLLoadAttribute(.GetAttribute("gP2"), CHPlayer.SelectedIndex) + XMLLoadAttribute(.GetAttribute("gCol"), CGB.Value) + XMLLoadAttribute(.GetAttribute("gxHeight"), CGHeight.Value) + XMLLoadAttribute(.GetAttribute("gxWidth"), CGWidth.Value) + XMLLoadAttribute(.GetAttribute("gSlash"), gSlash) + + Dim xgDivide As Integer = CInt(.GetAttribute("gDivide")) + If xgDivide >= CGDivide.Minimum And xgDivide <= CGDivide.Maximum Then CGDivide.Value = xgDivide + + Dim xgSub As Integer = CInt(.GetAttribute("gSub")) + If xgSub >= CGSub.Minimum And xgSub <= CGSub.Maximum Then CGSub.Value = xgSub + End With + End If - 'Grid - Dim eGrid As XmlElement = Root.Item("Grid") - If eGrid IsNot Nothing Then - With eGrid - XMLLoadAttribute(.GetAttribute("gSnap"), CGSnap.Checked) - XMLLoadAttribute(.GetAttribute("xmlDisableVertical"), CGDisableVertical.Checked) - XMLLoadAttribute(.GetAttribute("gWheel"), gWheel) - XMLLoadAttribute(.GetAttribute("gPgUpDn"), gPgUpDn) - XMLLoadAttribute(.GetAttribute("gShow"), CGShow.Checked) - XMLLoadAttribute(.GetAttribute("gShowS"), CGShowS.Checked) - XMLLoadAttribute(.GetAttribute("gShowBG"), CGShowBG.Checked) - XMLLoadAttribute(.GetAttribute("gShowM"), CGShowM.Checked) - XMLLoadAttribute(.GetAttribute("gShowV"), CGShowV.Checked) - XMLLoadAttribute(.GetAttribute("gShowMB"), CGShowMB.Checked) - XMLLoadAttribute(.GetAttribute("gShowC"), CGShowC.Checked) - XMLLoadAttribute(.GetAttribute("gBPM"), CGBPM.Checked) - XMLLoadAttribute(.GetAttribute("gSTOP"), CGSTOP.Checked) - XMLLoadAttribute(.GetAttribute("gSCROLL"), CGSCROLL.Checked) - XMLLoadAttribute(.GetAttribute("gBLP"), CGBLP.Checked) - XMLLoadAttribute(.GetAttribute("gP2"), CHPlayer.SelectedIndex) - XMLLoadAttribute(.GetAttribute("gCol"), CGB.Value) - XMLLoadAttribute(.GetAttribute("gxHeight"), CGHeight.Value) - XMLLoadAttribute(.GetAttribute("gxWidth"), CGWidth.Value) - XMLLoadAttribute(.GetAttribute("gSlash"), gSlash) - - Dim xgDivide As Integer = CInt(.GetAttribute("gDivide")) - If xgDivide >= CGDivide.Minimum And xgDivide <= CGDivide.Maximum Then CGDivide.Value = xgDivide - - Dim xgSub As Integer = CInt(.GetAttribute("gSub")) - If xgSub >= CGSub.Minimum And xgSub <= CGSub.Maximum Then CGSub.Value = xgSub - End With - End If + 'WaveForm + Dim eWaveForm As XmlElement = Root.Item("WaveForm") + If eWaveForm IsNot Nothing Then + With eWaveForm + XMLLoadAttribute(.GetAttribute("wLock"), BWLock.Checked) + XMLLoadAttribute(.GetAttribute("wPosition"), TWPosition.Value) + XMLLoadAttribute(.GetAttribute("wLeft"), TWLeft.Value) + XMLLoadAttribute(.GetAttribute("wWidth"), TWWidth.Value) + XMLLoadAttribute(.GetAttribute("wPrecision"), TWPrecision.Value) + End With + End If - 'WaveForm - Dim eWaveForm As XmlElement = Root.Item("WaveForm") - If eWaveForm IsNot Nothing Then - With eWaveForm - XMLLoadAttribute(.GetAttribute("wLock"), BWLock.Checked) - XMLLoadAttribute(.GetAttribute("wPosition"), TWPosition.Value) - XMLLoadAttribute(.GetAttribute("wLeft"), TWLeft.Value) - XMLLoadAttribute(.GetAttribute("wWidth"), TWWidth.Value) - XMLLoadAttribute(.GetAttribute("wPrecision"), TWPrecision.Value) - End With - End If + 'Player + Dim ePlayer As XmlElement = Root.Item("Player") + If ePlayer IsNot Nothing Then + With ePlayer + XMLLoadAttribute(.GetAttribute("CurrentPlayer"), CurrentPlayer) - 'Player - Dim ePlayer As XmlElement = Root.Item("Player") - If ePlayer IsNot Nothing Then - With ePlayer - XMLLoadAttribute(.GetAttribute("CurrentPlayer"), CurrentPlayer) + Dim xCount As Integer = CInt(.GetAttribute("Count")) + If xCount > 0 Then ReDim Preserve pArgs(xCount - 1) + End With - Dim xCount As Integer = CInt(.GetAttribute("Count")) - If xCount > 0 Then ReDim Preserve pArgs(xCount - 1) - End With + For Each eePlayer As XmlElement In ePlayer.ChildNodes + Me.XMLLoadPlayer(eePlayer) + Next + End If - For Each eePlayer As XmlElement In ePlayer.ChildNodes - Me.XMLLoadPlayer(eePlayer) - Next - End If + Dim eTotal As XmlElement = Root.Item("Total") + If eTotal IsNot Nothing Then + With eTotal + XMLLoadAttribute(.GetAttribute("Option"), TotalOption) + XMLLoadAttribute(.GetAttribute("Multiplier"), TotalMultiplier) + XMLLoadAttribute(.GetAttribute("GlobalMultiplier"), TotalGlobalMultiplier) + XMLLoadAttribute(.GetAttribute("RecommendedTextDisplay"), TotalRecommendedTextDisplay) + End With + End If - Dim eTotal As XmlElement = Root.Item("Total") - If eTotal IsNot Nothing Then - With eTotal - XMLLoadAttribute(.GetAttribute("Option"), TotalOption) - XMLLoadAttribute(.GetAttribute("Multiplier"), TotalMultiplier) - XMLLoadAttribute(.GetAttribute("GlobalMultiplier"), TotalGlobalMultiplier) - XMLLoadAttribute(.GetAttribute("RecommendedTextDisplay"), TotalRecommendedTextDisplay) - End With - End If + Dim eKeybindings As XmlElement = Root.Item("KeyBindings") + If eKeybindings IsNot Nothing Then + With eKeybindings + Dim xBound = CInt(.GetAttribute("Count")) + If xBound > UBound(Keybindings) Then ReDim Preserve Keybindings(xBound) - Dim eKeybindings As XmlElement = Root.Item("KeyBindings") - If eKeybindings IsNot Nothing Then - With eKeybindings - Dim xBound = CInt(.GetAttribute("Count")) - If xBound > UBound(Keybindings) Then ReDim Preserve Keybindings(xBound) + For Each eeKeybindings As XmlElement In .ChildNodes + XMLLoadKeybinding(eeKeybindings) + Next + End With + End If - For Each eeKeybindings As XmlElement In .ChildNodes - XMLLoadKeybinding(eeKeybindings) + 'Columns + Dim eColumns As XmlElement = Root.Item("Columns") + If eColumns IsNot Nothing Then + For Each eeCol As XmlElement In eColumns.ChildNodes + Me.XMLLoadColumn(eeCol) Next - End With - End If - - 'Columns - Dim eColumns As XmlElement = Root.Item("Columns") - If eColumns IsNot Nothing Then - For Each eeCol As XmlElement In eColumns.ChildNodes - Me.XMLLoadColumn(eeCol) - Next - End If + End If - 'VisualSettings - Dim eVisualSettings As XmlElement = Root.Item("VisualSettings") - If eVisualSettings IsNot Nothing Then - With eVisualSettings - XMLLoadElementValue(.Item("ColumnTitle"), vo.ColumnTitle.Color) - XMLLoadElementValue(.Item("ColumnTitleFont"), vo.ColumnTitleFont) - XMLLoadElementValue(.Item("Bg"), vo.Bg.Color) - XMLLoadElementValue(.Item("Grid"), vo.pGrid.Color) - XMLLoadElementValue(.Item("Sub"), vo.pSub.Color) - XMLLoadElementValue(.Item("VLine"), vo.pVLine.Color) - XMLLoadElementValue(.Item("MLine"), vo.pMLine.Color) - - XMLLoadElementValue(.Item("BGMWav"), vo.pBGMWav.Color) - TWTransparency.Value = vo.pBGMWav.Color.A - TWTransparency2.Value = vo.pBGMWav.Color.A - TWSaturation.Value = CDec(vo.pBGMWav.Color.GetSaturation * 1000) - TWSaturation2.Value = CInt(vo.pBGMWav.Color.GetSaturation * 1000) - - XMLLoadElementValue(.Item("SelBox"), vo.SelBox.Color) - XMLLoadElementValue(.Item("TSCursor"), vo.PECursor.Color) - XMLLoadElementValue(.Item("TSHalf"), vo.PEHalf.Color) - XMLLoadElementValue(.Item("TSDeltaMouseOver"), vo.PEDeltaMouseOver) - XMLLoadElementValue(.Item("TSMouseOver"), vo.PEMouseOver.Color) - XMLLoadElementValue(.Item("TSSel"), vo.PESel.Color) - XMLLoadElementValue(.Item("TSBPM"), vo.PEBPM.Color) - XMLLoadElementValue(.Item("TSBPMFont"), vo.PEBPMFont) - XMLLoadElementValue(.Item("MiddleDeltaRelease"), vo.MiddleDeltaRelease) - XMLLoadElementValue(.Item("kHeight"), vo.kHeight) - XMLLoadElementValue(.Item("kFont"), vo.kFont) - XMLLoadElementValue(.Item("kMFont"), vo.kMFont) - XMLLoadElementValue(.Item("kLabelVShift"), vo.kLabelVShift) - XMLLoadElementValue(.Item("kLabelHShift"), vo.kLabelHShift) - XMLLoadElementValue(.Item("kLabelHShiftL"), vo.kLabelHShiftL) - XMLLoadElementValue(.Item("kMouseOver"), vo.kMouseOver.Color) - XMLLoadElementValue(.Item("kMouseOverE"), vo.kMouseOverE.Color) - XMLLoadElementValue(.Item("kSelected"), vo.kSelected.Color) - XMLLoadElementValue(.Item("kOpacity"), vo.kOpacity) - End With + 'VisualSettings + Dim eVisualSettings As XmlElement = Root.Item("VisualSettings") + If eVisualSettings IsNot Nothing Then + With eVisualSettings + XMLLoadElementValue(.Item("ColumnTitle"), vo.ColumnTitle.Color) + XMLLoadElementValue(.Item("ColumnTitleFont"), vo.ColumnTitleFont) + XMLLoadElementValue(.Item("Bg"), vo.Bg.Color) + XMLLoadElementValue(.Item("Grid"), vo.pGrid.Color) + XMLLoadElementValue(.Item("Sub"), vo.pSub.Color) + XMLLoadElementValue(.Item("VLine"), vo.pVLine.Color) + XMLLoadElementValue(.Item("MLine"), vo.pMLine.Color) + + XMLLoadElementValue(.Item("BGMWav"), vo.pBGMWav.Color) + TWTransparency.Value = vo.pBGMWav.Color.A + TWTransparency2.Value = vo.pBGMWav.Color.A + TWSaturation.Value = CDec(vo.pBGMWav.Color.GetSaturation * 1000) + TWSaturation2.Value = CInt(vo.pBGMWav.Color.GetSaturation * 1000) + + XMLLoadElementValue(.Item("SelBox"), vo.SelBox.Color) + XMLLoadElementValue(.Item("TSCursor"), vo.PECursor.Color) + XMLLoadElementValue(.Item("TSHalf"), vo.PEHalf.Color) + XMLLoadElementValue(.Item("TSDeltaMouseOver"), vo.PEDeltaMouseOver) + XMLLoadElementValue(.Item("TSMouseOver"), vo.PEMouseOver.Color) + XMLLoadElementValue(.Item("TSSel"), vo.PESel.Color) + XMLLoadElementValue(.Item("TSBPM"), vo.PEBPM.Color) + XMLLoadElementValue(.Item("TSBPMFont"), vo.PEBPMFont) + XMLLoadElementValue(.Item("MiddleDeltaRelease"), vo.MiddleDeltaRelease) + XMLLoadElementValue(.Item("kHeight"), vo.kHeight) + XMLLoadElementValue(.Item("kFont"), vo.kFont) + XMLLoadElementValue(.Item("kMFont"), vo.kMFont) + XMLLoadElementValue(.Item("kLabelVShift"), vo.kLabelVShift) + XMLLoadElementValue(.Item("kLabelHShift"), vo.kLabelHShift) + XMLLoadElementValue(.Item("kLabelHShiftL"), vo.kLabelHShiftL) + XMLLoadElementValue(.Item("kMouseOver"), vo.kMouseOver.Color) + XMLLoadElementValue(.Item("kMouseOverE"), vo.kMouseOverE.Color) + XMLLoadElementValue(.Item("kSelected"), vo.kSelected.Color) + XMLLoadElementValue(.Item("kOpacity"), vo.kOpacity) + End With + End If End If -EndOfSub: UpdateColumnsX() FileStream.Close() 'File.Delete(xTempFileName) diff --git a/iBMSC/MainWindow.vb b/iBMSC/MainWindow.vb index c7a9cb4d2..476277f13 100644 --- a/iBMSC/MainWindow.vb +++ b/iBMSC/MainWindow.vb @@ -1307,32 +1307,38 @@ Public Class MainWindow Dim xStr() As String = Environment.GetCommandLineArgs 'Dim xStr() As String = {Application.ExecutablePath, "C:\Users\User\Desktop\yang run xuan\SoFtwArES\Games\O2Mania\music\SHOOT!\shoot! -NM-.bms"} + Dim L1000 As Boolean = False + If xStr.Length = 2 Then ReadFile(xStr(1)) - If LCase(Path.GetExtension(xStr(1))) = ".ibmsc" AndAlso GetFileName(xStr(1)).StartsWith("AutoSave_", True, Nothing) Then GoTo 1000 + If LCase(Path.GetExtension(xStr(1))) = ".ibmsc" AndAlso GetFileName(xStr(1)).StartsWith("AutoSave_", True, Nothing) Then L1000 = True End If 'pIsSaved.Visible = Not IsSaved IsInitializing = False - If Process.GetProcessesByName(Process.GetCurrentProcess.ProcessName).Length > 1 Then GoTo 1000 - Dim xFiles() As FileInfo = My.Computer.FileSystem.GetDirectoryInfo(My.Application.Info.DirectoryPath).GetFiles("AutoSave_*.IBMSC") - If xFiles Is Nothing OrElse xFiles.Length = 0 Then GoTo 1000 + If Not L1000 Then + If Process.GetProcessesByName(Process.GetCurrentProcess.ProcessName).Length <= 1 Then - 'Me.TopMost = True - If MsgBox(Replace(Strings.Messages.RestoreAutosavedFile, "{}", xFiles.Length.ToString()), MsgBoxStyle.YesNo Or MsgBoxStyle.MsgBoxSetForeground) = MsgBoxResult.Yes Then - For Each xF As FileInfo In xFiles - 'MsgBox(xF.FullName) - System.Diagnostics.Process.Start(Application.ExecutablePath, """" & xF.FullName & """") - Next - End If + Dim xFiles() As FileInfo = My.Computer.FileSystem.GetDirectoryInfo(My.Application.Info.DirectoryPath).GetFiles("AutoSave_*.IBMSC") + If xFiles IsNot Nothing AndAlso xFiles.Length > 0 Then - For Each xF As FileInfo In xFiles - ReDim Preserve pTempFileNames(UBound(pTempFileNames) + 1) - pTempFileNames(UBound(pTempFileNames)) = xF.FullName - Next + 'Me.TopMost = True + If MsgBox(Replace(Strings.Messages.RestoreAutosavedFile, "{}", xFiles.Length.ToString()), MsgBoxStyle.YesNo Or MsgBoxStyle.MsgBoxSetForeground) = MsgBoxResult.Yes Then + For Each xF As FileInfo In xFiles + 'MsgBox(xF.FullName) + System.Diagnostics.Process.Start(Application.ExecutablePath, """" & xF.FullName & """") + Next + End If + + For Each xF As FileInfo In xFiles + ReDim Preserve pTempFileNames(UBound(pTempFileNames) + 1) + pTempFileNames(UBound(pTempFileNames)) = xF.FullName + Next + End If + End If + End If -1000: IsInitializing = False POStatusRefresh() Me.ResumeLayout() @@ -1408,29 +1414,31 @@ Public Class MainWindow If Notes(j).ColumnIndex <> Notes(i).ColumnIndex Then Continue For If Notes(j).VPosition = Notes(i).VPosition Then Notes(i).HasError = True - GoTo EndSearch + Exit For ElseIf Notes(j).LongNote And Notes(j).LNPair = i Then Notes(i).LNPair = j - GoTo EndSearch + Exit For Else Exit For End If Next - For j = i + 1 To UBound(Notes) - If Notes(j).ColumnIndex <> Notes(i).ColumnIndex Then Continue For - Notes(i).LNPair = j - Notes(j).LNPair = i - If Not Notes(j).LongNote AndAlso Notes(j).Value \ 10000 <> LnObj Then - Notes(j).HasError = True - End If - Exit For - Next + If Not Notes(i).HasError Or Notes(i).LNPair = 0 Then - If j = UBound(Notes) + 1 Then - Notes(i).HasError = True + For j = i + 1 To UBound(Notes) + If Notes(j).ColumnIndex <> Notes(i).ColumnIndex Then Continue For + Notes(i).LNPair = j + Notes(j).LNPair = i + If Not Notes(j).LongNote AndAlso Notes(j).Value \ 10000 <> LnObj Then + Notes(j).HasError = True + End If + Exit For + Next + + If j = UBound(Notes) + 1 Then + Notes(i).HasError = True + End If End If -EndSearch: ElseIf Notes(i).Value \ 10000 = LnObj And Not IsColumnNumeric(Notes(i).ColumnIndex) Then @@ -2633,31 +2641,32 @@ EndSearch: Case Else : row = 5 End Select + Do While row <> 6 + If Not NTInput Then + If Not .LongNote Then data(row, 0) += 1 + If .LongNote Then + If dataLNToggle Then data(row, 1) += 1 + dataLNToggle = Not dataLNToggle + End If + If .Value \ 10000 = LnObj Then data(row, 2) += 1 + If .Hidden Then data(row, 3) += 1 + If .HasError Then data(row, 4) += 1 + data(row, 5) += 1 -StartCount: If Not NTInput Then - If Not .LongNote Then data(row, 0) += 1 - If .LongNote Then - If dataLNToggle Then data(row, 1) += 1 - dataLNToggle = Not dataLNToggle - End If - If .Value \ 10000 = LnObj Then data(row, 2) += 1 - If .Hidden Then data(row, 3) += 1 - If .HasError Then data(row, 4) += 1 - data(row, 5) += 1 - - Else - Dim noteUnit As Integer = 1 - If .Length = 0 Then data(row, 0) += 1 - If .Length <> 0 Then data(row, 1) += 2 : noteUnit = 2 + Else + Dim noteUnit As Integer = 1 + If .Length = 0 Then data(row, 0) += 1 + If .Length <> 0 Then data(row, 1) += 2 : noteUnit = 2 - If .Value \ 10000 = LnObj Then data(row, 2) += noteUnit - If .Hidden Then data(row, 3) += noteUnit - If .HasError Then data(row, 4) += noteUnit - data(row, 5) += noteUnit + If .Value \ 10000 = LnObj Then data(row, 2) += noteUnit + If .Hidden Then data(row, 3) += noteUnit + If .HasError Then data(row, 4) += noteUnit + data(row, 5) += noteUnit - End If + End If - If row <> 6 Then row = 6 : GoTo StartCount + row = 6 + Loop End With Next @@ -2721,7 +2730,7 @@ StartCount: If Not NTInput Then End Select -StartCount: Dim idWAV As Integer = CInt(.Value / 10000) + Dim idWAV As Integer = CInt(.Value / 10000) If Not NTInput Then If Not (.LongNote Or .Hidden Or .Landmine Or .Hidden Or .Value \ 10000 = LnObj Or .Comment) Then data(row, 0) += 1 @@ -3097,14 +3106,11 @@ StartCount: Dim idWAV As Integer = CInt(.Value / 10000) 'xRedo &= sCmdKM(niA1, .VPosition, .Value, IIf(NTInput, .Length, .LongNote), .Hidden, RealColumnToEnabled(niA7) - RealColumnToEnabled(niA1), 0, True) & vbCrLf 'xUndo &= sCmdKM(niA7, .VPosition, .Value, IIf(NTInput, .Length, .LongNote), .Hidden, RealColumnToEnabled(niA1) - RealColumnToEnabled(niA7), 0, True) & vbCrLf - ' Array 0: Unmodified array + ' gXKeyCol: Unmodified array ' Array 1: Modified array based on range ' Array R: Array 1 reversed - Dim xniArray0() As Integer = gXKeyCol - ' Dim xniArray1 = Integer() ' xniArray0 ' New function: Declare an array to see the range of selected notes. B columns ignored. - Dim xRangeL As Integer = niB ' Big number Dim xRangeU As Integer = 0 ' Smol number @@ -3115,44 +3121,17 @@ StartCount: Dim idWAV As Integer = CInt(.Value / 10000) If xRangeU < Notes(xI1).ColumnIndex Then xRangeU = Notes(xI1).ColumnIndex Next - ' Modify xniArray based on range - ' Out of range - If xRangeL > xniArray0(UBound(xniArray0)) Or xRangeU < xniArray0(0) Then GoTo DoNothing - - ' Semi-in Range - ' Cut off left side - If xRangeL < niA1 Then - xRangeL = 0 - GoTo MirrorSkip1 - End If - - For xI1 = 0 To UBound(xniArray0) - If xniArray0(xI1) = xRangeL Then - xRangeL = xI1 - Exit For - End If - Next - -MirrorSkip1: - ' Cut off right side - If xRangeU > niD8 Then - xRangeU = xniArray0.Length - GoTo MirrorSkip2 - End If - - For xI1 = 0 To UBound(xniArray0) - If xniArray0(xI1) = xRangeU Then - xRangeU = xI1 + 1 - Exit For + Dim xniArray1(UBound(gXKeyCol)) As Integer + Dim xIA1 As Integer = -1 + For Each ni In gXKeyCol + If xRangeL <= ni AndAlso ni <= xRangeU Then + xIA1 += 1 + xniArray1(xIA1) = ni End If Next + If xIA1 <= 0 Then Exit Sub -MirrorSkip2: - - Dim xniArray1(xRangeU - xRangeL - 1) As Integer - For xI1 = 0 To xRangeU - xRangeL - 1 - xniArray1(xI1) = xniArray0(xI1 + xRangeL) - Next + ReDim Preserve xniArray1(xIA1) Dim xniArrayR = xniArray1.Reverse() Dim xniArrayLen = xniArray1.Length @@ -3176,8 +3155,6 @@ MirrorSkip2: Notes(xI1).ColumnIndex = xCol Next -DoNothing: - AddUndo(xUndo, xBaseRedo.Next) UpdatePairing() RefreshPanelAll() @@ -3194,6 +3171,7 @@ DoNothing: ' Array 1: Unmodified array ' Array R: Flipped array + Dim xniArray1 = New Integer() {niA1, niA2, niA3, niA4, niA5, niA6, niA7, niA8, niD1, niD2, niD3, niD4, niD5, niD6, niD7, niD8} Dim xniArrayR = New Integer() {niD8, niD1, niD2, niD3, niD4, niD5, niD6, niD7, niA2, niA3, niA4, niA5, niA6, niA7, niA8, niA1} @@ -3230,14 +3208,11 @@ DoNothing: Dim xRedo As UndoRedo.LinkedURCmd = New UndoRedo.Void Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo - ' Array 0: Unmodified array + ' gXKeyCol: Unmodified array ' Array 1: Modified array based on range ' Array R: Array 1 randomized - Dim xniArray0() As Integer = gXKeyCol - ' Dim xniArray1 = Integer() ' xniArray0 ' New function: Declare an array to see the range of selected notes. B columns ignored. - Dim xRangeL As Integer = niB ' Big number Dim xRangeU As Integer = 0 ' Smol number @@ -3248,43 +3223,17 @@ DoNothing: If xRangeU < Notes(xI1).ColumnIndex Then xRangeU = Notes(xI1).ColumnIndex Next - ' Modify xniArray based on range - ' Out of range - If xRangeL > xniArray0(UBound(xniArray0)) Or xRangeU < xniArray0(0) Then GoTo DoNothing - - ' Semi-in Range - ' Cut off left side - If xRangeL < niA1 Then - xRangeL = 0 - GoTo Skip1 - End If - - For xI1 = 0 To UBound(xniArray0) - If xniArray0(xI1) = xRangeL Then - xRangeL = xI1 - Exit For - End If - Next - -Skip1: - ' Cut off right side - If xRangeU > niD8 Then - xRangeU = xniArray0.Length - GoTo Skip2 - End If - - For xI1 = 0 To UBound(xniArray0) - If xniArray0(xI1) = xRangeU Then - xRangeU = xI1 + 1 - Exit For + Dim xniArray1(UBound(gXKeyCol)) As Integer + Dim xIA1 As Integer = -1 + For Each ni In gXKeyCol + If xRangeL <= ni AndAlso ni <= xRangeU Then + xIA1 += 1 + xniArray1(xIA1) = ni End If Next + If xIA1 <= 0 Then Exit Sub -Skip2: - Dim xniArray1(xRangeU - xRangeL - 1) As Integer - For xI1 = 0 To xRangeU - xRangeL - 1 - xniArray1(xI1) = xniArray0(xI1 + xRangeL) - Next + ReDim Preserve xniArray1(xIA1) Dim xniArrayR() As Integer = CType(xniArray1.Clone(), Integer()) @@ -3371,9 +3320,6 @@ Skip2: Loop End Select - -DoNothing: - AddUndo(xUndo, xBaseRedo.Next) UpdatePairing() RefreshPanelAll() @@ -3391,81 +3337,47 @@ DoNothing: Dim xniArrayLen = xniArray1.Length - Dim vPos As Double = -1 + Dim vPos As Double Dim xIArray(0) As Integer Dim xValueArray(0) As Long - Dim xI3 As Integer = 0 Dim xITemp As Integer - Dim xValueTemp As Long - Dim xSorted As Boolean = False - For xI1 = 1 To UBound(Notes) - - If Not Notes(xI1).Selected Or Notes(xI1).Ghost Then Continue For - ' If starting a new row or same VPosition - If xI3 = 0 Or vPos = Notes(xI1).VPosition Then -RestartSorting: xSorted = False - ReDim Preserve xIArray(xI3) - ReDim Preserve xValueArray(xI3) - vPos = Notes(xI1).VPosition - xIArray(xI3) = xI1 - xValueArray(xI3) = Notes(xI1).Value - xI3 += 1 - Else - ' Start sorting in a row - ' xI4: First item in the sort loop, xI2: The nth swap/comparison - ' Sorting process (4 items, c for comparison between 2 items): - ' cccc - ' ccc - ' cc - ' c - - For xI4 = 0 To xI3 - 2 - For xI2 = 0 To xI3 - 2 - xI4 - If xValueArray(xI2) > xValueArray(xI2 + 1) Then - xITemp = xIArray(xI2 + 1) - xIArray(xI2 + 1) = xIArray(xI2) - xIArray(xI2) = xITemp - - xValueTemp = xValueArray(xI2 + 1) - xValueArray(xI2 + 1) = xValueArray(xI2) - xValueArray(xI2) = xValueTemp - End If - Next - Next - - For xI4 = 0 To xI3 - 1 - Me.RedoMoveNote(Notes(xIArray(xI4)), xniArray1(xI4), Notes(xIArray(xI4)).VPosition, xUndo, xRedo) - Notes(xIArray(xI4)).ColumnIndex = xniArray1(xI4) - ' Me.RedoMoveNote(Notes(xI1), xCol, Notes(xI1).VPosition, xUndo, xRedo) - ' Notes(xI1).ColumnIndex = xCol - Next - xI3 = 0 - xSorted = True - GoTo RestartSorting - End If - Next + ' Find array of indexes of selected notes in the same vPosition + xI1 = 1 + Dim xI1Arr(-1) As Integer + ' Find the first index of selected notes + Do While xI1 <= UBound(Notes) + If Not Notes(xI1).Selected Or Notes(xI1).Ghost Or Notes(xI1).ColumnIndex < xniArray1(0) Or Notes(xI1).ColumnIndex > xniArray1(UBound(xniArray1)) Then xI1 += 1 : Continue Do + ' Begin building array until vPosition changes + vPos = Notes(xI1).VPosition + Do While xI1 <= UBound(Notes) AndAlso Math.Abs(Notes(xI1).VPosition - vPos) < ErrorJackSpeed + If Not Notes(xI1).Selected Or Notes(xI1).Ghost Or Notes(xI1).ColumnIndex < xniArray1(0) Or Notes(xI1).ColumnIndex > xniArray1(UBound(xniArray1)) Then xI1 += 1 : Continue Do + ReDim Preserve xI1Arr(xI1Arr.Length) + xI1Arr(UBound(xI1Arr)) = xI1 + xI1 += 1 + Loop - If Not xSorted Then - For xI4 = 0 To xI3 - 2 - For xI2 = xI4 To xI3 - 2 - If xValueArray(xI2) > xValueArray(xI2 + 1) Then - xITemp = xIArray(xI2 + 1) - xIArray(xI2 + 1) = xIArray(xI2) - xIArray(xI2) = xITemp - - xValueTemp = xValueArray(xI2 + 1) - xValueArray(xI2 + 1) = xValueArray(xI2) - xValueArray(xI2) = xValueTemp + ' Sort columns, insertion sort + For xI2 = 1 To UBound(xI1Arr) + For xI3 = xI2 To 1 Step -1 + If Notes(xI1Arr(xI2 - 1)).Value > Notes(xI1Arr(xI2)).Value Then + xITemp = xI1Arr(xI2 - 1) + xI1Arr(xI2 - 1) = xI1Arr(xI2) + xI1Arr(xI2) = xITemp + Else + Exit For End If Next Next - For xI4 = 0 To xI3 - 1 - Me.RedoMoveNote(Notes(xIArray(xI4)), xniArray1(xI4), Notes(xIArray(xI4)).VPosition, xUndo, xRedo) - Notes(xIArray(xI4)).ColumnIndex = xniArray1(xI4) + ' Move notes + For xI2 = 0 To UBound(xI1Arr) + Dim xI2I = xI1Arr(xI2) + Me.RedoMoveNote(Notes(xI2I), xniArray1(xI2), Notes(xI2I).VPosition, xUndo, xRedo) + Notes(xI2I).ColumnIndex = xniArray1(xI2) Next - End If + ReDim xI1Arr(-1) + Loop AddUndo(xUndo, xBaseRedo.Next) UpdatePairing() @@ -4340,33 +4252,37 @@ RestartSorting: xSorted = False If xLbl Then Dim xStr As String = UCase(Trim(InputBox(Strings.Messages.PromptEnter, Me.Text))) - If Len(xStr) = 0 Then GoTo Jump2 - If xStr = "00" Or xStr = "0" Then GoTo Jump1 - If Not Len(xStr) = 1 And Not Len(xStr) = 2 Then GoTo Jump1 + If Len(xStr) <> 0 Then + Dim Valid As Boolean = True - Dim xI3 As Integer = Asc(Mid(xStr, 1, 1)) - If Not ((xI3 >= 48 And xI3 <= 57) Or (xI3 >= 65 And xI3 <= 90)) Then GoTo Jump1 - If Len(xStr) = 2 Then - Dim xI4 As Integer = Asc(Mid(xStr, 2, 1)) - If Not ((xI4 >= 48 And xI4 <= 57) Or (xI4 >= 65 And xI4 <= 90)) Then GoTo Jump1 - End If - Dim xVal As Integer = C36to10(xStr) * 10000 + If xStr = "00" Or xStr = "0" Then Valid = False + If Not Len(xStr) = 1 And Not Len(xStr) = 2 Then Valid = False - Dim xUndo As UndoRedo.LinkedURCmd = Nothing - Dim xRedo As UndoRedo.LinkedURCmd = New UndoRedo.Void - Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo + Dim xI3 As Integer = Asc(Mid(xStr, 1, 1)) + If Not ((xI3 >= 48 And xI3 <= 57) Or (xI3 >= 65 And xI3 <= 90)) Then Valid = False + If Len(xStr) = 2 Then + Dim xI4 As Integer = Asc(Mid(xStr, 2, 1)) + If Not ((xI4 >= 48 And xI4 <= 57) Or (xI4 >= 65 And xI4 <= 90)) Then Valid = False + End If - For xI1 = 1 To UBound(Notes) - If IsColumnNumeric(Notes(xI1).ColumnIndex) Or Not Notes(xI1).Selected Or Notes(xI1).Ghost Then Continue For + If Valid Then + Dim xVal As Integer = C36to10(xStr) * 10000 - Me.RedoRelabelNote(Notes(xI1), xVal, xUndo, xRedo) - Notes(xI1).Value = xVal - Next - AddUndo(xUndo, xBaseRedo.Next) - GoTo Jump2 -Jump1: - MsgBox(Strings.Messages.InvalidLabel, MsgBoxStyle.Critical, Strings.Messages.Err) -Jump2: + Dim xUndo As UndoRedo.LinkedURCmd = Nothing + Dim xRedo As UndoRedo.LinkedURCmd = New UndoRedo.Void + Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo + + For xI1 = 1 To UBound(Notes) + If IsColumnNumeric(Notes(xI1).ColumnIndex) Or Not Notes(xI1).Selected Or Notes(xI1).Ghost Then Continue For + + Me.RedoRelabelNote(Notes(xI1), xVal, xUndo, xRedo) + Notes(xI1).Value = xVal + Next + AddUndo(xUndo, xBaseRedo.Next) + Else + MsgBox(Strings.Messages.InvalidLabel, MsgBoxStyle.Critical, Strings.Messages.Err) + End If + End If End If RefreshPanelAll() @@ -4852,25 +4768,25 @@ Jump2: LWAV.Items.Item(xI1) = C10to36(xI1 + 1) & ": " & hWAV(xI1 + 1) LWAV.Items.Item(xI1 - 1) = C10to36(xI1) & ": " & hWAV(xI1) - If Not WAVChangeLabel Then GoTo 1100 + If WAVChangeLabel Then + Dim xL1 As String = C10to36(xI1) + Dim xL2 As String = C10to36(xI1 + 1) + For xI2 As Integer = 1 To UBound(Notes) + If IsColumnNumeric(Notes(xI2).ColumnIndex) Then Continue For - Dim xL1 As String = C10to36(xI1) - Dim xL2 As String = C10to36(xI1 + 1) - For xI2 As Integer = 1 To UBound(Notes) - If IsColumnNumeric(Notes(xI2).ColumnIndex) Then Continue For + If C10to36(Notes(xI2).Value \ 10000) = xL1 Then + Me.RedoRelabelNote(Notes(xI2), xI1 * 10000 + 10000, xUndo, xRedo) + Notes(xI2).Value = xI1 * 10000 + 10000 - If C10to36(Notes(xI2).Value \ 10000) = xL1 Then - Me.RedoRelabelNote(Notes(xI2), xI1 * 10000 + 10000, xUndo, xRedo) - Notes(xI2).Value = xI1 * 10000 + 10000 + ElseIf C10to36(Notes(xI2).Value \ 10000) = xL2 Then + Me.RedoRelabelNote(Notes(xI2), xI1 * 10000, xUndo, xRedo) + Notes(xI2).Value = xI1 * 10000 - ElseIf C10to36(Notes(xI2).Value \ 10000) = xL2 Then - Me.RedoRelabelNote(Notes(xI2), xI1 * 10000, xUndo, xRedo) - Notes(xI2).Value = xI1 * 10000 - - End If - Next + End If + Next -1100: xIndices(xIndex) += -1 + End If + xIndices(xIndex) += -1 End If Next @@ -4911,25 +4827,27 @@ Jump2: LWAV.Items.Item(xI1) = C10to36(xI1 + 1) & ": " & hWAV(xI1 + 1) LWAV.Items.Item(xI1 + 1) = C10to36(xI1 + 2) & ": " & hWAV(xI1 + 2) - If Not WAVChangeLabel Then GoTo 1100 + If WAVChangeLabel Then - Dim xL1 As String = C10to36(xI1 + 2) - Dim xL2 As String = C10to36(xI1 + 1) - For xI2 As Integer = 1 To UBound(Notes) - If IsColumnNumeric(Notes(xI2).ColumnIndex) Then Continue For - If C10to36(Notes(xI2).Value \ 10000) = xL1 Then - Me.RedoRelabelNote(Notes(xI2), xI1 * 10000 + 10000, xUndo, xRedo) - Notes(xI2).Value = xI1 * 10000 + 10000 + Dim xL1 As String = C10to36(xI1 + 2) + Dim xL2 As String = C10to36(xI1 + 1) + For xI2 As Integer = 1 To UBound(Notes) + If IsColumnNumeric(Notes(xI2).ColumnIndex) Then Continue For - ElseIf C10to36(Notes(xI2).Value \ 10000) = xL2 Then - Me.RedoRelabelNote(Notes(xI2), xI1 * 10000 + 20000, xUndo, xRedo) - Notes(xI2).Value = xI1 * 10000 + 20000 + If C10to36(Notes(xI2).Value \ 10000) = xL1 Then + Me.RedoRelabelNote(Notes(xI2), xI1 * 10000 + 10000, xUndo, xRedo) + Notes(xI2).Value = xI1 * 10000 + 10000 - End If - Next + ElseIf C10to36(Notes(xI2).Value \ 10000) = xL2 Then + Me.RedoRelabelNote(Notes(xI2), xI1 * 10000 + 20000, xUndo, xRedo) + Notes(xI2).Value = xI1 * 10000 + 20000 -1100: xIndices(xIndex) += 1 + End If + Next + + End If + xIndices(xIndex) += 1 End If Next diff --git a/iBMSC/MyO2.vb b/iBMSC/MyO2.vb index f37b1eee3..ede69a6b4 100644 --- a/iBMSC/MyO2.vb +++ b/iBMSC/MyO2.vb @@ -170,8 +170,8 @@ End If Next -980: xLowerIndex = xUpperIndex -990: Next + xLowerIndex = xUpperIndex + Next Else For xMeasure As Integer = 0 To MeasureAtDisplacement(GreatestVPosition) @@ -183,21 +183,21 @@ For xI2 As Integer = 1 To UBound(Notes) If MeasureAtDisplacement(Notes(xI2).VPosition) > xMeasure Then Exit For - If GetBMSChannelBy(Notes(xI2)) <> xId Then GoTo 1330 - If IsChannelLongNote(xId) Xor CBool(Notes(xI2).Length) Then GoTo 1330 + If GetBMSChannelBy(Notes(xI2)) <> xId Then Exit For + If IsChannelLongNote(xId) Xor CBool(Notes(xI2).Length) Then Exit For If MeasureAtDisplacement(Notes(xI2).VPosition) = xMeasure AndAlso Math.Abs(Notes(xI2).VPosition - MeasureAtDisplacement(Notes(xI2).VPosition) * 192) > 0 Then ReDim Preserve xVPos(UBound(xVPos) + 1) xVPos(UBound(xVPos)) = Notes(xI2).VPosition - xMeasure * 192 : If xVPos(UBound(xVPos)) < 0 Then xVPos(UBound(xVPos)) = 0 End If - If Not CBool(Notes(xI2).Length) Then GoTo 1330 + If Not CBool(Notes(xI2).Length) Then Exit For If MeasureAtDisplacement(Notes(xI2).VPosition + Notes(xI2).Length) = xMeasure AndAlso Not Notes(xI2).VPosition + Notes(xI2).Length - xMeasure * 192 = 0 Then ReDim Preserve xVPos(UBound(xVPos) + 1) xVPos(UBound(xVPos)) = Notes(xI2).VPosition + Notes(xI2).Length - xMeasure * 192 : If xVPos(UBound(xVPos)) < 0 Then xVPos(UBound(xVPos)) = 0 End If -1330: Next + Next 'find gcd Dim xGCD As Double = 192 @@ -231,7 +231,7 @@ End If Next -1990: Next + Next End If Return xResult @@ -267,7 +267,7 @@ Else For Each xadj As dgMyO2.Adj In xaj For xI1 As Integer = 1 To UBound(Notes) - If CBool(Notes(xI1).Length) Xor xadj.LongNote Then GoTo 1100 + If CBool(Notes(xI1).Length) Xor xadj.LongNote Then Continue For Dim xStart As Double = Notes(xI1).VPosition Dim xEnd As Double = Notes(xI1).VPosition + Notes(xI1).Length @@ -284,7 +284,7 @@ Notes(xI1).VPosition = xStart If Notes(xI1).Length > 0 Then Notes(xI1).Length = xEnd - Notes(xI1).VPosition -1100: Next + Next Next End If diff --git a/iBMSC/PanelEvents.vb b/iBMSC/PanelEvents.vb index aaf75eb82..aae97e757 100644 --- a/iBMSC/PanelEvents.vb +++ b/iBMSC/PanelEvents.vb @@ -254,12 +254,12 @@ Partial Public Class MainWindow If keybind.Combo.Contains(keyComboString) Then keybindOptionName = keybind.OpName - GoTo ExecuteKeybind + Exit For End If Next + If keybindOptionName <> "" Then Exit For Next -ExecuteKeybind: Select Case keybindOptionName Case "Move to A2" MoveToColumn(niA2, xUndo, xRedo) @@ -711,7 +711,7 @@ ExecuteKeybind: Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo Dim valstr As String = InputBox(xMessage, Text) - Dim value As Long = CLng(valstr) * 10000 + Dim value As Long = CLng(CDbl(valstr) * 10000) If valstr.StartsWith("-c ") Then ' Input comment notes If valstr = "-c " Then valstr &= " " For xI1 = 1 To UBound(Notes) @@ -993,7 +993,7 @@ ExecuteKeybind: Dim valstr As String = InputBox(xMessage, Me.Text) - Dim PromptValue As Long = CLng(valstr) * 10000 + Dim PromptValue As Long = CLng(CDbl(valstr) * 10000) If (NoteColumn = niSCROLL And valstr = "0") Or PromptValue <> 0 Then Dim xUndo As UndoRedo.LinkedURCmd = Nothing @@ -1840,7 +1840,7 @@ ExecuteKeybind: If xColumn = niSCROLL Then xMessage = Strings.Messages.PromptEnterSCROLL Dim valstr As String = InputBox(xMessage, Me.Text) - Dim value As Long = CLng(valstr) * 10000 + Dim value As Long = CLng(CDbl(valstr) * 10000) If valstr.StartsWith("-c ") Then ' Input comment notes If valstr = "-c " Then valstr &= " " For xI1 = 1 To UBound(Notes) diff --git a/iBMSC/TimeSelectionOps.vb b/iBMSC/TimeSelectionOps.vb index c7ffff6c4..0c924ca7c 100644 --- a/iBMSC/TimeSelectionOps.vb +++ b/iBMSC/TimeSelectionOps.vb @@ -118,144 +118,143 @@ Partial Public Class MainWindow Dim xRedo As UndoRedo.LinkedURCmd = New UndoRedo.Void Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo - If vSelLength = 0 Then GoTo EndofSub - If xRatio = 1 Or xRatio <= 0 Then GoTo EndofSub + If Not (vSelLength = 0 Or xRatio = 1 Or xRatio <= 0) Then - Dim xVLower As Double = CDbl(IIf(vSelLength > 0, vSelStart, vSelStart + vSelLength)) - Dim xVUpper As Double = CDbl(IIf(vSelLength < 0, vSelStart, vSelStart + vSelLength)) - If xVLower < 0 Then xVLower = 0 - If xVUpper >= GetMaxVPosition() Then xVUpper = GetMaxVPosition() - 1 - - Dim xBPM As Integer = CInt(Notes(0).Value) - Dim xI1 As Integer - Dim xI2 As Integer - Dim xI3 As Integer - - Dim xValueL As Integer = xBPM - Dim xValueU As Integer = xBPM - - 'Save undo - 'For xI3 = 1 To UBound(K) - ' K(xI3).Selected = True - 'Next - 'xUndo = "KZ" & vbCrLf & _ - ' sCmdKs(False) & vbCrLf & _ - ' "SA_" & vSelStart & "_" & vSelLength & "_" & vSelHalf & "_1" - - Me.RedoRemoveNoteAll(False, xUndo, xRedo) - - 'Start - If Not NTInput Then - 'Below Selection - For xI1 = 1 To UBound(Notes) - If Notes(xI1).VPosition > xVLower Then Exit For - If Notes(xI1).ColumnIndex = niBPM Then xBPM = CInt(Notes(xI1).Value) - Next - xValueL = xBPM - xI2 = xI1 - - 'Within Selection - For xI1 = xI2 To UBound(Notes) - If Notes(xI1).VPosition > xVUpper Then Exit For - If Notes(xI1).ColumnIndex = niBPM Then - xBPM = CInt(Notes(xI1).Value) - Notes(xI1).Value = CLng(Notes(xI1).Value * xRatio) - End If - Notes(xI1).VPosition = (Notes(xI1).VPosition - xVLower) * xRatio + xVLower - Next - xValueU = xBPM - xI2 = xI1 + Dim xVLower As Double = CDbl(IIf(vSelLength > 0, vSelStart, vSelStart + vSelLength)) + Dim xVUpper As Double = CDbl(IIf(vSelLength < 0, vSelStart, vSelStart + vSelLength)) + If xVLower < 0 Then xVLower = 0 + If xVUpper >= GetMaxVPosition() Then xVUpper = GetMaxVPosition() - 1 - 'Above Selection - For xI1 = xI2 To UBound(Notes) - Notes(xI1).VPosition += (xRatio - 1) * (xVUpper - xVLower) - Next + Dim xBPM As Integer = CInt(Notes(0).Value) + Dim xI1 As Integer + Dim xI2 As Integer + Dim xI3 As Integer - 'Add BPMs - AddNote(New Note(niBPM, xVLower, CLng(xValueL * xRatio), False), False, True, False) - AddNote(New Note(niBPM, xVUpper + (xRatio - 1) * (xVUpper - xVLower), xValueU, False), False, True, False) + Dim xValueL As Integer = xBPM + Dim xValueU As Integer = xBPM - Else - Dim xAddBPML As Boolean = True - Dim xAddBPMU As Boolean = True + 'Save undo + 'For xI3 = 1 To UBound(K) + ' K(xI3).Selected = True + 'Next + 'xUndo = "KZ" & vbCrLf & _ + ' sCmdKs(False) & vbCrLf & _ + ' "SA_" & vSelStart & "_" & vSelLength & "_" & vSelHalf & "_1" + + Me.RedoRemoveNoteAll(False, xUndo, xRedo) + + 'Start + If Not NTInput Then + 'Below Selection + For xI1 = 1 To UBound(Notes) + If Notes(xI1).VPosition > xVLower Then Exit For + If Notes(xI1).ColumnIndex = niBPM Then xBPM = CInt(Notes(xI1).Value) + Next + xValueL = xBPM + xI2 = xI1 - For xI1 = 1 To UBound(Notes) - 'Modify notes - If Notes(xI1).VPosition <= xVLower Then - 'check BPM + 'Within Selection + For xI1 = xI2 To UBound(Notes) + If Notes(xI1).VPosition > xVUpper Then Exit For If Notes(xI1).ColumnIndex = niBPM Then - xValueL = CInt(Notes(xI1).Value) - xValueU = CInt(Notes(xI1).Value) - If Notes(xI1).VPosition = xVLower Then xAddBPML = False : Notes(xI1).Value = CLng(IIf(Notes(xI1).Value * xRatio <= 655359999, Notes(xI1).Value * xRatio, 655359999)) - End If - - 'If longnote then adjust length - If Notes(xI1).VPosition + Notes(xI1).Length > xVLower Then - Notes(xI1).Length += (CDbl(IIf(xVUpper < Notes(xI1).VPosition + Notes(xI1).Length, xVUpper, Notes(xI1).VPosition + Notes(xI1).Length)) - xVLower) * (xRatio - 1) + xBPM = CInt(Notes(xI1).Value) + Notes(xI1).Value = CLng(Notes(xI1).Value * xRatio) End If + Notes(xI1).VPosition = (Notes(xI1).VPosition - xVLower) * xRatio + xVLower + Next + xValueU = xBPM + xI2 = xI1 - ElseIf Notes(xI1).VPosition <= xVUpper Then - 'check BPM - If Notes(xI1).ColumnIndex = niBPM Then - xValueU = CInt(Notes(xI1).Value) - If Notes(xI1).VPosition = xVUpper Then xAddBPMU = False Else Notes(xI1).Value = CLng(IIf(Notes(xI1).Value * xRatio <= 655359999, Notes(xI1).Value * xRatio, 655359999)) - End If + 'Above Selection + For xI1 = xI2 To UBound(Notes) + Notes(xI1).VPosition += (xRatio - 1) * (xVUpper - xVLower) + Next - 'Adjust Length - Notes(xI1).Length += (CLng(IIf(xVUpper < Notes(xI1).Length + Notes(xI1).VPosition, xVUpper, Notes(xI1).Length + Notes(xI1).VPosition)) - Notes(xI1).VPosition) * (xRatio - 1) + 'Add BPMs + AddNote(New Note(niBPM, xVLower, CLng(xValueL * xRatio), False), False, True, False) + AddNote(New Note(niBPM, xVUpper + (xRatio - 1) * (xVUpper - xVLower), xValueU, False), False, True, False) - 'Adjust VPosition - Notes(xI1).VPosition = (Notes(xI1).VPosition - xVLower) * xRatio + xVLower + Else + Dim xAddBPML As Boolean = True + Dim xAddBPMU As Boolean = True + + For xI1 = 1 To UBound(Notes) + 'Modify notes + If Notes(xI1).VPosition <= xVLower Then + 'check BPM + If Notes(xI1).ColumnIndex = niBPM Then + xValueL = CInt(Notes(xI1).Value) + xValueU = CInt(Notes(xI1).Value) + If Notes(xI1).VPosition = xVLower Then xAddBPML = False : Notes(xI1).Value = CLng(IIf(Notes(xI1).Value * xRatio <= 655359999, Notes(xI1).Value * xRatio, 655359999)) + End If - Else - Notes(xI1).VPosition += (xVUpper - xVLower) * (xRatio - 1) - End If - Next + 'If longnote then adjust length + If Notes(xI1).VPosition + Notes(xI1).Length > xVLower Then + Notes(xI1).Length += (CDbl(IIf(xVUpper < Notes(xI1).VPosition + Notes(xI1).Length, xVUpper, Notes(xI1).VPosition + Notes(xI1).Length)) - xVLower) * (xRatio - 1) + End If - 'Add BPMs - If xAddBPML Then AddNote(New Note(niBPM, xVLower, CLng(xValueL * xRatio), False), False, True, False) - If xAddBPMU Then AddNote(New Note(niBPM, (xVUpper - xVLower) * xRatio + xVLower, xValueU, False), False, True, False) - End If + ElseIf Notes(xI1).VPosition <= xVUpper Then + 'check BPM + If Notes(xI1).ColumnIndex = niBPM Then + xValueU = CInt(Notes(xI1).Value) + If Notes(xI1).VPosition = xVUpper Then xAddBPMU = False Else Notes(xI1).Value = CLng(IIf(Notes(xI1).Value * xRatio <= 655359999, Notes(xI1).Value * xRatio, 655359999)) + End If - 'Check BPM Overflow - For xI3 = 1 To UBound(Notes) - If Notes(xI3).ColumnIndex = niBPM AndAlso Notes(xI3).Value < 1 Then Notes(xI3).Value = 1 - Next + 'Adjust Length + Notes(xI1).Length += (CLng(IIf(xVUpper < Notes(xI1).Length + Notes(xI1).VPosition, xVUpper, Notes(xI1).Length + Notes(xI1).VPosition)) - Notes(xI1).VPosition) * (xRatio - 1) - Me.RedoAddNoteAll(False, xUndo, xRedo) + 'Adjust VPosition + Notes(xI1).VPosition = (Notes(xI1).VPosition - xVLower) * xRatio + xVLower - 'Restore selection - Dim pSelStart As Double = vSelStart - Dim pSelLength As Double = vSelLength - Dim pSelHalf As Double = vSelHalf - If vSelLength < 0 Then vSelStart += (xRatio - 1) * (xVUpper - xVLower) - vSelLength = vSelLength * xRatio - vSelHalf = vSelHalf * xRatio - ValidateSelection() - Me.RedoChangeTimeSelection(pSelStart, pSelLength, pSelHalf, vSelStart, vSelLength, vSelHalf, True, xUndo, xRedo) + Else + Notes(xI1).VPosition += (xVUpper - xVLower) * (xRatio - 1) + End If + Next - 'Save redo - 'For xI3 = 1 To UBound(K) - ' K(xI3).Selected = True - 'Next - 'xRedo = "KZ" & vbCrLf & _ - ' sCmdKs(False) & vbCrLf & _ - ' "SA_" & vSelStart & "_" & vSelLength & "_" & vSelHalf & "_1" + 'Add BPMs + If xAddBPML Then AddNote(New Note(niBPM, xVLower, CLng(xValueL * xRatio), False), False, True, False) + If xAddBPMU Then AddNote(New Note(niBPM, (xVUpper - xVLower) * xRatio + xVLower, xValueU, False), False, True, False) + End If - 'Restore note selection - xVLower = CDbl(IIf(vSelLength > 0, vSelStart, vSelStart + vSelLength)) - xVUpper = CDbl(IIf(vSelLength < 0, vSelStart, vSelStart + vSelLength)) - If Not NTInput Then - For xI3 = 1 To UBound(Notes) - Notes(xI3).Selected = Notes(xI3).VPosition >= xVLower And Notes(xI3).VPosition < xVUpper And nEnabled(Notes(xI3).ColumnIndex) - Next - Else + 'Check BPM Overflow For xI3 = 1 To UBound(Notes) - Notes(xI3).Selected = Notes(xI3).VPosition < xVUpper And Notes(xI3).VPosition + Notes(xI3).Length >= xVLower And nEnabled(Notes(xI3).ColumnIndex) + If Notes(xI3).ColumnIndex = niBPM AndAlso Notes(xI3).Value < 1 Then Notes(xI3).Value = 1 Next + + Me.RedoAddNoteAll(False, xUndo, xRedo) + + 'Restore selection + Dim pSelStart As Double = vSelStart + Dim pSelLength As Double = vSelLength + Dim pSelHalf As Double = vSelHalf + If vSelLength < 0 Then vSelStart += (xRatio - 1) * (xVUpper - xVLower) + vSelLength = vSelLength * xRatio + vSelHalf = vSelHalf * xRatio + ValidateSelection() + Me.RedoChangeTimeSelection(pSelStart, pSelLength, pSelHalf, vSelStart, vSelLength, vSelHalf, True, xUndo, xRedo) + + 'Save redo + 'For xI3 = 1 To UBound(K) + ' K(xI3).Selected = True + 'Next + 'xRedo = "KZ" & vbCrLf & _ + ' sCmdKs(False) & vbCrLf & _ + ' "SA_" & vSelStart & "_" & vSelLength & "_" & vSelHalf & "_1" + + 'Restore note selection + xVLower = CDbl(IIf(vSelLength > 0, vSelStart, vSelStart + vSelLength)) + xVUpper = CDbl(IIf(vSelLength < 0, vSelStart, vSelStart + vSelLength)) + If Not NTInput Then + For xI3 = 1 To UBound(Notes) + Notes(xI3).Selected = Notes(xI3).VPosition >= xVLower And Notes(xI3).VPosition < xVUpper And nEnabled(Notes(xI3).ColumnIndex) + Next + Else + For xI3 = 1 To UBound(Notes) + Notes(xI3).Selected = Notes(xI3).VPosition < xVUpper And Notes(xI3).VPosition + Notes(xI3).Length >= xVLower And nEnabled(Notes(xI3).ColumnIndex) + Next + End If End If -EndofSub: If bAddUndo Then AddUndo(xUndo, xBaseRedo.Next, bOverWriteUndo) End Sub @@ -266,213 +265,214 @@ EndofSub: Dim xRedo As UndoRedo.LinkedURCmd = New UndoRedo.Void Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo - If vSelLength = 0 Then GoTo EndofSub - If dVPosition = 0 Then GoTo EndofSub - - Dim xVLower As Double = CDbl(IIf(vSelLength > 0, vSelStart, vSelStart + vSelLength)) - Dim xVHalf As Double = vSelStart + vSelHalf - Dim xVUpper As Double = CDbl(IIf(vSelLength < 0, vSelStart, vSelStart + vSelLength)) - If dVPosition + xVHalf <= xVLower Or dVPosition + xVHalf >= xVUpper Then GoTo EndofSub - - If xVLower < 0 Then xVLower = 0 - If xVUpper >= GetMaxVPosition() Then xVUpper = GetMaxVPosition() - 1 - If xVHalf > xVUpper Then xVHalf = xVUpper - If xVHalf < xVLower Then xVHalf = xVLower - - Dim xBPM As Integer = CInt(Notes(0).Value) - Dim xI1 As Integer - Dim xI2 As Integer - Dim xI3 As Integer - - Dim xValueL As Integer = xBPM - Dim xValueM As Integer = xBPM - Dim xValueU As Integer = xBPM + If Not (vSelLength = 0 Or dVPosition = 0) Then - Dim xRatio1 As Double = (xVHalf - xVLower + dVPosition) / (xVHalf - xVLower) - Dim xRatio2 As Double = (xVUpper - xVHalf - dVPosition) / (xVUpper - xVHalf) - - 'Save undo - 'For xI3 = 1 To UBound(K) - 'K(xI3).Selected = True - 'Next - 'xUndo = "KZ" & vbCrLf & _ - ' sCmdKs(False) & vbCrLf & _ - ' "SA_" & vSelStart & "_" & vSelLength & "_" & vSelHalf & "_1" - - Me.RedoRemoveNoteAll(False, xUndo, xRedo) - - If Not NTInput Then - 'Below Selection - For xI1 = 1 To UBound(Notes) - If Notes(xI1).VPosition > xVLower Then Exit For - If Notes(xI1).ColumnIndex = niBPM Then xBPM = CInt(Notes(xI1).Value) - Next - xValueL = xBPM - xI2 = xI1 - - 'Below Half - For xI1 = xI2 To UBound(Notes) - If Notes(xI1).VPosition > xVHalf Then Exit For - If Notes(xI1).ColumnIndex = niBPM Then - xBPM = CInt(Notes(xI1).Value) - Notes(xI1).Value = CLng(Notes(xI1).Value * xRatio1) - End If - Notes(xI1).VPosition = (Notes(xI1).VPosition - xVLower) * xRatio1 + xVLower - Next - xValueM = xBPM - xI2 = xI1 - - 'Above Half - For xI1 = xI2 To UBound(Notes) - If Notes(xI1).VPosition > xVUpper Then Exit For - If Notes(xI1).ColumnIndex = niBPM Then - xBPM = CInt(Notes(xI1).Value) - Notes(xI1).Value = CLng(IIf(Notes(xI1).Value * xRatio2 <= 655359999, Notes(xI1).Value * xRatio2, 655359999)) - End If - Notes(xI1).VPosition = (Notes(xI1).VPosition - xVHalf) * xRatio2 + xVHalf + dVPosition - Next - xValueU = xBPM - xI2 = xI1 - - 'Above Selection - 'For xI1 = xI2 To UBound(K) - ' K(xI1).VPosition += (xRatio - 1) * (xVUpper - xVLower) - 'Next - - 'Add BPMs - ' az: cond. removed; - ' IIf(xVHalf <> xVLower AndAlso xValueL * xRatio1 <= 655359999, xValueL * xRatio1, 655359999) - AddNote(New Note(niBPM, xVLower, CLng(xValueL * xRatio1), False), False, True, False) - ' az: cond removed; - ' IIf(xVHalf <> xVUpper AndAlso xValueM * xRatio2 <= 655359999, xValueM * xRatio2, 655359999) - AddNote(New Note(niBPM, xVHalf + dVPosition, CLng(xValueM * xRatio2), False), False, True, False) - AddNote(New Note(niBPM, xVUpper, xValueU, False), False, True, False) - - Else - Dim xAddBPML As Boolean = True - Dim xAddBPMM As Boolean = True - Dim xAddBPMU As Boolean = True - - 'Modify notes - For xI1 = 1 To UBound(Notes) - If Notes(xI1).VPosition <= xVLower Then - 'check BPM - If Notes(xI1).ColumnIndex = niBPM Then - xValueL = CInt(Notes(xI1).Value) - xValueM = CInt(Notes(xI1).Value) - xValueU = CInt(Notes(xI1).Value) - If Notes(xI1).VPosition = xVLower Then - xAddBPML = False - - ' az: condition removed; - ' IIf(xVHalf <> xVLower AndAlso Notes(xI1).Value * xRatio1 <= 655359999, Notes(xI1).Value * xRatio1, 655359999) + Dim xVLower As Double = CDbl(IIf(vSelLength > 0, vSelStart, vSelStart + vSelLength)) + Dim xVHalf As Double = vSelStart + vSelHalf + Dim xVUpper As Double = CDbl(IIf(vSelLength < 0, vSelStart, vSelStart + vSelLength)) + If Not (dVPosition + xVHalf <= xVLower Or dVPosition + xVHalf >= xVUpper) Then + + If xVLower < 0 Then xVLower = 0 + If xVUpper >= GetMaxVPosition() Then xVUpper = GetMaxVPosition() - 1 + If xVHalf > xVUpper Then xVHalf = xVUpper + If xVHalf < xVLower Then xVHalf = xVLower + + Dim xBPM As Integer = CInt(Notes(0).Value) + Dim xI1 As Integer + Dim xI2 As Integer + Dim xI3 As Integer + + Dim xValueL As Integer = xBPM + Dim xValueM As Integer = xBPM + Dim xValueU As Integer = xBPM + + Dim xRatio1 As Double = (xVHalf - xVLower + dVPosition) / (xVHalf - xVLower) + Dim xRatio2 As Double = (xVUpper - xVHalf - dVPosition) / (xVUpper - xVHalf) + + 'Save undo + 'For xI3 = 1 To UBound(K) + 'K(xI3).Selected = True + 'Next + 'xUndo = "KZ" & vbCrLf & _ + ' sCmdKs(False) & vbCrLf & _ + ' "SA_" & vSelStart & "_" & vSelLength & "_" & vSelHalf & "_1" + + Me.RedoRemoveNoteAll(False, xUndo, xRedo) + + If Not NTInput Then + 'Below Selection + For xI1 = 1 To UBound(Notes) + If Notes(xI1).VPosition > xVLower Then Exit For + If Notes(xI1).ColumnIndex = niBPM Then xBPM = CInt(Notes(xI1).Value) + Next + xValueL = xBPM + xI2 = xI1 + + 'Below Half + For xI1 = xI2 To UBound(Notes) + If Notes(xI1).VPosition > xVHalf Then Exit For + If Notes(xI1).ColumnIndex = niBPM Then + xBPM = CInt(Notes(xI1).Value) Notes(xI1).Value = CLng(Notes(xI1).Value * xRatio1) End If - End If - - 'If longnote then adjust length - Dim xEnd As Double = Notes(xI1).VPosition + Notes(xI1).Length - If xEnd > xVUpper Then - ElseIf xEnd > xVHalf Then - Notes(xI1).Length = (xEnd - xVHalf) * xRatio2 + xVHalf + dVPosition - Notes(xI1).VPosition - ElseIf xEnd > xVLower Then - Notes(xI1).Length = (xEnd - xVLower) * xRatio1 + xVLower - Notes(xI1).VPosition - End If - - ElseIf Notes(xI1).VPosition <= xVHalf Then - 'check BPM - If Notes(xI1).ColumnIndex = niBPM Then - xValueM = CInt(Notes(xI1).Value) - xValueU = CInt(Notes(xI1).Value) - If Notes(xI1).VPosition = xVHalf Then - xAddBPMM = False - ' az: cond. remove - ' IIf(xVHalf <> xVUpper AndAlso Notes(xI1).Value * xRatio2 <= 655359999, Notes(xI1).Value * xRatio2, 655359999) - Notes(xI1).Value *= CLng(xRatio2) - Else - ' az: cond. remove - ' IIf(Notes(xI1).Value * xRatio1 <= 655359999, Notes(xI1).Value * xRatio1, 655359999) - Notes(xI1).Value *= CLng(xRatio1) + Notes(xI1).VPosition = (Notes(xI1).VPosition - xVLower) * xRatio1 + xVLower + Next + xValueM = xBPM + xI2 = xI1 + + 'Above Half + For xI1 = xI2 To UBound(Notes) + If Notes(xI1).VPosition > xVUpper Then Exit For + If Notes(xI1).ColumnIndex = niBPM Then + xBPM = CInt(Notes(xI1).Value) + Notes(xI1).Value = CLng(IIf(Notes(xI1).Value * xRatio2 <= 655359999, Notes(xI1).Value * xRatio2, 655359999)) End If - End If + Notes(xI1).VPosition = (Notes(xI1).VPosition - xVHalf) * xRatio2 + xVHalf + dVPosition + Next + xValueU = xBPM + xI2 = xI1 + + 'Above Selection + 'For xI1 = xI2 To UBound(K) + ' K(xI1).VPosition += (xRatio - 1) * (xVUpper - xVLower) + 'Next + + 'Add BPMs + ' az: cond. removed; + ' IIf(xVHalf <> xVLower AndAlso xValueL * xRatio1 <= 655359999, xValueL * xRatio1, 655359999) + AddNote(New Note(niBPM, xVLower, CLng(xValueL * xRatio1), False), False, True, False) + ' az: cond removed; + ' IIf(xVHalf <> xVUpper AndAlso xValueM * xRatio2 <= 655359999, xValueM * xRatio2, 655359999) + AddNote(New Note(niBPM, xVHalf + dVPosition, CLng(xValueM * xRatio2), False), False, True, False) + AddNote(New Note(niBPM, xVUpper, xValueU, False), False, True, False) - 'Adjust Length - Dim xEnd As Double = Notes(xI1).VPosition + Notes(xI1).Length - If xEnd > xVUpper Then - Notes(xI1).Length = xEnd - xVLower - (Notes(xI1).VPosition - xVLower) * xRatio1 - ElseIf xEnd > xVHalf Then - Notes(xI1).Length = (xVHalf - Notes(xI1).VPosition) * xRatio1 + (xEnd - xVHalf) * xRatio2 - Else - Notes(xI1).Length *= xRatio1 - End If + Else + Dim xAddBPML As Boolean = True + Dim xAddBPMM As Boolean = True + Dim xAddBPMU As Boolean = True + + 'Modify notes + For xI1 = 1 To UBound(Notes) + If Notes(xI1).VPosition <= xVLower Then + 'check BPM + If Notes(xI1).ColumnIndex = niBPM Then + xValueL = CInt(Notes(xI1).Value) + xValueM = CInt(Notes(xI1).Value) + xValueU = CInt(Notes(xI1).Value) + If Notes(xI1).VPosition = xVLower Then + xAddBPML = False + + ' az: condition removed; + ' IIf(xVHalf <> xVLower AndAlso Notes(xI1).Value * xRatio1 <= 655359999, Notes(xI1).Value * xRatio1, 655359999) + Notes(xI1).Value = CLng(Notes(xI1).Value * xRatio1) + End If + End If - 'Adjust VPosition - Notes(xI1).VPosition = (Notes(xI1).VPosition - xVLower) * xRatio1 + xVLower + 'If longnote then adjust length + Dim xEnd As Double = Notes(xI1).VPosition + Notes(xI1).Length + If xEnd > xVUpper Then + ElseIf xEnd > xVHalf Then + Notes(xI1).Length = (xEnd - xVHalf) * xRatio2 + xVHalf + dVPosition - Notes(xI1).VPosition + ElseIf xEnd > xVLower Then + Notes(xI1).Length = (xEnd - xVLower) * xRatio1 + xVLower - Notes(xI1).VPosition + End If - ElseIf Notes(xI1).VPosition <= xVUpper Then - 'check BPM - If Notes(xI1).ColumnIndex = niBPM Then - xValueU = CInt(Notes(xI1).Value) - If Notes(xI1).VPosition = xVUpper Then xAddBPMU = False Else Notes(xI1).Value = CLng(IIf(Notes(xI1).Value * xRatio2 <= 655359999, Notes(xI1).Value * xRatio2, 655359999)) - End If + ElseIf Notes(xI1).VPosition <= xVHalf Then + 'check BPM + If Notes(xI1).ColumnIndex = niBPM Then + xValueM = CInt(Notes(xI1).Value) + xValueU = CInt(Notes(xI1).Value) + If Notes(xI1).VPosition = xVHalf Then + xAddBPMM = False + ' az: cond. remove + ' IIf(xVHalf <> xVUpper AndAlso Notes(xI1).Value * xRatio2 <= 655359999, Notes(xI1).Value * xRatio2, 655359999) + Notes(xI1).Value *= CLng(xRatio2) + Else + ' az: cond. remove + ' IIf(Notes(xI1).Value * xRatio1 <= 655359999, Notes(xI1).Value * xRatio1, 655359999) + Notes(xI1).Value *= CLng(xRatio1) + End If + End If - 'Adjust Length - Dim xEnd As Double = Notes(xI1).VPosition + Notes(xI1).Length - If xEnd > xVUpper Then - Notes(xI1).Length = (xVUpper - Notes(xI1).VPosition) * xRatio2 + xEnd - xVUpper - Else - Notes(xI1).Length *= xRatio2 - End If + 'Adjust Length + Dim xEnd As Double = Notes(xI1).VPosition + Notes(xI1).Length + If xEnd > xVUpper Then + Notes(xI1).Length = xEnd - xVLower - (Notes(xI1).VPosition - xVLower) * xRatio1 + ElseIf xEnd > xVHalf Then + Notes(xI1).Length = (xVHalf - Notes(xI1).VPosition) * xRatio1 + (xEnd - xVHalf) * xRatio2 + Else + Notes(xI1).Length *= xRatio1 + End If - 'Adjust VPosition - Notes(xI1).VPosition = (Notes(xI1).VPosition - xVHalf) * xRatio2 + xVHalf + dVPosition + 'Adjust VPosition + Notes(xI1).VPosition = (Notes(xI1).VPosition - xVLower) * xRatio1 + xVLower - 'Else - ' K(xI1).VPosition += (xVUpper - xVLower) * (xRatio - 1) - End If - Next + ElseIf Notes(xI1).VPosition <= xVUpper Then + 'check BPM + If Notes(xI1).ColumnIndex = niBPM Then + xValueU = CInt(Notes(xI1).Value) + If Notes(xI1).VPosition = xVUpper Then xAddBPMU = False Else Notes(xI1).Value = CLng(IIf(Notes(xI1).Value * xRatio2 <= 655359999, Notes(xI1).Value * xRatio2, 655359999)) + End If - 'Add BPMs - ' IIf(xVHalf <> xVLower AndAlso xValueL * xRatio1 <= 655359999, xValueL * xRatio1, 655359999) - If xAddBPML Then AddNote(New Note(niBPM, xVLower, CLng(xValueL * xRatio1), False), False, True, False) - ' IIf(xVHalf <> xVUpper AndAlso xValueM * xRatio2 <= 655359999, xValueM * xRatio2, 655359999) - If xAddBPMM Then AddNote(New Note(niBPM, xVHalf + dVPosition, CLng(xValueM * xRatio2), False), False, True, False) - If xAddBPMU Then AddNote(New Note(niBPM, xVUpper, xValueU, False), False, True, False) - End If + 'Adjust Length + Dim xEnd As Double = Notes(xI1).VPosition + Notes(xI1).Length + If xEnd > xVUpper Then + Notes(xI1).Length = (xVUpper - Notes(xI1).VPosition) * xRatio2 + xEnd - xVUpper + Else + Notes(xI1).Length *= xRatio2 + End If - 'Check BPM Overflow - 'For xI3 = 1 To UBound(Notes) - ' If Notes(xI3).ColumnIndex = niBPM Then - ' If Notes(xI3).Value > 655359999 Then Notes(xI3).Value = 655359999 - ' If Notes(xI3).Value < 1 Then Notes(xI3).Value = 1 - ' End If - 'Next + 'Adjust VPosition + Notes(xI1).VPosition = (Notes(xI1).VPosition - xVHalf) * xRatio2 + xVHalf + dVPosition - 'Restore selection - 'If vSelLength < 0 Then vSelStart += (xRatio - 1) * (xVUpper - xVLower) - 'vSelLength = vSelLength * xRatio - Dim pSelHalf As Double = vSelHalf - vSelHalf += dVPosition - ValidateSelection() - Me.RedoChangeTimeSelection(vSelStart, vSelLength, pSelHalf, vSelStart, vSelStart, vSelHalf, True, xUndo, xRedo) + 'Else + ' K(xI1).VPosition += (xVUpper - xVLower) * (xRatio - 1) + End If + Next - Me.RedoAddNoteAll(False, xUndo, xRedo) + 'Add BPMs + ' IIf(xVHalf <> xVLower AndAlso xValueL * xRatio1 <= 655359999, xValueL * xRatio1, 655359999) + If xAddBPML Then AddNote(New Note(niBPM, xVLower, CLng(xValueL * xRatio1), False), False, True, False) + ' IIf(xVHalf <> xVUpper AndAlso xValueM * xRatio2 <= 655359999, xValueM * xRatio2, 655359999) + If xAddBPMM Then AddNote(New Note(niBPM, xVHalf + dVPosition, CLng(xValueM * xRatio2), False), False, True, False) + If xAddBPMU Then AddNote(New Note(niBPM, xVUpper, xValueU, False), False, True, False) + End If + 'Check BPM Overflow + 'For xI3 = 1 To UBound(Notes) + ' If Notes(xI3).ColumnIndex = niBPM Then + ' If Notes(xI3).Value > 655359999 Then Notes(xI3).Value = 655359999 + ' If Notes(xI3).Value < 1 Then Notes(xI3).Value = 1 + ' End If + 'Next + + 'Restore selection + 'If vSelLength < 0 Then vSelStart += (xRatio - 1) * (xVUpper - xVLower) + 'vSelLength = vSelLength * xRatio + Dim pSelHalf As Double = vSelHalf + vSelHalf += dVPosition + ValidateSelection() + Me.RedoChangeTimeSelection(vSelStart, vSelLength, pSelHalf, vSelStart, vSelStart, vSelHalf, True, xUndo, xRedo) + + Me.RedoAddNoteAll(False, xUndo, xRedo) + + + 'Restore note selection + xVLower = CDbl(IIf(vSelLength > 0, vSelStart, vSelStart + vSelLength)) + xVUpper = CDbl(IIf(vSelLength < 0, vSelStart, vSelStart + vSelLength)) + If Not NTInput Then + For xI3 = 1 To UBound(Notes) + Notes(xI3).Selected = Notes(xI3).VPosition >= xVLower And Notes(xI3).VPosition < xVUpper And nEnabled(Notes(xI3).ColumnIndex) + Next + Else + For xI3 = 1 To UBound(Notes) + Notes(xI3).Selected = Notes(xI3).VPosition < xVUpper And Notes(xI3).VPosition + Notes(xI3).Length >= xVLower And nEnabled(Notes(xI3).ColumnIndex) + Next + End If - 'Restore note selection - xVLower = CDbl(IIf(vSelLength > 0, vSelStart, vSelStart + vSelLength)) - xVUpper = CDbl(IIf(vSelLength < 0, vSelStart, vSelStart + vSelLength)) - If Not NTInput Then - For xI3 = 1 To UBound(Notes) - Notes(xI3).Selected = Notes(xI3).VPosition >= xVLower And Notes(xI3).VPosition < xVUpper And nEnabled(Notes(xI3).ColumnIndex) - Next - Else - For xI3 = 1 To UBound(Notes) - Notes(xI3).Selected = Notes(xI3).VPosition < xVUpper And Notes(xI3).VPosition + Notes(xI3).Length >= xVLower And nEnabled(Notes(xI3).ColumnIndex) - Next + End If End If -EndofSub: If bAddUndo Then AddUndo(xUndo, xBaseRedo.Next, bOverWriteUndo) End Sub @@ -559,28 +559,29 @@ EndofSub: If Notes(xI1).VPosition > xVLower Then Exit For Next xI2 = xI1 - If xI2 > UBound(Notes) Then GoTo EndOfAdjustment + If xI2 <= UBound(Notes) Then - 'Within Selection - Dim xTempTime As Double - Dim xTempVPos As Double - For xI1 = xI2 To UBound(Notes) - If Notes(xI1).VPosition >= xVUpper Then Exit For - xTempTime = 0 - - xTempVPos = Notes(xI1).VPosition - For xI3 = 0 To xU - If xTempVPos < xVPos(xI3 + 1) Then Exit For - xTempTime += (xVPos(xI3 + 1) - xVPos(xI3)) / xVal(xI3) - Next - xTempTime += (xTempVPos - xVPos(xI3)) / xVal(xI3) + 'Within Selection + Dim xTempTime As Double + Dim xTempVPos As Double + For xI1 = xI2 To UBound(Notes) + If Notes(xI1).VPosition >= xVUpper Then Exit For + xTempTime = 0 - If xTempTime - (xVHalf - xVLower) / xValue > 0 Then - Notes(xI1).VPosition = (xTempTime - (xVHalf - xVLower) / xValue) * xResult + xVHalf - Else - Notes(xI1).VPosition = xTempTime * xValue + xVLower - End If - Next + xTempVPos = Notes(xI1).VPosition + For xI3 = 0 To xU + If xTempVPos < xVPos(xI3 + 1) Then Exit For + xTempTime += (xVPos(xI3 + 1) - xVPos(xI3)) / xVal(xI3) + Next + xTempTime += (xTempVPos - xVPos(xI3)) / xVal(xI3) + + If xTempTime - (xVHalf - xVLower) / xValue > 0 Then + Notes(xI1).VPosition = (xTempTime - (xVHalf - xVLower) / xValue) * xResult + xVHalf + Else + Notes(xI1).VPosition = xTempTime * xValue + xVLower + End If + Next + End If Else Dim xTempTime As Double @@ -631,7 +632,6 @@ EndofSub: Next End If -EndOfAdjustment: 'Delete BPMs xI1 = 1 @@ -748,10 +748,10 @@ EndOfAdjustment: For xIM = 1 To UBound(MeasureLength) If vSelStart = MeasureBottom(xIM) Then RemoveMeasureLine(xIM) - GoTo EndOfSub + Exit For ElseIf vSelStart < MeasureBottom(xIM) Then AddMeasureLine(vSelStart) - GoTo EndOfSub + Exit For End If Next Else @@ -783,7 +783,6 @@ EndOfAdjustment: AddMeasureLine(xVUpper) End If -EndOfSub: RedoChangeMeasure(xMeasureLengthBefore, CType(MeasureLength.Clone(), Double()), xUndo, xRedo) AddUndo(xUndo, xBaseRedo.Next) End Sub diff --git a/iBMSC/iBMSC.vbproj b/iBMSC/iBMSC.vbproj index d6705e1e7..5f680736c 100644 --- a/iBMSC/iBMSC.vbproj +++ b/iBMSC/iBMSC.vbproj @@ -87,6 +87,9 @@ AnyCPU 41999,42016,42017,42018,42019,42020,42021,42022,42032,42036 + + true + False From eab2fe31c151e5c039bb8d7c9553a94c787cfe1f Mon Sep 17 00:00:00 2001 From: psyk2642 <60137590+psyk2642@users.noreply.github.com> Date: Wed, 27 Apr 2022 21:44:44 +0800 Subject: [PATCH 125/257] Updated #TOTAL Tool Added options not to display a recommended #TOTAL Value, to display a specified number of decimal places, and to autofill the #TOTAL. --- iBMSC/EditorPersistent.vb | 10 +- iBMSC/MainWindow.designer.vb | 110 +++++++++------ iBMSC/MainWindow.vb | 45 +++--- iBMSC/Option Windows/OpTotal.Designer.vb | 169 +++++++++++++++++------ iBMSC/Option Windows/OpTotal.vb | 22 +-- 5 files changed, 241 insertions(+), 115 deletions(-) diff --git a/iBMSC/EditorPersistent.vb b/iBMSC/EditorPersistent.vb index 5cc987b42..d4df58c15 100644 --- a/iBMSC/EditorPersistent.vb +++ b/iBMSC/EditorPersistent.vb @@ -166,7 +166,10 @@ Partial Public Class MainWindow .WriteAttributeString("Option", TotalOption.ToString()) .WriteAttributeString("Multiplier", TotalMultiplier.ToString()) .WriteAttributeString("GlobalMultiplier", TotalGlobalMultiplier.ToString()) - .WriteAttributeString("RecommendedTextDisplay", TotalRecommendedTextDisplay.ToString()) + .WriteAttributeString("Decimal", TotalDecimal.ToString()) + .WriteAttributeString("DisplayValue", TotalDisplayValue.ToString()) + .WriteAttributeString("DisplayText", TotalDisplayText.ToString()) + .WriteAttributeString("Autofill", TotalAutofill.ToString()) .WriteEndElement() .WriteStartElement("KeyBindings") @@ -560,7 +563,10 @@ Partial Public Class MainWindow XMLLoadAttribute(.GetAttribute("Option"), TotalOption) XMLLoadAttribute(.GetAttribute("Multiplier"), TotalMultiplier) XMLLoadAttribute(.GetAttribute("GlobalMultiplier"), TotalGlobalMultiplier) - XMLLoadAttribute(.GetAttribute("RecommendedTextDisplay"), TotalRecommendedTextDisplay) + XMLLoadAttribute(.GetAttribute("Decimal"), TotalDecimal) + XMLLoadAttribute(.GetAttribute("DisplayValue"), TotalDisplayValue) + XMLLoadAttribute(.GetAttribute("DisplayText"), TotalDisplayText) + XMLLoadAttribute(.GetAttribute("Autofill"), TotalAutofill) End With End If diff --git a/iBMSC/MainWindow.designer.vb b/iBMSC/MainWindow.designer.vb index b34304fce..5a2c5a279 100644 --- a/iBMSC/MainWindow.designer.vb +++ b/iBMSC/MainWindow.designer.vb @@ -25,16 +25,16 @@ Partial Class MainWindow Me.TBLangDef = New System.Windows.Forms.ToolStripMenuItem() Me.TBLangRefresh = New System.Windows.Forms.ToolStripMenuItem() Me.ToolStripSeparator9 = New System.Windows.Forms.ToolStripSeparator() - Me.TBLanguage = New System.Windows.Forms.ToolStripDropDownButton() Me.mnLanguage = New System.Windows.Forms.ToolStripMenuItem() + Me.TBLanguage = New System.Windows.Forms.ToolStripDropDownButton() Me.cmnTheme = New System.Windows.Forms.ContextMenuStrip(Me.components) Me.TBThemeDef = New System.Windows.Forms.ToolStripMenuItem() Me.TBThemeSave = New System.Windows.Forms.ToolStripMenuItem() Me.TBThemeRefresh = New System.Windows.Forms.ToolStripMenuItem() Me.TBThemeLoadComptability = New System.Windows.Forms.ToolStripMenuItem() Me.ToolStripSeparator6 = New System.Windows.Forms.ToolStripSeparator() - Me.mnTheme = New System.Windows.Forms.ToolStripMenuItem() Me.TBTheme = New System.Windows.Forms.ToolStripDropDownButton() + Me.mnTheme = New System.Windows.Forms.ToolStripMenuItem() Me.Timer1 = New System.Windows.Forms.Timer(Me.components) Me.Menu1 = New System.Windows.Forms.ContextMenuStrip(Me.components) Me.MInsert = New System.Windows.Forms.ToolStripMenuItem() @@ -105,7 +105,6 @@ Partial Class MainWindow Me.mnShowFileName = New System.Windows.Forms.ToolStripMenuItem() Me.mnShowWaveform = New System.Windows.Forms.ToolStripMenuItem() Me.ToolStripSeparator20 = New System.Windows.Forms.ToolStripSeparator() - Me.mnTechnicalErrorCheck = New System.Windows.Forms.ToolStripMenuItem() Me.mnPOptions = New System.Windows.Forms.ToolStripMenuItem() Me.mnGOptions = New System.Windows.Forms.ToolStripMenuItem() Me.mnKOptions = New System.Windows.Forms.ToolStripMenuItem() @@ -129,11 +128,11 @@ Partial Class MainWindow Me.POBSRandom = New System.Windows.Forms.ToolStripMenuItem() Me.POBHRandom = New System.Windows.Forms.ToolStripMenuItem() Me.POBSort = New System.Windows.Forms.ToolStripMenuItem() + Me.POConvert = New System.Windows.Forms.ToolStripDropDownButton() Me.mnPreview = New System.Windows.Forms.ToolStripMenuItem() Me.mnPlayB = New System.Windows.Forms.ToolStripMenuItem() Me.mnPlay = New System.Windows.Forms.ToolStripMenuItem() Me.mnStop = New System.Windows.Forms.ToolStripMenuItem() - Me.POConvert = New System.Windows.Forms.ToolStripDropDownButton() Me.TBMain = New System.Windows.Forms.ToolStrip() Me.TBNew = New System.Windows.Forms.ToolStripButton() Me.TBOpen = New System.Windows.Forms.ToolStripSplitButton() @@ -378,6 +377,10 @@ Partial Class MainWindow Me.POptionsScroll = New System.Windows.Forms.Panel() Me.TimerInternalPlay = New System.Windows.Forms.Timer(Me.components) Me.TimerPreviewNote = New System.Windows.Forms.Timer(Me.components) + Me.ToolsToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() + Me.mnTechnicalErrorCheck = New System.Windows.Forms.ToolStripMenuItem() + Me.mnTOTAL = New System.Windows.Forms.ToolStripMenuItem() + Me.ToolStripSeparator13 = New System.Windows.Forms.ToolStripSeparator() Me.cmnLanguage.SuspendLayout() Me.cmnTheme.SuspendLayout() Me.Menu1.SuspendLayout() @@ -462,7 +465,7 @@ Partial Class MainWindow ' Me.cmnLanguage.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.TBLangDef, Me.TBLangRefresh, Me.ToolStripSeparator9}) Me.cmnLanguage.Name = "cmnLanguage" - Me.cmnLanguage.OwnerItem = Me.mnLanguage + Me.cmnLanguage.OwnerItem = Me.TBLanguage Me.cmnLanguage.Size = New System.Drawing.Size(121, 54) ' 'TBLangDef @@ -483,6 +486,14 @@ Partial Class MainWindow Me.ToolStripSeparator9.Name = "ToolStripSeparator9" Me.ToolStripSeparator9.Size = New System.Drawing.Size(117, 6) ' + 'mnLanguage + ' + Me.mnLanguage.DropDown = Me.cmnLanguage + Me.mnLanguage.Image = Global.iBMSC.My.Resources.Resources.x16Language + Me.mnLanguage.Name = "mnLanguage" + Me.mnLanguage.Size = New System.Drawing.Size(253, 22) + Me.mnLanguage.Text = "&Language" + ' 'TBLanguage ' Me.TBLanguage.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image @@ -493,19 +504,11 @@ Partial Class MainWindow Me.TBLanguage.Size = New System.Drawing.Size(29, 22) Me.TBLanguage.Text = "Language" ' - 'mnLanguage - ' - Me.mnLanguage.DropDown = Me.cmnLanguage - Me.mnLanguage.Image = Global.iBMSC.My.Resources.Resources.x16Language - Me.mnLanguage.Name = "mnLanguage" - Me.mnLanguage.Size = New System.Drawing.Size(253, 22) - Me.mnLanguage.Text = "&Language" - ' 'cmnTheme ' Me.cmnTheme.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.TBThemeDef, Me.TBThemeSave, Me.TBThemeRefresh, Me.TBThemeLoadComptability, Me.ToolStripSeparator6}) Me.cmnTheme.Name = "cmnLanguage" - Me.cmnTheme.OwnerItem = Me.TBTheme + Me.cmnTheme.OwnerItem = Me.mnTheme Me.cmnTheme.Size = New System.Drawing.Size(246, 98) ' 'TBThemeDef @@ -539,14 +542,6 @@ Partial Class MainWindow Me.ToolStripSeparator6.Name = "ToolStripSeparator6" Me.ToolStripSeparator6.Size = New System.Drawing.Size(242, 6) ' - 'mnTheme - ' - Me.mnTheme.DropDown = Me.cmnTheme - Me.mnTheme.Image = Global.iBMSC.My.Resources.Resources.x16Theme - Me.mnTheme.Name = "mnTheme" - Me.mnTheme.Size = New System.Drawing.Size(253, 22) - Me.mnTheme.Text = "&Theme" - ' 'TBTheme ' Me.TBTheme.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image @@ -557,6 +552,14 @@ Partial Class MainWindow Me.TBTheme.Size = New System.Drawing.Size(29, 22) Me.TBTheme.Text = "Theme" ' + 'mnTheme + ' + Me.mnTheme.DropDown = Me.cmnTheme + Me.mnTheme.Image = Global.iBMSC.My.Resources.Resources.x16Theme + Me.mnTheme.Name = "mnTheme" + Me.mnTheme.Size = New System.Drawing.Size(253, 22) + Me.mnTheme.Text = "&Theme" + ' 'Timer1 ' Me.Timer1.Interval = 15 @@ -592,7 +595,7 @@ Partial Class MainWindow Me.mnMain.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch Me.mnMain.Dock = System.Windows.Forms.DockStyle.None Me.mnMain.GripMargin = New System.Windows.Forms.Padding(2) - Me.mnMain.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.mnFile, Me.mnEdit, Me.mnSys, Me.mnOptions, Me.mnConversion, Me.mnPreview}) + Me.mnMain.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.mnFile, Me.mnEdit, Me.mnSys, Me.mnOptions, Me.mnConversion, Me.mnPreview, Me.ToolsToolStripMenuItem}) Me.mnMain.LayoutStyle = System.Windows.Forms.ToolStripLayoutStyle.Flow Me.mnMain.Location = New System.Drawing.Point(0, 0) Me.mnMain.Name = "mnMain" @@ -1055,7 +1058,7 @@ Partial Class MainWindow ' 'mnOptions ' - Me.mnOptions.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.mnNTInput, Me.mnErrorCheck, Me.mnPreviewOnClick, Me.mnShowFileName, Me.mnShowWaveform, Me.ToolStripSeparator20, Me.mnTechnicalErrorCheck, Me.mnPOptions, Me.mnGOptions, Me.mnKOptions, Me.mnVOptions, Me.mnVCOptions, Me.mnLanguage, Me.mnTheme}) + Me.mnOptions.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.mnNTInput, Me.mnErrorCheck, Me.mnPreviewOnClick, Me.mnShowFileName, Me.mnShowWaveform, Me.ToolStripSeparator20, Me.mnPOptions, Me.mnGOptions, Me.mnKOptions, Me.mnVOptions, Me.mnVCOptions, Me.mnLanguage, Me.mnTheme}) Me.mnOptions.Name = "mnOptions" Me.mnOptions.Size = New System.Drawing.Size(61, 19) Me.mnOptions.Text = "&Options" @@ -1112,13 +1115,6 @@ Partial Class MainWindow Me.ToolStripSeparator20.Name = "ToolStripSeparator20" Me.ToolStripSeparator20.Size = New System.Drawing.Size(250, 6) ' - 'mnTechnicalErrorCheck - ' - Me.mnTechnicalErrorCheck.Image = Global.iBMSC.My.Resources.Resources.x16CheckErrorTechnical - Me.mnTechnicalErrorCheck.Name = "mnTechnicalErrorCheck" - Me.mnTechnicalErrorCheck.Size = New System.Drawing.Size(253, 22) - Me.mnTechnicalErrorCheck.Text = "Technical &Error Check" - ' 'mnPOptions ' Me.mnPOptions.Image = Global.iBMSC.My.Resources.Resources.x16PlayerOptions @@ -1170,7 +1166,6 @@ Partial Class MainWindow ' Me.cmnConversion.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.POBLong, Me.POBShort, Me.POBLongShort, Me.ToolStripSeparator10, Me.POBHidden, Me.POBVisible, Me.POBHiddenVisible, Me.ToolStripSeparator11, Me.POBModify, Me.POBMirror, Me.POBFlip, Me.POBRandom, Me.POBRRandom, Me.POBSRandom, Me.POBHRandom, Me.POBSort}) Me.cmnConversion.Name = "cmnLanguage" - Me.cmnConversion.OwnerItem = Me.POConvert Me.cmnConversion.Size = New System.Drawing.Size(222, 324) ' 'POBLong @@ -1283,6 +1278,16 @@ Partial Class MainWindow Me.POBSort.Size = New System.Drawing.Size(221, 22) Me.POBSort.Text = "S&ort" ' + 'POConvert + ' + Me.POConvert.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image + Me.POConvert.DropDown = Me.cmnConversion + Me.POConvert.Image = Global.iBMSC.My.Resources.Resources.ConvertNotes + Me.POConvert.ImageTransparentColor = System.Drawing.Color.Magenta + Me.POConvert.Name = "POConvert" + Me.POConvert.Size = New System.Drawing.Size(29, 22) + Me.POConvert.Text = "Convert Notes" + ' 'mnPreview ' Me.mnPreview.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.mnPlayB, Me.mnPlay, Me.mnStop}) @@ -1314,16 +1319,6 @@ Partial Class MainWindow Me.mnStop.Size = New System.Drawing.Size(201, 22) Me.mnStop.Text = "&Stop" ' - 'POConvert - ' - Me.POConvert.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image - Me.POConvert.DropDown = Me.cmnConversion - Me.POConvert.Image = Global.iBMSC.My.Resources.Resources.ConvertNotes - Me.POConvert.ImageTransparentColor = System.Drawing.Color.Magenta - Me.POConvert.Name = "POConvert" - Me.POConvert.Size = New System.Drawing.Size(29, 22) - Me.POConvert.Text = "Convert Notes" - ' 'TBMain ' Me.TBMain.AccessibleRole = System.Windows.Forms.AccessibleRole.ToolBar @@ -4239,6 +4234,32 @@ Partial Class MainWindow ' Me.TimerPreviewNote.Interval = 1 ' + 'ToolsToolStripMenuItem + ' + Me.ToolsToolStripMenuItem.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.mnTechnicalErrorCheck, Me.mnTOTAL, Me.ToolStripSeparator13}) + Me.ToolsToolStripMenuItem.Name = "ToolsToolStripMenuItem" + Me.ToolsToolStripMenuItem.Size = New System.Drawing.Size(46, 19) + Me.ToolsToolStripMenuItem.Text = "Tools" + ' + 'mnTechnicalErrorCheck + ' + Me.mnTechnicalErrorCheck.Image = Global.iBMSC.My.Resources.Resources.x16CheckErrorTechnical + Me.mnTechnicalErrorCheck.Name = "mnTechnicalErrorCheck" + Me.mnTechnicalErrorCheck.ShortcutKeyDisplayString = "Ctrl+Alt+E" + Me.mnTechnicalErrorCheck.Size = New System.Drawing.Size(250, 22) + Me.mnTechnicalErrorCheck.Text = "Check Technical &Error" + ' + 'mnTOTAL + ' + Me.mnTOTAL.Name = "mnTOTAL" + Me.mnTOTAL.Size = New System.Drawing.Size(250, 22) + Me.mnTOTAL.Text = "#TOTAL Tool" + ' + 'ToolStripSeparator13 + ' + Me.ToolStripSeparator13.Name = "ToolStripSeparator13" + Me.ToolStripSeparator13.Size = New System.Drawing.Size(247, 6) + ' 'MainWindow ' Me.AllowDrop = True @@ -4721,9 +4742,12 @@ Partial Class MainWindow Friend WithEvents BInsertOrRemoveSpaceMN As ToolStripButton Friend WithEvents BWAVDuplicate As Button Friend WithEvents BWAVColorOverride As Button - Friend WithEvents mnTechnicalErrorCheck As ToolStripMenuItem Friend WithEvents mnKOptions As ToolStripMenuItem Friend WithEvents TBKOptions As ToolStripButton Friend WithEvents TimerInternalPlay As Timer Friend WithEvents TimerPreviewNote As Timer + Friend WithEvents ToolsToolStripMenuItem As ToolStripMenuItem + Friend WithEvents mnTechnicalErrorCheck As ToolStripMenuItem + Friend WithEvents mnTOTAL As ToolStripMenuItem + Friend WithEvents ToolStripSeparator13 As ToolStripSeparator End Class diff --git a/iBMSC/MainWindow.vb b/iBMSC/MainWindow.vb index 476277f13..5e571e935 100644 --- a/iBMSC/MainWindow.vb +++ b/iBMSC/MainWindow.vb @@ -396,7 +396,10 @@ Public Class MainWindow Dim TotalOption As Integer = 0 Dim TotalMultiplier As Double = 0.25 Dim TotalGlobalMultiplier As Double = 1 - Dim TotalRecommendedTextDisplay As Boolean = True + Dim TotalDecimal As Integer = 0 + Dim TotalDisplayValue As Boolean = True + Dim TotalDisplayText As Boolean = True + Dim TotalAutofill As Boolean = True '----Find Delete Replace Options Dim fdriMesL As Integer @@ -1495,7 +1498,7 @@ Public Class MainWindow Next End Sub - Private Sub CheckTechnicalError(sender As Object, e As EventArgs) Handles mnTechnicalErrorCheck.Click + Private Sub CheckTechnicalError(sender As Object, e As EventArgs) For xIN = 1 To UBound(Notes) If Notes(xIN).ErrorType = 1 Then Notes(xIN).ErrorType = 0 @@ -2828,8 +2831,13 @@ Public Class MainWindow Case 2 TotalValue = xIAll * TotalMultiplier * TotalGlobalMultiplier End Select - TBTotalValue.Text = IIf(TotalRecommendedTextDisplay, "Recommended #TOTAL: ", "").ToString() & Str(Math.Round(TotalValue, 3)) + If TotalDisplayValue Then + TBTotalValue.Text = IIf(TotalDisplayText, "Recommended #TOTAL: ", "").ToString() & Math.Round(TotalValue, TotalDecimal).ToString() + Else + TBTotalValue.Text = "" + End If TBStatistics.Text = xIAll.ToString() + If TotalAutofill Then THTotal.Text = Math.Round(TotalValue, TotalDecimal).ToString() End Sub Public Function GetMouseVPosition(Optional snap As Boolean = True) As Double @@ -3944,30 +3952,27 @@ Public Class MainWindow Next End Sub - Private Sub TBTotalValue_Click(sender As Object, e As EventArgs) Handles TBTotalValue.Click - Dim xDiag As New OpTotal(CInt(TBStatistics.Text), TotalOption, TotalMultiplier, TotalGlobalMultiplier, TotalRecommendedTextDisplay) + Private Sub TBTotalValue_Click(sender As Object, e As EventArgs) Handles TBTotalValue.Click, mnTOTAL.Click + Dim xDiag As New OpTotal(CInt(TBStatistics.Text), TotalOption, TotalMultiplier, TotalGlobalMultiplier, TotalDecimal, TotalDisplayValue, TotalDisplayText, TotalAutofill) If xDiag.ShowDialog() = Windows.Forms.DialogResult.OK Then With xDiag TotalOption = .TotalOption - TotalMultiplier = CDbl(.TMultiplier.Text) - TotalGlobalMultiplier = CDbl(.TGlobalMultiplier.Text) - TotalRecommendedTextDisplay = .CBDisplayText.Checked + TotalMultiplier = .NMultiplier.Value + TotalGlobalMultiplier = .NGlobalMultiplier.Value + TotalDecimal = CInt(.NDecimal.Value) + TotalDisplayValue = .CBDisplayValue.Checked + TotalDisplayText = .CBDisplayText.Checked + TotalAutofill = .CBAutoFill.Checked End With - Dim N As Integer = CInt(TBStatistics.Text) - Dim TotalValue As Double - Select Case TotalOption - Case 0 - TotalValue = N * 7.605 / (0.01 * N + 6.5) * TotalGlobalMultiplier - Case 1 - TotalValue = CDbl(IIf(N < 400, 200 + N / 5, IIf(N < 600, 280 + (N - 400) / 2.5, 360 + (N - 600) / 5))) * TotalGlobalMultiplier - Case 2 - TotalValue = N * TotalMultiplier * TotalGlobalMultiplier - End Select - TBTotalValue.Text = IIf(TotalRecommendedTextDisplay, "Recommended #TOTAL: ", "").ToString() & Str(Math.Round(TotalValue, 3)) + CalculateTotalPlayableNotes() End If End Sub + Private Sub THTotal_KeyDown(sender As Object, e As KeyEventArgs) Handles THTotal.KeyDown + TotalAutofill = False + End Sub + Private Sub UpdateColumnsX() column(0).Left = 0 'If col(0).Width = 0 Then col(0).Visible = False @@ -4096,6 +4101,8 @@ Public Class MainWindow TBPaste.Text = "Paste (" & Join(keybind.Combo, ", ") & ")" Case "Select All" mnSelectAll.ShortcutKeyDisplayString = keybind.Combo(0) + Case "Check Technical Error" + mnTechnicalErrorCheck.ShortcutKeyDisplayString = keybind.Combo(0) End Select End Sub diff --git a/iBMSC/Option Windows/OpTotal.Designer.vb b/iBMSC/Option Windows/OpTotal.Designer.vb index 5ccb65d84..9403e24da 100644 --- a/iBMSC/Option Windows/OpTotal.Designer.vb +++ b/iBMSC/Option Windows/OpTotal.Designer.vb @@ -37,7 +37,6 @@ Partial Class OpTotal Me.LTotalIIDX1 = New System.Windows.Forms.Label() Me.LTotalIIDX2 = New System.Windows.Forms.Label() Me.LTotalMultiplier = New System.Windows.Forms.Label() - Me.TMultiplier = New System.Windows.Forms.TextBox() Me.Label6 = New System.Windows.Forms.Label() Me.Label8 = New System.Windows.Forms.Label() Me.TableLayoutPanel2 = New System.Windows.Forms.TableLayoutPanel() @@ -45,12 +44,22 @@ Partial Class OpTotal Me.Cancel_Button = New System.Windows.Forms.Button() Me.CBDisplayText = New System.Windows.Forms.CheckBox() Me.TableLayoutPanel3 = New System.Windows.Forms.TableLayoutPanel() - Me.TGlobalMultiplier = New System.Windows.Forms.TextBox() + Me.Label11 = New System.Windows.Forms.Label() Me.Label5 = New System.Windows.Forms.Label() + Me.NDecimal = New System.Windows.Forms.NumericUpDown() + Me.NGlobalMultiplier = New System.Windows.Forms.NumericUpDown() + Me.TableLayoutPanel5 = New System.Windows.Forms.TableLayoutPanel() + Me.CBDisplayValue = New System.Windows.Forms.CheckBox() + Me.CBAutoFill = New System.Windows.Forms.CheckBox() + Me.NMultiplier = New System.Windows.Forms.NumericUpDown() Me.TableLayoutPanel1.SuspendLayout() Me.TableLayoutPanel4.SuspendLayout() Me.TableLayoutPanel2.SuspendLayout() Me.TableLayoutPanel3.SuspendLayout() + CType(Me.NDecimal, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.NGlobalMultiplier, System.ComponentModel.ISupportInitialize).BeginInit() + Me.TableLayoutPanel5.SuspendLayout() + CType(Me.NMultiplier, System.ComponentModel.ISupportInitialize).BeginInit() Me.SuspendLayout() ' 'CTotalIIDX1 @@ -100,6 +109,7 @@ Partial Class OpTotal Me.TableLayoutPanel1.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle()) Me.TableLayoutPanel1.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle()) Me.TableLayoutPanel1.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle()) + Me.TableLayoutPanel1.Controls.Add(Me.NMultiplier, 1, 3) Me.TableLayoutPanel1.Controls.Add(Me.TableLayoutPanel4, 3, 2) Me.TableLayoutPanel1.Controls.Add(Me.Label4, 3, 0) Me.TableLayoutPanel1.Controls.Add(Me.Label3, 2, 0) @@ -111,7 +121,6 @@ Partial Class OpTotal Me.TableLayoutPanel1.Controls.Add(Me.LTotalIIDX1, 2, 1) Me.TableLayoutPanel1.Controls.Add(Me.LTotalIIDX2, 2, 2) Me.TableLayoutPanel1.Controls.Add(Me.LTotalMultiplier, 2, 3) - Me.TableLayoutPanel1.Controls.Add(Me.TMultiplier, 1, 3) Me.TableLayoutPanel1.Controls.Add(Me.Label6, 3, 1) Me.TableLayoutPanel1.Controls.Add(Me.Label8, 3, 3) Me.TableLayoutPanel1.Location = New System.Drawing.Point(12, 12) @@ -132,7 +141,7 @@ Partial Class OpTotal Me.TableLayoutPanel4.Controls.Add(Me.Label9, 0, 2) Me.TableLayoutPanel4.Controls.Add(Me.Label7, 0, 0) Me.TableLayoutPanel4.Controls.Add(Me.Label10, 0, 1) - Me.TableLayoutPanel4.Location = New System.Drawing.Point(346, 46) + Me.TableLayoutPanel4.Location = New System.Drawing.Point(312, 46) Me.TableLayoutPanel4.Name = "TableLayoutPanel4" Me.TableLayoutPanel4.RowCount = 3 Me.TableLayoutPanel4.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20.0!)) @@ -178,9 +187,9 @@ Partial Class OpTotal ' Me.Label4.AutoSize = True Me.Label4.Dock = System.Windows.Forms.DockStyle.Fill - Me.Label4.Location = New System.Drawing.Point(346, 1) + Me.Label4.Location = New System.Drawing.Point(312, 1) Me.Label4.Name = "Label4" - Me.Label4.Size = New System.Drawing.Size(220, 15) + Me.Label4.Size = New System.Drawing.Size(254, 15) Me.Label4.TabIndex = 4 Me.Label4.Text = "Calculation Formula" Me.Label4.TextAlign = System.Drawing.ContentAlignment.MiddleCenter @@ -189,7 +198,7 @@ Partial Class OpTotal ' Me.Label3.AutoSize = True Me.Label3.Dock = System.Windows.Forms.DockStyle.Fill - Me.Label3.Location = New System.Drawing.Point(281, 1) + Me.Label3.Location = New System.Drawing.Point(247, 1) Me.Label3.Name = "Label3" Me.Label3.Size = New System.Drawing.Size(58, 15) Me.Label3.TabIndex = 3 @@ -202,7 +211,7 @@ Partial Class OpTotal Me.Label2.Dock = System.Windows.Forms.DockStyle.Fill Me.Label2.Location = New System.Drawing.Point(174, 1) Me.Label2.Name = "Label2" - Me.Label2.Size = New System.Drawing.Size(100, 15) + Me.Label2.Size = New System.Drawing.Size(66, 15) Me.Label2.TabIndex = 2 Me.Label2.Text = "Parameters" Me.Label2.TextAlign = System.Drawing.ContentAlignment.MiddleCenter @@ -225,7 +234,7 @@ Partial Class OpTotal ' Me.LTotalIIDX1.AutoSize = True Me.LTotalIIDX1.Dock = System.Windows.Forms.DockStyle.Fill - Me.LTotalIIDX1.Location = New System.Drawing.Point(281, 17) + Me.LTotalIIDX1.Location = New System.Drawing.Point(247, 17) Me.LTotalIIDX1.Name = "LTotalIIDX1" Me.LTotalIIDX1.Size = New System.Drawing.Size(58, 25) Me.LTotalIIDX1.TabIndex = 7 @@ -236,7 +245,7 @@ Partial Class OpTotal ' Me.LTotalIIDX2.AutoSize = True Me.LTotalIIDX2.Dock = System.Windows.Forms.DockStyle.Fill - Me.LTotalIIDX2.Location = New System.Drawing.Point(281, 43) + Me.LTotalIIDX2.Location = New System.Drawing.Point(247, 43) Me.LTotalIIDX2.Name = "LTotalIIDX2" Me.LTotalIIDX2.Size = New System.Drawing.Size(58, 66) Me.LTotalIIDX2.TabIndex = 8 @@ -247,28 +256,20 @@ Partial Class OpTotal ' Me.LTotalMultiplier.AutoSize = True Me.LTotalMultiplier.Dock = System.Windows.Forms.DockStyle.Fill - Me.LTotalMultiplier.Location = New System.Drawing.Point(281, 110) + Me.LTotalMultiplier.Location = New System.Drawing.Point(247, 110) Me.LTotalMultiplier.Name = "LTotalMultiplier" Me.LTotalMultiplier.Size = New System.Drawing.Size(58, 29) Me.LTotalMultiplier.TabIndex = 9 Me.LTotalMultiplier.Text = "Multiplier" Me.LTotalMultiplier.TextAlign = System.Drawing.ContentAlignment.MiddleCenter ' - 'TMultiplier - ' - Me.TMultiplier.Location = New System.Drawing.Point(174, 113) - Me.TMultiplier.Name = "TMultiplier" - Me.TMultiplier.Size = New System.Drawing.Size(100, 23) - Me.TMultiplier.TabIndex = 6 - Me.TMultiplier.Text = "0.25" - ' 'Label6 ' Me.Label6.AutoSize = True Me.Label6.Dock = System.Windows.Forms.DockStyle.Fill - Me.Label6.Location = New System.Drawing.Point(346, 17) + Me.Label6.Location = New System.Drawing.Point(312, 17) Me.Label6.Name = "Label6" - Me.Label6.Size = New System.Drawing.Size(220, 25) + Me.Label6.Size = New System.Drawing.Size(254, 25) Me.Label6.TabIndex = 10 Me.Label6.Text = "7.605 * Notes / (0.01 * Notes + 6.5)" Me.Label6.TextAlign = System.Drawing.ContentAlignment.MiddleLeft @@ -277,9 +278,9 @@ Partial Class OpTotal ' Me.Label8.AutoSize = True Me.Label8.Dock = System.Windows.Forms.DockStyle.Fill - Me.Label8.Location = New System.Drawing.Point(346, 110) + Me.Label8.Location = New System.Drawing.Point(312, 110) Me.Label8.Name = "Label8" - Me.Label8.Size = New System.Drawing.Size(220, 29) + Me.Label8.Size = New System.Drawing.Size(254, 29) Me.Label8.TabIndex = 12 Me.Label8.Text = "Notes * Multiplier" Me.Label8.TextAlign = System.Drawing.ContentAlignment.MiddleLeft @@ -292,7 +293,7 @@ Partial Class OpTotal Me.TableLayoutPanel2.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50.0!)) Me.TableLayoutPanel2.Controls.Add(Me.OK_Button, 0, 0) Me.TableLayoutPanel2.Controls.Add(Me.Cancel_Button, 1, 0) - Me.TableLayoutPanel2.Location = New System.Drawing.Point(418, 180) + Me.TableLayoutPanel2.Location = New System.Drawing.Point(412, 246) Me.TableLayoutPanel2.Name = "TableLayoutPanel2" Me.TableLayoutPanel2.RowCount = 1 Me.TableLayoutPanel2.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50.0!)) @@ -323,7 +324,7 @@ Partial Class OpTotal Me.CBDisplayText.AutoSize = True Me.CBDisplayText.Checked = True Me.CBDisplayText.CheckState = System.Windows.Forms.CheckState.Checked - Me.CBDisplayText.Location = New System.Drawing.Point(186, 158) + Me.CBDisplayText.Location = New System.Drawing.Point(3, 29) Me.CBDisplayText.Name = "CBDisplayText" Me.CBDisplayText.Size = New System.Drawing.Size(200, 19) Me.CBDisplayText.TabIndex = 2 @@ -335,23 +336,28 @@ Partial Class OpTotal Me.TableLayoutPanel3.ColumnCount = 2 Me.TableLayoutPanel3.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle()) Me.TableLayoutPanel3.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100.0!)) - Me.TableLayoutPanel3.Controls.Add(Me.TGlobalMultiplier, 1, 0) + Me.TableLayoutPanel3.Controls.Add(Me.Label11, 0, 1) Me.TableLayoutPanel3.Controls.Add(Me.Label5, 0, 0) + Me.TableLayoutPanel3.Controls.Add(Me.NDecimal, 1, 1) + Me.TableLayoutPanel3.Controls.Add(Me.NGlobalMultiplier, 1, 0) Me.TableLayoutPanel3.Location = New System.Drawing.Point(12, 158) Me.TableLayoutPanel3.Name = "TableLayoutPanel3" - Me.TableLayoutPanel3.RowCount = 1 - Me.TableLayoutPanel3.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100.0!)) - Me.TableLayoutPanel3.Size = New System.Drawing.Size(167, 28) + Me.TableLayoutPanel3.RowCount = 2 + Me.TableLayoutPanel3.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50.0!)) + Me.TableLayoutPanel3.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50.0!)) + Me.TableLayoutPanel3.Size = New System.Drawing.Size(167, 55) Me.TableLayoutPanel3.TabIndex = 1 ' - 'TGlobalMultiplier + 'Label11 ' - Me.TGlobalMultiplier.Dock = System.Windows.Forms.DockStyle.Fill - Me.TGlobalMultiplier.Location = New System.Drawing.Point(104, 3) - Me.TGlobalMultiplier.Name = "TGlobalMultiplier" - Me.TGlobalMultiplier.Size = New System.Drawing.Size(60, 23) - Me.TGlobalMultiplier.TabIndex = 1 - Me.TGlobalMultiplier.Text = "1.0" + Me.Label11.AutoSize = True + Me.Label11.Dock = System.Windows.Forms.DockStyle.Fill + Me.Label11.Location = New System.Drawing.Point(3, 27) + Me.Label11.Name = "Label11" + Me.Label11.Size = New System.Drawing.Size(95, 28) + Me.Label11.TabIndex = 2 + Me.Label11.Text = "Decimal Places" + Me.Label11.TextAlign = System.Drawing.ContentAlignment.MiddleLeft ' 'Label5 ' @@ -359,19 +365,87 @@ Partial Class OpTotal Me.Label5.Dock = System.Windows.Forms.DockStyle.Fill Me.Label5.Location = New System.Drawing.Point(3, 0) Me.Label5.Name = "Label5" - Me.Label5.Size = New System.Drawing.Size(95, 28) + Me.Label5.Size = New System.Drawing.Size(95, 27) Me.Label5.TabIndex = 0 Me.Label5.Text = "Global Multiplier" Me.Label5.TextAlign = System.Drawing.ContentAlignment.MiddleLeft ' + 'NDecimal + ' + Me.NDecimal.Location = New System.Drawing.Point(104, 30) + Me.NDecimal.Name = "NDecimal" + Me.NDecimal.Size = New System.Drawing.Size(60, 23) + Me.NDecimal.TabIndex = 3 + ' + 'NGlobalMultiplier + ' + Me.NGlobalMultiplier.DecimalPlaces = 2 + Me.NGlobalMultiplier.Increment = New Decimal(New Integer() {1, 0, 0, 131072}) + Me.NGlobalMultiplier.Location = New System.Drawing.Point(104, 3) + Me.NGlobalMultiplier.Name = "NGlobalMultiplier" + Me.NGlobalMultiplier.Size = New System.Drawing.Size(60, 23) + Me.NGlobalMultiplier.TabIndex = 4 + Me.NGlobalMultiplier.Value = New Decimal(New Integer() {10, 0, 0, 65536}) + ' + 'TableLayoutPanel5 + ' + Me.TableLayoutPanel5.ColumnCount = 1 + Me.TableLayoutPanel5.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100.0!)) + Me.TableLayoutPanel5.Controls.Add(Me.CBAutoFill, 0, 2) + Me.TableLayoutPanel5.Controls.Add(Me.CBDisplayText, 0, 1) + Me.TableLayoutPanel5.Controls.Add(Me.CBDisplayValue, 0, 0) + Me.TableLayoutPanel5.Location = New System.Drawing.Point(182, 158) + Me.TableLayoutPanel5.Name = "TableLayoutPanel5" + Me.TableLayoutPanel5.RowCount = 3 + Me.TableLayoutPanel5.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 33.33333!)) + Me.TableLayoutPanel5.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 33.33333!)) + Me.TableLayoutPanel5.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 33.33333!)) + Me.TableLayoutPanel5.Size = New System.Drawing.Size(400, 80) + Me.TableLayoutPanel5.TabIndex = 101 + ' + 'CBDisplayValue + ' + Me.CBDisplayValue.AutoSize = True + Me.CBDisplayValue.Checked = True + Me.CBDisplayValue.CheckState = System.Windows.Forms.CheckState.Checked + Me.CBDisplayValue.Location = New System.Drawing.Point(3, 3) + Me.CBDisplayValue.Name = "CBDisplayValue" + Me.CBDisplayValue.Size = New System.Drawing.Size(95, 19) + Me.CBDisplayValue.TabIndex = 2 + Me.CBDisplayValue.Text = "Display Value" + Me.CBDisplayValue.UseVisualStyleBackColor = True + ' + 'CBAutoFill + ' + Me.CBAutoFill.AutoSize = True + Me.CBAutoFill.Checked = True + Me.CBAutoFill.CheckState = System.Windows.Forms.CheckState.Checked + Me.CBAutoFill.Location = New System.Drawing.Point(3, 55) + Me.CBAutoFill.Name = "CBAutoFill" + Me.CBAutoFill.Size = New System.Drawing.Size(107, 19) + Me.CBAutoFill.TabIndex = 3 + Me.CBAutoFill.Text = "Autofill #TOTAL" + Me.CBAutoFill.UseVisualStyleBackColor = True + ' + 'NMultiplier + ' + Me.NMultiplier.DecimalPlaces = 3 + Me.NMultiplier.Dock = System.Windows.Forms.DockStyle.Fill + Me.NMultiplier.Increment = New Decimal(New Integer() {1, 0, 0, 131072}) + Me.NMultiplier.Location = New System.Drawing.Point(174, 113) + Me.NMultiplier.Name = "NMultiplier" + Me.NMultiplier.Size = New System.Drawing.Size(66, 23) + Me.NMultiplier.TabIndex = 6 + Me.NMultiplier.Value = New Decimal(New Integer() {25, 0, 0, 131072}) + ' 'OpTotal ' Me.AcceptButton = Me.OK_Button Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None Me.CancelButton = Me.Cancel_Button - Me.ClientSize = New System.Drawing.Size(600, 225) + Me.ClientSize = New System.Drawing.Size(594, 291) + Me.Controls.Add(Me.TableLayoutPanel5) Me.Controls.Add(Me.TableLayoutPanel3) - Me.Controls.Add(Me.CBDisplayText) Me.Controls.Add(Me.TableLayoutPanel2) Me.Controls.Add(Me.TableLayoutPanel1) Me.Font = New System.Drawing.Font("Segoe UI", 9.0!) @@ -382,7 +456,7 @@ Partial Class OpTotal Me.Name = "OpTotal" Me.ShowInTaskbar = False Me.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent - Me.Text = "#TOTAL Settings" + Me.Text = "#TOTAL Tool" Me.TableLayoutPanel1.ResumeLayout(False) Me.TableLayoutPanel1.PerformLayout() Me.TableLayoutPanel4.ResumeLayout(False) @@ -390,8 +464,12 @@ Partial Class OpTotal Me.TableLayoutPanel2.ResumeLayout(False) Me.TableLayoutPanel3.ResumeLayout(False) Me.TableLayoutPanel3.PerformLayout() + CType(Me.NDecimal, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.NGlobalMultiplier, System.ComponentModel.ISupportInitialize).EndInit() + Me.TableLayoutPanel5.ResumeLayout(False) + Me.TableLayoutPanel5.PerformLayout() + CType(Me.NMultiplier, System.ComponentModel.ISupportInitialize).EndInit() Me.ResumeLayout(False) - Me.PerformLayout() End Sub @@ -414,10 +492,15 @@ Partial Class OpTotal Friend WithEvents Label9 As Label Friend WithEvents Label7 As Label Friend WithEvents Label10 As Label - Friend WithEvents TMultiplier As TextBox Friend WithEvents Label6 As Label Friend WithEvents Label8 As Label Friend WithEvents TableLayoutPanel3 As TableLayoutPanel - Friend WithEvents TGlobalMultiplier As TextBox Friend WithEvents Label5 As Label + Friend WithEvents Label11 As Label + Friend WithEvents NDecimal As NumericUpDown + Friend WithEvents NGlobalMultiplier As NumericUpDown + Friend WithEvents TableLayoutPanel5 As TableLayoutPanel + Friend WithEvents CBDisplayValue As CheckBox + Friend WithEvents CBAutoFill As CheckBox + Friend WithEvents NMultiplier As NumericUpDown End Class diff --git a/iBMSC/Option Windows/OpTotal.vb b/iBMSC/Option Windows/OpTotal.vb index 81aa07210..6bf48a946 100644 --- a/iBMSC/Option Windows/OpTotal.vb +++ b/iBMSC/Option Windows/OpTotal.vb @@ -3,7 +3,9 @@ Public TotalOption As Integer Dim CTotalList() As RadioButton - Public Sub New(ByVal xNoteCount As Integer, ByVal xTotalOption As Integer, ByVal xMultiplier As Double, ByVal xGlobalMultiplier As Double, ByVal xRecommendedTextDisplay As Boolean) + Public Sub New(ByVal xNoteCount As Integer, ByVal xTotalOption As Integer, ByVal xMultiplier As Double, + ByVal xGlobalMultiplier As Double, ByVal xDecimal As Integer, + ByVal xDisplayValue As Boolean, ByVal xDisplayText As Boolean, ByVal xAutofill As Boolean) ' This call is required by the designer. InitializeComponent() @@ -11,9 +13,12 @@ CTotalList = {CTotalIIDX1, CTotalIIDX2, CTotalMultiplier} NoteCount = xNoteCount TotalOption = xTotalOption - TMultiplier.Text = xMultiplier.ToString() - TGlobalMultiplier.Text = xGlobalMultiplier.ToString() - CBDisplayText.Checked = xRecommendedTextDisplay + NMultiplier.Value = CDec(xMultiplier) + NGlobalMultiplier.Value = CDec(xGlobalMultiplier) + NDecimal.Value = xDecimal + CBDisplayValue.Checked = xDisplayValue + CBDisplayText.Checked = xDisplayText + CBAutoFill.Checked = xAutofill CTotalList(TotalOption).Checked = True CalculateTotal() @@ -34,13 +39,14 @@ TotalOption = Array.IndexOf(Of RadioButton)(CTotalList, RadioS) End Sub - Private Sub TMultiplier_TextChanged(sender As Object, e As EventArgs) Handles TMultiplier.TextChanged, TGlobalMultiplier.TextChanged + Private Sub TMultiplier_TextChanged(sender As Object, e As EventArgs) Handles NGlobalMultiplier.TextChanged CalculateTotal() End Sub Private Sub CalculateTotal() - LTotalIIDX1.Text = Math.Round(NoteCount * 7.605 / (0.01 * NoteCount + 6.5) * Val(TGlobalMultiplier.Text), 3).ToString() - LTotalIIDX2.Text = Math.Round(CDbl(IIf(NoteCount < 400, 200 + NoteCount / 5, IIf(NoteCount < 600, 280 + (NoteCount - 400) / 2.5, 360 + (NoteCount - 600) / 5))) * Val(TGlobalMultiplier.Text), 3).ToString() - LTotalMultiplier.Text = Math.Round(NoteCount * Val(TMultiplier.Text) * Val(TGlobalMultiplier.Text), 3).ToString() + Dim Dec = CInt(NDecimal.Value) + LTotalIIDX1.Text = Math.Round(NoteCount * 7.605 / (0.01 * NoteCount + 6.5) * NGlobalMultiplier.Value, Dec).ToString() + LTotalIIDX2.Text = Math.Round(CDbl(IIf(NoteCount < 400, 200 + NoteCount / 5, IIf(NoteCount < 600, 280 + (NoteCount - 400) / 2.5, 360 + (NoteCount - 600) / 5))) * Val(NGlobalMultiplier.Text), Dec).ToString() + LTotalMultiplier.Text = Math.Round(NoteCount * Val(NMultiplier.Text) * Val(NGlobalMultiplier.Text), Dec).ToString() End Sub End Class \ No newline at end of file From cd8806b13eb9fab59577187e57ed06e9ee7bdc63 Mon Sep 17 00:00:00 2001 From: psyk2642 <60137590+psyk2642@users.noreply.github.com> Date: Wed, 27 Apr 2022 22:43:25 +0800 Subject: [PATCH 126/257] Added option to disable preview audio lines --- iBMSC/EditorPersistent.vb | 2 + iBMSC/MainWindow.vb | 4 +- iBMSC/Option Windows/OpGeneral.Designer.vb | 51 ++++++++++++++-------- iBMSC/Option Windows/OpGeneral.vb | 3 +- iBMSC/PanelEvents.vb | 12 ++--- 5 files changed, 47 insertions(+), 25 deletions(-) diff --git a/iBMSC/EditorPersistent.vb b/iBMSC/EditorPersistent.vb index d4df58c15..feba58850 100644 --- a/iBMSC/EditorPersistent.vb +++ b/iBMSC/EditorPersistent.vb @@ -105,6 +105,7 @@ Partial Public Class MainWindow .WriteAttributeString("BeepWhileSaved", BeepWhileSaved.ToString()) .WriteAttributeString("BPMx1296", BPMx1296.ToString()) .WriteAttributeString("STOPx1296", STOPx1296.ToString()) + .WriteAttributeString("AudioLine", AudioLine.ToString()) .WriteEndElement() .WriteStartElement("WAV") @@ -460,6 +461,7 @@ Partial Public Class MainWindow XMLLoadAttribute(.GetAttribute("BeepWhileSaved"), BeepWhileSaved) XMLLoadAttribute(.GetAttribute("BPMx1296"), BPMx1296) XMLLoadAttribute(.GetAttribute("STOPx1296"), STOPx1296) + XMLLoadAttribute(.GetAttribute("AudioLine"), AudioLine) End With End If diff --git a/iBMSC/MainWindow.vb b/iBMSC/MainWindow.vb index 5e571e935..45c844a41 100644 --- a/iBMSC/MainWindow.vb +++ b/iBMSC/MainWindow.vb @@ -71,6 +71,7 @@ Public Class MainWindow Dim BeepWhileSaved As Boolean = True Dim BPMx1296 As Boolean = False Dim STOPx1296 As Boolean = False + Dim AudioLine As Boolean = True Dim IsInitializing As Boolean = True Dim FirstMouseEnter As Boolean = True @@ -4033,7 +4034,7 @@ Public Class MainWindow End Select Dim xDiag As New OpGeneral(gWheel, gPgUpDn, MiddleButtonMoveMethod, xTE, CInt(192.0R / BMSGridLimit), - AutoSaveInterval, BeepWhileSaved, BPMx1296, STOPx1296, + AutoSaveInterval, BeepWhileSaved, BPMx1296, STOPx1296, AudioLine, AutoFocusMouseEnter, FirstClickDisabled, ClickStopPreview, ErrorJackBPM, ErrorJackTH) If xDiag.ShowDialog() = Windows.Forms.DialogResult.OK Then @@ -4048,6 +4049,7 @@ Public Class MainWindow BeepWhileSaved = .cBeep.Checked BPMx1296 = .cBpm1296.Checked STOPx1296 = .cStop1296.Checked + AudioLine = .cAudioLine.Checked AutoFocusMouseEnter = .cMEnterFocus.Checked FirstClickDisabled = .cMClickFocus.Checked ClickStopPreview = .cMStopPreview.Checked diff --git a/iBMSC/Option Windows/OpGeneral.Designer.vb b/iBMSC/Option Windows/OpGeneral.Designer.vb index 1545b4046..7b5994843 100644 --- a/iBMSC/Option Windows/OpGeneral.Designer.vb +++ b/iBMSC/Option Windows/OpGeneral.Designer.vb @@ -59,6 +59,7 @@ Partial Class OpGeneral Me.Label9 = New System.Windows.Forms.Label() Me.LabelTH = New System.Windows.Forms.Label() Me.TableLayoutPanel2 = New System.Windows.Forms.TableLayoutPanel() + Me.cAudioLine = New System.Windows.Forms.CheckBox() Me.TableLayoutPanel1.SuspendLayout() CType(Me.PictureBox1, System.ComponentModel.ISupportInitialize).BeginInit() CType(Me.NAutoSave, System.ComponentModel.ISupportInitialize).BeginInit() @@ -77,7 +78,7 @@ Partial Class OpGeneral Me.TableLayoutPanel1.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50.0!)) Me.TableLayoutPanel1.Controls.Add(Me.OK_Button, 0, 0) Me.TableLayoutPanel1.Controls.Add(Me.Cancel_Button, 1, 0) - Me.TableLayoutPanel1.Location = New System.Drawing.Point(229, 500) + Me.TableLayoutPanel1.Location = New System.Drawing.Point(229, 527) Me.TableLayoutPanel1.Name = "TableLayoutPanel1" Me.TableLayoutPanel1.RowCount = 1 Me.TableLayoutPanel1.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50.0!)) @@ -110,7 +111,7 @@ Partial Class OpGeneral Me.CWheel.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList Me.CWheel.FormattingEnabled = True Me.CWheel.Items.AddRange(New Object() {"1", "1 / 2", "1 / 3", "1 / 4"}) - Me.CWheel.Location = New System.Drawing.Point(154, 306) + Me.CWheel.Location = New System.Drawing.Point(154, 333) Me.CWheel.Name = "CWheel" Me.CWheel.Size = New System.Drawing.Size(237, 23) Me.CWheel.TabIndex = 101 @@ -129,7 +130,7 @@ Partial Class OpGeneral ' Me.Label1.Anchor = CType(((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left) _ Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) - Me.Label1.Location = New System.Drawing.Point(12, 308) + Me.Label1.Location = New System.Drawing.Point(12, 335) Me.Label1.Name = "Label1" Me.Label1.Size = New System.Drawing.Size(136, 17) Me.Label1.TabIndex = 100 @@ -182,7 +183,7 @@ Partial Class OpGeneral Me.PictureBox1.Anchor = CType(((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left) _ Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) Me.PictureBox1.BackColor = System.Drawing.Color.FromArgb(CType(CType(64, Byte), Integer), CType(CType(64, Byte), Integer), CType(CType(64, Byte), Integer)) - Me.PictureBox1.Location = New System.Drawing.Point(20, 290) + Me.PictureBox1.Location = New System.Drawing.Point(20, 317) Me.PictureBox1.Name = "PictureBox1" Me.PictureBox1.Size = New System.Drawing.Size(375, 1) Me.PictureBox1.TabIndex = 47 @@ -217,7 +218,7 @@ Partial Class OpGeneral Me.cMEnterFocus.Anchor = CType(((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left) _ Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) Me.cMEnterFocus.AutoSize = True - Me.cMEnterFocus.Location = New System.Drawing.Point(34, 416) + Me.cMEnterFocus.Location = New System.Drawing.Point(34, 443) Me.cMEnterFocus.Name = "cMEnterFocus" Me.cMEnterFocus.Size = New System.Drawing.Size(322, 19) Me.cMEnterFocus.TabIndex = 106 @@ -229,7 +230,7 @@ Partial Class OpGeneral Me.cMClickFocus.Anchor = CType(((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left) _ Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) Me.cMClickFocus.AutoSize = True - Me.cMClickFocus.Location = New System.Drawing.Point(34, 441) + Me.cMClickFocus.Location = New System.Drawing.Point(34, 468) Me.cMClickFocus.Name = "cMClickFocus" Me.cMClickFocus.Size = New System.Drawing.Size(293, 19) Me.cMClickFocus.TabIndex = 107 @@ -258,7 +259,7 @@ Partial Class OpGeneral ' Me.Label5.Anchor = CType(((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left) _ Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) - Me.Label5.Location = New System.Drawing.Point(12, 337) + Me.Label5.Location = New System.Drawing.Point(12, 364) Me.Label5.Name = "Label5" Me.Label5.Size = New System.Drawing.Size(136, 17) Me.Label5.TabIndex = 102 @@ -272,7 +273,7 @@ Partial Class OpGeneral Me.CPgUpDn.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList Me.CPgUpDn.FormattingEnabled = True Me.CPgUpDn.Items.AddRange(New Object() {"8", "6", "4", "3", "2", "1", "1 / 2"}) - Me.CPgUpDn.Location = New System.Drawing.Point(154, 335) + Me.CPgUpDn.Location = New System.Drawing.Point(154, 362) Me.CPgUpDn.Name = "CPgUpDn" Me.CPgUpDn.Size = New System.Drawing.Size(237, 23) Me.CPgUpDn.TabIndex = 103 @@ -322,7 +323,7 @@ Partial Class OpGeneral Me.cMStopPreview.AutoSize = True Me.cMStopPreview.Checked = True Me.cMStopPreview.CheckState = System.Windows.Forms.CheckState.Checked - Me.cMStopPreview.Location = New System.Drawing.Point(34, 466) + Me.cMStopPreview.Location = New System.Drawing.Point(34, 493) Me.cMStopPreview.Name = "cMStopPreview" Me.cMStopPreview.Size = New System.Drawing.Size(253, 19) Me.cMStopPreview.TabIndex = 108 @@ -341,11 +342,11 @@ Partial Class OpGeneral ' 'Label6 ' - Me.Label6.Location = New System.Drawing.Point(44, 108) + Me.Label6.Location = New System.Drawing.Point(12, 108) Me.Label6.Name = "Label6" - Me.Label6.Size = New System.Drawing.Size(169, 17) + Me.Label6.Size = New System.Drawing.Size(201, 22) Me.Label6.TabIndex = 8 - Me.Label6.Text = "Max Grid Partition in BMS" + Me.Label6.Text = "Maximum Grid Partition in BMS" Me.Label6.TextAlign = System.Drawing.ContentAlignment.MiddleRight ' 'TBAssociateBME @@ -370,7 +371,7 @@ Partial Class OpGeneral ' Me.Label3.Anchor = CType(((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left) _ Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) - Me.Label3.Location = New System.Drawing.Point(12, 365) + Me.Label3.Location = New System.Drawing.Point(12, 392) Me.Label3.Name = "Label3" Me.Label3.Size = New System.Drawing.Size(136, 17) Me.Label3.TabIndex = 104 @@ -386,7 +387,7 @@ Partial Class OpGeneral Me.FlowLayoutPanel1.Controls.Add(Me.rMiddleAuto) Me.FlowLayoutPanel1.Controls.Add(Me.rMiddleDrag) Me.FlowLayoutPanel1.FlowDirection = System.Windows.Forms.FlowDirection.TopDown - Me.FlowLayoutPanel1.Location = New System.Drawing.Point(154, 364) + Me.FlowLayoutPanel1.Location = New System.Drawing.Point(154, 391) Me.FlowLayoutPanel1.Name = "FlowLayoutPanel1" Me.FlowLayoutPanel1.Size = New System.Drawing.Size(141, 38) Me.FlowLayoutPanel1.TabIndex = 105 @@ -428,11 +429,11 @@ Partial Class OpGeneral ' 'Label8 ' - Me.Label8.Location = New System.Drawing.Point(44, 141) + Me.Label8.Location = New System.Drawing.Point(15, 139) Me.Label8.Name = "Label8" - Me.Label8.Size = New System.Drawing.Size(169, 17) + Me.Label8.Size = New System.Drawing.Size(198, 19) Me.Label8.TabIndex = 8 - Me.Label8.Text = "Min Jack Speed" + Me.Label8.Text = "Minimum Jack Threshold" Me.Label8.TextAlign = System.Drawing.ContentAlignment.MiddleRight ' 'nJackTH @@ -483,12 +484,24 @@ Partial Class OpGeneral Me.TableLayoutPanel2.Size = New System.Drawing.Size(180, 27) Me.TableLayoutPanel2.TabIndex = 110 ' + 'cAudioLine + ' + Me.cAudioLine.Anchor = CType(((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Left) _ + Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) + Me.cAudioLine.AutoSize = True + Me.cAudioLine.Location = New System.Drawing.Point(32, 281) + Me.cAudioLine.Name = "cAudioLine" + Me.cAudioLine.Size = New System.Drawing.Size(233, 19) + Me.cAudioLine.TabIndex = 14 + Me.cAudioLine.Text = "Display audio lines during note preview" + Me.cAudioLine.UseVisualStyleBackColor = True + ' 'OpGeneral ' Me.AcceptButton = Me.OK_Button Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None Me.CancelButton = Me.Cancel_Button - Me.ClientSize = New System.Drawing.Size(413, 547) + Me.ClientSize = New System.Drawing.Size(413, 574) Me.Controls.Add(Me.TableLayoutPanel2) Me.Controls.Add(Me.FlowLayoutPanel1) Me.Controls.Add(Me.Label3) @@ -507,6 +520,7 @@ Partial Class OpGeneral Me.Controls.Add(Me.TBAssociatePMS) Me.Controls.Add(Me.cMClickFocus) Me.Controls.Add(Me.cMEnterFocus) + Me.Controls.Add(Me.cAudioLine) Me.Controls.Add(Me.cStop1296) Me.Controls.Add(Me.cBpm1296) Me.Controls.Add(Me.PictureBox1) @@ -576,4 +590,5 @@ Partial Class OpGeneral Friend WithEvents Label9 As Label Friend WithEvents LabelTH As Label Friend WithEvents TableLayoutPanel2 As TableLayoutPanel + Friend WithEvents cAudioLine As CheckBox End Class diff --git a/iBMSC/Option Windows/OpGeneral.vb b/iBMSC/Option Windows/OpGeneral.vb index 28de8d24d..a1549e430 100644 --- a/iBMSC/Option Windows/OpGeneral.vb +++ b/iBMSC/Option Windows/OpGeneral.vb @@ -55,7 +55,7 @@ Public Class OpGeneral End Sub Public Sub New(ByVal xMsWheel As Integer, ByVal xPgUpDn As Integer, ByVal xMiddleButton As Integer, ByVal xTextEncoding As Integer, ByVal xGridPartition As Integer, - ByVal xAutoSave As Integer, ByVal xBeep As Boolean, ByVal xBPMx As Boolean, ByVal xSTOPx As Boolean, + ByVal xAutoSave As Integer, ByVal xBeep As Boolean, ByVal xBPMx As Boolean, ByVal xSTOPx As Boolean, ByVal xAudioLine As Boolean, ByVal xMFEnter As Boolean, ByVal xMFClick As Boolean, ByVal xMStopPreview As Boolean, ByVal xJackBPM As Double, ByVal xJackTH As Double) InitializeComponent() @@ -95,6 +95,7 @@ Public Class OpGeneral cBeep.Checked = xBeep cBpm1296.Checked = xBPMx cStop1296.Checked = xSTOPx + cAudioLine.Checked = xAudioLine cMEnterFocus.Checked = xMFEnter cMClickFocus.Checked = xMFClick cMStopPreview.Checked = xMStopPreview diff --git a/iBMSC/PanelEvents.vb b/iBMSC/PanelEvents.vb index aae97e757..ca2b267bc 100644 --- a/iBMSC/PanelEvents.vb +++ b/iBMSC/PanelEvents.vb @@ -647,11 +647,13 @@ Partial Public Class MainWindow If Not ClickStopPreview Then PreviewNote("", True) PreviewNote(xFileLocation, False) - If wLWAV(xIW).Duration = 0 Then wLWAV(xIW) = LoadDuration(ExcludeFileName(FileName) & "\" & hWAV(xIW)) - TimerPreviewNote.Enabled = True - InternalPlayNotes = New Note() {Notes(NoteIndex)} - InternalPlayTimerStart = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds - InternalPlayTimerEnd = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds + CLng(wLWAV(xIW).Duration * 1000) + If AudioLine Then + If wLWAV(xIW).Duration = 0 Then wLWAV(xIW) = LoadDuration(ExcludeFileName(FileName) & "\" & hWAV(xIW)) + TimerPreviewNote.Enabled = True + InternalPlayNotes = New Note() {Notes(NoteIndex)} + InternalPlayTimerStart = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds + InternalPlayTimerEnd = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds + CLng(wLWAV(xIW).Duration * 1000) + End If End If End If End Sub From 9fde7ade137751d35a2dd63016d781baa29483e5 Mon Sep 17 00:00:00 2001 From: psyk2642 <60137590+psyk2642@users.noreply.github.com> Date: Sun, 1 May 2022 13:41:31 +0800 Subject: [PATCH 127/257] Update Visual Override Options - Added option to choose to save options to either Editor, Chart, or Song. - Added option to choose color gradient instead of a single color. - Added option to disable settings. - Added option to semi-auto assign based on the filenames of the sound files. Colors are automatically generated. --- README.md | 2 + iBMSC/EditorPersistent.vb | 46 +- iBMSC/MainWindow.designer.vb | 123 ++-- iBMSC/MainWindow.vb | 48 +- iBMSC/Option Windows/OpTotal.Designer.vb | 51 +- .../OpVisualOverride.Designer.vb | 534 +++++++++++++++--- iBMSC/Option Windows/OpVisualOverride.vb | 342 ++++++++++- iBMSC/PanelDraw.vb | 157 +++-- iBMSC/PanelEvents.vb | 14 - 9 files changed, 1041 insertions(+), 276 deletions(-) diff --git a/README.md b/README.md index 9c91b7444..546d787f1 100644 --- a/README.md +++ b/README.md @@ -96,6 +96,8 @@ Listed in the order added. ### Visual Override Options * Creates a list of note ranges with a specified color and replaces specified notes' display color. +* Allows a range of notes to have a gradient of colors, or a single color. +* Settings can be saved to either Editor, Chart, or Song. ### Keybinding Options * Allows for rebinding keys for a lot of functions, such as note lane assignment. diff --git a/iBMSC/EditorPersistent.vb b/iBMSC/EditorPersistent.vb index feba58850..9a761f923 100644 --- a/iBMSC/EditorPersistent.vb +++ b/iBMSC/EditorPersistent.vb @@ -97,6 +97,7 @@ Partial Public Class MainWindow .WriteAttributeString("ClickStopPreview", ClickStopPreview.ToString()) .WriteAttributeString("JackBPM", ErrorJackBPM.ToString()) .WriteAttributeString("JackTH", ErrorJackTH.ToString()) + .WriteAttributeString("COverridesSaveOption", COverridesSaveOption.ToString()) .WriteEndElement() .WriteStartElement("Save") @@ -222,10 +223,13 @@ Partial Public Class MainWindow End With End Sub - Private Sub SaveColorOverride(ByVal Path As String) - If Not System.IO.Directory.Exists("Colors") Then My.Computer.FileSystem.CreateDirectory("Colors") + Private Sub SaveColorOverride(ByVal Path As String, ByVal Warning As Boolean) + Dim F As String = ColorOverridePath(Path) + If My.Computer.FileSystem.FileExists(F) AndAlso Warning Then + Dim xDiag = MsgBox("Overwrite existing settings below?" & vbCrLf & F, MsgBoxStyle.YesNo) + If xDiag = DialogResult.No Then Exit Sub + End If - Dim F As String = "Colors\" + GetFileName(FileName) + ".xml" Dim w As New XmlTextWriter(F, System.Text.Encoding.Unicode) With w .WriteStartDocument() @@ -239,13 +243,12 @@ Partial Public Class MainWindow .WriteStartElement("Color") .WriteAttributeString("Index", i.ToString()) .WriteAttributeString("Name", COverrides(i).Name.ToString()) + .WriteAttributeString("Enabled", COverrides(i).Enabled.ToString()) + .WriteAttributeString("ColorOption", COverrides(i).ColorOption.ToString()) .WriteAttributeString("RangeL", COverrides(i).RangeL.ToString()) .WriteAttributeString("RangeU", COverrides(i).RangeU.ToString()) .WriteAttributeString("NoteColor", COverrides(i).NoteColor.ToString()) - .WriteAttributeString("TextColor", COverrides(i).TextColor.ToString()) - .WriteAttributeString("LongNoteColor", COverrides(i).LongNoteColor.ToString()) - .WriteAttributeString("LongTextColor", COverrides(i).LongTextColor.ToString()) - .WriteAttributeString("BG", COverrides(i).BG.ToString()) + .WriteAttributeString("NoteColorU", COverrides(i).NoteColorU.ToString()) .WriteEndElement() Next @@ -255,6 +258,21 @@ Partial Public Class MainWindow End With End Sub + Private Function ColorOverridePath(ByVal Path As String) As String + Select Case COverridesSaveOption + Case 0 + If Not System.IO.Directory.Exists("Colors") Then My.Computer.FileSystem.CreateDirectory("Colors") + Return "Colors\Untitled.bmsc.xml" + Case 1 + If Not System.IO.Directory.Exists("Colors") Then My.Computer.FileSystem.CreateDirectory("Colors") + Return "Colors\" + GetFileName(Path) + ".xml" + Case 2 + Return ExcludeFileName(Path) & "\Colors.xml" + Case Else + Return "" + End Select + End Function + Private Sub XMLLoadElementValue(ByVal n As XmlElement, ByRef v As Integer) If n Is Nothing Then Exit Sub XMLLoadAttribute(n.GetAttribute("Value"), v) @@ -436,6 +454,7 @@ Partial Public Class MainWindow XMLLoadAttribute(.GetAttribute("JackBPM"), ErrorJackBPM) XMLLoadAttribute(.GetAttribute("JackTH"), ErrorJackTH) + XMLLoadAttribute(.GetAttribute("COverridesSaveOption"), COverridesSaveOption) End With End If @@ -1451,7 +1470,8 @@ Partial Public Class MainWindow End Sub Private Sub LoadColorOverride(ByVal Path As String) - Dim F As String = "Colors\" + GetFileName(Path) + ".xml" + Dim F As String = ColorOverridePath(Path) + If My.Computer.FileSystem.FileExists(F) Then Dim Doc As New XmlDocument @@ -1467,17 +1487,17 @@ Partial Public Class MainWindow With eColor XMLLoadAttribute(.GetAttribute("Index"), i) XMLLoadAttribute(.GetAttribute("Name"), COverrides(i).Name) + XMLLoadAttribute(.GetAttribute("Enabled"), COverrides(i).Enabled) + XMLLoadAttribute(.GetAttribute("ColorOption"), COverrides(i).ColorOption) XMLLoadAttribute(.GetAttribute("RangeL"), COverrides(i).RangeL) XMLLoadAttribute(.GetAttribute("RangeU"), COverrides(i).RangeU) XMLLoadAttribute(.GetAttribute("NoteColor"), COverrides(i).NoteColor) - XMLLoadAttribute(.GetAttribute("TextColor"), COverrides(i).TextColor) ' Unused - XMLLoadAttribute(.GetAttribute("LongNoteColor"), COverrides(i).LongNoteColor) ' Unused - XMLLoadAttribute(.GetAttribute("LongTextColor"), COverrides(i).LongTextColor) ' Unused - XMLLoadAttribute(.GetAttribute("BG"), COverrides(i).BG) ' Unused + XMLLoadAttribute(.GetAttribute("NoteColorU"), COverrides(i).NoteColorU) End With Next FileStream.Close() - + Else + ReDim COverrides(0) End If End Sub End Class diff --git a/iBMSC/MainWindow.designer.vb b/iBMSC/MainWindow.designer.vb index 5a2c5a279..1cb68dd1c 100644 --- a/iBMSC/MainWindow.designer.vb +++ b/iBMSC/MainWindow.designer.vb @@ -25,16 +25,16 @@ Partial Class MainWindow Me.TBLangDef = New System.Windows.Forms.ToolStripMenuItem() Me.TBLangRefresh = New System.Windows.Forms.ToolStripMenuItem() Me.ToolStripSeparator9 = New System.Windows.Forms.ToolStripSeparator() - Me.mnLanguage = New System.Windows.Forms.ToolStripMenuItem() Me.TBLanguage = New System.Windows.Forms.ToolStripDropDownButton() + Me.mnLanguage = New System.Windows.Forms.ToolStripMenuItem() Me.cmnTheme = New System.Windows.Forms.ContextMenuStrip(Me.components) Me.TBThemeDef = New System.Windows.Forms.ToolStripMenuItem() Me.TBThemeSave = New System.Windows.Forms.ToolStripMenuItem() Me.TBThemeRefresh = New System.Windows.Forms.ToolStripMenuItem() Me.TBThemeLoadComptability = New System.Windows.Forms.ToolStripMenuItem() Me.ToolStripSeparator6 = New System.Windows.Forms.ToolStripSeparator() - Me.TBTheme = New System.Windows.Forms.ToolStripDropDownButton() Me.mnTheme = New System.Windows.Forms.ToolStripMenuItem() + Me.TBTheme = New System.Windows.Forms.ToolStripDropDownButton() Me.Timer1 = New System.Windows.Forms.Timer(Me.components) Me.Menu1 = New System.Windows.Forms.ContextMenuStrip(Me.components) Me.MInsert = New System.Windows.Forms.ToolStripMenuItem() @@ -128,11 +128,15 @@ Partial Class MainWindow Me.POBSRandom = New System.Windows.Forms.ToolStripMenuItem() Me.POBHRandom = New System.Windows.Forms.ToolStripMenuItem() Me.POBSort = New System.Windows.Forms.ToolStripMenuItem() - Me.POConvert = New System.Windows.Forms.ToolStripDropDownButton() Me.mnPreview = New System.Windows.Forms.ToolStripMenuItem() Me.mnPlayB = New System.Windows.Forms.ToolStripMenuItem() Me.mnPlay = New System.Windows.Forms.ToolStripMenuItem() Me.mnStop = New System.Windows.Forms.ToolStripMenuItem() + Me.ToolsToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() + Me.mnTechnicalErrorCheck = New System.Windows.Forms.ToolStripMenuItem() + Me.mnTOTAL = New System.Windows.Forms.ToolStripMenuItem() + Me.ToolStripSeparator13 = New System.Windows.Forms.ToolStripSeparator() + Me.POConvert = New System.Windows.Forms.ToolStripDropDownButton() Me.TBMain = New System.Windows.Forms.ToolStrip() Me.TBNew = New System.Windows.Forms.ToolStripButton() Me.TBOpen = New System.Windows.Forms.ToolStripSplitButton() @@ -377,10 +381,6 @@ Partial Class MainWindow Me.POptionsScroll = New System.Windows.Forms.Panel() Me.TimerInternalPlay = New System.Windows.Forms.Timer(Me.components) Me.TimerPreviewNote = New System.Windows.Forms.Timer(Me.components) - Me.ToolsToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() - Me.mnTechnicalErrorCheck = New System.Windows.Forms.ToolStripMenuItem() - Me.mnTOTAL = New System.Windows.Forms.ToolStripMenuItem() - Me.ToolStripSeparator13 = New System.Windows.Forms.ToolStripSeparator() Me.cmnLanguage.SuspendLayout() Me.cmnTheme.SuspendLayout() Me.Menu1.SuspendLayout() @@ -465,7 +465,7 @@ Partial Class MainWindow ' Me.cmnLanguage.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.TBLangDef, Me.TBLangRefresh, Me.ToolStripSeparator9}) Me.cmnLanguage.Name = "cmnLanguage" - Me.cmnLanguage.OwnerItem = Me.TBLanguage + Me.cmnLanguage.OwnerItem = Me.mnLanguage Me.cmnLanguage.Size = New System.Drawing.Size(121, 54) ' 'TBLangDef @@ -486,14 +486,6 @@ Partial Class MainWindow Me.ToolStripSeparator9.Name = "ToolStripSeparator9" Me.ToolStripSeparator9.Size = New System.Drawing.Size(117, 6) ' - 'mnLanguage - ' - Me.mnLanguage.DropDown = Me.cmnLanguage - Me.mnLanguage.Image = Global.iBMSC.My.Resources.Resources.x16Language - Me.mnLanguage.Name = "mnLanguage" - Me.mnLanguage.Size = New System.Drawing.Size(253, 22) - Me.mnLanguage.Text = "&Language" - ' 'TBLanguage ' Me.TBLanguage.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image @@ -504,11 +496,19 @@ Partial Class MainWindow Me.TBLanguage.Size = New System.Drawing.Size(29, 22) Me.TBLanguage.Text = "Language" ' + 'mnLanguage + ' + Me.mnLanguage.DropDown = Me.cmnLanguage + Me.mnLanguage.Image = Global.iBMSC.My.Resources.Resources.x16Language + Me.mnLanguage.Name = "mnLanguage" + Me.mnLanguage.Size = New System.Drawing.Size(253, 22) + Me.mnLanguage.Text = "&Language" + ' 'cmnTheme ' Me.cmnTheme.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.TBThemeDef, Me.TBThemeSave, Me.TBThemeRefresh, Me.TBThemeLoadComptability, Me.ToolStripSeparator6}) Me.cmnTheme.Name = "cmnLanguage" - Me.cmnTheme.OwnerItem = Me.mnTheme + Me.cmnTheme.OwnerItem = Me.TBTheme Me.cmnTheme.Size = New System.Drawing.Size(246, 98) ' 'TBThemeDef @@ -542,6 +542,14 @@ Partial Class MainWindow Me.ToolStripSeparator6.Name = "ToolStripSeparator6" Me.ToolStripSeparator6.Size = New System.Drawing.Size(242, 6) ' + 'mnTheme + ' + Me.mnTheme.DropDown = Me.cmnTheme + Me.mnTheme.Image = Global.iBMSC.My.Resources.Resources.x16Theme + Me.mnTheme.Name = "mnTheme" + Me.mnTheme.Size = New System.Drawing.Size(253, 22) + Me.mnTheme.Text = "&Theme" + ' 'TBTheme ' Me.TBTheme.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image @@ -552,14 +560,6 @@ Partial Class MainWindow Me.TBTheme.Size = New System.Drawing.Size(29, 22) Me.TBTheme.Text = "Theme" ' - 'mnTheme - ' - Me.mnTheme.DropDown = Me.cmnTheme - Me.mnTheme.Image = Global.iBMSC.My.Resources.Resources.x16Theme - Me.mnTheme.Name = "mnTheme" - Me.mnTheme.Size = New System.Drawing.Size(253, 22) - Me.mnTheme.Text = "&Theme" - ' 'Timer1 ' Me.Timer1.Interval = 15 @@ -1166,6 +1166,7 @@ Partial Class MainWindow ' Me.cmnConversion.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.POBLong, Me.POBShort, Me.POBLongShort, Me.ToolStripSeparator10, Me.POBHidden, Me.POBVisible, Me.POBHiddenVisible, Me.ToolStripSeparator11, Me.POBModify, Me.POBMirror, Me.POBFlip, Me.POBRandom, Me.POBRRandom, Me.POBSRandom, Me.POBHRandom, Me.POBSort}) Me.cmnConversion.Name = "cmnLanguage" + Me.cmnConversion.OwnerItem = Me.POConvert Me.cmnConversion.Size = New System.Drawing.Size(222, 324) ' 'POBLong @@ -1278,16 +1279,6 @@ Partial Class MainWindow Me.POBSort.Size = New System.Drawing.Size(221, 22) Me.POBSort.Text = "S&ort" ' - 'POConvert - ' - Me.POConvert.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image - Me.POConvert.DropDown = Me.cmnConversion - Me.POConvert.Image = Global.iBMSC.My.Resources.Resources.ConvertNotes - Me.POConvert.ImageTransparentColor = System.Drawing.Color.Magenta - Me.POConvert.Name = "POConvert" - Me.POConvert.Size = New System.Drawing.Size(29, 22) - Me.POConvert.Text = "Convert Notes" - ' 'mnPreview ' Me.mnPreview.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.mnPlayB, Me.mnPlay, Me.mnStop}) @@ -1319,6 +1310,42 @@ Partial Class MainWindow Me.mnStop.Size = New System.Drawing.Size(201, 22) Me.mnStop.Text = "&Stop" ' + 'ToolsToolStripMenuItem + ' + Me.ToolsToolStripMenuItem.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.mnTechnicalErrorCheck, Me.mnTOTAL, Me.ToolStripSeparator13}) + Me.ToolsToolStripMenuItem.Name = "ToolsToolStripMenuItem" + Me.ToolsToolStripMenuItem.Size = New System.Drawing.Size(46, 19) + Me.ToolsToolStripMenuItem.Text = "Tools" + ' + 'mnTechnicalErrorCheck + ' + Me.mnTechnicalErrorCheck.Image = Global.iBMSC.My.Resources.Resources.x16CheckErrorTechnical + Me.mnTechnicalErrorCheck.Name = "mnTechnicalErrorCheck" + Me.mnTechnicalErrorCheck.ShortcutKeyDisplayString = "Ctrl+Alt+E" + Me.mnTechnicalErrorCheck.Size = New System.Drawing.Size(250, 22) + Me.mnTechnicalErrorCheck.Text = "Check Technical &Error" + ' + 'mnTOTAL + ' + Me.mnTOTAL.Name = "mnTOTAL" + Me.mnTOTAL.Size = New System.Drawing.Size(250, 22) + Me.mnTOTAL.Text = "#TOTAL Tool" + ' + 'ToolStripSeparator13 + ' + Me.ToolStripSeparator13.Name = "ToolStripSeparator13" + Me.ToolStripSeparator13.Size = New System.Drawing.Size(247, 6) + ' + 'POConvert + ' + Me.POConvert.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image + Me.POConvert.DropDown = Me.cmnConversion + Me.POConvert.Image = Global.iBMSC.My.Resources.Resources.ConvertNotes + Me.POConvert.ImageTransparentColor = System.Drawing.Color.Magenta + Me.POConvert.Name = "POConvert" + Me.POConvert.Size = New System.Drawing.Size(29, 22) + Me.POConvert.Text = "Convert Notes" + ' 'TBMain ' Me.TBMain.AccessibleRole = System.Windows.Forms.AccessibleRole.ToolBar @@ -4234,32 +4261,6 @@ Partial Class MainWindow ' Me.TimerPreviewNote.Interval = 1 ' - 'ToolsToolStripMenuItem - ' - Me.ToolsToolStripMenuItem.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.mnTechnicalErrorCheck, Me.mnTOTAL, Me.ToolStripSeparator13}) - Me.ToolsToolStripMenuItem.Name = "ToolsToolStripMenuItem" - Me.ToolsToolStripMenuItem.Size = New System.Drawing.Size(46, 19) - Me.ToolsToolStripMenuItem.Text = "Tools" - ' - 'mnTechnicalErrorCheck - ' - Me.mnTechnicalErrorCheck.Image = Global.iBMSC.My.Resources.Resources.x16CheckErrorTechnical - Me.mnTechnicalErrorCheck.Name = "mnTechnicalErrorCheck" - Me.mnTechnicalErrorCheck.ShortcutKeyDisplayString = "Ctrl+Alt+E" - Me.mnTechnicalErrorCheck.Size = New System.Drawing.Size(250, 22) - Me.mnTechnicalErrorCheck.Text = "Check Technical &Error" - ' - 'mnTOTAL - ' - Me.mnTOTAL.Name = "mnTOTAL" - Me.mnTOTAL.Size = New System.Drawing.Size(250, 22) - Me.mnTOTAL.Text = "#TOTAL Tool" - ' - 'ToolStripSeparator13 - ' - Me.ToolStripSeparator13.Name = "ToolStripSeparator13" - Me.ToolStripSeparator13.Size = New System.Drawing.Size(247, 6) - ' 'MainWindow ' Me.AllowDrop = True diff --git a/iBMSC/MainWindow.vb b/iBMSC/MainWindow.vb index 45c844a41..29382bada 100644 --- a/iBMSC/MainWindow.vb +++ b/iBMSC/MainWindow.vb @@ -240,34 +240,32 @@ Public Class MainWindow '----Visual Override Options Structure ColorOverride Public Name As String + Public Enabled As Boolean + Public ColorOption As Integer Public RangeL As Integer Public RangeU As Integer Public NoteColor As Integer - Public TextColor As Integer - Public LongNoteColor As Integer - Public LongTextColor As Integer - Public BG As Integer + Public NoteColorU As Integer Public Sub New(ByVal xName As String, + ByVal xEnabled As Boolean, + ByVal xColorOption As Integer, ByVal xRangeL As Integer, ByVal xRangeU As Integer, ByVal xNoteColor As Integer, - ByVal xTextColor As Integer, - ByVal xLongNoteColor As Integer, - ByVal xLongTextColor As Integer, - ByVal xBG As Integer) + ByVal xNoteColorU As Integer) Name = xName + Enabled = xEnabled + ColorOption = xColorOption RangeL = xRangeL RangeU = xRangeU NoteColor = xNoteColor - TextColor = xTextColor - LongNoteColor = xLongNoteColor - LongTextColor = xLongTextColor - BG = xBG + NoteColorU = xNoteColorU End Sub End Structure Dim COverrides(-1) As ColorOverride + Dim COverridesSaveOption As Integer = 1 '----Keybinding Options Structure Keybinding @@ -333,8 +331,7 @@ Public Class MainWindow New Keybinding("Select All", "Select all notes", {"Ctrl+A"}), New Keybinding("Select All with Hovered Note Label", "Select all notes with highlighted note label", {"Ctrl+Shift+A"}), _ ' Experimental - New Keybinding("TBPreviewHighlighted_Click", "*EXPERIMENTAL*", {"Shift+F4"}), - New Keybinding("GetVPositionFromTime", "*EXPERIMENTAL*", {"Shift+F2"}) + New Keybinding("TBPreviewHighlighted_Click", "*EXPERIMENTAL*", {"Shift+F4"}) } Dim Keybindings() As Keybinding = CType(KeybindingsInit.Clone(), Keybinding()) @@ -1085,7 +1082,6 @@ Public Class MainWindow WaveformLoaded = False TExpansion.Text = "" - LoadColorOverride(FileName) LBeat.Items.Clear() For xI1 As Integer = 0 To 999 @@ -1306,6 +1302,7 @@ Public Class MainWindow '----------------------------------------------------------------------------------------------------------------- End If 'On Error GoTo 0 + LoadColorOverride(FileName) SetIsSaved(True) Dim xStr() As String = Environment.GetCommandLineArgs @@ -3581,11 +3578,28 @@ Public Class MainWindow End Sub Private Sub TBVCOptions_Click(sender As Object, e As EventArgs) Handles mnVCOptions.Click, BWAVColorOverride.Click - Dim xDiag As New OpVisualOverride(COverrides) + Dim xDiag As New OpVisualOverride(COverrides, hWAV, COverridesSaveOption) + ' Save settings If xDiag.ShowDialog() = Windows.Forms.DialogResult.OK Then COverrides = xDiag.COverrides - If Not IsNothing(COverrides) Then If COverrides.Length > 0 Then SaveColorOverride(FileName) + If COverridesSaveOption <> xDiag.CoBSave.SelectedIndex Then + COverridesSaveOption = xDiag.CoBSave.SelectedIndex + + If Not IsNothing(COverrides) Then If COverrides.Length > 0 Then SaveColorOverride(FileName, True) + Else + If Not IsNothing(COverrides) Then If COverrides.Length > 0 Then SaveColorOverride(FileName, False) + + End If End If + + ' Load settings if chosen + If xDiag.CoBLoad.SelectedIndex <> -1 Then + COverridesSaveOption = xDiag.CoBLoad.SelectedIndex + LoadColorOverride(FileName) + + TBVCOptions_Click(sender, New EventArgs) + End If + UpdateColumnsX() RefreshPanelAll() End Sub diff --git a/iBMSC/Option Windows/OpTotal.Designer.vb b/iBMSC/Option Windows/OpTotal.Designer.vb index 9403e24da..662743b79 100644 --- a/iBMSC/Option Windows/OpTotal.Designer.vb +++ b/iBMSC/Option Windows/OpTotal.Designer.vb @@ -26,6 +26,7 @@ Partial Class OpTotal Me.Label1 = New System.Windows.Forms.Label() Me.CTotalIIDX2 = New System.Windows.Forms.RadioButton() Me.TableLayoutPanel1 = New System.Windows.Forms.TableLayoutPanel() + Me.NMultiplier = New System.Windows.Forms.NumericUpDown() Me.TableLayoutPanel4 = New System.Windows.Forms.TableLayoutPanel() Me.Label9 = New System.Windows.Forms.Label() Me.Label7 = New System.Windows.Forms.Label() @@ -49,17 +50,16 @@ Partial Class OpTotal Me.NDecimal = New System.Windows.Forms.NumericUpDown() Me.NGlobalMultiplier = New System.Windows.Forms.NumericUpDown() Me.TableLayoutPanel5 = New System.Windows.Forms.TableLayoutPanel() - Me.CBDisplayValue = New System.Windows.Forms.CheckBox() Me.CBAutoFill = New System.Windows.Forms.CheckBox() - Me.NMultiplier = New System.Windows.Forms.NumericUpDown() + Me.CBDisplayValue = New System.Windows.Forms.CheckBox() Me.TableLayoutPanel1.SuspendLayout() + CType(Me.NMultiplier, System.ComponentModel.ISupportInitialize).BeginInit() Me.TableLayoutPanel4.SuspendLayout() Me.TableLayoutPanel2.SuspendLayout() Me.TableLayoutPanel3.SuspendLayout() CType(Me.NDecimal, System.ComponentModel.ISupportInitialize).BeginInit() CType(Me.NGlobalMultiplier, System.ComponentModel.ISupportInitialize).BeginInit() Me.TableLayoutPanel5.SuspendLayout() - CType(Me.NMultiplier, System.ComponentModel.ISupportInitialize).BeginInit() Me.SuspendLayout() ' 'CTotalIIDX1 @@ -133,6 +133,17 @@ Partial Class OpTotal Me.TableLayoutPanel1.Size = New System.Drawing.Size(570, 140) Me.TableLayoutPanel1.TabIndex = 0 ' + 'NMultiplier + ' + Me.NMultiplier.DecimalPlaces = 3 + Me.NMultiplier.Dock = System.Windows.Forms.DockStyle.Fill + Me.NMultiplier.Increment = New Decimal(New Integer() {1, 0, 0, 131072}) + Me.NMultiplier.Location = New System.Drawing.Point(174, 113) + Me.NMultiplier.Name = "NMultiplier" + Me.NMultiplier.Size = New System.Drawing.Size(66, 23) + Me.NMultiplier.TabIndex = 6 + Me.NMultiplier.Value = New Decimal(New Integer() {25, 0, 0, 131072}) + ' 'TableLayoutPanel4 ' Me.TableLayoutPanel4.AutoSize = True @@ -373,6 +384,7 @@ Partial Class OpTotal 'NDecimal ' Me.NDecimal.Location = New System.Drawing.Point(104, 30) + Me.NDecimal.Maximum = New Decimal(New Integer() {10, 0, 0, 0}) Me.NDecimal.Name = "NDecimal" Me.NDecimal.Size = New System.Drawing.Size(60, 23) Me.NDecimal.TabIndex = 3 @@ -403,18 +415,6 @@ Partial Class OpTotal Me.TableLayoutPanel5.Size = New System.Drawing.Size(400, 80) Me.TableLayoutPanel5.TabIndex = 101 ' - 'CBDisplayValue - ' - Me.CBDisplayValue.AutoSize = True - Me.CBDisplayValue.Checked = True - Me.CBDisplayValue.CheckState = System.Windows.Forms.CheckState.Checked - Me.CBDisplayValue.Location = New System.Drawing.Point(3, 3) - Me.CBDisplayValue.Name = "CBDisplayValue" - Me.CBDisplayValue.Size = New System.Drawing.Size(95, 19) - Me.CBDisplayValue.TabIndex = 2 - Me.CBDisplayValue.Text = "Display Value" - Me.CBDisplayValue.UseVisualStyleBackColor = True - ' 'CBAutoFill ' Me.CBAutoFill.AutoSize = True @@ -427,16 +427,17 @@ Partial Class OpTotal Me.CBAutoFill.Text = "Autofill #TOTAL" Me.CBAutoFill.UseVisualStyleBackColor = True ' - 'NMultiplier + 'CBDisplayValue ' - Me.NMultiplier.DecimalPlaces = 3 - Me.NMultiplier.Dock = System.Windows.Forms.DockStyle.Fill - Me.NMultiplier.Increment = New Decimal(New Integer() {1, 0, 0, 131072}) - Me.NMultiplier.Location = New System.Drawing.Point(174, 113) - Me.NMultiplier.Name = "NMultiplier" - Me.NMultiplier.Size = New System.Drawing.Size(66, 23) - Me.NMultiplier.TabIndex = 6 - Me.NMultiplier.Value = New Decimal(New Integer() {25, 0, 0, 131072}) + Me.CBDisplayValue.AutoSize = True + Me.CBDisplayValue.Checked = True + Me.CBDisplayValue.CheckState = System.Windows.Forms.CheckState.Checked + Me.CBDisplayValue.Location = New System.Drawing.Point(3, 3) + Me.CBDisplayValue.Name = "CBDisplayValue" + Me.CBDisplayValue.Size = New System.Drawing.Size(95, 19) + Me.CBDisplayValue.TabIndex = 2 + Me.CBDisplayValue.Text = "Display Value" + Me.CBDisplayValue.UseVisualStyleBackColor = True ' 'OpTotal ' @@ -459,6 +460,7 @@ Partial Class OpTotal Me.Text = "#TOTAL Tool" Me.TableLayoutPanel1.ResumeLayout(False) Me.TableLayoutPanel1.PerformLayout() + CType(Me.NMultiplier, System.ComponentModel.ISupportInitialize).EndInit() Me.TableLayoutPanel4.ResumeLayout(False) Me.TableLayoutPanel4.PerformLayout() Me.TableLayoutPanel2.ResumeLayout(False) @@ -468,7 +470,6 @@ Partial Class OpTotal CType(Me.NGlobalMultiplier, System.ComponentModel.ISupportInitialize).EndInit() Me.TableLayoutPanel5.ResumeLayout(False) Me.TableLayoutPanel5.PerformLayout() - CType(Me.NMultiplier, System.ComponentModel.ISupportInitialize).EndInit() Me.ResumeLayout(False) End Sub diff --git a/iBMSC/Option Windows/OpVisualOverride.Designer.vb b/iBMSC/Option Windows/OpVisualOverride.Designer.vb index 605466801..9c46f7d45 100644 --- a/iBMSC/Option Windows/OpVisualOverride.Designer.vb +++ b/iBMSC/Option Windows/OpVisualOverride.Designer.vb @@ -29,27 +29,50 @@ Partial Class OpVisualOverride Me.OK_Button = New System.Windows.Forms.Button() Me.Cancel_Button = New System.Windows.Forms.Button() Me.ContextMenuStrip1 = New System.Windows.Forms.ContextMenuStrip(Me.components) - Me.TableLayoutPanel1 = New System.Windows.Forms.TableLayoutPanel() - Me.Label4 = New System.Windows.Forms.Label() + Me.TLValues = New System.Windows.Forms.TableLayoutPanel() + Me.TableLayoutPanel7 = New System.Windows.Forms.TableLayoutPanel() + Me.BColorGradL = New System.Windows.Forms.Button() + Me.Label8 = New System.Windows.Forms.Label() + Me.BColorGradU = New System.Windows.Forms.Button() Me.TName = New System.Windows.Forms.TextBox() Me.Label1 = New System.Windows.Forms.Label() Me.Label3 = New System.Windows.Forms.Label() - Me.BColor = New System.Windows.Forms.Button() + Me.BColorSing = New System.Windows.Forms.Button() Me.TableLayoutPanel2 = New System.Windows.Forms.TableLayoutPanel() Me.TRangeU = New System.Windows.Forms.TextBox() Me.Label5 = New System.Windows.Forms.Label() Me.TRangeL = New System.Windows.Forms.TextBox() + Me.Label4 = New System.Windows.Forms.Label() + Me.Label2 = New System.Windows.Forms.Label() + Me.Label6 = New System.Windows.Forms.Label() + Me.PColorGrad = New System.Windows.Forms.Panel() Me.TableLayoutPanel3 = New System.Windows.Forms.TableLayoutPanel() - Me.TableLayoutPanel1.SuspendLayout() + Me.TableLayoutPanel5 = New System.Windows.Forms.TableLayoutPanel() + Me.RColorGradHSLU = New System.Windows.Forms.RadioButton() + Me.RColorSing = New System.Windows.Forms.RadioButton() + Me.RColorGrad = New System.Windows.Forms.RadioButton() + Me.RColorGradHSLD = New System.Windows.Forms.RadioButton() + Me.TableLayoutPanel4 = New System.Windows.Forms.TableLayoutPanel() + Me.BUp = New System.Windows.Forms.Button() + Me.BDown = New System.Windows.Forms.Button() + Me.BDuplicate = New System.Windows.Forms.Button() + Me.BSplit = New System.Windows.Forms.Button() + Me.BSemiAuto = New System.Windows.Forms.Button() + Me.CBEnable = New System.Windows.Forms.CheckBox() + Me.Label7 = New System.Windows.Forms.Label() + Me.CoBLoad = New System.Windows.Forms.ComboBox() + Me.Label9 = New System.Windows.Forms.Label() + Me.CoBSave = New System.Windows.Forms.ComboBox() + Me.TLValues.SuspendLayout() + Me.TableLayoutPanel7.SuspendLayout() Me.TableLayoutPanel2.SuspendLayout() Me.TableLayoutPanel3.SuspendLayout() + Me.TableLayoutPanel5.SuspendLayout() + Me.TableLayoutPanel4.SuspendLayout() Me.SuspendLayout() ' 'LOverrides ' - Me.LOverrides.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.LOverrides.FormattingEnabled = True Me.LOverrides.IntegralHeight = False Me.LOverrides.ItemHeight = 15 @@ -57,29 +80,29 @@ Partial Class OpVisualOverride Me.LOverrides.Location = New System.Drawing.Point(14, 14) Me.LOverrides.Margin = New System.Windows.Forms.Padding(4, 3, 4, 3) Me.LOverrides.Name = "LOverrides" - Me.LOverrides.Size = New System.Drawing.Size(133, 226) + Me.LOverrides.Size = New System.Drawing.Size(133, 147) Me.LOverrides.TabIndex = 0 ' 'BRemove ' - Me.BRemove.Anchor = System.Windows.Forms.AnchorStyles.Bottom + Me.BRemove.Dock = System.Windows.Forms.DockStyle.Fill Me.BRemove.FlatStyle = System.Windows.Forms.FlatStyle.System - Me.BRemove.Location = New System.Drawing.Point(4, 197) + Me.BRemove.Location = New System.Drawing.Point(4, 120) Me.BRemove.Margin = New System.Windows.Forms.Padding(4, 3, 4, 3) Me.BRemove.Name = "BRemove" - Me.BRemove.Size = New System.Drawing.Size(128, 27) - Me.BRemove.TabIndex = 1 + Me.BRemove.Size = New System.Drawing.Size(190, 27) + Me.BRemove.TabIndex = 3 Me.BRemove.Text = "Remove" Me.BRemove.UseVisualStyleBackColor = True ' 'BAdd ' - Me.BAdd.Anchor = System.Windows.Forms.AnchorStyles.Top + Me.BAdd.Dock = System.Windows.Forms.DockStyle.Fill Me.BAdd.FlatStyle = System.Windows.Forms.FlatStyle.System Me.BAdd.Location = New System.Drawing.Point(4, 3) Me.BAdd.Margin = New System.Windows.Forms.Padding(4, 3, 4, 3) Me.BAdd.Name = "BAdd" - Me.BAdd.Size = New System.Drawing.Size(128, 27) + Me.BAdd.Size = New System.Drawing.Size(190, 27) Me.BAdd.TabIndex = 0 Me.BAdd.Text = "Add" Me.BAdd.UseVisualStyleBackColor = True @@ -87,7 +110,7 @@ Partial Class OpVisualOverride 'OK_Button ' Me.OK_Button.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) - Me.OK_Button.Location = New System.Drawing.Point(126, 379) + Me.OK_Button.Location = New System.Drawing.Point(187, 472) Me.OK_Button.Margin = New System.Windows.Forms.Padding(4, 3, 4, 3) Me.OK_Button.Name = "OK_Button" Me.OK_Button.Size = New System.Drawing.Size(78, 27) @@ -98,7 +121,7 @@ Partial Class OpVisualOverride ' Me.Cancel_Button.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) Me.Cancel_Button.DialogResult = System.Windows.Forms.DialogResult.Cancel - Me.Cancel_Button.Location = New System.Drawing.Point(211, 379) + Me.Cancel_Button.Location = New System.Drawing.Point(272, 472) Me.Cancel_Button.Margin = New System.Windows.Forms.Padding(4, 3, 4, 3) Me.Cancel_Button.Name = "Cancel_Button" Me.Cancel_Button.Size = New System.Drawing.Size(78, 27) @@ -110,51 +133,100 @@ Partial Class OpVisualOverride Me.ContextMenuStrip1.Name = "ContextMenuStrip1" Me.ContextMenuStrip1.Size = New System.Drawing.Size(61, 4) ' - 'TableLayoutPanel1 + 'TLValues ' - Me.TableLayoutPanel1.Anchor = CType(((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left) _ + Me.TLValues.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.TableLayoutPanel1.ColumnCount = 2 - Me.TableLayoutPanel1.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50.0!)) - Me.TableLayoutPanel1.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50.0!)) - Me.TableLayoutPanel1.Controls.Add(Me.Label4, 0, 2) - Me.TableLayoutPanel1.Controls.Add(Me.TName, 1, 0) - Me.TableLayoutPanel1.Controls.Add(Me.Label1, 0, 1) - Me.TableLayoutPanel1.Controls.Add(Me.Label3, 0, 0) - Me.TableLayoutPanel1.Controls.Add(Me.BColor, 1, 2) - Me.TableLayoutPanel1.Controls.Add(Me.TableLayoutPanel2, 1, 1) - Me.TableLayoutPanel1.Location = New System.Drawing.Point(14, 248) - Me.TableLayoutPanel1.Margin = New System.Windows.Forms.Padding(4, 3, 4, 3) - Me.TableLayoutPanel1.Name = "TableLayoutPanel1" - Me.TableLayoutPanel1.RowCount = 3 - Me.TableLayoutPanel1.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 25.0!)) - Me.TableLayoutPanel1.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 25.0!)) - Me.TableLayoutPanel1.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 25.0!)) - Me.TableLayoutPanel1.Size = New System.Drawing.Size(278, 115) - Me.TableLayoutPanel1.TabIndex = 2 - ' - 'Label4 - ' - Me.Label4.Anchor = CType((((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Bottom) _ + Me.TLValues.ColumnCount = 2 + Me.TLValues.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 142.0!)) + Me.TLValues.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100.0!)) + Me.TLValues.Controls.Add(Me.TableLayoutPanel7, 1, 3) + Me.TLValues.Controls.Add(Me.TName, 1, 0) + Me.TLValues.Controls.Add(Me.Label1, 0, 1) + Me.TLValues.Controls.Add(Me.Label3, 0, 0) + Me.TLValues.Controls.Add(Me.BColorSing, 1, 2) + Me.TLValues.Controls.Add(Me.TableLayoutPanel2, 1, 1) + Me.TLValues.Controls.Add(Me.Label4, 0, 2) + Me.TLValues.Controls.Add(Me.Label2, 0, 3) + Me.TLValues.Controls.Add(Me.Label6, 0, 4) + Me.TLValues.Controls.Add(Me.PColorGrad, 1, 4) + Me.TLValues.Location = New System.Drawing.Point(14, 305) + Me.TLValues.Margin = New System.Windows.Forms.Padding(4, 3, 4, 3) + Me.TLValues.Name = "TLValues" + Me.TLValues.RowCount = 6 + Me.TLValues.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 30.0!)) + Me.TLValues.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 30.0!)) + Me.TLValues.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 30.0!)) + Me.TLValues.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 30.0!)) + Me.TLValues.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 30.0!)) + Me.TLValues.RowStyles.Add(New System.Windows.Forms.RowStyle()) + Me.TLValues.Size = New System.Drawing.Size(339, 161) + Me.TLValues.TabIndex = 2 + ' + 'TableLayoutPanel7 + ' + Me.TableLayoutPanel7.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.Label4.AutoSize = True - Me.Label4.Font = New System.Drawing.Font("Segoe UI", 9.0!) - Me.Label4.Location = New System.Drawing.Point(4, 76) - Me.Label4.Margin = New System.Windows.Forms.Padding(4, 0, 4, 0) - Me.Label4.Name = "Label4" - Me.Label4.Size = New System.Drawing.Size(131, 39) - Me.Label4.TabIndex = 4 - Me.Label4.Text = "Note Color" - Me.Label4.TextAlign = System.Drawing.ContentAlignment.MiddleRight + Me.TableLayoutPanel7.ColumnCount = 3 + Me.TableLayoutPanel7.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 42.0!)) + Me.TableLayoutPanel7.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 16.0!)) + Me.TableLayoutPanel7.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 42.0!)) + Me.TableLayoutPanel7.Controls.Add(Me.BColorGradL, 0, 0) + Me.TableLayoutPanel7.Controls.Add(Me.Label8, 1, 0) + Me.TableLayoutPanel7.Controls.Add(Me.BColorGradU, 2, 0) + Me.TableLayoutPanel7.Location = New System.Drawing.Point(142, 90) + Me.TableLayoutPanel7.Margin = New System.Windows.Forms.Padding(0) + Me.TableLayoutPanel7.Name = "TableLayoutPanel7" + Me.TableLayoutPanel7.RowCount = 1 + Me.TableLayoutPanel7.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100.0!)) + Me.TableLayoutPanel7.Size = New System.Drawing.Size(197, 30) + Me.TableLayoutPanel7.TabIndex = 7 + ' + 'BColorGradL + ' + Me.BColorGradL.Dock = System.Windows.Forms.DockStyle.Fill + Me.BColorGradL.Location = New System.Drawing.Point(4, 3) + Me.BColorGradL.Margin = New System.Windows.Forms.Padding(4, 3, 4, 3) + Me.BColorGradL.Name = "BColorGradL" + Me.BColorGradL.Size = New System.Drawing.Size(74, 24) + Me.BColorGradL.TabIndex = 6 + Me.BColorGradL.Text = "Button1" + Me.BColorGradL.UseVisualStyleBackColor = True + ' + 'Label8 + ' + Me.Label8.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.Label8.AutoSize = True + Me.Label8.Location = New System.Drawing.Point(86, 0) + Me.Label8.Margin = New System.Windows.Forms.Padding(4, 0, 4, 0) + Me.Label8.Name = "Label8" + Me.Label8.Size = New System.Drawing.Size(23, 30) + Me.Label8.TabIndex = 1 + Me.Label8.Text = "to" + Me.Label8.TextAlign = System.Drawing.ContentAlignment.MiddleCenter + ' + 'BColorGradU + ' + Me.BColorGradU.Dock = System.Windows.Forms.DockStyle.Fill + Me.BColorGradU.Location = New System.Drawing.Point(117, 3) + Me.BColorGradU.Margin = New System.Windows.Forms.Padding(4, 3, 4, 3) + Me.BColorGradU.Name = "BColorGradU" + Me.BColorGradU.Size = New System.Drawing.Size(76, 24) + Me.BColorGradU.TabIndex = 6 + Me.BColorGradU.Text = "Button1" + Me.BColorGradU.UseVisualStyleBackColor = True ' 'TName ' Me.TName.Anchor = CType((System.Windows.Forms.AnchorStyles.Left Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) - Me.TName.Location = New System.Drawing.Point(143, 7) + Me.TName.Location = New System.Drawing.Point(146, 3) Me.TName.Margin = New System.Windows.Forms.Padding(4, 3, 4, 3) Me.TName.Name = "TName" - Me.TName.Size = New System.Drawing.Size(131, 23) + Me.TName.Size = New System.Drawing.Size(189, 23) Me.TName.TabIndex = 1 ' 'Label1 @@ -163,10 +235,10 @@ Partial Class OpVisualOverride Or System.Windows.Forms.AnchorStyles.Left) _ Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) Me.Label1.AutoSize = True - Me.Label1.Location = New System.Drawing.Point(4, 38) + Me.Label1.Location = New System.Drawing.Point(4, 30) Me.Label1.Margin = New System.Windows.Forms.Padding(4, 0, 4, 0) Me.Label1.Name = "Label1" - Me.Label1.Size = New System.Drawing.Size(131, 38) + Me.Label1.Size = New System.Drawing.Size(134, 30) Me.Label1.TabIndex = 2 Me.Label1.Text = "Label Range" Me.Label1.TextAlign = System.Drawing.ContentAlignment.MiddleRight @@ -180,21 +252,21 @@ Partial Class OpVisualOverride Me.Label3.Location = New System.Drawing.Point(4, 0) Me.Label3.Margin = New System.Windows.Forms.Padding(4, 0, 4, 0) Me.Label3.Name = "Label3" - Me.Label3.Size = New System.Drawing.Size(131, 38) + Me.Label3.Size = New System.Drawing.Size(134, 30) Me.Label3.TabIndex = 0 Me.Label3.Text = "Option Name" Me.Label3.TextAlign = System.Drawing.ContentAlignment.MiddleRight ' - 'BColor + 'BColorSing ' - Me.BColor.Dock = System.Windows.Forms.DockStyle.Fill - Me.BColor.Location = New System.Drawing.Point(143, 79) - Me.BColor.Margin = New System.Windows.Forms.Padding(4, 3, 4, 3) - Me.BColor.Name = "BColor" - Me.BColor.Size = New System.Drawing.Size(131, 33) - Me.BColor.TabIndex = 5 - Me.BColor.Text = "Button1" - Me.BColor.UseVisualStyleBackColor = True + Me.BColorSing.Dock = System.Windows.Forms.DockStyle.Fill + Me.BColorSing.Location = New System.Drawing.Point(146, 63) + Me.BColorSing.Margin = New System.Windows.Forms.Padding(4, 3, 4, 3) + Me.BColorSing.Name = "BColorSing" + Me.BColorSing.Size = New System.Drawing.Size(189, 24) + Me.BColorSing.TabIndex = 5 + Me.BColorSing.Text = "Button1" + Me.BColorSing.UseVisualStyleBackColor = True ' 'TableLayoutPanel2 ' @@ -208,22 +280,22 @@ Partial Class OpVisualOverride Me.TableLayoutPanel2.Controls.Add(Me.TRangeU, 2, 0) Me.TableLayoutPanel2.Controls.Add(Me.Label5, 1, 0) Me.TableLayoutPanel2.Controls.Add(Me.TRangeL, 0, 0) - Me.TableLayoutPanel2.Location = New System.Drawing.Point(139, 38) + Me.TableLayoutPanel2.Location = New System.Drawing.Point(142, 30) Me.TableLayoutPanel2.Margin = New System.Windows.Forms.Padding(0) Me.TableLayoutPanel2.Name = "TableLayoutPanel2" Me.TableLayoutPanel2.RowCount = 1 Me.TableLayoutPanel2.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100.0!)) - Me.TableLayoutPanel2.Size = New System.Drawing.Size(139, 38) + Me.TableLayoutPanel2.Size = New System.Drawing.Size(197, 30) Me.TableLayoutPanel2.TabIndex = 3 ' 'TRangeU ' Me.TRangeU.Anchor = CType((System.Windows.Forms.AnchorStyles.Left Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) - Me.TRangeU.Location = New System.Drawing.Point(96, 7) + Me.TRangeU.Location = New System.Drawing.Point(134, 3) Me.TRangeU.Margin = New System.Windows.Forms.Padding(4, 3, 4, 3) Me.TRangeU.MaxLength = 2 Me.TRangeU.Name = "TRangeU" - Me.TRangeU.Size = New System.Drawing.Size(39, 23) + Me.TRangeU.Size = New System.Drawing.Size(59, 23) Me.TRangeU.TabIndex = 2 ' 'Label5 @@ -232,10 +304,10 @@ Partial Class OpVisualOverride Or System.Windows.Forms.AnchorStyles.Left) _ Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) Me.Label5.AutoSize = True - Me.Label5.Location = New System.Drawing.Point(50, 0) + Me.Label5.Location = New System.Drawing.Point(69, 0) Me.Label5.Margin = New System.Windows.Forms.Padding(4, 0, 4, 0) Me.Label5.Name = "Label5" - Me.Label5.Size = New System.Drawing.Size(38, 38) + Me.Label5.Size = New System.Drawing.Size(57, 30) Me.Label5.TabIndex = 1 Me.Label5.Text = "to" Me.Label5.TextAlign = System.Drawing.ContentAlignment.MiddleCenter @@ -243,39 +315,303 @@ Partial Class OpVisualOverride 'TRangeL ' Me.TRangeL.Anchor = CType((System.Windows.Forms.AnchorStyles.Left Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) - Me.TRangeL.Location = New System.Drawing.Point(4, 7) + Me.TRangeL.Location = New System.Drawing.Point(4, 3) Me.TRangeL.Margin = New System.Windows.Forms.Padding(4, 3, 4, 3) Me.TRangeL.MaxLength = 2 Me.TRangeL.Name = "TRangeL" - Me.TRangeL.Size = New System.Drawing.Size(38, 23) + Me.TRangeL.Size = New System.Drawing.Size(57, 23) Me.TRangeL.TabIndex = 0 ' + 'Label4 + ' + Me.Label4.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.Label4.AutoSize = True + Me.Label4.Font = New System.Drawing.Font("Segoe UI", 9.0!) + Me.Label4.Location = New System.Drawing.Point(4, 60) + Me.Label4.Margin = New System.Windows.Forms.Padding(4, 0, 4, 0) + Me.Label4.Name = "Label4" + Me.Label4.Size = New System.Drawing.Size(134, 30) + Me.Label4.TabIndex = 4 + Me.Label4.Text = "Note Color" + Me.Label4.TextAlign = System.Drawing.ContentAlignment.MiddleRight + ' + 'Label2 + ' + Me.Label2.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.Label2.AutoSize = True + Me.Label2.Font = New System.Drawing.Font("Segoe UI", 9.0!) + Me.Label2.Location = New System.Drawing.Point(4, 90) + Me.Label2.Margin = New System.Windows.Forms.Padding(4, 0, 4, 0) + Me.Label2.Name = "Label2" + Me.Label2.Size = New System.Drawing.Size(134, 30) + Me.Label2.TabIndex = 6 + Me.Label2.Text = "Note Color Range" + Me.Label2.TextAlign = System.Drawing.ContentAlignment.MiddleRight + ' + 'Label6 + ' + Me.Label6.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.Label6.AutoSize = True + Me.Label6.Font = New System.Drawing.Font("Segoe UI", 9.0!) + Me.Label6.Location = New System.Drawing.Point(4, 120) + Me.Label6.Margin = New System.Windows.Forms.Padding(4, 0, 4, 0) + Me.Label6.Name = "Label6" + Me.Label6.Size = New System.Drawing.Size(134, 30) + Me.Label6.TabIndex = 8 + Me.Label6.Text = "Preview" + Me.Label6.TextAlign = System.Drawing.ContentAlignment.MiddleRight + ' + 'PColorGrad + ' + Me.PColorGrad.Dock = System.Windows.Forms.DockStyle.Fill + Me.PColorGrad.Location = New System.Drawing.Point(145, 123) + Me.PColorGrad.Name = "PColorGrad" + Me.PColorGrad.Size = New System.Drawing.Size(191, 24) + Me.PColorGrad.TabIndex = 9 + ' 'TableLayoutPanel3 ' - Me.TableLayoutPanel3.Anchor = CType(((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Bottom) _ + Me.TableLayoutPanel3.Anchor = CType(((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Left) _ Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) Me.TableLayoutPanel3.ColumnCount = 1 - Me.TableLayoutPanel3.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50.0!)) - Me.TableLayoutPanel3.Controls.Add(Me.BRemove, 0, 1) + Me.TableLayoutPanel3.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100.0!)) + Me.TableLayoutPanel3.Controls.Add(Me.TableLayoutPanel5, 0, 5) Me.TableLayoutPanel3.Controls.Add(Me.BAdd, 0, 0) + Me.TableLayoutPanel3.Controls.Add(Me.BRemove, 0, 3) + Me.TableLayoutPanel3.Controls.Add(Me.TableLayoutPanel4, 0, 1) + Me.TableLayoutPanel3.Controls.Add(Me.BSemiAuto, 0, 2) + Me.TableLayoutPanel3.Controls.Add(Me.CBEnable, 0, 4) Me.TableLayoutPanel3.Location = New System.Drawing.Point(155, 14) Me.TableLayoutPanel3.Margin = New System.Windows.Forms.Padding(4, 3, 4, 3) Me.TableLayoutPanel3.Name = "TableLayoutPanel3" - Me.TableLayoutPanel3.RowCount = 2 - Me.TableLayoutPanel3.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50.0!)) - Me.TableLayoutPanel3.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50.0!)) - Me.TableLayoutPanel3.Size = New System.Drawing.Size(136, 227) + Me.TableLayoutPanel3.RowCount = 6 + Me.TableLayoutPanel3.RowStyles.Add(New System.Windows.Forms.RowStyle()) + Me.TableLayoutPanel3.RowStyles.Add(New System.Windows.Forms.RowStyle()) + Me.TableLayoutPanel3.RowStyles.Add(New System.Windows.Forms.RowStyle()) + Me.TableLayoutPanel3.RowStyles.Add(New System.Windows.Forms.RowStyle()) + Me.TableLayoutPanel3.RowStyles.Add(New System.Windows.Forms.RowStyle()) + Me.TableLayoutPanel3.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20.0!)) + Me.TableLayoutPanel3.Size = New System.Drawing.Size(198, 285) Me.TableLayoutPanel3.TabIndex = 1 ' + 'TableLayoutPanel5 + ' + Me.TableLayoutPanel5.ColumnCount = 1 + Me.TableLayoutPanel5.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100.0!)) + Me.TableLayoutPanel5.Controls.Add(Me.RColorGradHSLU, 0, 3) + Me.TableLayoutPanel5.Controls.Add(Me.RColorSing, 0, 0) + Me.TableLayoutPanel5.Controls.Add(Me.RColorGrad, 0, 1) + Me.TableLayoutPanel5.Controls.Add(Me.RColorGradHSLD, 0, 2) + Me.TableLayoutPanel5.Dock = System.Windows.Forms.DockStyle.Fill + Me.TableLayoutPanel5.Location = New System.Drawing.Point(3, 178) + Me.TableLayoutPanel5.Name = "TableLayoutPanel5" + Me.TableLayoutPanel5.RowCount = 4 + Me.TableLayoutPanel5.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 25.0!)) + Me.TableLayoutPanel5.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 25.0!)) + Me.TableLayoutPanel5.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 25.0!)) + Me.TableLayoutPanel5.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 25.0!)) + Me.TableLayoutPanel5.Size = New System.Drawing.Size(192, 104) + Me.TableLayoutPanel5.TabIndex = 5 + ' + 'RColorGradHSLU + ' + Me.RColorGradHSLU.AutoSize = True + Me.RColorGradHSLU.Location = New System.Drawing.Point(3, 81) + Me.RColorGradHSLU.Name = "RColorGradHSLU" + Me.RColorGradHSLU.Size = New System.Drawing.Size(139, 19) + Me.RColorGradHSLU.TabIndex = 8 + Me.RColorGradHSLU.TabStop = True + Me.RColorGradHSLU.Text = "Color gradient (HSL↓)" + Me.RColorGradHSLU.UseVisualStyleBackColor = True + ' + 'RColorSing + ' + Me.RColorSing.AutoSize = True + Me.RColorSing.Location = New System.Drawing.Point(3, 3) + Me.RColorSing.Name = "RColorSing" + Me.RColorSing.Size = New System.Drawing.Size(98, 19) + Me.RColorSing.TabIndex = 5 + Me.RColorSing.TabStop = True + Me.RColorSing.Text = "Singular color" + Me.RColorSing.UseVisualStyleBackColor = True + ' + 'RColorGrad + ' + Me.RColorGrad.AutoSize = True + Me.RColorGrad.Location = New System.Drawing.Point(3, 29) + Me.RColorGrad.Name = "RColorGrad" + Me.RColorGrad.Size = New System.Drawing.Size(101, 19) + Me.RColorGrad.TabIndex = 6 + Me.RColorGrad.TabStop = True + Me.RColorGrad.Text = "Color gradient" + Me.RColorGrad.UseVisualStyleBackColor = True + ' + 'RColorGradHSLD + ' + Me.RColorGradHSLD.AutoSize = True + Me.RColorGradHSLD.Location = New System.Drawing.Point(3, 55) + Me.RColorGradHSLD.Name = "RColorGradHSLD" + Me.RColorGradHSLD.Size = New System.Drawing.Size(139, 19) + Me.RColorGradHSLD.TabIndex = 7 + Me.RColorGradHSLD.TabStop = True + Me.RColorGradHSLD.Text = "Color gradient (HSL↑)" + Me.RColorGradHSLD.UseVisualStyleBackColor = True + ' + 'TableLayoutPanel4 + ' + Me.TableLayoutPanel4.ColumnCount = 2 + Me.TableLayoutPanel4.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50.0!)) + Me.TableLayoutPanel4.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50.0!)) + Me.TableLayoutPanel4.Controls.Add(Me.BUp, 0, 0) + Me.TableLayoutPanel4.Controls.Add(Me.BDown, 0, 1) + Me.TableLayoutPanel4.Controls.Add(Me.BDuplicate, 1, 0) + Me.TableLayoutPanel4.Controls.Add(Me.BSplit, 1, 1) + Me.TableLayoutPanel4.Dock = System.Windows.Forms.DockStyle.Fill + Me.TableLayoutPanel4.Location = New System.Drawing.Point(3, 36) + Me.TableLayoutPanel4.Name = "TableLayoutPanel4" + Me.TableLayoutPanel4.RowCount = 2 + Me.TableLayoutPanel4.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50.0!)) + Me.TableLayoutPanel4.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50.0!)) + Me.TableLayoutPanel4.Size = New System.Drawing.Size(192, 45) + Me.TableLayoutPanel4.TabIndex = 1 + ' + 'BUp + ' + Me.BUp.Dock = System.Windows.Forms.DockStyle.Fill + Me.BUp.FlatStyle = System.Windows.Forms.FlatStyle.System + Me.BUp.Location = New System.Drawing.Point(4, 3) + Me.BUp.Margin = New System.Windows.Forms.Padding(4, 3, 4, 3) + Me.BUp.Name = "BUp" + Me.BUp.Size = New System.Drawing.Size(88, 16) + Me.BUp.TabIndex = 0 + Me.BUp.Text = "Up" + Me.BUp.UseVisualStyleBackColor = True + ' + 'BDown + ' + Me.BDown.Dock = System.Windows.Forms.DockStyle.Fill + Me.BDown.FlatStyle = System.Windows.Forms.FlatStyle.System + Me.BDown.Location = New System.Drawing.Point(4, 25) + Me.BDown.Margin = New System.Windows.Forms.Padding(4, 3, 4, 3) + Me.BDown.Name = "BDown" + Me.BDown.Size = New System.Drawing.Size(88, 17) + Me.BDown.TabIndex = 0 + Me.BDown.Text = "Down" + Me.BDown.UseVisualStyleBackColor = True + ' + 'BDuplicate + ' + Me.BDuplicate.Dock = System.Windows.Forms.DockStyle.Fill + Me.BDuplicate.FlatStyle = System.Windows.Forms.FlatStyle.System + Me.BDuplicate.Location = New System.Drawing.Point(100, 3) + Me.BDuplicate.Margin = New System.Windows.Forms.Padding(4, 3, 4, 3) + Me.BDuplicate.Name = "BDuplicate" + Me.BDuplicate.Size = New System.Drawing.Size(88, 16) + Me.BDuplicate.TabIndex = 0 + Me.BDuplicate.Text = "Duplicate" + Me.BDuplicate.UseVisualStyleBackColor = True + ' + 'BSplit + ' + Me.BSplit.Dock = System.Windows.Forms.DockStyle.Fill + Me.BSplit.FlatStyle = System.Windows.Forms.FlatStyle.System + Me.BSplit.Location = New System.Drawing.Point(100, 25) + Me.BSplit.Margin = New System.Windows.Forms.Padding(4, 3, 4, 3) + Me.BSplit.Name = "BSplit" + Me.BSplit.Size = New System.Drawing.Size(88, 17) + Me.BSplit.TabIndex = 0 + Me.BSplit.Text = "Split" + Me.BSplit.UseVisualStyleBackColor = True + ' + 'BSemiAuto + ' + Me.BSemiAuto.Dock = System.Windows.Forms.DockStyle.Fill + Me.BSemiAuto.FlatStyle = System.Windows.Forms.FlatStyle.System + Me.BSemiAuto.Location = New System.Drawing.Point(4, 87) + Me.BSemiAuto.Margin = New System.Windows.Forms.Padding(4, 3, 4, 3) + Me.BSemiAuto.Name = "BSemiAuto" + Me.BSemiAuto.Size = New System.Drawing.Size(190, 27) + Me.BSemiAuto.TabIndex = 2 + Me.BSemiAuto.Text = "Semi-auto assign" + Me.BSemiAuto.UseVisualStyleBackColor = True + ' + 'CBEnable + ' + Me.CBEnable.AutoSize = True + Me.CBEnable.Location = New System.Drawing.Point(3, 153) + Me.CBEnable.Name = "CBEnable" + Me.CBEnable.Size = New System.Drawing.Size(88, 19) + Me.CBEnable.TabIndex = 4 + Me.CBEnable.Text = "Enable Item" + Me.CBEnable.UseVisualStyleBackColor = True + ' + 'Label7 + ' + Me.Label7.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.Label7.AutoSize = True + Me.Label7.Location = New System.Drawing.Point(11, 168) + Me.Label7.Margin = New System.Windows.Forms.Padding(4, 0, 4, 0) + Me.Label7.Name = "Label7" + Me.Label7.Size = New System.Drawing.Size(112, 15) + Me.Label7.TabIndex = 0 + Me.Label7.Text = "Load Settings From:" + Me.Label7.TextAlign = System.Drawing.ContentAlignment.MiddleRight + ' + 'CoBLoad + ' + Me.CoBLoad.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList + Me.CoBLoad.FormattingEnabled = True + Me.CoBLoad.Items.AddRange(New Object() {"Editor", "Chart", "Song"}) + Me.CoBLoad.Location = New System.Drawing.Point(14, 191) + Me.CoBLoad.Name = "CoBLoad" + Me.CoBLoad.Size = New System.Drawing.Size(133, 23) + Me.CoBLoad.TabIndex = 5 + ' + 'Label9 + ' + Me.Label9.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.Label9.AutoSize = True + Me.Label9.Location = New System.Drawing.Point(11, 221) + Me.Label9.Margin = New System.Windows.Forms.Padding(4, 0, 4, 0) + Me.Label9.Name = "Label9" + Me.Label9.Size = New System.Drawing.Size(94, 15) + Me.Label9.TabIndex = 0 + Me.Label9.Text = "Save Settings To:" + Me.Label9.TextAlign = System.Drawing.ContentAlignment.MiddleRight + ' + 'CoBSave + ' + Me.CoBSave.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList + Me.CoBSave.FormattingEnabled = True + Me.CoBSave.Items.AddRange(New Object() {"Editor", "Chart", "Song"}) + Me.CoBSave.Location = New System.Drawing.Point(14, 243) + Me.CoBSave.Name = "CoBSave" + Me.CoBSave.Size = New System.Drawing.Size(133, 23) + Me.CoBSave.TabIndex = 5 + ' 'OpVisualOverride ' Me.AcceptButton = Me.OK_Button Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None Me.CancelButton = Me.Cancel_Button - Me.ClientSize = New System.Drawing.Size(303, 420) + Me.ClientSize = New System.Drawing.Size(364, 513) + Me.Controls.Add(Me.CoBSave) + Me.Controls.Add(Me.CoBLoad) + Me.Controls.Add(Me.Label9) Me.Controls.Add(Me.LOverrides) + Me.Controls.Add(Me.Label7) Me.Controls.Add(Me.TableLayoutPanel3) - Me.Controls.Add(Me.TableLayoutPanel1) + Me.Controls.Add(Me.TLValues) Me.Controls.Add(Me.OK_Button) Me.Controls.Add(Me.Cancel_Button) Me.Font = New System.Drawing.Font("Segoe UI", 9.0!) @@ -287,12 +623,19 @@ Partial Class OpVisualOverride Me.ShowInTaskbar = False Me.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent Me.Text = "Visual Override Options" - Me.TableLayoutPanel1.ResumeLayout(False) - Me.TableLayoutPanel1.PerformLayout() + Me.TLValues.ResumeLayout(False) + Me.TLValues.PerformLayout() + Me.TableLayoutPanel7.ResumeLayout(False) + Me.TableLayoutPanel7.PerformLayout() Me.TableLayoutPanel2.ResumeLayout(False) Me.TableLayoutPanel2.PerformLayout() Me.TableLayoutPanel3.ResumeLayout(False) + Me.TableLayoutPanel3.PerformLayout() + Me.TableLayoutPanel5.ResumeLayout(False) + Me.TableLayoutPanel5.PerformLayout() + Me.TableLayoutPanel4.ResumeLayout(False) Me.ResumeLayout(False) + Me.PerformLayout() End Sub Friend WithEvents LOverrides As ListBox @@ -301,15 +644,38 @@ Partial Class OpVisualOverride Friend WithEvents OK_Button As Button Friend WithEvents Cancel_Button As Button Friend WithEvents ContextMenuStrip1 As ContextMenuStrip - Friend WithEvents TableLayoutPanel1 As TableLayoutPanel + Friend WithEvents TLValues As TableLayoutPanel Friend WithEvents Label1 As Label Friend WithEvents Label3 As Label Friend WithEvents Label4 As Label Friend WithEvents TName As TextBox - Friend WithEvents BColor As Button + Friend WithEvents BColorSing As Button Friend WithEvents TableLayoutPanel2 As TableLayoutPanel Friend WithEvents TRangeU As TextBox Friend WithEvents Label5 As Label Friend WithEvents TRangeL As TextBox Friend WithEvents TableLayoutPanel3 As TableLayoutPanel + Friend WithEvents TableLayoutPanel5 As TableLayoutPanel + Friend WithEvents RColorSing As RadioButton + Friend WithEvents RColorGrad As RadioButton + Friend WithEvents RColorGradHSLD As RadioButton + Friend WithEvents TableLayoutPanel4 As TableLayoutPanel + Friend WithEvents BUp As Button + Friend WithEvents BDown As Button + Friend WithEvents BDuplicate As Button + Friend WithEvents BSplit As Button + Friend WithEvents BSemiAuto As Button + Friend WithEvents CBEnable As CheckBox + Friend WithEvents TableLayoutPanel7 As TableLayoutPanel + Friend WithEvents Label8 As Label + Friend WithEvents Label2 As Label + Friend WithEvents Label6 As Label + Friend WithEvents BColorGradL As Button + Friend WithEvents BColorGradU As Button + Friend WithEvents PColorGrad As Panel + Friend WithEvents Label7 As Label + Friend WithEvents CoBLoad As ComboBox + Friend WithEvents Label9 As Label + Friend WithEvents CoBSave As ComboBox + Friend WithEvents RColorGradHSLU As RadioButton End Class diff --git a/iBMSC/Option Windows/OpVisualOverride.vb b/iBMSC/Option Windows/OpVisualOverride.vb index 0443675bd..bef6256c5 100644 --- a/iBMSC/Option Windows/OpVisualOverride.vb +++ b/iBMSC/Option Windows/OpVisualOverride.vb @@ -1,12 +1,29 @@ Public Class OpVisualOverride Public COverrides() As MainWindow.ColorOverride - Dim F As String - Public Sub New(ByVal xColorOverrides() As MainWindow.ColorOverride) + Dim CColorOptionList() As RadioButton + Public LoadSettings As Integer + Dim WHeight As Integer + Dim TLValuesHeight() As Single + Dim hWAV(1295) As String + + Public Sub New(ByVal xColorOverrides() As MainWindow.ColorOverride, xhWAV As String(), SaveOption As Integer) InitializeComponent() + CColorOptionList = {RColorSing, RColorGrad, RColorGradHSLD, RColorGradHSLU} + LOverrides.Items.Clear() COverrides = xColorOverrides + WHeight = Height + ReDim TLValuesHeight(TLValues.RowStyles.Count - 1) + For i = 0 To TLValues.RowStyles.Count - 1 + TLValuesHeight(i) = TLValues.RowStyles(i).Height + Next + + hWAV = xhWAV + CoBSave.SelectedIndex = SaveOption + UpdateTLValuesDisplay() + If Not IsNothing(COverrides) Then ' List expansion code per line For Each COverride In COverrides @@ -18,9 +35,19 @@ ShowInTextbox() End If End If + End Sub + Private Sub LOverrides_Click(sender As Object, e As EventArgs) Handles LOverrides.Click + If IsNothing(COverrides) Or LOverrides.SelectedIndex = -1 Then Exit Sub + ShowInTextbox() End Sub + Private Sub LOverrides_KeyDown(sender As Object, e As KeyEventArgs) Handles LOverrides.KeyDown + If IsNothing(COverrides) Or LOverrides.SelectedIndex = -1 Then Exit Sub + If e.KeyCode = Keys.Delete Then BRemove_Click(sender, New EventArgs) : Exit Sub + + ShowInTextbox() + End Sub Private Sub OK_Button_Click(sender As Object, e As EventArgs) Handles OK_Button.Click DialogResult = DialogResult.OK Me.Close() @@ -39,12 +66,12 @@ End If With COverrides(UBound(COverrides)) .Name = "New Item" + .Enabled = True + .ColorOption = 0 .RangeL = 1 .RangeU = 2 .NoteColor = 0 - .LongNoteColor = 0 - .LongTextColor = 0 - .BG = 0 + .NoteColorU = 0 End With LOverrides.Items.Insert(LOverrides.Items.Count, "New Item") @@ -52,6 +79,92 @@ ShowInTextbox() End Sub + Private Sub BUp_Click(sender As Object, e As EventArgs) Handles BUp.Click + Dim xI = LOverrides.SelectedIndex + If xI <= 1 Then Exit Sub + + Dim COverrideTemp = COverrides(xI - 1) + COverrides(xI - 1) = COverrides(xI) + COverrides(xI) = COverrideTemp + + Dim ItemTemp = LOverrides.Items(xI - 1) + LOverrides.Items(xI - 1) = LOverrides.Items(xI) + LOverrides.Items(xI) = ItemTemp + LOverrides.SelectedIndex -= 1 + End Sub + + Private Sub BDown_Click(sender As Object, e As EventArgs) Handles BDown.Click + Dim xI = LOverrides.SelectedIndex + If xI = -1 Or xI = LOverrides.Items.Count - 1 Then Exit Sub + + Dim COverrideTemp = COverrides(xI + 1) + COverrides(xI + 1) = COverrides(xI) + COverrides(xI) = COverrideTemp + + Dim ItemTemp = LOverrides.Items(xI + 1) + LOverrides.Items(xI + 1) = LOverrides.Items(xI) + LOverrides.Items(xI) = ItemTemp + LOverrides.SelectedIndex += 1 + End Sub + + Private Sub BDuplicate_Click(sender As Object, e As EventArgs) Handles BDuplicate.Click + Dim xI = LOverrides.SelectedIndex + If xI = -1 Then Exit Sub + + ReDim Preserve COverrides(COverrides.Length) + LOverrides.Items.Add("") + For i = UBound(COverrides) To xI + 1 Step -1 + LOverrides.Items(i) = LOverrides.Items(i - 1) + COverrides(i) = COverrides(i - 1) + Next + End Sub + + Private Sub BSplit_Click(sender As Object, e As EventArgs) Handles BSplit.Click + Dim xI = LOverrides.SelectedIndex + If xI = -1 Then Exit Sub + If C36to10(TRangeU.Text) - C36to10(TRangeL.Text) <= 0 Then MsgBox("Warning: Cannot split range.") : Exit Sub + + Dim xRangeLU = C36to10(InputBox("Please input the upper bound for the first range.")) + Do While xRangeLU < C36to10(TRangeL.Text) Or C36to10(TRangeU.Text) < xRangeLU + If xRangeLU = 0 Then Exit Sub + xRangeLU = C36to10(InputBox("Value not between the range. Please input the upper bound for the first range.")) + Loop + + BDuplicate_Click(sender, New EventArgs) + COverrides(xI).RangeU = xRangeLU + COverrides(xI + 1).RangeL = xRangeLU + 1 + ShowInTextbox() + End Sub + + Private Sub BSemiAuto_Click(sender As Object, e As EventArgs) Handles BSemiAuto.Click + Dim OptionName As String = InputBox("Assign notes with wav filenames beginning with the following:") + Do While OptionName <> "" + Dim RangeL As Integer = 0 + Dim RangeU As Integer = 0 + Dim i As Integer = 1 + Dim Flag As Boolean = False + Do While i <= UBound(hWAV) + If Not Flag AndAlso SWIC(hWAV(i), OptionName) Then + RangeL = i + Flag = True + ElseIf Flag AndAlso Not SWIC(hWAV(i), OptionName) Then + RangeU = i - 1 + Exit Do + End If + i += 1 + Loop + + If RangeL <> 0 Then + ReDim Preserve COverrides(COverrides.Length) + COverrides(UBound(COverrides)) = New MainWindow.ColorOverride(OptionName, True, 0, RangeL, RangeU, Color.FromArgb(255, CInt(Math.Floor(256 * Rnd())), CInt(Math.Floor(256 * Rnd())), CInt(Math.Floor(256 * Rnd()))).ToArgb, 0) + LOverrides.Items.Add(OptionName) + Else + MsgBox("No notes found.") + End If + OptionName = InputBox("Assign more notes with wav filenames beginning with the following:") + Loop + End Sub + Private Sub BRemove_Click(sender As Object, e As EventArgs) Handles BRemove.Click If LOverrides.SelectedIndex = -1 Then Exit Sub @@ -63,22 +176,34 @@ LOverrides.Items.RemoveAt(LOverrides.SelectedIndex) End Sub - Private Sub ShowInTextbox() ' Referenced OpPlayer - With COverrides(LOverrides.SelectedIndex) - TName.Text = .Name - TRangeL.Text = C10to36(.RangeL) - TRangeU.Text = C10to36(.RangeU) - BColor.Text = .NoteColor.ToString() - cButtonChange(BColor, Color.FromArgb(.NoteColor)) - End With + Private Sub CoBLoad_SelectedIndexChanged(sender As Object, e As EventArgs) Handles CoBLoad.SelectedIndexChanged + If CoBLoad.SelectedIndex = -1 Then Exit Sub + Dim SaveCurrentSettings = MsgBox("Save current settings?", MsgBoxStyle.YesNoCancel) + If SaveCurrentSettings = MsgBoxResult.Yes Then + OK_Button_Click(sender, e) + ElseIf SaveCurrentSettings = MsgBoxResult.No Then + Cancel_Button_Click(sender, e) + Else + CoBLoad.SelectedIndex = -1 + End If End Sub - Private Function GetFileName(ByVal s As String) As String ' Copied from MainWindow - Dim fslash As Integer = InStrRev(s, "/") - Dim bslash As Integer = InStrRev(s, "\") - Return Mid(s, CInt(IIf(fslash > bslash, fslash, bslash)) + 1) - End Function + Private Sub CBEnable_CheckedChanged(sender As Object, e As EventArgs) Handles CBEnable.CheckedChanged + COverrides(LOverrides.SelectedIndex).Enabled = CBEnable.Checked + End Sub + + Private Sub CColorList_CheckedChanged(sender As Object, e As EventArgs) Handles RColorSing.CheckedChanged, RColorGrad.CheckedChanged, RColorGradHSLD.CheckedChanged, RColorGradHSLU.CheckedChanged + If LOverrides.SelectedIndex = -1 Then Exit Sub + Dim RadioS As RadioButton = CType(sender, RadioButton) + + Dim COption = COverrides(LOverrides.SelectedIndex).ColorOption + Dim COption1 = Array.IndexOf(CColorOptionList, RadioS) + If (COption = 0 AndAlso COption1 <> 0) OrElse (COption <> 0 AndAlso COption1 = 0) Then UpdateTLValuesDisplay() + COverrides(LOverrides.SelectedIndex).ColorOption = COption1 + + RefreshPreview() + End Sub Private Sub SaveCOverride(sender As Object, e As KeyEventArgs) Handles TName.KeyUp, TRangeL.KeyUp, TRangeU.KeyUp If IsNothing(COverrides) Then Exit Sub @@ -88,14 +213,26 @@ .RangeU = C36to10(TRangeU.Text) End With If [Object].ReferenceEquals(sender, TName) Then LOverrides.Items.Item(LOverrides.SelectedIndex) = TName.Text + RefreshPreview() End Sub - Private Sub BColor_Click(sender As Object, e As EventArgs) Handles BColor.Click + Private Sub BColor_Click(sender As Object, e As EventArgs) Handles BColorSing.Click, BColorGradL.Click Dim xColorPicker As New ColorPicker - xColorPicker.SetOrigColor(BColor.BackColor) + xColorPicker.SetOrigColor(BColorSing.BackColor) If xColorPicker.ShowDialog(Me) = Windows.Forms.DialogResult.Cancel Then Exit Sub - cButtonChange(BColor, xColorPicker.NewColor) + cButtonChange(BColorSing, xColorPicker.NewColor) + cButtonChange(BColorGradL, xColorPicker.NewColor) COverrides(LOverrides.SelectedIndex).NoteColor = xColorPicker.NewColor.ToArgb + RefreshPreview() + End Sub + + Private Sub BColorGradU_Click(sender As Object, e As EventArgs) Handles BColorGradU.Click + Dim xColorPicker As New ColorPicker + xColorPicker.SetOrigColor(BColorGradU.BackColor) + If xColorPicker.ShowDialog(Me) = Windows.Forms.DialogResult.Cancel Then Exit Sub + cButtonChange(BColorGradU, xColorPicker.NewColor) + COverrides(LOverrides.SelectedIndex).NoteColorU = xColorPicker.NewColor.ToArgb + RefreshPreview() End Sub Private Sub cButtonChange(ByVal xbutton As Button, ByVal c As Color) ' Copied from OpPlayer @@ -127,8 +264,165 @@ Return C36to10S(xStart.Chars(0)) * 36 + C36to10S(xStart.Chars(1)) End Function - Private Sub LOverrides_Click(sender As Object, e As EventArgs) Handles LOverrides.Click, LOverrides.KeyUp - If IsNothing(COverrides) Or LOverrides.SelectedIndex = -1 Then Exit Sub - ShowInTextbox() + Private Sub ShowInTextbox() ' Referenced OpPlayer + With COverrides(LOverrides.SelectedIndex) + TName.Text = .Name + CBEnable.Checked = .Enabled + CColorOptionList(.ColorOption).Checked = True + TRangeL.Text = C10to36(.RangeL) + TRangeU.Text = C10to36(.RangeU) + BColorSing.Text = .NoteColor.ToString() + BColorGradL.Text = .NoteColor.ToString() + BColorGradU.Text = .NoteColorU.ToString() + cButtonChange(BColorSing, Color.FromArgb(.NoteColor)) + cButtonChange(BColorGradL, Color.FromArgb(.NoteColor)) + cButtonChange(BColorGradU, Color.FromArgb(.NoteColorU)) + End With + RefreshPreview() + End Sub + + + Private Sub RefreshPreview() + If Not CColorOptionList(1).Checked AndAlso Not CColorOptionList(2).Checked AndAlso Not CColorOptionList(3).Checked Then Exit Sub + Dim e1 As BufferedGraphics = BufferedGraphicsManager.Current.Allocate(PColorGrad.CreateGraphics, PColorGrad.DisplayRectangle) + Dim PanelW As Integer = PColorGrad.DisplayRectangle.Width + Dim PanelH As Integer = PColorGrad.DisplayRectangle.Height + Dim iStep As Integer + If C36to10(TRangeU.Text) - C36to10(TRangeL.Text) < 0 Then + iStep = PanelW + Else + iStep = Math.Max(CInt(PanelW / (C36to10(TRangeU.Text) - C36to10(TRangeL.Text) + 1)), 1) + End If + Dim ColorL As Color = BColorGradL.BackColor + Dim ColorU As Color = BColorGradU.BackColor + Dim ColorI As Color + For i = 0 To PanelW Step iStep + If CColorOptionList(1).Checked Then + ColorI = InterpolateColorARGB(ColorL, ColorU, i / PanelW) + ElseIf CColorOptionList(2).Checked OrElse CColorOptionList(3).Checked Then + Dim Direction As Integer = 1 + If CColorOptionList(3).Checked Then Direction = 0 + ColorI = InterpolateColorAHSL(ColorL, ColorU, i / PanelW, Direction) + End If + e1.Graphics.FillRectangle(New Drawing2D.LinearGradientBrush(New Point(0, 0), + New Point(0, PanelH), + ColorI, + ColorI), + i, 0, + i + iStep, PanelH) + Next + + e1.Graphics.SmoothingMode = Drawing2D.SmoothingMode.AntiAlias + e1.Render(PColorGrad.CreateGraphics) + e1.Dispose() + End Sub + + Private Function InterpolateColorARGB(ColorL As Color, ColorU As Color, Ratio As Double) As Color + Dim A As Double = ((1 - Ratio) * Convert.ToInt32(ColorL.A)) + (Ratio * Convert.ToInt32(ColorU.A)) + Dim R As Double = ((1 - Ratio) * Convert.ToInt32(ColorL.R)) + (Ratio * Convert.ToInt32(ColorU.R)) + Dim G As Double = ((1 - Ratio) * Convert.ToInt32(ColorL.G)) + (Ratio * Convert.ToInt32(ColorU.G)) + Dim B As Double = ((1 - Ratio) * Convert.ToInt32(ColorL.B)) + (Ratio * Convert.ToInt32(ColorU.B)) + Return Color.FromArgb(Convert.ToByte(A), Convert.ToByte(R), Convert.ToByte(G), Convert.ToByte(B)) + End Function + + Private Function InterpolateColorAHSL(ColorL As Color, ColorU As Color, Ratio As Double, Optional Direction As Integer = 1) As Color + Dim HSLL = GetHSL(ColorL) + Dim HSLU = GetHSL(ColorU) + If Direction = 1 AndAlso HSLL(0) > HSLU(0) Then + HSLU(0) += 360 + ElseIf Direction = 0 AndAlso HSLL(0) < HSLU(0) Then + HSLL(0) += 360 + End If + Dim A As Double = Math.Min((1 - Ratio) * Convert.ToInt32(ColorL.A) + (Ratio * Convert.ToInt32(ColorU.A)), 255) + Dim H As Double = ((1 - Ratio) * HSLL(0) + Ratio * HSLU(0)) Mod 360 + Dim S As Double = Math.Min((1 - Ratio) * HSLL(1) + Ratio * HSLU(1), 1000) + Dim L As Double = Math.Min((1 - Ratio) * HSLL(2) + Ratio * HSLU(2), 1000) + + ' Copied from ColorPicker + Dim xxS = S / 1000 + Dim xxB = (L - 500) / 500 + Dim R As Double + Dim G As Double + Dim B As Double + + If H < 60 Then + B = -1 : R = 1 : G = (H - 30) / 30 + ElseIf H < 120 Then + B = -1 : G = 1 : R = (90 - H) / 30 + ElseIf H < 180 Then + R = -1 : G = 1 : B = (H - 150) / 30 + ElseIf H < 240 Then + R = -1 : B = 1 : G = (210 - H) / 30 + ElseIf H < 300 Then + G = -1 : B = 1 : R = (H - 270) / 30 + Else + G = -1 : R = 1 : B = (330 - H) / 30 + End If + + R = (R * xxS * (1 - Math.Abs(xxB)) + xxB + 1) * 255 / 2 + G = (G * xxS * (1 - Math.Abs(xxB)) + xxB + 1) * 255 / 2 + B = (B * xxS * (1 - Math.Abs(xxB)) + xxB + 1) * 255 / 2 + + Return Color.FromArgb(CInt(A), CInt(R), CInt(G), CInt(B)) + End Function + + Private Function GetHSL(ColorI As Color) As Integer() + Dim R As Double = CInt(ColorI.R) / 255 + Dim G As Double = CInt(ColorI.G) / 255 + Dim B As Double = CInt(ColorI.B) / 255 + Console.WriteLine("R: " & R & vbCrLf & "G: " & G & vbCrLf & "B: " & B & vbCrLf) + Dim CMin = Math.Min(Math.Min(R, G), B) + Dim CMax = Math.Max(Math.Max(R, G), B) + Dim Delta = CMax - CMin + Dim H As Double + Dim S As Double + Dim L As Double + Console.WriteLine("CMin: " & CMin & vbCrLf & "CMax: " & CMax & vbCrLf & "Delta: " & Delta & vbCrLf) + If Delta = 0 Then + H = 0 + ElseIf CMax = R Then + H = (6 + ((G - B) / Delta)) Mod 6 + ElseIf CMax = G Then + H = (B - R) / Delta + 2 + Else + H = (R - G) / Delta + 4 + End If + + H = Math.Round(H * 60) + If H < 0 Then H += 360 + + L = (CMax + CMin) / 2 + + If Delta = 0 Then S = 0 Else If L = 1 Then S = 1 Else S = Delta / (1 - Math.Abs(2 * L - 1)) + Console.WriteLine(H & vbCrLf & S & vbCrLf & L & vbCrLf) + S *= 1000 + L *= 1000 + + Return {CInt(H), CInt(S), CInt(L)} + End Function + + Private Sub UpdateTLValuesDisplay() + If TLValuesHeight Is Nothing Then Exit Sub + SuspendLayout() + TLValues.SuspendLayout() + Height = WHeight + TLValues.RowStyles(2).Height = TLValuesHeight(2) + TLValues.RowStyles(3).Height = TLValuesHeight(3) + TLValues.RowStyles(4).Height = TLValuesHeight(4) + If CColorOptionList(0).Checked Then + TLValues.RowStyles(3).Height = 0 + TLValues.RowStyles(4).Height = 0 + Height -= CInt(TLValuesHeight(3) + TLValuesHeight(4)) + Else + TLValues.RowStyles(2).Height = 0 + Height -= CInt(TLValuesHeight(2)) + End If + ResumeLayout() + TLValues.ResumeLayout() End Sub + + Private Function SWIC(str As String, strHash As String) As Boolean ' StartsWith, IgnoreCase + If str Is Nothing Then Return False + Return str.StartsWith(strHash, StringComparison.CurrentCultureIgnoreCase) + End Function End Class \ No newline at end of file diff --git a/iBMSC/PanelDraw.vb b/iBMSC/PanelDraw.vb index 2caab8183..7dc3a4cc8 100644 --- a/iBMSC/PanelDraw.vb +++ b/iBMSC/PanelDraw.vb @@ -604,25 +604,7 @@ Partial Public Class MainWindow dark = GetColumn(sNote.ColumnIndex).getDark(xAlpha) ' Color override - If Not IsNothing(CO) Then - - For i = 0 To UBound(CO) - Dim CORangeL = CO(i).RangeL * 10000 - Dim CORangeU = CO(i).RangeU * 10000 - Dim CONoteColor = CO(i).NoteColor - If sNote.Value >= CORangeL AndAlso sNote.Value <= CORangeU AndAlso Not sNote.Landmine Then - ' bright = Color.FromArgb((CInt(((CONoteColor >> 24) And &HFF) * xAlpha) << 24)) - ' dark = bright - - ' bright = Color.FromArgb(CONoteColor * xAlpha) - - bright = Color.FromArgb(CInt(CONoteColor * xAlpha)) - dark = Color.FromArgb(CInt(CONoteColor * xAlpha)) - Exit For - End If - - Next - End If + GetOverridenColor(sNote, bright, dark, xAlpha, CO) If Not sNote.LongNote Then xPen = New Pen(GetColumn(sNote.ColumnIndex).getBright(xAlpha)) @@ -747,25 +729,7 @@ Partial Public Class MainWindow dark = GetColumn(sNote.ColumnIndex).getDark(xAlpha) ' Color override - If Not IsNothing(CO) Then - - For i = 0 To UBound(CO) - Dim CORangeL = CO(i).RangeL * 10000 - Dim CORangeU = CO(i).RangeU * 10000 - Dim CONoteColor = CO(i).NoteColor - If sNote.Value >= CORangeL AndAlso sNote.Value <= CORangeU AndAlso Not sNote.Landmine Then - ' bright = Color.FromArgb((CInt(((CONoteColor >> 24) And &HFF) * xAlpha) << 24)) - ' dark = bright - - ' bright = Color.FromArgb(CONoteColor * xAlpha) - - bright = Color.FromArgb(CInt(CONoteColor * xAlpha)) - dark = Color.FromArgb(CInt(CONoteColor * xAlpha)) - Exit For - End If - - Next - End If + GetOverridenColor(sNote, bright, dark, xAlpha, CO) If sNote.Length = 0 Then p1 = New Point(HorizontalPositiontoDisplay(xnLeft, xHS), @@ -845,6 +809,123 @@ Partial Public Class MainWindow End Sub + Private Sub GetOverridenColor(ByRef sNote As Note, ByRef Bright As Color, ByRef Dark As Color, ByVal xAlpha As Single, ByVal CO As ColorOverride()) + If Not IsNothing(CO) Then + + For i = 0 To UBound(CO) + If Not CO(i).Enabled Then Continue For + Dim CORangeL = CO(i).RangeL * 10000 + Dim CORangeU = CO(i).RangeU * 10000 + Dim CONoteColor = CO(i).NoteColor + Dim CONoteColorU = CO(i).NoteColorU + If sNote.Value >= CORangeL AndAlso sNote.Value <= CORangeU AndAlso Not sNote.Landmine Then + Select Case CO(i).ColorOption + Case 0 + Bright = Color.FromArgb(CInt(CONoteColor * xAlpha)) + Dark = Bright + Case 1 + Dim CORange = Math.Max(1, CORangeU - CORangeL) + Bright = InterpolateColorARGB(Color.FromArgb(CONoteColor), Color.FromArgb(CONoteColorU), (sNote.Value - CORangeL) / CORange, xAlpha) + Dark = Bright + Case 2 + Dim CORange = Math.Max(1, CORangeU - CORangeL) + Bright = InterpolateColorAHSL(Color.FromArgb(CONoteColor), Color.FromArgb(CONoteColorU), (sNote.Value - CORangeL) / CORange, xAlpha) + Dark = Bright + Case 3 + Dim CORange = Math.Max(1, CORangeU - CORangeL) + Bright = InterpolateColorAHSL(Color.FromArgb(CONoteColor), Color.FromArgb(CONoteColorU), (sNote.Value - CORangeL) / CORange, xAlpha, 0) + Dark = Bright + End Select + End If + + Next + End If + End Sub + + Private Function InterpolateColorARGB(ColorL As Color, ColorU As Color, Ratio As Double, Optional xAlpha As Single = 1) As Color + Dim A As Double = ((1 - Ratio) * Convert.ToInt32(ColorL.A)) + (Ratio * Convert.ToInt32(ColorU.A)) + Dim R As Double = ((1 - Ratio) * Convert.ToInt32(ColorL.R)) + (Ratio * Convert.ToInt32(ColorU.R)) + Dim G As Double = ((1 - Ratio) * Convert.ToInt32(ColorL.G)) + (Ratio * Convert.ToInt32(ColorU.G)) + Dim B As Double = ((1 - Ratio) * Convert.ToInt32(ColorL.B)) + (Ratio * Convert.ToInt32(ColorU.B)) + Return Color.FromArgb(Convert.ToByte(A * xAlpha), Convert.ToByte(R), Convert.ToByte(G), Convert.ToByte(B)) + End Function + + Private Function InterpolateColorAHSL(ColorL As Color, ColorU As Color, Ratio As Double, Optional xAlpha As Single = 1, Optional Direction As Integer = 1) As Color + Dim HSLL = GetHSL(ColorL) + Dim HSLU = GetHSL(ColorU) + If Direction = 1 AndAlso HSLL(0) > HSLU(0) Then + HSLU(0) += 360 + ElseIf Direction = 0 AndAlso HSLL(0) < HSLU(0) Then + HSLL(0) += 360 + End If + Dim A As Double = Math.Min((1 - Ratio) * Convert.ToInt32(ColorL.A) + (Ratio * Convert.ToInt32(ColorU.A)), 255) + Dim H As Double = ((1 - Ratio) * HSLL(0) + Ratio * HSLU(0)) Mod 360 + Dim S As Double = Math.Min((1 - Ratio) * HSLL(1) + Ratio * HSLU(1), 1000) + Dim L As Double = Math.Min((1 - Ratio) * HSLL(2) + Ratio * HSLU(2), 1000) + + ' Copied from ColorPicker + Dim xxS = S / 1000 + Dim xxB = (L - 500) / 500 + Dim R As Double + Dim G As Double + Dim B As Double + + If H < 60 Then + B = -1 : R = 1 : G = (H - 30) / 30 + ElseIf H < 120 Then + B = -1 : G = 1 : R = (90 - H) / 30 + ElseIf H < 180 Then + R = -1 : G = 1 : B = (H - 150) / 30 + ElseIf H < 240 Then + R = -1 : B = 1 : G = (210 - H) / 30 + ElseIf H < 300 Then + G = -1 : B = 1 : R = (H - 270) / 30 + Else + G = -1 : R = 1 : B = (330 - H) / 30 + End If + + R = (R * xxS * (1 - Math.Abs(xxB)) + xxB + 1) * 255 / 2 + G = (G * xxS * (1 - Math.Abs(xxB)) + xxB + 1) * 255 / 2 + B = (B * xxS * (1 - Math.Abs(xxB)) + xxB + 1) * 255 / 2 + + Return Color.FromArgb(CInt(A * xAlpha), CInt(R), CInt(G), CInt(B)) + End Function + + Private Function GetHSL(ColorI As Color) As Integer() + Dim R As Double = CInt(ColorI.R) / 255 + Dim G As Double = CInt(ColorI.G) / 255 + Dim B As Double = CInt(ColorI.B) / 255 + Console.WriteLine("R: " & R & vbCrLf & "G: " & G & vbCrLf & "B: " & B & vbCrLf) + Dim CMin = Math.Min(Math.Min(R, G), B) + Dim CMax = Math.Max(Math.Max(R, G), B) + Dim Delta = CMax - CMin + Dim H As Double + Dim S As Double + Dim L As Double + Console.WriteLine("CMin: " & CMin & vbCrLf & "CMax: " & CMax & vbCrLf & "Delta: " & Delta & vbCrLf) + If Delta = 0 Then + H = 0 + ElseIf CMax = R Then + H = (6 + ((G - B) / Delta)) Mod 6 + ElseIf CMax = G Then + H = (B - R) / Delta + 2 + Else + H = (R - G) / Delta + 4 + End If + + H = Math.Round(H * 60) + If H < 0 Then H += 360 + + L = (CMax + CMin) / 2 + + If Delta = 0 Then S = 0 Else If L = 1 Then S = 1 Else S = Delta / (1 - Math.Abs(2 * L - 1)) + Console.WriteLine(H & vbCrLf & S & vbCrLf & L & vbCrLf) + S *= 1000 + L *= 1000 + + Return {CInt(H), CInt(S), CInt(L)} + End Function + Private Function WordWrapConvert(ByVal s As String) As String If s = "" Then Return "" Return s.Replace("\n", vbCrLf) diff --git a/iBMSC/PanelEvents.vb b/iBMSC/PanelEvents.vb index ca2b267bc..50630c81e 100644 --- a/iBMSC/PanelEvents.vb +++ b/iBMSC/PanelEvents.vb @@ -353,20 +353,6 @@ Partial Public Class MainWindow POStatusRefresh() End Sub - ' Private Sub MTCFromMode(ByVal ColSP As Integer, ByVal ColPMS As Integer, ByVal ColDP As Integer, xUndo As UndoRedo.LinkedURCmd, xRedo As UndoRedo.LinkedURCmd) - ' Dim xCol As Integer - ' Select Case gXKeyMode - ' Case "SP" - ' xCol = ColSP - ' Case "PMS" - ' xCol = ColPMS - ' Case "DP" - ' xCol = ColDP - ' End Select - ' If xCol = -1 Then Exit Sub - ' MoveToColumn(xCol, xUndo, xRedo) - ' End Sub - Private Sub SelectAllWithHoveredNoteLabel() For xI1 = 0 To UBound(Notes) Notes(xI1).Selected = CBool(IIf(IsLabelMatch(Notes(xI1), KMouseOver), True, Notes(xI1).Selected)) From f374762013909808fbc71d77551b3a475261aadf Mon Sep 17 00:00:00 2001 From: psyk2642 <60137590+psyk2642@users.noreply.github.com> Date: Sun, 1 May 2022 13:43:31 +0800 Subject: [PATCH 128/257] Update AssemblyInfo.vb --- iBMSC/My Project/AssemblyInfo.vb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/iBMSC/My Project/AssemblyInfo.vb b/iBMSC/My Project/AssemblyInfo.vb index 69843b035..0ebb18772 100644 --- a/iBMSC/My Project/AssemblyInfo.vb +++ b/iBMSC/My Project/AssemblyInfo.vb @@ -30,7 +30,7 @@ Imports System.Resources ' by using the '*' as shown below: ' - - + + \ No newline at end of file From fe2c78fa0efee74f5e4a0bca4b65a0e33f36620d Mon Sep 17 00:00:00 2001 From: psyk2642 <60137590+psyk2642@users.noreply.github.com> Date: Sun, 1 May 2022 13:46:46 +0800 Subject: [PATCH 129/257] Update README.md --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 546d787f1..d088c1d39 100644 --- a/README.md +++ b/README.md @@ -104,4 +104,5 @@ Listed in the order added. * Some other functions are also rebindable, such as Snap to Grid, Undo, and Redo. ### #TOTAL Options -* Allows you to set a recommended #TOTAL value based on either IIDX supposition 1, IIDX supposition 2, or a multiplier. \ No newline at end of file +* Allows you to set a recommended #TOTAL value based on either IIDX supposition 1, IIDX supposition 2, or a multiplier. +* Allows you to auto-set the #TOTAL value for the chart. \ No newline at end of file From 453ac55ae9f90150c6ffa64e145f2b64ea367e9e Mon Sep 17 00:00:00 2001 From: psyk2642 <60137590+psyk2642@users.noreply.github.com> Date: Sun, 1 May 2022 15:42:34 +0800 Subject: [PATCH 130/257] Update ChartIO.vb --- iBMSC/ChartIO.vb | 1 + 1 file changed, 1 insertion(+) diff --git a/iBMSC/ChartIO.vb b/iBMSC/ChartIO.vb index 0c6d5e79c..0cfb337d0 100644 --- a/iBMSC/ChartIO.vb +++ b/iBMSC/ChartIO.vb @@ -269,6 +269,7 @@ Partial Public Class MainWindow TExpansion.Text = xExpansion End If + LoadColorOverride(FileName) SortByVPositionQuick(0, UBound(Notes)) UpdatePairing() CalculateTotalPlayableNotes() From 643df5fa8f2ddfe753b62d6f9ddc860ebf38437a Mon Sep 17 00:00:00 2001 From: psyk2642 <60137590+psyk2642@users.noreply.github.com> Date: Sun, 1 May 2022 17:34:26 +0800 Subject: [PATCH 131/257] Updated OpKeybinding + Fix - Allows removing overlapping keybinding from other functions when assigning keybinding. - Visual Override Options Fix --- iBMSC/EditorPersistent.vb | 2 +- iBMSC/MainWindow.vb | 26 ++++++++--------- iBMSC/Option Windows/OpKeybinding.vb | 42 ++++++++++++++++++---------- 3 files changed, 40 insertions(+), 30 deletions(-) diff --git a/iBMSC/EditorPersistent.vb b/iBMSC/EditorPersistent.vb index 9a761f923..e18e58bab 100644 --- a/iBMSC/EditorPersistent.vb +++ b/iBMSC/EditorPersistent.vb @@ -1497,7 +1497,7 @@ Partial Public Class MainWindow Next FileStream.Close() Else - ReDim COverrides(0) + ReDim COverrides(-1) End If End Sub End Class diff --git a/iBMSC/MainWindow.vb b/iBMSC/MainWindow.vb index 29382bada..029164880 100644 --- a/iBMSC/MainWindow.vb +++ b/iBMSC/MainWindow.vb @@ -4077,21 +4077,17 @@ Public Class MainWindow End Sub Private Sub TBKOptions_Click(sender As Object, e As EventArgs) Handles TBKOptions.Click, mnKOptions.Click - Try - Dim xDiag As New OpKeybinding(Keybindings) - If xDiag.ShowDialog() = Windows.Forms.DialogResult.OK Then - With xDiag - Keybindings = .Keybinds - - ' Rename shortcutstrings - For Each keybind In .Keybinds - RenameShortcuts(keybind) - Next - End With - End If - Catch ex As Exception - MsgBox(ex.Message) - End Try + Dim xDiag As New OpKeybinding(Keybindings) + If xDiag.ShowDialog() = Windows.Forms.DialogResult.OK Then + With xDiag + Keybindings = .Keybinds + + ' Rename shortcutstrings + For Each keybind In .Keybinds + RenameShortcuts(keybind) + Next + End With + End If End Sub Private Sub RenameShortcuts(ByVal keybind As Keybinding) diff --git a/iBMSC/Option Windows/OpKeybinding.vb b/iBMSC/Option Windows/OpKeybinding.vb index 11226ca87..ce68924ec 100644 --- a/iBMSC/Option Windows/OpKeybinding.vb +++ b/iBMSC/Option Windows/OpKeybinding.vb @@ -37,9 +37,12 @@ Public Class OpKeybinding Private Sub LVKeybinding_Click(sender As Object, e As EventArgs) Handles LVKeybinding.Click, LVKeybinding.KeyUp ' List keybindings in LCombos LCombos.Items.Clear() - For Each keyComboIndividual In Keybinds(LVKeybinding.FocusedItem.Index).Combo - LCombos.Items.Add(keyComboIndividual) - Next + With Keybinds(LVKeybinding.FocusedItem.Index) + If .Combo.Length = 0 OrElse .Combo(0) = "" Then Exit Sub + For Each keyComboIndividual In .Combo + LCombos.Items.Add(keyComboIndividual) + Next + End With End Sub Private Sub LVKeybinding_DoubleClick(sender As Object, e As EventArgs) Handles LVKeybinding.DoubleClick @@ -84,7 +87,8 @@ Public Class OpKeybinding If Not keyComboOK Then Exit Sub With Keybinds(LVKeybinding.FocusedItem.Index) - ReDim Preserve .Combo(.Combo.Length) + If .Combo.Length = 0 Then ReDim .Combo(0) + If .Combo(0) <> "" Then ReDim Preserve .Combo(.Combo.Length) .Combo(UBound(.Combo)) = TComboInput.Text LCombos.Items.Add(TComboInput.Text) @@ -174,16 +178,26 @@ Public Class OpKeybinding End Select - Dim NoteKeybinds = From k In Keybinds - Where Not CategoryToIgnore.Contains(k.Category) - Select k - - For Each keybind In NoteKeybinds - If keybind.Combo.Contains(TComboInput.Text) Then - keyComboOK = False - MsgBox("Error: " & TComboInput.Text & " has been assigned to " & keybind.OpName & ".") - Exit Sub - End If + For i = 0 To UBound(Keybinds) + If CategoryToIgnore.Contains(Keybinds(i).Category) Then Continue For + + Dim keybind = Keybinds(i) + For j = 0 To UBound(keybind.Combo) + If keybind.Combo(j) = TComboInput.Text Then + If MsgBox(TComboInput.Text & " has been assigned to " & keybind.OpName & ". Remove keybinding for " & keybind.OpName & "?", MsgBoxStyle.YesNo) = DialogResult.Yes Then + For k = j To UBound(Keybinds(i).Combo) - 1 + Keybinds(i).Combo(k) = Keybinds(i).Combo(k + 1) + Next + ReDim Preserve Keybinds(i).Combo(UBound(Keybinds(i).Combo) - 1) + + LVKeybinding.Items(i).SubItems(2).Text = Join(Keybinds(i).Combo, ", ") + Exit For + Else + keyComboOK = False + Exit Sub + End If + End If + Next Next End Sub From a30a3b481a89049c2cda8ae1ce43552805e2501e Mon Sep 17 00:00:00 2001 From: psyk2642 <60137590+psyk2642@users.noreply.github.com> Date: Mon, 2 May 2022 00:10:07 +0800 Subject: [PATCH 132/257] Added ability to move note to template position Allows setting a template chart as a reference for the default position of the notes and allows the notes to move to said default position. --- iBMSC/ChartIO.vb | 140 ++++++++++++++++++++- iBMSC/EditorPersistent.vb | 25 ++-- iBMSC/MainWindow.designer.vb | 77 +++++++----- iBMSC/MainWindow.vb | 33 +++-- iBMSC/Option Windows/OpGeneral.Designer.vb | 39 ++++-- iBMSC/Option Windows/OpGeneral.vb | 3 +- iBMSC/PanelEvents.vb | 41 +++++- 7 files changed, 290 insertions(+), 68 deletions(-) diff --git a/iBMSC/ChartIO.vb b/iBMSC/ChartIO.vb index 0cfb337d0..87d46ca4c 100644 --- a/iBMSC/ChartIO.vb +++ b/iBMSC/ChartIO.vb @@ -17,13 +17,11 @@ Partial Public Class MainWindow Dim nNotes As Integer = 1 ' Assume ghost note strings contain only notes in the section. Expansion field to be saved separately - If xGhost Then - nNotes = Notes.Length - ElseIf xComment Then - xStrLine2 = xStrLine + If xGhost Or xComment Then nNotes = Notes.Length Else ' Initialization ReDim Notes(0) + ReDim NotesTemplate(0) ReDim mColumn(999) ReDim hWAV(1295) ReDim hBPM(1295) 'x10000 @@ -56,6 +54,8 @@ Partial Public Class MainWindow Dim nLine As Integer = -1 For Each sLine In xStrLine + If xComment Then xStrLine2 = xStrLine : Exit For + Dim sLineTrim As String = sLine.Trim If sLineTrim = "" Then Continue For @@ -185,6 +185,9 @@ Partial Public Class MainWindow If xComVal > hCOMNum Then hCOMNum = xComVal Continue For + ElseIf SWIC(sLineTrim, "#TEMPLATE") Then + FileNameTemplate = Mid(sLineTrim, Len("#TEMPLATE") + 2) + NotesTemplate = OpenBMSFunc(My.Computer.FileSystem.ReadAllText(ExcludeFileName(FileName) & "\" & FileNameTemplate, TextEncoding)) End If 'TODO: LNOBJ value validation @@ -291,6 +294,129 @@ Partial Public Class MainWindow End If End Sub + Private Function OpenBMSFunc(ByVal xStrAll As String) As Note() + 'Line feed validation: will remove some empty lines + xStrAll = Replace(Replace(Replace(xStrAll, vbLf, vbCr), vbCr & vbCr, vbCr), vbCr, vbCrLf) + + Dim xStrLine() As String = Split(xStrAll, vbCrLf, , CompareMethod.Text) + Dim xStrLine2(xStrLine.Length) As String ' Create a second array which removes expansion codes from the second for loop + Dim xI1 As Integer + Dim sLine As String + Dim xExpansion As String = "" + + Dim Notes(0) As Note + Dim mColumn(999) As Integer + Dim hWAV(1295) As String + Dim hBPM(1295) As Long 'x10000 + Dim hSTOP(1295) As Long + Dim hBMSCROLL(1295) As Long + Dim MeasureLength(999) As Double + For i = 0 To UBound(MeasureLength) + MeasureLength(i) = 192.0R + Next + + With Notes(0) + .ColumnIndex = niBPM + .VPosition = -1 + .Value = 1200000 + End With + + Dim xStack As Integer = 0 + Dim nLine As Integer = -1 + + For Each sLine In xStrLine + Dim sLineTrim As String = sLine.Trim + If sLineTrim = "" Then Continue For + + If xStack > 0 Then AddToExpansion(xExpansion, xStack, sLine) : Continue For + + If sLineTrim.StartsWith("#") And Mid(sLineTrim, 5, 3) = "02:" Then + Dim xIndex As Integer = CInt(Mid(sLineTrim, 2, 3)) + Dim xRatio As Double = Val(Mid(sLineTrim, 8)) + MeasureLength(xIndex) = xRatio * 192.0R + Continue For + + ElseIf SWIC(sLineTrim, "#BPM") And Not Mid(sLineTrim, Len("#BPM") + 1, 1).Trim = "" Then 'If BPM## + ' zdr: No limits on BPM editing.. they don't make much sense. + hBPM(C36to10(Mid(sLineTrim, Len("#BPM") + 1, 2))) = CLng(CDbl(Mid(sLineTrim, Len("#BPM") + 4)) * 10000) + Continue For + + ElseIf SWIC(sLineTrim, "#BPM") Then 'If BPM #### + Notes(0).Value = CLng(CDbl(Mid(sLineTrim, Len("#BPM") + 1).Trim)) * 10000 + Continue For + + 'No limits on STOPs either. + ElseIf SWIC(sLineTrim, "#STOP") Then + hSTOP(C36to10(Mid(sLineTrim, Len("#STOP") + 1, 2))) = CLng(CDbl(Mid(sLineTrim, Len("#STOP") + 4)) * 10000) + Continue For + + ElseIf SWIC(sLineTrim, "#SCROLL") Then + hBMSCROLL(C36to10(Mid(sLineTrim, Len("#SCROLL") + 1, 2))) = CLng(CDbl(Mid(sLineTrim, Len("#SCROLL") + 4)) * 10000) + Continue For + + End If + + If sLineTrim.StartsWith("#") And Mid(sLineTrim, 7, 1) = ":" Then 'If the line contains Ks + Dim xIdentifier As String = Mid(sLineTrim, 5, 2) + If BMSChannelToColumn(xIdentifier) = 0 Then xExpansion &= sLine & vbCrLf : Continue For + + nLine += 1 + xStrLine2(nLine) = sLineTrim + + Else + AddToExpansion(xExpansion, xStack, sLine) + End If + Next + Dim MeasureBottom(999) As Double + MeasureBottom(0) = 0.0# + For xIM As Integer = 0 To 998 + MeasureBottom(xIM + 1) = MeasureBottom(xIM) + MeasureLength(xIM) + Next + + ' BPM must be updated before loading notes, do not combine loops + ' xStrLine2 should contain only # lines for notes + ReDim Preserve xStrLine2(nLine) + For Each sLineTrim In xStrLine2 + + If Not (sLineTrim.StartsWith("#") And Mid(sLineTrim, 7, 1) = ":") Then Continue For 'If the line contains Ks ' P: The hell is a K + + ' >> Measure = Mid(sLine, 2, 3) + ' >> Column Identifier = Mid(sLine, 5, 2) + ' >> K = Mid(sLine, xI1, 2) + Dim xMeasure As Integer = CInt(Mid(sLineTrim, 2, 3)) + Dim Channel As String = Mid(sLineTrim, 5, 2) + If BMSChannelToColumn(Channel) = 0 Then Continue For + + If Channel = "01" Then mColumn(xMeasure) += 1 'If the identifier is 01 then add a B column in that measure + For xI1 = 8 To Len(sLineTrim) - 1 Step 2 'For all Ks within that line ( - 1 can be ommitted ) + If Mid(sLineTrim, xI1, 2) = "00" Then Continue For 'If the K is not 00 + + ReDim Preserve Notes(Notes.Length) + + With Notes(UBound(Notes)) + .ColumnIndex = BMSChannelToColumn(Channel) + + CInt(IIf(Channel = "01", 1, 0)) * (mColumn(xMeasure) - 1) + .LongNote = IsChannelLongNote(Channel) + .Hidden = IsChannelHidden(Channel) + .Landmine = IsChannelLandmine(Channel) + .Selected = False + .VPosition = MeasureBottom(xMeasure) + MeasureLength(xMeasure) * (xI1 / 2 - 4) / ((Len(sLineTrim) - 7) / 2) + .Value = C36to10(Mid(sLineTrim, xI1, 2)) * 10000 + + If Channel = "03" Then .Value = Convert.ToInt32(Mid(sLineTrim, xI1, 2), 16) * 10000 + If Channel = "08" Then .Value = hBPM(C36to10(Mid(sLineTrim, xI1, 2))) + If Channel = "09" Then .Value = hSTOP(C36to10(Mid(sLineTrim, xI1, 2))) + If Channel = "SC" Then .Value = hBMSCROLL(C36to10(Mid(sLineTrim, xI1, 2))) + End With + + Next + Next + + ' If NTInput Then ConvertBMSE2NT() + + Return Notes + End Function + ReadOnly BMSChannelList() As String = {"01", "03", "04", "06", "07", "08", "09", "11", "12", "13", "14", "15", "16", "18", "19", "21", "22", "23", "24", "25", "26", "28", "29", @@ -458,8 +584,10 @@ Partial Public Class MainWindow Next TExpansion.Text = ExpansionTextTemp End If - Dim xStrEditor As String = vbCrLf & "*---------------------- EDITOR EXPANSION FIELD" & vbCrLf & xStrEditorCommentNotes & vbCrLf & vbCrLf - If xStrEditorCommentNotes = "" Then xStrEditor = "" + ' Add template filename + Dim xStrEditorTemplate As String = "#TEMPLATE " & FileNameTemplate + Dim xStrEditor As String = vbCrLf & "*---------------------- EDITOR EXPANSION FIELD" & vbCrLf & xStrEditorCommentNotes & vbCrLf & xStrEditorTemplate & vbCrLf & vbCrLf + If xStrEditorCommentNotes = "" AndAlso xStrEditorTemplate = "" Then xStrEditor = "" ' Output main data field. Dim xStrMain As String = "*---------------------- MAIN DATA FIELD" & vbCrLf & vbCrLf & Join(xStrMeasure, "") & vbCrLf diff --git a/iBMSC/EditorPersistent.vb b/iBMSC/EditorPersistent.vb index e18e58bab..f558d0cca 100644 --- a/iBMSC/EditorPersistent.vb +++ b/iBMSC/EditorPersistent.vb @@ -98,6 +98,7 @@ Partial Public Class MainWindow .WriteAttributeString("JackBPM", ErrorJackBPM.ToString()) .WriteAttributeString("JackTH", ErrorJackTH.ToString()) .WriteAttributeString("COverridesSaveOption", COverridesSaveOption.ToString()) + .WriteAttributeString("TemplateSnapToVPosition", TemplateSnapToVPosition.ToString()) .WriteEndElement() .WriteStartElement("Save") @@ -310,16 +311,23 @@ Partial Public Class MainWindow End Sub Private Sub XMLLoadKeybinding(ByVal n As XmlElement) - Dim i As Integer = -1 - XMLLoadAttribute(n.GetAttribute("Index"), i) - If i < 0 Or i > UBound(Keybindings) Then Exit Sub + Dim InOption As Boolean = False + Dim xI As Integer = 0 + For i = 0 To UBound(Keybindings) + If Keybindings(i).OpName = n.GetAttribute("Name") Then + xI = i + InOption = True + Exit For + End If + Next + If Not InOption Then Exit Sub - XMLLoadAttribute(n.GetAttribute("Name"), Keybindings(i).OpName) - XMLLoadAttribute(n.GetAttribute("Description"), Keybindings(i).Description) - Keybindings(i).Combo = Split(n.GetAttribute("Combos"), ", ") - XMLLoadAttribute(n.GetAttribute("Category"), Keybindings(i).Category) + XMLLoadAttribute(n.GetAttribute("Name"), Keybindings(xI).OpName) + XMLLoadAttribute(n.GetAttribute("Description"), Keybindings(xI).Description) + Keybindings(xI).Combo = Split(n.GetAttribute("Combos"), ", ") + XMLLoadAttribute(n.GetAttribute("Category"), Keybindings(xI).Category) - RenameShortcuts(Keybindings(i)) + RenameShortcuts(Keybindings(xI)) End Sub Private Sub XMLLoadColumn(ByVal n As XmlElement) @@ -455,6 +463,7 @@ Partial Public Class MainWindow XMLLoadAttribute(.GetAttribute("JackBPM"), ErrorJackBPM) XMLLoadAttribute(.GetAttribute("JackTH"), ErrorJackTH) XMLLoadAttribute(.GetAttribute("COverridesSaveOption"), COverridesSaveOption) + XMLLoadAttribute(.GetAttribute("TemplateSnapToVPosition"), TemplateSnapToVPosition) End With End If diff --git a/iBMSC/MainWindow.designer.vb b/iBMSC/MainWindow.designer.vb index 1cb68dd1c..f3a9e4ea5 100644 --- a/iBMSC/MainWindow.designer.vb +++ b/iBMSC/MainWindow.designer.vb @@ -25,16 +25,16 @@ Partial Class MainWindow Me.TBLangDef = New System.Windows.Forms.ToolStripMenuItem() Me.TBLangRefresh = New System.Windows.Forms.ToolStripMenuItem() Me.ToolStripSeparator9 = New System.Windows.Forms.ToolStripSeparator() - Me.TBLanguage = New System.Windows.Forms.ToolStripDropDownButton() Me.mnLanguage = New System.Windows.Forms.ToolStripMenuItem() + Me.TBLanguage = New System.Windows.Forms.ToolStripDropDownButton() Me.cmnTheme = New System.Windows.Forms.ContextMenuStrip(Me.components) Me.TBThemeDef = New System.Windows.Forms.ToolStripMenuItem() Me.TBThemeSave = New System.Windows.Forms.ToolStripMenuItem() Me.TBThemeRefresh = New System.Windows.Forms.ToolStripMenuItem() Me.TBThemeLoadComptability = New System.Windows.Forms.ToolStripMenuItem() Me.ToolStripSeparator6 = New System.Windows.Forms.ToolStripSeparator() - Me.mnTheme = New System.Windows.Forms.ToolStripMenuItem() Me.TBTheme = New System.Windows.Forms.ToolStripDropDownButton() + Me.mnTheme = New System.Windows.Forms.ToolStripMenuItem() Me.Timer1 = New System.Windows.Forms.Timer(Me.components) Me.Menu1 = New System.Windows.Forms.ContextMenuStrip(Me.components) Me.MInsert = New System.Windows.Forms.ToolStripMenuItem() @@ -128,6 +128,7 @@ Partial Class MainWindow Me.POBSRandom = New System.Windows.Forms.ToolStripMenuItem() Me.POBHRandom = New System.Windows.Forms.ToolStripMenuItem() Me.POBSort = New System.Windows.Forms.ToolStripMenuItem() + Me.POConvert = New System.Windows.Forms.ToolStripDropDownButton() Me.mnPreview = New System.Windows.Forms.ToolStripMenuItem() Me.mnPlayB = New System.Windows.Forms.ToolStripMenuItem() Me.mnPlay = New System.Windows.Forms.ToolStripMenuItem() @@ -136,7 +137,6 @@ Partial Class MainWindow Me.mnTechnicalErrorCheck = New System.Windows.Forms.ToolStripMenuItem() Me.mnTOTAL = New System.Windows.Forms.ToolStripMenuItem() Me.ToolStripSeparator13 = New System.Windows.Forms.ToolStripSeparator() - Me.POConvert = New System.Windows.Forms.ToolStripDropDownButton() Me.TBMain = New System.Windows.Forms.ToolStrip() Me.TBNew = New System.Windows.Forms.ToolStripButton() Me.TBOpen = New System.Windows.Forms.ToolStripSplitButton() @@ -381,6 +381,7 @@ Partial Class MainWindow Me.POptionsScroll = New System.Windows.Forms.Panel() Me.TimerInternalPlay = New System.Windows.Forms.Timer(Me.components) Me.TimerPreviewNote = New System.Windows.Forms.Timer(Me.components) + Me.mnOpenTemplate = New System.Windows.Forms.ToolStripMenuItem() Me.cmnLanguage.SuspendLayout() Me.cmnTheme.SuspendLayout() Me.Menu1.SuspendLayout() @@ -465,7 +466,7 @@ Partial Class MainWindow ' Me.cmnLanguage.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.TBLangDef, Me.TBLangRefresh, Me.ToolStripSeparator9}) Me.cmnLanguage.Name = "cmnLanguage" - Me.cmnLanguage.OwnerItem = Me.mnLanguage + Me.cmnLanguage.OwnerItem = Me.TBLanguage Me.cmnLanguage.Size = New System.Drawing.Size(121, 54) ' 'TBLangDef @@ -486,6 +487,14 @@ Partial Class MainWindow Me.ToolStripSeparator9.Name = "ToolStripSeparator9" Me.ToolStripSeparator9.Size = New System.Drawing.Size(117, 6) ' + 'mnLanguage + ' + Me.mnLanguage.DropDown = Me.cmnLanguage + Me.mnLanguage.Image = Global.iBMSC.My.Resources.Resources.x16Language + Me.mnLanguage.Name = "mnLanguage" + Me.mnLanguage.Size = New System.Drawing.Size(253, 22) + Me.mnLanguage.Text = "&Language" + ' 'TBLanguage ' Me.TBLanguage.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image @@ -496,19 +505,11 @@ Partial Class MainWindow Me.TBLanguage.Size = New System.Drawing.Size(29, 22) Me.TBLanguage.Text = "Language" ' - 'mnLanguage - ' - Me.mnLanguage.DropDown = Me.cmnLanguage - Me.mnLanguage.Image = Global.iBMSC.My.Resources.Resources.x16Language - Me.mnLanguage.Name = "mnLanguage" - Me.mnLanguage.Size = New System.Drawing.Size(253, 22) - Me.mnLanguage.Text = "&Language" - ' 'cmnTheme ' Me.cmnTheme.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.TBThemeDef, Me.TBThemeSave, Me.TBThemeRefresh, Me.TBThemeLoadComptability, Me.ToolStripSeparator6}) Me.cmnTheme.Name = "cmnLanguage" - Me.cmnTheme.OwnerItem = Me.TBTheme + Me.cmnTheme.OwnerItem = Me.mnTheme Me.cmnTheme.Size = New System.Drawing.Size(246, 98) ' 'TBThemeDef @@ -542,14 +543,6 @@ Partial Class MainWindow Me.ToolStripSeparator6.Name = "ToolStripSeparator6" Me.ToolStripSeparator6.Size = New System.Drawing.Size(242, 6) ' - 'mnTheme - ' - Me.mnTheme.DropDown = Me.cmnTheme - Me.mnTheme.Image = Global.iBMSC.My.Resources.Resources.x16Theme - Me.mnTheme.Name = "mnTheme" - Me.mnTheme.Size = New System.Drawing.Size(253, 22) - Me.mnTheme.Text = "&Theme" - ' 'TBTheme ' Me.TBTheme.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image @@ -560,6 +553,14 @@ Partial Class MainWindow Me.TBTheme.Size = New System.Drawing.Size(29, 22) Me.TBTheme.Text = "Theme" ' + 'mnTheme + ' + Me.mnTheme.DropDown = Me.cmnTheme + Me.mnTheme.Image = Global.iBMSC.My.Resources.Resources.x16Theme + Me.mnTheme.Name = "mnTheme" + Me.mnTheme.Size = New System.Drawing.Size(253, 22) + Me.mnTheme.Text = "&Theme" + ' 'Timer1 ' Me.Timer1.Interval = 15 @@ -604,7 +605,7 @@ Partial Class MainWindow ' 'mnFile ' - Me.mnFile.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.mnNew, Me.mnOpen, Me.mnImportSM, Me.mnImportIBMSC, Me.ToolStripSeparator14, Me.mnSave, Me.mnSaveAs, Me.mnExport, Me.ToolStripSeparator15, Me.mnOpenR0, Me.mnOpenR1, Me.mnOpenR2, Me.mnOpenR3, Me.mnOpenR4, Me.ToolStripSeparator16, Me.mnQuit}) + Me.mnFile.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.mnNew, Me.mnOpen, Me.mnOpenTemplate, Me.mnImportSM, Me.mnImportIBMSC, Me.ToolStripSeparator14, Me.mnSave, Me.mnSaveAs, Me.mnExport, Me.ToolStripSeparator15, Me.mnOpenR0, Me.mnOpenR1, Me.mnOpenR2, Me.mnOpenR3, Me.mnOpenR4, Me.ToolStripSeparator16, Me.mnQuit}) Me.mnFile.Name = "mnFile" Me.mnFile.Size = New System.Drawing.Size(37, 19) Me.mnFile.Text = "&File" @@ -1166,7 +1167,7 @@ Partial Class MainWindow ' Me.cmnConversion.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.POBLong, Me.POBShort, Me.POBLongShort, Me.ToolStripSeparator10, Me.POBHidden, Me.POBVisible, Me.POBHiddenVisible, Me.ToolStripSeparator11, Me.POBModify, Me.POBMirror, Me.POBFlip, Me.POBRandom, Me.POBRRandom, Me.POBSRandom, Me.POBHRandom, Me.POBSort}) Me.cmnConversion.Name = "cmnLanguage" - Me.cmnConversion.OwnerItem = Me.POConvert + Me.cmnConversion.OwnerItem = Me.mnConversion Me.cmnConversion.Size = New System.Drawing.Size(222, 324) ' 'POBLong @@ -1279,6 +1280,16 @@ Partial Class MainWindow Me.POBSort.Size = New System.Drawing.Size(221, 22) Me.POBSort.Text = "S&ort" ' + 'POConvert + ' + Me.POConvert.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image + Me.POConvert.DropDown = Me.cmnConversion + Me.POConvert.Image = Global.iBMSC.My.Resources.Resources.ConvertNotes + Me.POConvert.ImageTransparentColor = System.Drawing.Color.Magenta + Me.POConvert.Name = "POConvert" + Me.POConvert.Size = New System.Drawing.Size(29, 22) + Me.POConvert.Text = "Convert Notes" + ' 'mnPreview ' Me.mnPreview.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.mnPlayB, Me.mnPlay, Me.mnStop}) @@ -1336,16 +1347,6 @@ Partial Class MainWindow Me.ToolStripSeparator13.Name = "ToolStripSeparator13" Me.ToolStripSeparator13.Size = New System.Drawing.Size(247, 6) ' - 'POConvert - ' - Me.POConvert.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image - Me.POConvert.DropDown = Me.cmnConversion - Me.POConvert.Image = Global.iBMSC.My.Resources.Resources.ConvertNotes - Me.POConvert.ImageTransparentColor = System.Drawing.Color.Magenta - Me.POConvert.Name = "POConvert" - Me.POConvert.Size = New System.Drawing.Size(29, 22) - Me.POConvert.Text = "Convert Notes" - ' 'TBMain ' Me.TBMain.AccessibleRole = System.Windows.Forms.AccessibleRole.ToolBar @@ -4261,6 +4262,15 @@ Partial Class MainWindow ' Me.TimerPreviewNote.Interval = 1 ' + 'mnOpenTemplate + ' + Me.mnOpenTemplate.Image = Global.iBMSC.My.Resources.Resources.x16Open + Me.mnOpenTemplate.Name = "mnOpenTemplate" + Me.mnOpenTemplate.ShortcutKeys = CType(((System.Windows.Forms.Keys.Control Or System.Windows.Forms.Keys.Alt) _ + Or System.Windows.Forms.Keys.O), System.Windows.Forms.Keys) + Me.mnOpenTemplate.Size = New System.Drawing.Size(240, 22) + Me.mnOpenTemplate.Text = "Open &Template" + ' 'MainWindow ' Me.AllowDrop = True @@ -4751,4 +4761,5 @@ Partial Class MainWindow Friend WithEvents mnTechnicalErrorCheck As ToolStripMenuItem Friend WithEvents mnTOTAL As ToolStripMenuItem Friend WithEvents ToolStripSeparator13 As ToolStripSeparator + Friend WithEvents mnOpenTemplate As ToolStripMenuItem End Class diff --git a/iBMSC/MainWindow.vb b/iBMSC/MainWindow.vb index 029164880..8938e8fe6 100644 --- a/iBMSC/MainWindow.vb +++ b/iBMSC/MainWindow.vb @@ -52,6 +52,7 @@ Public Class MainWindow Dim Notes() As Note = {New Note(niBPM, -1, 1200000, 0, False)} + Dim NotesTemplate() As Note = {New Note(niBPM, -1, 1200000, 0, False)} Dim mColumn(999) As Integer '0 = no column, 1 = 1 column, etc. Dim GreatestVPosition As Double '+ 2000 = -VS.Minimum @@ -72,6 +73,7 @@ Public Class MainWindow Dim BPMx1296 As Boolean = False Dim STOPx1296 As Boolean = False Dim AudioLine As Boolean = True + Dim TemplateSnapToVPosition As Boolean = False Dim IsInitializing As Boolean = True Dim FirstMouseEnter As Boolean = True @@ -92,13 +94,10 @@ Public Class MainWindow 'Dim TitlePath As New Drawing2D.GraphicsPath Dim InitPath As String = "" Dim IsSaved As Boolean = True - Dim GhostMode As Integer = 0 - ' Ghost mode - ' 0 - Default, ghost notes entirely uneditable - ' 1 - Ghost notes loaded with expectation of editing them - ' 2 - Ghost notes loaded as main notes and main notes temporarily changed to ghost notes + Dim GhostMode As Integer = 0 ' 0 - Default, ghost notes entirely uneditable, 1 - Ghost notes loaded with expectation of editing them, 2 - Ghost notes loaded as main notes and main notes temporarily changed to ghost notes Dim GhostExpansionModify As Boolean = False Dim GhostEdit As Boolean = False + Dim FileNameTemplate As String = "" 'Variables for Drag/Drop Dim DDFileName() As String = {} @@ -315,7 +314,8 @@ Public Class MainWindow New Keybinding("Move to P8", "Move note to PMS Lane 8", {"D8", "NumPad8"}, CategoryPMS), New Keybinding("Move to P9", "Move note to PMS Lane 9", {"D9", "NumPad9"}, CategoryPMS), _ ' Miscellaneous BMS - New Keybinding("Move to BGM", "Move to BGM Lane", {"D0", "NumPad0"}), + New Keybinding("Move to BGM", "Move note to BGM Lane", {"D0", "NumPad0"}), + New Keybinding("Move to Template Position", "Move note to Template Position if available", {"P"}), New Keybinding("Disable Vertical Moves", "Disable vertical moves", {"D"}), New Keybinding("Snap to Grid", "Snap to grid", {"G"}), New Keybinding("Convert to Long Note", " Long Note", {"L"}), @@ -1075,6 +1075,7 @@ Public Class MainWindow 'THLnType.Text = "1" CHLnObj.SelectedIndex = 0 GhostMode = 0 + FileNameTemplate = "" ReDim hCOM(1295) hCOMNum = 0 COverrides = Nothing @@ -1785,6 +1786,23 @@ Public Class MainWindow 'pIsSaved.Visible = Not IsSaved End Sub + Private Sub TBOpenTemplate_ButtonClick(sender As Object, e As EventArgs) Handles mnOpenTemplate.Click + Dim xDOpen As New OpenFileDialog + xDOpen.Filter = Strings.FileType._bms & "|*.bms;*.bme;*.bml;*.pms;*.txt|" & + Strings.FileType.BMS & "|*.bms|" & + Strings.FileType.BME & "|*.bme|" & + Strings.FileType.BML & "|*.bml|" & + Strings.FileType.PMS & "|*.pms|" & + Strings.FileType.TXT & "|*.txt|" & + Strings.FileType._all & "|*.*" + xDOpen.DefaultExt = "bms" + xDOpen.InitialDirectory = IIf(ExcludeFileName(FileName) = "", InitPath, ExcludeFileName(FileName)).ToString() + + If xDOpen.ShowDialog = Windows.Forms.DialogResult.Cancel Then Exit Sub + NotesTemplate = OpenBMSFunc(My.Computer.FileSystem.ReadAllText(xDOpen.FileName, TextEncoding)) + FileNameTemplate = GetFileName(xDOpen.FileName) + End Sub + Private Sub TBImportIBMSC_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBImportIBMSC.Click, mnImportIBMSC.Click 'KMouseDown = -1 ReDim SelectedNotes(-1) @@ -4048,7 +4066,7 @@ Public Class MainWindow End Select Dim xDiag As New OpGeneral(gWheel, gPgUpDn, MiddleButtonMoveMethod, xTE, CInt(192.0R / BMSGridLimit), - AutoSaveInterval, BeepWhileSaved, BPMx1296, STOPx1296, AudioLine, + AutoSaveInterval, BeepWhileSaved, BPMx1296, STOPx1296, AudioLine, TemplateSnapToVPosition, AutoFocusMouseEnter, FirstClickDisabled, ClickStopPreview, ErrorJackBPM, ErrorJackTH) If xDiag.ShowDialog() = Windows.Forms.DialogResult.OK Then @@ -4064,6 +4082,7 @@ Public Class MainWindow BPMx1296 = .cBpm1296.Checked STOPx1296 = .cStop1296.Checked AudioLine = .cAudioLine.Checked + TemplateSnapToVPosition = .cTemplateSnapToVPosition.Checked AutoFocusMouseEnter = .cMEnterFocus.Checked FirstClickDisabled = .cMClickFocus.Checked ClickStopPreview = .cMStopPreview.Checked diff --git a/iBMSC/Option Windows/OpGeneral.Designer.vb b/iBMSC/Option Windows/OpGeneral.Designer.vb index 7b5994843..e52ca683c 100644 --- a/iBMSC/Option Windows/OpGeneral.Designer.vb +++ b/iBMSC/Option Windows/OpGeneral.Designer.vb @@ -60,6 +60,7 @@ Partial Class OpGeneral Me.LabelTH = New System.Windows.Forms.Label() Me.TableLayoutPanel2 = New System.Windows.Forms.TableLayoutPanel() Me.cAudioLine = New System.Windows.Forms.CheckBox() + Me.cTemplateSnapToVPosition = New System.Windows.Forms.CheckBox() Me.TableLayoutPanel1.SuspendLayout() CType(Me.PictureBox1, System.ComponentModel.ISupportInitialize).BeginInit() CType(Me.NAutoSave, System.ComponentModel.ISupportInitialize).BeginInit() @@ -78,7 +79,7 @@ Partial Class OpGeneral Me.TableLayoutPanel1.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50.0!)) Me.TableLayoutPanel1.Controls.Add(Me.OK_Button, 0, 0) Me.TableLayoutPanel1.Controls.Add(Me.Cancel_Button, 1, 0) - Me.TableLayoutPanel1.Location = New System.Drawing.Point(229, 527) + Me.TableLayoutPanel1.Location = New System.Drawing.Point(229, 552) Me.TableLayoutPanel1.Name = "TableLayoutPanel1" Me.TableLayoutPanel1.RowCount = 1 Me.TableLayoutPanel1.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50.0!)) @@ -111,7 +112,7 @@ Partial Class OpGeneral Me.CWheel.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList Me.CWheel.FormattingEnabled = True Me.CWheel.Items.AddRange(New Object() {"1", "1 / 2", "1 / 3", "1 / 4"}) - Me.CWheel.Location = New System.Drawing.Point(154, 333) + Me.CWheel.Location = New System.Drawing.Point(154, 358) Me.CWheel.Name = "CWheel" Me.CWheel.Size = New System.Drawing.Size(237, 23) Me.CWheel.TabIndex = 101 @@ -130,7 +131,7 @@ Partial Class OpGeneral ' Me.Label1.Anchor = CType(((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left) _ Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) - Me.Label1.Location = New System.Drawing.Point(12, 335) + Me.Label1.Location = New System.Drawing.Point(12, 360) Me.Label1.Name = "Label1" Me.Label1.Size = New System.Drawing.Size(136, 17) Me.Label1.TabIndex = 100 @@ -183,7 +184,7 @@ Partial Class OpGeneral Me.PictureBox1.Anchor = CType(((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left) _ Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) Me.PictureBox1.BackColor = System.Drawing.Color.FromArgb(CType(CType(64, Byte), Integer), CType(CType(64, Byte), Integer), CType(CType(64, Byte), Integer)) - Me.PictureBox1.Location = New System.Drawing.Point(20, 317) + Me.PictureBox1.Location = New System.Drawing.Point(20, 342) Me.PictureBox1.Name = "PictureBox1" Me.PictureBox1.Size = New System.Drawing.Size(375, 1) Me.PictureBox1.TabIndex = 47 @@ -218,7 +219,7 @@ Partial Class OpGeneral Me.cMEnterFocus.Anchor = CType(((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left) _ Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) Me.cMEnterFocus.AutoSize = True - Me.cMEnterFocus.Location = New System.Drawing.Point(34, 443) + Me.cMEnterFocus.Location = New System.Drawing.Point(34, 468) Me.cMEnterFocus.Name = "cMEnterFocus" Me.cMEnterFocus.Size = New System.Drawing.Size(322, 19) Me.cMEnterFocus.TabIndex = 106 @@ -230,7 +231,7 @@ Partial Class OpGeneral Me.cMClickFocus.Anchor = CType(((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left) _ Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) Me.cMClickFocus.AutoSize = True - Me.cMClickFocus.Location = New System.Drawing.Point(34, 468) + Me.cMClickFocus.Location = New System.Drawing.Point(34, 493) Me.cMClickFocus.Name = "cMClickFocus" Me.cMClickFocus.Size = New System.Drawing.Size(293, 19) Me.cMClickFocus.TabIndex = 107 @@ -259,7 +260,7 @@ Partial Class OpGeneral ' Me.Label5.Anchor = CType(((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left) _ Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) - Me.Label5.Location = New System.Drawing.Point(12, 364) + Me.Label5.Location = New System.Drawing.Point(12, 389) Me.Label5.Name = "Label5" Me.Label5.Size = New System.Drawing.Size(136, 17) Me.Label5.TabIndex = 102 @@ -273,7 +274,7 @@ Partial Class OpGeneral Me.CPgUpDn.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList Me.CPgUpDn.FormattingEnabled = True Me.CPgUpDn.Items.AddRange(New Object() {"8", "6", "4", "3", "2", "1", "1 / 2"}) - Me.CPgUpDn.Location = New System.Drawing.Point(154, 362) + Me.CPgUpDn.Location = New System.Drawing.Point(154, 387) Me.CPgUpDn.Name = "CPgUpDn" Me.CPgUpDn.Size = New System.Drawing.Size(237, 23) Me.CPgUpDn.TabIndex = 103 @@ -323,7 +324,7 @@ Partial Class OpGeneral Me.cMStopPreview.AutoSize = True Me.cMStopPreview.Checked = True Me.cMStopPreview.CheckState = System.Windows.Forms.CheckState.Checked - Me.cMStopPreview.Location = New System.Drawing.Point(34, 493) + Me.cMStopPreview.Location = New System.Drawing.Point(34, 518) Me.cMStopPreview.Name = "cMStopPreview" Me.cMStopPreview.Size = New System.Drawing.Size(253, 19) Me.cMStopPreview.TabIndex = 108 @@ -371,7 +372,7 @@ Partial Class OpGeneral ' Me.Label3.Anchor = CType(((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left) _ Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) - Me.Label3.Location = New System.Drawing.Point(12, 392) + Me.Label3.Location = New System.Drawing.Point(12, 417) Me.Label3.Name = "Label3" Me.Label3.Size = New System.Drawing.Size(136, 17) Me.Label3.TabIndex = 104 @@ -387,7 +388,7 @@ Partial Class OpGeneral Me.FlowLayoutPanel1.Controls.Add(Me.rMiddleAuto) Me.FlowLayoutPanel1.Controls.Add(Me.rMiddleDrag) Me.FlowLayoutPanel1.FlowDirection = System.Windows.Forms.FlowDirection.TopDown - Me.FlowLayoutPanel1.Location = New System.Drawing.Point(154, 391) + Me.FlowLayoutPanel1.Location = New System.Drawing.Point(154, 416) Me.FlowLayoutPanel1.Name = "FlowLayoutPanel1" Me.FlowLayoutPanel1.Size = New System.Drawing.Size(141, 38) Me.FlowLayoutPanel1.TabIndex = 105 @@ -496,12 +497,25 @@ Partial Class OpGeneral Me.cAudioLine.Text = "Display audio lines during note preview" Me.cAudioLine.UseVisualStyleBackColor = True ' + 'cTemplateSnapToVPosition + ' + Me.cTemplateSnapToVPosition.Anchor = CType(((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Left) _ + Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) + Me.cTemplateSnapToVPosition.AutoSize = True + Me.cTemplateSnapToVPosition.Location = New System.Drawing.Point(32, 306) + Me.cTemplateSnapToVPosition.Name = "cTemplateSnapToVPosition" + Me.cTemplateSnapToVPosition.Size = New System.Drawing.Size(326, 19) + Me.cTemplateSnapToVPosition.TabIndex = 111 + Me.cTemplateSnapToVPosition.Text = "Snap to Vertical Position for Moving to Template Position" + Me.cTemplateSnapToVPosition.UseVisualStyleBackColor = True + ' 'OpGeneral ' Me.AcceptButton = Me.OK_Button Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None Me.CancelButton = Me.Cancel_Button - Me.ClientSize = New System.Drawing.Size(413, 574) + Me.ClientSize = New System.Drawing.Size(413, 599) + Me.Controls.Add(Me.cTemplateSnapToVPosition) Me.Controls.Add(Me.TableLayoutPanel2) Me.Controls.Add(Me.FlowLayoutPanel1) Me.Controls.Add(Me.Label3) @@ -591,4 +605,5 @@ Partial Class OpGeneral Friend WithEvents LabelTH As Label Friend WithEvents TableLayoutPanel2 As TableLayoutPanel Friend WithEvents cAudioLine As CheckBox + Friend WithEvents cTemplateSnapToVPosition As CheckBox End Class diff --git a/iBMSC/Option Windows/OpGeneral.vb b/iBMSC/Option Windows/OpGeneral.vb index a1549e430..d89d5864e 100644 --- a/iBMSC/Option Windows/OpGeneral.vb +++ b/iBMSC/Option Windows/OpGeneral.vb @@ -55,7 +55,7 @@ Public Class OpGeneral End Sub Public Sub New(ByVal xMsWheel As Integer, ByVal xPgUpDn As Integer, ByVal xMiddleButton As Integer, ByVal xTextEncoding As Integer, ByVal xGridPartition As Integer, - ByVal xAutoSave As Integer, ByVal xBeep As Boolean, ByVal xBPMx As Boolean, ByVal xSTOPx As Boolean, ByVal xAudioLine As Boolean, + ByVal xAutoSave As Integer, ByVal xBeep As Boolean, ByVal xBPMx As Boolean, ByVal xSTOPx As Boolean, ByVal xAudioLine As Boolean, ByVal xTemplateSnapToVPosition As Boolean, ByVal xMFEnter As Boolean, ByVal xMFClick As Boolean, ByVal xMStopPreview As Boolean, ByVal xJackBPM As Double, ByVal xJackTH As Double) InitializeComponent() @@ -96,6 +96,7 @@ Public Class OpGeneral cBpm1296.Checked = xBPMx cStop1296.Checked = xSTOPx cAudioLine.Checked = xAudioLine + cTemplateSnapToVPosition.Checked = xTemplateSnapToVPosition cMEnterFocus.Checked = xMFEnter cMClickFocus.Checked = xMFClick cMStopPreview.Checked = xMStopPreview diff --git a/iBMSC/PanelEvents.vb b/iBMSC/PanelEvents.vb index 50630c81e..decc78f61 100644 --- a/iBMSC/PanelEvents.vb +++ b/iBMSC/PanelEvents.vb @@ -215,7 +215,6 @@ Partial Public Class MainWindow Case Keys.Subtract DecreaseCurrentWav() - End Select ' Turn keycode into string @@ -316,6 +315,8 @@ Partial Public Class MainWindow Case "Move to BGM" MoveToBGM(xUndo, xRedo) + Case "Move to Template Position" + MoveToTemplatePosition(xUndo, xRedo) Case "Disable Vertical Moves" CGDisableVertical.Checked = Not CGDisableVertical.Checked Case "Snap to Grid" @@ -471,6 +472,44 @@ Partial Public Class MainWindow RefreshPanelAll() End Sub + Private Sub MoveToTemplatePosition(xUndo As UndoRedo.LinkedURCmd, xRedo As UndoRedo.LinkedURCmd) + Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo + For xI2 As Integer = 1 To UBound(Notes) + If Not Notes(xI2).Selected Or Notes(xI2).Ghost Then Continue For + Dim xTargetPositions = FindNoteTemplatePosition(Notes(xI2)) + If xTargetPositions Is Nothing Then Continue For + + Dim xTargetColumn = CInt(xTargetPositions(0)) + Dim xTargetVPosition = CInt(IIf(TemplateSnapToVPosition, xTargetPositions(1), Notes(xI2).VPosition)) + RedoMoveNote(Notes(xI2), xTargetColumn, xTargetVPosition, xUndo, xRedo) + Notes(xI2).ColumnIndex = xTargetColumn + Notes(xI2).VPosition = xTargetVPosition + Next + AddUndo(xUndo, xBaseRedo.Next) + UpdatePairing() + CalculateTotalPlayableNotes() + RefreshPanelAll() + End Sub + + Private Function FindNoteTemplatePosition(ByVal Note As Note) As double() + Dim VPosDiff As Double = 192 * 999 + Dim VPosition As Double + Dim xTargetColumn As Integer = 0 + For xI = 1 To UBound(NotesTemplate) + If NotesTemplate(xI).Value <> Note.Value Then Continue For + + Dim Diff As Double = Math.Abs(NotesTemplate(xI).VPosition - Note.VPosition) + If Diff < VPosDiff Then + VPosDiff = Diff + xTargetColumn = NotesTemplate(xI).ColumnIndex + VPosition = NotesTemplate(xI).VPosition + Else + Return {xTargetColumn, VPosition} + End If + Next + If VPosDiff <> 192 * 999 Then Return {xTargetColumn, VPosition} Else Return Nothing + End Function + Private Sub PMainInResize(ByVal sender As Object, ByVal e As System.EventArgs) Handles PMainIn.Resize, PMainInL.Resize, PMainInR.Resize If Not Me.Created Then Exit Sub From 7dd4f521b9bce74fc05c95878cb7121c74450685 Mon Sep 17 00:00:00 2001 From: psyk2642 <60137590+psyk2642@users.noreply.github.com> Date: Wed, 4 May 2022 16:56:03 +0800 Subject: [PATCH 133/257] Increased number of undo's to 200 + Code Stuff --- README.md | 13 +++-- iBMSC/EditorUndoRedo.vb | 4 +- iBMSC/MainWindow.designer.vb | 84 ++++++++++++++-------------- iBMSC/MainWindow.vb | 74 ++++++++++++------------ iBMSC/My Project/AssemblyInfo.vb | 4 +- iBMSC/Option Windows/OpKeybinding.vb | 16 +++--- iBMSC/PanelEvents.vb | 8 +-- 7 files changed, 104 insertions(+), 99 deletions(-) diff --git a/README.md b/README.md index d088c1d39..f5cbc0f81 100644 --- a/README.md +++ b/README.md @@ -29,8 +29,8 @@ Listed in the order added. * Added note search function (goto measure except it's goto note). One note per VPosition only. * Added sort function. Selected notes are sorted based on their VPosition and Value. * Added mBMplay as a default player. -* Added support for #RANDOM. Supports expansion field and main data field only. Not tested thoroughly, nested #RANDOM in "Modify Section" only. Accessible via the "Select Section" button in Expansion Code or via Ctrl+Alt+R. -* Added color overriding options where you can specify a range of notes to appear a specific color, such as red notes for drums and green notes for the piano. Accessible via the Options tab or via Shift+F12. +* Added basic support for #RANDOM. Supports expansion field and main data field only. Not tested thoroughly, nested #RANDOM in "Modify Section" only. Accessible via the "Select Section" button in Expansion Code or via Ctrl+Alt+R. +* Added color overriding options where you can specify a range of notes to appear a specific color (or a color gradient), such as red notes for drums and green notes for the piano. Accessible via the Options tab or via Shift+F12. * Added comment notes. Comment notes will be saved as #ECMD and #ECOM within the same bms/pms file. Not tested thoroughly. * The window will now follow notes being moved by arrow keys. * When creating LNs in NT mode, the VPosition will snap to the highlighted note if any. @@ -44,11 +44,12 @@ Listed in the order added. * Added support for rebinding keys. * Added #TOTAL Options window to set a recommended #TOTAL value based on the selected calculation formula. * Added lines to scroll along the panel while previewing a keysound and to indicate the keysound's end point. +* Added support to move notes to their template position. ## Keyboard shortcuts -* Changed keybinding to allow note placement between D1 and D8: - * Numpad keys are now assigned to 2P lanes. - * QWERTYUI keys are also assigned to 2P lanes. +* While rebinding keys is now supported, the default keybinding has also been changed to allow note placement between D1 and D8 or only on PMS lanes in PMS mode: + * Numpad keys are assigned to 2P lanes when making DP charts. + * QWERTYUI keys are also assigned to 2P lanes when making DP charts. * 1 to 7 are now assigned to A2 to A8, and 8 is now assigned to A1. * Ctrl+1 to Ctrl+8 are now assigned to D1-D8. * For PMS: Number keys 1-9 assign the notes to PMS lanes when a PMS theme is used. @@ -79,7 +80,7 @@ Listed in the order added. * Added shortcut for inserting/removing space with Time Selection Tool (Ctrl+Insert for measure only, Shift+Insert for notes only, and Ctrl+Shift+Insert for both) * Added shortcut for techincal error check (Ctrl+Alt+E by default) * Added shortcut for keybinding options (Shift+F10) -* Added experimental feature shortcuts (Preview highlighted notes - Shift+F4, Get VPosition from Time - Shift+F2) +* Added experimental feature shortcuts (Preview highlighted notes - Shift+F4) ## New dialog/option boxes diff --git a/iBMSC/EditorUndoRedo.vb b/iBMSC/EditorUndoRedo.vb index 1d1d91e03..6bc657931 100644 --- a/iBMSC/EditorUndoRedo.vb +++ b/iBMSC/EditorUndoRedo.vb @@ -193,8 +193,8 @@ Partial Public Class MainWindow ' ClearURReference(sRedo(xI1)) 'Next - ReDim sUndo(99) - ReDim sRedo(99) + ReDim sUndo(UndoRedoCount) + ReDim sRedo(UndoRedoCount) sUndo(0) = New UndoRedo.NoOperation sUndo(1) = New UndoRedo.NoOperation sRedo(0) = New UndoRedo.NoOperation diff --git a/iBMSC/MainWindow.designer.vb b/iBMSC/MainWindow.designer.vb index f3a9e4ea5..98fcab674 100644 --- a/iBMSC/MainWindow.designer.vb +++ b/iBMSC/MainWindow.designer.vb @@ -25,16 +25,16 @@ Partial Class MainWindow Me.TBLangDef = New System.Windows.Forms.ToolStripMenuItem() Me.TBLangRefresh = New System.Windows.Forms.ToolStripMenuItem() Me.ToolStripSeparator9 = New System.Windows.Forms.ToolStripSeparator() - Me.mnLanguage = New System.Windows.Forms.ToolStripMenuItem() Me.TBLanguage = New System.Windows.Forms.ToolStripDropDownButton() + Me.mnLanguage = New System.Windows.Forms.ToolStripMenuItem() Me.cmnTheme = New System.Windows.Forms.ContextMenuStrip(Me.components) Me.TBThemeDef = New System.Windows.Forms.ToolStripMenuItem() Me.TBThemeSave = New System.Windows.Forms.ToolStripMenuItem() Me.TBThemeRefresh = New System.Windows.Forms.ToolStripMenuItem() Me.TBThemeLoadComptability = New System.Windows.Forms.ToolStripMenuItem() Me.ToolStripSeparator6 = New System.Windows.Forms.ToolStripSeparator() - Me.TBTheme = New System.Windows.Forms.ToolStripDropDownButton() Me.mnTheme = New System.Windows.Forms.ToolStripMenuItem() + Me.TBTheme = New System.Windows.Forms.ToolStripDropDownButton() Me.Timer1 = New System.Windows.Forms.Timer(Me.components) Me.Menu1 = New System.Windows.Forms.ContextMenuStrip(Me.components) Me.MInsert = New System.Windows.Forms.ToolStripMenuItem() @@ -44,6 +44,7 @@ Partial Class MainWindow Me.mnFile = New System.Windows.Forms.ToolStripMenuItem() Me.mnNew = New System.Windows.Forms.ToolStripMenuItem() Me.mnOpen = New System.Windows.Forms.ToolStripMenuItem() + Me.mnOpenTemplate = New System.Windows.Forms.ToolStripMenuItem() Me.mnImportSM = New System.Windows.Forms.ToolStripMenuItem() Me.mnImportIBMSC = New System.Windows.Forms.ToolStripMenuItem() Me.ToolStripSeparator14 = New System.Windows.Forms.ToolStripSeparator() @@ -128,7 +129,6 @@ Partial Class MainWindow Me.POBSRandom = New System.Windows.Forms.ToolStripMenuItem() Me.POBHRandom = New System.Windows.Forms.ToolStripMenuItem() Me.POBSort = New System.Windows.Forms.ToolStripMenuItem() - Me.POConvert = New System.Windows.Forms.ToolStripDropDownButton() Me.mnPreview = New System.Windows.Forms.ToolStripMenuItem() Me.mnPlayB = New System.Windows.Forms.ToolStripMenuItem() Me.mnPlay = New System.Windows.Forms.ToolStripMenuItem() @@ -137,6 +137,7 @@ Partial Class MainWindow Me.mnTechnicalErrorCheck = New System.Windows.Forms.ToolStripMenuItem() Me.mnTOTAL = New System.Windows.Forms.ToolStripMenuItem() Me.ToolStripSeparator13 = New System.Windows.Forms.ToolStripSeparator() + Me.POConvert = New System.Windows.Forms.ToolStripDropDownButton() Me.TBMain = New System.Windows.Forms.ToolStrip() Me.TBNew = New System.Windows.Forms.ToolStripButton() Me.TBOpen = New System.Windows.Forms.ToolStripSplitButton() @@ -381,7 +382,6 @@ Partial Class MainWindow Me.POptionsScroll = New System.Windows.Forms.Panel() Me.TimerInternalPlay = New System.Windows.Forms.Timer(Me.components) Me.TimerPreviewNote = New System.Windows.Forms.Timer(Me.components) - Me.mnOpenTemplate = New System.Windows.Forms.ToolStripMenuItem() Me.cmnLanguage.SuspendLayout() Me.cmnTheme.SuspendLayout() Me.Menu1.SuspendLayout() @@ -466,7 +466,7 @@ Partial Class MainWindow ' Me.cmnLanguage.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.TBLangDef, Me.TBLangRefresh, Me.ToolStripSeparator9}) Me.cmnLanguage.Name = "cmnLanguage" - Me.cmnLanguage.OwnerItem = Me.TBLanguage + Me.cmnLanguage.OwnerItem = Me.mnLanguage Me.cmnLanguage.Size = New System.Drawing.Size(121, 54) ' 'TBLangDef @@ -487,14 +487,6 @@ Partial Class MainWindow Me.ToolStripSeparator9.Name = "ToolStripSeparator9" Me.ToolStripSeparator9.Size = New System.Drawing.Size(117, 6) ' - 'mnLanguage - ' - Me.mnLanguage.DropDown = Me.cmnLanguage - Me.mnLanguage.Image = Global.iBMSC.My.Resources.Resources.x16Language - Me.mnLanguage.Name = "mnLanguage" - Me.mnLanguage.Size = New System.Drawing.Size(253, 22) - Me.mnLanguage.Text = "&Language" - ' 'TBLanguage ' Me.TBLanguage.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image @@ -505,11 +497,19 @@ Partial Class MainWindow Me.TBLanguage.Size = New System.Drawing.Size(29, 22) Me.TBLanguage.Text = "Language" ' + 'mnLanguage + ' + Me.mnLanguage.DropDown = Me.cmnLanguage + Me.mnLanguage.Image = Global.iBMSC.My.Resources.Resources.x16Language + Me.mnLanguage.Name = "mnLanguage" + Me.mnLanguage.Size = New System.Drawing.Size(253, 22) + Me.mnLanguage.Text = "&Language" + ' 'cmnTheme ' Me.cmnTheme.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.TBThemeDef, Me.TBThemeSave, Me.TBThemeRefresh, Me.TBThemeLoadComptability, Me.ToolStripSeparator6}) Me.cmnTheme.Name = "cmnLanguage" - Me.cmnTheme.OwnerItem = Me.mnTheme + Me.cmnTheme.OwnerItem = Me.TBTheme Me.cmnTheme.Size = New System.Drawing.Size(246, 98) ' 'TBThemeDef @@ -543,6 +543,14 @@ Partial Class MainWindow Me.ToolStripSeparator6.Name = "ToolStripSeparator6" Me.ToolStripSeparator6.Size = New System.Drawing.Size(242, 6) ' + 'mnTheme + ' + Me.mnTheme.DropDown = Me.cmnTheme + Me.mnTheme.Image = Global.iBMSC.My.Resources.Resources.x16Theme + Me.mnTheme.Name = "mnTheme" + Me.mnTheme.Size = New System.Drawing.Size(253, 22) + Me.mnTheme.Text = "&Theme" + ' 'TBTheme ' Me.TBTheme.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image @@ -553,14 +561,6 @@ Partial Class MainWindow Me.TBTheme.Size = New System.Drawing.Size(29, 22) Me.TBTheme.Text = "Theme" ' - 'mnTheme - ' - Me.mnTheme.DropDown = Me.cmnTheme - Me.mnTheme.Image = Global.iBMSC.My.Resources.Resources.x16Theme - Me.mnTheme.Name = "mnTheme" - Me.mnTheme.Size = New System.Drawing.Size(253, 22) - Me.mnTheme.Text = "&Theme" - ' 'Timer1 ' Me.Timer1.Interval = 15 @@ -626,6 +626,15 @@ Partial Class MainWindow Me.mnOpen.Size = New System.Drawing.Size(240, 22) Me.mnOpen.Text = "&Open" ' + 'mnOpenTemplate + ' + Me.mnOpenTemplate.Image = Global.iBMSC.My.Resources.Resources.x16Open + Me.mnOpenTemplate.Name = "mnOpenTemplate" + Me.mnOpenTemplate.ShortcutKeys = CType(((System.Windows.Forms.Keys.Control Or System.Windows.Forms.Keys.Alt) _ + Or System.Windows.Forms.Keys.O), System.Windows.Forms.Keys) + Me.mnOpenTemplate.Size = New System.Drawing.Size(240, 22) + Me.mnOpenTemplate.Text = "Open &Template" + ' 'mnImportSM ' Me.mnImportSM.Image = Global.iBMSC.My.Resources.Resources.x16Import2 @@ -1168,7 +1177,7 @@ Partial Class MainWindow Me.cmnConversion.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.POBLong, Me.POBShort, Me.POBLongShort, Me.ToolStripSeparator10, Me.POBHidden, Me.POBVisible, Me.POBHiddenVisible, Me.ToolStripSeparator11, Me.POBModify, Me.POBMirror, Me.POBFlip, Me.POBRandom, Me.POBRRandom, Me.POBSRandom, Me.POBHRandom, Me.POBSort}) Me.cmnConversion.Name = "cmnLanguage" Me.cmnConversion.OwnerItem = Me.mnConversion - Me.cmnConversion.Size = New System.Drawing.Size(222, 324) + Me.cmnConversion.Size = New System.Drawing.Size(222, 346) ' 'POBLong ' @@ -1280,16 +1289,6 @@ Partial Class MainWindow Me.POBSort.Size = New System.Drawing.Size(221, 22) Me.POBSort.Text = "S&ort" ' - 'POConvert - ' - Me.POConvert.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image - Me.POConvert.DropDown = Me.cmnConversion - Me.POConvert.Image = Global.iBMSC.My.Resources.Resources.ConvertNotes - Me.POConvert.ImageTransparentColor = System.Drawing.Color.Magenta - Me.POConvert.Name = "POConvert" - Me.POConvert.Size = New System.Drawing.Size(29, 22) - Me.POConvert.Text = "Convert Notes" - ' 'mnPreview ' Me.mnPreview.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.mnPlayB, Me.mnPlay, Me.mnStop}) @@ -1347,6 +1346,16 @@ Partial Class MainWindow Me.ToolStripSeparator13.Name = "ToolStripSeparator13" Me.ToolStripSeparator13.Size = New System.Drawing.Size(247, 6) ' + 'POConvert + ' + Me.POConvert.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image + Me.POConvert.DropDown = Me.cmnConversion + Me.POConvert.Image = Global.iBMSC.My.Resources.Resources.ConvertNotes + Me.POConvert.ImageTransparentColor = System.Drawing.Color.Magenta + Me.POConvert.Name = "POConvert" + Me.POConvert.Size = New System.Drawing.Size(29, 22) + Me.POConvert.Text = "Convert Notes" + ' 'TBMain ' Me.TBMain.AccessibleRole = System.Windows.Forms.AccessibleRole.ToolBar @@ -4262,15 +4271,6 @@ Partial Class MainWindow ' Me.TimerPreviewNote.Interval = 1 ' - 'mnOpenTemplate - ' - Me.mnOpenTemplate.Image = Global.iBMSC.My.Resources.Resources.x16Open - Me.mnOpenTemplate.Name = "mnOpenTemplate" - Me.mnOpenTemplate.ShortcutKeys = CType(((System.Windows.Forms.Keys.Control Or System.Windows.Forms.Keys.Alt) _ - Or System.Windows.Forms.Keys.O), System.Windows.Forms.Keys) - Me.mnOpenTemplate.Size = New System.Drawing.Size(240, 22) - Me.mnOpenTemplate.Text = "Open &Template" - ' 'MainWindow ' Me.AllowDrop = True diff --git a/iBMSC/MainWindow.vb b/iBMSC/MainWindow.vb index 8938e8fe6..83218ee77 100644 --- a/iBMSC/MainWindow.vb +++ b/iBMSC/MainWindow.vb @@ -109,8 +109,9 @@ Public Class MainWindow 'Dim SaveTheme As Boolean = True 'Variables for undo/redo - Dim sUndo(99) As UndoRedo.LinkedURCmd - Dim sRedo(99) As UndoRedo.LinkedURCmd + Dim UndoRedoCount As Integer = 200 + Dim sUndo(UndoRedoCount) As UndoRedo.LinkedURCmd + Dim sRedo(UndoRedoCount) As UndoRedo.LinkedURCmd Dim sI As Integer = 0 'Variables for select tool @@ -281,39 +282,40 @@ Public Class MainWindow End Sub End Structure - Public CategorySP As Integer = 1 - Public CategoryPMS As Integer = 2 - Public CategoryDP As Integer = 3 - Public KeybindingCategory() As Integer = {CategoryPMS, CategoryDP, CategorySP, -1} ' Order matters + Public KbCategorySP As Integer = 1 + Public KbCategoryPMS As Integer = 2 + Public KbCategoryDP As Integer = 3 + Public KbCategoryHidden As Integer = 0 + Public KbCategory() As Integer = {KbCategoryPMS, KbCategoryDP, KbCategorySP, KbCategoryHidden, -1} ' Order matters Public KeybindingsInit() As Keybinding = { ' SP Note Assignments - New Keybinding("Move to A2", "Move note to 1P Lane 1", {"D1", "NumPad1"}, CategorySP), - New Keybinding("Move to A3", "Move note to 1P Lane 2", {"D2", "NumPad2"}, CategorySP), - New Keybinding("Move to A4", "Move note to 1P Lane 3", {"D3", "NumPad3"}, CategorySP), - New Keybinding("Move to A5", "Move note to 1P Lane 4", {"D4", "NumPad4"}, CategorySP), - New Keybinding("Move to A6", "Move note to 1P Lane 5", {"D5", "NumPad5"}, CategorySP), - New Keybinding("Move to A7", "Move note to 1P Lane 6", {"D6", "NumPad6"}, CategorySP), - New Keybinding("Move to A8", "Move note to 1P Lane 7", {"D7", "NumPad7"}, CategorySP), - New Keybinding("Move to A1", Strings.fopKeybinding.MDesc1PS, {"D8", "NumPad8"}, CategorySP), - _ ' DP Note Assignments - New Keybinding("Move to D1", "Move note to 2P Lane 1", {"Q", "Ctrl+D1", "NumPad1"}, CategoryDP), - New Keybinding("Move to D2", "Move note to 2P Lane 2", {"W", "Ctrl+D2", "NumPad2"}, CategoryDP), - New Keybinding("Move to D3", "Move note to 2P Lane 3", {"E", "Ctrl+D3", "NumPad3"}, CategoryDP), - New Keybinding("Move to D4", "Move note to 2P Lane 4", {"R", "Ctrl+D4", "NumPad4"}, CategoryDP), - New Keybinding("Move to D5", "Move note to 2P Lane 5", {"T", "Ctrl+D5", "NumPad5"}, CategoryDP), - New Keybinding("Move to D6", "Move note to 2P Lane 6", {"Y", "Ctrl+D6", "NumPad6"}, CategoryDP), - New Keybinding("Move to D7", "Move note to 2P Lane 7", {"U", "Ctrl+D7", "NumPad7"}, CategoryDP), - New Keybinding("Move to D8", Strings.fopKeybinding.MDesc2PS, {"I", "Ctrl+D8", "NumPad8"}, CategoryDP), - _ ' PMS Note Assignments - New Keybinding("Move to P1", "Move note to PMS Lane 1", {"D1", "NumPad1"}, CategoryPMS), - New Keybinding("Move to P2", "Move note to PMS Lane 2", {"D2", "NumPad2"}, CategoryPMS), - New Keybinding("Move to P3", "Move note to PMS Lane 3", {"D3", "NumPad3"}, CategoryPMS), - New Keybinding("Move to P4", "Move note to PMS Lane 4", {"D4", "NumPad4"}, CategoryPMS), - New Keybinding("Move to P5", "Move note to PMS Lane 5", {"D5", "NumPad5"}, CategoryPMS), - New Keybinding("Move to P6", "Move note to PMS Lane 6", {"D6", "NumPad6"}, CategoryPMS), - New Keybinding("Move to P7", "Move note to PMS Lane 7", {"D7", "NumPad7"}, CategoryPMS), - New Keybinding("Move to P8", "Move note to PMS Lane 8", {"D8", "NumPad8"}, CategoryPMS), - New Keybinding("Move to P9", "Move note to PMS Lane 9", {"D9", "NumPad9"}, CategoryPMS), - _ ' Miscellaneous BMS + New Keybinding("Move to A2", "Move note to 1P Lane 1", {"D1", "NumPad1"}, KbCategorySP), + New Keybinding("Move to A3", "Move note to 1P Lane 2", {"D2", "NumPad2"}, KbCategorySP), + New Keybinding("Move to A4", "Move note to 1P Lane 3", {"D3", "NumPad3"}, KbCategorySP), + New Keybinding("Move to A5", "Move note to 1P Lane 4", {"D4", "NumPad4"}, KbCategorySP), + New Keybinding("Move to A6", "Move note to 1P Lane 5", {"D5", "NumPad5"}, KbCategorySP), + New Keybinding("Move to A7", "Move note to 1P Lane 6", {"D6", "NumPad6"}, KbCategorySP), + New Keybinding("Move to A8", "Move note to 1P Lane 7", {"D7", "NumPad7"}, KbCategorySP), + New Keybinding("Move to A1", Strings.fopKeybinding.MDesc1PS, {"D8", "NumPad8"}, KbCategorySP), + _ ' DP Note Assignments + New Keybinding("Move to D1", "Move note to 2P Lane 1", {"Q", "Ctrl+D1", "NumPad1"}, KbCategoryDP), + New Keybinding("Move to D2", "Move note to 2P Lane 2", {"W", "Ctrl+D2", "NumPad2"}, KbCategoryDP), + New Keybinding("Move to D3", "Move note to 2P Lane 3", {"E", "Ctrl+D3", "NumPad3"}, KbCategoryDP), + New Keybinding("Move to D4", "Move note to 2P Lane 4", {"R", "Ctrl+D4", "NumPad4"}, KbCategoryDP), + New Keybinding("Move to D5", "Move note to 2P Lane 5", {"T", "Ctrl+D5", "NumPad5"}, KbCategoryDP), + New Keybinding("Move to D6", "Move note to 2P Lane 6", {"Y", "Ctrl+D6", "NumPad6"}, KbCategoryDP), + New Keybinding("Move to D7", "Move note to 2P Lane 7", {"U", "Ctrl+D7", "NumPad7"}, KbCategoryDP), + New Keybinding("Move to D8", Strings.fopKeybinding.MDesc2PS, {"I", "Ctrl+D8", "NumPad8"}, KbCategoryDP), + _ ' PMS Note Assignments + New Keybinding("Move to P1", "Move note to PMS Lane 1", {"D1", "NumPad1"}, KbCategoryPMS), + New Keybinding("Move to P2", "Move note to PMS Lane 2", {"D2", "NumPad2"}, KbCategoryPMS), + New Keybinding("Move to P3", "Move note to PMS Lane 3", {"D3", "NumPad3"}, KbCategoryPMS), + New Keybinding("Move to P4", "Move note to PMS Lane 4", {"D4", "NumPad4"}, KbCategoryPMS), + New Keybinding("Move to P5", "Move note to PMS Lane 5", {"D5", "NumPad5"}, KbCategoryPMS), + New Keybinding("Move to P6", "Move note to PMS Lane 6", {"D6", "NumPad6"}, KbCategoryPMS), + New Keybinding("Move to P7", "Move note to PMS Lane 7", {"D7", "NumPad7"}, KbCategoryPMS), + New Keybinding("Move to P8", "Move note to PMS Lane 8", {"D8", "NumPad8"}, KbCategoryPMS), + New Keybinding("Move to P9", "Move note to PMS Lane 9", {"D9", "NumPad9"}, KbCategoryPMS), + _ ' Miscellaneous BMS New Keybinding("Move to BGM", "Move note to BGM Lane", {"D0", "NumPad0"}), New Keybinding("Move to Template Position", "Move note to Template Position if available", {"P"}), New Keybinding("Disable Vertical Moves", "Disable vertical moves", {"D"}), @@ -331,7 +333,7 @@ Public Class MainWindow New Keybinding("Select All", "Select all notes", {"Ctrl+A"}), New Keybinding("Select All with Hovered Note Label", "Select all notes with highlighted note label", {"Ctrl+Shift+A"}), _ ' Experimental - New Keybinding("TBPreviewHighlighted_Click", "*EXPERIMENTAL*", {"Shift+F4"}) + New Keybinding("TBPreviewHighlighted_Click", "*EXPERIMENTAL*", {"Shift+F4"}, KbCategoryHidden) } Dim Keybindings() As Keybinding = CType(KeybindingsInit.Clone(), Keybinding()) @@ -3374,7 +3376,7 @@ Public Class MainWindow If Not Notes(xI1).Selected Or Notes(xI1).Ghost Or Notes(xI1).ColumnIndex < xniArray1(0) Or Notes(xI1).ColumnIndex > xniArray1(UBound(xniArray1)) Then xI1 += 1 : Continue Do ' Begin building array until vPosition changes vPos = Notes(xI1).VPosition - Do While xI1 <= UBound(Notes) AndAlso Math.Abs(Notes(xI1).VPosition - vPos) < ErrorJackSpeed + Do While xI1 <= UBound(Notes) AndAlso Math.Abs(GetTimeFromVPosition(Notes(xI1).VPosition) - GetTimeFromVPosition(vPos)) <= ErrorJackSpeed If Not Notes(xI1).Selected Or Notes(xI1).Ghost Or Notes(xI1).ColumnIndex < xniArray1(0) Or Notes(xI1).ColumnIndex > xniArray1(UBound(xniArray1)) Then xI1 += 1 : Continue Do ReDim Preserve xI1Arr(xI1Arr.Length) xI1Arr(UBound(xI1Arr)) = xI1 diff --git a/iBMSC/My Project/AssemblyInfo.vb b/iBMSC/My Project/AssemblyInfo.vb index 0ebb18772..415008d9e 100644 --- a/iBMSC/My Project/AssemblyInfo.vb +++ b/iBMSC/My Project/AssemblyInfo.vb @@ -30,7 +30,7 @@ Imports System.Resources ' by using the '*' as shown below: ' - - + + \ No newline at end of file diff --git a/iBMSC/Option Windows/OpKeybinding.vb b/iBMSC/Option Windows/OpKeybinding.vb index ce68924ec..8c4117968 100644 --- a/iBMSC/Option Windows/OpKeybinding.vb +++ b/iBMSC/Option Windows/OpKeybinding.vb @@ -155,7 +155,7 @@ Public Class OpKeybinding Select Case Keybinds(LVKeybinding.FocusedItem.Index).Category ' If note assignment option, check if there is shift - Case MainWindow.CategorySP, MainWindow.CategoryDP, MainWindow.CategoryPMS + Case MainWindow.KbCategorySP, MainWindow.KbCategoryDP, MainWindow.KbCategoryPMS If keyComboEvent.Contains("Shift") Then keyComboOK = False MsgBox("Error: Shift cannot be used for note assignment keybindings.") @@ -169,12 +169,12 @@ Public Class OpKeybinding ' TODO Select Case Keybinds(LVKeybinding.FocusedItem.Index).Category ' If note assignment option, check with each other in the same category - Case MainWindow.CategorySP - CategoryToIgnore = {MainWindow.CategoryDP, MainWindow.CategoryPMS} - Case MainWindow.CategoryDP - CategoryToIgnore = {MainWindow.CategorySP, MainWindow.CategoryPMS} - Case MainWindow.CategoryPMS - CategoryToIgnore = {MainWindow.CategorySP, MainWindow.CategoryDP} + Case MainWindow.KbCategorySP + CategoryToIgnore = {MainWindow.KbCategoryDP, MainWindow.KbCategoryPMS} + Case MainWindow.KbCategoryDP + CategoryToIgnore = {MainWindow.KbCategorySP, MainWindow.KbCategoryPMS} + Case MainWindow.KbCategoryPMS + CategoryToIgnore = {MainWindow.KbCategorySP, MainWindow.KbCategoryDP} End Select @@ -227,6 +227,8 @@ Public Class OpKeybinding keybindStrings = {""} End If LVArray(i).SubItems.Add(Join(keybindStrings, ", ")) + Dim x = CInt("&HF9") + If i Mod 2 = 1 Then LVArray(i).BackColor = Color.FromArgb(x, x, x) Next LVKeybinding.Items.AddRange(LVArray) diff --git a/iBMSC/PanelEvents.vb b/iBMSC/PanelEvents.vb index decc78f61..f04d47399 100644 --- a/iBMSC/PanelEvents.vb +++ b/iBMSC/PanelEvents.vb @@ -238,9 +238,9 @@ Partial Public Class MainWindow Dim keybindOptionName As String = "" ' Check for specific categories first - For Each P In KeybindingCategory - If (P = CategoryPMS AndAlso gXKeyMode <> "PMS") Or - (P = CategoryDP AndAlso gXKeyMode <> "DP") Then Continue For + For Each P In KbCategory + If (P = KbCategoryPMS AndAlso gXKeyMode <> "PMS") Or + (P = KbCategoryDP AndAlso gXKeyMode <> "DP") Then Continue For Dim keybindOptions = From k In Keybindings Where k.Category = P @@ -249,7 +249,7 @@ Partial Public Class MainWindow For Each keybind In keybindOptions Dim keyComboString = Join(keyComboEvent, "+") ' To account for per-note assignment using shift - If P = CategorySP Or P = CategoryPMS Or P = CategoryDP Then keyComboString = keyComboString.Replace("Shift+", "") + If P = KbCategorySP Or P = KbCategoryPMS Or P = KbCategoryDP Then keyComboString = keyComboString.Replace("Shift+", "") If keybind.Combo.Contains(keyComboString) Then keybindOptionName = keybind.OpName From 2075afee9cf20cdf5c39f01804c7c1713a88fe8b Mon Sep 17 00:00:00 2001 From: psyk2642 <60137590+psyk2642@users.noreply.github.com> Date: Wed, 4 May 2022 17:55:35 +0800 Subject: [PATCH 134/257] Keybinding organization --- iBMSC/MainWindow.vb | 30 ++- iBMSC/Option Windows/OpKeybinding.vb | 42 +++- iBMSC/PanelEvents.vb | 343 +++++++++++++-------------- 3 files changed, 225 insertions(+), 190 deletions(-) diff --git a/iBMSC/MainWindow.vb b/iBMSC/MainWindow.vb index 83218ee77..04a51850f 100644 --- a/iBMSC/MainWindow.vb +++ b/iBMSC/MainWindow.vb @@ -285,8 +285,9 @@ Public Class MainWindow Public KbCategorySP As Integer = 1 Public KbCategoryPMS As Integer = 2 Public KbCategoryDP As Integer = 3 + Public KbCategoryAllMod As Integer = 10 ' AllMod meaning all modifiers included Public KbCategoryHidden As Integer = 0 - Public KbCategory() As Integer = {KbCategoryPMS, KbCategoryDP, KbCategorySP, KbCategoryHidden, -1} ' Order matters + Public KbCategory() As Integer = {KbCategoryPMS, KbCategoryDP, KbCategorySP, KbCategoryAllMod, KbCategoryHidden, -1} ' Order matters Public KeybindingsInit() As Keybinding = { ' SP Note Assignments New Keybinding("Move to A2", "Move note to 1P Lane 1", {"D1", "NumPad1"}, KbCategorySP), New Keybinding("Move to A3", "Move note to 1P Lane 2", {"D2", "NumPad2"}, KbCategorySP), @@ -332,7 +333,25 @@ Public Class MainWindow New Keybinding("Paste", "", {"Ctrl+V"}), New Keybinding("Select All", "Select all notes", {"Ctrl+A"}), New Keybinding("Select All with Hovered Note Label", "Select all notes with highlighted note label", {"Ctrl+Shift+A"}), - _ ' Experimental + _ ' All Modifiers + New Keybinding("Move Note Up", "*HIDDEN*", {"Up"}, KbCategoryAllMod), + New Keybinding("Move Note Down", "*HIDDEN*", {"Down"}, KbCategoryAllMod), + New Keybinding("Move Note Left", "*HIDDEN*", {"Left"}, KbCategoryAllMod), + New Keybinding("Move Note Right", "*HIDDEN*", {"Right"}, KbCategoryAllMod), + New Keybinding("Insert Space/Define Measure", "*HIDDEN*", {"Insert"}, KbCategoryAllMod), + New Keybinding("Decrease Division", "*HIDDEN*", {"Oemcomma"}, KbCategoryAllMod), + New Keybinding("Increase Division", "*HIDDEN*", {"OemPeriod"}, KbCategoryAllMod), + _ ' Hidden / Experimental + New Keybinding("Delete", "*HIDDEN*", {"Delete"}, KbCategoryHidden), + New Keybinding("Home", "*HIDDEN*", {"Home"}, KbCategoryHidden), + New Keybinding("End", "*HIDDEN*", {"End"}, KbCategoryHidden), + New Keybinding("PageUp", "*HIDDEN*", {"PageUp"}, KbCategoryHidden), + New Keybinding("PageDown", "*HIDDEN*", {"PageDown"}, KbCategoryHidden), + New Keybinding("Set CGDivision", "*HIDDEN*", {"OemQuestion"}, KbCategoryHidden), + New Keybinding("Decrease CGHeight", "*HIDDEN*", {"OemMinus"}, KbCategoryHidden), + New Keybinding("Increase CGHeight", "*HIDDEN*", {"Oemplus"}, KbCategoryHidden), + New Keybinding("DecreaseCurrentWav", "*HIDDEN*", {"Subtract"}, KbCategoryHidden), + New Keybinding("IncreaseCurrentWav", "*HIDDEN*", {"Add"}, KbCategoryHidden), New Keybinding("TBPreviewHighlighted_Click", "*EXPERIMENTAL*", {"Shift+F4"}, KbCategoryHidden) } Dim Keybindings() As Keybinding = CType(KeybindingsInit.Clone(), Keybinding()) @@ -4101,10 +4120,15 @@ Public Class MainWindow Dim xDiag As New OpKeybinding(Keybindings) If xDiag.ShowDialog() = Windows.Forms.DialogResult.OK Then With xDiag - Keybindings = .Keybinds ' Rename shortcutstrings For Each keybind In .Keybinds + For i = 0 To UBound(Keybindings) + If Keybindings(i).OpName = keybind.OpName Then + Keybindings(i) = keybind + Exit For + End If + Next RenameShortcuts(keybind) Next End With diff --git a/iBMSC/Option Windows/OpKeybinding.vb b/iBMSC/Option Windows/OpKeybinding.vb index 8c4117968..73e6401f8 100644 --- a/iBMSC/Option Windows/OpKeybinding.vb +++ b/iBMSC/Option Windows/OpKeybinding.vb @@ -2,6 +2,7 @@ Public Class OpKeybinding Public Keybinds() As MainWindow.Keybinding + Dim KeybindsHidden() As MainWindow.Keybinding Dim keyComboEvent() As String Dim keyComboOK As Boolean @@ -131,12 +132,17 @@ Public Class OpKeybinding End Sub Private Sub CheckConflictWithOtherFunctions() - ' Check with other keys with multiple functions - Dim OtherFunctionKeys() As String = {"Up", "Down", "Left", "Right", - "Insert", "Delete", "Home", "End", "PageUp", "PageDown", - "Oemcomma", "OemPeriod", "OemQuestion", - "Oemplus", "OemMinus", "Add", "Subtract", - "F1", "F2", "F3", "F4", "F5", "F6", "F7", "F8", "F9", "F10", "F11", "F12"} + ' Check with hidden functions + For Each keybindHidden In KeybindsHidden + If keyComboEvent(UBound(keyComboEvent)) = keybindHidden.Combo(0) Then + keyComboOK = False + MsgBox("Error: " & keyComboEvent(UBound(keyComboEvent)) & " is unavailable for custom keybinding.") + Exit Sub + End If + Next + + ' Check with other miscellaneous keys + Dim OtherFunctionKeys() As String = {"F1", "F2", "F3", "F4", "F5", "F6", "F7", "F8", "F9", "F10", "F11", "F12"} If OtherFunctionKeys.Contains(keyComboEvent(UBound(keyComboEvent))) Then keyComboOK = False MsgBox("Error: " & keyComboEvent(UBound(keyComboEvent)) & " is unavailable for custom keybinding.") @@ -153,6 +159,7 @@ Public Class OpKeybinding Exit Sub End If + ' Check for category restrictions Select Case Keybinds(LVKeybinding.FocusedItem.Index).Category ' If note assignment option, check if there is shift Case MainWindow.KbCategorySP, MainWindow.KbCategoryDP, MainWindow.KbCategoryPMS @@ -166,7 +173,6 @@ Public Class OpKeybinding Private Sub CheckConflictWithOtherKeybindings() Dim CategoryToIgnore() As Integer = {} - ' TODO Select Case Keybinds(LVKeybinding.FocusedItem.Index).Category ' If note assignment option, check with each other in the same category Case MainWindow.KbCategorySP @@ -204,9 +210,29 @@ Public Class OpKeybinding Private Sub InitializeKeybindings() LVKeybinding.Items.Clear() + ' Remove hidden options + Dim KeybindsBackup As MainWindow.Keybinding() = CType(Keybinds.Clone(), MainWindow.Keybinding()) + ReDim KeybindsHidden(UBound(KeybindsBackup)) + Dim i As Integer = -1 + Dim j As Integer = -1 ' TODO: Setup another array for hidden keybinds, and create sub CheckConflictWithHiddenFunctions + For Each keybind In KeybindsBackup + If keybind.Category <> MainWindow.KbCategoryAllMod AndAlso + keybind.Category <> MainWindow.KbCategoryHidden Then + i += 1 + Keybinds(i) = keybind + Continue For + Else + j += 1 + KeybindsHidden(j) = keybind + Continue For + End If + Next + ReDim Preserve Keybinds(i) + ReDim Preserve KeybindsHidden(j) + ' List view array initialization Dim LVArray(UBound(Keybinds)) As ListViewItem - Dim i As Integer = -1 + i = -1 For Each keybind In Keybinds i += 1 diff --git a/iBMSC/PanelEvents.vb b/iBMSC/PanelEvents.vb index f04d47399..17fecd480 100644 --- a/iBMSC/PanelEvents.vb +++ b/iBMSC/PanelEvents.vb @@ -18,8 +18,137 @@ Partial Public Class MainWindow Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo ReDim SelectedNotes(-1) - Select Case e.KeyCode - Case Keys.Up + ' Turn keycode into string + Dim keyComboEvent(-1) As String + If e.Control Then + ReDim Preserve keyComboEvent(keyComboEvent.Length) + keyComboEvent(UBound(keyComboEvent)) = "Ctrl" + End If + If e.Shift Then + ReDim Preserve keyComboEvent(keyComboEvent.Length) + keyComboEvent(UBound(keyComboEvent)) = "Shift" + End If + If e.Alt Then + ReDim Preserve keyComboEvent(keyComboEvent.Length) + keyComboEvent(UBound(keyComboEvent)) = "Alt" + End If + ReDim Preserve keyComboEvent(keyComboEvent.Length) + keyComboEvent(UBound(keyComboEvent)) = e.KeyCode.ToString() + + ' Determine + Dim keybindOptionName As String = "" + + ' Check for specific categories first + For Each P In KbCategory + If (P = KbCategoryPMS AndAlso gXKeyMode <> "PMS") OrElse + (P = KbCategoryDP AndAlso gXKeyMode <> "DP") Then Continue For + + Dim keybindOptions = From k In Keybindings + Where k.Category = P + Select k + + For Each keybind In keybindOptions + Dim keyComboString = Join(keyComboEvent, "+") + ' Category SP/PMS/DP: Account for per-note assignment using shift + If P = KbCategorySP Or P = KbCategoryPMS Or P = KbCategoryDP Then keyComboString = keyComboString.Replace("Shift+", "") + ' Category AllMod: Ignore modifiers + If P = KbCategoryAllMod Then keyComboString = e.KeyCode.ToString() + + If keybind.Combo.Contains(keyComboString) Then + keybindOptionName = keybind.OpName + Exit For + End If + Next + If keybindOptionName <> "" Then Exit For + Next + + Select Case keybindOptionName + Case "Move to A2" + MoveToColumn(niA2, xUndo, xRedo) + Case "Move to A3" + MoveToColumn(niA3, xUndo, xRedo) + Case "Move to A4" + MoveToColumn(niA4, xUndo, xRedo) + Case "Move to A5" + MoveToColumn(niA5, xUndo, xRedo) + Case "Move to A6" + MoveToColumn(niA6, xUndo, xRedo) + Case "Move to A7" + MoveToColumn(niA7, xUndo, xRedo) + Case "Move to A8" + MoveToColumn(niA8, xUndo, xRedo) + Case "Move to A1" + MoveToColumn(niA1, xUndo, xRedo) + + Case "Move to D1" + MoveToColumn(niD1, xUndo, xRedo) + Case "Move to D2" + MoveToColumn(niD2, xUndo, xRedo) + Case "Move to D3" + MoveToColumn(niD3, xUndo, xRedo) + Case "Move to D4" + MoveToColumn(niD4, xUndo, xRedo) + Case "Move to D5" + MoveToColumn(niD5, xUndo, xRedo) + Case "Move to D6" + MoveToColumn(niD6, xUndo, xRedo) + Case "Move to D7" + MoveToColumn(niD7, xUndo, xRedo) + Case "Move to D8" + MoveToColumn(niD8, xUndo, xRedo) + + Case "Move to P1" + MoveToColumn(niA2, xUndo, xRedo) + Case "Move to P2" + MoveToColumn(niA3, xUndo, xRedo) + Case "Move to P3" + MoveToColumn(niA4, xUndo, xRedo) + Case "Move to P4" + MoveToColumn(niA5, xUndo, xRedo) + Case "Move to P5" + MoveToColumn(niA6, xUndo, xRedo) + Case "Move to P6" + MoveToColumn(niD2, xUndo, xRedo) + Case "Move to P7" + MoveToColumn(niD3, xUndo, xRedo) + Case "Move to P8" + MoveToColumn(niD4, xUndo, xRedo) + Case "Move to P9" + MoveToColumn(niD5, xUndo, xRedo) + + Case "Move to BGM" + MoveToBGM(xUndo, xRedo) + Case "Move to Template Position" + MoveToTemplatePosition(xUndo, xRedo) + Case "Disable Vertical Moves" + CGDisableVertical.Checked = Not CGDisableVertical.Checked + Case "Snap to Grid" + CGSnap.Checked = Not gSnap + Case "Convert to Long Note" + POBLong_Click(Nothing, Nothing) + Case "Convert to Short Note" + POBNormal_Click(Nothing, Nothing) + Case "Check Technical Error" + CheckTechnicalError(Nothing, Nothing) + Case "Select Expansion Section" + Expand_Load(Nothing, Nothing) + + Case "Undo" + TBUndo_Click(TBUndo, New EventArgs) + Case "Redo" + TBRedo_Click(TBRedo, New EventArgs) + Case "Cut" + TBCut_Click(TBCut, New EventArgs) + Case "Copy" + TBCopy_Click(TBCopy, New EventArgs) + Case "Paste" + TBPaste_Click(TBPaste, New EventArgs) + Case "Select All" + mnSelectAll_Click(mnSelectAll, New EventArgs) + Case "Select All with Hovered Note Label" + If KMouseOver <> -1 Then SelectAllWithHoveredNoteLabel() + + Case "Move Note Up" Dim xVPosition As Double = 192 / gDivide If My.Computer.Keyboard.CtrlKeyDown Then xVPosition = 1 @@ -51,8 +180,7 @@ Partial Public Class MainWindow CalculateTotalPlayableNotes() CalculateGreatestVPosition() RefreshPanelAll() - - Case Keys.Down + Case "Move Note Down" Dim xVPosition As Double = -192 / gDivide If My.Computer.Keyboard.CtrlKeyDown Then xVPosition = -1 @@ -83,8 +211,7 @@ Partial Public Class MainWindow CalculateTotalPlayableNotes() CalculateGreatestVPosition() RefreshPanelAll() - - Case Keys.Left + Case "Move Note Left" 'For xI1 = 1 To UBound(K) ' If K(xI1).Selected Then K(xI1).ColumnIndex = RealColumnToEnabled(K(xI1).ColumnIndex) - 1 'Next @@ -111,8 +238,7 @@ Partial Public Class MainWindow UpdatePairing() CalculateTotalPlayableNotes() RefreshPanelAll() - - Case Keys.Right + Case "Move Note Right" Dim xCol As Integer For xI1 = UBound(Notes) To 1 Step -1 If Not Notes(xI1).Selected Or Notes(xI1).Ghost Then Continue For @@ -127,8 +253,7 @@ Partial Public Class MainWindow UpdatePairing() CalculateTotalPlayableNotes() RefreshPanelAll() - - Case Keys.Insert + Case "Insert Space/Define Measure" If TBTimeSelect.Checked Then With My.Computer.Keyboard If Not .CtrlKeyDown And Not .ShiftKeyDown Then @@ -142,31 +267,7 @@ Partial Public Class MainWindow End If End With End If - - Case Keys.Delete - mnDelete_Click(mnDelete, New System.EventArgs) - - Case Keys.Home - If PanelFocus = 0 Then LeftPanelScroll.Value = 0 - If PanelFocus = 1 Then MainPanelScroll.Value = 0 - If PanelFocus = 2 Then RightPanelScroll.Value = 0 - - Case Keys.End - If PanelFocus = 0 Then LeftPanelScroll.Value = LeftPanelScroll.Minimum - If PanelFocus = 1 Then MainPanelScroll.Value = MainPanelScroll.Minimum - If PanelFocus = 2 Then RightPanelScroll.Value = RightPanelScroll.Minimum - - Case Keys.PageUp - If PanelFocus = 0 Then LeftPanelScroll.Value = CInt(IIf(LeftPanelScroll.Value - gPgUpDn > LeftPanelScroll.Minimum, LeftPanelScroll.Value - gPgUpDn, LeftPanelScroll.Minimum)) - If PanelFocus = 1 Then MainPanelScroll.Value = CInt(IIf(MainPanelScroll.Value - gPgUpDn > MainPanelScroll.Minimum, MainPanelScroll.Value - gPgUpDn, MainPanelScroll.Minimum)) - If PanelFocus = 2 Then RightPanelScroll.Value = CInt(IIf(RightPanelScroll.Value - gPgUpDn > RightPanelScroll.Minimum, RightPanelScroll.Value - gPgUpDn, RightPanelScroll.Minimum)) - - Case Keys.PageDown - If PanelFocus = 0 Then LeftPanelScroll.Value = CInt(IIf(LeftPanelScroll.Value + gPgUpDn < 0, LeftPanelScroll.Value + gPgUpDn, 0)) - If PanelFocus = 1 Then MainPanelScroll.Value = CInt(IIf(MainPanelScroll.Value + gPgUpDn < 0, MainPanelScroll.Value + gPgUpDn, 0)) - If PanelFocus = 2 Then RightPanelScroll.Value = CInt(IIf(RightPanelScroll.Value + gPgUpDn < 0, RightPanelScroll.Value + gPgUpDn, 0)) - - Case Keys.Oemcomma + Case "Decrease Division" With My.Computer.Keyboard Dim Modif As Integer = CInt(IIf(.ShiftKeyDown, 3, 2)) If Not .CtrlKeyDown And Not .AltKeyDown Then ' Divide CGDivide @@ -179,8 +280,7 @@ Partial Public Class MainWindow If CGSub.Value - 1 >= CGSub.Minimum Then CGSub.Value -= 1 End If End With - - Case Keys.OemPeriod + Case "Increase Division" With My.Computer.Keyboard Dim Modif As Integer = CInt(IIf(.ShiftKeyDown, 3, 2)) If Not .CtrlKeyDown And Not .AltKeyDown Then ' Divide CGDivide @@ -194,159 +294,44 @@ Partial Public Class MainWindow End If End With - Case Keys.OemQuestion + Case "Delete" + mnDelete_Click(mnDelete, New System.EventArgs) + Case "Home" + If PanelFocus = 0 Then LeftPanelScroll.Value = 0 + If PanelFocus = 1 Then MainPanelScroll.Value = 0 + If PanelFocus = 2 Then RightPanelScroll.Value = 0 + Case "End" + If PanelFocus = 0 Then LeftPanelScroll.Value = LeftPanelScroll.Minimum + If PanelFocus = 1 Then MainPanelScroll.Value = MainPanelScroll.Minimum + If PanelFocus = 2 Then RightPanelScroll.Value = RightPanelScroll.Minimum + Case "PageUp" + If PanelFocus = 0 Then LeftPanelScroll.Value = CInt(IIf(LeftPanelScroll.Value - gPgUpDn > LeftPanelScroll.Minimum, LeftPanelScroll.Value - gPgUpDn, LeftPanelScroll.Minimum)) + If PanelFocus = 1 Then MainPanelScroll.Value = CInt(IIf(MainPanelScroll.Value - gPgUpDn > MainPanelScroll.Minimum, MainPanelScroll.Value - gPgUpDn, MainPanelScroll.Minimum)) + If PanelFocus = 2 Then RightPanelScroll.Value = CInt(IIf(RightPanelScroll.Value - gPgUpDn > RightPanelScroll.Minimum, RightPanelScroll.Value - gPgUpDn, RightPanelScroll.Minimum)) + Case "PageDown" + If PanelFocus = 0 Then LeftPanelScroll.Value = CInt(IIf(LeftPanelScroll.Value + gPgUpDn < 0, LeftPanelScroll.Value + gPgUpDn, 0)) + If PanelFocus = 1 Then MainPanelScroll.Value = CInt(IIf(MainPanelScroll.Value + gPgUpDn < 0, MainPanelScroll.Value + gPgUpDn, 0)) + If PanelFocus = 2 Then RightPanelScroll.Value = CInt(IIf(RightPanelScroll.Value + gPgUpDn < 0, RightPanelScroll.Value + gPgUpDn, 0)) + Case "Set CGDivision" 'Dim xTempSwap As Integer = gSlash 'gSlash = CGDivide.Value 'CGDivide.Value = xTempSwap CGDivide.Value = gSlash - - Case Keys.Oemplus + Case "Decrease CGHeight" With CGHeight - .Value += CDec(IIf(.Value > .Maximum - .Increment, .Maximum - .Value, .Increment)) + .Value -= CDec(IIf(.Value < .Minimum + .Increment, .Value - .Minimum, .Increment)) End With - - Case Keys.OemMinus + Case "Increase CGHeight" With CGHeight - .Value -= CDec(IIf(.Value < .Minimum + .Increment, .Value - .Minimum, .Increment)) + .Value += CDec(IIf(.Value > .Maximum - .Increment, .Maximum - .Value, .Increment)) End With - - Case Keys.Add - IncreaseCurrentWav() - - Case Keys.Subtract + Case "DecreaseCurrentWav" DecreaseCurrentWav() - End Select - - ' Turn keycode into string - Dim keyComboEvent(-1) As String - If e.Control Then - ReDim Preserve keyComboEvent(keyComboEvent.Length) - keyComboEvent(UBound(keyComboEvent)) = "Ctrl" - End If - If e.Shift Then - ReDim Preserve keyComboEvent(keyComboEvent.Length) - keyComboEvent(UBound(keyComboEvent)) = "Shift" - End If - If e.Alt Then - ReDim Preserve keyComboEvent(keyComboEvent.Length) - keyComboEvent(UBound(keyComboEvent)) = "Alt" - End If - ReDim Preserve keyComboEvent(keyComboEvent.Length) - keyComboEvent(UBound(keyComboEvent)) = e.KeyCode.ToString - - ' Determine - Dim keybindOptionName As String = "" - - ' Check for specific categories first - For Each P In KbCategory - If (P = KbCategoryPMS AndAlso gXKeyMode <> "PMS") Or - (P = KbCategoryDP AndAlso gXKeyMode <> "DP") Then Continue For - - Dim keybindOptions = From k In Keybindings - Where k.Category = P - Select k - - For Each keybind In keybindOptions - Dim keyComboString = Join(keyComboEvent, "+") - ' To account for per-note assignment using shift - If P = KbCategorySP Or P = KbCategoryPMS Or P = KbCategoryDP Then keyComboString = keyComboString.Replace("Shift+", "") - - If keybind.Combo.Contains(keyComboString) Then - keybindOptionName = keybind.OpName - Exit For - End If - Next - If keybindOptionName <> "" Then Exit For - Next - - Select Case keybindOptionName - Case "Move to A2" - MoveToColumn(niA2, xUndo, xRedo) - Case "Move to A3" - MoveToColumn(niA3, xUndo, xRedo) - Case "Move to A4" - MoveToColumn(niA4, xUndo, xRedo) - Case "Move to A5" - MoveToColumn(niA5, xUndo, xRedo) - Case "Move to A6" - MoveToColumn(niA6, xUndo, xRedo) - Case "Move to A7" - MoveToColumn(niA7, xUndo, xRedo) - Case "Move to A8" - MoveToColumn(niA8, xUndo, xRedo) - Case "Move to A1" - MoveToColumn(niA1, xUndo, xRedo) - - Case "Move to D1" - MoveToColumn(niD1, xUndo, xRedo) - Case "Move to D2" - MoveToColumn(niD2, xUndo, xRedo) - Case "Move to D3" - MoveToColumn(niD3, xUndo, xRedo) - Case "Move to D4" - MoveToColumn(niD4, xUndo, xRedo) - Case "Move to D5" - MoveToColumn(niD5, xUndo, xRedo) - Case "Move to D6" - MoveToColumn(niD6, xUndo, xRedo) - Case "Move to D7" - MoveToColumn(niD7, xUndo, xRedo) - Case "Move to D8" - MoveToColumn(niD8, xUndo, xRedo) - - Case "Move to P1" - MoveToColumn(niA2, xUndo, xRedo) - Case "Move to P2" - MoveToColumn(niA3, xUndo, xRedo) - Case "Move to P3" - MoveToColumn(niA4, xUndo, xRedo) - Case "Move to P4" - MoveToColumn(niA5, xUndo, xRedo) - Case "Move to P5" - MoveToColumn(niA6, xUndo, xRedo) - Case "Move to P6" - MoveToColumn(niD2, xUndo, xRedo) - Case "Move to P7" - MoveToColumn(niD3, xUndo, xRedo) - Case "Move to P8" - MoveToColumn(niD4, xUndo, xRedo) - Case "Move to P9" - MoveToColumn(niD5, xUndo, xRedo) - - Case "Move to BGM" - MoveToBGM(xUndo, xRedo) - Case "Move to Template Position" - MoveToTemplatePosition(xUndo, xRedo) - Case "Disable Vertical Moves" - CGDisableVertical.Checked = Not CGDisableVertical.Checked - Case "Snap to Grid" - CGSnap.Checked = Not gSnap - Case "Convert to Long Note" - POBLong_Click(Nothing, Nothing) - Case "Convert to Short Note" - POBNormal_Click(Nothing, Nothing) - Case "Check Technical Error" - CheckTechnicalError(Nothing, Nothing) - Case "Select Expansion Section" - Expand_Load(Nothing, Nothing) - - Case "Undo" - TBUndo_Click(TBUndo, New EventArgs) - Case "Redo" - TBRedo_Click(TBRedo, New EventArgs) - Case "Cut" - TBCut_Click(TBCut, New EventArgs) - Case "Copy" - TBCopy_Click(TBCopy, New EventArgs) - Case "Paste" - TBPaste_Click(TBPaste, New EventArgs) - Case "Select All" - mnSelectAll_Click(mnSelectAll, New EventArgs) - Case "Select All with Hovered Note Label" - If KMouseOver <> -1 Then SelectAllWithHoveredNoteLabel() + Case "IncreaseCurrentWav" + IncreaseCurrentWav() Case "TBPreviewHighlighted_Click" TBPreviewHighlighted_Click(sender, New EventArgs) - Case "GetVPositionFromTime" + Case "GetVPositionFromTime" ' Currently not accessible MsgBox("VPosition: " & GetVPositionFromTime(CDbl(InputBox("Enter time")))) End Select From b37e598bbd8a4d5d84f6d2ff3a8d29acedb7c0ae Mon Sep 17 00:00:00 2001 From: psyk2642 <60137590+psyk2642@users.noreply.github.com> Date: Wed, 4 May 2022 20:02:00 +0800 Subject: [PATCH 135/257] Code Update --- iBMSC/ChartIO.vb | 10 +++++++--- iBMSC/MainWindow.designer.vb | 3 +-- iBMSC/MainWindow.vb | 10 +++++----- iBMSC/Option Windows/OpKeybinding.vb | 2 +- iBMSC/PanelEvents.vb | 6 ++++-- 5 files changed, 18 insertions(+), 13 deletions(-) diff --git a/iBMSC/ChartIO.vb b/iBMSC/ChartIO.vb index 87d46ca4c..208f464f9 100644 --- a/iBMSC/ChartIO.vb +++ b/iBMSC/ChartIO.vb @@ -17,8 +17,11 @@ Partial Public Class MainWindow Dim nNotes As Integer = 1 ' Assume ghost note strings contain only notes in the section. Expansion field to be saved separately - If xGhost Or xComment Then + If xGhost Then + nNotes = Notes.Length + ElseIf xComment Then nNotes = Notes.Length + ReDim mColumn(999) Else ' Initialization ReDim Notes(0) ReDim NotesTemplate(0) @@ -54,7 +57,7 @@ Partial Public Class MainWindow Dim nLine As Integer = -1 For Each sLine In xStrLine - If xComment Then xStrLine2 = xStrLine : Exit For + If xComment Then xStrLine2 = xStrLine : nLine = UBound(xStrLine) : Exit For Dim sLineTrim As String = sLine.Trim If sLineTrim = "" Then Continue For @@ -585,7 +588,8 @@ Partial Public Class MainWindow TExpansion.Text = ExpansionTextTemp End If ' Add template filename - Dim xStrEditorTemplate As String = "#TEMPLATE " & FileNameTemplate + Dim xStrEditorTemplate As String = "" + If FileNameTemplate <> "" Then xStrEditorTemplate = "#TEMPLATE " & FileNameTemplate Dim xStrEditor As String = vbCrLf & "*---------------------- EDITOR EXPANSION FIELD" & vbCrLf & xStrEditorCommentNotes & vbCrLf & xStrEditorTemplate & vbCrLf & vbCrLf If xStrEditorCommentNotes = "" AndAlso xStrEditorTemplate = "" Then xStrEditor = "" diff --git a/iBMSC/MainWindow.designer.vb b/iBMSC/MainWindow.designer.vb index 98fcab674..d37ad7147 100644 --- a/iBMSC/MainWindow.designer.vb +++ b/iBMSC/MainWindow.designer.vb @@ -1176,8 +1176,7 @@ Partial Class MainWindow ' Me.cmnConversion.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.POBLong, Me.POBShort, Me.POBLongShort, Me.ToolStripSeparator10, Me.POBHidden, Me.POBVisible, Me.POBHiddenVisible, Me.ToolStripSeparator11, Me.POBModify, Me.POBMirror, Me.POBFlip, Me.POBRandom, Me.POBRRandom, Me.POBSRandom, Me.POBHRandom, Me.POBSort}) Me.cmnConversion.Name = "cmnLanguage" - Me.cmnConversion.OwnerItem = Me.mnConversion - Me.cmnConversion.Size = New System.Drawing.Size(222, 346) + Me.cmnConversion.Size = New System.Drawing.Size(222, 324) ' 'POBLong ' diff --git a/iBMSC/MainWindow.vb b/iBMSC/MainWindow.vb index 04a51850f..3503b47fd 100644 --- a/iBMSC/MainWindow.vb +++ b/iBMSC/MainWindow.vb @@ -339,14 +339,14 @@ Public Class MainWindow New Keybinding("Move Note Left", "*HIDDEN*", {"Left"}, KbCategoryAllMod), New Keybinding("Move Note Right", "*HIDDEN*", {"Right"}, KbCategoryAllMod), New Keybinding("Insert Space/Define Measure", "*HIDDEN*", {"Insert"}, KbCategoryAllMod), + New Keybinding("Delete", "*HIDDEN*", {"Delete"}, KbCategoryAllMod), + New Keybinding("Home", "*HIDDEN*", {"Home"}, KbCategoryAllMod), + New Keybinding("End", "*HIDDEN*", {"End"}, KbCategoryAllMod), + New Keybinding("PageUp", "*HIDDEN*", {"PageUp"}, KbCategoryAllMod), + New Keybinding("PageDown", "*HIDDEN*", {"PageDown"}, KbCategoryAllMod), New Keybinding("Decrease Division", "*HIDDEN*", {"Oemcomma"}, KbCategoryAllMod), New Keybinding("Increase Division", "*HIDDEN*", {"OemPeriod"}, KbCategoryAllMod), _ ' Hidden / Experimental - New Keybinding("Delete", "*HIDDEN*", {"Delete"}, KbCategoryHidden), - New Keybinding("Home", "*HIDDEN*", {"Home"}, KbCategoryHidden), - New Keybinding("End", "*HIDDEN*", {"End"}, KbCategoryHidden), - New Keybinding("PageUp", "*HIDDEN*", {"PageUp"}, KbCategoryHidden), - New Keybinding("PageDown", "*HIDDEN*", {"PageDown"}, KbCategoryHidden), New Keybinding("Set CGDivision", "*HIDDEN*", {"OemQuestion"}, KbCategoryHidden), New Keybinding("Decrease CGHeight", "*HIDDEN*", {"OemMinus"}, KbCategoryHidden), New Keybinding("Increase CGHeight", "*HIDDEN*", {"Oemplus"}, KbCategoryHidden), diff --git a/iBMSC/Option Windows/OpKeybinding.vb b/iBMSC/Option Windows/OpKeybinding.vb index 73e6401f8..d37928c1a 100644 --- a/iBMSC/Option Windows/OpKeybinding.vb +++ b/iBMSC/Option Windows/OpKeybinding.vb @@ -150,7 +150,7 @@ Public Class OpKeybinding End If ' Check with other key combos - Dim OtherFunctionKeyCombos() As String = {"Ctrl+N", "Ctrl+O", "Ctrl+S", "Ctrl+Alt+S", "Ctrl+Shift+E", "Alt+D1", "Alt+D2", "Alt+D3", "Alt+D4", "Alt+D5", + Dim OtherFunctionKeyCombos() As String = {"Ctrl+N", "Ctrl+O", "Ctrl+Alt+O", "Ctrl+S", "Ctrl+Alt+S", "Ctrl+Shift+E", "Alt+D1", "Alt+D2", "Alt+D3", "Alt+D4", "Alt+D5", "Ctrl+F", "Ctrl+G", "Ctrl+T", "Ctrl+Shift+T", "Alt+B", "Alt+S", "Alt+R", "Alt+G"} If OtherFunctionKeyCombos.Contains(TComboInput.Text) Then diff --git a/iBMSC/PanelEvents.vb b/iBMSC/PanelEvents.vb index 17fecd480..d27adb6d6 100644 --- a/iBMSC/PanelEvents.vb +++ b/iBMSC/PanelEvents.vb @@ -723,7 +723,8 @@ Partial Public Class MainWindow Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo Dim valstr As String = InputBox(xMessage, Text) - Dim value As Long = CLng(CDbl(valstr) * 10000) + Dim value As Long = 0 + If Not valstr.StartsWith("-c ") Then value = CLng(CDbl(valstr) * 10000) If valstr.StartsWith("-c ") Then ' Input comment notes If valstr = "-c " Then valstr &= " " For xI1 = 1 To UBound(Notes) @@ -1852,7 +1853,8 @@ Partial Public Class MainWindow If xColumn = niSCROLL Then xMessage = Strings.Messages.PromptEnterSCROLL Dim valstr As String = InputBox(xMessage, Me.Text) - Dim value As Long = CLng(CDbl(valstr) * 10000) + Dim value As Long = 0 + If Not valstr.StartsWith("-c ") Then value = CLng(CDbl(valstr) * 10000) If valstr.StartsWith("-c ") Then ' Input comment notes If valstr = "-c " Then valstr &= " " For xI1 = 1 To UBound(Notes) From 8a71cb76c21f35a97757eaa8a9286edb97f81003 Mon Sep 17 00:00:00 2001 From: psyk2642 <60137590+psyk2642@users.noreply.github.com> Date: Thu, 5 May 2022 00:06:50 +0800 Subject: [PATCH 136/257] Added Auto Long Notes Added function to convert notes to LNs up to the next notes (gap settable in general options) either by column or by VPosition. --- iBMSC/EditorPersistent.vb | 2 + iBMSC/MainWindow.designer.vb | 64 +- iBMSC/MainWindow.vb | 817 ++++++++++++--------- iBMSC/My Project/AssemblyInfo.vb | 4 +- iBMSC/Option Windows/OpGeneral.Designer.vb | 190 +++-- iBMSC/Option Windows/OpGeneral.vb | 27 +- 6 files changed, 674 insertions(+), 430 deletions(-) diff --git a/iBMSC/EditorPersistent.vb b/iBMSC/EditorPersistent.vb index f558d0cca..8ac310b6b 100644 --- a/iBMSC/EditorPersistent.vb +++ b/iBMSC/EditorPersistent.vb @@ -97,6 +97,7 @@ Partial Public Class MainWindow .WriteAttributeString("ClickStopPreview", ClickStopPreview.ToString()) .WriteAttributeString("JackBPM", ErrorJackBPM.ToString()) .WriteAttributeString("JackTH", ErrorJackTH.ToString()) + .WriteAttributeString("gLNGap", gLNGap.ToString()) .WriteAttributeString("COverridesSaveOption", COverridesSaveOption.ToString()) .WriteAttributeString("TemplateSnapToVPosition", TemplateSnapToVPosition.ToString()) .WriteEndElement() @@ -462,6 +463,7 @@ Partial Public Class MainWindow XMLLoadAttribute(.GetAttribute("JackBPM"), ErrorJackBPM) XMLLoadAttribute(.GetAttribute("JackTH"), ErrorJackTH) + XMLLoadAttribute(.GetAttribute("gLNGap"), gLNGap) XMLLoadAttribute(.GetAttribute("COverridesSaveOption"), COverridesSaveOption) XMLLoadAttribute(.GetAttribute("TemplateSnapToVPosition"), TemplateSnapToVPosition) End With diff --git a/iBMSC/MainWindow.designer.vb b/iBMSC/MainWindow.designer.vb index d37ad7147..5e84b6ec5 100644 --- a/iBMSC/MainWindow.designer.vb +++ b/iBMSC/MainWindow.designer.vb @@ -116,6 +116,9 @@ Partial Class MainWindow Me.POBLong = New System.Windows.Forms.ToolStripMenuItem() Me.POBShort = New System.Windows.Forms.ToolStripMenuItem() Me.POBLongShort = New System.Windows.Forms.ToolStripMenuItem() + Me.ToolStripSeparator25 = New System.Windows.Forms.ToolStripSeparator() + Me.POBAutoLongVPosition = New System.Windows.Forms.ToolStripMenuItem() + Me.POBAutoLongColumn = New System.Windows.Forms.ToolStripMenuItem() Me.ToolStripSeparator10 = New System.Windows.Forms.ToolStripSeparator() Me.POBHidden = New System.Windows.Forms.ToolStripMenuItem() Me.POBVisible = New System.Windows.Forms.ToolStripMenuItem() @@ -1174,23 +1177,24 @@ Partial Class MainWindow ' 'cmnConversion ' - Me.cmnConversion.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.POBLong, Me.POBShort, Me.POBLongShort, Me.ToolStripSeparator10, Me.POBHidden, Me.POBVisible, Me.POBHiddenVisible, Me.ToolStripSeparator11, Me.POBModify, Me.POBMirror, Me.POBFlip, Me.POBRandom, Me.POBRRandom, Me.POBSRandom, Me.POBHRandom, Me.POBSort}) + Me.cmnConversion.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.POBLong, Me.POBShort, Me.POBLongShort, Me.ToolStripSeparator25, Me.POBAutoLongVPosition, Me.POBAutoLongColumn, Me.ToolStripSeparator10, Me.POBHidden, Me.POBVisible, Me.POBHiddenVisible, Me.ToolStripSeparator11, Me.POBModify, Me.POBMirror, Me.POBFlip, Me.POBRandom, Me.POBRRandom, Me.POBSRandom, Me.POBHRandom, Me.POBSort}) Me.cmnConversion.Name = "cmnLanguage" - Me.cmnConversion.Size = New System.Drawing.Size(222, 324) + Me.cmnConversion.OwnerItem = Me.POConvert + Me.cmnConversion.Size = New System.Drawing.Size(237, 396) ' 'POBLong ' Me.POBLong.Enabled = False Me.POBLong.Image = Global.iBMSC.My.Resources.Resources.ConvertNotesL Me.POBLong.Name = "POBLong" - Me.POBLong.Size = New System.Drawing.Size(221, 22) + Me.POBLong.Size = New System.Drawing.Size(236, 22) Me.POBLong.Text = "→ &Long Note" ' 'POBShort ' Me.POBShort.Image = Global.iBMSC.My.Resources.Resources.ConvertNotesN Me.POBShort.Name = "POBShort" - Me.POBShort.Size = New System.Drawing.Size(221, 22) + Me.POBShort.Size = New System.Drawing.Size(236, 22) Me.POBShort.Text = "→ &Short Note" ' 'POBLongShort @@ -1198,94 +1202,113 @@ Partial Class MainWindow Me.POBLongShort.Enabled = False Me.POBLongShort.Image = Global.iBMSC.My.Resources.Resources.ConvertNotes Me.POBLongShort.Name = "POBLongShort" - Me.POBLongShort.Size = New System.Drawing.Size(221, 22) + Me.POBLongShort.Size = New System.Drawing.Size(236, 22) Me.POBLongShort.Text = "Long Note ↔ Short Note" ' + 'ToolStripSeparator25 + ' + Me.ToolStripSeparator25.Name = "ToolStripSeparator25" + Me.ToolStripSeparator25.Size = New System.Drawing.Size(233, 6) + ' + 'POBAutoLongVPosition + ' + Me.POBAutoLongVPosition.Image = Global.iBMSC.My.Resources.Resources.ConvertNotesL + Me.POBAutoLongVPosition.Name = "POBAutoLongVPosition" + Me.POBAutoLongVPosition.Size = New System.Drawing.Size(236, 22) + Me.POBAutoLongVPosition.Text = "&Auto Long Note (By VPosition)" + ' + 'POBAutoLongColumn + ' + Me.POBAutoLongColumn.Image = Global.iBMSC.My.Resources.Resources.ConvertNotesL + Me.POBAutoLongColumn.Name = "POBAutoLongColumn" + Me.POBAutoLongColumn.Size = New System.Drawing.Size(236, 22) + Me.POBAutoLongColumn.Text = "&Auto Long Note (By Column)" + ' 'ToolStripSeparator10 ' Me.ToolStripSeparator10.Name = "ToolStripSeparator10" - Me.ToolStripSeparator10.Size = New System.Drawing.Size(218, 6) + Me.ToolStripSeparator10.Size = New System.Drawing.Size(233, 6) ' 'POBHidden ' Me.POBHidden.Image = Global.iBMSC.My.Resources.Resources.ConvertNotesH Me.POBHidden.Name = "POBHidden" - Me.POBHidden.Size = New System.Drawing.Size(221, 22) + Me.POBHidden.Size = New System.Drawing.Size(236, 22) Me.POBHidden.Text = "→ &Hidden Note" ' 'POBVisible ' Me.POBVisible.Image = Global.iBMSC.My.Resources.Resources.ConvertNotesV Me.POBVisible.Name = "POBVisible" - Me.POBVisible.Size = New System.Drawing.Size(221, 22) + Me.POBVisible.Size = New System.Drawing.Size(236, 22) Me.POBVisible.Text = "→ &Visible Note" ' 'POBHiddenVisible ' Me.POBHiddenVisible.Image = Global.iBMSC.My.Resources.Resources.ConvertNotesHV Me.POBHiddenVisible.Name = "POBHiddenVisible" - Me.POBHiddenVisible.Size = New System.Drawing.Size(221, 22) + Me.POBHiddenVisible.Size = New System.Drawing.Size(236, 22) Me.POBHiddenVisible.Text = "Hidden Note ↔ Visible Note" ' 'ToolStripSeparator11 ' Me.ToolStripSeparator11.Name = "ToolStripSeparator11" - Me.ToolStripSeparator11.Size = New System.Drawing.Size(218, 6) + Me.ToolStripSeparator11.Size = New System.Drawing.Size(233, 6) ' 'POBModify ' Me.POBModify.Image = Global.iBMSC.My.Resources.Resources.x16ModifyLabel Me.POBModify.Name = "POBModify" - Me.POBModify.Size = New System.Drawing.Size(221, 22) + Me.POBModify.Size = New System.Drawing.Size(236, 22) Me.POBModify.Text = "Modify &Labels" ' 'POBMirror ' Me.POBMirror.Image = Global.iBMSC.My.Resources.Resources.x16Mirror Me.POBMirror.Name = "POBMirror" - Me.POBMirror.Size = New System.Drawing.Size(221, 22) + Me.POBMirror.Size = New System.Drawing.Size(236, 22) Me.POBMirror.Text = "&Mirror" ' 'POBFlip ' Me.POBFlip.Image = Global.iBMSC.My.Resources.Resources.x16Flip Me.POBFlip.Name = "POBFlip" - Me.POBFlip.Size = New System.Drawing.Size(221, 22) + Me.POBFlip.Size = New System.Drawing.Size(236, 22) Me.POBFlip.Text = "&Flip" ' 'POBRandom ' Me.POBRandom.Image = Global.iBMSC.My.Resources.Resources.x16Random Me.POBRandom.Name = "POBRandom" - Me.POBRandom.Size = New System.Drawing.Size(221, 22) + Me.POBRandom.Size = New System.Drawing.Size(236, 22) Me.POBRandom.Text = "&Random" ' 'POBRRandom ' Me.POBRRandom.Image = Global.iBMSC.My.Resources.Resources.x16RRandom Me.POBRRandom.Name = "POBRRandom" - Me.POBRRandom.Size = New System.Drawing.Size(221, 22) + Me.POBRRandom.Size = New System.Drawing.Size(236, 22) Me.POBRRandom.Text = "&R-Random" ' 'POBSRandom ' Me.POBSRandom.Image = Global.iBMSC.My.Resources.Resources.x16SRandom Me.POBSRandom.Name = "POBSRandom" - Me.POBSRandom.Size = New System.Drawing.Size(221, 22) + Me.POBSRandom.Size = New System.Drawing.Size(236, 22) Me.POBSRandom.Text = "&S-Random" ' 'POBHRandom ' Me.POBHRandom.Image = Global.iBMSC.My.Resources.Resources.x16HRandom Me.POBHRandom.Name = "POBHRandom" - Me.POBHRandom.Size = New System.Drawing.Size(221, 22) + Me.POBHRandom.Size = New System.Drawing.Size(236, 22) Me.POBHRandom.Text = "&H-Random" ' 'POBSort ' Me.POBSort.Image = Global.iBMSC.My.Resources.Resources.lgwidth Me.POBSort.Name = "POBSort" - Me.POBSort.Size = New System.Drawing.Size(221, 22) + Me.POBSort.Size = New System.Drawing.Size(236, 22) Me.POBSort.Text = "S&ort" ' 'mnPreview @@ -1363,7 +1386,7 @@ Partial Class MainWindow Me.TBMain.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.TBNew, Me.TBOpen, Me.TBSave, Me.ToolStripSeparator1, Me.TBCut, Me.TBCopy, Me.TBPaste, Me.TBFind, Me.ToolStripSeparator24, Me.TBStatistics, Me.POConvert, Me.TBMyO2, Me.ToolStripSeparator4, Me.TBErrorCheck, Me.TBPreviewOnClick, Me.TBShowFileName, Me.TBShowWaveform, Me.ToolStripSeparator8, Me.TBNTInput, Me.TBWavIncrease, Me.ToolStripSeparator2, Me.TBUndo, Me.TBRedo, Me.ToolStripSeparator5, Me.TBTimeSelect, Me.TBSelect, Me.TBWrite, Me.ToolStripSeparator3, Me.TBPlayB, Me.TBPlay, Me.TBStop, Me.TBPOptions, Me.ToolStripSeparator7, Me.TBGOptions, Me.TBKOptions, Me.TBVOptions, Me.TBLanguage, Me.TBTheme, Me.POBStorm, Me.TBTotalValue}) Me.TBMain.Location = New System.Drawing.Point(3, 23) Me.TBMain.Name = "TBMain" - Me.TBMain.Size = New System.Drawing.Size(939, 25) + Me.TBMain.Size = New System.Drawing.Size(993, 25) Me.TBMain.TabIndex = 64 Me.TBMain.Text = "Main Toolbar" ' @@ -4761,4 +4784,7 @@ Partial Class MainWindow Friend WithEvents mnTOTAL As ToolStripMenuItem Friend WithEvents ToolStripSeparator13 As ToolStripSeparator Friend WithEvents mnOpenTemplate As ToolStripMenuItem + Friend WithEvents POBAutoLongVPosition As ToolStripMenuItem + Friend WithEvents ToolStripSeparator25 As ToolStripSeparator + Friend WithEvents POBAutoLongColumn As ToolStripMenuItem End Class diff --git a/iBMSC/MainWindow.vb b/iBMSC/MainWindow.vb index 3503b47fd..a76ea3885 100644 --- a/iBMSC/MainWindow.vb +++ b/iBMSC/MainWindow.vb @@ -169,6 +169,7 @@ Public Class MainWindow Dim hCOMNum As Integer = 0 Dim gXKeyMode As String = "SP" ' Determines from column width 7key mode, 9key mode or 14key mode Dim gXKeyCol() As Integer + Dim gLNGap As Double = 16 Dim wLWAV(1295) As WavSample '----AutoSave Options @@ -3142,293 +3143,6 @@ Public Class MainWindow Return VPos End Function - Private Sub POBMirror_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles POBMirror.Click - Dim xI1 As Integer - Dim xI2 As Integer - Dim xUndo As UndoRedo.LinkedURCmd = Nothing - Dim xRedo As UndoRedo.LinkedURCmd = New UndoRedo.Void - Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo - 'xRedo &= sCmdKM(niA1, .VPosition, .Value, IIf(NTInput, .Length, .LongNote), .Hidden, RealColumnToEnabled(niA7) - RealColumnToEnabled(niA1), 0, True) & vbCrLf - 'xUndo &= sCmdKM(niA7, .VPosition, .Value, IIf(NTInput, .Length, .LongNote), .Hidden, RealColumnToEnabled(niA1) - RealColumnToEnabled(niA7), 0, True) & vbCrLf - - ' gXKeyCol: Unmodified array - ' Array 1: Modified array based on range - ' Array R: Array 1 reversed - - ' New function: Declare an array to see the range of selected notes. B columns ignored. - Dim xRangeL As Integer = niB ' Big number - Dim xRangeU As Integer = 0 ' Smol number - - ' Range finder - For xI1 = 1 To UBound(Notes) - If Not Notes(xI1).Selected Then Continue For - If xRangeL > Notes(xI1).ColumnIndex Then xRangeL = Notes(xI1).ColumnIndex - If xRangeU < Notes(xI1).ColumnIndex Then xRangeU = Notes(xI1).ColumnIndex - Next - - Dim xniArray1(UBound(gXKeyCol)) As Integer - Dim xIA1 As Integer = -1 - For Each ni In gXKeyCol - If xRangeL <= ni AndAlso ni <= xRangeU Then - xIA1 += 1 - xniArray1(xIA1) = ni - End If - Next - If xIA1 <= 0 Then Exit Sub - - ReDim Preserve xniArray1(xIA1) - - Dim xniArrayR = xniArray1.Reverse() - Dim xniArrayLen = xniArray1.Length - - Dim xCol As Integer - For xI1 = 1 To UBound(Notes) - If Not Notes(xI1).Selected Or Notes(xI1).Ghost Then Continue For - - xCol = Notes(xI1).ColumnIndex - ' MsgBox("Test" & "xCol: " & xCol & " xI1: " & xI1) - For xI2 = 0 To xniArrayLen - 1 - ' MsgBox("Test 2 xI2: " & xI2) - If xCol = xniArray1(xI2) Then - xCol = xniArrayR(xI2) - Exit For - End If - - Next - - Me.RedoMoveNote(Notes(xI1), xCol, Notes(xI1).VPosition, xUndo, xRedo) - Notes(xI1).ColumnIndex = xCol - Next - - AddUndo(xUndo, xBaseRedo.Next) - UpdatePairing() - RefreshPanelAll() - End Sub - - - Private Sub POBFlip_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles POBFlip.Click - If gXKeyMode <> "DP" Then Exit Sub - Dim xI1 As Integer - Dim xI2 As Integer - Dim xUndo As UndoRedo.LinkedURCmd = Nothing - Dim xRedo As UndoRedo.LinkedURCmd = New UndoRedo.Void - Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo - - ' Array 1: Unmodified array - ' Array R: Flipped array - - Dim xniArray1 = New Integer() {niA1, niA2, niA3, niA4, niA5, niA6, niA7, niA8, niD1, niD2, niD3, niD4, niD5, niD6, niD7, niD8} - Dim xniArrayR = New Integer() {niD8, niD1, niD2, niD3, niD4, niD5, niD6, niD7, niA2, niA3, niA4, niA5, niA6, niA7, niA8, niA1} - - Dim xniArrayLen = xniArray1.Length - - Dim xCol As Integer - For xI1 = 1 To UBound(Notes) - If Not Notes(xI1).Selected Or Notes(xI1).Ghost Then Continue For - - xCol = Notes(xI1).ColumnIndex - For xI2 = 0 To xniArrayLen - 1 - If xCol = xniArray1(xI2) Then - xCol = xniArrayR(xI2) - Exit For - End If - - Next - - Me.RedoMoveNote(Notes(xI1), xCol, Notes(xI1).VPosition, xUndo, xRedo) - Notes(xI1).ColumnIndex = xCol - Next - - AddUndo(xUndo, xBaseRedo.Next) - UpdatePairing() - RefreshPanelAll() - End Sub - - Private Sub POBRandomAll(sender As Object, e As EventArgs) Handles POBRandom.Click, POBRRandom.Click, POBSRandom.Click, POBHRandom.Click - Dim NameS As String = CType(sender, ToolStripMenuItem).Name - - Dim xI1 As Integer - Dim xI2 As Integer - Dim xUndo As UndoRedo.LinkedURCmd = Nothing - Dim xRedo As UndoRedo.LinkedURCmd = New UndoRedo.Void - Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo - - ' gXKeyCol: Unmodified array - ' Array 1: Modified array based on range - ' Array R: Array 1 randomized - - ' New function: Declare an array to see the range of selected notes. B columns ignored. - Dim xRangeL As Integer = niB ' Big number - Dim xRangeU As Integer = 0 ' Smol number - - ' Range finder - For xI1 = 1 To UBound(Notes) - If Not Notes(xI1).Selected Then Continue For - If xRangeL > Notes(xI1).ColumnIndex Then xRangeL = Notes(xI1).ColumnIndex - If xRangeU < Notes(xI1).ColumnIndex Then xRangeU = Notes(xI1).ColumnIndex - Next - - Dim xniArray1(UBound(gXKeyCol)) As Integer - Dim xIA1 As Integer = -1 - For Each ni In gXKeyCol - If xRangeL <= ni AndAlso ni <= xRangeU Then - xIA1 += 1 - xniArray1(xIA1) = ni - End If - Next - If xIA1 <= 0 Then Exit Sub - - ReDim Preserve xniArray1(xIA1) - - Dim xniArrayR() As Integer = CType(xniArray1.Clone(), Integer()) - - Select Case NameS - Case "POBRandom", "POBRRandom" - ' Shuffle columns - If NameS = "POBRandom" Then - Shuffle(xniArrayR) - Else - Dim R As Integer = CInt(Math.Floor(xniArrayR.Length * Rnd())) - Dim M As Integer = CInt(Math.Floor(2 * Rnd()) * 2 - 1) - For i = 0 To UBound(xniArrayR) - xniArrayR(i) = xniArray1((i * M + R + xniArrayR.Length) Mod xniArrayR.Length) - Next - End If - - ' Move notes - Dim xCol As Integer - For xI1 = 1 To UBound(Notes) - With Notes(xI1) - If Not .Selected Or .Ghost Then Continue For - - xCol = .ColumnIndex - For xI2 = 0 To xniArray1.Length - 1 - If xCol = xniArray1(xI2) Then - xCol = xniArrayR(xI2) - Exit For - End If - - Next - - Me.RedoMoveNote(Notes(xI1), xCol, .VPosition, xUndo, xRedo) - .ColumnIndex = xCol - End With - Next - Case "POBSRandom", "POBHRandom" - ' Find array of indexes of selected notes in the same vPosition - xI1 = 1 - Dim xI1Arr(-1) As Integer - Dim vPos As Double - Dim xI1ArrPrevUBound As Integer = -1 ' Used for HRandom - ' Find the first index of selected notes - Do While xI1 <= UBound(Notes) - If Not Notes(xI1).Selected Or Notes(xI1).Ghost Or Notes(xI1).ColumnIndex < xniArray1(0) Or Notes(xI1).ColumnIndex > xniArray1(UBound(xniArray1)) Then xI1 += 1 : Continue Do - ' Begin building array until vPosition changes - vPos = Notes(xI1).VPosition - Do While xI1 <= UBound(Notes) AndAlso Notes(xI1).VPosition = vPos - If Not Notes(xI1).Selected Or Notes(xI1).Ghost Or Notes(xI1).ColumnIndex < xniArray1(0) Or Notes(xI1).ColumnIndex > xniArray1(UBound(xniArray1)) Then xI1 += 1 : Continue Do - ReDim Preserve xI1Arr(xI1Arr.Length) - xI1Arr(UBound(xI1Arr)) = xI1 - xI1 += 1 - Loop - - ' Shuffle columns - If NameS = "POBSRandom" Or xI1ArrPrevUBound = -1 Then ' If SRandom or for HRandom, if it's the first set of notes - Shuffle(xniArrayR) - Else - Dim xniArrayR1(xI1ArrPrevUBound) As Integer - Dim xniArrayR2(UBound(xniArray1) - xI1ArrPrevUBound - 1) As Integer - For i = 0 To UBound(xniArrayR1) - xniArrayR1(i) = xniArrayR(i) - Next - For i = 0 To UBound(xniArrayR2) - xniArrayR2(i) = xniArrayR(i + xI1ArrPrevUBound + 1) - Next - Shuffle(xniArrayR1) - Shuffle(xniArrayR2) - For i = 0 To UBound(xniArrayR2) - xniArrayR(i) = xniArrayR2(i) - Next - For i = UBound(xniArrayR2) + 1 To UBound(xniArrayR) - xniArrayR(i) = xniArrayR1(i - UBound(xniArrayR2) - 1) - Next - End If - - ' Move notes - For xI2 = 0 To UBound(xI1Arr) - Dim xI2I = xI1Arr(xI2) - Me.RedoMoveNote(Notes(xI2I), xniArrayR(xI2), Notes(xI2I).VPosition, xUndo, xRedo) - Notes(xI2I).ColumnIndex = xniArrayR(xI2) - Next - xI1ArrPrevUBound = UBound(xI1Arr) - ReDim xI1Arr(-1) - Loop - End Select - - AddUndo(xUndo, xBaseRedo.Next) - UpdatePairing() - RefreshPanelAll() - End Sub - - Private Sub POBSort_Click(sender As Object, e As EventArgs) Handles POBSort.Click - Dim xI1 As Integer - Dim xI2 As Integer - Dim xUndo As UndoRedo.LinkedURCmd = Nothing - Dim xRedo As UndoRedo.LinkedURCmd = New UndoRedo.Void - Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo - - ' Array 1: Unmodified array - Dim xniArray1() As Integer = gXKeyCol - - Dim xniArrayLen = xniArray1.Length - - Dim vPos As Double - Dim xIArray(0) As Integer - Dim xValueArray(0) As Long - Dim xITemp As Integer - - ' Find array of indexes of selected notes in the same vPosition - xI1 = 1 - Dim xI1Arr(-1) As Integer - ' Find the first index of selected notes - Do While xI1 <= UBound(Notes) - If Not Notes(xI1).Selected Or Notes(xI1).Ghost Or Notes(xI1).ColumnIndex < xniArray1(0) Or Notes(xI1).ColumnIndex > xniArray1(UBound(xniArray1)) Then xI1 += 1 : Continue Do - ' Begin building array until vPosition changes - vPos = Notes(xI1).VPosition - Do While xI1 <= UBound(Notes) AndAlso Math.Abs(GetTimeFromVPosition(Notes(xI1).VPosition) - GetTimeFromVPosition(vPos)) <= ErrorJackSpeed - If Not Notes(xI1).Selected Or Notes(xI1).Ghost Or Notes(xI1).ColumnIndex < xniArray1(0) Or Notes(xI1).ColumnIndex > xniArray1(UBound(xniArray1)) Then xI1 += 1 : Continue Do - ReDim Preserve xI1Arr(xI1Arr.Length) - xI1Arr(UBound(xI1Arr)) = xI1 - xI1 += 1 - Loop - - ' Sort columns, insertion sort - For xI2 = 1 To UBound(xI1Arr) - For xI3 = xI2 To 1 Step -1 - If Notes(xI1Arr(xI2 - 1)).Value > Notes(xI1Arr(xI2)).Value Then - xITemp = xI1Arr(xI2 - 1) - xI1Arr(xI2 - 1) = xI1Arr(xI2) - xI1Arr(xI2) = xITemp - Else - Exit For - End If - Next - Next - - ' Move notes - For xI2 = 0 To UBound(xI1Arr) - Dim xI2I = xI1Arr(xI2) - Me.RedoMoveNote(Notes(xI2I), xniArray1(xI2), Notes(xI2I).VPosition, xUndo, xRedo) - Notes(xI2I).ColumnIndex = xniArray1(xI2) - Next - ReDim xI1Arr(-1) - Loop - - AddUndo(xUndo, xBaseRedo.Next) - UpdatePairing() - RefreshPanelAll() - End Sub - Private Sub ValidateSelection() If vSelStart < 0 Then vSelLength += vSelStart : vSelHalf += vSelStart : vSelStart = 0 @@ -4086,9 +3800,9 @@ Public Class MainWindow Case Else : xTE = 0 End Select - Dim xDiag As New OpGeneral(gWheel, gPgUpDn, MiddleButtonMoveMethod, xTE, CInt(192.0R / BMSGridLimit), + Dim xDiag As New OpGeneral(gWheel, gPgUpDn, MiddleButtonMoveMethod, xTE, CInt(192.0R / BMSGridLimit), ErrorJackBPM, ErrorJackTH, gLNGap, AutoSaveInterval, BeepWhileSaved, BPMx1296, STOPx1296, AudioLine, TemplateSnapToVPosition, - AutoFocusMouseEnter, FirstClickDisabled, ClickStopPreview, ErrorJackBPM, ErrorJackTH) + AutoFocusMouseEnter, FirstClickDisabled, ClickStopPreview) If xDiag.ShowDialog() = Windows.Forms.DialogResult.OK Then With xDiag @@ -4099,6 +3813,10 @@ Public Class MainWindow MiddleButtonMoveMethod = .zMiddle AutoSaveInterval = .zAutoSave BMSGridLimit = 192.0R / .zGridPartition + ErrorJackBPM = .nJackBPM.Value + ErrorJackTH = .nJackTH.Value + ErrorJackSpeed = 60 * 4 / .nJackBPM.Value / .nJackTH.Value + gLNGap = .NLNGap.Value BeepWhileSaved = .cBeep.Checked BPMx1296 = .cBpm1296.Checked STOPx1296 = .cStop1296.Checked @@ -4107,9 +3825,6 @@ Public Class MainWindow AutoFocusMouseEnter = .cMEnterFocus.Checked FirstClickDisabled = .cMClickFocus.Checked ClickStopPreview = .cMStopPreview.Checked - ErrorJackBPM = .nJackBPM.Value - ErrorJackTH = .nJackTH.Value - ErrorJackSpeed = 60 * 4 / .nJackBPM.Value / .nJackTH.Value End With If AutoSaveInterval > 0 Then AutoSaveTimer.Interval = AutoSaveInterval AutoSaveTimer.Enabled = AutoSaveInterval > 0 @@ -4230,6 +3945,106 @@ Public Class MainWindow RefreshPanelAll() End Sub + Private Sub POBAutoLong_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles POBAutoLongVPosition.Click + ' TODO: Make it applicable to notes with the same VPosition, not just one note at a time + If Not NTInput Then ConvertBMSE2NT() + + Dim xUndo As UndoRedo.LinkedURCmd = Nothing + Dim xRedo As UndoRedo.LinkedURCmd = New UndoRedo.Void + Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo + + Dim xIPrev(-1) As Integer + Dim xI1 = 1 + Do While xI1 <= UBound(Notes) + If Not Notes(xI1).Selected Or Notes(xI1).Ghost Then xI1 += 1 : Continue Do + + ' Get xICurrCol to see if LN shortening is required due to being in the same column as the next note + Dim xICurr = GetNotesBySelectedAndVPosition(Notes(xI1).VPosition) + Dim xICurrCol(UBound(xICurr)) As Integer + For i = 0 To UBound(xICurrCol) + xICurrCol(i) = Notes(xICurr(i)).ColumnIndex + Next + If xIPrev.Length <> 0 Then + For Each xIPrevIndv In xIPrev + Dim xLen As Double = Math.Max(Notes(xI1).VPosition - Notes(xIPrevIndv).VPosition - + CDbl(IIf(xICurrCol.Contains(Notes(xIPrevIndv).ColumnIndex), gLNGap * 192 / 4, 0)), + 0) + + RedoLongNoteModify(Notes(xIPrevIndv), Notes(xIPrevIndv).VPosition, xLen, xUndo, xRedo) + Notes(xIPrevIndv).Length = xLen + + Next + End If + xIPrev = xICurr + xI1 = xIPrev(UBound(xIPrev)) + 1 + Loop + + If xIPrev.Length <> 0 Then + For Each xIPrevIndv In xIPrev + Dim xWLWAV As Integer = CInt(Notes(xIPrevIndv).Value / 10000) + If wLWAV(xWLWAV).Duration = 0 Then wLWAV(xWLWAV) = LoadDuration(ExcludeFileName(FileName) & "\" & hWAV(xWLWAV)) + + Dim xLen As Double = Math.Max(GetVPositionFromTime(GetTimeFromVPosition(Notes(xIPrevIndv).VPosition) + + wLWAV(xWLWAV).Duration) - + Notes(xIPrevIndv).VPosition - gLNGap * 192 / 4, 0) + + RedoLongNoteModify(Notes(xIPrevIndv), Notes(xIPrevIndv).VPosition, xLen, xUndo, xRedo) + Notes(xIPrevIndv).Length = xLen + Next + End If + + If Not NTInput Then ConvertNT2BMSE() + + AddUndo(xUndo, xBaseRedo.Next) + SortByVPositionInsertion() + UpdatePairing() + RefreshPanelAll() + End Sub + + Private Sub POBAutoLongColumn_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles POBAutoLongColumn.Click + ' TODO: Make it + If Not NTInput Then ConvertBMSE2NT() + + Dim xUndo As UndoRedo.LinkedURCmd = Nothing + Dim xRedo As UndoRedo.LinkedURCmd = New UndoRedo.Void + Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo + + Dim xIPrev(UBound(gXKeyCol)) As Integer + For xI1 As Integer = 1 To UBound(Notes) + If Not Notes(xI1).Selected OrElse Notes(xI1).Ghost OrElse Not gXKeyCol.Contains(Notes(xI1).ColumnIndex) Then Continue For + + Dim xICol = Array.IndexOf(gXKeyCol, Notes(xI1).ColumnIndex) + If xIPrev(xICol) <> 0 Then + Dim xLen As Double = Math.Max(Notes(xI1).VPosition - Notes(xIPrev(xICol)).VPosition - gLNGap * 192 / 4, 0) + + RedoLongNoteModify(Notes(xIPrev(xICol)), Notes(xIPrev(xICol)).VPosition, xLen, xUndo, xRedo) + Notes(xIPrev(xICol)).Length = xLen + End If + xIPrev(xICol) = xI1 + Next + + For Each xIPrevIndv In xIPrev + If xIPrevIndv <> 0 Then + Dim xWLWAV As Integer = CInt(Notes(xIPrevIndv).Value / 10000) + If wLWAV(xWLWAV).Duration = 0 Then wLWAV(xWLWAV) = LoadDuration(ExcludeFileName(FileName) & "\" & hWAV(xWLWAV)) + + Dim xLen As Double = Math.Max(GetVPositionFromTime(GetTimeFromVPosition(Notes(xIPrevIndv).VPosition) + + wLWAV(xWLWAV).Duration) - + Notes(xIPrevIndv).VPosition - gLNGap * 192 / 4, 0) + + RedoLongNoteModify(Notes(xIPrevIndv), Notes(xIPrevIndv).VPosition, xLen, xUndo, xRedo) + Notes(xIPrevIndv).Length = xLen + End If + Next + + If Not NTInput Then ConvertNT2BMSE() + + AddUndo(xUndo, xBaseRedo.Next) + SortByVPositionInsertion() + UpdatePairing() + RefreshPanelAll() + End Sub + Private Sub POBHidden_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles POBHidden.Click Dim xUndo As UndoRedo.LinkedURCmd = Nothing Dim xRedo As UndoRedo.LinkedURCmd = New UndoRedo.Void @@ -4255,103 +4070,409 @@ Public Class MainWindow For xI1 As Integer = 1 To UBound(Notes) If Not Notes(xI1).Selected Or Notes(xI1).Ghost Then Continue For - Me.RedoHiddenNoteModify(Notes(xI1), False, True, xUndo, xRedo) - Notes(xI1).Hidden = False + Me.RedoHiddenNoteModify(Notes(xI1), False, True, xUndo, xRedo) + Notes(xI1).Hidden = False + Next + AddUndo(xUndo, xBaseRedo.Next) + SortByVPositionInsertion() + UpdatePairing() + RefreshPanelAll() + End Sub + + Private Sub POBHiddenVisible_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles POBHiddenVisible.Click + Dim xUndo As UndoRedo.LinkedURCmd = Nothing + Dim xRedo As UndoRedo.LinkedURCmd = New UndoRedo.Void + Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo + + For xI1 As Integer = 1 To UBound(Notes) + If Not Notes(xI1).Selected Or Notes(xI1).Ghost Then Continue For + + Me.RedoHiddenNoteModify(Notes(xI1), Not Notes(xI1).Hidden, True, xUndo, xRedo) + Notes(xI1).Hidden = Not Notes(xI1).Hidden + Next + AddUndo(xUndo, xBaseRedo.Next) + SortByVPositionInsertion() + UpdatePairing() + RefreshPanelAll() + End Sub + + Private Sub POBModify_Click(ByVal sender As System.Object, ByVal e As EventArgs) Handles POBModify.Click + Dim xNum As Boolean = False + Dim xLbl As Boolean = False + Dim xI1 As Integer + + For xI1 = 1 To UBound(Notes) + If Notes(xI1).Selected AndAlso IsColumnNumeric(Notes(xI1).ColumnIndex) Then xNum = True : Exit For + Next + For xI1 = 1 To UBound(Notes) + If Notes(xI1).Selected AndAlso Not IsColumnNumeric(Notes(xI1).ColumnIndex) Then xLbl = True : Exit For + Next + If Not (xNum Or xLbl) Then Exit Sub + + If xNum Then + Dim xD1 As Long = CLng(InputBox(Strings.Messages.PromptEnterNumeric, Text)) * 10000 + If Not xD1 = 0 Then + If xD1 <= 0 Then xD1 = 1 + + Dim xUndo As UndoRedo.LinkedURCmd = Nothing + Dim xRedo As UndoRedo.LinkedURCmd = New UndoRedo.Void + Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo + + For xI1 = 1 To UBound(Notes) + If Not IsColumnNumeric(Notes(xI1).ColumnIndex) Or Not Notes(xI1).Selected Or Notes(xI1).Ghost Then Continue For + + Me.RedoRelabelNote(Notes(xI1), xD1, xUndo, xRedo) + Notes(xI1).Value = xD1 + Next + AddUndo(xUndo, xBaseRedo.Next) + End If + End If + + If xLbl Then + Dim xStr As String = UCase(Trim(InputBox(Strings.Messages.PromptEnter, Me.Text))) + + If Len(xStr) <> 0 Then + Dim Valid As Boolean = True + + If xStr = "00" Or xStr = "0" Then Valid = False + If Not Len(xStr) = 1 And Not Len(xStr) = 2 Then Valid = False + + Dim xI3 As Integer = Asc(Mid(xStr, 1, 1)) + If Not ((xI3 >= 48 And xI3 <= 57) Or (xI3 >= 65 And xI3 <= 90)) Then Valid = False + If Len(xStr) = 2 Then + Dim xI4 As Integer = Asc(Mid(xStr, 2, 1)) + If Not ((xI4 >= 48 And xI4 <= 57) Or (xI4 >= 65 And xI4 <= 90)) Then Valid = False + End If + + If Valid Then + Dim xVal As Integer = C36to10(xStr) * 10000 + + Dim xUndo As UndoRedo.LinkedURCmd = Nothing + Dim xRedo As UndoRedo.LinkedURCmd = New UndoRedo.Void + Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo + + For xI1 = 1 To UBound(Notes) + If IsColumnNumeric(Notes(xI1).ColumnIndex) Or Not Notes(xI1).Selected Or Notes(xI1).Ghost Then Continue For + + Me.RedoRelabelNote(Notes(xI1), xVal, xUndo, xRedo) + Notes(xI1).Value = xVal + Next + AddUndo(xUndo, xBaseRedo.Next) + Else + MsgBox(Strings.Messages.InvalidLabel, MsgBoxStyle.Critical, Strings.Messages.Err) + End If + End If + End If + + RefreshPanelAll() + End Sub + + Private Sub POBMirror_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles POBMirror.Click + Dim xI1 As Integer + Dim xI2 As Integer + Dim xUndo As UndoRedo.LinkedURCmd = Nothing + Dim xRedo As UndoRedo.LinkedURCmd = New UndoRedo.Void + Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo + 'xRedo &= sCmdKM(niA1, .VPosition, .Value, IIf(NTInput, .Length, .LongNote), .Hidden, RealColumnToEnabled(niA7) - RealColumnToEnabled(niA1), 0, True) & vbCrLf + 'xUndo &= sCmdKM(niA7, .VPosition, .Value, IIf(NTInput, .Length, .LongNote), .Hidden, RealColumnToEnabled(niA1) - RealColumnToEnabled(niA7), 0, True) & vbCrLf + + ' gXKeyCol: Unmodified array + ' Array 1: Modified array based on range + ' Array R: Array 1 reversed + + ' New function: Declare an array to see the range of selected notes. B columns ignored. + Dim xRangeL As Integer = niB ' Big number + Dim xRangeU As Integer = 0 ' Smol number + + ' Range finder + For xI1 = 1 To UBound(Notes) + If Not Notes(xI1).Selected Then Continue For + If xRangeL > Notes(xI1).ColumnIndex Then xRangeL = Notes(xI1).ColumnIndex + If xRangeU < Notes(xI1).ColumnIndex Then xRangeU = Notes(xI1).ColumnIndex + Next + + Dim xniArray1(UBound(gXKeyCol)) As Integer + Dim xIA1 As Integer = -1 + For Each ni In gXKeyCol + If xRangeL <= ni AndAlso ni <= xRangeU Then + xIA1 += 1 + xniArray1(xIA1) = ni + End If + Next + If xIA1 <= 0 Then Exit Sub + + ReDim Preserve xniArray1(xIA1) + + Dim xniArrayR = xniArray1.Reverse() + Dim xniArrayLen = xniArray1.Length + + Dim xCol As Integer + For xI1 = 1 To UBound(Notes) + If Not Notes(xI1).Selected Or Notes(xI1).Ghost Then Continue For + + xCol = Notes(xI1).ColumnIndex + ' MsgBox("Test" & "xCol: " & xCol & " xI1: " & xI1) + For xI2 = 0 To xniArrayLen - 1 + ' MsgBox("Test 2 xI2: " & xI2) + If xCol = xniArray1(xI2) Then + xCol = xniArrayR(xI2) + Exit For + End If + + Next + + Me.RedoMoveNote(Notes(xI1), xCol, Notes(xI1).VPosition, xUndo, xRedo) + Notes(xI1).ColumnIndex = xCol Next + AddUndo(xUndo, xBaseRedo.Next) - SortByVPositionInsertion() UpdatePairing() RefreshPanelAll() End Sub - Private Sub POBHiddenVisible_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles POBHiddenVisible.Click + + Private Sub POBFlip_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles POBFlip.Click + If gXKeyMode <> "DP" Then Exit Sub + Dim xI1 As Integer + Dim xI2 As Integer Dim xUndo As UndoRedo.LinkedURCmd = Nothing Dim xRedo As UndoRedo.LinkedURCmd = New UndoRedo.Void Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo - For xI1 As Integer = 1 To UBound(Notes) + ' Array 1: Unmodified array + ' Array R: Flipped array + + Dim xniArray1 = New Integer() {niA1, niA2, niA3, niA4, niA5, niA6, niA7, niA8, niD1, niD2, niD3, niD4, niD5, niD6, niD7, niD8} + Dim xniArrayR = New Integer() {niD8, niD1, niD2, niD3, niD4, niD5, niD6, niD7, niA2, niA3, niA4, niA5, niA6, niA7, niA8, niA1} + + Dim xniArrayLen = xniArray1.Length + + Dim xCol As Integer + For xI1 = 1 To UBound(Notes) If Not Notes(xI1).Selected Or Notes(xI1).Ghost Then Continue For - Me.RedoHiddenNoteModify(Notes(xI1), Not Notes(xI1).Hidden, True, xUndo, xRedo) - Notes(xI1).Hidden = Not Notes(xI1).Hidden + xCol = Notes(xI1).ColumnIndex + For xI2 = 0 To xniArrayLen - 1 + If xCol = xniArray1(xI2) Then + xCol = xniArrayR(xI2) + Exit For + End If + + Next + + Me.RedoMoveNote(Notes(xI1), xCol, Notes(xI1).VPosition, xUndo, xRedo) + Notes(xI1).ColumnIndex = xCol Next + AddUndo(xUndo, xBaseRedo.Next) - SortByVPositionInsertion() UpdatePairing() RefreshPanelAll() End Sub - Private Sub POBModify_Click(ByVal sender As System.Object, ByVal e As EventArgs) Handles POBModify.Click - Dim xNum As Boolean = False - Dim xLbl As Boolean = False + Private Sub POBRandomAll(sender As Object, e As EventArgs) Handles POBRandom.Click, POBRRandom.Click, POBSRandom.Click, POBHRandom.Click + Dim NameS As String = CType(sender, ToolStripMenuItem).Name + Dim xI1 As Integer + Dim xI2 As Integer + Dim xUndo As UndoRedo.LinkedURCmd = Nothing + Dim xRedo As UndoRedo.LinkedURCmd = New UndoRedo.Void + Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo + + ' gXKeyCol: Unmodified array + ' Array 1: Modified array based on range + ' Array R: Array 1 randomized + + ' New function: Declare an array to see the range of selected notes. B columns ignored. + Dim xRangeL As Integer = niB ' Big number + Dim xRangeU As Integer = 0 ' Smol number + ' Range finder For xI1 = 1 To UBound(Notes) - If Notes(xI1).Selected AndAlso IsColumnNumeric(Notes(xI1).ColumnIndex) Then xNum = True : Exit For + If Not Notes(xI1).Selected Then Continue For + If xRangeL > Notes(xI1).ColumnIndex Then xRangeL = Notes(xI1).ColumnIndex + If xRangeU < Notes(xI1).ColumnIndex Then xRangeU = Notes(xI1).ColumnIndex Next - For xI1 = 1 To UBound(Notes) - If Notes(xI1).Selected AndAlso Not IsColumnNumeric(Notes(xI1).ColumnIndex) Then xLbl = True : Exit For + + Dim xniArray1(UBound(gXKeyCol)) As Integer + Dim xIA1 As Integer = -1 + For Each ni In gXKeyCol + If xRangeL <= ni AndAlso ni <= xRangeU Then + xIA1 += 1 + xniArray1(xIA1) = ni + End If Next - If Not (xNum Or xLbl) Then Exit Sub + If xIA1 <= 0 Then Exit Sub - If xNum Then - Dim xD1 As Long = CLng(InputBox(Strings.Messages.PromptEnterNumeric, Text)) * 10000 - If Not xD1 = 0 Then - If xD1 <= 0 Then xD1 = 1 + ReDim Preserve xniArray1(xIA1) - Dim xUndo As UndoRedo.LinkedURCmd = Nothing - Dim xRedo As UndoRedo.LinkedURCmd = New UndoRedo.Void - Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo + Dim xniArrayR() As Integer = CType(xniArray1.Clone(), Integer()) + + Select Case NameS + Case "POBRandom", "POBRRandom" + ' Shuffle columns + If NameS = "POBRandom" Then + Shuffle(xniArrayR) + Else + Dim R As Integer = CInt(Math.Floor(xniArrayR.Length * Rnd())) + Dim M As Integer = CInt(Math.Floor(2 * Rnd()) * 2 - 1) + For i = 0 To UBound(xniArrayR) + xniArrayR(i) = xniArray1((i * M + R + xniArrayR.Length) Mod xniArrayR.Length) + Next + End If + ' Move notes + Dim xCol As Integer For xI1 = 1 To UBound(Notes) - If Not IsColumnNumeric(Notes(xI1).ColumnIndex) Or Not Notes(xI1).Selected Or Notes(xI1).Ghost Then Continue For + With Notes(xI1) + If Not .Selected Or .Ghost Then Continue For - Me.RedoRelabelNote(Notes(xI1), xD1, xUndo, xRedo) - Notes(xI1).Value = xD1 + xCol = .ColumnIndex + For xI2 = 0 To xniArray1.Length - 1 + If xCol = xniArray1(xI2) Then + xCol = xniArrayR(xI2) + Exit For + End If + + Next + + Me.RedoMoveNote(Notes(xI1), xCol, .VPosition, xUndo, xRedo) + .ColumnIndex = xCol + End With Next - AddUndo(xUndo, xBaseRedo.Next) - End If - End If + Case "POBSRandom", "POBHRandom" + ' Find array of indexes of selected notes in the same vPosition + xI1 = 1 + Dim xI1Arr(-1) As Integer + Dim vPos As Double + Dim xI1ArrPrevUBound As Integer = -1 ' Used for HRandom + ' Find the first index of selected notes + Do While xI1 <= UBound(Notes) + If Not Notes(xI1).Selected Or Notes(xI1).Ghost Or Notes(xI1).ColumnIndex < xniArray1(0) Or Notes(xI1).ColumnIndex > xniArray1(UBound(xniArray1)) Then xI1 += 1 : Continue Do + ' Begin building array until vPosition changes + vPos = Notes(xI1).VPosition + Do While xI1 <= UBound(Notes) AndAlso Notes(xI1).VPosition = vPos + If Not Notes(xI1).Selected Or Notes(xI1).Ghost Or Notes(xI1).ColumnIndex < xniArray1(0) Or Notes(xI1).ColumnIndex > xniArray1(UBound(xniArray1)) Then xI1 += 1 : Continue Do + ReDim Preserve xI1Arr(xI1Arr.Length) + xI1Arr(UBound(xI1Arr)) = xI1 + xI1 += 1 + Loop - If xLbl Then - Dim xStr As String = UCase(Trim(InputBox(Strings.Messages.PromptEnter, Me.Text))) + ' Shuffle columns + If NameS = "POBSRandom" Or xI1ArrPrevUBound = -1 Then ' If SRandom or for HRandom, if it's the first set of notes + Shuffle(xniArrayR) + Else + Dim xniArrayR1(xI1ArrPrevUBound) As Integer + Dim xniArrayR2(UBound(xniArray1) - xI1ArrPrevUBound - 1) As Integer + For i = 0 To UBound(xniArrayR1) + xniArrayR1(i) = xniArrayR(i) + Next + For i = 0 To UBound(xniArrayR2) + xniArrayR2(i) = xniArrayR(i + xI1ArrPrevUBound + 1) + Next + Shuffle(xniArrayR1) + Shuffle(xniArrayR2) + For i = 0 To UBound(xniArrayR2) + xniArrayR(i) = xniArrayR2(i) + Next + For i = UBound(xniArrayR2) + 1 To UBound(xniArrayR) + xniArrayR(i) = xniArrayR1(i - UBound(xniArrayR2) - 1) + Next + End If - If Len(xStr) <> 0 Then - Dim Valid As Boolean = True + ' Move notes + For xI2 = 0 To UBound(xI1Arr) + Dim xI2I = xI1Arr(xI2) + Me.RedoMoveNote(Notes(xI2I), xniArrayR(xI2), Notes(xI2I).VPosition, xUndo, xRedo) + Notes(xI2I).ColumnIndex = xniArrayR(xI2) + Next + xI1ArrPrevUBound = UBound(xI1Arr) + ReDim xI1Arr(-1) + Loop + End Select - If xStr = "00" Or xStr = "0" Then Valid = False - If Not Len(xStr) = 1 And Not Len(xStr) = 2 Then Valid = False + AddUndo(xUndo, xBaseRedo.Next) + UpdatePairing() + RefreshPanelAll() + End Sub - Dim xI3 As Integer = Asc(Mid(xStr, 1, 1)) - If Not ((xI3 >= 48 And xI3 <= 57) Or (xI3 >= 65 And xI3 <= 90)) Then Valid = False - If Len(xStr) = 2 Then - Dim xI4 As Integer = Asc(Mid(xStr, 2, 1)) - If Not ((xI4 >= 48 And xI4 <= 57) Or (xI4 >= 65 And xI4 <= 90)) Then Valid = False - End If + Private Sub POBSort_Click(sender As Object, e As EventArgs) Handles POBSort.Click + Dim xI1 As Integer + Dim xI2 As Integer + Dim xUndo As UndoRedo.LinkedURCmd = Nothing + Dim xRedo As UndoRedo.LinkedURCmd = New UndoRedo.Void + Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo - If Valid Then - Dim xVal As Integer = C36to10(xStr) * 10000 + ' Array 1: Unmodified array + Dim xniArray1() As Integer = gXKeyCol - Dim xUndo As UndoRedo.LinkedURCmd = Nothing - Dim xRedo As UndoRedo.LinkedURCmd = New UndoRedo.Void - Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo + Dim xniArrayLen = xniArray1.Length - For xI1 = 1 To UBound(Notes) - If IsColumnNumeric(Notes(xI1).ColumnIndex) Or Not Notes(xI1).Selected Or Notes(xI1).Ghost Then Continue For + Dim vPos As Double + Dim xIArray(0) As Integer + Dim xValueArray(0) As Long + Dim xITemp As Integer - Me.RedoRelabelNote(Notes(xI1), xVal, xUndo, xRedo) - Notes(xI1).Value = xVal - Next - AddUndo(xUndo, xBaseRedo.Next) - Else - MsgBox(Strings.Messages.InvalidLabel, MsgBoxStyle.Critical, Strings.Messages.Err) - End If - End If - End If + ' Find array of indexes of selected notes in the same vPosition + xI1 = 1 + Dim xI1Arr(-1) As Integer + ' Find the first index of selected notes + Do While xI1 <= UBound(Notes) + If Not Notes(xI1).Selected Or Notes(xI1).Ghost Or Notes(xI1).ColumnIndex < xniArray1(0) Or Notes(xI1).ColumnIndex > xniArray1(UBound(xniArray1)) Then xI1 += 1 : Continue Do + ' Begin building array until vPosition changes + vPos = Notes(xI1).VPosition + Do While xI1 <= UBound(Notes) AndAlso Math.Abs(GetTimeFromVPosition(Notes(xI1).VPosition) - GetTimeFromVPosition(vPos)) <= ErrorJackSpeed + If Not Notes(xI1).Selected Or Notes(xI1).Ghost Or Notes(xI1).ColumnIndex < xniArray1(0) Or Notes(xI1).ColumnIndex > xniArray1(UBound(xniArray1)) Then xI1 += 1 : Continue Do + ReDim Preserve xI1Arr(xI1Arr.Length) + xI1Arr(UBound(xI1Arr)) = xI1 + xI1 += 1 + Loop + + ' Sort columns, insertion sort + For xI2 = 1 To UBound(xI1Arr) + For xI3 = xI2 To 1 Step -1 + If Notes(xI1Arr(xI2 - 1)).Value > Notes(xI1Arr(xI2)).Value Then + xITemp = xI1Arr(xI2 - 1) + xI1Arr(xI2 - 1) = xI1Arr(xI2) + xI1Arr(xI2) = xITemp + Else + Exit For + End If + Next + Next + + ' Move notes + For xI2 = 0 To UBound(xI1Arr) + Dim xI2I = xI1Arr(xI2) + Me.RedoMoveNote(Notes(xI2I), xniArray1(xI2), Notes(xI2I).VPosition, xUndo, xRedo) + Notes(xI2I).ColumnIndex = xniArray1(xI2) + Next + ReDim xI1Arr(-1) + Loop + AddUndo(xUndo, xBaseRedo.Next) + UpdatePairing() RefreshPanelAll() End Sub + Private Function GetNotesBySelectedAndVPosition(ByVal VPos As Double, Optional xI As Integer = 1) As Integer() + Dim xIArr(-1) As Integer + For xIN = xI To UBound(Notes) + If Not Notes(xIN).Selected OrElse Notes(xIN).Ghost Then Continue For + + If Notes(xIN).VPosition = VPos Then + ReDim Preserve xIArr(xIArr.Length) + xIArr(UBound(xIArr)) = xIN + ElseIf Notes(xIN).VPosition > VPos Then + Exit For + End If + Next + Return xIArr + End Function + + Private Function GetNotesBySelectedAndVPosition(ByVal xIN As Integer, Optional xI As Integer = 1) As Integer() + Return GetNotesBySelectedAndVPosition(Notes(xIN).VPosition, xI) + End Function + Private Sub TBMyO2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBMyO2.Click, mnMyO2.Click Dim xDiag As New dgMyO2 xDiag.Show() diff --git a/iBMSC/My Project/AssemblyInfo.vb b/iBMSC/My Project/AssemblyInfo.vb index 415008d9e..f39b82288 100644 --- a/iBMSC/My Project/AssemblyInfo.vb +++ b/iBMSC/My Project/AssemblyInfo.vb @@ -30,7 +30,7 @@ Imports System.Resources ' by using the '*' as shown below: ' - - + + \ No newline at end of file diff --git a/iBMSC/Option Windows/OpGeneral.Designer.vb b/iBMSC/Option Windows/OpGeneral.Designer.vb index e52ca683c..588085445 100644 --- a/iBMSC/Option Windows/OpGeneral.Designer.vb +++ b/iBMSC/Option Windows/OpGeneral.Designer.vb @@ -57,10 +57,15 @@ Partial Class OpGeneral Me.Label8 = New System.Windows.Forms.Label() Me.nJackTH = New System.Windows.Forms.NumericUpDown() Me.Label9 = New System.Windows.Forms.Label() - Me.LabelTH = New System.Windows.Forms.Label() + Me.LabelTHJack = New System.Windows.Forms.Label() Me.TableLayoutPanel2 = New System.Windows.Forms.TableLayoutPanel() Me.cAudioLine = New System.Windows.Forms.CheckBox() Me.cTemplateSnapToVPosition = New System.Windows.Forms.CheckBox() + Me.NLNGap = New System.Windows.Forms.NumericUpDown() + Me.Label10 = New System.Windows.Forms.Label() + Me.TableLayoutPanel3 = New System.Windows.Forms.TableLayoutPanel() + Me.TableLayoutPanel4 = New System.Windows.Forms.TableLayoutPanel() + Me.LabelTHLN = New System.Windows.Forms.Label() Me.TableLayoutPanel1.SuspendLayout() CType(Me.PictureBox1, System.ComponentModel.ISupportInitialize).BeginInit() CType(Me.NAutoSave, System.ComponentModel.ISupportInitialize).BeginInit() @@ -69,6 +74,9 @@ Partial Class OpGeneral CType(Me.nJackBPM, System.ComponentModel.ISupportInitialize).BeginInit() CType(Me.nJackTH, System.ComponentModel.ISupportInitialize).BeginInit() Me.TableLayoutPanel2.SuspendLayout() + CType(Me.NLNGap, System.ComponentModel.ISupportInitialize).BeginInit() + Me.TableLayoutPanel3.SuspendLayout() + Me.TableLayoutPanel4.SuspendLayout() Me.SuspendLayout() ' 'TableLayoutPanel1 @@ -79,7 +87,7 @@ Partial Class OpGeneral Me.TableLayoutPanel1.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50.0!)) Me.TableLayoutPanel1.Controls.Add(Me.OK_Button, 0, 0) Me.TableLayoutPanel1.Controls.Add(Me.Cancel_Button, 1, 0) - Me.TableLayoutPanel1.Location = New System.Drawing.Point(229, 552) + Me.TableLayoutPanel1.Location = New System.Drawing.Point(229, 595) Me.TableLayoutPanel1.Name = "TableLayoutPanel1" Me.TableLayoutPanel1.RowCount = 1 Me.TableLayoutPanel1.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50.0!)) @@ -112,7 +120,7 @@ Partial Class OpGeneral Me.CWheel.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList Me.CWheel.FormattingEnabled = True Me.CWheel.Items.AddRange(New Object() {"1", "1 / 2", "1 / 3", "1 / 4"}) - Me.CWheel.Location = New System.Drawing.Point(154, 358) + Me.CWheel.Location = New System.Drawing.Point(154, 401) Me.CWheel.Name = "CWheel" Me.CWheel.Size = New System.Drawing.Size(237, 23) Me.CWheel.TabIndex = 101 @@ -131,7 +139,7 @@ Partial Class OpGeneral ' Me.Label1.Anchor = CType(((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left) _ Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) - Me.Label1.Location = New System.Drawing.Point(12, 360) + Me.Label1.Location = New System.Drawing.Point(12, 403) Me.Label1.Name = "Label1" Me.Label1.Size = New System.Drawing.Size(136, 17) Me.Label1.TabIndex = 100 @@ -167,12 +175,12 @@ Partial Class OpGeneral ' 'cBeep ' - Me.cBeep.Anchor = CType(((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Left) _ + Me.cBeep.Anchor = CType(((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left) _ Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) Me.cBeep.AutoSize = True Me.cBeep.Checked = True Me.cBeep.CheckState = System.Windows.Forms.CheckState.Checked - Me.cBeep.Location = New System.Drawing.Point(32, 206) + Me.cBeep.Location = New System.Drawing.Point(32, 249) Me.cBeep.Name = "cBeep" Me.cBeep.Size = New System.Drawing.Size(116, 19) Me.cBeep.TabIndex = 12 @@ -184,7 +192,7 @@ Partial Class OpGeneral Me.PictureBox1.Anchor = CType(((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left) _ Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) Me.PictureBox1.BackColor = System.Drawing.Color.FromArgb(CType(CType(64, Byte), Integer), CType(CType(64, Byte), Integer), CType(CType(64, Byte), Integer)) - Me.PictureBox1.Location = New System.Drawing.Point(20, 342) + Me.PictureBox1.Location = New System.Drawing.Point(20, 385) Me.PictureBox1.Name = "PictureBox1" Me.PictureBox1.Size = New System.Drawing.Size(375, 1) Me.PictureBox1.TabIndex = 47 @@ -192,10 +200,10 @@ Partial Class OpGeneral ' 'cBpm1296 ' - Me.cBpm1296.Anchor = CType(((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Left) _ + Me.cBpm1296.Anchor = CType(((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left) _ Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) Me.cBpm1296.AutoSize = True - Me.cBpm1296.Location = New System.Drawing.Point(32, 231) + Me.cBpm1296.Location = New System.Drawing.Point(32, 274) Me.cBpm1296.Name = "cBpm1296" Me.cBpm1296.Size = New System.Drawing.Size(254, 19) Me.cBpm1296.TabIndex = 13 @@ -204,10 +212,10 @@ Partial Class OpGeneral ' 'cStop1296 ' - Me.cStop1296.Anchor = CType(((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Left) _ + Me.cStop1296.Anchor = CType(((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left) _ Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) Me.cStop1296.AutoSize = True - Me.cStop1296.Location = New System.Drawing.Point(32, 256) + Me.cStop1296.Location = New System.Drawing.Point(32, 299) Me.cStop1296.Name = "cStop1296" Me.cStop1296.Size = New System.Drawing.Size(197, 19) Me.cStop1296.TabIndex = 14 @@ -219,7 +227,7 @@ Partial Class OpGeneral Me.cMEnterFocus.Anchor = CType(((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left) _ Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) Me.cMEnterFocus.AutoSize = True - Me.cMEnterFocus.Location = New System.Drawing.Point(34, 468) + Me.cMEnterFocus.Location = New System.Drawing.Point(34, 511) Me.cMEnterFocus.Name = "cMEnterFocus" Me.cMEnterFocus.Size = New System.Drawing.Size(322, 19) Me.cMEnterFocus.TabIndex = 106 @@ -231,7 +239,7 @@ Partial Class OpGeneral Me.cMClickFocus.Anchor = CType(((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left) _ Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) Me.cMClickFocus.AutoSize = True - Me.cMClickFocus.Location = New System.Drawing.Point(34, 493) + Me.cMClickFocus.Location = New System.Drawing.Point(34, 536) Me.cMClickFocus.Name = "cMClickFocus" Me.cMClickFocus.Size = New System.Drawing.Size(293, 19) Me.cMClickFocus.TabIndex = 107 @@ -260,7 +268,7 @@ Partial Class OpGeneral ' Me.Label5.Anchor = CType(((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left) _ Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) - Me.Label5.Location = New System.Drawing.Point(12, 389) + Me.Label5.Location = New System.Drawing.Point(12, 432) Me.Label5.Name = "Label5" Me.Label5.Size = New System.Drawing.Size(136, 17) Me.Label5.TabIndex = 102 @@ -274,17 +282,17 @@ Partial Class OpGeneral Me.CPgUpDn.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList Me.CPgUpDn.FormattingEnabled = True Me.CPgUpDn.Items.AddRange(New Object() {"8", "6", "4", "3", "2", "1", "1 / 2"}) - Me.CPgUpDn.Location = New System.Drawing.Point(154, 387) + Me.CPgUpDn.Location = New System.Drawing.Point(154, 430) Me.CPgUpDn.Name = "CPgUpDn" Me.CPgUpDn.Size = New System.Drawing.Size(237, 23) Me.CPgUpDn.TabIndex = 103 ' 'NAutoSave ' - Me.NAutoSave.Anchor = CType(((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Left) _ + Me.NAutoSave.Anchor = CType(((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left) _ Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) Me.NAutoSave.DecimalPlaces = 1 - Me.NAutoSave.Location = New System.Drawing.Point(171, 179) + Me.NAutoSave.Location = New System.Drawing.Point(171, 222) Me.NAutoSave.Maximum = New Decimal(New Integer() {60, 0, 0, 0}) Me.NAutoSave.Minimum = New Decimal(New Integer() {1, 0, 0, 0}) Me.NAutoSave.Name = "NAutoSave" @@ -294,9 +302,9 @@ Partial Class OpGeneral ' 'Label7 ' - Me.Label7.Anchor = CType(((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Left) _ + Me.Label7.Anchor = CType(((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left) _ Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) - Me.Label7.Location = New System.Drawing.Point(239, 181) + Me.Label7.Location = New System.Drawing.Point(239, 224) Me.Label7.Name = "Label7" Me.Label7.Size = New System.Drawing.Size(73, 17) Me.Label7.TabIndex = 59 @@ -305,12 +313,12 @@ Partial Class OpGeneral ' 'cAutoSave ' - Me.cAutoSave.Anchor = CType(((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Left) _ + Me.cAutoSave.Anchor = CType(((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left) _ Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) Me.cAutoSave.AutoSize = True Me.cAutoSave.Checked = True Me.cAutoSave.CheckState = System.Windows.Forms.CheckState.Checked - Me.cAutoSave.Location = New System.Drawing.Point(32, 181) + Me.cAutoSave.Location = New System.Drawing.Point(32, 224) Me.cAutoSave.Name = "cAutoSave" Me.cAutoSave.Size = New System.Drawing.Size(76, 19) Me.cAutoSave.TabIndex = 10 @@ -324,7 +332,7 @@ Partial Class OpGeneral Me.cMStopPreview.AutoSize = True Me.cMStopPreview.Checked = True Me.cMStopPreview.CheckState = System.Windows.Forms.CheckState.Checked - Me.cMStopPreview.Location = New System.Drawing.Point(34, 518) + Me.cMStopPreview.Location = New System.Drawing.Point(34, 561) Me.cMStopPreview.Name = "cMStopPreview" Me.cMStopPreview.Size = New System.Drawing.Size(253, 19) Me.cMStopPreview.TabIndex = 108 @@ -333,7 +341,7 @@ Partial Class OpGeneral ' 'nGridPartition ' - Me.nGridPartition.Location = New System.Drawing.Point(219, 107) + Me.nGridPartition.Location = New System.Drawing.Point(198, 3) Me.nGridPartition.Maximum = New Decimal(New Integer() {10000, 0, 0, 0}) Me.nGridPartition.Minimum = New Decimal(New Integer() {8, 0, 0, 0}) Me.nGridPartition.Name = "nGridPartition" @@ -343,9 +351,10 @@ Partial Class OpGeneral ' 'Label6 ' - Me.Label6.Location = New System.Drawing.Point(12, 108) + Me.Label6.Dock = System.Windows.Forms.DockStyle.Fill + Me.Label6.Location = New System.Drawing.Point(3, 0) Me.Label6.Name = "Label6" - Me.Label6.Size = New System.Drawing.Size(201, 22) + Me.Label6.Size = New System.Drawing.Size(189, 33) Me.Label6.TabIndex = 8 Me.Label6.Text = "Maximum Grid Partition in BMS" Me.Label6.TextAlign = System.Drawing.ContentAlignment.MiddleRight @@ -372,7 +381,7 @@ Partial Class OpGeneral ' Me.Label3.Anchor = CType(((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left) _ Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) - Me.Label3.Location = New System.Drawing.Point(12, 417) + Me.Label3.Location = New System.Drawing.Point(12, 460) Me.Label3.Name = "Label3" Me.Label3.Size = New System.Drawing.Size(136, 17) Me.Label3.TabIndex = 104 @@ -388,7 +397,7 @@ Partial Class OpGeneral Me.FlowLayoutPanel1.Controls.Add(Me.rMiddleAuto) Me.FlowLayoutPanel1.Controls.Add(Me.rMiddleDrag) Me.FlowLayoutPanel1.FlowDirection = System.Windows.Forms.FlowDirection.TopDown - Me.FlowLayoutPanel1.Location = New System.Drawing.Point(154, 416) + Me.FlowLayoutPanel1.Location = New System.Drawing.Point(154, 459) Me.FlowLayoutPanel1.Name = "FlowLayoutPanel1" Me.FlowLayoutPanel1.Size = New System.Drawing.Size(141, 38) Me.FlowLayoutPanel1.TabIndex = 105 @@ -424,48 +433,49 @@ Partial Class OpGeneral Me.nJackBPM.Maximum = New Decimal(New Integer() {10000, 0, 0, 0}) Me.nJackBPM.Minimum = New Decimal(New Integer() {8, 0, 0, 0}) Me.nJackBPM.Name = "nJackBPM" - Me.nJackBPM.Size = New System.Drawing.Size(52, 23) + Me.nJackBPM.Size = New System.Drawing.Size(50, 23) Me.nJackBPM.TabIndex = 9 Me.nJackBPM.Value = New Decimal(New Integer() {255, 0, 0, 0}) ' 'Label8 ' - Me.Label8.Location = New System.Drawing.Point(15, 139) + Me.Label8.Dock = System.Windows.Forms.DockStyle.Fill + Me.Label8.Location = New System.Drawing.Point(3, 33) Me.Label8.Name = "Label8" - Me.Label8.Size = New System.Drawing.Size(198, 19) + Me.Label8.Size = New System.Drawing.Size(189, 33) Me.Label8.TabIndex = 8 Me.Label8.Text = "Minimum Jack Threshold" Me.Label8.TextAlign = System.Drawing.ContentAlignment.MiddleRight ' 'nJackTH ' - Me.nJackTH.Location = New System.Drawing.Point(104, 3) + Me.nJackTH.Location = New System.Drawing.Point(101, 3) Me.nJackTH.Maximum = New Decimal(New Integer() {10000, 0, 0, 0}) Me.nJackTH.Minimum = New Decimal(New Integer() {8, 0, 0, 0}) Me.nJackTH.Name = "nJackTH" - Me.nJackTH.Size = New System.Drawing.Size(37, 23) + Me.nJackTH.Size = New System.Drawing.Size(35, 23) Me.nJackTH.TabIndex = 9 Me.nJackTH.Value = New Decimal(New Integer() {16, 0, 0, 0}) ' 'Label9 ' Me.Label9.Dock = System.Windows.Forms.DockStyle.Fill - Me.Label9.Location = New System.Drawing.Point(61, 0) + Me.Label9.Location = New System.Drawing.Point(59, 0) Me.Label9.Name = "Label9" - Me.Label9.Size = New System.Drawing.Size(37, 27) + Me.Label9.Size = New System.Drawing.Size(36, 27) Me.Label9.TabIndex = 8 Me.Label9.Text = "BPM" Me.Label9.TextAlign = System.Drawing.ContentAlignment.MiddleCenter ' - 'LabelTH + 'LabelTHJack ' - Me.LabelTH.Dock = System.Windows.Forms.DockStyle.Fill - Me.LabelTH.Location = New System.Drawing.Point(147, 0) - Me.LabelTH.Name = "LabelTH" - Me.LabelTH.Size = New System.Drawing.Size(30, 27) - Me.LabelTH.TabIndex = 8 - Me.LabelTH.Text = "th" - Me.LabelTH.TextAlign = System.Drawing.ContentAlignment.MiddleCenter + Me.LabelTHJack.Dock = System.Windows.Forms.DockStyle.Fill + Me.LabelTHJack.Location = New System.Drawing.Point(142, 0) + Me.LabelTHJack.Name = "LabelTHJack" + Me.LabelTHJack.Size = New System.Drawing.Size(30, 27) + Me.LabelTHJack.TabIndex = 8 + Me.LabelTHJack.Text = "th" + Me.LabelTHJack.TextAlign = System.Drawing.ContentAlignment.MiddleCenter ' 'TableLayoutPanel2 ' @@ -477,20 +487,20 @@ Partial Class OpGeneral Me.TableLayoutPanel2.Controls.Add(Me.nJackBPM, 0, 0) Me.TableLayoutPanel2.Controls.Add(Me.Label9, 1, 0) Me.TableLayoutPanel2.Controls.Add(Me.nJackTH, 2, 0) - Me.TableLayoutPanel2.Controls.Add(Me.LabelTH, 3, 0) - Me.TableLayoutPanel2.Location = New System.Drawing.Point(219, 136) + Me.TableLayoutPanel2.Controls.Add(Me.LabelTHJack, 3, 0) + Me.TableLayoutPanel2.Location = New System.Drawing.Point(198, 36) Me.TableLayoutPanel2.Name = "TableLayoutPanel2" Me.TableLayoutPanel2.RowCount = 1 Me.TableLayoutPanel2.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100.0!)) - Me.TableLayoutPanel2.Size = New System.Drawing.Size(180, 27) + Me.TableLayoutPanel2.Size = New System.Drawing.Size(175, 27) Me.TableLayoutPanel2.TabIndex = 110 ' 'cAudioLine ' - Me.cAudioLine.Anchor = CType(((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Left) _ + Me.cAudioLine.Anchor = CType(((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left) _ Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) Me.cAudioLine.AutoSize = True - Me.cAudioLine.Location = New System.Drawing.Point(32, 281) + Me.cAudioLine.Location = New System.Drawing.Point(32, 324) Me.cAudioLine.Name = "cAudioLine" Me.cAudioLine.Size = New System.Drawing.Size(233, 19) Me.cAudioLine.TabIndex = 14 @@ -499,31 +509,93 @@ Partial Class OpGeneral ' 'cTemplateSnapToVPosition ' - Me.cTemplateSnapToVPosition.Anchor = CType(((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Left) _ + Me.cTemplateSnapToVPosition.Anchor = CType(((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left) _ Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) Me.cTemplateSnapToVPosition.AutoSize = True - Me.cTemplateSnapToVPosition.Location = New System.Drawing.Point(32, 306) + Me.cTemplateSnapToVPosition.Location = New System.Drawing.Point(32, 349) Me.cTemplateSnapToVPosition.Name = "cTemplateSnapToVPosition" Me.cTemplateSnapToVPosition.Size = New System.Drawing.Size(326, 19) Me.cTemplateSnapToVPosition.TabIndex = 111 Me.cTemplateSnapToVPosition.Text = "Snap to Vertical Position for Moving to Template Position" Me.cTemplateSnapToVPosition.UseVisualStyleBackColor = True ' + 'NLNGap + ' + Me.NLNGap.DecimalPlaces = 4 + Me.NLNGap.Increment = New Decimal(New Integer() {1, 0, 0, 65536}) + Me.NLNGap.Location = New System.Drawing.Point(3, 3) + Me.NLNGap.Name = "NLNGap" + Me.NLNGap.Size = New System.Drawing.Size(74, 23) + Me.NLNGap.TabIndex = 9 + Me.NLNGap.Value = New Decimal(New Integer() {100, 0, 0, 0}) + ' + 'Label10 + ' + Me.Label10.Dock = System.Windows.Forms.DockStyle.Fill + Me.Label10.Location = New System.Drawing.Point(3, 66) + Me.Label10.Name = "Label10" + Me.Label10.Size = New System.Drawing.Size(189, 34) + Me.Label10.TabIndex = 8 + Me.Label10.Text = "Auto Long Note Gap" + Me.Label10.TextAlign = System.Drawing.ContentAlignment.MiddleRight + ' + 'TableLayoutPanel3 + ' + Me.TableLayoutPanel3.ColumnCount = 2 + Me.TableLayoutPanel3.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 51.8617!)) + Me.TableLayoutPanel3.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 48.1383!)) + Me.TableLayoutPanel3.Controls.Add(Me.TableLayoutPanel4, 1, 2) + Me.TableLayoutPanel3.Controls.Add(Me.Label10, 0, 2) + Me.TableLayoutPanel3.Controls.Add(Me.TableLayoutPanel2, 1, 1) + Me.TableLayoutPanel3.Controls.Add(Me.Label8, 0, 1) + Me.TableLayoutPanel3.Controls.Add(Me.nGridPartition, 1, 0) + Me.TableLayoutPanel3.Controls.Add(Me.Label6, 0, 0) + Me.TableLayoutPanel3.Location = New System.Drawing.Point(15, 107) + Me.TableLayoutPanel3.Name = "TableLayoutPanel3" + Me.TableLayoutPanel3.RowCount = 3 + Me.TableLayoutPanel3.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 33.33333!)) + Me.TableLayoutPanel3.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 33.33333!)) + Me.TableLayoutPanel3.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 33.33333!)) + Me.TableLayoutPanel3.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20.0!)) + Me.TableLayoutPanel3.Size = New System.Drawing.Size(376, 100) + Me.TableLayoutPanel3.TabIndex = 112 + ' + 'TableLayoutPanel4 + ' + Me.TableLayoutPanel4.ColumnCount = 2 + Me.TableLayoutPanel4.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 80.0!)) + Me.TableLayoutPanel4.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 20.0!)) + Me.TableLayoutPanel4.Controls.Add(Me.LabelTHLN, 1, 0) + Me.TableLayoutPanel4.Controls.Add(Me.NLNGap, 0, 0) + Me.TableLayoutPanel4.Location = New System.Drawing.Point(198, 69) + Me.TableLayoutPanel4.Name = "TableLayoutPanel4" + Me.TableLayoutPanel4.RowCount = 1 + Me.TableLayoutPanel4.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100.0!)) + Me.TableLayoutPanel4.Size = New System.Drawing.Size(175, 28) + Me.TableLayoutPanel4.TabIndex = 114 + ' + 'LabelTHLN + ' + Me.LabelTHLN.Dock = System.Windows.Forms.DockStyle.Fill + Me.LabelTHLN.Location = New System.Drawing.Point(83, 0) + Me.LabelTHLN.Name = "LabelTHLN" + Me.LabelTHLN.Size = New System.Drawing.Size(89, 28) + Me.LabelTHLN.TabIndex = 10 + Me.LabelTHLN.Text = "th" + Me.LabelTHLN.TextAlign = System.Drawing.ContentAlignment.MiddleLeft + ' 'OpGeneral ' Me.AcceptButton = Me.OK_Button Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None Me.CancelButton = Me.Cancel_Button - Me.ClientSize = New System.Drawing.Size(413, 599) + Me.ClientSize = New System.Drawing.Size(413, 642) + Me.Controls.Add(Me.TableLayoutPanel3) Me.Controls.Add(Me.cTemplateSnapToVPosition) - Me.Controls.Add(Me.TableLayoutPanel2) Me.Controls.Add(Me.FlowLayoutPanel1) Me.Controls.Add(Me.Label3) Me.Controls.Add(Me.TBAssociateBML) Me.Controls.Add(Me.TBAssociateBME) - Me.Controls.Add(Me.Label8) - Me.Controls.Add(Me.Label6) - Me.Controls.Add(Me.nGridPartition) Me.Controls.Add(Me.cMStopPreview) Me.Controls.Add(Me.cAutoSave) Me.Controls.Add(Me.Label7) @@ -563,6 +635,9 @@ Partial Class OpGeneral CType(Me.nJackBPM, System.ComponentModel.ISupportInitialize).EndInit() CType(Me.nJackTH, System.ComponentModel.ISupportInitialize).EndInit() Me.TableLayoutPanel2.ResumeLayout(False) + CType(Me.NLNGap, System.ComponentModel.ISupportInitialize).EndInit() + Me.TableLayoutPanel3.ResumeLayout(False) + Me.TableLayoutPanel4.ResumeLayout(False) Me.ResumeLayout(False) Me.PerformLayout() @@ -602,8 +677,13 @@ Partial Class OpGeneral Friend WithEvents Label8 As Label Friend WithEvents nJackTH As NumericUpDown Friend WithEvents Label9 As Label - Friend WithEvents LabelTH As Label + Friend WithEvents LabelTHJack As Label Friend WithEvents TableLayoutPanel2 As TableLayoutPanel Friend WithEvents cAudioLine As CheckBox Friend WithEvents cTemplateSnapToVPosition As CheckBox + Friend WithEvents NLNGap As NumericUpDown + Friend WithEvents Label10 As Label + Friend WithEvents TableLayoutPanel3 As TableLayoutPanel + Friend WithEvents TableLayoutPanel4 As TableLayoutPanel + Friend WithEvents LabelTHLN As Label End Class diff --git a/iBMSC/Option Windows/OpGeneral.vb b/iBMSC/Option Windows/OpGeneral.vb index d89d5864e..28aacf719 100644 --- a/iBMSC/Option Windows/OpGeneral.vb +++ b/iBMSC/Option Windows/OpGeneral.vb @@ -54,9 +54,9 @@ Public Class OpGeneral Me.Close() End Sub - Public Sub New(ByVal xMsWheel As Integer, ByVal xPgUpDn As Integer, ByVal xMiddleButton As Integer, ByVal xTextEncoding As Integer, ByVal xGridPartition As Integer, + Public Sub New(ByVal xMsWheel As Integer, ByVal xPgUpDn As Integer, ByVal xMiddleButton As Integer, ByVal xTextEncoding As Integer, ByVal xGridPartition As Integer, ByVal xJackBPM As Double, ByVal xJackTH As Double, ByVal xLNGap As Double, ByVal xAutoSave As Integer, ByVal xBeep As Boolean, ByVal xBPMx As Boolean, ByVal xSTOPx As Boolean, ByVal xAudioLine As Boolean, ByVal xTemplateSnapToVPosition As Boolean, - ByVal xMFEnter As Boolean, ByVal xMFClick As Boolean, ByVal xMStopPreview As Boolean, ByVal xJackBPM As Double, ByVal xJackTH As Double) + ByVal xMFEnter As Boolean, ByVal xMFClick As Boolean, ByVal xMStopPreview As Boolean) InitializeComponent() On Error Resume Next @@ -82,6 +82,7 @@ Public Class OpGeneral nGridPartition.Value = xGridPartition nJackBPM.Value = CDec(xJackBPM) nJackTH.Value = CDec(xJackTH) + NLNGap.Value = CDec(xLNGap) If xMiddleButton = 0 Then rMiddleAuto.Checked = True _ Else rMiddleDrag.Checked = True @@ -365,13 +366,27 @@ Public Class OpGeneral Private Sub nJackTH_ValueChanged(sender As Object, e As EventArgs) Handles nJackTH.ValueChanged Select Case nJackTH.Value Mod 100 Case 1, 21, 31, 41, 51, 61, 71, 81, 91 - LabelTH.Text = "st" + LabelTHJack.Text = "st" Case 2, 22, 32, 42, 52, 62, 72, 82, 92 - LabelTH.Text = "nd" + LabelTHJack.Text = "nd" Case 3, 23, 33, 43, 53, 63, 73, 83, 93 - LabelTH.Text = "rd" + LabelTHJack.Text = "rd" Case Else - LabelTH.Text = "th" + LabelTHJack.Text = "th" End Select End Sub + + Private Sub NLNGap_ValueChanged(sender As Object, e As EventArgs) Handles NLNGap.ValueChanged + Select Case NLNGap.Value Mod 100 + Case 1, 21, 31, 41, 51, 61, 71, 81, 91 + LabelTHLN.Text = "st" + Case 2, 22, 32, 42, 52, 62, 72, 82, 92 + LabelTHLN.Text = "nd" + Case 3, 23, 33, 43, 53, 63, 73, 83, 93 + LabelTHLN.Text = "rd" + Case Else + LabelTHLN.Text = "th" + End Select + LabelTHLN.Text &= " of a bar" + End Sub End Class From 16d59951cad7cfa47b91a1bbe9cac679857e999f Mon Sep 17 00:00:00 2001 From: psyk2642 <60137590+psyk2642@users.noreply.github.com> Date: Thu, 5 May 2022 08:34:51 +0800 Subject: [PATCH 137/257] Added converting between LNObj and NTLN + Bug Fix Somehow I accidentally made moving up bugged. --- iBMSC/ChartIO.vb | 7 +- iBMSC/EditorPersistent.vb | 4 +- iBMSC/EditorUndoRedo.vb | 6 +- iBMSC/MainWindow.designer.vb | 76 +++++++++++++--------- iBMSC/MainWindow.vb | 69 ++++++++++++++++++-- iBMSC/Option Windows/OpGeneral.Designer.vb | 16 ++--- iBMSC/Option Windows/OpGeneral.vb | 17 ++--- iBMSC/PanelEvents.vb | 1 + 8 files changed, 136 insertions(+), 60 deletions(-) diff --git a/iBMSC/ChartIO.vb b/iBMSC/ChartIO.vb index 208f464f9..f8ae47fa9 100644 --- a/iBMSC/ChartIO.vb +++ b/iBMSC/ChartIO.vb @@ -1088,9 +1088,10 @@ Partial Public Class MainWindow NTInput = CBool(xPref And &H1) TBNTInput.Checked = NTInput - mnNTInput.Checked = NTInput - POBLong.Enabled = Not NTInput - POBLongShort.Enabled = Not NTInput + POBLongObjNT.Visible = NTInput + POBLongNTObj.Visible = NTInput + POBLong.Visible = Not NTInput + POBLongShort.Visible = Not NTInput ErrorCheck = CBool(xPref And &H2) TBErrorCheck.Checked = ErrorCheck diff --git a/iBMSC/EditorPersistent.vb b/iBMSC/EditorPersistent.vb index 8ac310b6b..a3da68e87 100644 --- a/iBMSC/EditorPersistent.vb +++ b/iBMSC/EditorPersistent.vb @@ -428,9 +428,7 @@ Partial Public Class MainWindow With eEdit XMLLoadAttribute(.GetAttribute("NTInput"), NTInput) TBNTInput.Checked = NTInput - mnNTInput.Checked = NTInput - POBLong.Enabled = Not NTInput - POBLongShort.Enabled = Not NTInput + TBNTInput_Click(TBNTInput, New EventArgs) LoadLocale(My.Application.Info.DirectoryPath & "\" & .GetAttribute("Language")) diff --git a/iBMSC/EditorUndoRedo.vb b/iBMSC/EditorUndoRedo.vb index 6bc657931..50ef3964f 100644 --- a/iBMSC/EditorUndoRedo.vb +++ b/iBMSC/EditorUndoRedo.vb @@ -134,9 +134,11 @@ Partial Public Class MainWindow NTInput = xCmd.BecomeNT TBNTInput.Checked = NTInput mnNTInput.Checked = NTInput + POBLongObjNT.Visible = NTInput + POBLongNTObj.Visible = NTInput + POBLong.Visible = Not NTInput + POBLongShort.Visible = Not NTInput - POBLong.Enabled = Not NTInput - POBLongShort.Enabled = Not NTInput bAdjustLength = False bAdjustUpper = False diff --git a/iBMSC/MainWindow.designer.vb b/iBMSC/MainWindow.designer.vb index 5e84b6ec5..61f3e76e4 100644 --- a/iBMSC/MainWindow.designer.vb +++ b/iBMSC/MainWindow.designer.vb @@ -25,16 +25,16 @@ Partial Class MainWindow Me.TBLangDef = New System.Windows.Forms.ToolStripMenuItem() Me.TBLangRefresh = New System.Windows.Forms.ToolStripMenuItem() Me.ToolStripSeparator9 = New System.Windows.Forms.ToolStripSeparator() - Me.TBLanguage = New System.Windows.Forms.ToolStripDropDownButton() Me.mnLanguage = New System.Windows.Forms.ToolStripMenuItem() + Me.TBLanguage = New System.Windows.Forms.ToolStripDropDownButton() Me.cmnTheme = New System.Windows.Forms.ContextMenuStrip(Me.components) Me.TBThemeDef = New System.Windows.Forms.ToolStripMenuItem() Me.TBThemeSave = New System.Windows.Forms.ToolStripMenuItem() Me.TBThemeRefresh = New System.Windows.Forms.ToolStripMenuItem() Me.TBThemeLoadComptability = New System.Windows.Forms.ToolStripMenuItem() Me.ToolStripSeparator6 = New System.Windows.Forms.ToolStripSeparator() - Me.mnTheme = New System.Windows.Forms.ToolStripMenuItem() Me.TBTheme = New System.Windows.Forms.ToolStripDropDownButton() + Me.mnTheme = New System.Windows.Forms.ToolStripMenuItem() Me.Timer1 = New System.Windows.Forms.Timer(Me.components) Me.Menu1 = New System.Windows.Forms.ContextMenuStrip(Me.components) Me.MInsert = New System.Windows.Forms.ToolStripMenuItem() @@ -113,6 +113,7 @@ Partial Class MainWindow Me.mnVCOptions = New System.Windows.Forms.ToolStripMenuItem() Me.mnConversion = New System.Windows.Forms.ToolStripMenuItem() Me.cmnConversion = New System.Windows.Forms.ContextMenuStrip(Me.components) + Me.POBLongObjNT = New System.Windows.Forms.ToolStripMenuItem() Me.POBLong = New System.Windows.Forms.ToolStripMenuItem() Me.POBShort = New System.Windows.Forms.ToolStripMenuItem() Me.POBLongShort = New System.Windows.Forms.ToolStripMenuItem() @@ -385,6 +386,7 @@ Partial Class MainWindow Me.POptionsScroll = New System.Windows.Forms.Panel() Me.TimerInternalPlay = New System.Windows.Forms.Timer(Me.components) Me.TimerPreviewNote = New System.Windows.Forms.Timer(Me.components) + Me.POBLongNTObj = New System.Windows.Forms.ToolStripMenuItem() Me.cmnLanguage.SuspendLayout() Me.cmnTheme.SuspendLayout() Me.Menu1.SuspendLayout() @@ -469,7 +471,7 @@ Partial Class MainWindow ' Me.cmnLanguage.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.TBLangDef, Me.TBLangRefresh, Me.ToolStripSeparator9}) Me.cmnLanguage.Name = "cmnLanguage" - Me.cmnLanguage.OwnerItem = Me.mnLanguage + Me.cmnLanguage.OwnerItem = Me.TBLanguage Me.cmnLanguage.Size = New System.Drawing.Size(121, 54) ' 'TBLangDef @@ -490,6 +492,14 @@ Partial Class MainWindow Me.ToolStripSeparator9.Name = "ToolStripSeparator9" Me.ToolStripSeparator9.Size = New System.Drawing.Size(117, 6) ' + 'mnLanguage + ' + Me.mnLanguage.DropDown = Me.cmnLanguage + Me.mnLanguage.Image = Global.iBMSC.My.Resources.Resources.x16Language + Me.mnLanguage.Name = "mnLanguage" + Me.mnLanguage.Size = New System.Drawing.Size(253, 22) + Me.mnLanguage.Text = "&Language" + ' 'TBLanguage ' Me.TBLanguage.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image @@ -500,19 +510,11 @@ Partial Class MainWindow Me.TBLanguage.Size = New System.Drawing.Size(29, 22) Me.TBLanguage.Text = "Language" ' - 'mnLanguage - ' - Me.mnLanguage.DropDown = Me.cmnLanguage - Me.mnLanguage.Image = Global.iBMSC.My.Resources.Resources.x16Language - Me.mnLanguage.Name = "mnLanguage" - Me.mnLanguage.Size = New System.Drawing.Size(253, 22) - Me.mnLanguage.Text = "&Language" - ' 'cmnTheme ' Me.cmnTheme.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.TBThemeDef, Me.TBThemeSave, Me.TBThemeRefresh, Me.TBThemeLoadComptability, Me.ToolStripSeparator6}) Me.cmnTheme.Name = "cmnLanguage" - Me.cmnTheme.OwnerItem = Me.TBTheme + Me.cmnTheme.OwnerItem = Me.mnTheme Me.cmnTheme.Size = New System.Drawing.Size(246, 98) ' 'TBThemeDef @@ -546,14 +548,6 @@ Partial Class MainWindow Me.ToolStripSeparator6.Name = "ToolStripSeparator6" Me.ToolStripSeparator6.Size = New System.Drawing.Size(242, 6) ' - 'mnTheme - ' - Me.mnTheme.DropDown = Me.cmnTheme - Me.mnTheme.Image = Global.iBMSC.My.Resources.Resources.x16Theme - Me.mnTheme.Name = "mnTheme" - Me.mnTheme.Size = New System.Drawing.Size(253, 22) - Me.mnTheme.Text = "&Theme" - ' 'TBTheme ' Me.TBTheme.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image @@ -564,6 +558,14 @@ Partial Class MainWindow Me.TBTheme.Size = New System.Drawing.Size(29, 22) Me.TBTheme.Text = "Theme" ' + 'mnTheme + ' + Me.mnTheme.DropDown = Me.cmnTheme + Me.mnTheme.Image = Global.iBMSC.My.Resources.Resources.x16Theme + Me.mnTheme.Name = "mnTheme" + Me.mnTheme.Size = New System.Drawing.Size(253, 22) + Me.mnTheme.Text = "&Theme" + ' 'Timer1 ' Me.Timer1.Interval = 15 @@ -1177,18 +1179,25 @@ Partial Class MainWindow ' 'cmnConversion ' - Me.cmnConversion.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.POBLong, Me.POBShort, Me.POBLongShort, Me.ToolStripSeparator25, Me.POBAutoLongVPosition, Me.POBAutoLongColumn, Me.ToolStripSeparator10, Me.POBHidden, Me.POBVisible, Me.POBHiddenVisible, Me.ToolStripSeparator11, Me.POBModify, Me.POBMirror, Me.POBFlip, Me.POBRandom, Me.POBRRandom, Me.POBSRandom, Me.POBHRandom, Me.POBSort}) + Me.cmnConversion.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.POBLong, Me.POBShort, Me.POBLongShort, Me.POBLongObjNT, Me.POBLongNTObj, Me.ToolStripSeparator25, Me.POBAutoLongVPosition, Me.POBAutoLongColumn, Me.ToolStripSeparator10, Me.POBHidden, Me.POBVisible, Me.POBHiddenVisible, Me.ToolStripSeparator11, Me.POBModify, Me.POBMirror, Me.POBFlip, Me.POBRandom, Me.POBRRandom, Me.POBSRandom, Me.POBHRandom, Me.POBSort}) Me.cmnConversion.Name = "cmnLanguage" - Me.cmnConversion.OwnerItem = Me.POConvert - Me.cmnConversion.Size = New System.Drawing.Size(237, 396) + Me.cmnConversion.OwnerItem = Me.mnConversion + Me.cmnConversion.Size = New System.Drawing.Size(237, 440) + ' + 'POBLongObjNT + ' + Me.POBLongObjNT.Image = Global.iBMSC.My.Resources.Resources.ConvertNotesL + Me.POBLongObjNT.Name = "POBLongObjNT" + Me.POBLongObjNT.Size = New System.Drawing.Size(236, 22) + Me.POBLongObjNT.Text = "L&NObj → NT Long Note" ' 'POBLong ' - Me.POBLong.Enabled = False Me.POBLong.Image = Global.iBMSC.My.Resources.Resources.ConvertNotesL Me.POBLong.Name = "POBLong" Me.POBLong.Size = New System.Drawing.Size(236, 22) Me.POBLong.Text = "→ &Long Note" + Me.POBLong.Visible = False ' 'POBShort ' @@ -1199,11 +1208,11 @@ Partial Class MainWindow ' 'POBLongShort ' - Me.POBLongShort.Enabled = False Me.POBLongShort.Image = Global.iBMSC.My.Resources.Resources.ConvertNotes Me.POBLongShort.Name = "POBLongShort" Me.POBLongShort.Size = New System.Drawing.Size(236, 22) Me.POBLongShort.Text = "Long Note ↔ Short Note" + Me.POBLongShort.Visible = False ' 'ToolStripSeparator25 ' @@ -1386,7 +1395,7 @@ Partial Class MainWindow Me.TBMain.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.TBNew, Me.TBOpen, Me.TBSave, Me.ToolStripSeparator1, Me.TBCut, Me.TBCopy, Me.TBPaste, Me.TBFind, Me.ToolStripSeparator24, Me.TBStatistics, Me.POConvert, Me.TBMyO2, Me.ToolStripSeparator4, Me.TBErrorCheck, Me.TBPreviewOnClick, Me.TBShowFileName, Me.TBShowWaveform, Me.ToolStripSeparator8, Me.TBNTInput, Me.TBWavIncrease, Me.ToolStripSeparator2, Me.TBUndo, Me.TBRedo, Me.ToolStripSeparator5, Me.TBTimeSelect, Me.TBSelect, Me.TBWrite, Me.ToolStripSeparator3, Me.TBPlayB, Me.TBPlay, Me.TBStop, Me.TBPOptions, Me.ToolStripSeparator7, Me.TBGOptions, Me.TBKOptions, Me.TBVOptions, Me.TBLanguage, Me.TBTheme, Me.POBStorm, Me.TBTotalValue}) Me.TBMain.Location = New System.Drawing.Point(3, 23) Me.TBMain.Name = "TBMain" - Me.TBMain.Size = New System.Drawing.Size(993, 25) + Me.TBMain.Size = New System.Drawing.Size(939, 25) Me.TBMain.TabIndex = 64 Me.TBMain.Text = "Main Toolbar" ' @@ -3876,11 +3885,11 @@ Partial Class MainWindow ' Me.Label24.Anchor = System.Windows.Forms.AnchorStyles.Right Me.Label24.AutoSize = True - Me.Label24.Location = New System.Drawing.Point(25, 214) + Me.Label24.Location = New System.Drawing.Point(23, 214) Me.Label24.Name = "Label24" - Me.Label24.Size = New System.Drawing.Size(39, 15) + Me.Label24.Size = New System.Drawing.Size(41, 15) Me.Label24.TabIndex = 27 - Me.Label24.Text = "LnObj" + Me.Label24.Text = "LNObj" Me.Label24.TextAlign = System.Drawing.ContentAlignment.MiddleRight ' 'Label15 @@ -4293,6 +4302,13 @@ Partial Class MainWindow ' Me.TimerPreviewNote.Interval = 1 ' + 'POBLongNTObj + ' + Me.POBLongNTObj.Image = Global.iBMSC.My.Resources.Resources.ConvertNotesL + Me.POBLongNTObj.Name = "POBLongNTObj" + Me.POBLongNTObj.Size = New System.Drawing.Size(236, 22) + Me.POBLongNTObj.Text = "&NT Long Note → LNObj" + ' 'MainWindow ' Me.AllowDrop = True @@ -4787,4 +4803,6 @@ Partial Class MainWindow Friend WithEvents POBAutoLongVPosition As ToolStripMenuItem Friend WithEvents ToolStripSeparator25 As ToolStripSeparator Friend WithEvents POBAutoLongColumn As ToolStripMenuItem + Friend WithEvents POBLongObjNT As ToolStripMenuItem + Friend WithEvents POBLongNTObj As ToolStripMenuItem End Class diff --git a/iBMSC/MainWindow.vb b/iBMSC/MainWindow.vb index a76ea3885..ed4525215 100644 --- a/iBMSC/MainWindow.vb +++ b/iBMSC/MainWindow.vb @@ -1447,7 +1447,7 @@ Public Class MainWindow End If Next - If Not Notes(i).HasError Or Notes(i).LNPair = 0 Then + If Not Notes(i).HasError AndAlso Notes(i).LNPair = 0 Then For j = i + 1 To UBound(Notes) If Notes(j).ColumnIndex <> Notes(i).ColumnIndex Then Continue For @@ -3246,11 +3246,11 @@ Public Class MainWindow Private Function sIA() As Integer - Return CInt(IIf(sI > 98, 0, sI + 1)) + Return CInt(IIf(sI > UndoRedoCount - 1, 0, sI + 1)) End Function Private Function sIM() As Integer - Return CInt(IIf(sI < 1, 99, sI - 1)) + Return CInt(IIf(sI < 1, UndoRedoCount, sI - 1)) End Function @@ -3270,6 +3270,7 @@ Public Class MainWindow End Sub Private Sub TBRedo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBRedo.Click, mnRedo.Click + Console.WriteLine("Redo sI " + sI.ToString()) KMouseOver = -1 'KMouseDown = -1 ReDim SelectedNotes(-1) @@ -3277,6 +3278,8 @@ Public Class MainWindow PerformCommand(sRedo(sIA)) sI = sIA() + Console.WriteLine("Redo sI " + sI.ToString()) + TBUndo.Enabled = sUndo(sI).ofType <> UndoRedo.opNoOperation TBRedo.Enabled = sRedo(sIA).ofType <> UndoRedo.opNoOperation mnUndo.Enabled = sUndo(sI).ofType <> UndoRedo.opNoOperation @@ -3615,8 +3618,10 @@ Public Class MainWindow TBNTInput.Checked = NTInput mnNTInput.Checked = NTInput - POBLong.Enabled = Not NTInput - POBLongShort.Enabled = Not NTInput + POBLongObjNT.Visible = NTInput + POBLongNTObj.Visible = NTInput + POBLong.Visible = Not NTInput + POBLongShort.Visible = Not NTInput bAdjustLength = False bAdjustUpper = False @@ -3878,6 +3883,60 @@ Public Class MainWindow End Select End Sub + Private Sub POBLongObjNT_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles POBLongObjNT.Click + If Not NTInput OrElse LnObj = 0 Then Exit Sub + + Dim xUndo As UndoRedo.LinkedURCmd = Nothing + Dim xRedo As UndoRedo.LinkedURCmd = New UndoRedo.Void + Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo + + For xI1 As Integer = 1 To UBound(Notes) + If Not Notes(xI1).Selected OrElse Notes(xI1).Ghost OrElse LnObj <> Notes(xI1).Value / 10000 OrElse Notes(xI1).LNPair = 0 Then Notes(xI1).Selected = False : Continue For + + Dim LNPair As Integer = Notes(xI1).LNPair + Dim xLen As Double = Notes(xI1).VPosition - Notes(LNPair).VPosition + Me.RedoLongNoteModify(Notes(LNPair), Notes(LNPair).VPosition, xLen, xUndo, xRedo) + Notes(LNPair).Length = Notes(xI1).VPosition - Notes(LNPair).VPosition + Next + + Me.RedoRemoveNoteSelected(True, xUndo, xRedo) + RemoveNotes(True) + + AddUndo(xUndo, xBaseRedo.Next) + SortByVPositionInsertion() + UpdatePairing() + RefreshPanelAll() + End Sub + + Private Sub POBLongNTObj_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles POBLongNTObj.Click + If Not NTInput OrElse LnObj = 0 Then Exit Sub + + Dim xUndo As UndoRedo.LinkedURCmd = Nothing + Dim xRedo As UndoRedo.LinkedURCmd = New UndoRedo.Void + Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo + + For xI1 As Integer = 1 To UBound(Notes) + If Not Notes(xI1).Selected OrElse Notes(xI1).Ghost OrElse Notes(xI1).Length = 0 Then Continue For + + Dim vPos As Double = Notes(xI1).VPosition + Notes(xI1).Length + Me.RedoLongNoteModify(Notes(xI1), Notes(xI1).VPosition, 0, xUndo, xRedo) + Notes(xI1).Length = 0 + + Dim NoteLNObj As Note = CType(Notes(xI1), Note) + NoteLNObj.VPosition = vPos + NoteLNObj.Value = LnObj * 10000 + RedoAddNote(NoteLNObj, xUndo, xRedo) + AddNote(NoteLNObj) + Next + + AddUndo(xUndo, xBaseRedo.Next) + SortByVPositionInsertion() + UpdatePairing() + RefreshPanelAll() + End Sub + + + Private Sub POBLong_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles POBLong.Click If NTInput Then Exit Sub diff --git a/iBMSC/Option Windows/OpGeneral.Designer.vb b/iBMSC/Option Windows/OpGeneral.Designer.vb index 588085445..85aeb3c43 100644 --- a/iBMSC/Option Windows/OpGeneral.Designer.vb +++ b/iBMSC/Option Windows/OpGeneral.Designer.vb @@ -341,7 +341,7 @@ Partial Class OpGeneral ' 'nGridPartition ' - Me.nGridPartition.Location = New System.Drawing.Point(198, 3) + Me.nGridPartition.Location = New System.Drawing.Point(197, 3) Me.nGridPartition.Maximum = New Decimal(New Integer() {10000, 0, 0, 0}) Me.nGridPartition.Minimum = New Decimal(New Integer() {8, 0, 0, 0}) Me.nGridPartition.Name = "nGridPartition" @@ -354,7 +354,7 @@ Partial Class OpGeneral Me.Label6.Dock = System.Windows.Forms.DockStyle.Fill Me.Label6.Location = New System.Drawing.Point(3, 0) Me.Label6.Name = "Label6" - Me.Label6.Size = New System.Drawing.Size(189, 33) + Me.Label6.Size = New System.Drawing.Size(188, 33) Me.Label6.TabIndex = 8 Me.Label6.Text = "Maximum Grid Partition in BMS" Me.Label6.TextAlign = System.Drawing.ContentAlignment.MiddleRight @@ -442,7 +442,7 @@ Partial Class OpGeneral Me.Label8.Dock = System.Windows.Forms.DockStyle.Fill Me.Label8.Location = New System.Drawing.Point(3, 33) Me.Label8.Name = "Label8" - Me.Label8.Size = New System.Drawing.Size(189, 33) + Me.Label8.Size = New System.Drawing.Size(188, 33) Me.Label8.TabIndex = 8 Me.Label8.Text = "Minimum Jack Threshold" Me.Label8.TextAlign = System.Drawing.ContentAlignment.MiddleRight @@ -488,7 +488,7 @@ Partial Class OpGeneral Me.TableLayoutPanel2.Controls.Add(Me.Label9, 1, 0) Me.TableLayoutPanel2.Controls.Add(Me.nJackTH, 2, 0) Me.TableLayoutPanel2.Controls.Add(Me.LabelTHJack, 3, 0) - Me.TableLayoutPanel2.Location = New System.Drawing.Point(198, 36) + Me.TableLayoutPanel2.Location = New System.Drawing.Point(197, 36) Me.TableLayoutPanel2.Name = "TableLayoutPanel2" Me.TableLayoutPanel2.RowCount = 1 Me.TableLayoutPanel2.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100.0!)) @@ -527,14 +527,14 @@ Partial Class OpGeneral Me.NLNGap.Name = "NLNGap" Me.NLNGap.Size = New System.Drawing.Size(74, 23) Me.NLNGap.TabIndex = 9 - Me.NLNGap.Value = New Decimal(New Integer() {100, 0, 0, 0}) + Me.NLNGap.Value = New Decimal(New Integer() {5, 0, 0, 65536}) ' 'Label10 ' Me.Label10.Dock = System.Windows.Forms.DockStyle.Fill Me.Label10.Location = New System.Drawing.Point(3, 66) Me.Label10.Name = "Label10" - Me.Label10.Size = New System.Drawing.Size(189, 34) + Me.Label10.Size = New System.Drawing.Size(188, 34) Me.Label10.TabIndex = 8 Me.Label10.Text = "Auto Long Note Gap" Me.Label10.TextAlign = System.Drawing.ContentAlignment.MiddleRight @@ -567,7 +567,7 @@ Partial Class OpGeneral Me.TableLayoutPanel4.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 20.0!)) Me.TableLayoutPanel4.Controls.Add(Me.LabelTHLN, 1, 0) Me.TableLayoutPanel4.Controls.Add(Me.NLNGap, 0, 0) - Me.TableLayoutPanel4.Location = New System.Drawing.Point(198, 69) + Me.TableLayoutPanel4.Location = New System.Drawing.Point(197, 69) Me.TableLayoutPanel4.Name = "TableLayoutPanel4" Me.TableLayoutPanel4.RowCount = 1 Me.TableLayoutPanel4.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100.0!)) @@ -581,7 +581,7 @@ Partial Class OpGeneral Me.LabelTHLN.Name = "LabelTHLN" Me.LabelTHLN.Size = New System.Drawing.Size(89, 28) Me.LabelTHLN.TabIndex = 10 - Me.LabelTHLN.Text = "th" + Me.LabelTHLN.Text = "bars" Me.LabelTHLN.TextAlign = System.Drawing.ContentAlignment.MiddleLeft ' 'OpGeneral diff --git a/iBMSC/Option Windows/OpGeneral.vb b/iBMSC/Option Windows/OpGeneral.vb index 28aacf719..f5a6e2f82 100644 --- a/iBMSC/Option Windows/OpGeneral.vb +++ b/iBMSC/Option Windows/OpGeneral.vb @@ -377,16 +377,13 @@ Public Class OpGeneral End Sub Private Sub NLNGap_ValueChanged(sender As Object, e As EventArgs) Handles NLNGap.ValueChanged - Select Case NLNGap.Value Mod 100 - Case 1, 21, 31, 41, 51, 61, 71, 81, 91 - LabelTHLN.Text = "st" - Case 2, 22, 32, 42, 52, 62, 72, 82, 92 - LabelTHLN.Text = "nd" - Case 3, 23, 33, 43, 53, 63, 73, 83, 93 - LabelTHLN.Text = "rd" - Case Else - LabelTHLN.Text = "th" + Select Case NLNGap.Value + Case Is > 1 + LabelTHLN.Text = "bars" + Case Is > 0 + LabelTHLN.Text = "bar" + Case 0 + LabelTHLN.Text = "bars" End Select - LabelTHLN.Text &= " of a bar" End Sub End Class diff --git a/iBMSC/PanelEvents.vb b/iBMSC/PanelEvents.vb index d27adb6d6..c23fe971c 100644 --- a/iBMSC/PanelEvents.vb +++ b/iBMSC/PanelEvents.vb @@ -175,6 +175,7 @@ Partial Public Class MainWindow IsNoteInPanel(xVPos, Notes(xI1).Length) Next + If xVPosition - muVPosition <> 0 Then AddUndo(xUndo, xBaseRedo.Next) SortByVPositionInsertion() UpdatePairing() CalculateTotalPlayableNotes() From 156c4d2ca66999af466fdd672a78526ce2fe67de Mon Sep 17 00:00:00 2001 From: psyk2642 <60137590+psyk2642@users.noreply.github.com> Date: Thu, 5 May 2022 08:36:52 +0800 Subject: [PATCH 138/257] Description Update --- README.md | 2 ++ iBMSC/My Project/AssemblyInfo.vb | 4 ++-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index f5cbc0f81..e11f60912 100644 --- a/README.md +++ b/README.md @@ -45,6 +45,8 @@ Listed in the order added. * Added #TOTAL Options window to set a recommended #TOTAL value based on the selected calculation formula. * Added lines to scroll along the panel while previewing a keysound and to indicate the keysound's end point. * Added support to move notes to their template position. +* Added ability to convert notes to Long notes in a series by VPosition or by column. +* Added ability to convert between LNObj's and NT LN's. ## Keyboard shortcuts * While rebinding keys is now supported, the default keybinding has also been changed to allow note placement between D1 and D8 or only on PMS lanes in PMS mode: diff --git a/iBMSC/My Project/AssemblyInfo.vb b/iBMSC/My Project/AssemblyInfo.vb index f39b82288..aefcc91bd 100644 --- a/iBMSC/My Project/AssemblyInfo.vb +++ b/iBMSC/My Project/AssemblyInfo.vb @@ -30,7 +30,7 @@ Imports System.Resources ' by using the '*' as shown below: ' - - + + \ No newline at end of file From c7c6414e7d59d4f21e8ca24bc2835adea0fc84e7 Mon Sep 17 00:00:00 2001 From: psyk2642 <60137590+psyk2642@users.noreply.github.com> Date: Thu, 5 May 2022 15:52:54 +0800 Subject: [PATCH 139/257] Smoother Selection Box --- iBMSC/MainWindow.designer.vb | 37 ++++++++++++++++++++---------------- iBMSC/MainWindow.vb | 4 ++++ iBMSC/PanelDraw.vb | 3 +++ 3 files changed, 28 insertions(+), 16 deletions(-) diff --git a/iBMSC/MainWindow.designer.vb b/iBMSC/MainWindow.designer.vb index 61f3e76e4..71bf5cda4 100644 --- a/iBMSC/MainWindow.designer.vb +++ b/iBMSC/MainWindow.designer.vb @@ -113,10 +113,11 @@ Partial Class MainWindow Me.mnVCOptions = New System.Windows.Forms.ToolStripMenuItem() Me.mnConversion = New System.Windows.Forms.ToolStripMenuItem() Me.cmnConversion = New System.Windows.Forms.ContextMenuStrip(Me.components) - Me.POBLongObjNT = New System.Windows.Forms.ToolStripMenuItem() Me.POBLong = New System.Windows.Forms.ToolStripMenuItem() Me.POBShort = New System.Windows.Forms.ToolStripMenuItem() Me.POBLongShort = New System.Windows.Forms.ToolStripMenuItem() + Me.POBLongObjNT = New System.Windows.Forms.ToolStripMenuItem() + Me.POBLongNTObj = New System.Windows.Forms.ToolStripMenuItem() Me.ToolStripSeparator25 = New System.Windows.Forms.ToolStripSeparator() Me.POBAutoLongVPosition = New System.Windows.Forms.ToolStripMenuItem() Me.POBAutoLongColumn = New System.Windows.Forms.ToolStripMenuItem() @@ -386,7 +387,7 @@ Partial Class MainWindow Me.POptionsScroll = New System.Windows.Forms.Panel() Me.TimerInternalPlay = New System.Windows.Forms.Timer(Me.components) Me.TimerPreviewNote = New System.Windows.Forms.Timer(Me.components) - Me.POBLongNTObj = New System.Windows.Forms.ToolStripMenuItem() + Me.TimerSelectionBox = New System.Windows.Forms.Timer(Me.components) Me.cmnLanguage.SuspendLayout() Me.cmnTheme.SuspendLayout() Me.Menu1.SuspendLayout() @@ -1181,15 +1182,7 @@ Partial Class MainWindow ' Me.cmnConversion.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.POBLong, Me.POBShort, Me.POBLongShort, Me.POBLongObjNT, Me.POBLongNTObj, Me.ToolStripSeparator25, Me.POBAutoLongVPosition, Me.POBAutoLongColumn, Me.ToolStripSeparator10, Me.POBHidden, Me.POBVisible, Me.POBHiddenVisible, Me.ToolStripSeparator11, Me.POBModify, Me.POBMirror, Me.POBFlip, Me.POBRandom, Me.POBRRandom, Me.POBSRandom, Me.POBHRandom, Me.POBSort}) Me.cmnConversion.Name = "cmnLanguage" - Me.cmnConversion.OwnerItem = Me.mnConversion - Me.cmnConversion.Size = New System.Drawing.Size(237, 440) - ' - 'POBLongObjNT - ' - Me.POBLongObjNT.Image = Global.iBMSC.My.Resources.Resources.ConvertNotesL - Me.POBLongObjNT.Name = "POBLongObjNT" - Me.POBLongObjNT.Size = New System.Drawing.Size(236, 22) - Me.POBLongObjNT.Text = "L&NObj → NT Long Note" + Me.cmnConversion.Size = New System.Drawing.Size(237, 418) ' 'POBLong ' @@ -1214,6 +1207,20 @@ Partial Class MainWindow Me.POBLongShort.Text = "Long Note ↔ Short Note" Me.POBLongShort.Visible = False ' + 'POBLongObjNT + ' + Me.POBLongObjNT.Image = Global.iBMSC.My.Resources.Resources.ConvertNotesL + Me.POBLongObjNT.Name = "POBLongObjNT" + Me.POBLongObjNT.Size = New System.Drawing.Size(236, 22) + Me.POBLongObjNT.Text = "L&NObj → NT Long Note" + ' + 'POBLongNTObj + ' + Me.POBLongNTObj.Image = Global.iBMSC.My.Resources.Resources.ConvertNotesL + Me.POBLongNTObj.Name = "POBLongNTObj" + Me.POBLongNTObj.Size = New System.Drawing.Size(236, 22) + Me.POBLongNTObj.Text = "&NT Long Note → LNObj" + ' 'ToolStripSeparator25 ' Me.ToolStripSeparator25.Name = "ToolStripSeparator25" @@ -4302,12 +4309,9 @@ Partial Class MainWindow ' Me.TimerPreviewNote.Interval = 1 ' - 'POBLongNTObj + 'TimerSelectionBox ' - Me.POBLongNTObj.Image = Global.iBMSC.My.Resources.Resources.ConvertNotesL - Me.POBLongNTObj.Name = "POBLongNTObj" - Me.POBLongNTObj.Size = New System.Drawing.Size(236, 22) - Me.POBLongNTObj.Text = "&NT Long Note → LNObj" + Me.TimerSelectionBox.Interval = 15 ' 'MainWindow ' @@ -4805,4 +4809,5 @@ Partial Class MainWindow Friend WithEvents POBAutoLongColumn As ToolStripMenuItem Friend WithEvents POBLongObjNT As ToolStripMenuItem Friend WithEvents POBLongNTObj As ToolStripMenuItem + Friend WithEvents TimerSelectionBox As Timer End Class diff --git a/iBMSC/MainWindow.vb b/iBMSC/MainWindow.vb index ed4525215..99b2658b3 100644 --- a/iBMSC/MainWindow.vb +++ b/iBMSC/MainWindow.vb @@ -5972,4 +5972,8 @@ case2: Dim xI0 As Integer InternalPlayTimerCount = TimeNow - InternalPlayTimerStart RefreshPanelAll() End Sub + + Private Sub TimerSelectionBox_Tick(sender As Object, e As EventArgs) Handles TimerSelectionBox.Tick + RefreshPanelAll() + End Sub End Class diff --git a/iBMSC/PanelDraw.vb b/iBMSC/PanelDraw.vb index 7dc3a4cc8..53570beb1 100644 --- a/iBMSC/PanelDraw.vb +++ b/iBMSC/PanelDraw.vb @@ -188,9 +188,12 @@ Partial Public Class MainWindow Private Sub DrawSelectionBox(xIndex As Integer, e1 As BufferedGraphics) If TBSelect.Checked AndAlso xIndex = PanelFocus AndAlso Not (pMouseMove = New Point(-1, -1) Or LastMouseDownLocation = New Point(-1, -1)) Then + TimerSelectionBox.Enabled = True e1.Graphics.DrawRectangle(vo.SelBox, CSng(IIf(pMouseMove.X > LastMouseDownLocation.X, LastMouseDownLocation.X, pMouseMove.X)), CSng(IIf(pMouseMove.Y > LastMouseDownLocation.Y, LastMouseDownLocation.Y, pMouseMove.Y)), Math.Abs(pMouseMove.X - LastMouseDownLocation.X), Math.Abs(pMouseMove.Y - LastMouseDownLocation.Y)) + Else + TimerSelectionBox.Enabled = False End If End Sub From afd9fffd2cbf0850f66e097f15f2071855c34144 Mon Sep 17 00:00:00 2001 From: psyk2642 <60137590+psyk2642@users.noreply.github.com> Date: Thu, 5 May 2022 15:53:56 +0800 Subject: [PATCH 140/257] Added some more keybind options --- iBMSC/MainWindow.resx | 7 +++++-- iBMSC/MainWindow.vb | 17 +++++++++++++++-- iBMSC/Option Windows/OpVisualOverride.vb | 2 +- iBMSC/PanelEvents.vb | 6 ++++++ 4 files changed, 27 insertions(+), 5 deletions(-) diff --git a/iBMSC/MainWindow.resx b/iBMSC/MainWindow.resx index a2ae3cf65..e0b923645 100644 --- a/iBMSC/MainWindow.resx +++ b/iBMSC/MainWindow.resx @@ -197,10 +197,13 @@ 1240, 2 - 1118, 34 + 644, 28 - 1265, 33 + 790, 28 + + + 492, 28 65 diff --git a/iBMSC/MainWindow.vb b/iBMSC/MainWindow.vb index 99b2658b3..1e789073c 100644 --- a/iBMSC/MainWindow.vb +++ b/iBMSC/MainWindow.vb @@ -324,6 +324,9 @@ Public Class MainWindow New Keybinding("Snap to Grid", "Snap to grid", {"G"}), New Keybinding("Convert to Long Note", " Long Note", {"L"}), New Keybinding("Convert to Short Note", " Short Note", {"S"}), + New Keybinding("Convert between Long and Short Note", "Long Note ? Short Note", {""}), + New Keybinding("Auto Long Note (By VPosition)", "Auto Long Note (By VPosition)", {""}), + New Keybinding("Auto Long Note (By Column)", "Auto Long Note (By Column)", {""}), New Keybinding("Check Technical Error", "Check for technical errors such as impossible scratches in DP or impossible chords in PMS", {"Ctrl+Alt+E"}), New Keybinding("Select Expansion Section", "Select #IF sections in the Expansion field", {"Ctrl+Alt+R"}), _ ' Miscellaneous Editor @@ -3337,7 +3340,7 @@ Public Class MainWindow Dim xDiag As New OpVisualOverride(COverrides, hWAV, COverridesSaveOption) ' Save settings If xDiag.ShowDialog() = Windows.Forms.DialogResult.OK Then - COverrides = xDiag.COverrides + COverrides = CType(xDiag.COverrides.Clone(), ColorOverride()) If COverridesSaveOption <> xDiag.CoBSave.SelectedIndex Then COverridesSaveOption = xDiag.CoBSave.SelectedIndex @@ -3861,6 +3864,16 @@ Public Class MainWindow CGSnap.Text = "Snap to grid (" & keybind.Combo(0) & ")" Case "Disable Vertical Moves" CGDisableVertical.Text = "Disable vertical moves (" & keybind.Combo(0) & ")" + Case "Convert to Long Note" + POBLong.ShortcutKeyDisplayString = keybind.Combo(0) + Case "Convert to Short Note" + POBShort.ShortcutKeyDisplayString = keybind.Combo(0) + Case "Convert between Long and Short Note" + POBLongShort.ShortcutKeyDisplayString = keybind.Combo(0) + Case "Auto Long Note (By VPosition)" + POBAutoLongVPosition.ShortcutKeyDisplayString = keybind.Combo(0) + Case "Auto Long Note (By Column)" + POBAutoLongColumn.ShortcutKeyDisplayString = keybind.Combo(0) Case "Undo" mnUndo.ShortcutKeyDisplayString = keybind.Combo(0) TBUndo.Text = "Undo (" & Join(keybind.Combo, ", ") & ")" @@ -4004,7 +4017,7 @@ Public Class MainWindow RefreshPanelAll() End Sub - Private Sub POBAutoLong_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles POBAutoLongVPosition.Click + Private Sub POBAutoLongVPosition_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles POBAutoLongVPosition.Click ' TODO: Make it applicable to notes with the same VPosition, not just one note at a time If Not NTInput Then ConvertBMSE2NT() diff --git a/iBMSC/Option Windows/OpVisualOverride.vb b/iBMSC/Option Windows/OpVisualOverride.vb index bef6256c5..380cf6baa 100644 --- a/iBMSC/Option Windows/OpVisualOverride.vb +++ b/iBMSC/Option Windows/OpVisualOverride.vb @@ -12,7 +12,7 @@ LOverrides.Items.Clear() - COverrides = xColorOverrides + COverrides = CType(xColorOverrides.Clone(), MainWindow.ColorOverride()) WHeight = Height ReDim TLValuesHeight(TLValues.RowStyles.Count - 1) diff --git a/iBMSC/PanelEvents.vb b/iBMSC/PanelEvents.vb index c23fe971c..953c45f3a 100644 --- a/iBMSC/PanelEvents.vb +++ b/iBMSC/PanelEvents.vb @@ -128,6 +128,12 @@ Partial Public Class MainWindow POBLong_Click(Nothing, Nothing) Case "Convert to Short Note" POBNormal_Click(Nothing, Nothing) + Case "Convert between Long and Short Note" + POBNormalLong_Click(Nothing, Nothing) + Case "Auto Long Note (By VPosition)" + POBAutoLongVPosition_Click(Nothing, Nothing) + Case "Auto Long Note (By Column)" + POBAutoLongColumn_Click(Nothing, Nothing) Case "Check Technical Error" CheckTechnicalError(Nothing, Nothing) Case "Select Expansion Section" From 793236328763c8ac3febe4c37ec7aa9f796ae3be Mon Sep 17 00:00:00 2001 From: psyk2642 <60137590+psyk2642@users.noreply.github.com> Date: Thu, 5 May 2022 22:03:09 +0800 Subject: [PATCH 141/257] Update README.md --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index e11f60912..8e626c4c6 100644 --- a/README.md +++ b/README.md @@ -86,23 +86,23 @@ Listed in the order added. ## New dialog/option boxes -### Advanced Statistics +### Advanced Statistics (Ctrl+Shift+T) * Displays note statistics over individual lanes from A1 to D8. * Displays note usages, including #WAV assigned notes with 0 note count and #WAV unassigned notes with non-zero note count. -### Select Expansion Code +### Select Expansion Code (Ctrl+Alt+R) * Display ghost notes: Select an #if section to display its notes in ghost form. * Display ghost notes (All): Display all notes in ghost form. * Modify notes: Select an #if section and jump straight to modifying them. * Modify section: Open an instance of pBMSC, allowing you to modify the #if section individually. * Remove ghost notes: Remove all ghost notes. -### Visual Override Options +### Visual Override Options (Shift+F12) * Creates a list of note ranges with a specified color and replaces specified notes' display color. * Allows a range of notes to have a gradient of colors, or a single color. * Settings can be saved to either Editor, Chart, or Song. -### Keybinding Options +### Keybinding Options (Shift+F10) * Allows for rebinding keys for a lot of functions, such as note lane assignment. * Some other functions are also rebindable, such as Snap to Grid, Undo, and Redo. From fecec173f9844b52e1fcc056f34d00fb5eb365d6 Mon Sep 17 00:00:00 2001 From: psyk2642 <60137590+psyk2642@users.noreply.github.com> Date: Fri, 6 May 2022 22:01:44 +0800 Subject: [PATCH 142/257] Optimized performance back to uBMSC level So I may have accidentally done the errorgraphics assigning even on non-error notes. --- iBMSC/PanelDraw.vb | 65 ++++++++++++++++++++++++---------------------- 1 file changed, 34 insertions(+), 31 deletions(-) diff --git a/iBMSC/PanelDraw.vb b/iBMSC/PanelDraw.vb index 53570beb1..db3ad8ace 100644 --- a/iBMSC/PanelDraw.vb +++ b/iBMSC/PanelDraw.vb @@ -603,11 +603,8 @@ Partial Public Class MainWindow Dim p2 = New Point(HorizontalPositiontoDisplay(xnLeft + xColumnWidth, xHS), NoteRowToPanelHeight(sNote.VPosition, xVS, xHeight) + 10) - bright = GetColumn(sNote.ColumnIndex).getBright(xAlpha) - dark = GetColumn(sNote.ColumnIndex).getDark(xAlpha) - ' Color override - GetOverridenColor(sNote, bright, dark, xAlpha, CO) + GetColor(sNote, bright, dark, xAlpha, CO) If Not sNote.LongNote Then xPen = New Pen(GetColumn(sNote.ColumnIndex).getBright(xAlpha)) @@ -653,17 +650,20 @@ Partial Public Class MainWindow 'e.Graphics.DrawString(sNote.TimeOffset.ToString("0.##"), New Font("Verdana", 9), Brushes.Cyan, _ ' New Point(HorizontalPositiontoDisplay(nLeft(sNote.ColumnIndex + 1), xHS), VerticalPositiontoDisplay(sNote.VPosition, xVS, xHeight) - vo.kHeight - 2)) - Dim ErrorGraphics As Bitmap - Select Case sNote.ErrorType - Case 1 - ErrorGraphics = My.Resources.ImageErrorR - Case Else - ErrorGraphics = My.Resources.ImageError - End Select - If ErrorCheck AndAlso sNote.HasError Then e.Graphics.DrawImage(ErrorGraphics, - CInt(HorizontalPositiontoDisplay(CInt(xnLeft + xColumnWidth / 2), xHS) - 12), - CInt(NoteRowToPanelHeight(sNote.VPosition, xVS, xHeight) - vo.kHeight / 2 - 12), - 24, 24) + If ErrorCheck AndAlso sNote.HasError Then + Dim ErrorGraphics As Bitmap + Select Case sNote.ErrorType + Case 1 + ErrorGraphics = My.Resources.ImageErrorR + Case Else + ErrorGraphics = My.Resources.ImageError + End Select + + e.Graphics.DrawImage(ErrorGraphics, + CInt(HorizontalPositiontoDisplay(CInt(xnLeft + xColumnWidth / 2), xHS) - 12), + CInt(NoteRowToPanelHeight(sNote.VPosition, xVS, xHeight) - vo.kHeight / 2 - 12), + 24, 24) + End If If sNote.Selected Then e.Graphics.DrawRectangle(vo.kSelected, HorizontalPositiontoDisplay(xnLeft, xHS), NoteRowToPanelHeight(sNote.VPosition, xVS, xHeight) - vo.kHeight - 1, xColumnWidth * gxWidth, vo.kHeight + 2) @@ -728,11 +728,8 @@ Partial Public Class MainWindow Next End If - bright = GetColumn(sNote.ColumnIndex).getBright(xAlpha) - dark = GetColumn(sNote.ColumnIndex).getDark(xAlpha) - - ' Color override - GetOverridenColor(sNote, bright, dark, xAlpha, CO) + ' Get Color + Color override + GetColor(sNote, bright, dark, xAlpha, CO) If sNote.Length = 0 Then p1 = New Point(HorizontalPositiontoDisplay(xnLeft, xHS), @@ -793,18 +790,18 @@ Partial Public Class MainWindow End If ' Errors - Dim ErrorGraphics As Bitmap - Select Case sNote.ErrorType - Case 1 - ErrorGraphics = My.Resources.ImageErrorR - Case Else - ErrorGraphics = My.Resources.ImageError - End Select If ErrorCheck AndAlso sNote.HasError Then + Dim ErrorGraphics As Bitmap + Select Case sNote.ErrorType + Case 1 + ErrorGraphics = My.Resources.ImageErrorR + Case Else + ErrorGraphics = My.Resources.ImageError + End Select e.Graphics.DrawImage(ErrorGraphics, - CInt(HorizontalPositiontoDisplay(CInt(xnLeft + xColumnWidth / 2), xHS) - 12), - CInt(NoteRowToPanelHeight(sNote.VPosition, xVS, xHeight) - vo.kHeight / 2 - 12), - 24, 24) + CInt(HorizontalPositiontoDisplay(CInt(xnLeft + xColumnWidth / 2), xHS) - 12), + CInt(NoteRowToPanelHeight(sNote.VPosition, xVS, xHeight) - vo.kHeight / 2 - 12), + 24, 24) End If 'e.Graphics.DrawString(sNote.TimeOffset.ToString("0.##"), New Font("Verdana", 9), Brushes.Cyan, _ @@ -812,7 +809,7 @@ Partial Public Class MainWindow End Sub - Private Sub GetOverridenColor(ByRef sNote As Note, ByRef Bright As Color, ByRef Dark As Color, ByVal xAlpha As Single, ByVal CO As ColorOverride()) + Private Sub GetColor(ByRef sNote As Note, ByRef Bright As Color, ByRef Dark As Color, ByVal xAlpha As Single, ByVal CO As ColorOverride()) If Not IsNothing(CO) Then For i = 0 To UBound(CO) @@ -826,23 +823,29 @@ Partial Public Class MainWindow Case 0 Bright = Color.FromArgb(CInt(CONoteColor * xAlpha)) Dark = Bright + Return Case 1 Dim CORange = Math.Max(1, CORangeU - CORangeL) Bright = InterpolateColorARGB(Color.FromArgb(CONoteColor), Color.FromArgb(CONoteColorU), (sNote.Value - CORangeL) / CORange, xAlpha) Dark = Bright + Return Case 2 Dim CORange = Math.Max(1, CORangeU - CORangeL) Bright = InterpolateColorAHSL(Color.FromArgb(CONoteColor), Color.FromArgb(CONoteColorU), (sNote.Value - CORangeL) / CORange, xAlpha) Dark = Bright + Return Case 3 Dim CORange = Math.Max(1, CORangeU - CORangeL) Bright = InterpolateColorAHSL(Color.FromArgb(CONoteColor), Color.FromArgb(CONoteColorU), (sNote.Value - CORangeL) / CORange, xAlpha, 0) Dark = Bright + Return End Select End If Next End If + Bright = GetColumn(sNote.ColumnIndex).getBright(xAlpha) + Dark = GetColumn(sNote.ColumnIndex).getDark(xAlpha) End Sub Private Function InterpolateColorARGB(ColorL As Color, ColorU As Color, Ratio As Double, Optional xAlpha As Single = 1) As Color From 603637c44790834aca286bc684d5c131f11bcf7f Mon Sep 17 00:00:00 2001 From: psyk2642 <60137590+psyk2642@users.noreply.github.com> Date: Fri, 6 May 2022 22:12:00 +0800 Subject: [PATCH 143/257] Sub Name Update --- iBMSC/MainWindow.designer.vb | 49 ++++++++++++++++++------------------ iBMSC/MainWindow.resx | 32 +++++++++++------------ iBMSC/MainWindow.vb | 4 +-- iBMSC/PanelDraw.vb | 4 +-- 4 files changed, 45 insertions(+), 44 deletions(-) diff --git a/iBMSC/MainWindow.designer.vb b/iBMSC/MainWindow.designer.vb index 71bf5cda4..d4e53c827 100644 --- a/iBMSC/MainWindow.designer.vb +++ b/iBMSC/MainWindow.designer.vb @@ -25,16 +25,16 @@ Partial Class MainWindow Me.TBLangDef = New System.Windows.Forms.ToolStripMenuItem() Me.TBLangRefresh = New System.Windows.Forms.ToolStripMenuItem() Me.ToolStripSeparator9 = New System.Windows.Forms.ToolStripSeparator() - Me.mnLanguage = New System.Windows.Forms.ToolStripMenuItem() Me.TBLanguage = New System.Windows.Forms.ToolStripDropDownButton() + Me.mnLanguage = New System.Windows.Forms.ToolStripMenuItem() Me.cmnTheme = New System.Windows.Forms.ContextMenuStrip(Me.components) Me.TBThemeDef = New System.Windows.Forms.ToolStripMenuItem() Me.TBThemeSave = New System.Windows.Forms.ToolStripMenuItem() Me.TBThemeRefresh = New System.Windows.Forms.ToolStripMenuItem() Me.TBThemeLoadComptability = New System.Windows.Forms.ToolStripMenuItem() Me.ToolStripSeparator6 = New System.Windows.Forms.ToolStripSeparator() - Me.TBTheme = New System.Windows.Forms.ToolStripDropDownButton() Me.mnTheme = New System.Windows.Forms.ToolStripMenuItem() + Me.TBTheme = New System.Windows.Forms.ToolStripDropDownButton() Me.Timer1 = New System.Windows.Forms.Timer(Me.components) Me.Menu1 = New System.Windows.Forms.ContextMenuStrip(Me.components) Me.MInsert = New System.Windows.Forms.ToolStripMenuItem() @@ -387,7 +387,7 @@ Partial Class MainWindow Me.POptionsScroll = New System.Windows.Forms.Panel() Me.TimerInternalPlay = New System.Windows.Forms.Timer(Me.components) Me.TimerPreviewNote = New System.Windows.Forms.Timer(Me.components) - Me.TimerSelectionBox = New System.Windows.Forms.Timer(Me.components) + Me.TimerRefreshPanel = New System.Windows.Forms.Timer(Me.components) Me.cmnLanguage.SuspendLayout() Me.cmnTheme.SuspendLayout() Me.Menu1.SuspendLayout() @@ -472,7 +472,7 @@ Partial Class MainWindow ' Me.cmnLanguage.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.TBLangDef, Me.TBLangRefresh, Me.ToolStripSeparator9}) Me.cmnLanguage.Name = "cmnLanguage" - Me.cmnLanguage.OwnerItem = Me.TBLanguage + Me.cmnLanguage.OwnerItem = Me.mnLanguage Me.cmnLanguage.Size = New System.Drawing.Size(121, 54) ' 'TBLangDef @@ -493,14 +493,6 @@ Partial Class MainWindow Me.ToolStripSeparator9.Name = "ToolStripSeparator9" Me.ToolStripSeparator9.Size = New System.Drawing.Size(117, 6) ' - 'mnLanguage - ' - Me.mnLanguage.DropDown = Me.cmnLanguage - Me.mnLanguage.Image = Global.iBMSC.My.Resources.Resources.x16Language - Me.mnLanguage.Name = "mnLanguage" - Me.mnLanguage.Size = New System.Drawing.Size(253, 22) - Me.mnLanguage.Text = "&Language" - ' 'TBLanguage ' Me.TBLanguage.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image @@ -511,11 +503,19 @@ Partial Class MainWindow Me.TBLanguage.Size = New System.Drawing.Size(29, 22) Me.TBLanguage.Text = "Language" ' + 'mnLanguage + ' + Me.mnLanguage.DropDown = Me.cmnLanguage + Me.mnLanguage.Image = Global.iBMSC.My.Resources.Resources.x16Language + Me.mnLanguage.Name = "mnLanguage" + Me.mnLanguage.Size = New System.Drawing.Size(253, 22) + Me.mnLanguage.Text = "&Language" + ' 'cmnTheme ' Me.cmnTheme.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.TBThemeDef, Me.TBThemeSave, Me.TBThemeRefresh, Me.TBThemeLoadComptability, Me.ToolStripSeparator6}) Me.cmnTheme.Name = "cmnLanguage" - Me.cmnTheme.OwnerItem = Me.mnTheme + Me.cmnTheme.OwnerItem = Me.TBTheme Me.cmnTheme.Size = New System.Drawing.Size(246, 98) ' 'TBThemeDef @@ -549,6 +549,14 @@ Partial Class MainWindow Me.ToolStripSeparator6.Name = "ToolStripSeparator6" Me.ToolStripSeparator6.Size = New System.Drawing.Size(242, 6) ' + 'mnTheme + ' + Me.mnTheme.DropDown = Me.cmnTheme + Me.mnTheme.Image = Global.iBMSC.My.Resources.Resources.x16Theme + Me.mnTheme.Name = "mnTheme" + Me.mnTheme.Size = New System.Drawing.Size(253, 22) + Me.mnTheme.Text = "&Theme" + ' 'TBTheme ' Me.TBTheme.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image @@ -559,14 +567,6 @@ Partial Class MainWindow Me.TBTheme.Size = New System.Drawing.Size(29, 22) Me.TBTheme.Text = "Theme" ' - 'mnTheme - ' - Me.mnTheme.DropDown = Me.cmnTheme - Me.mnTheme.Image = Global.iBMSC.My.Resources.Resources.x16Theme - Me.mnTheme.Name = "mnTheme" - Me.mnTheme.Size = New System.Drawing.Size(253, 22) - Me.mnTheme.Text = "&Theme" - ' 'Timer1 ' Me.Timer1.Interval = 15 @@ -1182,6 +1182,7 @@ Partial Class MainWindow ' Me.cmnConversion.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.POBLong, Me.POBShort, Me.POBLongShort, Me.POBLongObjNT, Me.POBLongNTObj, Me.ToolStripSeparator25, Me.POBAutoLongVPosition, Me.POBAutoLongColumn, Me.ToolStripSeparator10, Me.POBHidden, Me.POBVisible, Me.POBHiddenVisible, Me.ToolStripSeparator11, Me.POBModify, Me.POBMirror, Me.POBFlip, Me.POBRandom, Me.POBRRandom, Me.POBSRandom, Me.POBHRandom, Me.POBSort}) Me.cmnConversion.Name = "cmnLanguage" + Me.cmnConversion.OwnerItem = Me.POConvert Me.cmnConversion.Size = New System.Drawing.Size(237, 418) ' 'POBLong @@ -4309,9 +4310,9 @@ Partial Class MainWindow ' Me.TimerPreviewNote.Interval = 1 ' - 'TimerSelectionBox + 'TimerRefreshPanel ' - Me.TimerSelectionBox.Interval = 15 + Me.TimerRefreshPanel.Interval = 15 ' 'MainWindow ' @@ -4809,5 +4810,5 @@ Partial Class MainWindow Friend WithEvents POBAutoLongColumn As ToolStripMenuItem Friend WithEvents POBLongObjNT As ToolStripMenuItem Friend WithEvents POBLongNTObj As ToolStripMenuItem - Friend WithEvents TimerSelectionBox As Timer + Friend WithEvents TimerRefreshPanel As Timer End Class diff --git a/iBMSC/MainWindow.resx b/iBMSC/MainWindow.resx index e0b923645..774bcc015 100644 --- a/iBMSC/MainWindow.resx +++ b/iBMSC/MainWindow.resx @@ -118,28 +118,28 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - 497, 2 + 483, 17 - 625, 2 + 611, 17 - 87, 2 + 170, 17 - 176, 2 + 259, 17 - 266, 2 + 349, 17 - 395, 28 + 1402, 17 - 737, 2 + 723, 17 - 839, 2 + 859, 17 @@ -185,25 +185,25 @@ - 1022, 2 + 1042, 17 - 931, 2 + 951, 17 - 1120, 2 + 1140, 17 - 1240, 2 + 1260, 17 - 644, 28 + 1499, 17 - 790, 28 + 17, 56 - - 492, 28 + + 17, 17 65 diff --git a/iBMSC/MainWindow.vb b/iBMSC/MainWindow.vb index 1e789073c..4b7debc4b 100644 --- a/iBMSC/MainWindow.vb +++ b/iBMSC/MainWindow.vb @@ -5986,7 +5986,7 @@ case2: Dim xI0 As Integer RefreshPanelAll() End Sub - Private Sub TimerSelectionBox_Tick(sender As Object, e As EventArgs) Handles TimerSelectionBox.Tick + Private Sub TimerRefreshPanel_Tick(sender As Object, e As EventArgs) Handles TimerRefreshPanel.Tick RefreshPanelAll() End Sub -End Class +End Class \ No newline at end of file diff --git a/iBMSC/PanelDraw.vb b/iBMSC/PanelDraw.vb index db3ad8ace..d65b15574 100644 --- a/iBMSC/PanelDraw.vb +++ b/iBMSC/PanelDraw.vb @@ -188,12 +188,12 @@ Partial Public Class MainWindow Private Sub DrawSelectionBox(xIndex As Integer, e1 As BufferedGraphics) If TBSelect.Checked AndAlso xIndex = PanelFocus AndAlso Not (pMouseMove = New Point(-1, -1) Or LastMouseDownLocation = New Point(-1, -1)) Then - TimerSelectionBox.Enabled = True + TimerRefreshPanel.Enabled = True e1.Graphics.DrawRectangle(vo.SelBox, CSng(IIf(pMouseMove.X > LastMouseDownLocation.X, LastMouseDownLocation.X, pMouseMove.X)), CSng(IIf(pMouseMove.Y > LastMouseDownLocation.Y, LastMouseDownLocation.Y, pMouseMove.Y)), Math.Abs(pMouseMove.X - LastMouseDownLocation.X), Math.Abs(pMouseMove.Y - LastMouseDownLocation.Y)) Else - TimerSelectionBox.Enabled = False + TimerRefreshPanel.Enabled = False End If End Sub From be993d70d444a90fa1fe9cd58fa29d7fa18372cd Mon Sep 17 00:00:00 2001 From: psyk2642 <60137590+psyk2642@users.noreply.github.com> Date: Fri, 6 May 2022 22:13:30 +0800 Subject: [PATCH 144/257] Update AssemblyInfo.vb --- iBMSC/My Project/AssemblyInfo.vb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/iBMSC/My Project/AssemblyInfo.vb b/iBMSC/My Project/AssemblyInfo.vb index aefcc91bd..3ed555ef9 100644 --- a/iBMSC/My Project/AssemblyInfo.vb +++ b/iBMSC/My Project/AssemblyInfo.vb @@ -30,7 +30,7 @@ Imports System.Resources ' by using the '*' as shown below: ' - - + + \ No newline at end of file From c9a3bfac13c311d058232493c3dadfdf3e343e7f Mon Sep 17 00:00:00 2001 From: psyk2642 <60137590+psyk2642@users.noreply.github.com> Date: Fri, 6 May 2022 23:04:33 +0800 Subject: [PATCH 145/257] Slight Code Optimization --- iBMSC/ChartIO.vb | 2 ++ iBMSC/EditorPersistent.vb | 36 ++++++++++++++++++------------------ iBMSC/MainWindow.vb | 23 +++++++++++++++++------ iBMSC/PanelDraw.vb | 8 ++++---- iBMSC/PanelEvents.vb | 2 +- 5 files changed, 42 insertions(+), 29 deletions(-) diff --git a/iBMSC/ChartIO.vb b/iBMSC/ChartIO.vb index f8ae47fa9..9a3c0d865 100644 --- a/iBMSC/ChartIO.vb +++ b/iBMSC/ChartIO.vb @@ -191,6 +191,8 @@ Partial Public Class MainWindow ElseIf SWIC(sLineTrim, "#TEMPLATE") Then FileNameTemplate = Mid(sLineTrim, Len("#TEMPLATE") + 2) NotesTemplate = OpenBMSFunc(My.Computer.FileSystem.ReadAllText(ExcludeFileName(FileName) & "\" & FileNameTemplate, TextEncoding)) + Continue For + End If 'TODO: LNOBJ value validation diff --git a/iBMSC/EditorPersistent.vb b/iBMSC/EditorPersistent.vb index a3da68e87..e05dffdb9 100644 --- a/iBMSC/EditorPersistent.vb +++ b/iBMSC/EditorPersistent.vb @@ -239,18 +239,18 @@ Partial Public Class MainWindow .Indentation = 4 .WriteStartElement("ColorOverride") - .WriteAttributeString("Count", UBound(COverrides).ToString()) + .WriteAttributeString("Count", UBound(COverridesFull).ToString()) - For i = 0 To UBound(COverrides) + For i = 0 To UBound(COverridesFull) .WriteStartElement("Color") .WriteAttributeString("Index", i.ToString()) - .WriteAttributeString("Name", COverrides(i).Name.ToString()) - .WriteAttributeString("Enabled", COverrides(i).Enabled.ToString()) - .WriteAttributeString("ColorOption", COverrides(i).ColorOption.ToString()) - .WriteAttributeString("RangeL", COverrides(i).RangeL.ToString()) - .WriteAttributeString("RangeU", COverrides(i).RangeU.ToString()) - .WriteAttributeString("NoteColor", COverrides(i).NoteColor.ToString()) - .WriteAttributeString("NoteColorU", COverrides(i).NoteColorU.ToString()) + .WriteAttributeString("Name", COverridesFull(i).Name.ToString()) + .WriteAttributeString("Enabled", COverridesFull(i).Enabled.ToString()) + .WriteAttributeString("ColorOption", COverridesFull(i).ColorOption.ToString()) + .WriteAttributeString("RangeL", COverridesFull(i).RangeL.ToString()) + .WriteAttributeString("RangeU", COverridesFull(i).RangeU.ToString()) + .WriteAttributeString("NoteColor", COverridesFull(i).NoteColor.ToString()) + .WriteAttributeString("NoteColorU", COverridesFull(i).NoteColorU.ToString()) .WriteEndElement() Next @@ -1490,23 +1490,23 @@ Partial Public Class MainWindow Dim Root As XmlElement = Doc.Item("ColorOverride") Dim n As Integer = CInt(Root.GetAttribute("Count")) - ReDim COverrides(n) + ReDim COverridesFull(n) Dim i As Integer For Each eColor As XmlElement In Root.ChildNodes With eColor XMLLoadAttribute(.GetAttribute("Index"), i) - XMLLoadAttribute(.GetAttribute("Name"), COverrides(i).Name) - XMLLoadAttribute(.GetAttribute("Enabled"), COverrides(i).Enabled) - XMLLoadAttribute(.GetAttribute("ColorOption"), COverrides(i).ColorOption) - XMLLoadAttribute(.GetAttribute("RangeL"), COverrides(i).RangeL) - XMLLoadAttribute(.GetAttribute("RangeU"), COverrides(i).RangeU) - XMLLoadAttribute(.GetAttribute("NoteColor"), COverrides(i).NoteColor) - XMLLoadAttribute(.GetAttribute("NoteColorU"), COverrides(i).NoteColorU) + XMLLoadAttribute(.GetAttribute("Name"), COverridesFull(i).Name) + XMLLoadAttribute(.GetAttribute("Enabled"), COverridesFull(i).Enabled) + XMLLoadAttribute(.GetAttribute("ColorOption"), COverridesFull(i).ColorOption) + XMLLoadAttribute(.GetAttribute("RangeL"), COverridesFull(i).RangeL) + XMLLoadAttribute(.GetAttribute("RangeU"), COverridesFull(i).RangeU) + XMLLoadAttribute(.GetAttribute("NoteColor"), COverridesFull(i).NoteColor) + XMLLoadAttribute(.GetAttribute("NoteColorU"), COverridesFull(i).NoteColorU) End With Next FileStream.Close() Else - ReDim COverrides(-1) + ReDim COverridesFull(-1) End If End Sub End Class diff --git a/iBMSC/MainWindow.vb b/iBMSC/MainWindow.vb index 4b7debc4b..27ff644f1 100644 --- a/iBMSC/MainWindow.vb +++ b/iBMSC/MainWindow.vb @@ -265,7 +265,8 @@ Public Class MainWindow NoteColorU = xNoteColorU End Sub End Structure - Dim COverrides(-1) As ColorOverride + Dim COverridesFull(-1) As ColorOverride + Dim COverridesActive(-1) As ColorOverride Dim COverridesSaveOption As Integer = 1 '----Keybinding Options @@ -1103,7 +1104,7 @@ Public Class MainWindow FileNameTemplate = "" ReDim hCOM(1295) hCOMNum = 0 - COverrides = Nothing + COverridesFull = Nothing ReDim wLWAV(1295) WaveformLoaded = False @@ -3337,16 +3338,16 @@ Public Class MainWindow End Sub Private Sub TBVCOptions_Click(sender As Object, e As EventArgs) Handles mnVCOptions.Click, BWAVColorOverride.Click - Dim xDiag As New OpVisualOverride(COverrides, hWAV, COverridesSaveOption) + Dim xDiag As New OpVisualOverride(COverridesFull, hWAV, COverridesSaveOption) ' Save settings If xDiag.ShowDialog() = Windows.Forms.DialogResult.OK Then - COverrides = CType(xDiag.COverrides.Clone(), ColorOverride()) + COverridesFull = CType(xDiag.COverrides.Clone(), ColorOverride()) If COverridesSaveOption <> xDiag.CoBSave.SelectedIndex Then COverridesSaveOption = xDiag.CoBSave.SelectedIndex - If Not IsNothing(COverrides) Then If COverrides.Length > 0 Then SaveColorOverride(FileName, True) + If Not IsNothing(COverridesFull) Then If COverridesFull.Length > 0 Then SaveColorOverride(FileName, True) Else - If Not IsNothing(COverrides) Then If COverrides.Length > 0 Then SaveColorOverride(FileName, False) + If Not IsNothing(COverridesFull) Then If COverridesFull.Length > 0 Then SaveColorOverride(FileName, False) End If End If @@ -3359,6 +3360,16 @@ Public Class MainWindow TBVCOptions_Click(sender, New EventArgs) End If + ReDim COverridesActive(UBound(COverridesFull)) + Dim i As Integer = -1 + For Each COverride In COverridesFull + If COverride.Enabled Then + i += 1 + COverridesActive(i) = COverride + End If + Next + ReDim Preserve COverridesActive(i) + UpdateColumnsX() RefreshPanelAll() End Sub diff --git a/iBMSC/PanelDraw.vb b/iBMSC/PanelDraw.vb index d65b15574..01cd59602 100644 --- a/iBMSC/PanelDraw.vb +++ b/iBMSC/PanelDraw.vb @@ -337,9 +337,9 @@ Partial Public Class MainWindow If Notes(xI1).VPosition > xUpperBorder Then Exit For If Not IsNoteVisible(xI1, xTHeight, xVS) Then Continue For If NTInput Then - DrawNoteNT(Notes(xI1), e1, xHS, xVS, xTHeight, COverrides) + DrawNoteNT(Notes(xI1), e1, xHS, xVS, xTHeight, COverridesActive) Else - DrawNote(Notes(xI1), e1, xHS, xVS, xTHeight, COverrides) + DrawNote(Notes(xI1), e1, xHS, xVS, xTHeight, COverridesActive) End If Next End Sub @@ -368,9 +368,9 @@ Partial Public Class MainWindow Private Sub DrawMouseOver(e1 As BufferedGraphics, xTHeight As Integer, xHS As Integer, xVS As Integer) If NTInput Then - If Not bAdjustLength Then DrawNoteNT(Notes(KMouseOver), e1, xHS, xVS, xTHeight, COverrides) + If Not bAdjustLength Then DrawNoteNT(Notes(KMouseOver), e1, xHS, xVS, xTHeight, COverridesActive) Else - DrawNote(Notes(KMouseOver), e1, xHS, xVS, xTHeight, COverrides) + DrawNote(Notes(KMouseOver), e1, xHS, xVS, xTHeight, COverridesActive) End If Dim rect = GetNoteRectangle(KMouseOver, xTHeight, xHS, xVS) diff --git a/iBMSC/PanelEvents.vb b/iBMSC/PanelEvents.vb index 953c45f3a..157301b66 100644 --- a/iBMSC/PanelEvents.vb +++ b/iBMSC/PanelEvents.vb @@ -1754,7 +1754,7 @@ Partial Public Class MainWindow Dim e1 As BufferedGraphics = BufferedGraphicsManager.Current.Allocate(spMain(iI).CreateGraphics, New Rectangle(xDispX, xDispY, xDispW, xDispH)) e1.Graphics.FillRectangle(vo.Bg, New Rectangle(xDispX, xDispY, xDispW, xDispH)) - If NTInput Then DrawNoteNT(Notes(foundNoteIndex), e1, xHS, xVS, xHeight, COverrides) Else DrawNote(Notes(foundNoteIndex), e1, xHS, xVS, xHeight, COverrides) + If NTInput Then DrawNoteNT(Notes(foundNoteIndex), e1, xHS, xVS, xHeight, COverridesActive) Else DrawNote(Notes(foundNoteIndex), e1, xHS, xVS, xHeight, COverridesActive) e1.Graphics.DrawRectangle(CType(IIf(bAdjustLength, vo.kMouseOverE, vo.kMouseOver), Pen), xDispX, xDispY, xDispW - 1, xDispH - 1) From 48357245201cf70568431e6e75d9a2351fd0048d Mon Sep 17 00:00:00 2001 From: psyk2642 <60137590+psyk2642@users.noreply.github.com> Date: Sat, 7 May 2022 00:05:01 +0800 Subject: [PATCH 146/257] Slight Code Fix --- README.md | 2 ++ iBMSC/Option Windows/OpVisualOverride.vb | 4 +++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 8e626c4c6..6af730397 100644 --- a/README.md +++ b/README.md @@ -19,6 +19,8 @@ Listed in the order added. * Reorganized the sidebar so you can tab between textboxes properly. * Prevented notes in Expansion Code from being loaded. * Rare bug that occurs when the mouse is highlighting a long note while toggling between NT and BMSE simultaneously. +* Slightly faster loading time. +* Smoothened Selection Box animation. ## Functionalities * Added Random, R-Random, S-Random and H-Random. Supports PMS as well. diff --git a/iBMSC/Option Windows/OpVisualOverride.vb b/iBMSC/Option Windows/OpVisualOverride.vb index 380cf6baa..5e757014c 100644 --- a/iBMSC/Option Windows/OpVisualOverride.vb +++ b/iBMSC/Option Windows/OpVisualOverride.vb @@ -190,13 +190,15 @@ End Sub Private Sub CBEnable_CheckedChanged(sender As Object, e As EventArgs) Handles CBEnable.CheckedChanged + If LOverrides.SelectedIndex = -1 Then Exit Sub + COverrides(LOverrides.SelectedIndex).Enabled = CBEnable.Checked End Sub Private Sub CColorList_CheckedChanged(sender As Object, e As EventArgs) Handles RColorSing.CheckedChanged, RColorGrad.CheckedChanged, RColorGradHSLD.CheckedChanged, RColorGradHSLU.CheckedChanged If LOverrides.SelectedIndex = -1 Then Exit Sub - Dim RadioS As RadioButton = CType(sender, RadioButton) + Dim RadioS As RadioButton = CType(sender, RadioButton) Dim COption = COverrides(LOverrides.SelectedIndex).ColorOption Dim COption1 = Array.IndexOf(CColorOptionList, RadioS) If (COption = 0 AndAlso COption1 <> 0) OrElse (COption <> 0 AndAlso COption1 = 0) Then UpdateTLValuesDisplay() From c1368eb6be30d6c3ccfa70e5143d4081a46c6031 Mon Sep 17 00:00:00 2001 From: psyk2642 <60137590+psyk2642@users.noreply.github.com> Date: Sat, 7 May 2022 08:45:36 +0800 Subject: [PATCH 147/257] Slight Code Update (Ghost Mode) --- iBMSC/MainWindow.designer.vb | 173 +++++++++++++++++++++-------------- iBMSC/MainWindow.resx | 5 +- iBMSC/MainWindow.vb | 44 ++++----- 3 files changed, 123 insertions(+), 99 deletions(-) diff --git a/iBMSC/MainWindow.designer.vb b/iBMSC/MainWindow.designer.vb index d4e53c827..f28ed0c3a 100644 --- a/iBMSC/MainWindow.designer.vb +++ b/iBMSC/MainWindow.designer.vb @@ -25,16 +25,16 @@ Partial Class MainWindow Me.TBLangDef = New System.Windows.Forms.ToolStripMenuItem() Me.TBLangRefresh = New System.Windows.Forms.ToolStripMenuItem() Me.ToolStripSeparator9 = New System.Windows.Forms.ToolStripSeparator() - Me.TBLanguage = New System.Windows.Forms.ToolStripDropDownButton() Me.mnLanguage = New System.Windows.Forms.ToolStripMenuItem() + Me.TBLanguage = New System.Windows.Forms.ToolStripDropDownButton() Me.cmnTheme = New System.Windows.Forms.ContextMenuStrip(Me.components) Me.TBThemeDef = New System.Windows.Forms.ToolStripMenuItem() Me.TBThemeSave = New System.Windows.Forms.ToolStripMenuItem() Me.TBThemeRefresh = New System.Windows.Forms.ToolStripMenuItem() Me.TBThemeLoadComptability = New System.Windows.Forms.ToolStripMenuItem() Me.ToolStripSeparator6 = New System.Windows.Forms.ToolStripSeparator() - Me.mnTheme = New System.Windows.Forms.ToolStripMenuItem() Me.TBTheme = New System.Windows.Forms.ToolStripDropDownButton() + Me.mnTheme = New System.Windows.Forms.ToolStripMenuItem() Me.Timer1 = New System.Windows.Forms.Timer(Me.components) Me.Menu1 = New System.Windows.Forms.ContextMenuStrip(Me.components) Me.MInsert = New System.Windows.Forms.ToolStripMenuItem() @@ -134,6 +134,7 @@ Partial Class MainWindow Me.POBSRandom = New System.Windows.Forms.ToolStripMenuItem() Me.POBHRandom = New System.Windows.Forms.ToolStripMenuItem() Me.POBSort = New System.Windows.Forms.ToolStripMenuItem() + Me.POConvert = New System.Windows.Forms.ToolStripDropDownButton() Me.mnPreview = New System.Windows.Forms.ToolStripMenuItem() Me.mnPlayB = New System.Windows.Forms.ToolStripMenuItem() Me.mnPlay = New System.Windows.Forms.ToolStripMenuItem() @@ -142,7 +143,6 @@ Partial Class MainWindow Me.mnTechnicalErrorCheck = New System.Windows.Forms.ToolStripMenuItem() Me.mnTOTAL = New System.Windows.Forms.ToolStripMenuItem() Me.ToolStripSeparator13 = New System.Windows.Forms.ToolStripSeparator() - Me.POConvert = New System.Windows.Forms.ToolStripDropDownButton() Me.TBMain = New System.Windows.Forms.ToolStrip() Me.TBNew = New System.Windows.Forms.ToolStripButton() Me.TBOpen = New System.Windows.Forms.ToolStripSplitButton() @@ -388,6 +388,7 @@ Partial Class MainWindow Me.TimerInternalPlay = New System.Windows.Forms.Timer(Me.components) Me.TimerPreviewNote = New System.Windows.Forms.Timer(Me.components) Me.TimerRefreshPanel = New System.Windows.Forms.Timer(Me.components) + Me.TimerExternalExpansion = New System.Windows.Forms.Timer(Me.components) Me.cmnLanguage.SuspendLayout() Me.cmnTheme.SuspendLayout() Me.Menu1.SuspendLayout() @@ -472,7 +473,7 @@ Partial Class MainWindow ' Me.cmnLanguage.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.TBLangDef, Me.TBLangRefresh, Me.ToolStripSeparator9}) Me.cmnLanguage.Name = "cmnLanguage" - Me.cmnLanguage.OwnerItem = Me.mnLanguage + Me.cmnLanguage.OwnerItem = Me.TBLanguage Me.cmnLanguage.Size = New System.Drawing.Size(121, 54) ' 'TBLangDef @@ -493,6 +494,14 @@ Partial Class MainWindow Me.ToolStripSeparator9.Name = "ToolStripSeparator9" Me.ToolStripSeparator9.Size = New System.Drawing.Size(117, 6) ' + 'mnLanguage + ' + Me.mnLanguage.DropDown = Me.cmnLanguage + Me.mnLanguage.Image = Global.iBMSC.My.Resources.Resources.x16Language + Me.mnLanguage.Name = "mnLanguage" + Me.mnLanguage.Size = New System.Drawing.Size(253, 22) + Me.mnLanguage.Text = "&Language" + ' 'TBLanguage ' Me.TBLanguage.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image @@ -503,19 +512,11 @@ Partial Class MainWindow Me.TBLanguage.Size = New System.Drawing.Size(29, 22) Me.TBLanguage.Text = "Language" ' - 'mnLanguage - ' - Me.mnLanguage.DropDown = Me.cmnLanguage - Me.mnLanguage.Image = Global.iBMSC.My.Resources.Resources.x16Language - Me.mnLanguage.Name = "mnLanguage" - Me.mnLanguage.Size = New System.Drawing.Size(253, 22) - Me.mnLanguage.Text = "&Language" - ' 'cmnTheme ' Me.cmnTheme.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.TBThemeDef, Me.TBThemeSave, Me.TBThemeRefresh, Me.TBThemeLoadComptability, Me.ToolStripSeparator6}) Me.cmnTheme.Name = "cmnLanguage" - Me.cmnTheme.OwnerItem = Me.TBTheme + Me.cmnTheme.OwnerItem = Me.mnTheme Me.cmnTheme.Size = New System.Drawing.Size(246, 98) ' 'TBThemeDef @@ -549,14 +550,6 @@ Partial Class MainWindow Me.ToolStripSeparator6.Name = "ToolStripSeparator6" Me.ToolStripSeparator6.Size = New System.Drawing.Size(242, 6) ' - 'mnTheme - ' - Me.mnTheme.DropDown = Me.cmnTheme - Me.mnTheme.Image = Global.iBMSC.My.Resources.Resources.x16Theme - Me.mnTheme.Name = "mnTheme" - Me.mnTheme.Size = New System.Drawing.Size(253, 22) - Me.mnTheme.Text = "&Theme" - ' 'TBTheme ' Me.TBTheme.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image @@ -567,6 +560,14 @@ Partial Class MainWindow Me.TBTheme.Size = New System.Drawing.Size(29, 22) Me.TBTheme.Text = "Theme" ' + 'mnTheme + ' + Me.mnTheme.DropDown = Me.cmnTheme + Me.mnTheme.Image = Global.iBMSC.My.Resources.Resources.x16Theme + Me.mnTheme.Name = "mnTheme" + Me.mnTheme.Size = New System.Drawing.Size(253, 22) + Me.mnTheme.Text = "&Theme" + ' 'Timer1 ' Me.Timer1.Interval = 15 @@ -1182,7 +1183,7 @@ Partial Class MainWindow ' Me.cmnConversion.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.POBLong, Me.POBShort, Me.POBLongShort, Me.POBLongObjNT, Me.POBLongNTObj, Me.ToolStripSeparator25, Me.POBAutoLongVPosition, Me.POBAutoLongColumn, Me.ToolStripSeparator10, Me.POBHidden, Me.POBVisible, Me.POBHiddenVisible, Me.ToolStripSeparator11, Me.POBModify, Me.POBMirror, Me.POBFlip, Me.POBRandom, Me.POBRRandom, Me.POBSRandom, Me.POBHRandom, Me.POBSort}) Me.cmnConversion.Name = "cmnLanguage" - Me.cmnConversion.OwnerItem = Me.POConvert + Me.cmnConversion.OwnerItem = Me.mnConversion Me.cmnConversion.Size = New System.Drawing.Size(237, 418) ' 'POBLong @@ -1328,6 +1329,16 @@ Partial Class MainWindow Me.POBSort.Size = New System.Drawing.Size(236, 22) Me.POBSort.Text = "S&ort" ' + 'POConvert + ' + Me.POConvert.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image + Me.POConvert.DropDown = Me.cmnConversion + Me.POConvert.Image = Global.iBMSC.My.Resources.Resources.ConvertNotes + Me.POConvert.ImageTransparentColor = System.Drawing.Color.Magenta + Me.POConvert.Name = "POConvert" + Me.POConvert.Size = New System.Drawing.Size(29, 22) + Me.POConvert.Text = "Convert Notes" + ' 'mnPreview ' Me.mnPreview.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.mnPlayB, Me.mnPlay, Me.mnStop}) @@ -1385,16 +1396,6 @@ Partial Class MainWindow Me.ToolStripSeparator13.Name = "ToolStripSeparator13" Me.ToolStripSeparator13.Size = New System.Drawing.Size(247, 6) ' - 'POConvert - ' - Me.POConvert.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image - Me.POConvert.DropDown = Me.cmnConversion - Me.POConvert.Image = Global.iBMSC.My.Resources.Resources.ConvertNotes - Me.POConvert.ImageTransparentColor = System.Drawing.Color.Magenta - Me.POConvert.Name = "POConvert" - Me.POConvert.Size = New System.Drawing.Size(29, 22) - Me.POConvert.Text = "Convert Notes" - ' 'TBMain ' Me.TBMain.AccessibleRole = System.Windows.Forms.AccessibleRole.ToolBar @@ -2452,7 +2453,7 @@ Partial Class MainWindow Me.POptions.Dock = System.Windows.Forms.DockStyle.Top Me.POptions.Location = New System.Drawing.Point(0, 0) Me.POptions.Name = "POptions" - Me.POptions.Size = New System.Drawing.Size(183, 1747) + Me.POptions.Size = New System.Drawing.Size(183, 2087) Me.POptions.TabIndex = 29 ' 'POExpansion @@ -2462,7 +2463,7 @@ Partial Class MainWindow Me.POExpansion.Controls.Add(Me.POExpansionInner) Me.POExpansion.Controls.Add(Me.POExpansionSwitch) Me.POExpansion.Dock = System.Windows.Forms.DockStyle.Top - Me.POExpansion.Location = New System.Drawing.Point(0, 1452) + Me.POExpansion.Location = New System.Drawing.Point(0, 1792) Me.POExpansion.Name = "POExpansion" Me.POExpansion.Size = New System.Drawing.Size(183, 295) Me.POExpansion.TabIndex = 6 @@ -2542,7 +2543,7 @@ Partial Class MainWindow Me.POBeat.Controls.Add(Me.POBeatInner) Me.POBeat.Controls.Add(Me.POBeatSwitch) Me.POBeat.Dock = System.Windows.Forms.DockStyle.Top - Me.POBeat.Location = New System.Drawing.Point(0, 1182) + Me.POBeat.Location = New System.Drawing.Point(0, 1522) Me.POBeat.Name = "POBeat" Me.POBeat.Size = New System.Drawing.Size(183, 270) Me.POBeat.TabIndex = 5 @@ -2806,7 +2807,7 @@ Partial Class MainWindow Me.POWAV.Controls.Add(Me.POWAVInner) Me.POWAV.Controls.Add(Me.POWAVSwitch) Me.POWAV.Dock = System.Windows.Forms.DockStyle.Top - Me.POWAV.Location = New System.Drawing.Point(0, 912) + Me.POWAV.Location = New System.Drawing.Point(0, 1252) Me.POWAV.Name = "POWAV" Me.POWAV.Size = New System.Drawing.Size(183, 270) Me.POWAV.TabIndex = 4 @@ -2963,7 +2964,7 @@ Partial Class MainWindow Me.POWaveForm.Controls.Add(Me.POWaveFormInner) Me.POWaveForm.Controls.Add(Me.POWaveFormSwitch) Me.POWaveForm.Dock = System.Windows.Forms.DockStyle.Top - Me.POWaveForm.Location = New System.Drawing.Point(0, 669) + Me.POWaveForm.Location = New System.Drawing.Point(0, 1009) Me.POWaveForm.Name = "POWaveForm" Me.POWaveForm.Size = New System.Drawing.Size(183, 243) Me.POWaveForm.TabIndex = 3 @@ -3354,7 +3355,7 @@ Partial Class MainWindow Me.POGrid.Controls.Add(Me.POGridInner) Me.POGrid.Controls.Add(Me.POGridSwitch) Me.POGrid.Dock = System.Windows.Forms.DockStyle.Top - Me.POGrid.Location = New System.Drawing.Point(0, 439) + Me.POGrid.Location = New System.Drawing.Point(0, 779) Me.POGrid.Name = "POGrid" Me.POGrid.Size = New System.Drawing.Size(183, 230) Me.POGrid.TabIndex = 2 @@ -3732,7 +3733,7 @@ Partial Class MainWindow Me.POHeader.Dock = System.Windows.Forms.DockStyle.Top Me.POHeader.Location = New System.Drawing.Point(0, 0) Me.POHeader.Name = "POHeader" - Me.POHeader.Size = New System.Drawing.Size(183, 439) + Me.POHeader.Size = New System.Drawing.Size(183, 779) Me.POHeader.TabIndex = 1 ' 'POHeaderInner @@ -3745,7 +3746,7 @@ Partial Class MainWindow Me.POHeaderInner.Dock = System.Windows.Forms.DockStyle.Top Me.POHeaderInner.Location = New System.Drawing.Point(0, 20) Me.POHeaderInner.Name = "POHeaderInner" - Me.POHeaderInner.Size = New System.Drawing.Size(183, 419) + Me.POHeaderInner.Size = New System.Drawing.Size(183, 759) Me.POHeaderInner.TabIndex = 2 ' 'POHeaderPart2 @@ -3753,9 +3754,9 @@ Partial Class MainWindow Me.POHeaderPart2.AutoSize = True Me.POHeaderPart2.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink Me.POHeaderPart2.ColumnCount = 3 - Me.POHeaderPart2.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle()) + Me.POHeaderPart2.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 67.0!)) Me.POHeaderPart2.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100.0!)) - Me.POHeaderPart2.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle()) + Me.POHeaderPart2.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 28.0!)) Me.POHeaderPart2.Controls.Add(Me.CHDifficulty, 1, 5) Me.POHeaderPart2.Controls.Add(Me.Label13, 2, 6) Me.POHeaderPart2.Controls.Add(Me.THExRank, 1, 6) @@ -3782,9 +3783,9 @@ Partial Class MainWindow Me.POHeaderPart2.Controls.Add(Me.THSubTitle, 1, 0) Me.POHeaderPart2.Controls.Add(Me.THSubArtist, 1, 1) Me.POHeaderPart2.Dock = System.Windows.Forms.DockStyle.Top - Me.POHeaderPart2.Location = New System.Drawing.Point(0, 186) + Me.POHeaderPart2.Location = New System.Drawing.Point(0, 386) Me.POHeaderPart2.Name = "POHeaderPart2" - Me.POHeaderPart2.RowCount = 10 + Me.POHeaderPart2.RowCount = 17 Me.POHeaderPart2.RowStyles.Add(New System.Windows.Forms.RowStyle()) Me.POHeaderPart2.RowStyles.Add(New System.Windows.Forms.RowStyle()) Me.POHeaderPart2.RowStyles.Add(New System.Windows.Forms.RowStyle()) @@ -3795,7 +3796,14 @@ Partial Class MainWindow Me.POHeaderPart2.RowStyles.Add(New System.Windows.Forms.RowStyle()) Me.POHeaderPart2.RowStyles.Add(New System.Windows.Forms.RowStyle()) Me.POHeaderPart2.RowStyles.Add(New System.Windows.Forms.RowStyle()) - Me.POHeaderPart2.Size = New System.Drawing.Size(183, 233) + Me.POHeaderPart2.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20.0!)) + Me.POHeaderPart2.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20.0!)) + Me.POHeaderPart2.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20.0!)) + Me.POHeaderPart2.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20.0!)) + Me.POHeaderPart2.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20.0!)) + Me.POHeaderPart2.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20.0!)) + Me.POHeaderPart2.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20.0!)) + Me.POHeaderPart2.Size = New System.Drawing.Size(183, 373) Me.POHeaderPart2.TabIndex = 102 ' 'CHDifficulty @@ -4077,7 +4085,7 @@ Partial Class MainWindow Me.POHeaderExpander.Dock = System.Windows.Forms.DockStyle.Top Me.POHeaderExpander.FlatAppearance.BorderSize = 0 Me.POHeaderExpander.FlatStyle = System.Windows.Forms.FlatStyle.Popup - Me.POHeaderExpander.Location = New System.Drawing.Point(0, 161) + Me.POHeaderExpander.Location = New System.Drawing.Point(0, 361) Me.POHeaderExpander.Margin = New System.Windows.Forms.Padding(0) Me.POHeaderExpander.Name = "POHeaderExpander" Me.POHeaderExpander.Size = New System.Drawing.Size(183, 25) @@ -4091,9 +4099,10 @@ Partial Class MainWindow ' Me.POHeaderPart1.AutoSize = True Me.POHeaderPart1.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink - Me.POHeaderPart1.ColumnCount = 2 - Me.POHeaderPart1.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle()) + Me.POHeaderPart1.ColumnCount = 3 + Me.POHeaderPart1.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 67.0!)) Me.POHeaderPart1.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100.0!)) + Me.POHeaderPart1.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 28.0!)) Me.POHeaderPart1.Controls.Add(Me.Label3, 0, 0) Me.POHeaderPart1.Controls.Add(Me.THPlayLevel, 1, 6) Me.POHeaderPart1.Controls.Add(Me.CHRank, 1, 5) @@ -4111,7 +4120,7 @@ Partial Class MainWindow Me.POHeaderPart1.Dock = System.Windows.Forms.DockStyle.Top Me.POHeaderPart1.Location = New System.Drawing.Point(0, 0) Me.POHeaderPart1.Name = "POHeaderPart1" - Me.POHeaderPart1.RowCount = 7 + Me.POHeaderPart1.RowCount = 17 Me.POHeaderPart1.RowStyles.Add(New System.Windows.Forms.RowStyle()) Me.POHeaderPart1.RowStyles.Add(New System.Windows.Forms.RowStyle()) Me.POHeaderPart1.RowStyles.Add(New System.Windows.Forms.RowStyle()) @@ -4119,14 +4128,24 @@ Partial Class MainWindow Me.POHeaderPart1.RowStyles.Add(New System.Windows.Forms.RowStyle()) Me.POHeaderPart1.RowStyles.Add(New System.Windows.Forms.RowStyle()) Me.POHeaderPart1.RowStyles.Add(New System.Windows.Forms.RowStyle()) - Me.POHeaderPart1.Size = New System.Drawing.Size(183, 161) + Me.POHeaderPart1.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20.0!)) + Me.POHeaderPart1.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20.0!)) + Me.POHeaderPart1.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20.0!)) + Me.POHeaderPart1.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20.0!)) + Me.POHeaderPart1.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20.0!)) + Me.POHeaderPart1.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20.0!)) + Me.POHeaderPart1.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20.0!)) + Me.POHeaderPart1.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20.0!)) + Me.POHeaderPart1.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20.0!)) + Me.POHeaderPart1.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20.0!)) + Me.POHeaderPart1.Size = New System.Drawing.Size(183, 361) Me.POHeaderPart1.TabIndex = 25 ' 'Label3 ' Me.Label3.Anchor = System.Windows.Forms.AnchorStyles.Right Me.Label3.AutoSize = True - Me.Label3.Location = New System.Drawing.Point(33, 4) + Me.Label3.Location = New System.Drawing.Point(35, 4) Me.Label3.Name = "Label3" Me.Label3.Size = New System.Drawing.Size(29, 15) Me.Label3.TabIndex = 2 @@ -4135,30 +4154,32 @@ Partial Class MainWindow ' 'THPlayLevel ' + Me.POHeaderPart1.SetColumnSpan(Me.THPlayLevel, 2) Me.THPlayLevel.Dock = System.Windows.Forms.DockStyle.Fill - Me.THPlayLevel.Location = New System.Drawing.Point(65, 138) + Me.THPlayLevel.Location = New System.Drawing.Point(67, 138) Me.THPlayLevel.Margin = New System.Windows.Forms.Padding(0) Me.THPlayLevel.Name = "THPlayLevel" - Me.THPlayLevel.Size = New System.Drawing.Size(118, 23) + Me.THPlayLevel.Size = New System.Drawing.Size(116, 23) Me.THPlayLevel.TabIndex = 8 ' 'CHRank ' + Me.POHeaderPart1.SetColumnSpan(Me.CHRank, 2) Me.CHRank.Dock = System.Windows.Forms.DockStyle.Top Me.CHRank.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList Me.CHRank.FlatStyle = System.Windows.Forms.FlatStyle.System Me.CHRank.Items.AddRange(New Object() {"0 - Very Hard", "1 - Hard", "2 - Normal", "3 - Easy", "4 - Very Easy"}) - Me.CHRank.Location = New System.Drawing.Point(65, 115) + Me.CHRank.Location = New System.Drawing.Point(67, 115) Me.CHRank.Margin = New System.Windows.Forms.Padding(0) Me.CHRank.Name = "CHRank" - Me.CHRank.Size = New System.Drawing.Size(118, 23) + Me.CHRank.Size = New System.Drawing.Size(116, 23) Me.CHRank.TabIndex = 7 ' 'Label10 ' Me.Label10.Anchor = System.Windows.Forms.AnchorStyles.Right Me.Label10.AutoSize = True - Me.Label10.Location = New System.Drawing.Point(12, 119) + Me.Label10.Location = New System.Drawing.Point(14, 119) Me.Label10.Name = "Label10" Me.Label10.Size = New System.Drawing.Size(50, 15) Me.Label10.TabIndex = 16 @@ -4167,21 +4188,22 @@ Partial Class MainWindow ' 'CHPlayer ' + Me.POHeaderPart1.SetColumnSpan(Me.CHPlayer, 2) Me.CHPlayer.Dock = System.Windows.Forms.DockStyle.Top Me.CHPlayer.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList Me.CHPlayer.FlatStyle = System.Windows.Forms.FlatStyle.System Me.CHPlayer.Items.AddRange(New Object() {"1 - Single Play", "2 - Couple Play", "3 - Double Play"}) - Me.CHPlayer.Location = New System.Drawing.Point(65, 92) + Me.CHPlayer.Location = New System.Drawing.Point(67, 92) Me.CHPlayer.Margin = New System.Windows.Forms.Padding(0) Me.CHPlayer.Name = "CHPlayer" - Me.CHPlayer.Size = New System.Drawing.Size(118, 23) + Me.CHPlayer.Size = New System.Drawing.Size(116, 23) Me.CHPlayer.TabIndex = 6 ' 'Label4 ' Me.Label4.Anchor = System.Windows.Forms.AnchorStyles.Right Me.Label4.AutoSize = True - Me.Label4.Location = New System.Drawing.Point(27, 27) + Me.Label4.Location = New System.Drawing.Point(29, 27) Me.Label4.Name = "Label4" Me.Label4.Size = New System.Drawing.Size(35, 15) Me.Label4.TabIndex = 3 @@ -4190,24 +4212,26 @@ Partial Class MainWindow ' 'THGenre ' + Me.POHeaderPart1.SetColumnSpan(Me.THGenre, 2) Me.THGenre.Dock = System.Windows.Forms.DockStyle.Fill - Me.THGenre.Location = New System.Drawing.Point(65, 46) + Me.THGenre.Location = New System.Drawing.Point(67, 46) Me.THGenre.Margin = New System.Windows.Forms.Padding(0) Me.THGenre.Name = "THGenre" - Me.THGenre.Size = New System.Drawing.Size(118, 23) + Me.THGenre.Size = New System.Drawing.Size(116, 23) Me.THGenre.TabIndex = 4 ' 'THBPM ' + Me.POHeaderPart1.SetColumnSpan(Me.THBPM, 2) Me.THBPM.DecimalPlaces = 4 Me.THBPM.Dock = System.Windows.Forms.DockStyle.Fill Me.THBPM.Increment = New Decimal(New Integer() {10, 0, 0, 0}) - Me.THBPM.Location = New System.Drawing.Point(65, 69) + Me.THBPM.Location = New System.Drawing.Point(67, 69) Me.THBPM.Margin = New System.Windows.Forms.Padding(0) Me.THBPM.Maximum = New Decimal(New Integer() {655359999, 0, 0, 262144}) Me.THBPM.Minimum = New Decimal(New Integer() {1, 0, 0, 262144}) Me.THBPM.Name = "THBPM" - Me.THBPM.Size = New System.Drawing.Size(118, 23) + Me.THBPM.Size = New System.Drawing.Size(116, 23) Me.THBPM.TabIndex = 5 Me.THBPM.Value = New Decimal(New Integer() {120, 0, 0, 0}) ' @@ -4215,7 +4239,7 @@ Partial Class MainWindow ' Me.Label2.Anchor = System.Windows.Forms.AnchorStyles.Right Me.Label2.AutoSize = True - Me.Label2.Location = New System.Drawing.Point(24, 50) + Me.Label2.Location = New System.Drawing.Point(26, 50) Me.Label2.Name = "Label2" Me.Label2.Size = New System.Drawing.Size(38, 15) Me.Label2.TabIndex = 4 @@ -4224,27 +4248,29 @@ Partial Class MainWindow ' 'THArtist ' + Me.POHeaderPart1.SetColumnSpan(Me.THArtist, 2) Me.THArtist.Dock = System.Windows.Forms.DockStyle.Fill - Me.THArtist.Location = New System.Drawing.Point(65, 23) + Me.THArtist.Location = New System.Drawing.Point(67, 23) Me.THArtist.Margin = New System.Windows.Forms.Padding(0) Me.THArtist.Name = "THArtist" - Me.THArtist.Size = New System.Drawing.Size(118, 23) + Me.THArtist.Size = New System.Drawing.Size(116, 23) Me.THArtist.TabIndex = 3 ' 'THTitle ' + Me.POHeaderPart1.SetColumnSpan(Me.THTitle, 2) Me.THTitle.Dock = System.Windows.Forms.DockStyle.Fill - Me.THTitle.Location = New System.Drawing.Point(65, 0) + Me.THTitle.Location = New System.Drawing.Point(67, 0) Me.THTitle.Margin = New System.Windows.Forms.Padding(0) Me.THTitle.Name = "THTitle" - Me.THTitle.Size = New System.Drawing.Size(118, 23) + Me.THTitle.Size = New System.Drawing.Size(116, 23) Me.THTitle.TabIndex = 2 ' 'Label9 ' Me.Label9.Anchor = System.Windows.Forms.AnchorStyles.Right Me.Label9.AutoSize = True - Me.Label9.Location = New System.Drawing.Point(30, 73) + Me.Label9.Location = New System.Drawing.Point(32, 73) Me.Label9.Name = "Label9" Me.Label9.Size = New System.Drawing.Size(32, 15) Me.Label9.TabIndex = 5 @@ -4255,7 +4281,7 @@ Partial Class MainWindow ' Me.Label8.Anchor = System.Windows.Forms.AnchorStyles.Right Me.Label8.AutoSize = True - Me.Label8.Location = New System.Drawing.Point(23, 96) + Me.Label8.Location = New System.Drawing.Point(25, 96) Me.Label8.Name = "Label8" Me.Label8.Size = New System.Drawing.Size(39, 15) Me.Label8.TabIndex = 13 @@ -4266,7 +4292,7 @@ Partial Class MainWindow ' Me.Label6.Anchor = System.Windows.Forms.AnchorStyles.Right Me.Label6.AutoSize = True - Me.Label6.Location = New System.Drawing.Point(3, 142) + Me.Label6.Location = New System.Drawing.Point(5, 142) Me.Label6.Name = "Label6" Me.Label6.Size = New System.Drawing.Size(59, 15) Me.Label6.TabIndex = 8 @@ -4314,6 +4340,10 @@ Partial Class MainWindow ' Me.TimerRefreshPanel.Interval = 15 ' + 'TimerExternalExpansion + ' + Me.TimerExternalExpansion.Interval = 3000 + ' 'MainWindow ' Me.AllowDrop = True @@ -4811,4 +4841,5 @@ Partial Class MainWindow Friend WithEvents POBLongObjNT As ToolStripMenuItem Friend WithEvents POBLongNTObj As ToolStripMenuItem Friend WithEvents TimerRefreshPanel As Timer + Friend WithEvents TimerExternalExpansion As Timer End Class diff --git a/iBMSC/MainWindow.resx b/iBMSC/MainWindow.resx index 774bcc015..a23945c28 100644 --- a/iBMSC/MainWindow.resx +++ b/iBMSC/MainWindow.resx @@ -200,11 +200,14 @@ 1499, 17 - 17, 56 + 197, 56 17, 17 + + 17, 56 + 65 diff --git a/iBMSC/MainWindow.vb b/iBMSC/MainWindow.vb index 27ff644f1..82073c302 100644 --- a/iBMSC/MainWindow.vb +++ b/iBMSC/MainWindow.vb @@ -95,7 +95,6 @@ Public Class MainWindow Dim InitPath As String = "" Dim IsSaved As Boolean = True Dim GhostMode As Integer = 0 ' 0 - Default, ghost notes entirely uneditable, 1 - Ghost notes loaded with expectation of editing them, 2 - Ghost notes loaded as main notes and main notes temporarily changed to ghost notes - Dim GhostExpansionModify As Boolean = False Dim GhostEdit As Boolean = False Dim FileNameTemplate As String = "" @@ -1032,7 +1031,7 @@ Public Class MainWindow End If If xRandomFile Then - xStrAll = SaveBMS(True) + xStrAll = SaveBMS() My.Computer.FileSystem.WriteAllText(FileName, xStrAll, False, TextEncoding) If BeepWhileSaved Then Beep() End If @@ -3494,20 +3493,6 @@ Public Class MainWindow If IsSaved Then SetIsSaved(False) End Sub - Private Sub TExpansion_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TExpansion.TextChanged - THGenre_TextChanged(sender, e) - If GhostExpansionModify Then - Select Case GhostMode - Case 1 - GhostMode = 0 - Case 2 - SwapGhostNotes() - GhostMode = 0 - End Select - GhostExpansionModify = False - End If - End Sub - Private Sub CHLnObj_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CHLnObj.SelectedIndexChanged If IsSaved Then SetIsSaved(False) LnObj = CHLnObj.SelectedIndex @@ -5836,6 +5821,8 @@ case2: Dim xI0 As Integer End Function Private Sub Expand_Load(sender As Object, e As EventArgs) Handles BExpansion.Click + If Not TExpansion.Enabled Then Exit Sub + ReDim ExpansionSplit(2) Dim xDOp As New OpExpand() ExpansionSplit(1) = "-" @@ -5876,7 +5863,6 @@ case2: Dim xI0 As Integer Public Sub Expand_ModifySection() RemoveGhostNotes() GhostMode = 0 - Dim ReadText As String = Nothing Dim RandomTempFilePath = ExcludeFileName(FileName) & "\" & RandomTempFileName ' Picks another random filename because the programme somehow generated the same exact RandomFileName as a previous instance. 1 in 2-billion chance btw Do Until Not My.Computer.FileSystem.FileExists(RandomTempFilePath) @@ -5887,15 +5873,18 @@ case2: Dim xI0 As Integer ' Dim xStrHeader As String = GenerateHeaderMeta() ' xStrHeader &= GenerateHeaderIndexedData() My.Computer.FileSystem.WriteAllText(RandomTempFilePath, ExpansionSplit(1), False, TextEncoding) - System.Diagnostics.Process.Start(My.Application.Info.DirectoryPath & "\" & My.Application.Info.ProductName & ".exe", RandomTempFilePath) - Do Until False - Threading.Thread.Sleep(3000) - ReadText = My.Computer.FileSystem.ReadAllText(RandomTempFilePath, TextEncoding) - If ReadText.EndsWith("*---------------------- RANDOM DATA FIELD") Then - Exit Do - End If - Loop + Process.Start(My.Application.Info.DirectoryPath & "\" & My.Application.Info.ProductName & ".exe", RandomTempFilePath) + TimerExternalExpansion.Enabled = True + TExpansion.Enabled = False + End Sub + + Private Sub TimerExternalExpansion_Tick(sender As Object, e As EventArgs) Handles TimerExternalExpansion.Tick + Dim ReadText As String = Nothing + Dim RandomTempFilePath = ExcludeFileName(FileName) & "\" & RandomTempFileName + ReadText = My.Computer.FileSystem.ReadAllText(RandomTempFilePath, TextEncoding) + If Not ReadText.EndsWith("*---------------------- RANDOM DATA FIELD") Then Exit Sub + TExpansion.Enabled = True ExpansionSplit(1) = "" TExpansion.Text = "" Dim xStrCompare() As String = Split(Replace(Replace(Replace(SaveBMS(), vbLf, vbCr), vbCr & vbCr, vbCr), vbCr, vbCrLf), vbCrLf,, CompareMethod.Text) @@ -5907,6 +5896,7 @@ case2: Dim xI0 As Integer Next TExpansion.Text = Join(ExpansionSplit, vbCrLf) AddTempFileList(RandomTempFilePath) + TimerExternalExpansion.Enabled = False End Sub Public Sub Expand_RemoveGhostNotes() @@ -5961,11 +5951,11 @@ case2: Dim xI0 As Integer Select Case GhostMode Case 1 Dim xResult As MsgBoxResult = MsgBox(Strings.Messages.SaveWarning & Strings.Messages.GhostNotesModifyExpansion1, MsgBoxStyle.YesNo) - If xResult = MsgBoxResult.No Then GhostExpansionModify = True : Exit Sub + If xResult = MsgBoxResult.No Then PMain.Focus() : Exit Sub GhostMode = 0 Case 2 Dim xResult As MsgBoxResult = MsgBox(Strings.Messages.SaveWarning & Strings.Messages.GhostNotesModifyExpansion2, MsgBoxStyle.YesNo) - If xResult = MsgBoxResult.No Then GhostExpansionModify = True : Exit Sub + If xResult = MsgBoxResult.No Then PMain.Focus() : Exit Sub SaveBMS() Expand_RemoveGhostNotes() End Select From 03c88769af53a7cc7c0e02507c016ba226a9948a Mon Sep 17 00:00:00 2001 From: psyk2642 <60137590+psyk2642@users.noreply.github.com> Date: Sat, 7 May 2022 09:05:43 +0800 Subject: [PATCH 148/257] Header Re-arranged --- iBMSC/MainWindow.designer.vb | 418 +++++++++++++++++------------------ 1 file changed, 202 insertions(+), 216 deletions(-) diff --git a/iBMSC/MainWindow.designer.vb b/iBMSC/MainWindow.designer.vb index f28ed0c3a..adc7e1371 100644 --- a/iBMSC/MainWindow.designer.vb +++ b/iBMSC/MainWindow.designer.vb @@ -370,7 +370,6 @@ Partial Class MainWindow Me.POHeaderExpander = New System.Windows.Forms.CheckBox() Me.POHeaderPart1 = New System.Windows.Forms.TableLayoutPanel() Me.Label3 = New System.Windows.Forms.Label() - Me.THPlayLevel = New System.Windows.Forms.TextBox() Me.CHRank = New System.Windows.Forms.ComboBox() Me.Label10 = New System.Windows.Forms.Label() Me.CHPlayer = New System.Windows.Forms.ComboBox() @@ -382,13 +381,14 @@ Partial Class MainWindow Me.THTitle = New System.Windows.Forms.TextBox() Me.Label9 = New System.Windows.Forms.Label() Me.Label8 = New System.Windows.Forms.Label() - Me.Label6 = New System.Windows.Forms.Label() Me.POHeaderSwitch = New System.Windows.Forms.CheckBox() Me.POptionsScroll = New System.Windows.Forms.Panel() Me.TimerInternalPlay = New System.Windows.Forms.Timer(Me.components) Me.TimerPreviewNote = New System.Windows.Forms.Timer(Me.components) Me.TimerRefreshPanel = New System.Windows.Forms.Timer(Me.components) Me.TimerExternalExpansion = New System.Windows.Forms.Timer(Me.components) + Me.Label6 = New System.Windows.Forms.Label() + Me.THPlayLevel = New System.Windows.Forms.TextBox() Me.cmnLanguage.SuspendLayout() Me.cmnTheme.SuspendLayout() Me.Menu1.SuspendLayout() @@ -2453,7 +2453,7 @@ Partial Class MainWindow Me.POptions.Dock = System.Windows.Forms.DockStyle.Top Me.POptions.Location = New System.Drawing.Point(0, 0) Me.POptions.Name = "POptions" - Me.POptions.Size = New System.Drawing.Size(183, 2087) + Me.POptions.Size = New System.Drawing.Size(183, 1778) Me.POptions.TabIndex = 29 ' 'POExpansion @@ -2463,7 +2463,7 @@ Partial Class MainWindow Me.POExpansion.Controls.Add(Me.POExpansionInner) Me.POExpansion.Controls.Add(Me.POExpansionSwitch) Me.POExpansion.Dock = System.Windows.Forms.DockStyle.Top - Me.POExpansion.Location = New System.Drawing.Point(0, 1792) + Me.POExpansion.Location = New System.Drawing.Point(0, 1483) Me.POExpansion.Name = "POExpansion" Me.POExpansion.Size = New System.Drawing.Size(183, 295) Me.POExpansion.TabIndex = 6 @@ -2543,7 +2543,7 @@ Partial Class MainWindow Me.POBeat.Controls.Add(Me.POBeatInner) Me.POBeat.Controls.Add(Me.POBeatSwitch) Me.POBeat.Dock = System.Windows.Forms.DockStyle.Top - Me.POBeat.Location = New System.Drawing.Point(0, 1522) + Me.POBeat.Location = New System.Drawing.Point(0, 1213) Me.POBeat.Name = "POBeat" Me.POBeat.Size = New System.Drawing.Size(183, 270) Me.POBeat.TabIndex = 5 @@ -2807,7 +2807,7 @@ Partial Class MainWindow Me.POWAV.Controls.Add(Me.POWAVInner) Me.POWAV.Controls.Add(Me.POWAVSwitch) Me.POWAV.Dock = System.Windows.Forms.DockStyle.Top - Me.POWAV.Location = New System.Drawing.Point(0, 1252) + Me.POWAV.Location = New System.Drawing.Point(0, 943) Me.POWAV.Name = "POWAV" Me.POWAV.Size = New System.Drawing.Size(183, 270) Me.POWAV.TabIndex = 4 @@ -2964,7 +2964,7 @@ Partial Class MainWindow Me.POWaveForm.Controls.Add(Me.POWaveFormInner) Me.POWaveForm.Controls.Add(Me.POWaveFormSwitch) Me.POWaveForm.Dock = System.Windows.Forms.DockStyle.Top - Me.POWaveForm.Location = New System.Drawing.Point(0, 1009) + Me.POWaveForm.Location = New System.Drawing.Point(0, 700) Me.POWaveForm.Name = "POWaveForm" Me.POWaveForm.Size = New System.Drawing.Size(183, 243) Me.POWaveForm.TabIndex = 3 @@ -3355,7 +3355,7 @@ Partial Class MainWindow Me.POGrid.Controls.Add(Me.POGridInner) Me.POGrid.Controls.Add(Me.POGridSwitch) Me.POGrid.Dock = System.Windows.Forms.DockStyle.Top - Me.POGrid.Location = New System.Drawing.Point(0, 779) + Me.POGrid.Location = New System.Drawing.Point(0, 470) Me.POGrid.Name = "POGrid" Me.POGrid.Size = New System.Drawing.Size(183, 230) Me.POGrid.TabIndex = 2 @@ -3733,7 +3733,7 @@ Partial Class MainWindow Me.POHeader.Dock = System.Windows.Forms.DockStyle.Top Me.POHeader.Location = New System.Drawing.Point(0, 0) Me.POHeader.Name = "POHeader" - Me.POHeader.Size = New System.Drawing.Size(183, 779) + Me.POHeader.Size = New System.Drawing.Size(183, 470) Me.POHeader.TabIndex = 1 ' 'POHeaderInner @@ -3746,7 +3746,7 @@ Partial Class MainWindow Me.POHeaderInner.Dock = System.Windows.Forms.DockStyle.Top Me.POHeaderInner.Location = New System.Drawing.Point(0, 20) Me.POHeaderInner.Name = "POHeaderInner" - Me.POHeaderInner.Size = New System.Drawing.Size(183, 759) + Me.POHeaderInner.Size = New System.Drawing.Size(183, 450) Me.POHeaderInner.TabIndex = 2 ' 'POHeaderPart2 @@ -3754,24 +3754,19 @@ Partial Class MainWindow Me.POHeaderPart2.AutoSize = True Me.POHeaderPart2.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink Me.POHeaderPart2.ColumnCount = 3 - Me.POHeaderPart2.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 67.0!)) + Me.POHeaderPart2.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 70.0!)) Me.POHeaderPart2.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100.0!)) Me.POHeaderPart2.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 28.0!)) - Me.POHeaderPart2.Controls.Add(Me.CHDifficulty, 1, 5) - Me.POHeaderPart2.Controls.Add(Me.Label13, 2, 6) - Me.POHeaderPart2.Controls.Add(Me.THExRank, 1, 6) - Me.POHeaderPart2.Controls.Add(Me.Label25, 2, 7) - Me.POHeaderPart2.Controls.Add(Me.CHLnObj, 1, 9) - Me.POHeaderPart2.Controls.Add(Me.Label23, 0, 6) - Me.POHeaderPart2.Controls.Add(Me.Label21, 0, 5) - Me.POHeaderPart2.Controls.Add(Me.THComment, 1, 8) - Me.POHeaderPart2.Controls.Add(Me.Label24, 0, 9) + Me.POHeaderPart2.Controls.Add(Me.Label13, 2, 5) + Me.POHeaderPart2.Controls.Add(Me.THExRank, 1, 5) + Me.POHeaderPart2.Controls.Add(Me.CHLnObj, 1, 7) + Me.POHeaderPart2.Controls.Add(Me.Label23, 0, 5) + Me.POHeaderPart2.Controls.Add(Me.THComment, 1, 6) + Me.POHeaderPart2.Controls.Add(Me.Label24, 0, 7) Me.POHeaderPart2.Controls.Add(Me.Label15, 0, 0) - Me.POHeaderPart2.Controls.Add(Me.THTotal, 1, 7) - Me.POHeaderPart2.Controls.Add(Me.Label20, 0, 7) Me.POHeaderPart2.Controls.Add(Me.BHStageFile, 2, 2) Me.POHeaderPart2.Controls.Add(Me.BHBanner, 2, 3) - Me.POHeaderPart2.Controls.Add(Me.Label19, 0, 8) + Me.POHeaderPart2.Controls.Add(Me.Label19, 0, 6) Me.POHeaderPart2.Controls.Add(Me.BHBackBMP, 2, 4) Me.POHeaderPart2.Controls.Add(Me.Label17, 0, 1) Me.POHeaderPart2.Controls.Add(Me.Label16, 0, 2) @@ -3783,107 +3778,100 @@ Partial Class MainWindow Me.POHeaderPart2.Controls.Add(Me.THSubTitle, 1, 0) Me.POHeaderPart2.Controls.Add(Me.THSubArtist, 1, 1) Me.POHeaderPart2.Dock = System.Windows.Forms.DockStyle.Top - Me.POHeaderPart2.Location = New System.Drawing.Point(0, 386) + Me.POHeaderPart2.Location = New System.Drawing.Point(0, 250) Me.POHeaderPart2.Name = "POHeaderPart2" - Me.POHeaderPart2.RowCount = 17 - Me.POHeaderPart2.RowStyles.Add(New System.Windows.Forms.RowStyle()) - Me.POHeaderPart2.RowStyles.Add(New System.Windows.Forms.RowStyle()) - Me.POHeaderPart2.RowStyles.Add(New System.Windows.Forms.RowStyle()) - Me.POHeaderPart2.RowStyles.Add(New System.Windows.Forms.RowStyle()) - Me.POHeaderPart2.RowStyles.Add(New System.Windows.Forms.RowStyle()) - Me.POHeaderPart2.RowStyles.Add(New System.Windows.Forms.RowStyle()) - Me.POHeaderPart2.RowStyles.Add(New System.Windows.Forms.RowStyle()) - Me.POHeaderPart2.RowStyles.Add(New System.Windows.Forms.RowStyle()) - Me.POHeaderPart2.RowStyles.Add(New System.Windows.Forms.RowStyle()) - Me.POHeaderPart2.RowStyles.Add(New System.Windows.Forms.RowStyle()) - Me.POHeaderPart2.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20.0!)) - Me.POHeaderPart2.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20.0!)) - Me.POHeaderPart2.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20.0!)) + Me.POHeaderPart2.RowCount = 8 + Me.POHeaderPart2.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 25.0!)) + Me.POHeaderPart2.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 25.0!)) + Me.POHeaderPart2.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 25.0!)) + Me.POHeaderPart2.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 25.0!)) + Me.POHeaderPart2.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 25.0!)) + Me.POHeaderPart2.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 25.0!)) + Me.POHeaderPart2.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 25.0!)) + Me.POHeaderPart2.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 25.0!)) Me.POHeaderPart2.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20.0!)) Me.POHeaderPart2.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20.0!)) - Me.POHeaderPart2.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20.0!)) - Me.POHeaderPart2.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20.0!)) - Me.POHeaderPart2.Size = New System.Drawing.Size(183, 373) + Me.POHeaderPart2.Size = New System.Drawing.Size(183, 200) Me.POHeaderPart2.TabIndex = 102 ' 'CHDifficulty ' - Me.POHeaderPart2.SetColumnSpan(Me.CHDifficulty, 2) - Me.CHDifficulty.Dock = System.Windows.Forms.DockStyle.Top + Me.POHeaderPart1.SetColumnSpan(Me.CHDifficulty, 2) + Me.CHDifficulty.Dock = System.Windows.Forms.DockStyle.Fill Me.CHDifficulty.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList Me.CHDifficulty.FlatStyle = System.Windows.Forms.FlatStyle.System Me.CHDifficulty.Items.AddRange(New Object() {"None", "1 - EZ / Beginner", "2 - NM / Normal", "3 - HD / Hyper", "4 - MX / Another", "5 - SC / Insane"}) - Me.CHDifficulty.Location = New System.Drawing.Point(67, 118) + Me.CHDifficulty.Location = New System.Drawing.Point(70, 150) Me.CHDifficulty.Margin = New System.Windows.Forms.Padding(0) Me.CHDifficulty.Name = "CHDifficulty" - Me.CHDifficulty.Size = New System.Drawing.Size(116, 23) - Me.CHDifficulty.TabIndex = 110 + Me.CHDifficulty.Size = New System.Drawing.Size(113, 23) + Me.CHDifficulty.TabIndex = 13 ' 'Label13 ' Me.Label13.AutoSize = True Me.Label13.Dock = System.Windows.Forms.DockStyle.Fill - Me.Label13.Location = New System.Drawing.Point(158, 141) + Me.Label13.Location = New System.Drawing.Point(158, 125) Me.Label13.Margin = New System.Windows.Forms.Padding(3, 0, 0, 0) Me.Label13.Name = "Label13" - Me.Label13.Size = New System.Drawing.Size(25, 23) - Me.Label13.TabIndex = 63 + Me.Label13.Size = New System.Drawing.Size(25, 25) + Me.Label13.TabIndex = 115 Me.Label13.Text = "(%)" Me.Label13.TextAlign = System.Drawing.ContentAlignment.MiddleLeft ' 'THExRank ' Me.THExRank.Dock = System.Windows.Forms.DockStyle.Fill - Me.THExRank.Location = New System.Drawing.Point(67, 141) + Me.THExRank.Location = New System.Drawing.Point(70, 125) Me.THExRank.Margin = New System.Windows.Forms.Padding(0) Me.THExRank.Name = "THExRank" - Me.THExRank.Size = New System.Drawing.Size(88, 23) - Me.THExRank.TabIndex = 111 + Me.THExRank.Size = New System.Drawing.Size(85, 23) + Me.THExRank.TabIndex = 114 ' 'Label25 ' Me.Label25.AutoSize = True Me.Label25.Dock = System.Windows.Forms.DockStyle.Fill - Me.Label25.Location = New System.Drawing.Point(158, 164) + Me.Label25.Location = New System.Drawing.Point(158, 200) Me.Label25.Margin = New System.Windows.Forms.Padding(3, 0, 0, 0) Me.Label25.Name = "Label25" - Me.Label25.Size = New System.Drawing.Size(25, 23) - Me.Label25.TabIndex = 23 + Me.Label25.Size = New System.Drawing.Size(25, 25) + Me.Label25.TabIndex = 18 Me.Label25.Text = "(%)" Me.Label25.TextAlign = System.Drawing.ContentAlignment.MiddleLeft ' 'CHLnObj ' Me.POHeaderPart2.SetColumnSpan(Me.CHLnObj, 2) - Me.CHLnObj.Dock = System.Windows.Forms.DockStyle.Top + Me.CHLnObj.Dock = System.Windows.Forms.DockStyle.Fill Me.CHLnObj.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList Me.CHLnObj.FlatStyle = System.Windows.Forms.FlatStyle.System Me.CHLnObj.Items.AddRange(New Object() {"None (#LnType 1)", "01", "02", "03", "04", "05", "06", "07", "08", "09", "0A", "0B", "0C", "0D", "0E", "0F", "0G", "0H", "0I", "0J", "0K", "0L", "0M", "0N", "0O", "0P", "0Q", "0R", "0S", "0T", "0U", "0V", "0W", "0X", "0Y", "0Z", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "1A", "1B", "1C", "1D", "1E", "1F", "1G", "1H", "1I", "1J", "1K", "1L", "1M", "1N", "1O", "1P", "1Q", "1R", "1S", "1T", "1U", "1V", "1W", "1X", "1Y", "1Z", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "2A", "2B", "2C", "2D", "2E", "2F", "2G", "2H", "2I", "2J", "2K", "2L", "2M", "2N", "2O", "2P", "2Q", "2R", "2S", "2T", "2U", "2V", "2W", "2X", "2Y", "2Z", "30", "31", "32", "33", "34", "35", "36", "37", "38", "39", "3A", "3B", "3C", "3D", "3E", "3F", "3G", "3H", "3I", "3J", "3K", "3L", "3M", "3N", "3O", "3P", "3Q", "3R", "3S", "3T", "3U", "3V", "3W", "3X", "3Y", "3Z", "40", "41", "42", "43", "44", "45", "46", "47", "48", "49", "4A", "4B", "4C", "4D", "4E", "4F", "4G", "4H", "4I", "4J", "4K", "4L", "4M", "4N", "4O", "4P", "4Q", "4R", "4S", "4T", "4U", "4V", "4W", "4X", "4Y", "4Z", "50", "51", "52", "53", "54", "55", "56", "57", "58", "59", "5A", "5B", "5C", "5D", "5E", "5F", "5G", "5H", "5I", "5J", "5K", "5L", "5M", "5N", "5O", "5P", "5Q", "5R", "5S", "5T", "5U", "5V", "5W", "5X", "5Y", "5Z", "60", "61", "62", "63", "64", "65", "66", "67", "68", "69", "6A", "6B", "6C", "6D", "6E", "6F", "6G", "6H", "6I", "6J", "6K", "6L", "6M", "6N", "6O", "6P", "6Q", "6R", "6S", "6T", "6U", "6V", "6W", "6X", "6Y", "6Z", "70", "71", "72", "73", "74", "75", "76", "77", "78", "79", "7A", "7B", "7C", "7D", "7E", "7F", "7G", "7H", "7I", "7J", "7K", "7L", "7M", "7N", "7O", "7P", "7Q", "7R", "7S", "7T", "7U", "7V", "7W", "7X", "7Y", "7Z", "80", "81", "82", "83", "84", "85", "86", "87", "88", "89", "8A", "8B", "8C", "8D", "8E", "8F", "8G", "8H", "8I", "8J", "8K", "8L", "8M", "8N", "8O", "8P", "8Q", "8R", "8S", "8T", "8U", "8V", "8W", "8X", "8Y", "8Z", "90", "91", "92", "93", "94", "95", "96", "97", "98", "99", "9A", "9B", "9C", "9D", "9E", "9F", "9G", "9H", "9I", "9J", "9K", "9L", "9M", "9N", "9O", "9P", "9Q", "9R", "9S", "9T", "9U", "9V", "9W", "9X", "9Y", "9Z", "A0", "A1", "A2", "A3", "A4", "A5", "A6", "A7", "A8", "A9", "AA", "AB", "AC", "AD", "AE", "AF", "AG", "AH", "AI", "AJ", "AK", "AL", "AM", "AN", "AO", "AP", "AQ", "AR", "AS", "AT", "AU", "AV", "AW", "AX", "AY", "AZ", "B0", "B1", "B2", "B3", "B4", "B5", "B6", "B7", "B8", "B9", "BA", "BB", "BC", "BD", "BE", "BF", "BG", "BH", "BI", "BJ", "BK", "BL", "BM", "BN", "BO", "BP", "BQ", "BR", "BS", "BT", "BU", "BV", "BW", "BX", "BY", "BZ", "C0", "C1", "C2", "C3", "C4", "C5", "C6", "C7", "C8", "C9", "CA", "CB", "CC", "CD", "CE", "CF", "CG", "CH", "CI", "CJ", "CK", "CL", "CM", "CN", "CO", "CP", "CQ", "CR", "CS", "CT", "CU", "CV", "CW", "CX", "CY", "CZ", "D0", "D1", "D2", "D3", "D4", "D5", "D6", "D7", "D8", "D9", "DA", "DB", "DC", "DD", "DE", "DF", "DG", "DH", "DI", "DJ", "DK", "DL", "DM", "DN", "DO", "DP", "DQ", "DR", "DS", "DT", "DU", "DV", "DW", "DX", "DY", "DZ", "E0", "E1", "E2", "E3", "E4", "E5", "E6", "E7", "E8", "E9", "EA", "EB", "EC", "ED", "EE", "EF", "EG", "EH", "EI", "EJ", "EK", "EL", "EM", "EN", "EO", "EP", "EQ", "ER", "ES", "ET", "EU", "EV", "EW", "EX", "EY", "EZ", "F0", "F1", "F2", "F3", "F4", "F5", "F6", "F7", "F8", "F9", "FA", "FB", "FC", "FD", "FE", "FF", "FG", "FH", "FI", "FJ", "FK", "FL", "FM", "FN", "FO", "FP", "FQ", "FR", "FS", "FT", "FU", "FV", "FW", "FX", "FY", "FZ", "G0", "G1", "G2", "G3", "G4", "G5", "G6", "G7", "G8", "G9", "GA", "GB", "GC", "GD", "GE", "GF", "GG", "GH", "GI", "GJ", "GK", "GL", "GM", "GN", "GO", "GP", "GQ", "GR", "GS", "GT", "GU", "GV", "GW", "GX", "GY", "GZ", "H0", "H1", "H2", "H3", "H4", "H5", "H6", "H7", "H8", "H9", "HA", "HB", "HC", "HD", "HE", "HF", "HG", "HH", "HI", "HJ", "HK", "HL", "HM", "HN", "HO", "HP", "HQ", "HR", "HS", "HT", "HU", "HV", "HW", "HX", "HY", "HZ", "I0", "I1", "I2", "I3", "I4", "I5", "I6", "I7", "I8", "I9", "IA", "IB", "IC", "ID", "IE", "IF", "IG", "IH", "II", "IJ", "IK", "IL", "IM", "IN", "IO", "IP", "IQ", "IR", "IS", "IT", "IU", "IV", "IW", "IX", "IY", "IZ", "J0", "J1", "J2", "J3", "J4", "J5", "J6", "J7", "J8", "J9", "JA", "JB", "JC", "JD", "JE", "JF", "JG", "JH", "JI", "JJ", "JK", "JL", "JM", "JN", "JO", "JP", "JQ", "JR", "JS", "JT", "JU", "JV", "JW", "JX", "JY", "JZ", "K0", "K1", "K2", "K3", "K4", "K5", "K6", "K7", "K8", "K9", "KA", "KB", "KC", "KD", "KE", "KF", "KG", "KH", "KI", "KJ", "KK", "KL", "KM", "KN", "KO", "KP", "KQ", "KR", "KS", "KT", "KU", "KV", "KW", "KX", "KY", "KZ", "L0", "L1", "L2", "L3", "L4", "L5", "L6", "L7", "L8", "L9", "LA", "LB", "LC", "LD", "LE", "LF", "LG", "LH", "LI", "LJ", "LK", "LL", "LM", "LN", "LO", "LP", "LQ", "LR", "LS", "LT", "LU", "LV", "LW", "LX", "LY", "LZ", "M0", "M1", "M2", "M3", "M4", "M5", "M6", "M7", "M8", "M9", "MA", "MB", "MC", "MD", "ME", "MF", "MG", "MH", "MI", "MJ", "MK", "ML", "MM", "MN", "MO", "MP", "MQ", "MR", "MS", "MT", "MU", "MV", "MW", "MX", "MY", "MZ", "N0", "N1", "N2", "N3", "N4", "N5", "N6", "N7", "N8", "N9", "NA", "NB", "NC", "ND", "NE", "NF", "NG", "NH", "NI", "NJ", "NK", "NL", "NM", "NN", "NO", "NP", "NQ", "NR", "NS", "NT", "NU", "NV", "NW", "NX", "NY", "NZ", "O0", "O1", "O2", "O3", "O4", "O5", "O6", "O7", "O8", "O9", "OA", "OB", "OC", "OD", "OE", "OF", "OG", "OH", "OI", "OJ", "OK", "OL", "OM", "ON", "OO", "OP", "OQ", "OR", "OS", "OT", "OU", "OV", "OW", "OX", "OY", "OZ", "P0", "P1", "P2", "P3", "P4", "P5", "P6", "P7", "P8", "P9", "PA", "PB", "PC", "PD", "PE", "PF", "PG", "PH", "PI", "PJ", "PK", "PL", "PM", "PN", "PO", "PP", "PQ", "PR", "PS", "PT", "PU", "PV", "PW", "PX", "PY", "PZ", "Q0", "Q1", "Q2", "Q3", "Q4", "Q5", "Q6", "Q7", "Q8", "Q9", "QA", "QB", "QC", "QD", "QE", "QF", "QG", "QH", "QI", "QJ", "QK", "QL", "QM", "QN", "QO", "QP", "QQ", "QR", "QS", "QT", "QU", "QV", "QW", "QX", "QY", "QZ", "R0", "R1", "R2", "R3", "R4", "R5", "R6", "R7", "R8", "R9", "RA", "RB", "RC", "RD", "RE", "RF", "RG", "RH", "RI", "RJ", "RK", "RL", "RM", "RN", "RO", "RP", "RQ", "RR", "RS", "RT", "RU", "RV", "RW", "RX", "RY", "RZ", "S0", "S1", "S2", "S3", "S4", "S5", "S6", "S7", "S8", "S9", "SA", "SB", "SC", "SD", "SE", "SF", "SG", "SH", "SI", "SJ", "SK", "SL", "SM", "SN", "SO", "SP", "SQ", "SR", "SS", "ST", "SU", "SV", "SW", "SX", "SY", "SZ", "T0", "T1", "T2", "T3", "T4", "T5", "T6", "T7", "T8", "T9", "TA", "TB", "TC", "TD", "TE", "TF", "TG", "TH", "TI", "TJ", "TK", "TL", "TM", "TN", "TO", "TP", "TQ", "TR", "TS", "TT", "TU", "TV", "TW", "TX", "TY", "TZ", "U0", "U1", "U2", "U3", "U4", "U5", "U6", "U7", "U8", "U9", "UA", "UB", "UC", "UD", "UE", "UF", "UG", "UH", "UI", "UJ", "UK", "UL", "UM", "UN", "UO", "UP", "UQ", "UR", "US", "UT", "UU", "UV", "UW", "UX", "UY", "UZ", "V0", "V1", "V2", "V3", "V4", "V5", "V6", "V7", "V8", "V9", "VA", "VB", "VC", "VD", "VE", "VF", "VG", "VH", "VI", "VJ", "VK", "VL", "VM", "VN", "VO", "VP", "VQ", "VR", "VS", "VT", "VU", "VV", "VW", "VX", "VY", "VZ", "W0", "W1", "W2", "W3", "W4", "W5", "W6", "W7", "W8", "W9", "WA", "WB", "WC", "WD", "WE", "WF", "WG", "WH", "WI", "WJ", "WK", "WL", "WM", "WN", "WO", "WP", "WQ", "WR", "WS", "WT", "WU", "WV", "WW", "WX", "WY", "WZ", "X0", "X1", "X2", "X3", "X4", "X5", "X6", "X7", "X8", "X9", "XA", "XB", "XC", "XD", "XE", "XF", "XG", "XH", "XI", "XJ", "XK", "XL", "XM", "XN", "XO", "XP", "XQ", "XR", "XS", "XT", "XU", "XV", "XW", "XX", "XY", "XZ", "Y0", "Y1", "Y2", "Y3", "Y4", "Y5", "Y6", "Y7", "Y8", "Y9", "YA", "YB", "YC", "YD", "YE", "YF", "YG", "YH", "YI", "YJ", "YK", "YL", "YM", "YN", "YO", "YP", "YQ", "YR", "YS", "YT", "YU", "YV", "YW", "YX", "YY", "YZ", "Z0", "Z1", "Z2", "Z3", "Z4", "Z5", "Z6", "Z7", "Z8", "Z9", "ZA", "ZB", "ZC", "ZD", "ZE", "ZF", "ZG", "ZH", "ZI", "ZJ", "ZK", "ZL", "ZM", "ZN", "ZO", "ZP", "ZQ", "ZR", "ZS", "ZT", "ZU", "ZV", "ZW", "ZX", "ZY", "ZZ"}) - Me.CHLnObj.Location = New System.Drawing.Point(67, 210) + Me.CHLnObj.Location = New System.Drawing.Point(70, 175) Me.CHLnObj.Margin = New System.Windows.Forms.Padding(0) Me.CHLnObj.Name = "CHLnObj" - Me.CHLnObj.Size = New System.Drawing.Size(116, 23) - Me.CHLnObj.TabIndex = 114 + Me.CHLnObj.Size = New System.Drawing.Size(113, 23) + Me.CHLnObj.TabIndex = 119 ' 'Label23 ' - Me.Label23.Anchor = System.Windows.Forms.AnchorStyles.Right Me.Label23.AutoSize = True - Me.Label23.Location = New System.Drawing.Point(19, 145) + Me.Label23.Dock = System.Windows.Forms.DockStyle.Right + Me.Label23.Location = New System.Drawing.Point(22, 125) Me.Label23.Name = "Label23" - Me.Label23.Size = New System.Drawing.Size(45, 15) - Me.Label23.TabIndex = 26 + Me.Label23.Size = New System.Drawing.Size(45, 25) + Me.Label23.TabIndex = 113 Me.Label23.Text = "ExRank" Me.Label23.TextAlign = System.Drawing.ContentAlignment.MiddleRight ' 'Label21 ' - Me.Label21.Anchor = System.Windows.Forms.AnchorStyles.Right Me.Label21.AutoSize = True - Me.Label21.Location = New System.Drawing.Point(9, 122) + Me.Label21.Dock = System.Windows.Forms.DockStyle.Right + Me.Label21.Location = New System.Drawing.Point(12, 150) Me.Label21.Name = "Label21" - Me.Label21.Size = New System.Drawing.Size(55, 15) - Me.Label21.TabIndex = 25 + Me.Label21.Size = New System.Drawing.Size(55, 25) + Me.Label21.TabIndex = 12 Me.Label21.Text = "Difficulty" Me.Label21.TextAlign = System.Drawing.ContentAlignment.MiddleRight ' @@ -3891,51 +3879,51 @@ Partial Class MainWindow ' Me.POHeaderPart2.SetColumnSpan(Me.THComment, 2) Me.THComment.Dock = System.Windows.Forms.DockStyle.Fill - Me.THComment.Location = New System.Drawing.Point(67, 187) + Me.THComment.Location = New System.Drawing.Point(70, 150) Me.THComment.Margin = New System.Windows.Forms.Padding(0) Me.THComment.Name = "THComment" - Me.THComment.Size = New System.Drawing.Size(116, 23) - Me.THComment.TabIndex = 113 + Me.THComment.Size = New System.Drawing.Size(113, 23) + Me.THComment.TabIndex = 117 ' 'Label24 ' - Me.Label24.Anchor = System.Windows.Forms.AnchorStyles.Right Me.Label24.AutoSize = True - Me.Label24.Location = New System.Drawing.Point(23, 214) + Me.Label24.Dock = System.Windows.Forms.DockStyle.Right + Me.Label24.Location = New System.Drawing.Point(26, 175) Me.Label24.Name = "Label24" - Me.Label24.Size = New System.Drawing.Size(41, 15) - Me.Label24.TabIndex = 27 + Me.Label24.Size = New System.Drawing.Size(41, 25) + Me.Label24.TabIndex = 118 Me.Label24.Text = "LNObj" Me.Label24.TextAlign = System.Drawing.ContentAlignment.MiddleRight ' 'Label15 ' - Me.Label15.Anchor = System.Windows.Forms.AnchorStyles.Right Me.Label15.AutoSize = True - Me.Label15.Location = New System.Drawing.Point(15, 4) + Me.Label15.Dock = System.Windows.Forms.DockStyle.Right + Me.Label15.Location = New System.Drawing.Point(18, 0) Me.Label15.Name = "Label15" - Me.Label15.Size = New System.Drawing.Size(49, 15) - Me.Label15.TabIndex = 6 + Me.Label15.Size = New System.Drawing.Size(49, 25) + Me.Label15.TabIndex = 100 Me.Label15.Text = "SubTitle" Me.Label15.TextAlign = System.Drawing.ContentAlignment.MiddleRight ' 'THTotal ' Me.THTotal.Dock = System.Windows.Forms.DockStyle.Fill - Me.THTotal.Location = New System.Drawing.Point(67, 164) + Me.THTotal.Location = New System.Drawing.Point(70, 200) Me.THTotal.Margin = New System.Windows.Forms.Padding(0) Me.THTotal.Name = "THTotal" - Me.THTotal.Size = New System.Drawing.Size(88, 23) - Me.THTotal.TabIndex = 112 + Me.THTotal.Size = New System.Drawing.Size(85, 23) + Me.THTotal.TabIndex = 17 ' 'Label20 ' - Me.Label20.Anchor = System.Windows.Forms.AnchorStyles.Right Me.Label20.AutoSize = True - Me.Label20.Location = New System.Drawing.Point(32, 168) + Me.Label20.Dock = System.Windows.Forms.DockStyle.Right + Me.Label20.Location = New System.Drawing.Point(35, 200) Me.Label20.Name = "Label20" - Me.Label20.Size = New System.Drawing.Size(32, 15) - Me.Label20.TabIndex = 5 + Me.Label20.Size = New System.Drawing.Size(32, 25) + Me.Label20.TabIndex = 16 Me.Label20.Text = "Total" Me.Label20.TextAlign = System.Drawing.ContentAlignment.MiddleRight ' @@ -3943,11 +3931,11 @@ Partial Class MainWindow ' Me.BHStageFile.Dock = System.Windows.Forms.DockStyle.Fill Me.BHStageFile.FlatStyle = System.Windows.Forms.FlatStyle.System - Me.BHStageFile.Location = New System.Drawing.Point(158, 46) + Me.BHStageFile.Location = New System.Drawing.Point(158, 50) Me.BHStageFile.Margin = New System.Windows.Forms.Padding(3, 0, 0, 0) Me.BHStageFile.Name = "BHStageFile" - Me.BHStageFile.Size = New System.Drawing.Size(25, 24) - Me.BHStageFile.TabIndex = 105 + Me.BHStageFile.Size = New System.Drawing.Size(25, 25) + Me.BHStageFile.TabIndex = 106 Me.BHStageFile.Text = "..." Me.BHStageFile.UseVisualStyleBackColor = True ' @@ -3955,22 +3943,22 @@ Partial Class MainWindow ' Me.BHBanner.Dock = System.Windows.Forms.DockStyle.Fill Me.BHBanner.FlatStyle = System.Windows.Forms.FlatStyle.System - Me.BHBanner.Location = New System.Drawing.Point(158, 70) + Me.BHBanner.Location = New System.Drawing.Point(158, 75) Me.BHBanner.Margin = New System.Windows.Forms.Padding(3, 0, 0, 0) Me.BHBanner.Name = "BHBanner" - Me.BHBanner.Size = New System.Drawing.Size(25, 24) - Me.BHBanner.TabIndex = 107 + Me.BHBanner.Size = New System.Drawing.Size(25, 25) + Me.BHBanner.TabIndex = 109 Me.BHBanner.Text = "..." Me.BHBanner.UseVisualStyleBackColor = True ' 'Label19 ' - Me.Label19.Anchor = System.Windows.Forms.AnchorStyles.Right Me.Label19.AutoSize = True - Me.Label19.Location = New System.Drawing.Point(3, 191) + Me.Label19.Dock = System.Windows.Forms.DockStyle.Right + Me.Label19.Location = New System.Drawing.Point(6, 150) Me.Label19.Name = "Label19" - Me.Label19.Size = New System.Drawing.Size(61, 15) - Me.Label19.TabIndex = 13 + Me.Label19.Size = New System.Drawing.Size(61, 25) + Me.Label19.TabIndex = 116 Me.Label19.Text = "Comment" Me.Label19.TextAlign = System.Drawing.ContentAlignment.MiddleRight ' @@ -3978,103 +3966,103 @@ Partial Class MainWindow ' Me.BHBackBMP.Dock = System.Windows.Forms.DockStyle.Fill Me.BHBackBMP.FlatStyle = System.Windows.Forms.FlatStyle.System - Me.BHBackBMP.Location = New System.Drawing.Point(158, 94) + Me.BHBackBMP.Location = New System.Drawing.Point(158, 100) Me.BHBackBMP.Margin = New System.Windows.Forms.Padding(3, 0, 0, 0) Me.BHBackBMP.Name = "BHBackBMP" - Me.BHBackBMP.Size = New System.Drawing.Size(25, 24) - Me.BHBackBMP.TabIndex = 109 + Me.BHBackBMP.Size = New System.Drawing.Size(25, 25) + Me.BHBackBMP.TabIndex = 112 Me.BHBackBMP.Text = "..." Me.BHBackBMP.UseVisualStyleBackColor = True ' 'Label17 ' - Me.Label17.Anchor = System.Windows.Forms.AnchorStyles.Right Me.Label17.AutoSize = True - Me.Label17.Location = New System.Drawing.Point(9, 27) + Me.Label17.Dock = System.Windows.Forms.DockStyle.Right + Me.Label17.Location = New System.Drawing.Point(12, 25) Me.Label17.Name = "Label17" - Me.Label17.Size = New System.Drawing.Size(55, 15) - Me.Label17.TabIndex = 7 + Me.Label17.Size = New System.Drawing.Size(55, 25) + Me.Label17.TabIndex = 102 Me.Label17.Text = "SubArtist" Me.Label17.TextAlign = System.Drawing.ContentAlignment.MiddleRight ' 'Label16 ' - Me.Label16.Anchor = System.Windows.Forms.AnchorStyles.Right Me.Label16.AutoSize = True - Me.Label16.Location = New System.Drawing.Point(7, 50) + Me.Label16.Dock = System.Windows.Forms.DockStyle.Right + Me.Label16.Location = New System.Drawing.Point(10, 50) Me.Label16.Name = "Label16" - Me.Label16.Size = New System.Drawing.Size(57, 15) - Me.Label16.TabIndex = 9 + Me.Label16.Size = New System.Drawing.Size(57, 25) + Me.Label16.TabIndex = 104 Me.Label16.Text = "Stage File" Me.Label16.TextAlign = System.Drawing.ContentAlignment.MiddleRight ' 'Label12 ' - Me.Label12.Anchor = System.Windows.Forms.AnchorStyles.Right Me.Label12.AutoSize = True - Me.Label12.Location = New System.Drawing.Point(20, 74) + Me.Label12.Dock = System.Windows.Forms.DockStyle.Right + Me.Label12.Location = New System.Drawing.Point(23, 75) Me.Label12.Name = "Label12" - Me.Label12.Size = New System.Drawing.Size(44, 15) - Me.Label12.TabIndex = 13 + Me.Label12.Size = New System.Drawing.Size(44, 25) + Me.Label12.TabIndex = 107 Me.Label12.Text = "Banner" Me.Label12.TextAlign = System.Drawing.ContentAlignment.MiddleRight ' 'THBackBMP ' Me.THBackBMP.Dock = System.Windows.Forms.DockStyle.Fill - Me.THBackBMP.Location = New System.Drawing.Point(67, 94) + Me.THBackBMP.Location = New System.Drawing.Point(70, 100) Me.THBackBMP.Margin = New System.Windows.Forms.Padding(0) Me.THBackBMP.Name = "THBackBMP" - Me.THBackBMP.Size = New System.Drawing.Size(88, 23) - Me.THBackBMP.TabIndex = 108 + Me.THBackBMP.Size = New System.Drawing.Size(85, 23) + Me.THBackBMP.TabIndex = 111 ' 'Label11 ' - Me.Label11.Anchor = System.Windows.Forms.AnchorStyles.Right Me.Label11.AutoSize = True - Me.Label11.Location = New System.Drawing.Point(4, 98) + Me.Label11.Dock = System.Windows.Forms.DockStyle.Right + Me.Label11.Location = New System.Drawing.Point(7, 100) Me.Label11.Name = "Label11" - Me.Label11.Size = New System.Drawing.Size(60, 15) - Me.Label11.TabIndex = 16 + Me.Label11.Size = New System.Drawing.Size(60, 25) + Me.Label11.TabIndex = 110 Me.Label11.Text = "Back BMP" Me.Label11.TextAlign = System.Drawing.ContentAlignment.MiddleRight ' 'THBanner ' Me.THBanner.Dock = System.Windows.Forms.DockStyle.Fill - Me.THBanner.Location = New System.Drawing.Point(67, 70) + Me.THBanner.Location = New System.Drawing.Point(70, 75) Me.THBanner.Margin = New System.Windows.Forms.Padding(0) Me.THBanner.Name = "THBanner" - Me.THBanner.Size = New System.Drawing.Size(88, 23) - Me.THBanner.TabIndex = 106 + Me.THBanner.Size = New System.Drawing.Size(85, 23) + Me.THBanner.TabIndex = 108 ' 'THStageFile ' Me.THStageFile.Dock = System.Windows.Forms.DockStyle.Fill - Me.THStageFile.Location = New System.Drawing.Point(67, 46) + Me.THStageFile.Location = New System.Drawing.Point(70, 50) Me.THStageFile.Margin = New System.Windows.Forms.Padding(0) Me.THStageFile.Name = "THStageFile" - Me.THStageFile.Size = New System.Drawing.Size(88, 23) - Me.THStageFile.TabIndex = 104 + Me.THStageFile.Size = New System.Drawing.Size(85, 23) + Me.THStageFile.TabIndex = 105 ' 'THSubTitle ' Me.POHeaderPart2.SetColumnSpan(Me.THSubTitle, 2) Me.THSubTitle.Dock = System.Windows.Forms.DockStyle.Fill - Me.THSubTitle.Location = New System.Drawing.Point(67, 0) + Me.THSubTitle.Location = New System.Drawing.Point(70, 0) Me.THSubTitle.Margin = New System.Windows.Forms.Padding(0) Me.THSubTitle.Name = "THSubTitle" - Me.THSubTitle.Size = New System.Drawing.Size(116, 23) - Me.THSubTitle.TabIndex = 102 + Me.THSubTitle.Size = New System.Drawing.Size(113, 23) + Me.THSubTitle.TabIndex = 101 ' 'THSubArtist ' Me.POHeaderPart2.SetColumnSpan(Me.THSubArtist, 2) Me.THSubArtist.Dock = System.Windows.Forms.DockStyle.Fill - Me.THSubArtist.Location = New System.Drawing.Point(67, 23) + Me.THSubArtist.Location = New System.Drawing.Point(70, 25) Me.THSubArtist.Margin = New System.Windows.Forms.Padding(0) Me.THSubArtist.Name = "THSubArtist" - Me.THSubArtist.Size = New System.Drawing.Size(116, 23) + Me.THSubArtist.Size = New System.Drawing.Size(113, 23) Me.THSubArtist.TabIndex = 103 ' 'POHeaderExpander @@ -4085,7 +4073,7 @@ Partial Class MainWindow Me.POHeaderExpander.Dock = System.Windows.Forms.DockStyle.Top Me.POHeaderExpander.FlatAppearance.BorderSize = 0 Me.POHeaderExpander.FlatStyle = System.Windows.Forms.FlatStyle.Popup - Me.POHeaderExpander.Location = New System.Drawing.Point(0, 361) + Me.POHeaderExpander.Location = New System.Drawing.Point(0, 225) Me.POHeaderExpander.Margin = New System.Windows.Forms.Padding(0) Me.POHeaderExpander.Name = "POHeaderExpander" Me.POHeaderExpander.Size = New System.Drawing.Size(183, 25) @@ -4100,113 +4088,101 @@ Partial Class MainWindow Me.POHeaderPart1.AutoSize = True Me.POHeaderPart1.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink Me.POHeaderPart1.ColumnCount = 3 - Me.POHeaderPart1.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 67.0!)) + Me.POHeaderPart1.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 70.0!)) Me.POHeaderPart1.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100.0!)) Me.POHeaderPart1.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 28.0!)) + Me.POHeaderPart1.Controls.Add(Me.CHDifficulty, 1, 6) Me.POHeaderPart1.Controls.Add(Me.Label3, 0, 0) - Me.POHeaderPart1.Controls.Add(Me.THPlayLevel, 1, 6) + Me.POHeaderPart1.Controls.Add(Me.Label25, 2, 8) Me.POHeaderPart1.Controls.Add(Me.CHRank, 1, 5) Me.POHeaderPart1.Controls.Add(Me.Label10, 0, 5) Me.POHeaderPart1.Controls.Add(Me.CHPlayer, 1, 4) Me.POHeaderPart1.Controls.Add(Me.Label4, 0, 1) Me.POHeaderPart1.Controls.Add(Me.THGenre, 1, 2) + Me.POHeaderPart1.Controls.Add(Me.THTotal, 1, 8) Me.POHeaderPart1.Controls.Add(Me.THBPM, 1, 3) + Me.POHeaderPart1.Controls.Add(Me.Label20, 0, 8) Me.POHeaderPart1.Controls.Add(Me.Label2, 0, 2) Me.POHeaderPart1.Controls.Add(Me.THArtist, 1, 1) Me.POHeaderPart1.Controls.Add(Me.THTitle, 1, 0) Me.POHeaderPart1.Controls.Add(Me.Label9, 0, 3) Me.POHeaderPart1.Controls.Add(Me.Label8, 0, 4) - Me.POHeaderPart1.Controls.Add(Me.Label6, 0, 6) + Me.POHeaderPart1.Controls.Add(Me.Label6, 0, 7) + Me.POHeaderPart1.Controls.Add(Me.THPlayLevel, 1, 7) + Me.POHeaderPart1.Controls.Add(Me.Label21, 0, 6) Me.POHeaderPart1.Dock = System.Windows.Forms.DockStyle.Top Me.POHeaderPart1.Location = New System.Drawing.Point(0, 0) Me.POHeaderPart1.Name = "POHeaderPart1" - Me.POHeaderPart1.RowCount = 17 - Me.POHeaderPart1.RowStyles.Add(New System.Windows.Forms.RowStyle()) - Me.POHeaderPart1.RowStyles.Add(New System.Windows.Forms.RowStyle()) - Me.POHeaderPart1.RowStyles.Add(New System.Windows.Forms.RowStyle()) - Me.POHeaderPart1.RowStyles.Add(New System.Windows.Forms.RowStyle()) - Me.POHeaderPart1.RowStyles.Add(New System.Windows.Forms.RowStyle()) - Me.POHeaderPart1.RowStyles.Add(New System.Windows.Forms.RowStyle()) - Me.POHeaderPart1.RowStyles.Add(New System.Windows.Forms.RowStyle()) - Me.POHeaderPart1.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20.0!)) - Me.POHeaderPart1.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20.0!)) - Me.POHeaderPart1.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20.0!)) - Me.POHeaderPart1.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20.0!)) + Me.POHeaderPart1.RowCount = 9 + Me.POHeaderPart1.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 25.0!)) + Me.POHeaderPart1.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 25.0!)) + Me.POHeaderPart1.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 25.0!)) + Me.POHeaderPart1.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 25.0!)) + Me.POHeaderPart1.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 25.0!)) + Me.POHeaderPart1.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 25.0!)) + Me.POHeaderPart1.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 25.0!)) + Me.POHeaderPart1.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 25.0!)) + Me.POHeaderPart1.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 25.0!)) Me.POHeaderPart1.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20.0!)) - Me.POHeaderPart1.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20.0!)) - Me.POHeaderPart1.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20.0!)) - Me.POHeaderPart1.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20.0!)) - Me.POHeaderPart1.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20.0!)) - Me.POHeaderPart1.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20.0!)) - Me.POHeaderPart1.Size = New System.Drawing.Size(183, 361) + Me.POHeaderPart1.Size = New System.Drawing.Size(183, 225) Me.POHeaderPart1.TabIndex = 25 ' 'Label3 ' - Me.Label3.Anchor = System.Windows.Forms.AnchorStyles.Right Me.Label3.AutoSize = True - Me.Label3.Location = New System.Drawing.Point(35, 4) + Me.Label3.Dock = System.Windows.Forms.DockStyle.Right + Me.Label3.Location = New System.Drawing.Point(38, 0) Me.Label3.Name = "Label3" - Me.Label3.Size = New System.Drawing.Size(29, 15) - Me.Label3.TabIndex = 2 + Me.Label3.Size = New System.Drawing.Size(29, 25) + Me.Label3.TabIndex = 0 Me.Label3.Text = "Title" Me.Label3.TextAlign = System.Drawing.ContentAlignment.MiddleRight ' - 'THPlayLevel - ' - Me.POHeaderPart1.SetColumnSpan(Me.THPlayLevel, 2) - Me.THPlayLevel.Dock = System.Windows.Forms.DockStyle.Fill - Me.THPlayLevel.Location = New System.Drawing.Point(67, 138) - Me.THPlayLevel.Margin = New System.Windows.Forms.Padding(0) - Me.THPlayLevel.Name = "THPlayLevel" - Me.THPlayLevel.Size = New System.Drawing.Size(116, 23) - Me.THPlayLevel.TabIndex = 8 - ' 'CHRank ' Me.POHeaderPart1.SetColumnSpan(Me.CHRank, 2) - Me.CHRank.Dock = System.Windows.Forms.DockStyle.Top + Me.CHRank.Dock = System.Windows.Forms.DockStyle.Fill Me.CHRank.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList Me.CHRank.FlatStyle = System.Windows.Forms.FlatStyle.System Me.CHRank.Items.AddRange(New Object() {"0 - Very Hard", "1 - Hard", "2 - Normal", "3 - Easy", "4 - Very Easy"}) - Me.CHRank.Location = New System.Drawing.Point(67, 115) + Me.CHRank.Location = New System.Drawing.Point(70, 125) Me.CHRank.Margin = New System.Windows.Forms.Padding(0) Me.CHRank.Name = "CHRank" - Me.CHRank.Size = New System.Drawing.Size(116, 23) - Me.CHRank.TabIndex = 7 + Me.CHRank.Size = New System.Drawing.Size(113, 23) + Me.CHRank.TabIndex = 11 ' 'Label10 ' - Me.Label10.Anchor = System.Windows.Forms.AnchorStyles.Right Me.Label10.AutoSize = True - Me.Label10.Location = New System.Drawing.Point(14, 119) + Me.Label10.Dock = System.Windows.Forms.DockStyle.Right + Me.Label10.Location = New System.Drawing.Point(3, 125) Me.Label10.Name = "Label10" - Me.Label10.Size = New System.Drawing.Size(50, 15) - Me.Label10.TabIndex = 16 - Me.Label10.Text = "Ranking" + Me.Label10.Size = New System.Drawing.Size(64, 25) + Me.Label10.TabIndex = 10 + Me.Label10.Text = "JudgeRank" Me.Label10.TextAlign = System.Drawing.ContentAlignment.MiddleRight ' 'CHPlayer ' Me.POHeaderPart1.SetColumnSpan(Me.CHPlayer, 2) - Me.CHPlayer.Dock = System.Windows.Forms.DockStyle.Top + Me.CHPlayer.Dock = System.Windows.Forms.DockStyle.Fill Me.CHPlayer.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList Me.CHPlayer.FlatStyle = System.Windows.Forms.FlatStyle.System Me.CHPlayer.Items.AddRange(New Object() {"1 - Single Play", "2 - Couple Play", "3 - Double Play"}) - Me.CHPlayer.Location = New System.Drawing.Point(67, 92) + Me.CHPlayer.Location = New System.Drawing.Point(70, 100) Me.CHPlayer.Margin = New System.Windows.Forms.Padding(0) Me.CHPlayer.Name = "CHPlayer" - Me.CHPlayer.Size = New System.Drawing.Size(116, 23) - Me.CHPlayer.TabIndex = 6 + Me.CHPlayer.Size = New System.Drawing.Size(113, 23) + Me.CHPlayer.TabIndex = 9 ' 'Label4 ' - Me.Label4.Anchor = System.Windows.Forms.AnchorStyles.Right Me.Label4.AutoSize = True - Me.Label4.Location = New System.Drawing.Point(29, 27) + Me.Label4.Dock = System.Windows.Forms.DockStyle.Right + Me.Label4.Location = New System.Drawing.Point(32, 25) Me.Label4.Name = "Label4" - Me.Label4.Size = New System.Drawing.Size(35, 15) - Me.Label4.TabIndex = 3 + Me.Label4.Size = New System.Drawing.Size(35, 25) + Me.Label4.TabIndex = 2 Me.Label4.Text = "Artist" Me.Label4.TextAlign = System.Drawing.ContentAlignment.MiddleRight ' @@ -4214,11 +4190,11 @@ Partial Class MainWindow ' Me.POHeaderPart1.SetColumnSpan(Me.THGenre, 2) Me.THGenre.Dock = System.Windows.Forms.DockStyle.Fill - Me.THGenre.Location = New System.Drawing.Point(67, 46) + Me.THGenre.Location = New System.Drawing.Point(70, 50) Me.THGenre.Margin = New System.Windows.Forms.Padding(0) Me.THGenre.Name = "THGenre" - Me.THGenre.Size = New System.Drawing.Size(116, 23) - Me.THGenre.TabIndex = 4 + Me.THGenre.Size = New System.Drawing.Size(113, 23) + Me.THGenre.TabIndex = 5 ' 'THBPM ' @@ -4226,22 +4202,22 @@ Partial Class MainWindow Me.THBPM.DecimalPlaces = 4 Me.THBPM.Dock = System.Windows.Forms.DockStyle.Fill Me.THBPM.Increment = New Decimal(New Integer() {10, 0, 0, 0}) - Me.THBPM.Location = New System.Drawing.Point(67, 69) + Me.THBPM.Location = New System.Drawing.Point(70, 75) Me.THBPM.Margin = New System.Windows.Forms.Padding(0) Me.THBPM.Maximum = New Decimal(New Integer() {655359999, 0, 0, 262144}) Me.THBPM.Minimum = New Decimal(New Integer() {1, 0, 0, 262144}) Me.THBPM.Name = "THBPM" - Me.THBPM.Size = New System.Drawing.Size(116, 23) - Me.THBPM.TabIndex = 5 + Me.THBPM.Size = New System.Drawing.Size(113, 23) + Me.THBPM.TabIndex = 7 Me.THBPM.Value = New Decimal(New Integer() {120, 0, 0, 0}) ' 'Label2 ' - Me.Label2.Anchor = System.Windows.Forms.AnchorStyles.Right Me.Label2.AutoSize = True - Me.Label2.Location = New System.Drawing.Point(26, 50) + Me.Label2.Dock = System.Windows.Forms.DockStyle.Right + Me.Label2.Location = New System.Drawing.Point(29, 50) Me.Label2.Name = "Label2" - Me.Label2.Size = New System.Drawing.Size(38, 15) + Me.Label2.Size = New System.Drawing.Size(38, 25) Me.Label2.TabIndex = 4 Me.Label2.Text = "Genre" Me.Label2.TextAlign = System.Drawing.ContentAlignment.MiddleRight @@ -4250,55 +4226,44 @@ Partial Class MainWindow ' Me.POHeaderPart1.SetColumnSpan(Me.THArtist, 2) Me.THArtist.Dock = System.Windows.Forms.DockStyle.Fill - Me.THArtist.Location = New System.Drawing.Point(67, 23) + Me.THArtist.Location = New System.Drawing.Point(70, 25) Me.THArtist.Margin = New System.Windows.Forms.Padding(0) Me.THArtist.Name = "THArtist" - Me.THArtist.Size = New System.Drawing.Size(116, 23) + Me.THArtist.Size = New System.Drawing.Size(113, 23) Me.THArtist.TabIndex = 3 ' 'THTitle ' Me.POHeaderPart1.SetColumnSpan(Me.THTitle, 2) Me.THTitle.Dock = System.Windows.Forms.DockStyle.Fill - Me.THTitle.Location = New System.Drawing.Point(67, 0) + Me.THTitle.Location = New System.Drawing.Point(70, 0) Me.THTitle.Margin = New System.Windows.Forms.Padding(0) Me.THTitle.Name = "THTitle" - Me.THTitle.Size = New System.Drawing.Size(116, 23) - Me.THTitle.TabIndex = 2 + Me.THTitle.Size = New System.Drawing.Size(113, 23) + Me.THTitle.TabIndex = 1 ' 'Label9 ' - Me.Label9.Anchor = System.Windows.Forms.AnchorStyles.Right Me.Label9.AutoSize = True - Me.Label9.Location = New System.Drawing.Point(32, 73) + Me.Label9.Dock = System.Windows.Forms.DockStyle.Right + Me.Label9.Location = New System.Drawing.Point(35, 75) Me.Label9.Name = "Label9" - Me.Label9.Size = New System.Drawing.Size(32, 15) - Me.Label9.TabIndex = 5 + Me.Label9.Size = New System.Drawing.Size(32, 25) + Me.Label9.TabIndex = 6 Me.Label9.Text = "BPM" Me.Label9.TextAlign = System.Drawing.ContentAlignment.MiddleRight ' 'Label8 ' - Me.Label8.Anchor = System.Windows.Forms.AnchorStyles.Right Me.Label8.AutoSize = True - Me.Label8.Location = New System.Drawing.Point(25, 96) + Me.Label8.Dock = System.Windows.Forms.DockStyle.Right + Me.Label8.Location = New System.Drawing.Point(28, 100) Me.Label8.Name = "Label8" - Me.Label8.Size = New System.Drawing.Size(39, 15) - Me.Label8.TabIndex = 13 + Me.Label8.Size = New System.Drawing.Size(39, 25) + Me.Label8.TabIndex = 8 Me.Label8.Text = "Player" Me.Label8.TextAlign = System.Drawing.ContentAlignment.MiddleRight ' - 'Label6 - ' - Me.Label6.Anchor = System.Windows.Forms.AnchorStyles.Right - Me.Label6.AutoSize = True - Me.Label6.Location = New System.Drawing.Point(5, 142) - Me.Label6.Name = "Label6" - Me.Label6.Size = New System.Drawing.Size(59, 15) - Me.Label6.TabIndex = 8 - Me.Label6.Text = "Play Level" - Me.Label6.TextAlign = System.Drawing.ContentAlignment.MiddleRight - ' 'POHeaderSwitch ' Me.POHeaderSwitch.Appearance = System.Windows.Forms.Appearance.Button @@ -4344,6 +4309,27 @@ Partial Class MainWindow ' Me.TimerExternalExpansion.Interval = 3000 ' + 'Label6 + ' + Me.Label6.AutoSize = True + Me.Label6.Dock = System.Windows.Forms.DockStyle.Right + Me.Label6.Location = New System.Drawing.Point(8, 175) + Me.Label6.Name = "Label6" + Me.Label6.Size = New System.Drawing.Size(59, 25) + Me.Label6.TabIndex = 14 + Me.Label6.Text = "Play Level" + Me.Label6.TextAlign = System.Drawing.ContentAlignment.MiddleRight + ' + 'THPlayLevel + ' + Me.POHeaderPart1.SetColumnSpan(Me.THPlayLevel, 2) + Me.THPlayLevel.Dock = System.Windows.Forms.DockStyle.Fill + Me.THPlayLevel.Location = New System.Drawing.Point(70, 175) + Me.THPlayLevel.Margin = New System.Windows.Forms.Padding(0) + Me.THPlayLevel.Name = "THPlayLevel" + Me.THPlayLevel.Size = New System.Drawing.Size(113, 23) + Me.THPlayLevel.TabIndex = 15 + ' 'MainWindow ' Me.AllowDrop = True @@ -4798,7 +4784,6 @@ Partial Class MainWindow Friend WithEvents POHeaderExpander As CheckBox Friend WithEvents POHeaderPart1 As TableLayoutPanel Friend WithEvents Label3 As Label - Friend WithEvents THPlayLevel As TextBox Friend WithEvents CHRank As ComboBox Friend WithEvents Label10 As Label Friend WithEvents CHPlayer As ComboBox @@ -4810,7 +4795,6 @@ Partial Class MainWindow Friend WithEvents THTitle As TextBox Friend WithEvents Label9 As Label Friend WithEvents Label8 As Label - Friend WithEvents Label6 As Label Friend WithEvents POHeaderSwitch As CheckBox Friend WithEvents POptionsScroll As Panel Friend WithEvents BExpansion As Button @@ -4842,4 +4826,6 @@ Partial Class MainWindow Friend WithEvents POBLongNTObj As ToolStripMenuItem Friend WithEvents TimerRefreshPanel As Timer Friend WithEvents TimerExternalExpansion As Timer + Friend WithEvents Label6 As Label + Friend WithEvents THPlayLevel As TextBox End Class From 49f0ca12c51c298d61e2f11ce204414d27b44a77 Mon Sep 17 00:00:00 2001 From: psyk2642 <60137590+psyk2642@users.noreply.github.com> Date: Sat, 7 May 2022 10:58:52 +0800 Subject: [PATCH 149/257] Visual Override Code Update --- iBMSC/EditorPersistent.vb | 15 ++ iBMSC/MainWindow.designer.vb | 169 ++++++++++++----------- iBMSC/MainWindow.vb | 10 +- iBMSC/Option Windows/OpVisualOverride.vb | 6 +- 4 files changed, 106 insertions(+), 94 deletions(-) diff --git a/iBMSC/EditorPersistent.vb b/iBMSC/EditorPersistent.vb index e05dffdb9..556d4be94 100644 --- a/iBMSC/EditorPersistent.vb +++ b/iBMSC/EditorPersistent.vb @@ -1508,5 +1508,20 @@ Partial Public Class MainWindow Else ReDim COverridesFull(-1) End If + LoadColorOverrideActive() + End Sub + + Private Sub LoadColorOverrideActive() + Dim i As Integer = -1 + If COverridesFull IsNot Nothing Then + ReDim COverridesActive(UBound(COverridesFull)) + For Each COverride In COverridesFull + If COverride.Enabled Then + i += 1 + COverridesActive(i) = COverride + End If + Next + End If + ReDim Preserve COverridesActive(i) End Sub End Class diff --git a/iBMSC/MainWindow.designer.vb b/iBMSC/MainWindow.designer.vb index adc7e1371..e58c522d5 100644 --- a/iBMSC/MainWindow.designer.vb +++ b/iBMSC/MainWindow.designer.vb @@ -342,18 +342,13 @@ Partial Class MainWindow Me.POHeader = New System.Windows.Forms.Panel() Me.POHeaderInner = New System.Windows.Forms.Panel() Me.POHeaderPart2 = New System.Windows.Forms.TableLayoutPanel() - Me.CHDifficulty = New System.Windows.Forms.ComboBox() Me.Label13 = New System.Windows.Forms.Label() Me.THExRank = New System.Windows.Forms.TextBox() - Me.Label25 = New System.Windows.Forms.Label() Me.CHLnObj = New System.Windows.Forms.ComboBox() Me.Label23 = New System.Windows.Forms.Label() - Me.Label21 = New System.Windows.Forms.Label() Me.THComment = New System.Windows.Forms.TextBox() Me.Label24 = New System.Windows.Forms.Label() Me.Label15 = New System.Windows.Forms.Label() - Me.THTotal = New System.Windows.Forms.TextBox() - Me.Label20 = New System.Windows.Forms.Label() Me.BHStageFile = New System.Windows.Forms.Button() Me.BHBanner = New System.Windows.Forms.Button() Me.Label19 = New System.Windows.Forms.Label() @@ -369,26 +364,31 @@ Partial Class MainWindow Me.THSubArtist = New System.Windows.Forms.TextBox() Me.POHeaderExpander = New System.Windows.Forms.CheckBox() Me.POHeaderPart1 = New System.Windows.Forms.TableLayoutPanel() + Me.CHDifficulty = New System.Windows.Forms.ComboBox() Me.Label3 = New System.Windows.Forms.Label() + Me.Label25 = New System.Windows.Forms.Label() Me.CHRank = New System.Windows.Forms.ComboBox() Me.Label10 = New System.Windows.Forms.Label() Me.CHPlayer = New System.Windows.Forms.ComboBox() Me.Label4 = New System.Windows.Forms.Label() Me.THGenre = New System.Windows.Forms.TextBox() + Me.THTotal = New System.Windows.Forms.TextBox() Me.THBPM = New System.Windows.Forms.NumericUpDown() + Me.Label20 = New System.Windows.Forms.Label() Me.Label2 = New System.Windows.Forms.Label() Me.THArtist = New System.Windows.Forms.TextBox() Me.THTitle = New System.Windows.Forms.TextBox() Me.Label9 = New System.Windows.Forms.Label() Me.Label8 = New System.Windows.Forms.Label() + Me.Label6 = New System.Windows.Forms.Label() + Me.THPlayLevel = New System.Windows.Forms.TextBox() + Me.Label21 = New System.Windows.Forms.Label() Me.POHeaderSwitch = New System.Windows.Forms.CheckBox() Me.POptionsScroll = New System.Windows.Forms.Panel() Me.TimerInternalPlay = New System.Windows.Forms.Timer(Me.components) Me.TimerPreviewNote = New System.Windows.Forms.Timer(Me.components) Me.TimerRefreshPanel = New System.Windows.Forms.Timer(Me.components) Me.TimerExternalExpansion = New System.Windows.Forms.Timer(Me.components) - Me.Label6 = New System.Windows.Forms.Label() - Me.THPlayLevel = New System.Windows.Forms.TextBox() Me.cmnLanguage.SuspendLayout() Me.cmnTheme.SuspendLayout() Me.Menu1.SuspendLayout() @@ -2854,6 +2854,7 @@ Partial Class MainWindow 'LWAV ' Me.LWAV.Dock = System.Windows.Forms.DockStyle.Fill + Me.LWAV.DrawMode = System.Windows.Forms.DrawMode.OwnerDrawFixed Me.LWAV.Font = New System.Drawing.Font("Consolas", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) Me.LWAV.IntegralHeight = False Me.LWAV.ItemHeight = 14 @@ -3794,19 +3795,6 @@ Partial Class MainWindow Me.POHeaderPart2.Size = New System.Drawing.Size(183, 200) Me.POHeaderPart2.TabIndex = 102 ' - 'CHDifficulty - ' - Me.POHeaderPart1.SetColumnSpan(Me.CHDifficulty, 2) - Me.CHDifficulty.Dock = System.Windows.Forms.DockStyle.Fill - Me.CHDifficulty.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList - Me.CHDifficulty.FlatStyle = System.Windows.Forms.FlatStyle.System - Me.CHDifficulty.Items.AddRange(New Object() {"None", "1 - EZ / Beginner", "2 - NM / Normal", "3 - HD / Hyper", "4 - MX / Another", "5 - SC / Insane"}) - Me.CHDifficulty.Location = New System.Drawing.Point(70, 150) - Me.CHDifficulty.Margin = New System.Windows.Forms.Padding(0) - Me.CHDifficulty.Name = "CHDifficulty" - Me.CHDifficulty.Size = New System.Drawing.Size(113, 23) - Me.CHDifficulty.TabIndex = 13 - ' 'Label13 ' Me.Label13.AutoSize = True @@ -3828,18 +3816,6 @@ Partial Class MainWindow Me.THExRank.Size = New System.Drawing.Size(85, 23) Me.THExRank.TabIndex = 114 ' - 'Label25 - ' - Me.Label25.AutoSize = True - Me.Label25.Dock = System.Windows.Forms.DockStyle.Fill - Me.Label25.Location = New System.Drawing.Point(158, 200) - Me.Label25.Margin = New System.Windows.Forms.Padding(3, 0, 0, 0) - Me.Label25.Name = "Label25" - Me.Label25.Size = New System.Drawing.Size(25, 25) - Me.Label25.TabIndex = 18 - Me.Label25.Text = "(%)" - Me.Label25.TextAlign = System.Drawing.ContentAlignment.MiddleLeft - ' 'CHLnObj ' Me.POHeaderPart2.SetColumnSpan(Me.CHLnObj, 2) @@ -3864,17 +3840,6 @@ Partial Class MainWindow Me.Label23.Text = "ExRank" Me.Label23.TextAlign = System.Drawing.ContentAlignment.MiddleRight ' - 'Label21 - ' - Me.Label21.AutoSize = True - Me.Label21.Dock = System.Windows.Forms.DockStyle.Right - Me.Label21.Location = New System.Drawing.Point(12, 150) - Me.Label21.Name = "Label21" - Me.Label21.Size = New System.Drawing.Size(55, 25) - Me.Label21.TabIndex = 12 - Me.Label21.Text = "Difficulty" - Me.Label21.TextAlign = System.Drawing.ContentAlignment.MiddleRight - ' 'THComment ' Me.POHeaderPart2.SetColumnSpan(Me.THComment, 2) @@ -3907,26 +3872,6 @@ Partial Class MainWindow Me.Label15.Text = "SubTitle" Me.Label15.TextAlign = System.Drawing.ContentAlignment.MiddleRight ' - 'THTotal - ' - Me.THTotal.Dock = System.Windows.Forms.DockStyle.Fill - Me.THTotal.Location = New System.Drawing.Point(70, 200) - Me.THTotal.Margin = New System.Windows.Forms.Padding(0) - Me.THTotal.Name = "THTotal" - Me.THTotal.Size = New System.Drawing.Size(85, 23) - Me.THTotal.TabIndex = 17 - ' - 'Label20 - ' - Me.Label20.AutoSize = True - Me.Label20.Dock = System.Windows.Forms.DockStyle.Right - Me.Label20.Location = New System.Drawing.Point(35, 200) - Me.Label20.Name = "Label20" - Me.Label20.Size = New System.Drawing.Size(32, 25) - Me.Label20.TabIndex = 16 - Me.Label20.Text = "Total" - Me.Label20.TextAlign = System.Drawing.ContentAlignment.MiddleRight - ' 'BHStageFile ' Me.BHStageFile.Dock = System.Windows.Forms.DockStyle.Fill @@ -4127,6 +4072,19 @@ Partial Class MainWindow Me.POHeaderPart1.Size = New System.Drawing.Size(183, 225) Me.POHeaderPart1.TabIndex = 25 ' + 'CHDifficulty + ' + Me.POHeaderPart1.SetColumnSpan(Me.CHDifficulty, 2) + Me.CHDifficulty.Dock = System.Windows.Forms.DockStyle.Fill + Me.CHDifficulty.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList + Me.CHDifficulty.FlatStyle = System.Windows.Forms.FlatStyle.System + Me.CHDifficulty.Items.AddRange(New Object() {"None", "1 - EZ / Beginner", "2 - NM / Normal", "3 - HD / Hyper", "4 - MX / Another", "5 - SC / Insane"}) + Me.CHDifficulty.Location = New System.Drawing.Point(70, 150) + Me.CHDifficulty.Margin = New System.Windows.Forms.Padding(0) + Me.CHDifficulty.Name = "CHDifficulty" + Me.CHDifficulty.Size = New System.Drawing.Size(113, 23) + Me.CHDifficulty.TabIndex = 13 + ' 'Label3 ' Me.Label3.AutoSize = True @@ -4138,6 +4096,18 @@ Partial Class MainWindow Me.Label3.Text = "Title" Me.Label3.TextAlign = System.Drawing.ContentAlignment.MiddleRight ' + 'Label25 + ' + Me.Label25.AutoSize = True + Me.Label25.Dock = System.Windows.Forms.DockStyle.Fill + Me.Label25.Location = New System.Drawing.Point(158, 200) + Me.Label25.Margin = New System.Windows.Forms.Padding(3, 0, 0, 0) + Me.Label25.Name = "Label25" + Me.Label25.Size = New System.Drawing.Size(25, 25) + Me.Label25.TabIndex = 18 + Me.Label25.Text = "(%)" + Me.Label25.TextAlign = System.Drawing.ContentAlignment.MiddleLeft + ' 'CHRank ' Me.POHeaderPart1.SetColumnSpan(Me.CHRank, 2) @@ -4196,6 +4166,15 @@ Partial Class MainWindow Me.THGenre.Size = New System.Drawing.Size(113, 23) Me.THGenre.TabIndex = 5 ' + 'THTotal + ' + Me.THTotal.Dock = System.Windows.Forms.DockStyle.Fill + Me.THTotal.Location = New System.Drawing.Point(70, 200) + Me.THTotal.Margin = New System.Windows.Forms.Padding(0) + Me.THTotal.Name = "THTotal" + Me.THTotal.Size = New System.Drawing.Size(85, 23) + Me.THTotal.TabIndex = 17 + ' 'THBPM ' Me.POHeaderPart1.SetColumnSpan(Me.THBPM, 2) @@ -4211,6 +4190,17 @@ Partial Class MainWindow Me.THBPM.TabIndex = 7 Me.THBPM.Value = New Decimal(New Integer() {120, 0, 0, 0}) ' + 'Label20 + ' + Me.Label20.AutoSize = True + Me.Label20.Dock = System.Windows.Forms.DockStyle.Right + Me.Label20.Location = New System.Drawing.Point(35, 200) + Me.Label20.Name = "Label20" + Me.Label20.Size = New System.Drawing.Size(32, 25) + Me.Label20.TabIndex = 16 + Me.Label20.Text = "Total" + Me.Label20.TextAlign = System.Drawing.ContentAlignment.MiddleRight + ' 'Label2 ' Me.Label2.AutoSize = True @@ -4264,6 +4254,38 @@ Partial Class MainWindow Me.Label8.Text = "Player" Me.Label8.TextAlign = System.Drawing.ContentAlignment.MiddleRight ' + 'Label6 + ' + Me.Label6.AutoSize = True + Me.Label6.Dock = System.Windows.Forms.DockStyle.Right + Me.Label6.Location = New System.Drawing.Point(8, 175) + Me.Label6.Name = "Label6" + Me.Label6.Size = New System.Drawing.Size(59, 25) + Me.Label6.TabIndex = 14 + Me.Label6.Text = "Play Level" + Me.Label6.TextAlign = System.Drawing.ContentAlignment.MiddleRight + ' + 'THPlayLevel + ' + Me.POHeaderPart1.SetColumnSpan(Me.THPlayLevel, 2) + Me.THPlayLevel.Dock = System.Windows.Forms.DockStyle.Fill + Me.THPlayLevel.Location = New System.Drawing.Point(70, 175) + Me.THPlayLevel.Margin = New System.Windows.Forms.Padding(0) + Me.THPlayLevel.Name = "THPlayLevel" + Me.THPlayLevel.Size = New System.Drawing.Size(113, 23) + Me.THPlayLevel.TabIndex = 15 + ' + 'Label21 + ' + Me.Label21.AutoSize = True + Me.Label21.Dock = System.Windows.Forms.DockStyle.Right + Me.Label21.Location = New System.Drawing.Point(12, 150) + Me.Label21.Name = "Label21" + Me.Label21.Size = New System.Drawing.Size(55, 25) + Me.Label21.TabIndex = 12 + Me.Label21.Text = "Difficulty" + Me.Label21.TextAlign = System.Drawing.ContentAlignment.MiddleRight + ' 'POHeaderSwitch ' Me.POHeaderSwitch.Appearance = System.Windows.Forms.Appearance.Button @@ -4309,27 +4331,6 @@ Partial Class MainWindow ' Me.TimerExternalExpansion.Interval = 3000 ' - 'Label6 - ' - Me.Label6.AutoSize = True - Me.Label6.Dock = System.Windows.Forms.DockStyle.Right - Me.Label6.Location = New System.Drawing.Point(8, 175) - Me.Label6.Name = "Label6" - Me.Label6.Size = New System.Drawing.Size(59, 25) - Me.Label6.TabIndex = 14 - Me.Label6.Text = "Play Level" - Me.Label6.TextAlign = System.Drawing.ContentAlignment.MiddleRight - ' - 'THPlayLevel - ' - Me.POHeaderPart1.SetColumnSpan(Me.THPlayLevel, 2) - Me.THPlayLevel.Dock = System.Windows.Forms.DockStyle.Fill - Me.THPlayLevel.Location = New System.Drawing.Point(70, 175) - Me.THPlayLevel.Margin = New System.Windows.Forms.Padding(0) - Me.THPlayLevel.Name = "THPlayLevel" - Me.THPlayLevel.Size = New System.Drawing.Size(113, 23) - Me.THPlayLevel.TabIndex = 15 - ' 'MainWindow ' Me.AllowDrop = True diff --git a/iBMSC/MainWindow.vb b/iBMSC/MainWindow.vb index 82073c302..1323bf49d 100644 --- a/iBMSC/MainWindow.vb +++ b/iBMSC/MainWindow.vb @@ -3359,15 +3359,7 @@ Public Class MainWindow TBVCOptions_Click(sender, New EventArgs) End If - ReDim COverridesActive(UBound(COverridesFull)) - Dim i As Integer = -1 - For Each COverride In COverridesFull - If COverride.Enabled Then - i += 1 - COverridesActive(i) = COverride - End If - Next - ReDim Preserve COverridesActive(i) + LoadColorOverrideActive() UpdateColumnsX() RefreshPanelAll() diff --git a/iBMSC/Option Windows/OpVisualOverride.vb b/iBMSC/Option Windows/OpVisualOverride.vb index 5e757014c..2f24ddd2d 100644 --- a/iBMSC/Option Windows/OpVisualOverride.vb +++ b/iBMSC/Option Windows/OpVisualOverride.vb @@ -12,7 +12,11 @@ LOverrides.Items.Clear() - COverrides = CType(xColorOverrides.Clone(), MainWindow.ColorOverride()) + If xColorOverrides IsNot Nothing Then + COverrides = CType(xColorOverrides.Clone(), MainWindow.ColorOverride()) + Else + COverrides = Nothing + End If WHeight = Height ReDim TLValuesHeight(TLValues.RowStyles.Count - 1) From 918117eba0ba466094e5acd3471cfcbd722cf9fd Mon Sep 17 00:00:00 2001 From: psyk2642 <60137590+psyk2642@users.noreply.github.com> Date: Sat, 7 May 2022 11:09:08 +0800 Subject: [PATCH 150/257] Update MainWindow.designer.vb --- iBMSC/MainWindow.designer.vb | 65 ++++++++++++++++++------------------ 1 file changed, 32 insertions(+), 33 deletions(-) diff --git a/iBMSC/MainWindow.designer.vb b/iBMSC/MainWindow.designer.vb index e58c522d5..b0173fd86 100644 --- a/iBMSC/MainWindow.designer.vb +++ b/iBMSC/MainWindow.designer.vb @@ -25,16 +25,16 @@ Partial Class MainWindow Me.TBLangDef = New System.Windows.Forms.ToolStripMenuItem() Me.TBLangRefresh = New System.Windows.Forms.ToolStripMenuItem() Me.ToolStripSeparator9 = New System.Windows.Forms.ToolStripSeparator() - Me.mnLanguage = New System.Windows.Forms.ToolStripMenuItem() Me.TBLanguage = New System.Windows.Forms.ToolStripDropDownButton() + Me.mnLanguage = New System.Windows.Forms.ToolStripMenuItem() Me.cmnTheme = New System.Windows.Forms.ContextMenuStrip(Me.components) Me.TBThemeDef = New System.Windows.Forms.ToolStripMenuItem() Me.TBThemeSave = New System.Windows.Forms.ToolStripMenuItem() Me.TBThemeRefresh = New System.Windows.Forms.ToolStripMenuItem() Me.TBThemeLoadComptability = New System.Windows.Forms.ToolStripMenuItem() Me.ToolStripSeparator6 = New System.Windows.Forms.ToolStripSeparator() - Me.TBTheme = New System.Windows.Forms.ToolStripDropDownButton() Me.mnTheme = New System.Windows.Forms.ToolStripMenuItem() + Me.TBTheme = New System.Windows.Forms.ToolStripDropDownButton() Me.Timer1 = New System.Windows.Forms.Timer(Me.components) Me.Menu1 = New System.Windows.Forms.ContextMenuStrip(Me.components) Me.MInsert = New System.Windows.Forms.ToolStripMenuItem() @@ -134,7 +134,6 @@ Partial Class MainWindow Me.POBSRandom = New System.Windows.Forms.ToolStripMenuItem() Me.POBHRandom = New System.Windows.Forms.ToolStripMenuItem() Me.POBSort = New System.Windows.Forms.ToolStripMenuItem() - Me.POConvert = New System.Windows.Forms.ToolStripDropDownButton() Me.mnPreview = New System.Windows.Forms.ToolStripMenuItem() Me.mnPlayB = New System.Windows.Forms.ToolStripMenuItem() Me.mnPlay = New System.Windows.Forms.ToolStripMenuItem() @@ -143,6 +142,7 @@ Partial Class MainWindow Me.mnTechnicalErrorCheck = New System.Windows.Forms.ToolStripMenuItem() Me.mnTOTAL = New System.Windows.Forms.ToolStripMenuItem() Me.ToolStripSeparator13 = New System.Windows.Forms.ToolStripSeparator() + Me.POConvert = New System.Windows.Forms.ToolStripDropDownButton() Me.TBMain = New System.Windows.Forms.ToolStrip() Me.TBNew = New System.Windows.Forms.ToolStripButton() Me.TBOpen = New System.Windows.Forms.ToolStripSplitButton() @@ -473,7 +473,7 @@ Partial Class MainWindow ' Me.cmnLanguage.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.TBLangDef, Me.TBLangRefresh, Me.ToolStripSeparator9}) Me.cmnLanguage.Name = "cmnLanguage" - Me.cmnLanguage.OwnerItem = Me.TBLanguage + Me.cmnLanguage.OwnerItem = Me.mnLanguage Me.cmnLanguage.Size = New System.Drawing.Size(121, 54) ' 'TBLangDef @@ -494,14 +494,6 @@ Partial Class MainWindow Me.ToolStripSeparator9.Name = "ToolStripSeparator9" Me.ToolStripSeparator9.Size = New System.Drawing.Size(117, 6) ' - 'mnLanguage - ' - Me.mnLanguage.DropDown = Me.cmnLanguage - Me.mnLanguage.Image = Global.iBMSC.My.Resources.Resources.x16Language - Me.mnLanguage.Name = "mnLanguage" - Me.mnLanguage.Size = New System.Drawing.Size(253, 22) - Me.mnLanguage.Text = "&Language" - ' 'TBLanguage ' Me.TBLanguage.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image @@ -512,11 +504,19 @@ Partial Class MainWindow Me.TBLanguage.Size = New System.Drawing.Size(29, 22) Me.TBLanguage.Text = "Language" ' + 'mnLanguage + ' + Me.mnLanguage.DropDown = Me.cmnLanguage + Me.mnLanguage.Image = Global.iBMSC.My.Resources.Resources.x16Language + Me.mnLanguage.Name = "mnLanguage" + Me.mnLanguage.Size = New System.Drawing.Size(253, 22) + Me.mnLanguage.Text = "&Language" + ' 'cmnTheme ' Me.cmnTheme.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.TBThemeDef, Me.TBThemeSave, Me.TBThemeRefresh, Me.TBThemeLoadComptability, Me.ToolStripSeparator6}) Me.cmnTheme.Name = "cmnLanguage" - Me.cmnTheme.OwnerItem = Me.mnTheme + Me.cmnTheme.OwnerItem = Me.TBTheme Me.cmnTheme.Size = New System.Drawing.Size(246, 98) ' 'TBThemeDef @@ -550,6 +550,14 @@ Partial Class MainWindow Me.ToolStripSeparator6.Name = "ToolStripSeparator6" Me.ToolStripSeparator6.Size = New System.Drawing.Size(242, 6) ' + 'mnTheme + ' + Me.mnTheme.DropDown = Me.cmnTheme + Me.mnTheme.Image = Global.iBMSC.My.Resources.Resources.x16Theme + Me.mnTheme.Name = "mnTheme" + Me.mnTheme.Size = New System.Drawing.Size(253, 22) + Me.mnTheme.Text = "&Theme" + ' 'TBTheme ' Me.TBTheme.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image @@ -560,14 +568,6 @@ Partial Class MainWindow Me.TBTheme.Size = New System.Drawing.Size(29, 22) Me.TBTheme.Text = "Theme" ' - 'mnTheme - ' - Me.mnTheme.DropDown = Me.cmnTheme - Me.mnTheme.Image = Global.iBMSC.My.Resources.Resources.x16Theme - Me.mnTheme.Name = "mnTheme" - Me.mnTheme.Size = New System.Drawing.Size(253, 22) - Me.mnTheme.Text = "&Theme" - ' 'Timer1 ' Me.Timer1.Interval = 15 @@ -1183,7 +1183,7 @@ Partial Class MainWindow ' Me.cmnConversion.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.POBLong, Me.POBShort, Me.POBLongShort, Me.POBLongObjNT, Me.POBLongNTObj, Me.ToolStripSeparator25, Me.POBAutoLongVPosition, Me.POBAutoLongColumn, Me.ToolStripSeparator10, Me.POBHidden, Me.POBVisible, Me.POBHiddenVisible, Me.ToolStripSeparator11, Me.POBModify, Me.POBMirror, Me.POBFlip, Me.POBRandom, Me.POBRRandom, Me.POBSRandom, Me.POBHRandom, Me.POBSort}) Me.cmnConversion.Name = "cmnLanguage" - Me.cmnConversion.OwnerItem = Me.mnConversion + Me.cmnConversion.OwnerItem = Me.POConvert Me.cmnConversion.Size = New System.Drawing.Size(237, 418) ' 'POBLong @@ -1329,16 +1329,6 @@ Partial Class MainWindow Me.POBSort.Size = New System.Drawing.Size(236, 22) Me.POBSort.Text = "S&ort" ' - 'POConvert - ' - Me.POConvert.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image - Me.POConvert.DropDown = Me.cmnConversion - Me.POConvert.Image = Global.iBMSC.My.Resources.Resources.ConvertNotes - Me.POConvert.ImageTransparentColor = System.Drawing.Color.Magenta - Me.POConvert.Name = "POConvert" - Me.POConvert.Size = New System.Drawing.Size(29, 22) - Me.POConvert.Text = "Convert Notes" - ' 'mnPreview ' Me.mnPreview.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.mnPlayB, Me.mnPlay, Me.mnStop}) @@ -1396,6 +1386,16 @@ Partial Class MainWindow Me.ToolStripSeparator13.Name = "ToolStripSeparator13" Me.ToolStripSeparator13.Size = New System.Drawing.Size(247, 6) ' + 'POConvert + ' + Me.POConvert.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image + Me.POConvert.DropDown = Me.cmnConversion + Me.POConvert.Image = Global.iBMSC.My.Resources.Resources.ConvertNotes + Me.POConvert.ImageTransparentColor = System.Drawing.Color.Magenta + Me.POConvert.Name = "POConvert" + Me.POConvert.Size = New System.Drawing.Size(29, 22) + Me.POConvert.Text = "Convert Notes" + ' 'TBMain ' Me.TBMain.AccessibleRole = System.Windows.Forms.AccessibleRole.ToolBar @@ -2854,7 +2854,6 @@ Partial Class MainWindow 'LWAV ' Me.LWAV.Dock = System.Windows.Forms.DockStyle.Fill - Me.LWAV.DrawMode = System.Windows.Forms.DrawMode.OwnerDrawFixed Me.LWAV.Font = New System.Drawing.Font("Consolas", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) Me.LWAV.IntegralHeight = False Me.LWAV.ItemHeight = 14 From 621bafbb63fe5ce24beb84768f0d9fe5487ce212 Mon Sep 17 00:00:00 2001 From: psyk2642 <60137590+psyk2642@users.noreply.github.com> Date: Sat, 7 May 2022 11:31:58 +0800 Subject: [PATCH 151/257] Minor Code Update --- iBMSC/MainWindow.designer.vb | 4 ++-- iBMSC/MainWindow.vb | 12 ++++++++++++ 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/iBMSC/MainWindow.designer.vb b/iBMSC/MainWindow.designer.vb index b0173fd86..5cb5c7095 100644 --- a/iBMSC/MainWindow.designer.vb +++ b/iBMSC/MainWindow.designer.vb @@ -1183,7 +1183,6 @@ Partial Class MainWindow ' Me.cmnConversion.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.POBLong, Me.POBShort, Me.POBLongShort, Me.POBLongObjNT, Me.POBLongNTObj, Me.ToolStripSeparator25, Me.POBAutoLongVPosition, Me.POBAutoLongColumn, Me.ToolStripSeparator10, Me.POBHidden, Me.POBVisible, Me.POBHiddenVisible, Me.ToolStripSeparator11, Me.POBModify, Me.POBMirror, Me.POBFlip, Me.POBRandom, Me.POBRRandom, Me.POBSRandom, Me.POBHRandom, Me.POBSort}) Me.cmnConversion.Name = "cmnLanguage" - Me.cmnConversion.OwnerItem = Me.POConvert Me.cmnConversion.Size = New System.Drawing.Size(237, 418) ' 'POBLong @@ -1277,6 +1276,7 @@ Partial Class MainWindow ' Me.POBModify.Image = Global.iBMSC.My.Resources.Resources.x16ModifyLabel Me.POBModify.Name = "POBModify" + Me.POBModify.ShortcutKeys = CType((System.Windows.Forms.Keys.Shift Or System.Windows.Forms.Keys.F2), System.Windows.Forms.Keys) Me.POBModify.Size = New System.Drawing.Size(236, 22) Me.POBModify.Text = "Modify &Labels" ' @@ -1379,7 +1379,7 @@ Partial Class MainWindow ' Me.mnTOTAL.Name = "mnTOTAL" Me.mnTOTAL.Size = New System.Drawing.Size(250, 22) - Me.mnTOTAL.Text = "#TOTAL Tool" + Me.mnTOTAL.Text = "#&TOTAL Tool" ' 'ToolStripSeparator13 ' diff --git a/iBMSC/MainWindow.vb b/iBMSC/MainWindow.vb index 1323bf49d..b80f9ba54 100644 --- a/iBMSC/MainWindow.vb +++ b/iBMSC/MainWindow.vb @@ -322,11 +322,13 @@ Public Class MainWindow New Keybinding("Move to Template Position", "Move note to Template Position if available", {"P"}), New Keybinding("Disable Vertical Moves", "Disable vertical moves", {"D"}), New Keybinding("Snap to Grid", "Snap to grid", {"G"}), + _ New Keybinding("Convert to Long Note", " Long Note", {"L"}), New Keybinding("Convert to Short Note", " Short Note", {"S"}), New Keybinding("Convert between Long and Short Note", "Long Note ? Short Note", {""}), New Keybinding("Auto Long Note (By VPosition)", "Auto Long Note (By VPosition)", {""}), New Keybinding("Auto Long Note (By Column)", "Auto Long Note (By Column)", {""}), + _ New Keybinding("Check Technical Error", "Check for technical errors such as impossible scratches in DP or impossible chords in PMS", {"Ctrl+Alt+E"}), New Keybinding("Select Expansion Section", "Select #IF sections in the Expansion field", {"Ctrl+Alt+R"}), _ ' Miscellaneous Editor @@ -3360,11 +3362,21 @@ Public Class MainWindow End If LoadColorOverrideActive() + ' LWAV.Refresh() UpdateColumnsX() RefreshPanelAll() End Sub + ' Private Sub LWAV_DrawItem(sender As Object, e As DrawItemEventArgs) Handles LWAV.DrawItem + ' e.DrawBackground() + ' Dim c As Color + ' GetColor(New Note(0, 0, (e.Index + 1) * 10000, 0), c, c, 1, COverridesActive) + ' e.Graphics.FillRectangle(New SolidBrush(c), e.Bounds) + ' e.Graphics.DrawString(LWAV.Items.Item(e.Index).ToString(), e.Font, New SolidBrush(e.ForeColor), e.Bounds) + ' e.DrawFocusRectangle() + ' e.Graphics.Dispose() + ' End Sub Private Sub AddToPOWAV(ByVal xPath() As String) Dim xIndices(LWAV.SelectedIndices.Count - 1) As Integer From c710a3c95963c9bf685f216850d9a8ad5890c81b Mon Sep 17 00:00:00 2001 From: psyk2642 <60137590+psyk2642@users.noreply.github.com> Date: Sun, 8 May 2022 11:56:29 +0800 Subject: [PATCH 152/257] Added Paste Pattern Function Allows for copying and pasting patterns to highlighted notes, including LNs and chords (Vertical Position optional). Accessible via Ctrl+Shift+V. --- README.md | 3 +- iBMSC/EditorPersistent.vb | 2 + iBMSC/EditorUndoRedo.vb | 7 +- iBMSC/ImageButtonsSmall/x16PastePattern.png | Bin 0 -> 6012 bytes iBMSC/MainWindow.designer.vb | 68 +++-- iBMSC/MainWindow.vb | 294 ++++++++++++++------ iBMSC/My Project/Resources.Designer.vb | 10 + iBMSC/My Project/Resources.resx | 109 ++++---- iBMSC/Option Windows/OpGeneral.Designer.vb | 140 ++++++---- iBMSC/Option Windows/OpGeneral.vb | 3 +- iBMSC/PanelEvents.vb | 2 + iBMSC/TimeSelectionOps.vb | 4 + 12 files changed, 422 insertions(+), 220 deletions(-) create mode 100644 iBMSC/ImageButtonsSmall/x16PastePattern.png diff --git a/README.md b/README.md index 6af730397..675e73528 100644 --- a/README.md +++ b/README.md @@ -49,6 +49,7 @@ Listed in the order added. * Added support to move notes to their template position. * Added ability to convert notes to Long notes in a series by VPosition or by column. * Added ability to convert between LNObj's and NT LN's. +* Added ability to copy and paste patterns to highlighted notes. Accessible via Ctrl+Shift+V. ## Keyboard shortcuts * While rebinding keys is now supported, the default keybinding has also been changed to allow note placement between D1 and D8 or only on PMS lanes in PMS mode: @@ -84,7 +85,7 @@ Listed in the order added. * Added shortcut for inserting/removing space with Time Selection Tool (Ctrl+Insert for measure only, Shift+Insert for notes only, and Ctrl+Shift+Insert for both) * Added shortcut for techincal error check (Ctrl+Alt+E by default) * Added shortcut for keybinding options (Shift+F10) -* Added experimental feature shortcuts (Preview highlighted notes - Shift+F4) +* Added shortcut for an experimental feature (Preview highlighted notes - Shift+F4) ## New dialog/option boxes diff --git a/iBMSC/EditorPersistent.vb b/iBMSC/EditorPersistent.vb index 556d4be94..f8fdddf45 100644 --- a/iBMSC/EditorPersistent.vb +++ b/iBMSC/EditorPersistent.vb @@ -100,6 +100,7 @@ Partial Public Class MainWindow .WriteAttributeString("gLNGap", gLNGap.ToString()) .WriteAttributeString("COverridesSaveOption", COverridesSaveOption.ToString()) .WriteAttributeString("TemplateSnapToVPosition", TemplateSnapToVPosition.ToString()) + .WriteAttributeString("PastePatternToVPosition", PastePatternToVPosition.ToString()) .WriteEndElement() .WriteStartElement("Save") @@ -464,6 +465,7 @@ Partial Public Class MainWindow XMLLoadAttribute(.GetAttribute("gLNGap"), gLNGap) XMLLoadAttribute(.GetAttribute("COverridesSaveOption"), COverridesSaveOption) XMLLoadAttribute(.GetAttribute("TemplateSnapToVPosition"), TemplateSnapToVPosition) + XMLLoadAttribute(.GetAttribute("PastePatternToVPosition"), PastePatternToVPosition) End With End If diff --git a/iBMSC/EditorUndoRedo.vb b/iBMSC/EditorUndoRedo.vb index 50ef3964f..48b580139 100644 --- a/iBMSC/EditorUndoRedo.vb +++ b/iBMSC/EditorUndoRedo.vb @@ -132,12 +132,7 @@ Partial Public Class MainWindow Case UndoRedo.opNT Dim xCmd As UndoRedo.NT = CType(sCmd, UndoRedo.NT) NTInput = xCmd.BecomeNT - TBNTInput.Checked = NTInput - mnNTInput.Checked = NTInput - POBLongObjNT.Visible = NTInput - POBLongNTObj.Visible = NTInput - POBLong.Visible = Not NTInput - POBLongShort.Visible = Not NTInput + RefreshItemsByNTInput() bAdjustLength = False bAdjustUpper = False diff --git a/iBMSC/ImageButtonsSmall/x16PastePattern.png b/iBMSC/ImageButtonsSmall/x16PastePattern.png new file mode 100644 index 0000000000000000000000000000000000000000..d8bbddb36e2800467c7b7f9d9d940330faa90f22 GIT binary patch literal 6012 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 0 And xTempVP < GetMaxVPosition() Then - ReDim Preserve Notes(UBound(Notes) + 1) + ReDim Preserve Notes(Notes.Length) With Notes(UBound(Notes)) .ColumnIndex = CInt(xStrSub(0)) .VPosition = xTempVP @@ -762,28 +762,8 @@ Public Class MainWindow Next 'convert - If NTInput Then - ConvertBMSE2NT() - - For xI1 = 1 To UBound(Notes) - Notes(xI1 - 1) = Notes(xI1) - Next - ReDim Preserve Notes(UBound(Notes) - 1) - - Dim xKn() As Note = Notes - Notes = xKbu - - Dim xIStart As Integer = Notes.Length - ReDim Preserve Notes(UBound(Notes) + xKn.Length) - - For xI1 = xIStart To UBound(Notes) - Notes(xI1) = xKn(xI1 - xIStart) - Next - End If - + If NTInput Then ConvertBMSE2NT(NoteLen) ElseIf xStrLine(0) = "iBMSC Clipboard Data xNT" Then - If Not NTInput Then ReDim Preserve Notes(0) - 'paste Dim xStrSub() As String For xI1 = 1 To UBound(xStrLine) @@ -791,7 +771,7 @@ Public Class MainWindow xStrSub = Split(xStrLine(xI1), " ") xTempVP = Val(xStrSub(1)) + MeasureBottom(MeasureAtDisplacement(-xVS) + 1) If UBound(xStrSub) = 5 And xTempVP >= 0 And xTempVP < GetMaxVPosition() Then - ReDim Preserve Notes(UBound(Notes) + 1) + ReDim Preserve Notes(Notes.Length) With Notes(UBound(Notes)) .ColumnIndex = CInt(xStrSub(0)) .VPosition = xTempVP @@ -805,27 +785,118 @@ Public Class MainWindow Next 'convert - If Not NTInput Then - ConvertNT2BMSE() + If Not NTInput Then ConvertNT2BMSE(NoteLen) + ElseIf xStrLine(0) = "BMSE ClipBoard Object Data Format" Then + 'paste + For xI1 = 1 To UBound(xStrLine) + ' zdr: holy crap this is obtuse + Dim posStr = Mid(xStrLine(xI1), 5, 7) + Dim vPos = Val(posStr) + MeasureBottom(MeasureAtDisplacement(-xVS) + 1) - For xI1 = 1 To UBound(Notes) - Notes(xI1 - 1) = Notes(xI1) - Next - ReDim Preserve Notes(UBound(Notes) - 1) + Dim bmsIdent = Mid(xStrLine(xI1), 1, 3) + Dim lineCol = BMSEChannelToColumnIndex(bmsIdent) - Dim xKn() As Note = Notes - Notes = xKbu + Dim Value = Val(Mid(xStrLine(xI1), 12)) * 10000 - Dim xIStart As Integer = Notes.Length - ReDim Preserve Notes(UBound(Notes) + xKn.Length) + Dim attribute = Mid(xStrLine(xI1), 4, 1) - For xI1 = xIStart To UBound(Notes) - Notes(xI1) = xKn(xI1 - xIStart) - Next - End If + Dim validCol = Len(xStrLine(xI1)) > 11 And lineCol > 0 + Dim inRange = vPos >= 0 And vPos < GetMaxVPosition() + If validCol And inRange Then + ReDim Preserve Notes(Notes.Length) + + With Notes(UBound(Notes)) + .ColumnIndex = lineCol + .VPosition = vPos + .Value = CLng(Value) + .LongNote = attribute = "2" + .Hidden = attribute = "1" + .Selected = xSelected And nEnabled(.ColumnIndex) + End With + End If + Next + + 'convert + If NTInput Then ConvertBMSE2NT(NoteLen) + End If + + If SortAndUpdatePairing Then SortByVPositionInsertion() : UpdatePairing() + CalculateTotalPlayableNotes() + End Sub + + Private Function GetNotesFromClipboard() As Note() + Dim xStrLine() As String = Split(Clipboard.GetText, vbCrLf) + + Dim xVS As Integer = CInt(PanelVScroll(PanelFocus)) + Dim xTempVP As Double + Dim NoteLen As Integer = Notes.Length + Dim NoteCB As Note() + If xStrLine(0) = "iBMSC Clipboard Data" Then + Dim NotesBK As Note() = CType(Notes.Clone(), Note()) + ReDim Preserve Notes(0) + + 'paste + Dim xStrSub() As String + For xI1 = 1 To UBound(xStrLine) + If xStrLine(xI1).Trim = "" Then Continue For + xStrSub = Split(xStrLine(xI1), " ") + xTempVP = Val(xStrSub(1)) + MeasureBottom(MeasureAtDisplacement(-xVS) + 1) + If UBound(xStrSub) = 5 And xTempVP >= 0 And xTempVP < GetMaxVPosition() Then + ReDim Preserve Notes(Notes.Length) + With Notes(UBound(Notes)) + .ColumnIndex = CInt(xStrSub(0)) + .VPosition = xTempVP + .Value = CLng(xStrSub(2)) + .LongNote = CBool(Val(xStrSub(3))) + .Hidden = CBool(Val(xStrSub(4))) + .Landmine = CBool(Val(xStrSub(5))) + End With + End If + Next + + 'convert + ' Wow this code is fucking shit + UpdatePairing() + If NTInput Then ConvertBMSE2NT() + ReDim NoteCB(UBound(Notes) - 1) + + For xI1 = 1 To UBound(Notes) + NoteCB(xI1 - 1) = Notes(xI1) + Next + Notes = NotesBK + Return NoteCB + ElseIf xStrLine(0) = "iBMSC Clipboard Data xNT" Then + 'paste + Dim xStrSub() As String + For xI1 = 1 To UBound(xStrLine) + If xStrLine(xI1).Trim = "" Then Continue For + xStrSub = Split(xStrLine(xI1), " ") + xTempVP = Val(xStrSub(1)) + MeasureBottom(MeasureAtDisplacement(-xVS) + 1) + If UBound(xStrSub) = 5 And xTempVP >= 0 And xTempVP < GetMaxVPosition() Then + ReDim Preserve Notes(Notes.Length) + With Notes(UBound(Notes)) + .ColumnIndex = CInt(xStrSub(0)) + .VPosition = xTempVP + .Value = CLng(xStrSub(2)) + .Length = Val(xStrSub(3)) + .Hidden = CBool(Val(xStrSub(4))) + .Landmine = CBool(Val(xStrSub(5))) + End With + End If + Next + + 'convert + If Not NTInput Then ConvertNT2BMSE(NoteLen) + ReDim NoteCB(UBound(Notes) - NoteLen) + For xI1 = NoteLen To UBound(Notes) + NoteCB(xI1 - NoteLen) = Notes(xI1) + Next + ReDim Preserve Notes(NoteLen - 1) + Return NoteCB ElseIf xStrLine(0) = "BMSE ClipBoard Object Data Format" Then - If NTInput Then ReDim Preserve Notes(0) + Dim NotesBK As Note() = CType(Notes.Clone(), Note()) + If Not NTInput Then ReDim Preserve Notes(0) 'paste For xI1 = 1 To UBound(xStrLine) @@ -843,7 +914,7 @@ Public Class MainWindow Dim validCol = Len(xStrLine(xI1)) > 11 And lineCol > 0 Dim inRange = vPos >= 0 And vPos < GetMaxVPosition() If validCol And inRange Then - ReDim Preserve Notes(UBound(Notes) + 1) + ReDim Preserve Notes(Notes.Length) With Notes(UBound(Notes)) .ColumnIndex = lineCol @@ -851,35 +922,24 @@ Public Class MainWindow .Value = CLng(Value) .LongNote = attribute = "2" .Hidden = attribute = "1" - .Selected = xSelected And nEnabled(.ColumnIndex) End With End If Next 'convert - If NTInput Then - ConvertBMSE2NT() + UpdatePairing() + If NTInput Then ConvertBMSE2NT() + ReDim NoteCB(UBound(Notes) - 1) - For xI1 = 1 To UBound(Notes) - Notes(xI1 - 1) = Notes(xI1) - Next - ReDim Preserve Notes(UBound(Notes) - 1) - - Dim xKn() As Note = Notes - Notes = xKbu - - Dim xIStart As Integer = Notes.Length - ReDim Preserve Notes(UBound(Notes) + xKn.Length) - - For xI1 = xIStart To UBound(Notes) - Notes(xI1) = xKn(xI1 - xIStart) - Next - End If + For xI1 = 1 To UBound(Notes) + NoteCB(xI1 - 1) = Notes(xI1) + Next + Notes = NotesBK + Return NoteCB End If - If SortAndUpdatePairing Then SortByVPositionInsertion() : UpdatePairing() - CalculateTotalPlayableNotes() - End Sub + Return Nothing + End Function Private Sub CopyNotes(Optional ByVal Unselect As Boolean = True) Dim xStrAll As String = "iBMSC Clipboard Data" & IIf(NTInput, " xNT", "").ToString() @@ -2425,6 +2485,64 @@ Public Class MainWindow CalculateGreatestVPosition() End Sub + Private Sub TBPastePattern_Click(ByVal sender As Object, ByVal e As EventArgs) Handles mnPastePattern.Click, TBPastePattern.Click + Dim xUndo As UndoRedo.LinkedURCmd = Nothing + Dim xRedo As UndoRedo.LinkedURCmd = New UndoRedo.Void + Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo + + ' Preferable to work under NT settings + Dim NTInputTemp As Boolean = NTInput + If Not NTInputTemp Then + NTInput = True + RedoRemoveNoteAll(False, xUndo, xRedo) + ConvertBMSE2NT() + RedoAddNoteAll(False, xUndo, xRedo) + End If + + Dim NotesCB As Note() = GetNotesFromClipboard() + If NotesCB Is Nothing Then + If Not NTInputTemp Then ConvertNT2BMSE() + Exit Sub + End If + + ' Count selected notes + Dim xLS As Integer = (From note In Notes Where note.Selected Select note).Count + + If NotesCB.Length <> xLS Then + Dim xDiag = MsgBox("Warning: The clipboard note count is different from the highlighted note count. Continue?", MsgBoxStyle.YesNo) + If xDiag = MsgBoxResult.No Then Exit Sub + End If + + Dim xICB As Integer = -1 + For xIN = 1 To UBound(Notes) + If Not Notes(xIN).Selected OrElse Notes(xIN).Ghost Then Continue For + + xICB = (xICB + 1) Mod NotesCB.Length + Dim xCol = NotesCB(xICB).ColumnIndex + Dim xVPos = CDbl(IIf(PastePatternToVPosition, NotesCB(xICB).VPosition, Notes(xIN).VPosition)) + Dim xLen = NotesCB(xICB).Length + + RedoMoveNote(Notes(xIN), xCol, xVPos, xUndo, xRedo) + Notes(xIN).ColumnIndex = xCol + Notes(xIN).VPosition = xVPos + + RedoLongNoteModify(Notes(xIN), Notes(xIN).VPosition, xLen, xUndo, xRedo) + Notes(xIN).Length = xLen + Next + + If Not NTInputTemp Then + NTInput = False + RedoRemoveNoteAll(False, xUndo, xRedo) + ConvertNT2BMSE() + RedoAddNoteAll(False, xUndo, xRedo) + End If + + AddUndo(xUndo, xBaseRedo.Next) + + UpdatePairing() + RefreshPanelAll() + End Sub + Private Sub LBeatCopyPaste(ByVal sender As System.Object, ByVal e As System.Windows.Forms.PreviewKeyDownEventArgs) Handles LBeat.PreviewKeyDown Select Case e.KeyCode Case Keys.C @@ -3550,12 +3668,14 @@ Public Class MainWindow CalculateTotalPlayableNotes() End Sub - Private Sub ConvertNT2BMSE() + Private Sub ConvertNT2BMSE(Optional xIFrom As Integer = 1) ReDim SelectedNotes(-1) - Dim xK(0) As Note - xK(0) = Notes(0) + Dim xK(xIFrom - 1) As Note + For xI = 0 To xIFrom - 1 + xK(xI) = Notes(xI) + Next - For xI1 As Integer = 1 To UBound(Notes) + For xI1 As Integer = xIFrom To UBound(Notes) ReDim Preserve xK(UBound(xK) + 1) With xK(UBound(xK)) .ColumnIndex = Notes(xI1).ColumnIndex @@ -3603,14 +3723,6 @@ Public Class MainWindow End Sub Private Sub TBNTInput_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBNTInput.Click, mnNTInput.Click - 'Dim xUndo As String = "NT_" & CInt(NTInput) & "_0" & vbCrLf & "KZ" & vbCrLf & sCmdKsAll(False) - 'Dim xRedo As String = "NT_" & CInt(Not NTInput) & "_1" - Dim xUndo As UndoRedo.LinkedURCmd = Nothing - Dim xRedo As UndoRedo.LinkedURCmd = New UndoRedo.Void - Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo - - Me.RedoRemoveNoteAll(False, xUndo, xRedo) - If TypeOf sender Is ToolStripButton Then Dim senderC As ToolStripButton = CType(sender, ToolStripButton) NTInput = senderC.Checked @@ -3619,16 +3731,16 @@ Public Class MainWindow NTInput = senderC.Checked End If - TBNTInput.Checked = NTInput - mnNTInput.Checked = NTInput - POBLongObjNT.Visible = NTInput - POBLongNTObj.Visible = NTInput - POBLong.Visible = Not NTInput - POBLongShort.Visible = Not NTInput + RefreshItemsByNTInput() bAdjustLength = False bAdjustUpper = False + Dim xUndo As UndoRedo.LinkedURCmd = Nothing + Dim xRedo As UndoRedo.LinkedURCmd = New UndoRedo.Void + Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo + + Me.RedoRemoveNoteAll(False, xUndo, xRedo) Me.RedoNT(NTInput, False, xUndo, xRedo) If NTInput Then ConvertBMSE2NT() @@ -3641,6 +3753,15 @@ Public Class MainWindow RefreshPanelAll() End Sub + Private Sub RefreshItemsByNTInput() + TBNTInput.Checked = NTInput + mnNTInput.Checked = NTInput + POBLongObjNT.Visible = NTInput + POBLongNTObj.Visible = NTInput + POBLong.Visible = Not NTInput + POBLongShort.Visible = Not NTInput + End Sub + Private Sub THBPM_ValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles THBPM.ValueChanged If Notes IsNot Nothing Then Notes(0).Value = CLng(THBPM.Value * 10000) : RefreshPanelAll() If IsSaved Then SetIsSaved(False) @@ -3809,7 +3930,7 @@ Public Class MainWindow End Select Dim xDiag As New OpGeneral(gWheel, gPgUpDn, MiddleButtonMoveMethod, xTE, CInt(192.0R / BMSGridLimit), ErrorJackBPM, ErrorJackTH, gLNGap, - AutoSaveInterval, BeepWhileSaved, BPMx1296, STOPx1296, AudioLine, TemplateSnapToVPosition, + AutoSaveInterval, BeepWhileSaved, BPMx1296, STOPx1296, AudioLine, TemplateSnapToVPosition, PastePatternToVPosition, AutoFocusMouseEnter, FirstClickDisabled, ClickStopPreview) If xDiag.ShowDialog() = Windows.Forms.DialogResult.OK Then @@ -3830,6 +3951,7 @@ Public Class MainWindow STOPx1296 = .cStop1296.Checked AudioLine = .cAudioLine.Checked TemplateSnapToVPosition = .cTemplateSnapToVPosition.Checked + PastePatternToVPosition = .cPastePatternToVPosition.Checked AutoFocusMouseEnter = .cMEnterFocus.Checked FirstClickDisabled = .cMClickFocus.Checked ClickStopPreview = .cMStopPreview.Checked diff --git a/iBMSC/My Project/Resources.Designer.vb b/iBMSC/My Project/Resources.Designer.vb index c2589e1f7..25bf88a86 100644 --- a/iBMSC/My Project/Resources.Designer.vb +++ b/iBMSC/My Project/Resources.Designer.vb @@ -765,6 +765,16 @@ Namespace My.Resources End Get End Property + ''' + ''' Looks up a localized resource of type System.Drawing.Bitmap. + ''' + Friend ReadOnly Property x16PastePattern() As System.Drawing.Bitmap + Get + Dim obj As Object = ResourceManager.GetObject("x16PastePattern", resourceCulture) + Return CType(obj,System.Drawing.Bitmap) + End Get + End Property + ''' ''' Looks up a localized resource of type System.Drawing.Bitmap. ''' diff --git a/iBMSC/My Project/Resources.resx b/iBMSC/My Project/Resources.resx index 9034e7cc6..af834dd69 100644 --- a/iBMSC/My Project/Resources.resx +++ b/iBMSC/My Project/Resources.resx @@ -124,9 +124,6 @@ ..\ImageButtonsSmall\x16settings.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\About.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - ..\ImageButtonsSmall\x16Up.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -145,14 +142,14 @@ ..\Icon\icon2_16_highlight.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\ImageButtonsSmall\x16HRandom.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\ImageButtonsSmall\x16New.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\ImageButtonsSmall\CursorResizeDown.cur;System.Byte[], mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - ..\ImageButtonsSmall\x16Refresh.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\ImageButtonsSmall\x16ModifyLabel.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\SplashScreenx.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -160,9 +157,6 @@ ..\ImageButtonsSmall\x16Play.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\ImageButtonsSmall\x16Redo.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - ..\ImageButtonsSmall\x16Theme.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -172,12 +166,6 @@ ..\ImageButtonsSmall\x16CheckErrorTechnical.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\ImageButtons\ImageErrorR.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\ImageButtonsSmall\x16Copy.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - ..\ImageButtonsSmall\x16MeasureRemove.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -190,8 +178,8 @@ ..\ImageButtons\ConvertNotes.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\ImageButtonsSmall\x16Paste.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\ImageButtonsSmall\x16HRandom.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\ImageButtonsSmall\x16SaveAs.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -202,15 +190,15 @@ ..\ImageButtonsSmall\x16PreviewCheckN.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\MiscButtons\WAVSaturation.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\..\..\backup\3.4.0.12\iBMSC\ImageButtonsSmall\x16Flip.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\ImageButtonsSmall\x16Color.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\ImageButtons\ConvertNotesL.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\MiscButtons\x16Lock.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - ..\ImageButtonsSmall\Expand.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -220,12 +208,18 @@ ..\ImageButtonsSmall\x16SRandom.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\ImageButtonsSmall\x16GeneralOptions.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + ..\MiscButtons\WAVPrecision.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\ImageButtonsSmall\x16Find.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\ImageButtonsSmall\x16Paste.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + ..\ImageButtonsSmall\x16ShowFileNameN.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -235,11 +229,14 @@ ..\ImageButtons\ConvertNotesH.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\ImageButtonsSmall\CursorResizeLeft.cur;System.Byte[], mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + ..\MiscButtons\lgpartition.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\ImageButtonsSmall\x16GeneralOptions.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\ImageButtonsSmall\x16Import2.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\ImageButtonsSmall\x16Import.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -256,14 +253,8 @@ ..\ImageButtonsSmall\x16Mirror.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\ImageButtonsSmall\CursorResizeLeft.cur;System.Byte[], mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - ..\ImageButtonsSmall\x16Import2.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\ImageButtonsSmall\x16ModifyLabelY.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\About.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\ImageButtonsSmall\x16Associate.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -295,8 +286,8 @@ ..\O2Mania.Theme.xml;System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-16 - - ..\MiscButtons\WAVOffset.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\ImageButtonsSmall\x16Key.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\ImageButtons\ConvertNotesHV.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -310,15 +301,24 @@ ..\ImageButtonsSmall\x16Export.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\ImageButtonsSmall\x16PreviewCheck.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + ..\ImageButtonsSmall\Collapse.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\ImageButtonsSmall\x16Help.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\ImageButtonsSmall\x16CheckError.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + ..\ImageButtons\Statistics3.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\ImageButtonsSmall\x16Pen.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + ..\TransparentBG.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -328,8 +328,8 @@ ..\ImageButtonsSmall\x16Language.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\ImageButtonsSmall\x16New.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\MiscButtons\x16Lock.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\MiscButtons\WAVWidth.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -337,6 +337,9 @@ ..\ImageButtons\ConvertNotesN.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\MiscButtons\x16PlayerBrowse.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + ..\ImageButtonsSmall\x16Storm.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -346,8 +349,8 @@ ..\MiscButtons\x16Remove.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\MiscButtons\x16PlayerBrowse.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\ImageButtonsSmall\x16Refresh.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\MiscButtons\x16Add.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -358,14 +361,14 @@ ..\MiscButtons\WAVLeft.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\ImageButtonsSmall\x16Color.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\MiscButtons\WAVSaturation.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\ImageButtonsSmall\x16Pen.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\MiscButtons\WAVOffset.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\..\..\backup\3.4.0.12\iBMSC\ImageButtonsSmall\x16Flip.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\ImageButtonsSmall\x16Copy.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\ImageButtonsSmall\x16NTInput.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -379,8 +382,8 @@ ..\ImageButtonsSmall\x16Undo.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\ImageButtonsSmall\x16PreviewCheck.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\ImageButtonsSmall\x16Redo.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\MiscButtons\WAVDuplicate.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -388,8 +391,8 @@ ..\ImageButtonsSmall\x16Stop.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\ImageButtonsSmall\x16CheckError.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\ImageButtonsSmall\x16ModifyLabelY.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\ImageButtons\Shortcut.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -415,13 +418,13 @@ ..\ImageButtonsSmall\x16Save.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\ImageButtonsSmall\x16ModifyLabel.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\ImageButtons\ImageErrorR.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\MiscButtons\lgwidth.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\ImageButtonsSmall\x16Key.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\ImageButtonsSmall\x16PastePattern.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a \ No newline at end of file diff --git a/iBMSC/Option Windows/OpGeneral.Designer.vb b/iBMSC/Option Windows/OpGeneral.Designer.vb index 85aeb3c43..483bf1dbf 100644 --- a/iBMSC/Option Windows/OpGeneral.Designer.vb +++ b/iBMSC/Option Windows/OpGeneral.Designer.vb @@ -66,6 +66,8 @@ Partial Class OpGeneral Me.TableLayoutPanel3 = New System.Windows.Forms.TableLayoutPanel() Me.TableLayoutPanel4 = New System.Windows.Forms.TableLayoutPanel() Me.LabelTHLN = New System.Windows.Forms.Label() + Me.TableLayoutPanel5 = New System.Windows.Forms.TableLayoutPanel() + Me.cPastePatternToVPosition = New System.Windows.Forms.CheckBox() Me.TableLayoutPanel1.SuspendLayout() CType(Me.PictureBox1, System.ComponentModel.ISupportInitialize).BeginInit() CType(Me.NAutoSave, System.ComponentModel.ISupportInitialize).BeginInit() @@ -77,6 +79,7 @@ Partial Class OpGeneral CType(Me.NLNGap, System.ComponentModel.ISupportInitialize).BeginInit() Me.TableLayoutPanel3.SuspendLayout() Me.TableLayoutPanel4.SuspendLayout() + Me.TableLayoutPanel5.SuspendLayout() Me.SuspendLayout() ' 'TableLayoutPanel1 @@ -87,7 +90,7 @@ Partial Class OpGeneral Me.TableLayoutPanel1.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50.0!)) Me.TableLayoutPanel1.Controls.Add(Me.OK_Button, 0, 0) Me.TableLayoutPanel1.Controls.Add(Me.Cancel_Button, 1, 0) - Me.TableLayoutPanel1.Location = New System.Drawing.Point(229, 595) + Me.TableLayoutPanel1.Location = New System.Drawing.Point(229, 618) Me.TableLayoutPanel1.Name = "TableLayoutPanel1" Me.TableLayoutPanel1.RowCount = 1 Me.TableLayoutPanel1.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50.0!)) @@ -120,7 +123,7 @@ Partial Class OpGeneral Me.CWheel.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList Me.CWheel.FormattingEnabled = True Me.CWheel.Items.AddRange(New Object() {"1", "1 / 2", "1 / 3", "1 / 4"}) - Me.CWheel.Location = New System.Drawing.Point(154, 401) + Me.CWheel.Location = New System.Drawing.Point(154, 424) Me.CWheel.Name = "CWheel" Me.CWheel.Size = New System.Drawing.Size(237, 23) Me.CWheel.TabIndex = 101 @@ -139,7 +142,7 @@ Partial Class OpGeneral ' Me.Label1.Anchor = CType(((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left) _ Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) - Me.Label1.Location = New System.Drawing.Point(12, 403) + Me.Label1.Location = New System.Drawing.Point(12, 426) Me.Label1.Name = "Label1" Me.Label1.Size = New System.Drawing.Size(136, 17) Me.Label1.TabIndex = 100 @@ -175,14 +178,14 @@ Partial Class OpGeneral ' 'cBeep ' - Me.cBeep.Anchor = CType(((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left) _ - Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) Me.cBeep.AutoSize = True Me.cBeep.Checked = True Me.cBeep.CheckState = System.Windows.Forms.CheckState.Checked - Me.cBeep.Location = New System.Drawing.Point(32, 249) + Me.TableLayoutPanel5.SetColumnSpan(Me.cBeep, 3) + Me.cBeep.Dock = System.Windows.Forms.DockStyle.Left + Me.cBeep.Location = New System.Drawing.Point(3, 29) Me.cBeep.Name = "cBeep" - Me.cBeep.Size = New System.Drawing.Size(116, 19) + Me.cBeep.Size = New System.Drawing.Size(116, 20) Me.cBeep.TabIndex = 12 Me.cBeep.Text = "Beep while saved" Me.cBeep.UseVisualStyleBackColor = True @@ -192,7 +195,7 @@ Partial Class OpGeneral Me.PictureBox1.Anchor = CType(((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left) _ Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) Me.PictureBox1.BackColor = System.Drawing.Color.FromArgb(CType(CType(64, Byte), Integer), CType(CType(64, Byte), Integer), CType(CType(64, Byte), Integer)) - Me.PictureBox1.Location = New System.Drawing.Point(20, 385) + Me.PictureBox1.Location = New System.Drawing.Point(20, 408) Me.PictureBox1.Name = "PictureBox1" Me.PictureBox1.Size = New System.Drawing.Size(375, 1) Me.PictureBox1.TabIndex = 47 @@ -200,24 +203,24 @@ Partial Class OpGeneral ' 'cBpm1296 ' - Me.cBpm1296.Anchor = CType(((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left) _ - Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) Me.cBpm1296.AutoSize = True - Me.cBpm1296.Location = New System.Drawing.Point(32, 274) + Me.TableLayoutPanel5.SetColumnSpan(Me.cBpm1296, 3) + Me.cBpm1296.Dock = System.Windows.Forms.DockStyle.Left + Me.cBpm1296.Location = New System.Drawing.Point(3, 55) Me.cBpm1296.Name = "cBpm1296" - Me.cBpm1296.Size = New System.Drawing.Size(254, 19) + Me.cBpm1296.Size = New System.Drawing.Size(254, 20) Me.cBpm1296.TabIndex = 13 Me.cBpm1296.Text = "Extend number of multi-byte BPMs to 1296" Me.cBpm1296.UseVisualStyleBackColor = True ' 'cStop1296 ' - Me.cStop1296.Anchor = CType(((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left) _ - Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) Me.cStop1296.AutoSize = True - Me.cStop1296.Location = New System.Drawing.Point(32, 299) + Me.TableLayoutPanel5.SetColumnSpan(Me.cStop1296, 3) + Me.cStop1296.Dock = System.Windows.Forms.DockStyle.Left + Me.cStop1296.Location = New System.Drawing.Point(3, 81) Me.cStop1296.Name = "cStop1296" - Me.cStop1296.Size = New System.Drawing.Size(197, 19) + Me.cStop1296.Size = New System.Drawing.Size(197, 20) Me.cStop1296.TabIndex = 14 Me.cStop1296.Text = "Extend number of STOPs to 1296" Me.cStop1296.UseVisualStyleBackColor = True @@ -227,7 +230,7 @@ Partial Class OpGeneral Me.cMEnterFocus.Anchor = CType(((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left) _ Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) Me.cMEnterFocus.AutoSize = True - Me.cMEnterFocus.Location = New System.Drawing.Point(34, 511) + Me.cMEnterFocus.Location = New System.Drawing.Point(34, 534) Me.cMEnterFocus.Name = "cMEnterFocus" Me.cMEnterFocus.Size = New System.Drawing.Size(322, 19) Me.cMEnterFocus.TabIndex = 106 @@ -239,7 +242,7 @@ Partial Class OpGeneral Me.cMClickFocus.Anchor = CType(((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left) _ Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) Me.cMClickFocus.AutoSize = True - Me.cMClickFocus.Location = New System.Drawing.Point(34, 536) + Me.cMClickFocus.Location = New System.Drawing.Point(34, 559) Me.cMClickFocus.Name = "cMClickFocus" Me.cMClickFocus.Size = New System.Drawing.Size(293, 19) Me.cMClickFocus.TabIndex = 107 @@ -268,7 +271,7 @@ Partial Class OpGeneral ' Me.Label5.Anchor = CType(((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left) _ Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) - Me.Label5.Location = New System.Drawing.Point(12, 432) + Me.Label5.Location = New System.Drawing.Point(12, 455) Me.Label5.Name = "Label5" Me.Label5.Size = New System.Drawing.Size(136, 17) Me.Label5.TabIndex = 102 @@ -282,7 +285,7 @@ Partial Class OpGeneral Me.CPgUpDn.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList Me.CPgUpDn.FormattingEnabled = True Me.CPgUpDn.Items.AddRange(New Object() {"8", "6", "4", "3", "2", "1", "1 / 2"}) - Me.CPgUpDn.Location = New System.Drawing.Point(154, 430) + Me.CPgUpDn.Location = New System.Drawing.Point(154, 453) Me.CPgUpDn.Name = "CPgUpDn" Me.CPgUpDn.Size = New System.Drawing.Size(237, 23) Me.CPgUpDn.TabIndex = 103 @@ -292,35 +295,33 @@ Partial Class OpGeneral Me.NAutoSave.Anchor = CType(((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left) _ Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) Me.NAutoSave.DecimalPlaces = 1 - Me.NAutoSave.Location = New System.Drawing.Point(171, 222) + Me.NAutoSave.Location = New System.Drawing.Point(191, 3) Me.NAutoSave.Maximum = New Decimal(New Integer() {60, 0, 0, 0}) Me.NAutoSave.Minimum = New Decimal(New Integer() {1, 0, 0, 0}) Me.NAutoSave.Name = "NAutoSave" - Me.NAutoSave.Size = New System.Drawing.Size(62, 23) + Me.NAutoSave.Size = New System.Drawing.Size(88, 23) Me.NAutoSave.TabIndex = 11 Me.NAutoSave.Value = New Decimal(New Integer() {2, 0, 0, 0}) ' 'Label7 ' - Me.Label7.Anchor = CType(((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left) _ - Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) - Me.Label7.Location = New System.Drawing.Point(239, 224) + Me.Label7.Dock = System.Windows.Forms.DockStyle.Left + Me.Label7.Location = New System.Drawing.Point(285, 0) Me.Label7.Name = "Label7" - Me.Label7.Size = New System.Drawing.Size(73, 17) + Me.Label7.Size = New System.Drawing.Size(73, 26) Me.Label7.TabIndex = 59 Me.Label7.Text = "minutes" Me.Label7.TextAlign = System.Drawing.ContentAlignment.MiddleLeft ' 'cAutoSave ' - Me.cAutoSave.Anchor = CType(((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left) _ - Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) Me.cAutoSave.AutoSize = True Me.cAutoSave.Checked = True Me.cAutoSave.CheckState = System.Windows.Forms.CheckState.Checked - Me.cAutoSave.Location = New System.Drawing.Point(32, 224) + Me.cAutoSave.Dock = System.Windows.Forms.DockStyle.Left + Me.cAutoSave.Location = New System.Drawing.Point(3, 3) Me.cAutoSave.Name = "cAutoSave" - Me.cAutoSave.Size = New System.Drawing.Size(76, 19) + Me.cAutoSave.Size = New System.Drawing.Size(76, 20) Me.cAutoSave.TabIndex = 10 Me.cAutoSave.Text = "AutoSave" Me.cAutoSave.UseVisualStyleBackColor = True @@ -332,7 +333,7 @@ Partial Class OpGeneral Me.cMStopPreview.AutoSize = True Me.cMStopPreview.Checked = True Me.cMStopPreview.CheckState = System.Windows.Forms.CheckState.Checked - Me.cMStopPreview.Location = New System.Drawing.Point(34, 561) + Me.cMStopPreview.Location = New System.Drawing.Point(34, 584) Me.cMStopPreview.Name = "cMStopPreview" Me.cMStopPreview.Size = New System.Drawing.Size(253, 19) Me.cMStopPreview.TabIndex = 108 @@ -381,7 +382,7 @@ Partial Class OpGeneral ' Me.Label3.Anchor = CType(((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left) _ Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) - Me.Label3.Location = New System.Drawing.Point(12, 460) + Me.Label3.Location = New System.Drawing.Point(12, 483) Me.Label3.Name = "Label3" Me.Label3.Size = New System.Drawing.Size(136, 17) Me.Label3.TabIndex = 104 @@ -397,7 +398,7 @@ Partial Class OpGeneral Me.FlowLayoutPanel1.Controls.Add(Me.rMiddleAuto) Me.FlowLayoutPanel1.Controls.Add(Me.rMiddleDrag) Me.FlowLayoutPanel1.FlowDirection = System.Windows.Forms.FlowDirection.TopDown - Me.FlowLayoutPanel1.Location = New System.Drawing.Point(154, 459) + Me.FlowLayoutPanel1.Location = New System.Drawing.Point(154, 482) Me.FlowLayoutPanel1.Name = "FlowLayoutPanel1" Me.FlowLayoutPanel1.Size = New System.Drawing.Size(141, 38) Me.FlowLayoutPanel1.TabIndex = 105 @@ -497,24 +498,24 @@ Partial Class OpGeneral ' 'cAudioLine ' - Me.cAudioLine.Anchor = CType(((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left) _ - Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) Me.cAudioLine.AutoSize = True - Me.cAudioLine.Location = New System.Drawing.Point(32, 324) + Me.TableLayoutPanel5.SetColumnSpan(Me.cAudioLine, 3) + Me.cAudioLine.Dock = System.Windows.Forms.DockStyle.Left + Me.cAudioLine.Location = New System.Drawing.Point(3, 107) Me.cAudioLine.Name = "cAudioLine" - Me.cAudioLine.Size = New System.Drawing.Size(233, 19) + Me.cAudioLine.Size = New System.Drawing.Size(233, 20) Me.cAudioLine.TabIndex = 14 Me.cAudioLine.Text = "Display audio lines during note preview" Me.cAudioLine.UseVisualStyleBackColor = True ' 'cTemplateSnapToVPosition ' - Me.cTemplateSnapToVPosition.Anchor = CType(((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left) _ - Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) Me.cTemplateSnapToVPosition.AutoSize = True - Me.cTemplateSnapToVPosition.Location = New System.Drawing.Point(32, 349) + Me.TableLayoutPanel5.SetColumnSpan(Me.cTemplateSnapToVPosition, 3) + Me.cTemplateSnapToVPosition.Dock = System.Windows.Forms.DockStyle.Left + Me.cTemplateSnapToVPosition.Location = New System.Drawing.Point(3, 133) Me.cTemplateSnapToVPosition.Name = "cTemplateSnapToVPosition" - Me.cTemplateSnapToVPosition.Size = New System.Drawing.Size(326, 19) + Me.cTemplateSnapToVPosition.Size = New System.Drawing.Size(326, 20) Me.cTemplateSnapToVPosition.TabIndex = 111 Me.cTemplateSnapToVPosition.Text = "Snap to Vertical Position for Moving to Template Position" Me.cTemplateSnapToVPosition.UseVisualStyleBackColor = True @@ -584,33 +585,68 @@ Partial Class OpGeneral Me.LabelTHLN.Text = "bars" Me.LabelTHLN.TextAlign = System.Drawing.ContentAlignment.MiddleLeft ' + 'TableLayoutPanel5 + ' + Me.TableLayoutPanel5.Anchor = CType(((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Left) _ + Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) + Me.TableLayoutPanel5.ColumnCount = 3 + Me.TableLayoutPanel5.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50.0!)) + Me.TableLayoutPanel5.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 25.0!)) + Me.TableLayoutPanel5.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 25.0!)) + Me.TableLayoutPanel5.Controls.Add(Me.cAutoSave, 0, 0) + Me.TableLayoutPanel5.Controls.Add(Me.NAutoSave, 1, 0) + Me.TableLayoutPanel5.Controls.Add(Me.cTemplateSnapToVPosition, 0, 5) + Me.TableLayoutPanel5.Controls.Add(Me.Label7, 2, 0) + Me.TableLayoutPanel5.Controls.Add(Me.cBeep, 0, 1) + Me.TableLayoutPanel5.Controls.Add(Me.cBpm1296, 0, 2) + Me.TableLayoutPanel5.Controls.Add(Me.cStop1296, 0, 3) + Me.TableLayoutPanel5.Controls.Add(Me.cAudioLine, 0, 4) + Me.TableLayoutPanel5.Controls.Add(Me.cPastePatternToVPosition, 0, 6) + Me.TableLayoutPanel5.Location = New System.Drawing.Point(15, 213) + Me.TableLayoutPanel5.Name = "TableLayoutPanel5" + Me.TableLayoutPanel5.RowCount = 7 + Me.TableLayoutPanel5.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 14.28571!)) + Me.TableLayoutPanel5.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 14.28571!)) + Me.TableLayoutPanel5.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 14.28571!)) + Me.TableLayoutPanel5.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 14.28571!)) + Me.TableLayoutPanel5.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 14.28571!)) + Me.TableLayoutPanel5.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 14.28571!)) + Me.TableLayoutPanel5.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 14.28571!)) + Me.TableLayoutPanel5.Size = New System.Drawing.Size(376, 183) + Me.TableLayoutPanel5.TabIndex = 113 + ' + 'cPastePatternToVPosition + ' + Me.cPastePatternToVPosition.AutoSize = True + Me.TableLayoutPanel5.SetColumnSpan(Me.cPastePatternToVPosition, 3) + Me.cPastePatternToVPosition.Dock = System.Windows.Forms.DockStyle.Left + Me.cPastePatternToVPosition.Location = New System.Drawing.Point(3, 159) + Me.cPastePatternToVPosition.Name = "cPastePatternToVPosition" + Me.cPastePatternToVPosition.Size = New System.Drawing.Size(259, 21) + Me.cPastePatternToVPosition.TabIndex = 111 + Me.cPastePatternToVPosition.Text = "Snap to Vertical Position for Pasting Patterns" + Me.cPastePatternToVPosition.UseVisualStyleBackColor = True + ' 'OpGeneral ' Me.AcceptButton = Me.OK_Button Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None Me.CancelButton = Me.Cancel_Button - Me.ClientSize = New System.Drawing.Size(413, 642) + Me.ClientSize = New System.Drawing.Size(413, 665) + Me.Controls.Add(Me.TableLayoutPanel5) Me.Controls.Add(Me.TableLayoutPanel3) - Me.Controls.Add(Me.cTemplateSnapToVPosition) Me.Controls.Add(Me.FlowLayoutPanel1) Me.Controls.Add(Me.Label3) Me.Controls.Add(Me.TBAssociateBML) Me.Controls.Add(Me.TBAssociateBME) Me.Controls.Add(Me.cMStopPreview) - Me.Controls.Add(Me.cAutoSave) - Me.Controls.Add(Me.Label7) - Me.Controls.Add(Me.NAutoSave) Me.Controls.Add(Me.Label5) Me.Controls.Add(Me.CPgUpDn) Me.Controls.Add(Me.TBAssociateIBMSC) Me.Controls.Add(Me.TBAssociatePMS) Me.Controls.Add(Me.cMClickFocus) Me.Controls.Add(Me.cMEnterFocus) - Me.Controls.Add(Me.cAudioLine) - Me.Controls.Add(Me.cStop1296) - Me.Controls.Add(Me.cBpm1296) Me.Controls.Add(Me.PictureBox1) - Me.Controls.Add(Me.cBeep) Me.Controls.Add(Me.TBAssociate) Me.Controls.Add(Me.Label4) Me.Controls.Add(Me.Label2) @@ -638,6 +674,8 @@ Partial Class OpGeneral CType(Me.NLNGap, System.ComponentModel.ISupportInitialize).EndInit() Me.TableLayoutPanel3.ResumeLayout(False) Me.TableLayoutPanel4.ResumeLayout(False) + Me.TableLayoutPanel5.ResumeLayout(False) + Me.TableLayoutPanel5.PerformLayout() Me.ResumeLayout(False) Me.PerformLayout() @@ -686,4 +724,6 @@ Partial Class OpGeneral Friend WithEvents TableLayoutPanel3 As TableLayoutPanel Friend WithEvents TableLayoutPanel4 As TableLayoutPanel Friend WithEvents LabelTHLN As Label + Friend WithEvents TableLayoutPanel5 As TableLayoutPanel + Friend WithEvents cPastePatternToVPosition As CheckBox End Class diff --git a/iBMSC/Option Windows/OpGeneral.vb b/iBMSC/Option Windows/OpGeneral.vb index f5a6e2f82..cfce49467 100644 --- a/iBMSC/Option Windows/OpGeneral.vb +++ b/iBMSC/Option Windows/OpGeneral.vb @@ -55,7 +55,7 @@ Public Class OpGeneral End Sub Public Sub New(ByVal xMsWheel As Integer, ByVal xPgUpDn As Integer, ByVal xMiddleButton As Integer, ByVal xTextEncoding As Integer, ByVal xGridPartition As Integer, ByVal xJackBPM As Double, ByVal xJackTH As Double, ByVal xLNGap As Double, - ByVal xAutoSave As Integer, ByVal xBeep As Boolean, ByVal xBPMx As Boolean, ByVal xSTOPx As Boolean, ByVal xAudioLine As Boolean, ByVal xTemplateSnapToVPosition As Boolean, + ByVal xAutoSave As Integer, ByVal xBeep As Boolean, ByVal xBPMx As Boolean, ByVal xSTOPx As Boolean, ByVal xAudioLine As Boolean, ByVal xTemplateSnapToVPosition As Boolean, ByVal xPastePatternToVPosition As Boolean, ByVal xMFEnter As Boolean, ByVal xMFClick As Boolean, ByVal xMStopPreview As Boolean) InitializeComponent() @@ -98,6 +98,7 @@ Public Class OpGeneral cStop1296.Checked = xSTOPx cAudioLine.Checked = xAudioLine cTemplateSnapToVPosition.Checked = xTemplateSnapToVPosition + cPastePatternToVPosition.Checked = xPastePatternToVPosition cMEnterFocus.Checked = xMFEnter cMClickFocus.Checked = xMFClick cMStopPreview.Checked = xMStopPreview diff --git a/iBMSC/PanelEvents.vb b/iBMSC/PanelEvents.vb index 157301b66..ed4ed7e4b 100644 --- a/iBMSC/PanelEvents.vb +++ b/iBMSC/PanelEvents.vb @@ -149,6 +149,8 @@ Partial Public Class MainWindow TBCopy_Click(TBCopy, New EventArgs) Case "Paste" TBPaste_Click(TBPaste, New EventArgs) + Case "Paste Pattern" + TBPastePattern_Click(mnPastePattern, New EventArgs) Case "Select All" mnSelectAll_Click(mnSelectAll, New EventArgs) Case "Select All with Hovered Note Label" diff --git a/iBMSC/TimeSelectionOps.vb b/iBMSC/TimeSelectionOps.vb index 0c924ca7c..31bb1849f 100644 --- a/iBMSC/TimeSelectionOps.vb +++ b/iBMSC/TimeSelectionOps.vb @@ -846,7 +846,9 @@ Partial Public Class MainWindow ' Change to NTInput because easier to code If Not NTInput Then + RedoRemoveNoteAll(False, xUndo, xRedo) ConvertBMSE2NT() + RedoAddNoteAll(False, xUndo, xRedo) End If If vSelLength < 0 Then ' Remove space @@ -913,7 +915,9 @@ Partial Public Class MainWindow End If If Not NTInput Then + RedoRemoveNoteAll(False, xUndo, xRedo) ConvertNT2BMSE() + RedoAddNoteAll(False, xUndo, xRedo) End If End Sub End Class From 7c234970a4a1bedc6d9b3e432a4a90af9c2d952d Mon Sep 17 00:00:00 2001 From: psyk2642 <60137590+psyk2642@users.noreply.github.com> Date: Sun, 8 May 2022 12:51:20 +0800 Subject: [PATCH 153/257] Removed Val function + Code Update - The application should now be able to open maximized as well. - Removed the Val function. Not sure if I should remove CSng, Cdbl, etc. - Set the default encoding to Shift-JIS. First-time only though. --- iBMSC/BMS.vb | 4 +- iBMSC/ChartIO.vb | 8 +-- iBMSC/EditorColumns.vb | 2 +- iBMSC/EditorPersistent.vb | 6 +- iBMSC/MainWindow.vb | 98 +++++++++++++++++++++------------ iBMSC/Option Windows/OpTotal.vb | 6 +- iBMSC/TimeSelectionOps.vb | 4 +- iBMSC/Utilities.vb | 8 +-- 8 files changed, 83 insertions(+), 53 deletions(-) diff --git a/iBMSC/BMS.vb b/iBMSC/BMS.vb index 70e66ee1c..1ce7743c2 100644 --- a/iBMSC/BMS.vb +++ b/iBMSC/BMS.vb @@ -2,12 +2,12 @@ Module BMS Public Function IsChannelLongNote(ByVal I As String) As Boolean - Dim xI As Integer = CInt(Val(I)) + Dim xI As Integer = Integer.Parse(I) Return xI >= 50 And xI < 90 End Function Public Function IsChannelHidden(ByVal I As String) As Boolean - Dim xI As Integer = CInt(Val(I)) + Dim xI As Integer = Integer.Parse(I) Return (xI >= 30 And xI < 50) Or (xI >= 70 And xI < 90) End Function diff --git a/iBMSC/ChartIO.vb b/iBMSC/ChartIO.vb index 9a3c0d865..c7b62fd50 100644 --- a/iBMSC/ChartIO.vb +++ b/iBMSC/ChartIO.vb @@ -66,8 +66,8 @@ Partial Public Class MainWindow If Not xGhost AndAlso Not xComment Then ' Load header if not ghost notes and not comment notes If sLineTrim.StartsWith("#") And Mid(sLineTrim, 5, 3) = "02:" Then - Dim xIndex As Integer = CInt(Mid(sLineTrim, 2, 3)) - Dim xRatio As Double = Val(Mid(sLineTrim, 8)) + Dim xIndex As Integer = Integer.Parse(Mid(sLineTrim, 2, 3)) + Dim xRatio As Double = Double.Parse(Mid(sLineTrim, 8)) Dim xxD As Long = GetDenominator(xRatio) MeasureLength(xIndex) = xRatio * 192.0R LBeat.Items(xIndex) = Add3Zeros(xIndex) & ": " & xRatio & IIf(xxD > 10000, "", " ( " & CLng(xRatio * xxD) & " / " & xxD & " ) ").ToString() @@ -170,7 +170,7 @@ Partial Public Class MainWindow ElseIf SWIC(sLineTrim, "#LNTYPE") Then 'THLnType.Text = Mid(sLineTrim, Len("#LNTYPE") + 1).Trim - If Val(Mid(sLineTrim, Len("#LNTYPE") + 1).Trim) = 1 Then CHLnObj.SelectedIndex = 0 + If Integer.Parse(Mid(sLineTrim, Len("#LNTYPE") + 1).Trim) = 1 Then CHLnObj.SelectedIndex = 0 Continue For ElseIf SWIC(sLineTrim, "#LNOBJ") Then @@ -337,7 +337,7 @@ Partial Public Class MainWindow If sLineTrim.StartsWith("#") And Mid(sLineTrim, 5, 3) = "02:" Then Dim xIndex As Integer = CInt(Mid(sLineTrim, 2, 3)) - Dim xRatio As Double = Val(Mid(sLineTrim, 8)) + Dim xRatio As Double = CDbl(Mid(sLineTrim, 8)) MeasureLength(xIndex) = xRatio * 192.0R Continue For diff --git a/iBMSC/EditorColumns.vb b/iBMSC/EditorColumns.vb index cdc9829f6..1cdea242a 100644 --- a/iBMSC/EditorColumns.vb +++ b/iBMSC/EditorColumns.vb @@ -135,7 +135,7 @@ Partial Public Class MainWindow End Function Private Function BMSEChannelToColumnIndex(ByVal I As String) As Integer - Dim Ivalue = Val(I) + Dim Ivalue = CInt(I) If Ivalue > 100 Then Return CInt(niB + Ivalue - 101) ElseIf Ivalue < 100 And Ivalue > 0 Then diff --git a/iBMSC/EditorPersistent.vb b/iBMSC/EditorPersistent.vb index f8fdddf45..8f8bc59ef 100644 --- a/iBMSC/EditorPersistent.vb +++ b/iBMSC/EditorPersistent.vb @@ -398,14 +398,14 @@ Partial Public Class MainWindow Dim eForm As XmlElement = Root.Item("Form") If eForm IsNot Nothing Then With eForm - Select Case Val(.GetAttribute("WindowState")) - Case FormWindowState.Normal + Select Case .GetAttribute("WindowState") + Case FormWindowState.Normal.ToString() Me.WindowState = FormWindowState.Normal XMLLoadAttribute(.GetAttribute("Width"), Me.Width) XMLLoadAttribute(.GetAttribute("Height"), Me.Height) XMLLoadAttribute(.GetAttribute("Top"), Me.Top) XMLLoadAttribute(.GetAttribute("Left"), Me.Left) - Case FormWindowState.Maximized + Case FormWindowState.Maximized.ToString() Me.WindowState = FormWindowState.Maximized End Select End With diff --git a/iBMSC/MainWindow.vb b/iBMSC/MainWindow.vb index 3cbdaf684..39284049c 100644 --- a/iBMSC/MainWindow.vb +++ b/iBMSC/MainWindow.vb @@ -61,7 +61,7 @@ Public Class MainWindow 'Dim SortingMethod As Integer = 1 Dim MiddleButtonMoveMethod As Integer = 0 - Dim TextEncoding As System.Text.Encoding = System.Text.Encoding.UTF8 + Dim TextEncoding As System.Text.Encoding = System.Text.Encoding.GetEncoding("Shift-JIS") Dim DispLang As String = "" 'Display Language Dim Recent() As String = {"", "", "", "", ""} Dim NTInput As Boolean = True @@ -746,16 +746,16 @@ Public Class MainWindow For xI1 = 1 To UBound(xStrLine) If xStrLine(xI1).Trim = "" Then Continue For xStrSub = Split(xStrLine(xI1), " ") - xTempVP = Val(xStrSub(1)) + MeasureBottom(MeasureAtDisplacement(-xVS) + 1) + xTempVP = CDbl(xStrSub(1)) + MeasureBottom(MeasureAtDisplacement(-xVS) + 1) If UBound(xStrSub) = 5 And xTempVP >= 0 And xTempVP < GetMaxVPosition() Then ReDim Preserve Notes(Notes.Length) With Notes(UBound(Notes)) .ColumnIndex = CInt(xStrSub(0)) .VPosition = xTempVP .Value = CLng(xStrSub(2)) - .LongNote = CBool(Val(xStrSub(3))) - .Hidden = CBool(Val(xStrSub(4))) - .Landmine = CBool(Val(xStrSub(5))) + .LongNote = CBool(xStrSub(3)) + .Hidden = CBool(xStrSub(4)) + .Landmine = CBool(xStrSub(5)) .Selected = xSelected End With End If @@ -769,16 +769,16 @@ Public Class MainWindow For xI1 = 1 To UBound(xStrLine) If xStrLine(xI1).Trim = "" Then Continue For xStrSub = Split(xStrLine(xI1), " ") - xTempVP = Val(xStrSub(1)) + MeasureBottom(MeasureAtDisplacement(-xVS) + 1) + xTempVP = CDbl(xStrSub(1)) + MeasureBottom(MeasureAtDisplacement(-xVS) + 1) If UBound(xStrSub) = 5 And xTempVP >= 0 And xTempVP < GetMaxVPosition() Then ReDim Preserve Notes(Notes.Length) With Notes(UBound(Notes)) .ColumnIndex = CInt(xStrSub(0)) .VPosition = xTempVP .Value = CLng(xStrSub(2)) - .Length = Val(xStrSub(3)) - .Hidden = CBool(Val(xStrSub(4))) - .Landmine = CBool(Val(xStrSub(5))) + .Length = CDbl(xStrSub(3)) + .Hidden = CBool(xStrSub(4)) + .Landmine = CBool(xStrSub(5)) .Selected = xSelected End With End If @@ -791,12 +791,12 @@ Public Class MainWindow For xI1 = 1 To UBound(xStrLine) ' zdr: holy crap this is obtuse Dim posStr = Mid(xStrLine(xI1), 5, 7) - Dim vPos = Val(posStr) + MeasureBottom(MeasureAtDisplacement(-xVS) + 1) + Dim vPos = CDbl(posStr) + MeasureBottom(MeasureAtDisplacement(-xVS) + 1) Dim bmsIdent = Mid(xStrLine(xI1), 1, 3) Dim lineCol = BMSEChannelToColumnIndex(bmsIdent) - Dim Value = Val(Mid(xStrLine(xI1), 12)) * 10000 + Dim Value = CDbl(Mid(xStrLine(xI1), 12)) * 10000 Dim attribute = Mid(xStrLine(xI1), 4, 1) @@ -841,16 +841,16 @@ Public Class MainWindow For xI1 = 1 To UBound(xStrLine) If xStrLine(xI1).Trim = "" Then Continue For xStrSub = Split(xStrLine(xI1), " ") - xTempVP = Val(xStrSub(1)) + MeasureBottom(MeasureAtDisplacement(-xVS) + 1) + xTempVP = CDbl(xStrSub(1)) + MeasureBottom(MeasureAtDisplacement(-xVS) + 1) If UBound(xStrSub) = 5 And xTempVP >= 0 And xTempVP < GetMaxVPosition() Then ReDim Preserve Notes(Notes.Length) With Notes(UBound(Notes)) .ColumnIndex = CInt(xStrSub(0)) .VPosition = xTempVP .Value = CLng(xStrSub(2)) - .LongNote = CBool(Val(xStrSub(3))) - .Hidden = CBool(Val(xStrSub(4))) - .Landmine = CBool(Val(xStrSub(5))) + .LongNote = CBool(xStrSub(3)) + .Hidden = CBool(xStrSub(4)) + .Landmine = CBool(xStrSub(5)) End With End If Next @@ -872,16 +872,16 @@ Public Class MainWindow For xI1 = 1 To UBound(xStrLine) If xStrLine(xI1).Trim = "" Then Continue For xStrSub = Split(xStrLine(xI1), " ") - xTempVP = Val(xStrSub(1)) + MeasureBottom(MeasureAtDisplacement(-xVS) + 1) + xTempVP = CDbl(xStrSub(1)) + MeasureBottom(MeasureAtDisplacement(-xVS) + 1) If UBound(xStrSub) = 5 And xTempVP >= 0 And xTempVP < GetMaxVPosition() Then ReDim Preserve Notes(Notes.Length) With Notes(UBound(Notes)) .ColumnIndex = CInt(xStrSub(0)) .VPosition = xTempVP .Value = CLng(xStrSub(2)) - .Length = Val(xStrSub(3)) - .Hidden = CBool(Val(xStrSub(4))) - .Landmine = CBool(Val(xStrSub(5))) + .Length = CDbl(xStrSub(3)) + .Hidden = CBool(xStrSub(4)) + .Landmine = CBool(xStrSub(5)) End With End If Next @@ -902,12 +902,12 @@ Public Class MainWindow For xI1 = 1 To UBound(xStrLine) ' zdr: holy crap this is obtuse Dim posStr = Mid(xStrLine(xI1), 5, 7) - Dim vPos = Val(posStr) + MeasureBottom(MeasureAtDisplacement(-xVS) + 1) + Dim vPos = CDbl(posStr) + MeasureBottom(MeasureAtDisplacement(-xVS) + 1) Dim bmsIdent = Mid(xStrLine(xI1), 1, 3) Dim lineCol = BMSEChannelToColumnIndex(bmsIdent) - Dim Value = Val(Mid(xStrLine(xI1), 12)) * 10000 + Dim Value = CDbl(Mid(xStrLine(xI1), 12)) * 10000 Dim attribute = Mid(xStrLine(xI1), 4, 1) @@ -3281,8 +3281,13 @@ Public Class MainWindow Private Sub TVCM_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TVCM.KeyDown If e.KeyCode = Keys.Enter Then - TVCM.Text = Val(TVCM.Text).ToString() - If Val(TVCM.Text) <= 0 Then + Dim xTP As Double + If Not Double.TryParse(TVCM.Text, xTP) Then + TVCM.Text = 1.ToString() + Else + TVCM.Text = xTP.ToString() + End If + If CDbl(TVCM.Text) <= 0 Then MsgBox(Strings.Messages.NegativeFactorError, MsgBoxStyle.Critical, Strings.Messages.Err) TVCM.Text = 1.ToString() TVCM.Focus() @@ -3294,8 +3299,13 @@ Public Class MainWindow End Sub Private Sub TVCM_LostFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles TVCM.LostFocus - TVCM.Text = Val(TVCM.Text).ToString() - If Val(TVCM.Text) <= 0 Then + Dim xTP As Double + If Not Double.TryParse(TVCM.Text, xTP) Then + TVCM.Text = 0.ToString() + Else + TVCM.Text = xTP.ToString() + End If + If CDbl(TVCM.Text) <= 0 Then MsgBox(Strings.Messages.NegativeFactorError, MsgBoxStyle.Critical, Strings.Messages.Err) TVCM.Text = 1.ToString() TVCM.Focus() @@ -3305,8 +3315,13 @@ Public Class MainWindow Private Sub TVCD_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TVCD.KeyDown If e.KeyCode = Keys.Enter Then - TVCD.Text = Val(TVCD.Text).ToString() - If Val(TVCD.Text) <= 0 Then + Dim xTP As Double + If Not Double.TryParse(TVCD.Text, xTP) Then + TVCD.Text = 0.ToString() + Else + TVCD.Text = xTP.ToString() + End If + If CDbl(TVCD.Text) <= 0 Then MsgBox(Strings.Messages.NegativeDivisorError, MsgBoxStyle.Critical, Strings.Messages.Err) TVCD.Text = 1.ToString() TVCD.Focus() @@ -3318,8 +3333,13 @@ Public Class MainWindow End Sub Private Sub TVCD_LostFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles TVCD.LostFocus - TVCD.Text = Val(TVCD.Text).ToString() - If Val(TVCD.Text) <= 0 Then + Dim xTP As Double + If Not Double.TryParse(TVCD.Text, xTP) Then + TVCD.Text = 0.ToString() + Else + TVCD.Text = xTP.ToString() + End If + If CDbl(TVCD.Text) <= 0 Then MsgBox(Strings.Messages.NegativeDivisorError, MsgBoxStyle.Critical, Strings.Messages.Err) TVCD.Text = 1.ToString() TVCD.Focus() @@ -3329,8 +3349,13 @@ Public Class MainWindow Private Sub TVCBPM_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TVCBPM.KeyDown If e.KeyCode = Keys.Enter Then - TVCBPM.Text = Val(TVCBPM.Text).ToString() - If Val(TVCBPM.Text) <= 0 Then + Dim xTP As Double + If Not Double.TryParse(TVCBPM.Text, xTP) Then + TVCBPM.Text = 0.ToString() + Else + TVCBPM.Text = xTP.ToString() + End If + If CDbl(TVCBPM.Text) <= 0 Then MsgBox(Strings.Messages.NegativeDivisorError, MsgBoxStyle.Critical, Strings.Messages.Err) TVCBPM.Text = (Notes(0).Value / 10000).ToString() TVCBPM.Focus() @@ -3342,8 +3367,13 @@ Public Class MainWindow End Sub Private Sub TVCBPM_LostFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles TVCBPM.LostFocus - TVCBPM.Text = Val(TVCBPM.Text).ToString() - If Val(TVCBPM.Text) <= 0 Then + Dim xTP As Double + If Not Double.TryParse(TVCBPM.Text, xTP) Then + TVCBPM.Text = 0.ToString() + Else + TVCBPM.Text = xTP.ToString() + End If + If CDbl(TVCBPM.Text) <= 0 Then MsgBox(Strings.Messages.NegativeDivisorError, MsgBoxStyle.Critical, Strings.Messages.Err) TVCBPM.Text = (Notes(0).Value / 10000).ToString() TVCBPM.Focus() @@ -5044,7 +5074,7 @@ Public Class MainWindow Dim xStr As String = InputBox(Prompt, Title, DefaultResponse) If xStr = "" Then Return Double.PositiveInfinity - InputBoxDouble = Val(xStr) + If Not Double.TryParse(xStr, InputBoxDouble) Then Return Double.PositiveInfinity If InputBoxDouble > UBound Then InputBoxDouble = UBound If InputBoxDouble < LBound Then InputBoxDouble = LBound End Function diff --git a/iBMSC/Option Windows/OpTotal.vb b/iBMSC/Option Windows/OpTotal.vb index 6bf48a946..5414ac457 100644 --- a/iBMSC/Option Windows/OpTotal.vb +++ b/iBMSC/Option Windows/OpTotal.vb @@ -39,14 +39,14 @@ TotalOption = Array.IndexOf(Of RadioButton)(CTotalList, RadioS) End Sub - Private Sub TMultiplier_TextChanged(sender As Object, e As EventArgs) Handles NGlobalMultiplier.TextChanged + Private Sub NGlobalMultiplier_TextChanged(sender As Object, e As EventArgs) Handles NGlobalMultiplier.TextChanged, NDecimal.TextChanged CalculateTotal() End Sub Private Sub CalculateTotal() Dim Dec = CInt(NDecimal.Value) LTotalIIDX1.Text = Math.Round(NoteCount * 7.605 / (0.01 * NoteCount + 6.5) * NGlobalMultiplier.Value, Dec).ToString() - LTotalIIDX2.Text = Math.Round(CDbl(IIf(NoteCount < 400, 200 + NoteCount / 5, IIf(NoteCount < 600, 280 + (NoteCount - 400) / 2.5, 360 + (NoteCount - 600) / 5))) * Val(NGlobalMultiplier.Text), Dec).ToString() - LTotalMultiplier.Text = Math.Round(NoteCount * Val(NMultiplier.Text) * Val(NGlobalMultiplier.Text), Dec).ToString() + LTotalIIDX2.Text = Math.Round(CDbl(IIf(NoteCount < 400, 200 + NoteCount / 5, IIf(NoteCount < 600, 280 + (NoteCount - 400) / 2.5, 360 + (NoteCount - 600) / 5))) * CDbl(NGlobalMultiplier.Text), Dec).ToString() + LTotalMultiplier.Text = Math.Round(NoteCount * CDbl(NMultiplier.Text) * CDbl(NGlobalMultiplier.Text), Dec).ToString() End Sub End Class \ No newline at end of file diff --git a/iBMSC/TimeSelectionOps.vb b/iBMSC/TimeSelectionOps.vb index 31bb1849f..11470e77b 100644 --- a/iBMSC/TimeSelectionOps.vb +++ b/iBMSC/TimeSelectionOps.vb @@ -7,7 +7,7 @@ Partial Public Class MainWindow If Not TBTimeSelect.Checked Then Exit Sub SortByVPositionInsertion() - BPMChangeByValue(CInt(Val(TVCBPM.Text) * 10000)) + BPMChangeByValue(CInt(TVCBPM.Text) * 10000) SortByVPositionInsertion() UpdatePairing() @@ -22,7 +22,7 @@ Partial Public Class MainWindow If Not TBTimeSelect.Checked Then Exit Sub SortByVPositionInsertion() - BPMChangeTop(Val(TVCM.Text) / Val(TVCD.Text)) + BPMChangeTop(CDbl(TVCM.Text) / CDbl(TVCD.Text)) SortByVPositionInsertion() UpdatePairing() diff --git a/iBMSC/Utilities.vb b/iBMSC/Utilities.vb index f787332af..c5d0960ef 100644 --- a/iBMSC/Utilities.vb +++ b/iBMSC/Utilities.vb @@ -76,12 +76,12 @@ Namespace Editor End Function Public Function IdentifiertoLongNote(ByVal I As String) As Boolean - Dim xI As Integer = CInt(Val(I)) + Dim xI As Integer = CInt(I) Return xI >= 50 And xI < 90 End Function Public Function IdentifiertoHidden(ByVal I As String) As Boolean - Dim xI As Integer = CInt(Val(I)) + Dim xI As Integer = CInt(I) Return (xI >= 30 And xI < 50) Or (xI >= 70 And xI < 90) End Function @@ -144,7 +144,7 @@ Namespace Editor Dim xLine() As String = Split(xStr, ",") If UBound(xLine) = 2 Then Dim xFontStyle As System.Drawing.FontStyle = CType(xLine(2), FontStyle) - Return New Font(xLine(0), CSng(Val(xLine(1))), xFontStyle, GraphicsUnit.Pixel) + Return New Font(xLine(0), CSng(xLine(1)), xFontStyle, GraphicsUnit.Pixel) Else Return xDefault End If @@ -187,7 +187,7 @@ Namespace Editor Dim xL() As String = Split(xStr, ",") Dim xBool(UBound(xL)) As Boolean For xI1 As Integer = 0 To UBound(xBool) - xBool(xI1) = CBool(Val(xL(xI1))) + xBool(xI1) = CBool(xL(xI1)) Next Return xBool End Function From a7960e3ccdfb0d22af41aac64f9cc0793fe29da1 Mon Sep 17 00:00:00 2001 From: psyk2642 <60137590+psyk2642@users.noreply.github.com> Date: Sun, 8 May 2022 12:53:07 +0800 Subject: [PATCH 154/257] Update AssemblyInfo.vb --- iBMSC/My Project/AssemblyInfo.vb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/iBMSC/My Project/AssemblyInfo.vb b/iBMSC/My Project/AssemblyInfo.vb index 3ed555ef9..547412dd0 100644 --- a/iBMSC/My Project/AssemblyInfo.vb +++ b/iBMSC/My Project/AssemblyInfo.vb @@ -30,7 +30,7 @@ Imports System.Resources ' by using the '*' as shown below: ' - - + + \ No newline at end of file From af1bf25554cca37cbe129eacc521c3adb8bbc7b8 Mon Sep 17 00:00:00 2001 From: psyk2642 <60137590+psyk2642@users.noreply.github.com> Date: Sun, 8 May 2022 20:33:52 +0800 Subject: [PATCH 155/257] Waveform Drawing Optimization --- iBMSC/MainWindow.designer.vb | 72 ++++++++++++++++++------------------ iBMSC/MainWindow.vb | 5 ++- iBMSC/PanelDraw.vb | 63 ++++++++++++++++++++++++++----- iBMSC/Waveform.vb | 2 +- 4 files changed, 93 insertions(+), 49 deletions(-) diff --git a/iBMSC/MainWindow.designer.vb b/iBMSC/MainWindow.designer.vb index a7d57f785..7bd93b45f 100644 --- a/iBMSC/MainWindow.designer.vb +++ b/iBMSC/MainWindow.designer.vb @@ -25,16 +25,16 @@ Partial Class MainWindow Me.TBLangDef = New System.Windows.Forms.ToolStripMenuItem() Me.TBLangRefresh = New System.Windows.Forms.ToolStripMenuItem() Me.ToolStripSeparator9 = New System.Windows.Forms.ToolStripSeparator() - Me.mnLanguage = New System.Windows.Forms.ToolStripMenuItem() Me.TBLanguage = New System.Windows.Forms.ToolStripDropDownButton() + Me.mnLanguage = New System.Windows.Forms.ToolStripMenuItem() Me.cmnTheme = New System.Windows.Forms.ContextMenuStrip(Me.components) Me.TBThemeDef = New System.Windows.Forms.ToolStripMenuItem() Me.TBThemeSave = New System.Windows.Forms.ToolStripMenuItem() Me.TBThemeRefresh = New System.Windows.Forms.ToolStripMenuItem() Me.TBThemeLoadComptability = New System.Windows.Forms.ToolStripMenuItem() Me.ToolStripSeparator6 = New System.Windows.Forms.ToolStripSeparator() - Me.TBTheme = New System.Windows.Forms.ToolStripDropDownButton() Me.mnTheme = New System.Windows.Forms.ToolStripMenuItem() + Me.TBTheme = New System.Windows.Forms.ToolStripDropDownButton() Me.Timer1 = New System.Windows.Forms.Timer(Me.components) Me.Menu1 = New System.Windows.Forms.ContextMenuStrip(Me.components) Me.MInsert = New System.Windows.Forms.ToolStripMenuItem() @@ -135,6 +135,7 @@ Partial Class MainWindow Me.POBSRandom = New System.Windows.Forms.ToolStripMenuItem() Me.POBHRandom = New System.Windows.Forms.ToolStripMenuItem() Me.POBSort = New System.Windows.Forms.ToolStripMenuItem() + Me.POConvert = New System.Windows.Forms.ToolStripDropDownButton() Me.mnPreview = New System.Windows.Forms.ToolStripMenuItem() Me.mnPlayB = New System.Windows.Forms.ToolStripMenuItem() Me.mnPlay = New System.Windows.Forms.ToolStripMenuItem() @@ -143,7 +144,6 @@ Partial Class MainWindow Me.mnTechnicalErrorCheck = New System.Windows.Forms.ToolStripMenuItem() Me.mnTOTAL = New System.Windows.Forms.ToolStripMenuItem() Me.ToolStripSeparator13 = New System.Windows.Forms.ToolStripSeparator() - Me.POConvert = New System.Windows.Forms.ToolStripDropDownButton() Me.TBMain = New System.Windows.Forms.ToolStrip() Me.TBNew = New System.Windows.Forms.ToolStripButton() Me.TBOpen = New System.Windows.Forms.ToolStripSplitButton() @@ -475,7 +475,7 @@ Partial Class MainWindow ' Me.cmnLanguage.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.TBLangDef, Me.TBLangRefresh, Me.ToolStripSeparator9}) Me.cmnLanguage.Name = "cmnLanguage" - Me.cmnLanguage.OwnerItem = Me.TBLanguage + Me.cmnLanguage.OwnerItem = Me.mnLanguage Me.cmnLanguage.Size = New System.Drawing.Size(121, 54) ' 'TBLangDef @@ -496,14 +496,6 @@ Partial Class MainWindow Me.ToolStripSeparator9.Name = "ToolStripSeparator9" Me.ToolStripSeparator9.Size = New System.Drawing.Size(117, 6) ' - 'mnLanguage - ' - Me.mnLanguage.DropDown = Me.cmnLanguage - Me.mnLanguage.Image = Global.iBMSC.My.Resources.Resources.x16Language - Me.mnLanguage.Name = "mnLanguage" - Me.mnLanguage.Size = New System.Drawing.Size(253, 22) - Me.mnLanguage.Text = "&Language" - ' 'TBLanguage ' Me.TBLanguage.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image @@ -514,11 +506,19 @@ Partial Class MainWindow Me.TBLanguage.Size = New System.Drawing.Size(29, 22) Me.TBLanguage.Text = "Language" ' + 'mnLanguage + ' + Me.mnLanguage.DropDown = Me.cmnLanguage + Me.mnLanguage.Image = Global.iBMSC.My.Resources.Resources.x16Language + Me.mnLanguage.Name = "mnLanguage" + Me.mnLanguage.Size = New System.Drawing.Size(253, 22) + Me.mnLanguage.Text = "&Language" + ' 'cmnTheme ' Me.cmnTheme.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.TBThemeDef, Me.TBThemeSave, Me.TBThemeRefresh, Me.TBThemeLoadComptability, Me.ToolStripSeparator6}) Me.cmnTheme.Name = "cmnLanguage" - Me.cmnTheme.OwnerItem = Me.mnTheme + Me.cmnTheme.OwnerItem = Me.TBTheme Me.cmnTheme.Size = New System.Drawing.Size(246, 98) ' 'TBThemeDef @@ -552,6 +552,14 @@ Partial Class MainWindow Me.ToolStripSeparator6.Name = "ToolStripSeparator6" Me.ToolStripSeparator6.Size = New System.Drawing.Size(242, 6) ' + 'mnTheme + ' + Me.mnTheme.DropDown = Me.cmnTheme + Me.mnTheme.Image = Global.iBMSC.My.Resources.Resources.x16Theme + Me.mnTheme.Name = "mnTheme" + Me.mnTheme.Size = New System.Drawing.Size(253, 22) + Me.mnTheme.Text = "&Theme" + ' 'TBTheme ' Me.TBTheme.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image @@ -562,14 +570,6 @@ Partial Class MainWindow Me.TBTheme.Size = New System.Drawing.Size(29, 22) Me.TBTheme.Text = "Theme" ' - 'mnTheme - ' - Me.mnTheme.DropDown = Me.cmnTheme - Me.mnTheme.Image = Global.iBMSC.My.Resources.Resources.x16Theme - Me.mnTheme.Name = "mnTheme" - Me.mnTheme.Size = New System.Drawing.Size(253, 22) - Me.mnTheme.Text = "&Theme" - ' 'Timer1 ' Me.Timer1.Interval = 15 @@ -1193,7 +1193,7 @@ Partial Class MainWindow ' Me.cmnConversion.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.POBLong, Me.POBShort, Me.POBLongShort, Me.POBLongObjNT, Me.POBLongNTObj, Me.ToolStripSeparator25, Me.POBAutoLongVPosition, Me.POBAutoLongColumn, Me.ToolStripSeparator10, Me.POBHidden, Me.POBVisible, Me.POBHiddenVisible, Me.ToolStripSeparator11, Me.POBModify, Me.POBMirror, Me.POBFlip, Me.POBRandom, Me.POBRRandom, Me.POBSRandom, Me.POBHRandom, Me.POBSort}) Me.cmnConversion.Name = "cmnLanguage" - Me.cmnConversion.OwnerItem = Me.POConvert + Me.cmnConversion.OwnerItem = Me.mnConversion Me.cmnConversion.Size = New System.Drawing.Size(237, 418) ' 'POBLong @@ -1340,6 +1340,16 @@ Partial Class MainWindow Me.POBSort.Size = New System.Drawing.Size(236, 22) Me.POBSort.Text = "S&ort" ' + 'POConvert + ' + Me.POConvert.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image + Me.POConvert.DropDown = Me.cmnConversion + Me.POConvert.Image = Global.iBMSC.My.Resources.Resources.ConvertNotes + Me.POConvert.ImageTransparentColor = System.Drawing.Color.Magenta + Me.POConvert.Name = "POConvert" + Me.POConvert.Size = New System.Drawing.Size(29, 22) + Me.POConvert.Text = "Convert Notes" + ' 'mnPreview ' Me.mnPreview.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.mnPlayB, Me.mnPlay, Me.mnStop}) @@ -1397,16 +1407,6 @@ Partial Class MainWindow Me.ToolStripSeparator13.Name = "ToolStripSeparator13" Me.ToolStripSeparator13.Size = New System.Drawing.Size(247, 6) ' - 'POConvert - ' - Me.POConvert.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image - Me.POConvert.DropDown = Me.cmnConversion - Me.POConvert.Image = Global.iBMSC.My.Resources.Resources.ConvertNotes - Me.POConvert.ImageTransparentColor = System.Drawing.Color.Magenta - Me.POConvert.Name = "POConvert" - Me.POConvert.Size = New System.Drawing.Size(29, 22) - Me.POConvert.Text = "Convert Notes" - ' 'TBMain ' Me.TBMain.AccessibleRole = System.Windows.Forms.AccessibleRole.ToolBar @@ -1415,7 +1415,7 @@ Partial Class MainWindow Me.TBMain.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.TBNew, Me.TBOpen, Me.TBSave, Me.ToolStripSeparator1, Me.TBCut, Me.TBCopy, Me.TBPaste, Me.TBPastePattern, Me.TBFind, Me.ToolStripSeparator24, Me.TBStatistics, Me.POConvert, Me.TBMyO2, Me.ToolStripSeparator4, Me.TBErrorCheck, Me.TBPreviewOnClick, Me.TBShowFileName, Me.TBShowWaveform, Me.ToolStripSeparator8, Me.TBNTInput, Me.TBWavIncrease, Me.ToolStripSeparator2, Me.TBUndo, Me.TBRedo, Me.ToolStripSeparator5, Me.TBTimeSelect, Me.TBSelect, Me.TBWrite, Me.ToolStripSeparator3, Me.TBPlayB, Me.TBPlay, Me.TBStop, Me.TBPOptions, Me.ToolStripSeparator7, Me.TBGOptions, Me.TBKOptions, Me.TBVOptions, Me.TBLanguage, Me.TBTheme, Me.POBStorm, Me.TBTotalValue}) Me.TBMain.Location = New System.Drawing.Point(3, 23) Me.TBMain.Name = "TBMain" - Me.TBMain.Size = New System.Drawing.Size(1016, 25) + Me.TBMain.Size = New System.Drawing.Size(962, 25) Me.TBMain.TabIndex = 64 Me.TBMain.Text = "Main Toolbar" ' @@ -3086,13 +3086,13 @@ Partial Class MainWindow 'TWPrecision ' Me.TWPrecision.Dock = System.Windows.Forms.DockStyle.Fill + Me.TWPrecision.Increment = New Decimal(New Integer() {0, 0, 0, 0}) Me.TWPrecision.Location = New System.Drawing.Point(137, 56) Me.TWPrecision.Margin = New System.Windows.Forms.Padding(0, 0, 3, 0) - Me.TWPrecision.Maximum = New Decimal(New Integer() {50, 0, 0, 0}) Me.TWPrecision.Name = "TWPrecision" Me.TWPrecision.Size = New System.Drawing.Size(43, 23) Me.TWPrecision.TabIndex = 507 - Me.TWPrecision.Value = New Decimal(New Integer() {1, 0, 0, 0}) + Me.TWPrecision.Value = New Decimal(New Integer() {10, 0, 0, 0}) ' 'PictureBox4 ' @@ -3212,7 +3212,7 @@ Partial Class MainWindow Me.TWPrecision2.LargeChange = 4 Me.TWPrecision2.Location = New System.Drawing.Point(30, 56) Me.TWPrecision2.Margin = New System.Windows.Forms.Padding(0) - Me.TWPrecision2.Maximum = 50 + Me.TWPrecision2.Maximum = 100 Me.TWPrecision2.Name = "TWPrecision2" Me.TWPrecision2.Size = New System.Drawing.Size(107, 28) Me.TWPrecision2.TabIndex = 506 diff --git a/iBMSC/MainWindow.vb b/iBMSC/MainWindow.vb index 39284049c..95d982072 100644 --- a/iBMSC/MainWindow.vb +++ b/iBMSC/MainWindow.vb @@ -3816,8 +3816,9 @@ Public Class MainWindow End Sub Private Sub TWPrecision_ValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TWPrecision.ValueChanged - wPrecision = CInt(TWPrecision.Value) - TWPrecision2.Value = CInt(IIf(wPrecision > TWPrecision2.Maximum, TWPrecision2.Maximum, wPrecision)) + ' (0 - 100) → (0 - 20) + wPrecision = TWPrecision.Value / 5 + TWPrecision2.Value = CInt(IIf(TWPrecision.Value > TWPrecision2.Maximum, TWPrecision2.Maximum, TWPrecision.Value)) RefreshPanelAll() End Sub diff --git a/iBMSC/PanelDraw.vb b/iBMSC/PanelDraw.vb index 01cd59602..2f4e8618b 100644 --- a/iBMSC/PanelDraw.vb +++ b/iBMSC/PanelDraw.vb @@ -508,8 +508,8 @@ Partial Public Class MainWindow Next End If - Dim xPtsL(xTHeight * wPrecision) As PointF - Dim xPtsR(xTHeight * wPrecision) As PointF + Dim xPtsL(CInt(xTHeight * wPrecision)) As PointF + Dim xPtsR(CInt(xTHeight * wPrecision)) As PointF Dim xD1 As Double @@ -537,14 +537,14 @@ Partial Public Class MainWindow Dim xIPts As Integer = -1 For xI1 = xTHeight * wPrecision To 0 Step -1 - xI3 = (-xI1 / wPrecision + xTHeight + xVSR * gxHeight - 1) / gxHeight + xI3 = (-xI1 / wPrecision + xTHeight + xVSR * gxHeight - 1) / gxHeight ' Upper bound? For xI2 = 1 To UBound(bVPosition) If bVPosition(xI2) >= xI3 Then Exit For Next xI2 -= 1 xD1 = bWavDataIndex(xI2) + (xI3 - bVPosition(xI2)) * 1.25 * xwSampleRate / bBPM(xI2) - If xD1 <= UBound(xwWavL) And xD1 >= 0 Then + If xD1 <= UBound(xwWavL) AndAlso xD1 >= 0 Then xIPts += 1 xPtsL(xIPts) = New PointF(xwWavL(CInt(xD1)) * wWidth + xwLeft, CSng(xI1 / wPrecision)) xPtsR(xIPts) = New PointF(xwWavR(CInt(xD1)) * wWidth + xwLeft, CSng(xI1 / wPrecision)) @@ -558,13 +558,56 @@ Partial Public Class MainWindow End If End Sub + ''' + ''' Draws waveforms on notes based on their value. + ''' + Private Sub DrawWaveformNotes(e1 As BufferedGraphics, xTHeight As Integer, xHS As Integer, xVSR As Integer) - For xINote = 1 To UBound(Notes) - If Not (-PanelVScroll(PanelFocus) + spMain(PanelFocus).Height / gxHeight < Notes(xINote).VPosition) AndAlso _ ' If note is not higher than window - IsColumnSound(Notes(xINote).ColumnIndex) AndAlso _ ' Column is sound - Not Notes(xINote).Comment Then _ ' Note is not comment - DrawWaveform(e1, xTHeight, xHS, xVSR, xINote) - Next + ' Optimized + Dim xVEnd As Double = Notes(UBound(Notes)).VPosition + If -PanelVScroll(PanelFocus) < xVEnd / 3 Then ' Apply waveforms from the beginning + For xINote = 1 To UBound(Notes) + If Not IsColumnSound(Notes(xINote).ColumnIndex) Then Continue For + + If -PanelVScroll(PanelFocus) + spMain(PanelFocus).Height / gxHeight < Notes(xINote).VPosition Then Exit For ' If note is higher than window + If Not (-PanelVScroll(PanelFocus) > GetVPositionFromTime(GetTimeFromVPosition(Notes(xINote).VPosition) + wLWAV(CInt(Notes(xINote).Value / 10000)).Duration)) AndAlso _ ' If note waveform is not lower than window + Not Notes(xINote).Comment Then ' Note is not comment + DrawWaveform(e1, xTHeight, xHS, xVSR, xINote) + End If + Next + + ElseIf -PanelVScroll(PanelFocus) > xVEnd * 2 / 3 Then ' Apply waveforms from the end + For xINote = UBound(Notes) To 1 Step -1 + If Not IsColumnSound(Notes(xINote).ColumnIndex) Then Continue For + + If -PanelVScroll(PanelFocus) > GetVPositionFromTime(GetTimeFromVPosition(Notes(xINote).VPosition) + wLWAV(CInt(Notes(xINote).Value / 10000)).Duration) Then Exit For ' If note waveform is not lower than window + If Not (-PanelVScroll(PanelFocus) + spMain(PanelFocus).Height / gxHeight < Notes(xINote).VPosition) AndAlso ' If note is higher than window + IsColumnSound(Notes(xINote).ColumnIndex) AndAlso _ ' Column is sound + Not Notes(xINote).Comment Then ' Note is not comment + DrawWaveform(e1, xTHeight, xHS, xVSR, xINote) + End If + Next + + Else ' Apply waveforms from the middle, going both down and up + Dim xIMid As Integer = CInt(UBound(Notes) / 2) + + For xINote = xIMid To 1 Step -1 + If Not IsColumnSound(Notes(xINote).ColumnIndex) Then Continue For + + If -PanelVScroll(PanelFocus) > GetVPositionFromTime(GetTimeFromVPosition(Notes(xINote).VPosition) + wLWAV(CInt(Notes(xINote).Value / 10000)).Duration) Then Exit For ' If note waveform is lower than window + If Not Notes(xINote).Comment Then ' Note is not comment + DrawWaveform(e1, xTHeight, xHS, xVSR, xINote) + End If + Next + For xINote = xIMid To UBound(Notes) + If Not IsColumnSound(Notes(xINote).ColumnIndex) Then Continue For + + If -PanelVScroll(PanelFocus) + spMain(PanelFocus).Height / gxHeight < Notes(xINote).VPosition Then Exit For ' If note is higher than window + If Not Notes(xINote).Comment Then ' Note is not comment + DrawWaveform(e1, xTHeight, xHS, xVSR, xINote) + End If + Next + End If End Sub ''' diff --git a/iBMSC/Waveform.vb b/iBMSC/Waveform.vb index 2e3beef66..0080dbf6d 100644 --- a/iBMSC/Waveform.vb +++ b/iBMSC/Waveform.vb @@ -11,7 +11,7 @@ Partial Public Class MainWindow Dim wPosition As Double = 0 Dim wLeft As Integer = 50 Dim wWidth As Integer = 100 - Dim wPrecision As Integer = 1 + Dim wPrecision As Double = 1 Private Sub BWLoad_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BWLoad.Click Dim xDWAV As New OpenFileDialog From 8a4aa647130666ddc0329dd8985b8f6d866fbc4e Mon Sep 17 00:00:00 2001 From: psyk2642 <60137590+psyk2642@users.noreply.github.com> Date: Sun, 8 May 2022 22:43:06 +0800 Subject: [PATCH 156/257] Update PanelDraw.vb --- iBMSC/PanelDraw.vb | 1 - 1 file changed, 1 deletion(-) diff --git a/iBMSC/PanelDraw.vb b/iBMSC/PanelDraw.vb index 2f4e8618b..80685700d 100644 --- a/iBMSC/PanelDraw.vb +++ b/iBMSC/PanelDraw.vb @@ -582,7 +582,6 @@ Partial Public Class MainWindow If -PanelVScroll(PanelFocus) > GetVPositionFromTime(GetTimeFromVPosition(Notes(xINote).VPosition) + wLWAV(CInt(Notes(xINote).Value / 10000)).Duration) Then Exit For ' If note waveform is not lower than window If Not (-PanelVScroll(PanelFocus) + spMain(PanelFocus).Height / gxHeight < Notes(xINote).VPosition) AndAlso ' If note is higher than window - IsColumnSound(Notes(xINote).ColumnIndex) AndAlso _ ' Column is sound Not Notes(xINote).Comment Then ' Note is not comment DrawWaveform(e1, xTHeight, xHS, xVSR, xINote) End If From c663a738de5a217607cb037ca4b3c4afe50624da Mon Sep 17 00:00:00 2001 From: psyk2642 <60137590+psyk2642@users.noreply.github.com> Date: Mon, 9 May 2022 07:21:52 +0800 Subject: [PATCH 157/257] Keybinding Code Fix --- iBMSC/PanelEvents.vb | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/iBMSC/PanelEvents.vb b/iBMSC/PanelEvents.vb index ed4ed7e4b..61ea7662e 100644 --- a/iBMSC/PanelEvents.vb +++ b/iBMSC/PanelEvents.vb @@ -38,10 +38,25 @@ Partial Public Class MainWindow ' Determine Dim keybindOptionName As String = "" + Dim HasSelectedNotes As Boolean = False + For Each note In Notes + If note.Selected Then + HasSelectedNotes = True + Exit For + End If + Next + ' Check for specific categories first For Each P In KbCategory - If (P = KbCategoryPMS AndAlso gXKeyMode <> "PMS") OrElse - (P = KbCategoryDP AndAlso gXKeyMode <> "DP") Then Continue For + ' Check which categories to skip + Select Case P + Case KbCategorySP + If Not HasSelectedNotes Then Continue For + Case KbCategoryPMS + If Not HasSelectedNotes OrElse gXKeyMode <> "PMS" Then Continue For + Case KbCategoryDP + If Not HasSelectedNotes OrElse gXKeyMode <> "DP" Then Continue For + End Select Dim keybindOptions = From k In Keybindings Where k.Category = P From 3864cce61a6c1282aa6a910f87ba7750c91d1bd7 Mon Sep 17 00:00:00 2001 From: psyk2642 <60137590+psyk2642@users.noreply.github.com> Date: Mon, 9 May 2022 18:56:08 +0800 Subject: [PATCH 158/257] Added Search Function for Error or Comment Notes --- iBMSC/Dialogs/dgFind.designer.vb | 407 ++++++++++++++++++++----------- iBMSC/Dialogs/dgFind.resx | 6 +- iBMSC/Dialogs/dgFind.vb | 26 +- iBMSC/MainWindow.designer.vb | 64 ++--- iBMSC/MainWindow.vb | 77 +++++- iBMSC/My Project/AssemblyInfo.vb | 4 +- iBMSC/PanelEvents.vb | 2 +- 7 files changed, 375 insertions(+), 211 deletions(-) diff --git a/iBMSC/Dialogs/dgFind.designer.vb b/iBMSC/Dialogs/dgFind.designer.vb index 52c70762d..bf6ab1006 100644 --- a/iBMSC/Dialogs/dgFind.designer.vb +++ b/iBMSC/Dialogs/dgFind.designer.vb @@ -74,15 +74,20 @@ Partial Class dgFind Me.PictureBox3 = New System.Windows.Forms.PictureBox() Me.PictureBox2 = New System.Windows.Forms.PictureBox() Me.PictureBox1 = New System.Windows.Forms.PictureBox() - Me.cbx1 = New System.Windows.Forms.CheckBox() - Me.cbx2 = New System.Windows.Forms.CheckBox() - Me.cbx3 = New System.Windows.Forms.CheckBox() + Me.CBSelected = New System.Windows.Forms.CheckBox() + Me.CBUnselected = New System.Windows.Forms.CheckBox() + Me.CBShort = New System.Windows.Forms.CheckBox() Me.TBUnselect = New System.Windows.Forms.Button() - Me.cbx4 = New System.Windows.Forms.CheckBox() - Me.cbx5 = New System.Windows.Forms.CheckBox() - Me.cbx6 = New System.Windows.Forms.CheckBox() + Me.CBLong = New System.Windows.Forms.CheckBox() + Me.CBHidden = New System.Windows.Forms.CheckBox() + Me.CBVisible = New System.Windows.Forms.CheckBox() Me.FNotePrevious = New System.Windows.Forms.Button() Me.FNoteNext = New System.Windows.Forms.Button() + Me.TLNoteRange = New System.Windows.Forms.TableLayoutPanel() + Me.CBError = New System.Windows.Forms.CheckBox() + Me.CBNoError = New System.Windows.Forms.CheckBox() + Me.CBComment = New System.Windows.Forms.CheckBox() + Me.CBNotComment = New System.Windows.Forms.CheckBox() CType(Me.mr1, System.ComponentModel.ISupportInitialize).BeginInit() CType(Me.mr2, System.ComponentModel.ISupportInitialize).BeginInit() CType(Me.vr2, System.ComponentModel.ISupportInitialize).BeginInit() @@ -92,46 +97,47 @@ Partial Class dgFind CType(Me.PictureBox3, System.ComponentModel.ISupportInitialize).BeginInit() CType(Me.PictureBox2, System.ComponentModel.ISupportInitialize).BeginInit() CType(Me.PictureBox1, System.ComponentModel.ISupportInitialize).BeginInit() + Me.TLNoteRange.SuspendLayout() Me.SuspendLayout() ' 'Label1 ' - Me.Label1.Location = New System.Drawing.Point(26, 20) + Me.Label1.Location = New System.Drawing.Point(8, 31) Me.Label1.Name = "Label1" Me.Label1.Size = New System.Drawing.Size(120, 17) - Me.Label1.TabIndex = 2 - Me.Label1.Text = "Note Range" + Me.Label1.TabIndex = 0 + Me.Label1.Text = "Note Type" Me.Label1.TextAlign = System.Drawing.ContentAlignment.MiddleRight ' 'Label2 ' - Me.Label2.Location = New System.Drawing.Point(26, 73) + Me.Label2.Location = New System.Drawing.Point(8, 73) Me.Label2.Name = "Label2" Me.Label2.Size = New System.Drawing.Size(120, 17) - Me.Label2.TabIndex = 4 + Me.Label2.TabIndex = 2 Me.Label2.Text = "Measure Range" Me.Label2.TextAlign = System.Drawing.ContentAlignment.MiddleRight ' 'mr1 ' - Me.mr1.Location = New System.Drawing.Point(152, 72) + Me.mr1.Location = New System.Drawing.Point(134, 72) Me.mr1.Maximum = New Decimal(New Integer() {999, 0, 0, 0}) Me.mr1.Name = "mr1" Me.mr1.Size = New System.Drawing.Size(70, 23) - Me.mr1.TabIndex = 5 + Me.mr1.TabIndex = 3 ' 'mr2 ' - Me.mr2.Location = New System.Drawing.Point(258, 72) + Me.mr2.Location = New System.Drawing.Point(240, 72) Me.mr2.Maximum = New Decimal(New Integer() {999, 0, 0, 0}) Me.mr2.Name = "mr2" Me.mr2.Size = New System.Drawing.Size(70, 23) - Me.mr2.TabIndex = 6 + Me.mr2.TabIndex = 5 Me.mr2.Value = New Decimal(New Integer() {999, 0, 0, 0}) ' 'lr1 ' - Me.lr1.Location = New System.Drawing.Point(152, 101) + Me.lr1.Location = New System.Drawing.Point(134, 101) Me.lr1.MaxLength = 2 Me.lr1.Name = "lr1" Me.lr1.Size = New System.Drawing.Size(70, 23) @@ -140,33 +146,33 @@ Partial Class dgFind ' 'lr2 ' - Me.lr2.Location = New System.Drawing.Point(258, 101) + Me.lr2.Location = New System.Drawing.Point(240, 101) Me.lr2.MaxLength = 2 Me.lr2.Name = "lr2" Me.lr2.Size = New System.Drawing.Size(70, 23) - Me.lr2.TabIndex = 8 + Me.lr2.TabIndex = 9 Me.lr2.Text = "ZZ" ' 'vr2 ' Me.vr2.DecimalPlaces = 4 - Me.vr2.Location = New System.Drawing.Point(258, 130) + Me.vr2.Location = New System.Drawing.Point(240, 130) Me.vr2.Maximum = New Decimal(New Integer() {655359999, 0, 0, 262144}) Me.vr2.Minimum = New Decimal(New Integer() {1, 0, 0, 262144}) Me.vr2.Name = "vr2" Me.vr2.Size = New System.Drawing.Size(100, 23) - Me.vr2.TabIndex = 10 + Me.vr2.TabIndex = 13 Me.vr2.Value = New Decimal(New Integer() {655359999, 0, 0, 262144}) ' 'vr1 ' Me.vr1.DecimalPlaces = 4 - Me.vr1.Location = New System.Drawing.Point(152, 130) + Me.vr1.Location = New System.Drawing.Point(134, 130) Me.vr1.Maximum = New Decimal(New Integer() {655359999, 0, 0, 262144}) Me.vr1.Minimum = New Decimal(New Integer() {1, 0, 0, 262144}) Me.vr1.Name = "vr1" Me.vr1.Size = New System.Drawing.Size(70, 23) - Me.vr1.TabIndex = 9 + Me.vr1.TabIndex = 11 Me.vr1.Value = New Decimal(New Integer() {1, 0, 0, 262144}) ' 'cb1 @@ -527,7 +533,7 @@ Partial Class dgFind Me.Panel1.Location = New System.Drawing.Point(26, 186) Me.Panel1.Name = "Panel1" Me.Panel1.Size = New System.Drawing.Size(302, 131) - Me.Panel1.TabIndex = 22 + Me.Panel1.TabIndex = 14 ' 'BSAll ' @@ -535,7 +541,7 @@ Partial Class dgFind Me.BSAll.Location = New System.Drawing.Point(334, 189) Me.BSAll.Name = "BSAll" Me.BSAll.Size = New System.Drawing.Size(120, 23) - Me.BSAll.TabIndex = 23 + Me.BSAll.TabIndex = 15 Me.BSAll.Text = "Select All" Me.BSAll.UseVisualStyleBackColor = True ' @@ -545,7 +551,7 @@ Partial Class dgFind Me.BSInv.Location = New System.Drawing.Point(334, 218) Me.BSInv.Name = "BSInv" Me.BSInv.Size = New System.Drawing.Size(120, 23) - Me.BSInv.TabIndex = 24 + Me.BSInv.TabIndex = 16 Me.BSInv.Text = "Select Inverse" Me.BSInv.UseVisualStyleBackColor = True ' @@ -555,25 +561,25 @@ Partial Class dgFind Me.BSNone.Location = New System.Drawing.Point(334, 247) Me.BSNone.Name = "BSNone" Me.BSNone.Size = New System.Drawing.Size(120, 23) - Me.BSNone.TabIndex = 25 + Me.BSNone.TabIndex = 17 Me.BSNone.Text = "Unselect All" Me.BSNone.UseVisualStyleBackColor = True ' 'Label3 ' - Me.Label3.Location = New System.Drawing.Point(26, 103) + Me.Label3.Location = New System.Drawing.Point(8, 103) Me.Label3.Name = "Label3" Me.Label3.Size = New System.Drawing.Size(120, 17) - Me.Label3.TabIndex = 26 + Me.Label3.TabIndex = 6 Me.Label3.Text = "Label Range" Me.Label3.TextAlign = System.Drawing.ContentAlignment.MiddleRight ' 'Label4 ' - Me.Label4.Location = New System.Drawing.Point(26, 131) + Me.Label4.Location = New System.Drawing.Point(8, 131) Me.Label4.Name = "Label4" Me.Label4.Size = New System.Drawing.Size(120, 17) - Me.Label4.TabIndex = 27 + Me.Label4.TabIndex = 10 Me.Label4.Text = "Value Range" Me.Label4.TextAlign = System.Drawing.ContentAlignment.MiddleRight ' @@ -582,7 +588,7 @@ Partial Class dgFind Me.TBSelect.Location = New System.Drawing.Point(298, 354) Me.TBSelect.Name = "TBSelect" Me.TBSelect.Size = New System.Drawing.Size(75, 23) - Me.TBSelect.TabIndex = 28 + Me.TBSelect.TabIndex = 40 Me.TBSelect.Text = "Select" Me.TBSelect.UseVisualStyleBackColor = True ' @@ -592,7 +598,7 @@ Partial Class dgFind Me.TBClose.Location = New System.Drawing.Point(379, 412) Me.TBClose.Name = "TBClose" Me.TBClose.Size = New System.Drawing.Size(75, 23) - Me.TBClose.TabIndex = 29 + Me.TBClose.TabIndex = 45 Me.TBClose.Text = "Close" Me.TBClose.UseVisualStyleBackColor = True ' @@ -601,7 +607,7 @@ Partial Class dgFind Me.TBDelete.Location = New System.Drawing.Point(298, 412) Me.TBDelete.Name = "TBDelete" Me.TBDelete.Size = New System.Drawing.Size(75, 23) - Me.TBDelete.TabIndex = 30 + Me.TBDelete.TabIndex = 44 Me.TBDelete.Text = "Delete" Me.TBDelete.UseVisualStyleBackColor = True ' @@ -610,7 +616,7 @@ Partial Class dgFind Me.TBrl.Location = New System.Drawing.Point(26, 354) Me.TBrl.Name = "TBrl" Me.TBrl.Size = New System.Drawing.Size(178, 23) - Me.TBrl.TabIndex = 33 + Me.TBrl.TabIndex = 30 Me.TBrl.Text = "Replace with Label:" Me.TBrl.UseVisualStyleBackColor = True ' @@ -619,34 +625,34 @@ Partial Class dgFind Me.TBrv.Location = New System.Drawing.Point(26, 383) Me.TBrv.Name = "TBrv" Me.TBrv.Size = New System.Drawing.Size(178, 23) - Me.TBrv.TabIndex = 35 + Me.TBrv.TabIndex = 32 Me.TBrv.Text = "Replace with Value:" Me.TBrv.UseVisualStyleBackColor = True ' 'Label5 ' - Me.Label5.Location = New System.Drawing.Point(221, 103) + Me.Label5.Location = New System.Drawing.Point(203, 103) Me.Label5.Name = "Label5" Me.Label5.Size = New System.Drawing.Size(39, 16) - Me.Label5.TabIndex = 50 + Me.Label5.TabIndex = 8 Me.Label5.Text = "to" Me.Label5.TextAlign = System.Drawing.ContentAlignment.MiddleCenter ' 'Label6 ' - Me.Label6.Location = New System.Drawing.Point(221, 74) + Me.Label6.Location = New System.Drawing.Point(203, 74) Me.Label6.Name = "Label6" Me.Label6.Size = New System.Drawing.Size(39, 16) - Me.Label6.TabIndex = 51 + Me.Label6.TabIndex = 4 Me.Label6.Text = "to" Me.Label6.TextAlign = System.Drawing.ContentAlignment.MiddleCenter ' 'Label7 ' - Me.Label7.Location = New System.Drawing.Point(221, 132) + Me.Label7.Location = New System.Drawing.Point(203, 132) Me.Label7.Name = "Label7" Me.Label7.Size = New System.Drawing.Size(39, 16) - Me.Label7.TabIndex = 52 + Me.Label7.TabIndex = 12 Me.Label7.Text = "to" Me.Label7.TextAlign = System.Drawing.ContentAlignment.MiddleCenter ' @@ -658,7 +664,7 @@ Partial Class dgFind Me.Ttv.Minimum = New Decimal(New Integer() {1, 0, 0, 262144}) Me.Ttv.Name = "Ttv" Me.Ttv.Size = New System.Drawing.Size(70, 23) - Me.Ttv.TabIndex = 34 + Me.Ttv.TabIndex = 33 Me.Ttv.Value = New Decimal(New Integer() {120, 0, 0, 0}) ' 'Ttl @@ -667,7 +673,7 @@ Partial Class dgFind Me.Ttl.MaxLength = 2 Me.Ttl.Name = "Ttl" Me.Ttl.Size = New System.Drawing.Size(70, 23) - Me.Ttl.TabIndex = 32 + Me.Ttl.TabIndex = 31 Me.Ttl.Text = "01" ' 'Label8 @@ -715,111 +721,117 @@ Partial Class dgFind Me.PictureBox1.TabIndex = 48 Me.PictureBox1.TabStop = False ' - 'cbx1 - ' - Me.cbx1.Appearance = System.Windows.Forms.Appearance.Button - Me.cbx1.Checked = True - Me.cbx1.CheckState = System.Windows.Forms.CheckState.Checked - Me.cbx1.FlatStyle = System.Windows.Forms.FlatStyle.System - Me.cbx1.Location = New System.Drawing.Point(152, 16) - Me.cbx1.Name = "cbx1" - Me.cbx1.Size = New System.Drawing.Size(100, 25) - Me.cbx1.TabIndex = 58 - Me.cbx1.Tag = "1" - Me.cbx1.Text = "Selected" - Me.cbx1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter - Me.cbx1.UseVisualStyleBackColor = False - ' - 'cbx2 - ' - Me.cbx2.Appearance = System.Windows.Forms.Appearance.Button - Me.cbx2.Checked = True - Me.cbx2.CheckState = System.Windows.Forms.CheckState.Checked - Me.cbx2.FlatStyle = System.Windows.Forms.FlatStyle.System - Me.cbx2.Location = New System.Drawing.Point(152, 41) - Me.cbx2.Name = "cbx2" - Me.cbx2.Size = New System.Drawing.Size(100, 25) - Me.cbx2.TabIndex = 59 - Me.cbx2.Tag = "1" - Me.cbx2.Text = "Unselected" - Me.cbx2.TextAlign = System.Drawing.ContentAlignment.MiddleCenter - Me.cbx2.UseVisualStyleBackColor = False - ' - 'cbx3 - ' - Me.cbx3.Appearance = System.Windows.Forms.Appearance.Button - Me.cbx3.Checked = True - Me.cbx3.CheckState = System.Windows.Forms.CheckState.Checked - Me.cbx3.FlatStyle = System.Windows.Forms.FlatStyle.System - Me.cbx3.Location = New System.Drawing.Point(258, 16) - Me.cbx3.Name = "cbx3" - Me.cbx3.Size = New System.Drawing.Size(70, 25) - Me.cbx3.TabIndex = 60 - Me.cbx3.Tag = "1" - Me.cbx3.Text = "Short" - Me.cbx3.TextAlign = System.Drawing.ContentAlignment.MiddleCenter - Me.cbx3.UseVisualStyleBackColor = False + 'CBSelected + ' + Me.CBSelected.Appearance = System.Windows.Forms.Appearance.Button + Me.CBSelected.Checked = True + Me.CBSelected.CheckState = System.Windows.Forms.CheckState.Checked + Me.CBSelected.Dock = System.Windows.Forms.DockStyle.Fill + Me.CBSelected.FlatStyle = System.Windows.Forms.FlatStyle.System + Me.CBSelected.Location = New System.Drawing.Point(3, 3) + Me.CBSelected.Name = "CBSelected" + Me.CBSelected.Size = New System.Drawing.Size(64, 21) + Me.CBSelected.TabIndex = 0 + Me.CBSelected.Tag = "1" + Me.CBSelected.Text = "Selected" + Me.CBSelected.TextAlign = System.Drawing.ContentAlignment.MiddleCenter + Me.CBSelected.UseVisualStyleBackColor = False + ' + 'CBUnselected + ' + Me.CBUnselected.Appearance = System.Windows.Forms.Appearance.Button + Me.CBUnselected.Checked = True + Me.CBUnselected.CheckState = System.Windows.Forms.CheckState.Checked + Me.CBUnselected.Dock = System.Windows.Forms.DockStyle.Fill + Me.CBUnselected.FlatStyle = System.Windows.Forms.FlatStyle.System + Me.CBUnselected.Location = New System.Drawing.Point(3, 30) + Me.CBUnselected.Name = "CBUnselected" + Me.CBUnselected.Size = New System.Drawing.Size(64, 21) + Me.CBUnselected.TabIndex = 1 + Me.CBUnselected.Tag = "1" + Me.CBUnselected.Text = "Unselected" + Me.CBUnselected.TextAlign = System.Drawing.ContentAlignment.MiddleCenter + Me.CBUnselected.UseVisualStyleBackColor = False + ' + 'CBShort + ' + Me.CBShort.Appearance = System.Windows.Forms.Appearance.Button + Me.CBShort.Checked = True + Me.CBShort.CheckState = System.Windows.Forms.CheckState.Checked + Me.CBShort.Dock = System.Windows.Forms.DockStyle.Fill + Me.CBShort.FlatStyle = System.Windows.Forms.FlatStyle.System + Me.CBShort.Location = New System.Drawing.Point(73, 3) + Me.CBShort.Name = "CBShort" + Me.CBShort.Size = New System.Drawing.Size(38, 21) + Me.CBShort.TabIndex = 2 + Me.CBShort.Tag = "1" + Me.CBShort.Text = "Short" + Me.CBShort.TextAlign = System.Drawing.ContentAlignment.MiddleCenter + Me.CBShort.UseVisualStyleBackColor = False ' 'TBUnselect ' Me.TBUnselect.Location = New System.Drawing.Point(379, 354) Me.TBUnselect.Name = "TBUnselect" Me.TBUnselect.Size = New System.Drawing.Size(75, 23) - Me.TBUnselect.TabIndex = 31 + Me.TBUnselect.TabIndex = 41 Me.TBUnselect.Text = "Unselect" Me.TBUnselect.UseVisualStyleBackColor = True ' - 'cbx4 - ' - Me.cbx4.Appearance = System.Windows.Forms.Appearance.Button - Me.cbx4.Checked = True - Me.cbx4.CheckState = System.Windows.Forms.CheckState.Checked - Me.cbx4.FlatStyle = System.Windows.Forms.FlatStyle.System - Me.cbx4.Location = New System.Drawing.Point(258, 41) - Me.cbx4.Name = "cbx4" - Me.cbx4.Size = New System.Drawing.Size(70, 25) - Me.cbx4.TabIndex = 61 - Me.cbx4.Tag = "1" - Me.cbx4.Text = "Long" - Me.cbx4.TextAlign = System.Drawing.ContentAlignment.MiddleCenter - Me.cbx4.UseVisualStyleBackColor = False - ' - 'cbx5 - ' - Me.cbx5.Appearance = System.Windows.Forms.Appearance.Button - Me.cbx5.Checked = True - Me.cbx5.CheckState = System.Windows.Forms.CheckState.Checked - Me.cbx5.FlatStyle = System.Windows.Forms.FlatStyle.System - Me.cbx5.Location = New System.Drawing.Point(334, 16) - Me.cbx5.Name = "cbx5" - Me.cbx5.Size = New System.Drawing.Size(80, 25) - Me.cbx5.TabIndex = 62 - Me.cbx5.Tag = "1" - Me.cbx5.Text = "Hidden" - Me.cbx5.TextAlign = System.Drawing.ContentAlignment.MiddleCenter - Me.cbx5.UseVisualStyleBackColor = False - ' - 'cbx6 - ' - Me.cbx6.Appearance = System.Windows.Forms.Appearance.Button - Me.cbx6.Checked = True - Me.cbx6.CheckState = System.Windows.Forms.CheckState.Checked - Me.cbx6.FlatStyle = System.Windows.Forms.FlatStyle.System - Me.cbx6.Location = New System.Drawing.Point(334, 41) - Me.cbx6.Name = "cbx6" - Me.cbx6.Size = New System.Drawing.Size(80, 25) - Me.cbx6.TabIndex = 63 - Me.cbx6.Tag = "1" - Me.cbx6.Text = "Visible" - Me.cbx6.TextAlign = System.Drawing.ContentAlignment.MiddleCenter - Me.cbx6.UseVisualStyleBackColor = False + 'CBLong + ' + Me.CBLong.Appearance = System.Windows.Forms.Appearance.Button + Me.CBLong.Checked = True + Me.CBLong.CheckState = System.Windows.Forms.CheckState.Checked + Me.CBLong.Dock = System.Windows.Forms.DockStyle.Fill + Me.CBLong.FlatStyle = System.Windows.Forms.FlatStyle.System + Me.CBLong.Location = New System.Drawing.Point(73, 30) + Me.CBLong.Name = "CBLong" + Me.CBLong.Size = New System.Drawing.Size(38, 21) + Me.CBLong.TabIndex = 3 + Me.CBLong.Tag = "1" + Me.CBLong.Text = "Long" + Me.CBLong.TextAlign = System.Drawing.ContentAlignment.MiddleCenter + Me.CBLong.UseVisualStyleBackColor = False + ' + 'CBHidden + ' + Me.CBHidden.Appearance = System.Windows.Forms.Appearance.Button + Me.CBHidden.Checked = True + Me.CBHidden.CheckState = System.Windows.Forms.CheckState.Checked + Me.CBHidden.Dock = System.Windows.Forms.DockStyle.Fill + Me.CBHidden.FlatStyle = System.Windows.Forms.FlatStyle.System + Me.CBHidden.Location = New System.Drawing.Point(117, 3) + Me.CBHidden.Name = "CBHidden" + Me.CBHidden.Size = New System.Drawing.Size(49, 21) + Me.CBHidden.TabIndex = 4 + Me.CBHidden.Tag = "1" + Me.CBHidden.Text = "Hidden" + Me.CBHidden.TextAlign = System.Drawing.ContentAlignment.MiddleCenter + Me.CBHidden.UseVisualStyleBackColor = False + ' + 'CBVisible + ' + Me.CBVisible.Appearance = System.Windows.Forms.Appearance.Button + Me.CBVisible.Checked = True + Me.CBVisible.CheckState = System.Windows.Forms.CheckState.Checked + Me.CBVisible.Dock = System.Windows.Forms.DockStyle.Fill + Me.CBVisible.FlatStyle = System.Windows.Forms.FlatStyle.System + Me.CBVisible.Location = New System.Drawing.Point(117, 30) + Me.CBVisible.Name = "CBVisible" + Me.CBVisible.Size = New System.Drawing.Size(49, 21) + Me.CBVisible.TabIndex = 5 + Me.CBVisible.Tag = "1" + Me.CBVisible.Text = "Visible" + Me.CBVisible.TextAlign = System.Drawing.ContentAlignment.MiddleCenter + Me.CBVisible.UseVisualStyleBackColor = False ' 'FNotePrevious ' Me.FNotePrevious.Location = New System.Drawing.Point(298, 383) Me.FNotePrevious.Name = "FNotePrevious" Me.FNotePrevious.Size = New System.Drawing.Size(75, 23) - Me.FNotePrevious.TabIndex = 64 + Me.FNotePrevious.TabIndex = 42 Me.FNotePrevious.Text = "Previous" Me.FNotePrevious.UseVisualStyleBackColor = True ' @@ -829,24 +841,117 @@ Partial Class dgFind Me.FNoteNext.Location = New System.Drawing.Point(379, 383) Me.FNoteNext.Name = "FNoteNext" Me.FNoteNext.Size = New System.Drawing.Size(75, 23) - Me.FNoteNext.TabIndex = 65 + Me.FNoteNext.TabIndex = 43 Me.FNoteNext.Text = "Next" Me.FNoteNext.UseVisualStyleBackColor = True ' - 'diagFind + 'TLNoteRange + ' + Me.TLNoteRange.ColumnCount = 5 + Me.TLNoteRange.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 70.0!)) + Me.TLNoteRange.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 44.0!)) + Me.TLNoteRange.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 55.0!)) + Me.TLNoteRange.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 70.0!)) + Me.TLNoteRange.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 50.0!)) + Me.TLNoteRange.Controls.Add(Me.CBError, 3, 1) + Me.TLNoteRange.Controls.Add(Me.CBSelected, 0, 0) + Me.TLNoteRange.Controls.Add(Me.CBUnselected, 0, 1) + Me.TLNoteRange.Controls.Add(Me.CBShort, 1, 0) + Me.TLNoteRange.Controls.Add(Me.CBVisible, 2, 1) + Me.TLNoteRange.Controls.Add(Me.CBLong, 1, 1) + Me.TLNoteRange.Controls.Add(Me.CBHidden, 2, 0) + Me.TLNoteRange.Controls.Add(Me.CBNoError, 3, 0) + Me.TLNoteRange.Controls.Add(Me.CBComment, 4, 1) + Me.TLNoteRange.Controls.Add(Me.CBNotComment, 4, 0) + Me.TLNoteRange.Location = New System.Drawing.Point(134, 12) + Me.TLNoteRange.Name = "TLNoteRange" + Me.TLNoteRange.RowCount = 2 + Me.TLNoteRange.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50.0!)) + Me.TLNoteRange.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50.0!)) + Me.TLNoteRange.Size = New System.Drawing.Size(328, 54) + Me.TLNoteRange.TabIndex = 1 + ' + 'CBError + ' + Me.CBError.Appearance = System.Windows.Forms.Appearance.Button + Me.CBError.BackColor = System.Drawing.SystemColors.Control + Me.CBError.Checked = True + Me.CBError.CheckState = System.Windows.Forms.CheckState.Checked + Me.CBError.Dock = System.Windows.Forms.DockStyle.Fill + Me.CBError.FlatStyle = System.Windows.Forms.FlatStyle.System + Me.CBError.ForeColor = System.Drawing.SystemColors.ButtonShadow + Me.CBError.Location = New System.Drawing.Point(172, 30) + Me.CBError.Name = "CBError" + Me.CBError.Size = New System.Drawing.Size(64, 21) + Me.CBError.TabIndex = 7 + Me.CBError.Tag = "1" + Me.CBError.Text = "Error" + Me.CBError.TextAlign = System.Drawing.ContentAlignment.MiddleCenter + Me.CBError.UseVisualStyleBackColor = False + ' + 'CBNoError + ' + Me.CBNoError.Appearance = System.Windows.Forms.Appearance.Button + Me.CBNoError.BackColor = System.Drawing.SystemColors.Control + Me.CBNoError.Checked = True + Me.CBNoError.CheckState = System.Windows.Forms.CheckState.Checked + Me.CBNoError.Dock = System.Windows.Forms.DockStyle.Fill + Me.CBNoError.FlatStyle = System.Windows.Forms.FlatStyle.System + Me.CBNoError.ForeColor = System.Drawing.SystemColors.ButtonShadow + Me.CBNoError.Location = New System.Drawing.Point(172, 3) + Me.CBNoError.Name = "CBNoError" + Me.CBNoError.Size = New System.Drawing.Size(64, 21) + Me.CBNoError.TabIndex = 6 + Me.CBNoError.Tag = "1" + Me.CBNoError.Text = "No Error" + Me.CBNoError.TextAlign = System.Drawing.ContentAlignment.MiddleCenter + Me.CBNoError.UseVisualStyleBackColor = False + ' + 'CBComment + ' + Me.CBComment.Appearance = System.Windows.Forms.Appearance.Button + Me.CBComment.BackColor = System.Drawing.SystemColors.Control + Me.CBComment.Checked = True + Me.CBComment.CheckState = System.Windows.Forms.CheckState.Checked + Me.CBComment.Dock = System.Windows.Forms.DockStyle.Fill + Me.CBComment.FlatStyle = System.Windows.Forms.FlatStyle.System + Me.CBComment.ForeColor = System.Drawing.SystemColors.ButtonShadow + Me.CBComment.Location = New System.Drawing.Point(242, 30) + Me.CBComment.Name = "CBComment" + Me.CBComment.Size = New System.Drawing.Size(83, 21) + Me.CBComment.TabIndex = 9 + Me.CBComment.Tag = "1" + Me.CBComment.Text = "Comment" + Me.CBComment.TextAlign = System.Drawing.ContentAlignment.MiddleCenter + Me.CBComment.UseVisualStyleBackColor = False + ' + 'CBNotComment + ' + Me.CBNotComment.Appearance = System.Windows.Forms.Appearance.Button + Me.CBNotComment.BackColor = System.Drawing.SystemColors.Control + Me.CBNotComment.Checked = True + Me.CBNotComment.CheckState = System.Windows.Forms.CheckState.Checked + Me.CBNotComment.Dock = System.Windows.Forms.DockStyle.Fill + Me.CBNotComment.FlatStyle = System.Windows.Forms.FlatStyle.System + Me.CBNotComment.ForeColor = System.Drawing.SystemColors.ButtonShadow + Me.CBNotComment.Location = New System.Drawing.Point(242, 3) + Me.CBNotComment.Name = "CBNotComment" + Me.CBNotComment.Size = New System.Drawing.Size(83, 21) + Me.CBNotComment.TabIndex = 8 + Me.CBNotComment.Tag = "1" + Me.CBNotComment.Text = "Not Comment" + Me.CBNotComment.TextAlign = System.Drawing.ContentAlignment.MiddleCenter + Me.CBNotComment.UseVisualStyleBackColor = False + ' + 'dgFind ' Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None Me.CancelButton = Me.TBClose Me.ClientSize = New System.Drawing.Size(474, 451) + Me.Controls.Add(Me.TLNoteRange) Me.Controls.Add(Me.FNoteNext) Me.Controls.Add(Me.FNotePrevious) - Me.Controls.Add(Me.cbx6) - Me.Controls.Add(Me.cbx5) - Me.Controls.Add(Me.cbx4) Me.Controls.Add(Me.TBUnselect) - Me.Controls.Add(Me.cbx3) - Me.Controls.Add(Me.cbx2) - Me.Controls.Add(Me.cbx1) Me.Controls.Add(Me.Label9) Me.Controls.Add(Me.Label8) Me.Controls.Add(Me.PictureBox3) @@ -881,7 +986,7 @@ Partial Class dgFind Me.Icon = CType(resources.GetObject("$this.Icon"), System.Drawing.Icon) Me.MaximizeBox = False Me.MinimizeBox = False - Me.Name = "diagFind" + Me.Name = "dgFind" Me.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent Me.Text = "Find / Delete / Replace" Me.TopMost = True @@ -894,6 +999,7 @@ Partial Class dgFind CType(Me.PictureBox3, System.ComponentModel.ISupportInitialize).EndInit() CType(Me.PictureBox2, System.ComponentModel.ISupportInitialize).EndInit() CType(Me.PictureBox1, System.ComponentModel.ISupportInitialize).EndInit() + Me.TLNoteRange.ResumeLayout(False) Me.ResumeLayout(False) Me.PerformLayout() @@ -949,13 +1055,18 @@ Partial Class dgFind Friend WithEvents PictureBox3 As System.Windows.Forms.PictureBox Friend WithEvents Label8 As System.Windows.Forms.Label Friend WithEvents Label9 As System.Windows.Forms.Label - Friend WithEvents cbx1 As System.Windows.Forms.CheckBox - Friend WithEvents cbx2 As System.Windows.Forms.CheckBox - Friend WithEvents cbx3 As System.Windows.Forms.CheckBox + Friend WithEvents CBSelected As System.Windows.Forms.CheckBox + Friend WithEvents CBUnselected As System.Windows.Forms.CheckBox + Friend WithEvents CBShort As System.Windows.Forms.CheckBox Friend WithEvents TBUnselect As System.Windows.Forms.Button - Friend WithEvents cbx4 As System.Windows.Forms.CheckBox - Friend WithEvents cbx5 As System.Windows.Forms.CheckBox - Friend WithEvents cbx6 As System.Windows.Forms.CheckBox + Friend WithEvents CBLong As System.Windows.Forms.CheckBox + Friend WithEvents CBHidden As System.Windows.Forms.CheckBox + Friend WithEvents CBVisible As System.Windows.Forms.CheckBox Friend WithEvents FNotePrevious As Button Friend WithEvents FNoteNext As Button + Friend WithEvents TLNoteRange As TableLayoutPanel + Friend WithEvents CBNoError As CheckBox + Friend WithEvents CBNotComment As CheckBox + Friend WithEvents CBComment As CheckBox + Friend WithEvents CBError As CheckBox End Class diff --git a/iBMSC/Dialogs/dgFind.resx b/iBMSC/Dialogs/dgFind.resx index 466547ffc..ea37a3183 100644 --- a/iBMSC/Dialogs/dgFind.resx +++ b/iBMSC/Dialogs/dgFind.resx @@ -112,12 +112,12 @@ 2.0 - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - + AAABAAMAICAAAAEAIACoEAAANgAAABgYAAABACAAiAkAAN4QAAAQEAAAAQAgAGgEAABmGgAAKAAAACAA diff --git a/iBMSC/Dialogs/dgFind.vb b/iBMSC/Dialogs/dgFind.vb index b70acb60d..f3d5f0c56 100644 --- a/iBMSC/Dialogs/dgFind.vb +++ b/iBMSC/Dialogs/dgFind.vb @@ -3,11 +3,9 @@ Public Class dgFind Dim msg1 As String = "Error" Dim msg2 As String = "Invalid label." - Public Sub New(ByVal xbCol As Integer, ByVal xmsg1 As String, ByVal xmsg2 As String) + Public Sub New(ByVal xbCol As Integer) InitializeComponent() bCol = xbCol - msg1 = xmsg1 - msg2 = xmsg2 End Sub Private Sub CloseDialog(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBClose.Click @@ -41,6 +39,9 @@ Public Class dgFind 'Dim xS() As String = Form1.lpfdr Me.Text = MainWindow.TBFind.Text + msg1 = Strings.Messages.Err + msg2 = Strings.Messages.InvalidLabel + Label1.Text = Strings.fFind.NoteRange Label2.Text = Strings.fFind.MeasureRange Label3.Text = Strings.fFind.LabelRange @@ -49,12 +50,12 @@ Public Class dgFind Label6.Text = Strings.fFind.to_ Label7.Text = Strings.fFind.to_ - cbx1.Text = Strings.fFind.Selected - cbx2.Text = Strings.fFind.UnSelected - cbx3.Text = Strings.fFind.ShortNote - cbx4.Text = Strings.fFind.LongNote - cbx5.Text = Strings.fFind.Hidden - cbx6.Text = Strings.fFind.Visible + CBSelected.Text = Strings.fFind.Selected + CBUnselected.Text = Strings.fFind.UnSelected + CBShort.Text = Strings.fFind.ShortNote + CBLong.Text = Strings.fFind.LongNote + CBHidden.Text = Strings.fFind.Hidden + CBVisible.Text = Strings.fFind.Visible Label8.Text = Strings.fFind.Column BSAll.Text = Strings.fFind.SelectAll @@ -69,7 +70,7 @@ Public Class dgFind TBDelete.Text = Strings.fFind.Delete_ TBClose.Text = Strings.fFind.Close_ - For xI1 As Integer = 27 To bCol + For xI1 As Integer = MainWindow.niB To bCol Dim xCB As New CheckBox With xCB .Appearance = Appearance.Button @@ -135,9 +136,10 @@ Public Class dgFind End If Next - Dim ArrCB() As CheckBox = {cbx1, cbx2, cbx3, cbx4, cbx5, cbx6} + ' Make an array of Note Range checkboxes manually + Dim ArrCB() As CheckBox = {CBSelected, CBUnselected, CBShort, CBLong, CBHidden, CBVisible, CBNoError, CBError, CBNotComment, CBComment} Dim xRange(UBound(ArrCB)) As Boolean - For i = 0 To UBound(ArrCB) + For i = 0 To UBound(xRange) xRange(i) = ArrCB(i).Checked Next diff --git a/iBMSC/MainWindow.designer.vb b/iBMSC/MainWindow.designer.vb index 7bd93b45f..e314fdde8 100644 --- a/iBMSC/MainWindow.designer.vb +++ b/iBMSC/MainWindow.designer.vb @@ -25,16 +25,16 @@ Partial Class MainWindow Me.TBLangDef = New System.Windows.Forms.ToolStripMenuItem() Me.TBLangRefresh = New System.Windows.Forms.ToolStripMenuItem() Me.ToolStripSeparator9 = New System.Windows.Forms.ToolStripSeparator() - Me.TBLanguage = New System.Windows.Forms.ToolStripDropDownButton() Me.mnLanguage = New System.Windows.Forms.ToolStripMenuItem() + Me.TBLanguage = New System.Windows.Forms.ToolStripDropDownButton() Me.cmnTheme = New System.Windows.Forms.ContextMenuStrip(Me.components) Me.TBThemeDef = New System.Windows.Forms.ToolStripMenuItem() Me.TBThemeSave = New System.Windows.Forms.ToolStripMenuItem() Me.TBThemeRefresh = New System.Windows.Forms.ToolStripMenuItem() Me.TBThemeLoadComptability = New System.Windows.Forms.ToolStripMenuItem() Me.ToolStripSeparator6 = New System.Windows.Forms.ToolStripSeparator() - Me.mnTheme = New System.Windows.Forms.ToolStripMenuItem() Me.TBTheme = New System.Windows.Forms.ToolStripDropDownButton() + Me.mnTheme = New System.Windows.Forms.ToolStripMenuItem() Me.Timer1 = New System.Windows.Forms.Timer(Me.components) Me.Menu1 = New System.Windows.Forms.ContextMenuStrip(Me.components) Me.MInsert = New System.Windows.Forms.ToolStripMenuItem() @@ -135,7 +135,6 @@ Partial Class MainWindow Me.POBSRandom = New System.Windows.Forms.ToolStripMenuItem() Me.POBHRandom = New System.Windows.Forms.ToolStripMenuItem() Me.POBSort = New System.Windows.Forms.ToolStripMenuItem() - Me.POConvert = New System.Windows.Forms.ToolStripDropDownButton() Me.mnPreview = New System.Windows.Forms.ToolStripMenuItem() Me.mnPlayB = New System.Windows.Forms.ToolStripMenuItem() Me.mnPlay = New System.Windows.Forms.ToolStripMenuItem() @@ -144,6 +143,7 @@ Partial Class MainWindow Me.mnTechnicalErrorCheck = New System.Windows.Forms.ToolStripMenuItem() Me.mnTOTAL = New System.Windows.Forms.ToolStripMenuItem() Me.ToolStripSeparator13 = New System.Windows.Forms.ToolStripSeparator() + Me.POConvert = New System.Windows.Forms.ToolStripDropDownButton() Me.TBMain = New System.Windows.Forms.ToolStrip() Me.TBNew = New System.Windows.Forms.ToolStripButton() Me.TBOpen = New System.Windows.Forms.ToolStripSplitButton() @@ -475,7 +475,7 @@ Partial Class MainWindow ' Me.cmnLanguage.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.TBLangDef, Me.TBLangRefresh, Me.ToolStripSeparator9}) Me.cmnLanguage.Name = "cmnLanguage" - Me.cmnLanguage.OwnerItem = Me.mnLanguage + Me.cmnLanguage.OwnerItem = Me.TBLanguage Me.cmnLanguage.Size = New System.Drawing.Size(121, 54) ' 'TBLangDef @@ -496,6 +496,14 @@ Partial Class MainWindow Me.ToolStripSeparator9.Name = "ToolStripSeparator9" Me.ToolStripSeparator9.Size = New System.Drawing.Size(117, 6) ' + 'mnLanguage + ' + Me.mnLanguage.DropDown = Me.cmnLanguage + Me.mnLanguage.Image = Global.iBMSC.My.Resources.Resources.x16Language + Me.mnLanguage.Name = "mnLanguage" + Me.mnLanguage.Size = New System.Drawing.Size(253, 22) + Me.mnLanguage.Text = "&Language" + ' 'TBLanguage ' Me.TBLanguage.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image @@ -506,19 +514,11 @@ Partial Class MainWindow Me.TBLanguage.Size = New System.Drawing.Size(29, 22) Me.TBLanguage.Text = "Language" ' - 'mnLanguage - ' - Me.mnLanguage.DropDown = Me.cmnLanguage - Me.mnLanguage.Image = Global.iBMSC.My.Resources.Resources.x16Language - Me.mnLanguage.Name = "mnLanguage" - Me.mnLanguage.Size = New System.Drawing.Size(253, 22) - Me.mnLanguage.Text = "&Language" - ' 'cmnTheme ' Me.cmnTheme.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.TBThemeDef, Me.TBThemeSave, Me.TBThemeRefresh, Me.TBThemeLoadComptability, Me.ToolStripSeparator6}) Me.cmnTheme.Name = "cmnLanguage" - Me.cmnTheme.OwnerItem = Me.TBTheme + Me.cmnTheme.OwnerItem = Me.mnTheme Me.cmnTheme.Size = New System.Drawing.Size(246, 98) ' 'TBThemeDef @@ -552,14 +552,6 @@ Partial Class MainWindow Me.ToolStripSeparator6.Name = "ToolStripSeparator6" Me.ToolStripSeparator6.Size = New System.Drawing.Size(242, 6) ' - 'mnTheme - ' - Me.mnTheme.DropDown = Me.cmnTheme - Me.mnTheme.Image = Global.iBMSC.My.Resources.Resources.x16Theme - Me.mnTheme.Name = "mnTheme" - Me.mnTheme.Size = New System.Drawing.Size(253, 22) - Me.mnTheme.Text = "&Theme" - ' 'TBTheme ' Me.TBTheme.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image @@ -570,6 +562,14 @@ Partial Class MainWindow Me.TBTheme.Size = New System.Drawing.Size(29, 22) Me.TBTheme.Text = "Theme" ' + 'mnTheme + ' + Me.mnTheme.DropDown = Me.cmnTheme + Me.mnTheme.Image = Global.iBMSC.My.Resources.Resources.x16Theme + Me.mnTheme.Name = "mnTheme" + Me.mnTheme.Size = New System.Drawing.Size(253, 22) + Me.mnTheme.Text = "&Theme" + ' 'Timer1 ' Me.Timer1.Interval = 15 @@ -1193,7 +1193,7 @@ Partial Class MainWindow ' Me.cmnConversion.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.POBLong, Me.POBShort, Me.POBLongShort, Me.POBLongObjNT, Me.POBLongNTObj, Me.ToolStripSeparator25, Me.POBAutoLongVPosition, Me.POBAutoLongColumn, Me.ToolStripSeparator10, Me.POBHidden, Me.POBVisible, Me.POBHiddenVisible, Me.ToolStripSeparator11, Me.POBModify, Me.POBMirror, Me.POBFlip, Me.POBRandom, Me.POBRRandom, Me.POBSRandom, Me.POBHRandom, Me.POBSort}) Me.cmnConversion.Name = "cmnLanguage" - Me.cmnConversion.OwnerItem = Me.mnConversion + Me.cmnConversion.OwnerItem = Me.POConvert Me.cmnConversion.Size = New System.Drawing.Size(237, 418) ' 'POBLong @@ -1340,16 +1340,6 @@ Partial Class MainWindow Me.POBSort.Size = New System.Drawing.Size(236, 22) Me.POBSort.Text = "S&ort" ' - 'POConvert - ' - Me.POConvert.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image - Me.POConvert.DropDown = Me.cmnConversion - Me.POConvert.Image = Global.iBMSC.My.Resources.Resources.ConvertNotes - Me.POConvert.ImageTransparentColor = System.Drawing.Color.Magenta - Me.POConvert.Name = "POConvert" - Me.POConvert.Size = New System.Drawing.Size(29, 22) - Me.POConvert.Text = "Convert Notes" - ' 'mnPreview ' Me.mnPreview.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.mnPlayB, Me.mnPlay, Me.mnStop}) @@ -1407,6 +1397,16 @@ Partial Class MainWindow Me.ToolStripSeparator13.Name = "ToolStripSeparator13" Me.ToolStripSeparator13.Size = New System.Drawing.Size(247, 6) ' + 'POConvert + ' + Me.POConvert.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image + Me.POConvert.DropDown = Me.cmnConversion + Me.POConvert.Image = Global.iBMSC.My.Resources.Resources.ConvertNotes + Me.POConvert.ImageTransparentColor = System.Drawing.Color.Magenta + Me.POConvert.Name = "POConvert" + Me.POConvert.Size = New System.Drawing.Size(29, 22) + Me.POConvert.Text = "Convert Notes" + ' 'TBMain ' Me.TBMain.AccessibleRole = System.Windows.Forms.AccessibleRole.ToolBar diff --git a/iBMSC/MainWindow.vb b/iBMSC/MainWindow.vb index 95d982072..83cda0912 100644 --- a/iBMSC/MainWindow.vb +++ b/iBMSC/MainWindow.vb @@ -4276,7 +4276,7 @@ Public Class MainWindow Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo For xI1 As Integer = 1 To UBound(Notes) - If Not Notes(xI1).Selected Or Notes(xI1).Ghost Then Continue For + If Not Notes(xI1).Selected OrElse Notes(xI1).Landmine OrElse Notes(xI1).Ghost Then Continue For Me.RedoHiddenNoteModify(Notes(xI1), True, True, xUndo, xRedo) Notes(xI1).Hidden = True @@ -4310,7 +4310,7 @@ Public Class MainWindow Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo For xI1 As Integer = 1 To UBound(Notes) - If Not Notes(xI1).Selected Or Notes(xI1).Ghost Then Continue For + If Not Notes(xI1).Selected OrElse Notes(xI1).Landmine OrElse Notes(xI1).Ghost Then Continue For Me.RedoHiddenNoteModify(Notes(xI1), Not Notes(xI1).Hidden, True, xUndo, xRedo) Notes(xI1).Hidden = Not Notes(xI1).Hidden @@ -4705,10 +4705,14 @@ Public Class MainWindow Private Sub TBFind_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBFind.Click, mnFind.Click - Dim xDiag As New dgFind(gColumns, Strings.Messages.Err, Strings.Messages.InvalidLabel) + Dim xDiag As New dgFind(gColumns) xDiag.Show() End Sub + ''' + ''' Checks if the note satisfies the input measure, label, and value ranges. + ''' + Private Function fdrCheck(ByVal xNote As Note) As Boolean Return xNote.VPosition >= MeasureBottom(fdriMesL) And xNote.VPosition < MeasureBottom(fdriMesU) + MeasureLength(fdriMesU) AndAlso CBool(IIf(IsColumnNumeric(xNote.ColumnIndex), @@ -4742,6 +4746,10 @@ Public Class MainWindow Dim xbLong As Boolean = iRange(3) Dim xbHidden As Boolean = iRange(4) Dim xbVisible As Boolean = iRange(5) + Dim xbNoError As Boolean = iRange(6) + Dim xbError As Boolean = iRange(7) + Dim xbNotComment As Boolean = iRange(8) + Dim xbComment As Boolean = iRange(9) Select Case fdrFunction Case "TBSelect" @@ -4754,7 +4762,12 @@ Public Class MainWindow For xI1 As Integer = 1 To UBound(Notes) With Notes(xI1) If ((xbSel And xSel(xI1)) Or (xbUnsel And Not xSel(xI1))) AndAlso - nEnabled(.ColumnIndex) AndAlso fdrRangeS(xbShort, xbLong, CBool(IIf(NTInput, .Length, .LongNote))) And fdrRangeS(xbVisible, xbHidden, .Hidden) Then + nEnabled(.ColumnIndex) AndAlso + fdrRangeS(xbShort, xbLong, CBool(IIf(NTInput, .Length, .LongNote))) AndAlso + fdrRangeS(xbVisible, xbHidden, .Hidden) AndAlso + fdrRangeS(xbNoError, xbError, .HasError) AndAlso + fdrRangeS(xbNotComment, xbComment, .Comment) Then + .Selected = fdrCheck(Notes(xI1)) End If End With @@ -4769,7 +4782,12 @@ Public Class MainWindow For xI1 As Integer = 1 To UBound(Notes) With Notes(xI1) If ((xbSel And xSel(xI1)) Or (xbUnsel And Not xSel(xI1))) AndAlso - nEnabled(.ColumnIndex) AndAlso fdrRangeS(xbShort, xbLong, CBool(IIf(NTInput, .Length, .LongNote))) And fdrRangeS(xbVisible, xbHidden, .Hidden) Then + nEnabled(.ColumnIndex) AndAlso + fdrRangeS(xbShort, xbLong, CBool(IIf(NTInput, .Length, .LongNote))) AndAlso + fdrRangeS(xbVisible, xbHidden, .Hidden) AndAlso + fdrRangeS(xbNoError, xbError, .HasError) AndAlso + fdrRangeS(xbNotComment, xbComment, .Comment) Then + .Selected = Not fdrCheck(Notes(xI1)) End If End With @@ -4784,9 +4802,14 @@ Public Class MainWindow For xI1 = UBound(Notes) To 1 Step -1 With Notes(xI1) If ((xbSel And xSel(xI1)) Or (xbUnsel And Not xSel(xI1))) AndAlso - nEnabled(.ColumnIndex) AndAlso fdrRangeS(xbShort, xbLong, CBool(IIf(NTInput, .Length, .LongNote))) And fdrRangeS(xbVisible, xbHidden, .Hidden) AndAlso + nEnabled(.ColumnIndex) AndAlso + fdrRangeS(xbShort, xbLong, CBool(IIf(NTInput, .Length, .LongNote))) AndAlso + fdrRangeS(xbVisible, xbHidden, .Hidden) AndAlso + fdrRangeS(xbNoError, xbError, .HasError) AndAlso + fdrRangeS(xbNotComment, xbComment, .Comment) AndAlso fdrCheck(Notes(xI1)) AndAlso .VPosition < -PanelVScroll(PanelFocus) Then + PanelVScroll(PanelFocus) = - .VPosition .Selected = True Exit For @@ -4803,9 +4826,14 @@ Public Class MainWindow For xI1 = 1 To UBound(Notes) With Notes(xI1) If ((xbSel And xSel(xI1)) Or (xbUnsel And Not xSel(xI1))) AndAlso - nEnabled(.ColumnIndex) AndAlso fdrRangeS(xbShort, xbLong, CBool(IIf(NTInput, .Length, .LongNote))) And fdrRangeS(xbVisible, xbHidden, .Hidden) AndAlso + nEnabled(.ColumnIndex) AndAlso + fdrRangeS(xbShort, xbLong, CBool(IIf(NTInput, .Length, .LongNote))) AndAlso + fdrRangeS(xbVisible, xbHidden, .Hidden) AndAlso + fdrRangeS(xbNoError, xbError, .HasError) AndAlso + fdrRangeS(xbNotComment, xbComment, .Comment) AndAlso fdrCheck(Notes(xI1)) AndAlso .VPosition > -PanelVScroll(PanelFocus) Then + PanelVScroll(PanelFocus) = - .VPosition .Selected = True Exit For @@ -4821,8 +4849,15 @@ Public Class MainWindow Dim xI1 As Integer = 1 Do While xI1 <= UBound(Notes) With Notes(xI1) - If (Not .Ghost) AndAlso ((xbSel And .Selected) Or (xbUnsel And Not .Selected)) AndAlso - fdrCheck(Notes(xI1)) AndAlso nEnabled(.ColumnIndex) AndAlso fdrRangeS(xbShort, xbLong, CBool(IIf(NTInput, .Length, .LongNote))) And fdrRangeS(xbVisible, xbHidden, .Hidden) Then + If (Not .Ghost) AndAlso + ((xbSel And .Selected) Or (xbUnsel And Not .Selected)) AndAlso + fdrCheck(Notes(xI1)) AndAlso + nEnabled(.ColumnIndex) AndAlso + fdrRangeS(xbShort, xbLong, CBool(IIf(NTInput, .Length, .LongNote))) AndAlso + fdrRangeS(xbVisible, xbHidden, .Hidden) AndAlso + fdrRangeS(xbNoError, xbError, .HasError) AndAlso + fdrRangeS(xbNotComment, xbComment, .Comment) Then + RedoRemoveNote(Notes(xI1), xUndo, xRedo) RemoveNote(xI1, False) Else @@ -4845,8 +4880,16 @@ Public Class MainWindow 'Main process For xI1 As Integer = 1 To UBound(Notes) With Notes(xI1) - If (Not .Ghost) AndAlso ((xbSel And .Selected) Or (xbUnsel And Not .Selected)) AndAlso - fdrCheck(Notes(xI1)) AndAlso nEnabled(.ColumnIndex) And Not IsColumnNumeric(.ColumnIndex) AndAlso fdrRangeS(xbShort, xbLong, CBool(IIf(NTInput, .Length, .LongNote))) And fdrRangeS(xbVisible, xbHidden, .Hidden) Then + If (Not .Ghost) AndAlso + ((xbSel And .Selected) Or (xbUnsel And Not .Selected)) AndAlso + fdrCheck(Notes(xI1)) AndAlso + nEnabled(.ColumnIndex) AndAlso + Not IsColumnNumeric(.ColumnIndex) AndAlso + fdrRangeS(xbShort, xbLong, CBool(IIf(NTInput, .Length, .LongNote))) AndAlso + fdrRangeS(xbVisible, xbHidden, .Hidden) AndAlso + fdrRangeS(xbNoError, xbError, .HasError) AndAlso + fdrRangeS(xbNotComment, xbComment, .Comment) Then + Me.RedoRelabelNote(Notes(xI1), xxLbl, xUndo, xRedo) .Value = xxLbl End If @@ -4862,8 +4905,16 @@ Public Class MainWindow 'Main process For xI1 As Integer = 1 To UBound(Notes) With Notes(xI1) - If (Not .Ghost) AndAlso ((xbSel And .Selected) Or (xbUnsel And Not .Selected)) AndAlso - fdrCheck(Notes(xI1)) AndAlso nEnabled(.ColumnIndex) And IsColumnNumeric(.ColumnIndex) AndAlso fdrRangeS(xbShort, xbLong, CBool(IIf(NTInput, .Length, .LongNote))) And fdrRangeS(xbVisible, xbHidden, .Hidden) Then + If (Not .Ghost) AndAlso + ((xbSel And .Selected) Or (xbUnsel And Not .Selected)) AndAlso + fdrCheck(Notes(xI1)) AndAlso + nEnabled(.ColumnIndex) AndAlso + IsColumnNumeric(.ColumnIndex) AndAlso + fdrRangeS(xbShort, xbLong, CBool(IIf(NTInput, .Length, .LongNote))) AndAlso + fdrRangeS(xbVisible, xbHidden, .Hidden) AndAlso + fdrRangeS(xbNoError, xbError, .HasError) AndAlso + fdrRangeS(xbNotComment, xbComment, .Comment) Then + Me.RedoRelabelNote(Notes(xI1), xReplaceVal, xUndo, xRedo) .Value = xReplaceVal End If diff --git a/iBMSC/My Project/AssemblyInfo.vb b/iBMSC/My Project/AssemblyInfo.vb index 547412dd0..def348d3e 100644 --- a/iBMSC/My Project/AssemblyInfo.vb +++ b/iBMSC/My Project/AssemblyInfo.vb @@ -30,7 +30,7 @@ Imports System.Resources ' by using the '*' as shown below: ' - - + + \ No newline at end of file diff --git a/iBMSC/PanelEvents.vb b/iBMSC/PanelEvents.vb index 61ea7662e..4b55d0e3f 100644 --- a/iBMSC/PanelEvents.vb +++ b/iBMSC/PanelEvents.vb @@ -48,7 +48,7 @@ Partial Public Class MainWindow ' Check for specific categories first For Each P In KbCategory - ' Check which categories to skip + ' Check if category should be ignored Select Case P Case KbCategorySP If Not HasSelectedNotes Then Continue For From 8d829d7878b137c7088d2b74d385972c01450c9b Mon Sep 17 00:00:00 2001 From: psyk2642 <60137590+psyk2642@users.noreply.github.com> Date: Mon, 9 May 2022 19:17:16 +0800 Subject: [PATCH 159/257] Waveform Drawing Optimization 2 DrawNotes can be used to find the last note to draw from, and then go backwards. --- iBMSC/PanelDraw.vb | 53 ++++++++++------------------------------------ 1 file changed, 11 insertions(+), 42 deletions(-) diff --git a/iBMSC/PanelDraw.vb b/iBMSC/PanelDraw.vb index 80685700d..7032dc61b 100644 --- a/iBMSC/PanelDraw.vb +++ b/iBMSC/PanelDraw.vb @@ -11,6 +11,9 @@ Partial Public Class MainWindow Dim bufferlist As Dictionary(Of Integer, BufferedGraphics) = New Dictionary(Of Integer, BufferedGraphics) Dim rectList As Dictionary(Of Integer, Rectangle) = New Dictionary(Of Integer, Rectangle) + + Dim LastNoteToDraw As Integer = 0 + Private Function GetBuffer(xIndex As Integer, DisplayRect As Rectangle) As BufferedGraphics If bufferlist.ContainsKey(xIndex) AndAlso rectList.Item(xIndex) = DisplayRect Then Return bufferlist.Item(xIndex) @@ -334,7 +337,7 @@ Partial Public Class MainWindow Dim xLowerBorder As Single = Math.Abs(xVS) - vo.kHeight / gxHeight For xI1 = 0 To UBound(Notes) - If Notes(xI1).VPosition > xUpperBorder Then Exit For + If Notes(xI1).VPosition > xUpperBorder Then LastNoteToDraw = xI1 - 1 : Exit For If Not IsNoteVisible(xI1, xTHeight, xVS) Then Continue For If NTInput Then DrawNoteNT(Notes(xI1), e1, xHS, xVS, xTHeight, COverridesActive) @@ -564,49 +567,15 @@ Partial Public Class MainWindow Private Sub DrawWaveformNotes(e1 As BufferedGraphics, xTHeight As Integer, xHS As Integer, xVSR As Integer) ' Optimized - Dim xVEnd As Double = Notes(UBound(Notes)).VPosition - If -PanelVScroll(PanelFocus) < xVEnd / 3 Then ' Apply waveforms from the beginning - For xINote = 1 To UBound(Notes) - If Not IsColumnSound(Notes(xINote).ColumnIndex) Then Continue For - - If -PanelVScroll(PanelFocus) + spMain(PanelFocus).Height / gxHeight < Notes(xINote).VPosition Then Exit For ' If note is higher than window - If Not (-PanelVScroll(PanelFocus) > GetVPositionFromTime(GetTimeFromVPosition(Notes(xINote).VPosition) + wLWAV(CInt(Notes(xINote).Value / 10000)).Duration)) AndAlso _ ' If note waveform is not lower than window - Not Notes(xINote).Comment Then ' Note is not comment - DrawWaveform(e1, xTHeight, xHS, xVSR, xINote) - End If - Next - - ElseIf -PanelVScroll(PanelFocus) > xVEnd * 2 / 3 Then ' Apply waveforms from the end - For xINote = UBound(Notes) To 1 Step -1 - If Not IsColumnSound(Notes(xINote).ColumnIndex) Then Continue For + For xINote = LastNoteToDraw To 1 Step -1 + If Not IsColumnSound(Notes(xINote).ColumnIndex) Then Continue For - If -PanelVScroll(PanelFocus) > GetVPositionFromTime(GetTimeFromVPosition(Notes(xINote).VPosition) + wLWAV(CInt(Notes(xINote).Value / 10000)).Duration) Then Exit For ' If note waveform is not lower than window - If Not (-PanelVScroll(PanelFocus) + spMain(PanelFocus).Height / gxHeight < Notes(xINote).VPosition) AndAlso ' If note is higher than window + If -PanelVScroll(PanelFocus) > GetVPositionFromTime(GetTimeFromVPosition(Notes(xINote).VPosition) + wLWAV(CInt(Notes(xINote).Value / 10000)).Duration) Then Exit For ' If note waveform is not lower than window + If Not (-PanelVScroll(PanelFocus) + spMain(PanelFocus).Height / gxHeight < Notes(xINote).VPosition) AndAlso ' If note is higher than window Not Notes(xINote).Comment Then ' Note is not comment - DrawWaveform(e1, xTHeight, xHS, xVSR, xINote) - End If - Next - - Else ' Apply waveforms from the middle, going both down and up - Dim xIMid As Integer = CInt(UBound(Notes) / 2) - - For xINote = xIMid To 1 Step -1 - If Not IsColumnSound(Notes(xINote).ColumnIndex) Then Continue For - - If -PanelVScroll(PanelFocus) > GetVPositionFromTime(GetTimeFromVPosition(Notes(xINote).VPosition) + wLWAV(CInt(Notes(xINote).Value / 10000)).Duration) Then Exit For ' If note waveform is lower than window - If Not Notes(xINote).Comment Then ' Note is not comment - DrawWaveform(e1, xTHeight, xHS, xVSR, xINote) - End If - Next - For xINote = xIMid To UBound(Notes) - If Not IsColumnSound(Notes(xINote).ColumnIndex) Then Continue For - - If -PanelVScroll(PanelFocus) + spMain(PanelFocus).Height / gxHeight < Notes(xINote).VPosition Then Exit For ' If note is higher than window - If Not Notes(xINote).Comment Then ' Note is not comment - DrawWaveform(e1, xTHeight, xHS, xVSR, xINote) - End If - Next - End If + DrawWaveform(e1, xTHeight, xHS, xVSR, xINote) + End If + Next End Sub ''' From e9d6c4aa0029a908ed77ddda4a9ab3b1deb30a91 Mon Sep 17 00:00:00 2001 From: psyk2642 <60137590+psyk2642@users.noreply.github.com> Date: Mon, 9 May 2022 22:08:24 +0800 Subject: [PATCH 160/257] Update PanelDraw.vb --- iBMSC/PanelDraw.vb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/iBMSC/PanelDraw.vb b/iBMSC/PanelDraw.vb index 7032dc61b..cd1cca148 100644 --- a/iBMSC/PanelDraw.vb +++ b/iBMSC/PanelDraw.vb @@ -571,8 +571,8 @@ Partial Public Class MainWindow If Not IsColumnSound(Notes(xINote).ColumnIndex) Then Continue For If -PanelVScroll(PanelFocus) > GetVPositionFromTime(GetTimeFromVPosition(Notes(xINote).VPosition) + wLWAV(CInt(Notes(xINote).Value / 10000)).Duration) Then Exit For ' If note waveform is not lower than window - If Not (-PanelVScroll(PanelFocus) + spMain(PanelFocus).Height / gxHeight < Notes(xINote).VPosition) AndAlso ' If note is higher than window - Not Notes(xINote).Comment Then ' Note is not comment + ' Not (-PanelVScroll(PanelFocus) + spMain(PanelFocus).Height / gxHeight < Notes(xINote).VPosition) AndAlso ' Boolean for if note is higher than window, if ever needed + If Not Notes(xINote).Comment Then ' Note is not comment DrawWaveform(e1, xTHeight, xHS, xVSR, xINote) End If Next From 53d960af201d0d74965f94004e7b1625f08ee10a Mon Sep 17 00:00:00 2001 From: psyk2642 <60137590+psyk2642@users.noreply.github.com> Date: Tue, 10 May 2022 23:04:18 +0800 Subject: [PATCH 161/257] Update ChartIO.vb --- iBMSC/ChartIO.vb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/iBMSC/ChartIO.vb b/iBMSC/ChartIO.vb index c7b62fd50..f97330f02 100644 --- a/iBMSC/ChartIO.vb +++ b/iBMSC/ChartIO.vb @@ -104,7 +104,7 @@ Partial Public Class MainWindow Continue For ElseIf SWIC(sLineTrim, "#BPM") Then 'If BPM #### - Notes(0).Value = CLng(CDbl(Mid(sLineTrim, Len("#BPM") + 1).Trim)) * 10000 + Notes(0).Value = CLng(CDbl(Mid(sLineTrim, Len("#BPM") + 1).Trim) * 10000) THBPM.Value = CDec(Notes(0).Value / 10000) Continue For From 4b21685226fdc686a0699e0ce99dc8ec178d8267 Mon Sep 17 00:00:00 2001 From: psyk2642 <60137590+psyk2642@users.noreply.github.com> Date: Tue, 10 May 2022 23:50:39 +0800 Subject: [PATCH 162/257] Code Fix - Reverted the code "optimization" for waveform display because it will skip some notes by trying to find the endpoint backwards. - Made it so that the waveforms load as you click the Show Waveform button and the application doesn't hang anymore. --- iBMSC/MainWindow.designer.vb | 70 +++++++++++++++++++----------------- iBMSC/MainWindow.resx | 5 ++- iBMSC/MainWindow.vb | 18 +++++++--- iBMSC/PanelDraw.vb | 7 ++-- 4 files changed, 58 insertions(+), 42 deletions(-) diff --git a/iBMSC/MainWindow.designer.vb b/iBMSC/MainWindow.designer.vb index e314fdde8..473f36c80 100644 --- a/iBMSC/MainWindow.designer.vb +++ b/iBMSC/MainWindow.designer.vb @@ -25,16 +25,16 @@ Partial Class MainWindow Me.TBLangDef = New System.Windows.Forms.ToolStripMenuItem() Me.TBLangRefresh = New System.Windows.Forms.ToolStripMenuItem() Me.ToolStripSeparator9 = New System.Windows.Forms.ToolStripSeparator() - Me.mnLanguage = New System.Windows.Forms.ToolStripMenuItem() Me.TBLanguage = New System.Windows.Forms.ToolStripDropDownButton() + Me.mnLanguage = New System.Windows.Forms.ToolStripMenuItem() Me.cmnTheme = New System.Windows.Forms.ContextMenuStrip(Me.components) Me.TBThemeDef = New System.Windows.Forms.ToolStripMenuItem() Me.TBThemeSave = New System.Windows.Forms.ToolStripMenuItem() Me.TBThemeRefresh = New System.Windows.Forms.ToolStripMenuItem() Me.TBThemeLoadComptability = New System.Windows.Forms.ToolStripMenuItem() Me.ToolStripSeparator6 = New System.Windows.Forms.ToolStripSeparator() - Me.TBTheme = New System.Windows.Forms.ToolStripDropDownButton() Me.mnTheme = New System.Windows.Forms.ToolStripMenuItem() + Me.TBTheme = New System.Windows.Forms.ToolStripDropDownButton() Me.Timer1 = New System.Windows.Forms.Timer(Me.components) Me.Menu1 = New System.Windows.Forms.ContextMenuStrip(Me.components) Me.MInsert = New System.Windows.Forms.ToolStripMenuItem() @@ -135,6 +135,7 @@ Partial Class MainWindow Me.POBSRandom = New System.Windows.Forms.ToolStripMenuItem() Me.POBHRandom = New System.Windows.Forms.ToolStripMenuItem() Me.POBSort = New System.Windows.Forms.ToolStripMenuItem() + Me.POConvert = New System.Windows.Forms.ToolStripDropDownButton() Me.mnPreview = New System.Windows.Forms.ToolStripMenuItem() Me.mnPlayB = New System.Windows.Forms.ToolStripMenuItem() Me.mnPlay = New System.Windows.Forms.ToolStripMenuItem() @@ -143,7 +144,6 @@ Partial Class MainWindow Me.mnTechnicalErrorCheck = New System.Windows.Forms.ToolStripMenuItem() Me.mnTOTAL = New System.Windows.Forms.ToolStripMenuItem() Me.ToolStripSeparator13 = New System.Windows.Forms.ToolStripSeparator() - Me.POConvert = New System.Windows.Forms.ToolStripDropDownButton() Me.TBMain = New System.Windows.Forms.ToolStrip() Me.TBNew = New System.Windows.Forms.ToolStripButton() Me.TBOpen = New System.Windows.Forms.ToolStripSplitButton() @@ -391,6 +391,7 @@ Partial Class MainWindow Me.TimerPreviewNote = New System.Windows.Forms.Timer(Me.components) Me.TimerRefreshPanel = New System.Windows.Forms.Timer(Me.components) Me.TimerExternalExpansion = New System.Windows.Forms.Timer(Me.components) + Me.TimerLoadWaveform = New System.Windows.Forms.Timer(Me.components) Me.cmnLanguage.SuspendLayout() Me.cmnTheme.SuspendLayout() Me.Menu1.SuspendLayout() @@ -475,7 +476,7 @@ Partial Class MainWindow ' Me.cmnLanguage.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.TBLangDef, Me.TBLangRefresh, Me.ToolStripSeparator9}) Me.cmnLanguage.Name = "cmnLanguage" - Me.cmnLanguage.OwnerItem = Me.TBLanguage + Me.cmnLanguage.OwnerItem = Me.mnLanguage Me.cmnLanguage.Size = New System.Drawing.Size(121, 54) ' 'TBLangDef @@ -496,14 +497,6 @@ Partial Class MainWindow Me.ToolStripSeparator9.Name = "ToolStripSeparator9" Me.ToolStripSeparator9.Size = New System.Drawing.Size(117, 6) ' - 'mnLanguage - ' - Me.mnLanguage.DropDown = Me.cmnLanguage - Me.mnLanguage.Image = Global.iBMSC.My.Resources.Resources.x16Language - Me.mnLanguage.Name = "mnLanguage" - Me.mnLanguage.Size = New System.Drawing.Size(253, 22) - Me.mnLanguage.Text = "&Language" - ' 'TBLanguage ' Me.TBLanguage.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image @@ -514,11 +507,19 @@ Partial Class MainWindow Me.TBLanguage.Size = New System.Drawing.Size(29, 22) Me.TBLanguage.Text = "Language" ' + 'mnLanguage + ' + Me.mnLanguage.DropDown = Me.cmnLanguage + Me.mnLanguage.Image = Global.iBMSC.My.Resources.Resources.x16Language + Me.mnLanguage.Name = "mnLanguage" + Me.mnLanguage.Size = New System.Drawing.Size(253, 22) + Me.mnLanguage.Text = "&Language" + ' 'cmnTheme ' Me.cmnTheme.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.TBThemeDef, Me.TBThemeSave, Me.TBThemeRefresh, Me.TBThemeLoadComptability, Me.ToolStripSeparator6}) Me.cmnTheme.Name = "cmnLanguage" - Me.cmnTheme.OwnerItem = Me.mnTheme + Me.cmnTheme.OwnerItem = Me.TBTheme Me.cmnTheme.Size = New System.Drawing.Size(246, 98) ' 'TBThemeDef @@ -552,6 +553,14 @@ Partial Class MainWindow Me.ToolStripSeparator6.Name = "ToolStripSeparator6" Me.ToolStripSeparator6.Size = New System.Drawing.Size(242, 6) ' + 'mnTheme + ' + Me.mnTheme.DropDown = Me.cmnTheme + Me.mnTheme.Image = Global.iBMSC.My.Resources.Resources.x16Theme + Me.mnTheme.Name = "mnTheme" + Me.mnTheme.Size = New System.Drawing.Size(253, 22) + Me.mnTheme.Text = "&Theme" + ' 'TBTheme ' Me.TBTheme.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image @@ -562,14 +571,6 @@ Partial Class MainWindow Me.TBTheme.Size = New System.Drawing.Size(29, 22) Me.TBTheme.Text = "Theme" ' - 'mnTheme - ' - Me.mnTheme.DropDown = Me.cmnTheme - Me.mnTheme.Image = Global.iBMSC.My.Resources.Resources.x16Theme - Me.mnTheme.Name = "mnTheme" - Me.mnTheme.Size = New System.Drawing.Size(253, 22) - Me.mnTheme.Text = "&Theme" - ' 'Timer1 ' Me.Timer1.Interval = 15 @@ -1193,7 +1194,7 @@ Partial Class MainWindow ' Me.cmnConversion.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.POBLong, Me.POBShort, Me.POBLongShort, Me.POBLongObjNT, Me.POBLongNTObj, Me.ToolStripSeparator25, Me.POBAutoLongVPosition, Me.POBAutoLongColumn, Me.ToolStripSeparator10, Me.POBHidden, Me.POBVisible, Me.POBHiddenVisible, Me.ToolStripSeparator11, Me.POBModify, Me.POBMirror, Me.POBFlip, Me.POBRandom, Me.POBRRandom, Me.POBSRandom, Me.POBHRandom, Me.POBSort}) Me.cmnConversion.Name = "cmnLanguage" - Me.cmnConversion.OwnerItem = Me.POConvert + Me.cmnConversion.OwnerItem = Me.mnConversion Me.cmnConversion.Size = New System.Drawing.Size(237, 418) ' 'POBLong @@ -1340,6 +1341,16 @@ Partial Class MainWindow Me.POBSort.Size = New System.Drawing.Size(236, 22) Me.POBSort.Text = "S&ort" ' + 'POConvert + ' + Me.POConvert.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image + Me.POConvert.DropDown = Me.cmnConversion + Me.POConvert.Image = Global.iBMSC.My.Resources.Resources.ConvertNotes + Me.POConvert.ImageTransparentColor = System.Drawing.Color.Magenta + Me.POConvert.Name = "POConvert" + Me.POConvert.Size = New System.Drawing.Size(29, 22) + Me.POConvert.Text = "Convert Notes" + ' 'mnPreview ' Me.mnPreview.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.mnPlayB, Me.mnPlay, Me.mnStop}) @@ -1397,16 +1408,6 @@ Partial Class MainWindow Me.ToolStripSeparator13.Name = "ToolStripSeparator13" Me.ToolStripSeparator13.Size = New System.Drawing.Size(247, 6) ' - 'POConvert - ' - Me.POConvert.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image - Me.POConvert.DropDown = Me.cmnConversion - Me.POConvert.Image = Global.iBMSC.My.Resources.Resources.ConvertNotes - Me.POConvert.ImageTransparentColor = System.Drawing.Color.Magenta - Me.POConvert.Name = "POConvert" - Me.POConvert.Size = New System.Drawing.Size(29, 22) - Me.POConvert.Text = "Convert Notes" - ' 'TBMain ' Me.TBMain.AccessibleRole = System.Windows.Forms.AccessibleRole.ToolBar @@ -4350,6 +4351,10 @@ Partial Class MainWindow ' Me.TimerExternalExpansion.Interval = 3000 ' + 'TimerLoadWaveform + ' + Me.TimerLoadWaveform.Interval = 15 + ' 'MainWindow ' Me.AllowDrop = True @@ -4850,4 +4855,5 @@ Partial Class MainWindow Friend WithEvents THPlayLevel As TextBox Friend WithEvents mnPastePattern As ToolStripMenuItem Friend WithEvents TBPastePattern As ToolStripButton + Friend WithEvents TimerLoadWaveform As Timer End Class diff --git a/iBMSC/MainWindow.resx b/iBMSC/MainWindow.resx index a23945c28..994ec25f8 100644 --- a/iBMSC/MainWindow.resx +++ b/iBMSC/MainWindow.resx @@ -200,12 +200,15 @@ 1499, 17 - 197, 56 + 362, 56 17, 17 + 182, 56 + + 17, 56 diff --git a/iBMSC/MainWindow.vb b/iBMSC/MainWindow.vb index 83cda0912..9a1786dae 100644 --- a/iBMSC/MainWindow.vb +++ b/iBMSC/MainWindow.vb @@ -68,6 +68,7 @@ Public Class MainWindow Dim ShowFileName As Boolean = False Dim ShowWaveform As Boolean = False Dim WaveformLoaded As Boolean = False + Dim WaveformLoadId As Integer = 1 Dim BeepWhileSaved As Boolean = True Dim BPMx1296 As Boolean = False @@ -2431,13 +2432,20 @@ Public Class MainWindow mnShowWaveform.Checked = ShowWaveform TBShowWaveform.Image = CType(IIf(ShowWaveform, My.Resources.x16ShowWaveform, My.Resources.x16ShowWaveformN), Image) mnShowWaveform.Image = CType(IIf(ShowWaveform, My.Resources.x16ShowWaveform, My.Resources.x16ShowWaveformN), Image) - If Not WaveformLoaded AndAlso ShowWaveform Then - For xI1 = 1 To UBound(wLWAV) - If hWAV(xI1) <> "" Then wLWAV(xI1) = LoadWaveForm(ExcludeFileName(FileName) & "\" & hWAV(xI1)) - Next + If Not WaveformLoaded AndAlso ShowWaveform Then TimerLoadWaveform.Enabled = True + End Sub + + Private Sub TimerLoadWaveform_Tick(sender As Object, e As EventArgs) Handles TimerLoadWaveform.Tick + Console.WriteLine(WaveformLoadId) + If hWAV(WaveformLoadId) <> "" Then wLWAV(WaveformLoadId) = LoadWaveForm(ExcludeFileName(FileName) & "\" & hWAV(WaveformLoadId)) + If WaveformLoadId = UBound(wLWAV) Then + WaveformLoadId = 1 + TimerLoadWaveform.Enabled = False WaveformLoaded = True + Exit Sub End If - RefreshPanelAll() + + WaveformLoadId += 1 End Sub Private Sub TBCut_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBCut.Click, mnCut.Click diff --git a/iBMSC/PanelDraw.vb b/iBMSC/PanelDraw.vb index cd1cca148..7dcc85896 100644 --- a/iBMSC/PanelDraw.vb +++ b/iBMSC/PanelDraw.vb @@ -566,12 +566,11 @@ Partial Public Class MainWindow ''' Private Sub DrawWaveformNotes(e1 As BufferedGraphics, xTHeight As Integer, xHS As Integer, xVSR As Integer) - ' Optimized - For xINote = LastNoteToDraw To 1 Step -1 + ' Turns out I don't know how to optimize it + For xINote = 1 To UBound(Notes) + If -PanelVScroll(PanelFocus) + spMain(PanelFocus).Height / gxHeight < Notes(xINote).VPosition Then Exit For ' if note is higher than window If Not IsColumnSound(Notes(xINote).ColumnIndex) Then Continue For - If -PanelVScroll(PanelFocus) > GetVPositionFromTime(GetTimeFromVPosition(Notes(xINote).VPosition) + wLWAV(CInt(Notes(xINote).Value / 10000)).Duration) Then Exit For ' If note waveform is not lower than window - ' Not (-PanelVScroll(PanelFocus) + spMain(PanelFocus).Height / gxHeight < Notes(xINote).VPosition) AndAlso ' Boolean for if note is higher than window, if ever needed If Not Notes(xINote).Comment Then ' Note is not comment DrawWaveform(e1, xTHeight, xHS, xVSR, xINote) End If From bcfa5cec1744cd438635fc15f46458db514b0e08 Mon Sep 17 00:00:00 2001 From: psyk2642 <60137590+psyk2642@users.noreply.github.com> Date: Wed, 11 May 2022 22:59:48 +0800 Subject: [PATCH 163/257] Optimized DrawWaveformNotes 2: Electric Boogaloo - Optimized DrawWaveformNotes function again. This time, the end VPosition is stored per note so the calculations don't need to be done live (as long as no new notes are added). If new notes are added, the function will need to be turned off and back on once to reload the values. --- iBMSC/MainWindow.designer.vb | 66 ++++++++++++++++++------------------ iBMSC/MainWindow.resx | 2 +- iBMSC/MainWindow.vb | 24 ++++++++++++- iBMSC/PanelDraw.vb | 18 ++++++++-- 4 files changed, 72 insertions(+), 38 deletions(-) diff --git a/iBMSC/MainWindow.designer.vb b/iBMSC/MainWindow.designer.vb index 473f36c80..abf175157 100644 --- a/iBMSC/MainWindow.designer.vb +++ b/iBMSC/MainWindow.designer.vb @@ -25,16 +25,16 @@ Partial Class MainWindow Me.TBLangDef = New System.Windows.Forms.ToolStripMenuItem() Me.TBLangRefresh = New System.Windows.Forms.ToolStripMenuItem() Me.ToolStripSeparator9 = New System.Windows.Forms.ToolStripSeparator() - Me.TBLanguage = New System.Windows.Forms.ToolStripDropDownButton() Me.mnLanguage = New System.Windows.Forms.ToolStripMenuItem() + Me.TBLanguage = New System.Windows.Forms.ToolStripDropDownButton() Me.cmnTheme = New System.Windows.Forms.ContextMenuStrip(Me.components) Me.TBThemeDef = New System.Windows.Forms.ToolStripMenuItem() Me.TBThemeSave = New System.Windows.Forms.ToolStripMenuItem() Me.TBThemeRefresh = New System.Windows.Forms.ToolStripMenuItem() Me.TBThemeLoadComptability = New System.Windows.Forms.ToolStripMenuItem() Me.ToolStripSeparator6 = New System.Windows.Forms.ToolStripSeparator() - Me.mnTheme = New System.Windows.Forms.ToolStripMenuItem() Me.TBTheme = New System.Windows.Forms.ToolStripDropDownButton() + Me.mnTheme = New System.Windows.Forms.ToolStripMenuItem() Me.Timer1 = New System.Windows.Forms.Timer(Me.components) Me.Menu1 = New System.Windows.Forms.ContextMenuStrip(Me.components) Me.MInsert = New System.Windows.Forms.ToolStripMenuItem() @@ -135,7 +135,6 @@ Partial Class MainWindow Me.POBSRandom = New System.Windows.Forms.ToolStripMenuItem() Me.POBHRandom = New System.Windows.Forms.ToolStripMenuItem() Me.POBSort = New System.Windows.Forms.ToolStripMenuItem() - Me.POConvert = New System.Windows.Forms.ToolStripDropDownButton() Me.mnPreview = New System.Windows.Forms.ToolStripMenuItem() Me.mnPlayB = New System.Windows.Forms.ToolStripMenuItem() Me.mnPlay = New System.Windows.Forms.ToolStripMenuItem() @@ -144,6 +143,7 @@ Partial Class MainWindow Me.mnTechnicalErrorCheck = New System.Windows.Forms.ToolStripMenuItem() Me.mnTOTAL = New System.Windows.Forms.ToolStripMenuItem() Me.ToolStripSeparator13 = New System.Windows.Forms.ToolStripSeparator() + Me.POConvert = New System.Windows.Forms.ToolStripDropDownButton() Me.TBMain = New System.Windows.Forms.ToolStrip() Me.TBNew = New System.Windows.Forms.ToolStripButton() Me.TBOpen = New System.Windows.Forms.ToolStripSplitButton() @@ -476,7 +476,7 @@ Partial Class MainWindow ' Me.cmnLanguage.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.TBLangDef, Me.TBLangRefresh, Me.ToolStripSeparator9}) Me.cmnLanguage.Name = "cmnLanguage" - Me.cmnLanguage.OwnerItem = Me.mnLanguage + Me.cmnLanguage.OwnerItem = Me.TBLanguage Me.cmnLanguage.Size = New System.Drawing.Size(121, 54) ' 'TBLangDef @@ -497,6 +497,14 @@ Partial Class MainWindow Me.ToolStripSeparator9.Name = "ToolStripSeparator9" Me.ToolStripSeparator9.Size = New System.Drawing.Size(117, 6) ' + 'mnLanguage + ' + Me.mnLanguage.DropDown = Me.cmnLanguage + Me.mnLanguage.Image = Global.iBMSC.My.Resources.Resources.x16Language + Me.mnLanguage.Name = "mnLanguage" + Me.mnLanguage.Size = New System.Drawing.Size(253, 22) + Me.mnLanguage.Text = "&Language" + ' 'TBLanguage ' Me.TBLanguage.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image @@ -507,19 +515,11 @@ Partial Class MainWindow Me.TBLanguage.Size = New System.Drawing.Size(29, 22) Me.TBLanguage.Text = "Language" ' - 'mnLanguage - ' - Me.mnLanguage.DropDown = Me.cmnLanguage - Me.mnLanguage.Image = Global.iBMSC.My.Resources.Resources.x16Language - Me.mnLanguage.Name = "mnLanguage" - Me.mnLanguage.Size = New System.Drawing.Size(253, 22) - Me.mnLanguage.Text = "&Language" - ' 'cmnTheme ' Me.cmnTheme.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.TBThemeDef, Me.TBThemeSave, Me.TBThemeRefresh, Me.TBThemeLoadComptability, Me.ToolStripSeparator6}) Me.cmnTheme.Name = "cmnLanguage" - Me.cmnTheme.OwnerItem = Me.TBTheme + Me.cmnTheme.OwnerItem = Me.mnTheme Me.cmnTheme.Size = New System.Drawing.Size(246, 98) ' 'TBThemeDef @@ -553,14 +553,6 @@ Partial Class MainWindow Me.ToolStripSeparator6.Name = "ToolStripSeparator6" Me.ToolStripSeparator6.Size = New System.Drawing.Size(242, 6) ' - 'mnTheme - ' - Me.mnTheme.DropDown = Me.cmnTheme - Me.mnTheme.Image = Global.iBMSC.My.Resources.Resources.x16Theme - Me.mnTheme.Name = "mnTheme" - Me.mnTheme.Size = New System.Drawing.Size(253, 22) - Me.mnTheme.Text = "&Theme" - ' 'TBTheme ' Me.TBTheme.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image @@ -571,6 +563,14 @@ Partial Class MainWindow Me.TBTheme.Size = New System.Drawing.Size(29, 22) Me.TBTheme.Text = "Theme" ' + 'mnTheme + ' + Me.mnTheme.DropDown = Me.cmnTheme + Me.mnTheme.Image = Global.iBMSC.My.Resources.Resources.x16Theme + Me.mnTheme.Name = "mnTheme" + Me.mnTheme.Size = New System.Drawing.Size(253, 22) + Me.mnTheme.Text = "&Theme" + ' 'Timer1 ' Me.Timer1.Interval = 15 @@ -1194,7 +1194,7 @@ Partial Class MainWindow ' Me.cmnConversion.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.POBLong, Me.POBShort, Me.POBLongShort, Me.POBLongObjNT, Me.POBLongNTObj, Me.ToolStripSeparator25, Me.POBAutoLongVPosition, Me.POBAutoLongColumn, Me.ToolStripSeparator10, Me.POBHidden, Me.POBVisible, Me.POBHiddenVisible, Me.ToolStripSeparator11, Me.POBModify, Me.POBMirror, Me.POBFlip, Me.POBRandom, Me.POBRRandom, Me.POBSRandom, Me.POBHRandom, Me.POBSort}) Me.cmnConversion.Name = "cmnLanguage" - Me.cmnConversion.OwnerItem = Me.mnConversion + Me.cmnConversion.OwnerItem = Me.POConvert Me.cmnConversion.Size = New System.Drawing.Size(237, 418) ' 'POBLong @@ -1341,16 +1341,6 @@ Partial Class MainWindow Me.POBSort.Size = New System.Drawing.Size(236, 22) Me.POBSort.Text = "S&ort" ' - 'POConvert - ' - Me.POConvert.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image - Me.POConvert.DropDown = Me.cmnConversion - Me.POConvert.Image = Global.iBMSC.My.Resources.Resources.ConvertNotes - Me.POConvert.ImageTransparentColor = System.Drawing.Color.Magenta - Me.POConvert.Name = "POConvert" - Me.POConvert.Size = New System.Drawing.Size(29, 22) - Me.POConvert.Text = "Convert Notes" - ' 'mnPreview ' Me.mnPreview.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.mnPlayB, Me.mnPlay, Me.mnStop}) @@ -1408,6 +1398,16 @@ Partial Class MainWindow Me.ToolStripSeparator13.Name = "ToolStripSeparator13" Me.ToolStripSeparator13.Size = New System.Drawing.Size(247, 6) ' + 'POConvert + ' + Me.POConvert.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image + Me.POConvert.DropDown = Me.cmnConversion + Me.POConvert.Image = Global.iBMSC.My.Resources.Resources.ConvertNotes + Me.POConvert.ImageTransparentColor = System.Drawing.Color.Magenta + Me.POConvert.Name = "POConvert" + Me.POConvert.Size = New System.Drawing.Size(29, 22) + Me.POConvert.Text = "Convert Notes" + ' 'TBMain ' Me.TBMain.AccessibleRole = System.Windows.Forms.AccessibleRole.ToolBar @@ -4353,7 +4353,7 @@ Partial Class MainWindow ' 'TimerLoadWaveform ' - Me.TimerLoadWaveform.Interval = 15 + Me.TimerLoadWaveform.Interval = 1 ' 'MainWindow ' diff --git a/iBMSC/MainWindow.resx b/iBMSC/MainWindow.resx index 994ec25f8..222ee1838 100644 --- a/iBMSC/MainWindow.resx +++ b/iBMSC/MainWindow.resx @@ -212,7 +212,7 @@ 17, 56 - 65 + 89 diff --git a/iBMSC/MainWindow.vb b/iBMSC/MainWindow.vb index 9a1786dae..1a0c76acc 100644 --- a/iBMSC/MainWindow.vb +++ b/iBMSC/MainWindow.vb @@ -172,6 +172,7 @@ Public Class MainWindow Dim gXKeyCol() As Integer Dim gLNGap As Double = 16 Dim wLWAV(1295) As WavSample + Dim NoteWVPosEnd() As Double '----AutoSave Options Dim PreviousAutoSavedFileName As String = "" @@ -2432,7 +2433,14 @@ Public Class MainWindow mnShowWaveform.Checked = ShowWaveform TBShowWaveform.Image = CType(IIf(ShowWaveform, My.Resources.x16ShowWaveform, My.Resources.x16ShowWaveformN), Image) mnShowWaveform.Image = CType(IIf(ShowWaveform, My.Resources.x16ShowWaveform, My.Resources.x16ShowWaveformN), Image) - If Not WaveformLoaded AndAlso ShowWaveform Then TimerLoadWaveform.Enabled = True + If ShowWaveform Then + + If Not WaveformLoaded Then + TimerLoadWaveform.Enabled = True + Else + LoadNoteWVPosEnd() + End If + End If End Sub Private Sub TimerLoadWaveform_Tick(sender As Object, e As EventArgs) Handles TimerLoadWaveform.Tick @@ -2442,12 +2450,26 @@ Public Class MainWindow WaveformLoadId = 1 TimerLoadWaveform.Enabled = False WaveformLoaded = True + + LoadNoteWVPosEnd() + RefreshPanelAll() Exit Sub End If WaveformLoadId += 1 End Sub + Private Sub LoadNoteWVPosEnd() + ReDim NoteWVPosEnd(UBound(Notes)) + For i = 0 To UBound(Notes) + If IsColumnSound(Notes(i).ColumnIndex) Then + NoteWVPosEnd(i) = GetVPositionFromTime(GetTimeFromVPosition(Notes(i).VPosition) + wLWAV(CInt(Notes(i).Value / 10000)).Duration) + Else + NoteWVPosEnd(i) = -1 + End If + Next + End Sub + Private Sub TBCut_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBCut.Click, mnCut.Click Dim xUndo As UndoRedo.LinkedURCmd = Nothing Dim xRedo As UndoRedo.LinkedURCmd = New UndoRedo.Void diff --git a/iBMSC/PanelDraw.vb b/iBMSC/PanelDraw.vb index 7dcc85896..9f7a58a82 100644 --- a/iBMSC/PanelDraw.vb +++ b/iBMSC/PanelDraw.vb @@ -567,14 +567,26 @@ Partial Public Class MainWindow Private Sub DrawWaveformNotes(e1 As BufferedGraphics, xTHeight As Integer, xHS As Integer, xVSR As Integer) ' Turns out I don't know how to optimize it - For xINote = 1 To UBound(Notes) - If -PanelVScroll(PanelFocus) + spMain(PanelFocus).Height / gxHeight < Notes(xINote).VPosition Then Exit For ' if note is higher than window - If Not IsColumnSound(Notes(xINote).ColumnIndex) Then Continue For + If IsNothing(NoteWVPosEnd) OrElse Notes.Length = 1 Then Exit Sub + + For xINote = 1 To UBound(NoteWVPosEnd) + If Not IsColumnSound(Notes(xINote).ColumnIndex) OrElse NoteWVPosEnd(xINote) < -PanelVScroll(PanelFocus) Then Continue For + If -PanelVScroll(PanelFocus) + spMain(PanelFocus).Height / gxHeight < Notes(xINote).VPosition Then Exit For If Not Notes(xINote).Comment Then ' Note is not comment DrawWaveform(e1, xTHeight, xHS, xVSR, xINote) End If Next + + ' Naive method + ' For xINote = 1 To UBound(Notes) + ' If -PanelVScroll(PanelFocus) + spMain(PanelFocus).Height / gxHeight < Notes(xINote).VPosition Then Exit For ' if note is higher than window + ' If Not IsColumnSound(Notes(xINote).ColumnIndex) Then Continue For + ' + ' If Not Notes(xINote).Comment Then ' Note is not comment + ' DrawWaveform(e1, xTHeight, xHS, xVSR, xINote) + ' End If + ' Next End Sub ''' From 1802be8e55f052742a85ae6d8e88ffd9e939e7a1 Mon Sep 17 00:00:00 2001 From: psyk2642 <60137590+psyk2642@users.noreply.github.com> Date: Thu, 12 May 2022 20:12:48 +0800 Subject: [PATCH 164/257] Update EditorPersistent.vb --- iBMSC/EditorPersistent.vb | 24 +++++++++--------------- 1 file changed, 9 insertions(+), 15 deletions(-) diff --git a/iBMSC/EditorPersistent.vb b/iBMSC/EditorPersistent.vb index 8f8bc59ef..7f75966f6 100644 --- a/iBMSC/EditorPersistent.vb +++ b/iBMSC/EditorPersistent.vb @@ -313,23 +313,17 @@ Partial Public Class MainWindow End Sub Private Sub XMLLoadKeybinding(ByVal n As XmlElement) - Dim InOption As Boolean = False - Dim xI As Integer = 0 - For i = 0 To UBound(Keybindings) - If Keybindings(i).OpName = n.GetAttribute("Name") Then - xI = i - InOption = True - Exit For + For xI = 0 To UBound(Keybindings) + If Keybindings(xI).OpName = n.GetAttribute("Name") Then + XMLLoadAttribute(n.GetAttribute("Name"), Keybindings(xI).OpName) + XMLLoadAttribute(n.GetAttribute("Description"), Keybindings(xI).Description) + Keybindings(xI).Combo = Split(n.GetAttribute("Combos"), ", ") + XMLLoadAttribute(n.GetAttribute("Category"), Keybindings(xI).Category) + + RenameShortcuts(Keybindings(xI)) + Exit Sub End If Next - If Not InOption Then Exit Sub - - XMLLoadAttribute(n.GetAttribute("Name"), Keybindings(xI).OpName) - XMLLoadAttribute(n.GetAttribute("Description"), Keybindings(xI).Description) - Keybindings(xI).Combo = Split(n.GetAttribute("Combos"), ", ") - XMLLoadAttribute(n.GetAttribute("Category"), Keybindings(xI).Category) - - RenameShortcuts(Keybindings(xI)) End Sub Private Sub XMLLoadColumn(ByVal n As XmlElement) From 3fdd9dcd2853594e5e79e4b37317abfa18d52ab4 Mon Sep 17 00:00:00 2001 From: psyk2642 <60137590+psyk2642@users.noreply.github.com> Date: Thu, 12 May 2022 22:52:42 +0800 Subject: [PATCH 165/257] ShowWaveform Code Update --- iBMSC/ChartIO.vb | 2 +- iBMSC/MainWindow.vb | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/iBMSC/ChartIO.vb b/iBMSC/ChartIO.vb index f97330f02..0fdbe977d 100644 --- a/iBMSC/ChartIO.vb +++ b/iBMSC/ChartIO.vb @@ -268,7 +268,7 @@ Partial Public Class MainWindow For xI1 = 1 To 1295 LWAV.Items.Add(C10to36(xI1) & ": " & hWAV(xI1)) ' Add waveforms to wLWAV - If hWAV(xI1) <> "" AndAlso ShowWaveform Then wLWAV(xI1) = LoadWaveForm(ExcludeFileName(FileName) & "\" & hWAV(xI1)) + If hWAV(xI1) <> "" AndAlso ShowWaveform Then WaveformLoadId = 1 : TimerLoadWaveform.Enabled = True Next LWAV.SelectedIndex = 0 LWAV.Visible = True diff --git a/iBMSC/MainWindow.vb b/iBMSC/MainWindow.vb index 1a0c76acc..8a5509d1a 100644 --- a/iBMSC/MainWindow.vb +++ b/iBMSC/MainWindow.vb @@ -2433,13 +2433,15 @@ Public Class MainWindow mnShowWaveform.Checked = ShowWaveform TBShowWaveform.Image = CType(IIf(ShowWaveform, My.Resources.x16ShowWaveform, My.Resources.x16ShowWaveformN), Image) mnShowWaveform.Image = CType(IIf(ShowWaveform, My.Resources.x16ShowWaveform, My.Resources.x16ShowWaveformN), Image) - If ShowWaveform Then + If ShowWaveform Then If Not WaveformLoaded Then TimerLoadWaveform.Enabled = True Else LoadNoteWVPosEnd() End If + Else + TimerLoadWaveform.Enabled = False End If End Sub From 1b51722e930734a173d0a60a600b5aa64054241e Mon Sep 17 00:00:00 2001 From: psyk2642 <60137590+psyk2642@users.noreply.github.com> Date: Fri, 13 May 2022 20:42:18 +0800 Subject: [PATCH 166/257] Added Ability to rename temporary BMS Filename --- iBMSC/EditorPersistent.vb | 2 + iBMSC/MainWindow.vb | 10 +-- iBMSC/Option Windows/OpGeneral.Designer.vb | 72 +++++++++++++++------- iBMSC/Option Windows/OpGeneral.vb | 3 +- 4 files changed, 59 insertions(+), 28 deletions(-) diff --git a/iBMSC/EditorPersistent.vb b/iBMSC/EditorPersistent.vb index 7f75966f6..791aa8fdd 100644 --- a/iBMSC/EditorPersistent.vb +++ b/iBMSC/EditorPersistent.vb @@ -98,6 +98,7 @@ Partial Public Class MainWindow .WriteAttributeString("JackBPM", ErrorJackBPM.ToString()) .WriteAttributeString("JackTH", ErrorJackTH.ToString()) .WriteAttributeString("gLNGap", gLNGap.ToString()) + .WriteAttributeString("TempFileName", TempFileName.ToString()) .WriteAttributeString("COverridesSaveOption", COverridesSaveOption.ToString()) .WriteAttributeString("TemplateSnapToVPosition", TemplateSnapToVPosition.ToString()) .WriteAttributeString("PastePatternToVPosition", PastePatternToVPosition.ToString()) @@ -457,6 +458,7 @@ Partial Public Class MainWindow XMLLoadAttribute(.GetAttribute("JackBPM"), ErrorJackBPM) XMLLoadAttribute(.GetAttribute("JackTH"), ErrorJackTH) XMLLoadAttribute(.GetAttribute("gLNGap"), gLNGap) + XMLLoadAttribute(.GetAttribute("TempFileName"), TempFileName) XMLLoadAttribute(.GetAttribute("COverridesSaveOption"), COverridesSaveOption) XMLLoadAttribute(.GetAttribute("TemplateSnapToVPosition"), TemplateSnapToVPosition) XMLLoadAttribute(.GetAttribute("PastePatternToVPosition"), PastePatternToVPosition) diff --git a/iBMSC/MainWindow.vb b/iBMSC/MainWindow.vb index 8a5509d1a..0162f79a2 100644 --- a/iBMSC/MainWindow.vb +++ b/iBMSC/MainWindow.vb @@ -91,6 +91,7 @@ Public Class MainWindow 'IO Dim FileName As String = "Untitled.bms" + Dim TempFileName As String = "___TempBMS.bmsc" Dim RandomTempFileName As String = "___TempRandom" & GenerateRandomString(6, False) & ".bmsc" Public ExpansionSplit(2) As String 'Dim TitlePath As New Drawing2D.GraphicsPath @@ -653,7 +654,7 @@ Public Class MainWindow Dim xFileName As String = IIf(Not PathIsValid(FileName), IIf(InitPath = "", My.Application.Info.DirectoryPath, InitPath), ExcludeFileName(FileName)).ToString() _ - & "\___TempBMS.bmsc" + & "\" & TempFileName Dim xMeasure As Integer = MeasureAtDisplacement(Math.Abs(PanelVScroll(PanelFocus))) Dim xS1 As String = Replace(InitStr, "", My.Application.Info.DirectoryPath) Dim xS2 As String = Replace(xS1, "", xMeasure.ToString()) @@ -2757,7 +2758,7 @@ Public Class MainWindow Dim xStrAll As String = SaveBMS() Dim xFileName As String = IIf(Not PathIsValid(FileName), IIf(InitPath = "", My.Application.Info.DirectoryPath, InitPath), - ExcludeFileName(FileName)).ToString() & "\___TempBMS.bmsc" + ExcludeFileName(FileName)).ToString() & "\" & TempFileName My.Computer.FileSystem.WriteAllText(xFileName, xStrAll, False, TextEncoding) AddTempFileList(xFileName) @@ -2780,7 +2781,7 @@ Public Class MainWindow Dim xStrAll As String = SaveBMS() Dim xFileName As String = IIf(Not PathIsValid(FileName), IIf(InitPath = "", My.Application.Info.DirectoryPath, InitPath), - ExcludeFileName(FileName)).ToString() & "\___TempBMS.bmsc" + ExcludeFileName(FileName)).ToString() & "\" & TempFileName My.Computer.FileSystem.WriteAllText(xFileName, xStrAll, False, TextEncoding) AddTempFileList(xFileName) @@ -3992,7 +3993,7 @@ Public Class MainWindow Case Else : xTE = 0 End Select - Dim xDiag As New OpGeneral(gWheel, gPgUpDn, MiddleButtonMoveMethod, xTE, CInt(192.0R / BMSGridLimit), ErrorJackBPM, ErrorJackTH, gLNGap, + Dim xDiag As New OpGeneral(gWheel, gPgUpDn, MiddleButtonMoveMethod, xTE, CInt(192.0R / BMSGridLimit), ErrorJackBPM, ErrorJackTH, gLNGap, TempFileName, AutoSaveInterval, BeepWhileSaved, BPMx1296, STOPx1296, AudioLine, TemplateSnapToVPosition, PastePatternToVPosition, AutoFocusMouseEnter, FirstClickDisabled, ClickStopPreview) @@ -4009,6 +4010,7 @@ Public Class MainWindow ErrorJackTH = .nJackTH.Value ErrorJackSpeed = 60 * 4 / .nJackBPM.Value / .nJackTH.Value gLNGap = .NLNGap.Value + TempFileName = .TTemp.Text BeepWhileSaved = .cBeep.Checked BPMx1296 = .cBpm1296.Checked STOPx1296 = .cStop1296.Checked diff --git a/iBMSC/Option Windows/OpGeneral.Designer.vb b/iBMSC/Option Windows/OpGeneral.Designer.vb index 483bf1dbf..2f6d63dd8 100644 --- a/iBMSC/Option Windows/OpGeneral.Designer.vb +++ b/iBMSC/Option Windows/OpGeneral.Designer.vb @@ -68,6 +68,8 @@ Partial Class OpGeneral Me.LabelTHLN = New System.Windows.Forms.Label() Me.TableLayoutPanel5 = New System.Windows.Forms.TableLayoutPanel() Me.cPastePatternToVPosition = New System.Windows.Forms.CheckBox() + Me.Label11 = New System.Windows.Forms.Label() + Me.TTemp = New System.Windows.Forms.TextBox() Me.TableLayoutPanel1.SuspendLayout() CType(Me.PictureBox1, System.ComponentModel.ISupportInitialize).BeginInit() CType(Me.NAutoSave, System.ComponentModel.ISupportInitialize).BeginInit() @@ -90,7 +92,7 @@ Partial Class OpGeneral Me.TableLayoutPanel1.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50.0!)) Me.TableLayoutPanel1.Controls.Add(Me.OK_Button, 0, 0) Me.TableLayoutPanel1.Controls.Add(Me.Cancel_Button, 1, 0) - Me.TableLayoutPanel1.Location = New System.Drawing.Point(229, 618) + Me.TableLayoutPanel1.Location = New System.Drawing.Point(229, 655) Me.TableLayoutPanel1.Name = "TableLayoutPanel1" Me.TableLayoutPanel1.RowCount = 1 Me.TableLayoutPanel1.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50.0!)) @@ -123,7 +125,7 @@ Partial Class OpGeneral Me.CWheel.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList Me.CWheel.FormattingEnabled = True Me.CWheel.Items.AddRange(New Object() {"1", "1 / 2", "1 / 3", "1 / 4"}) - Me.CWheel.Location = New System.Drawing.Point(154, 424) + Me.CWheel.Location = New System.Drawing.Point(154, 461) Me.CWheel.Name = "CWheel" Me.CWheel.Size = New System.Drawing.Size(237, 23) Me.CWheel.TabIndex = 101 @@ -142,7 +144,7 @@ Partial Class OpGeneral ' Me.Label1.Anchor = CType(((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left) _ Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) - Me.Label1.Location = New System.Drawing.Point(12, 426) + Me.Label1.Location = New System.Drawing.Point(12, 463) Me.Label1.Name = "Label1" Me.Label1.Size = New System.Drawing.Size(136, 17) Me.Label1.TabIndex = 100 @@ -195,7 +197,7 @@ Partial Class OpGeneral Me.PictureBox1.Anchor = CType(((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left) _ Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) Me.PictureBox1.BackColor = System.Drawing.Color.FromArgb(CType(CType(64, Byte), Integer), CType(CType(64, Byte), Integer), CType(CType(64, Byte), Integer)) - Me.PictureBox1.Location = New System.Drawing.Point(20, 408) + Me.PictureBox1.Location = New System.Drawing.Point(20, 445) Me.PictureBox1.Name = "PictureBox1" Me.PictureBox1.Size = New System.Drawing.Size(375, 1) Me.PictureBox1.TabIndex = 47 @@ -230,7 +232,7 @@ Partial Class OpGeneral Me.cMEnterFocus.Anchor = CType(((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left) _ Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) Me.cMEnterFocus.AutoSize = True - Me.cMEnterFocus.Location = New System.Drawing.Point(34, 534) + Me.cMEnterFocus.Location = New System.Drawing.Point(34, 571) Me.cMEnterFocus.Name = "cMEnterFocus" Me.cMEnterFocus.Size = New System.Drawing.Size(322, 19) Me.cMEnterFocus.TabIndex = 106 @@ -242,7 +244,7 @@ Partial Class OpGeneral Me.cMClickFocus.Anchor = CType(((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left) _ Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) Me.cMClickFocus.AutoSize = True - Me.cMClickFocus.Location = New System.Drawing.Point(34, 559) + Me.cMClickFocus.Location = New System.Drawing.Point(34, 596) Me.cMClickFocus.Name = "cMClickFocus" Me.cMClickFocus.Size = New System.Drawing.Size(293, 19) Me.cMClickFocus.TabIndex = 107 @@ -271,7 +273,7 @@ Partial Class OpGeneral ' Me.Label5.Anchor = CType(((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left) _ Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) - Me.Label5.Location = New System.Drawing.Point(12, 455) + Me.Label5.Location = New System.Drawing.Point(12, 492) Me.Label5.Name = "Label5" Me.Label5.Size = New System.Drawing.Size(136, 17) Me.Label5.TabIndex = 102 @@ -285,7 +287,7 @@ Partial Class OpGeneral Me.CPgUpDn.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList Me.CPgUpDn.FormattingEnabled = True Me.CPgUpDn.Items.AddRange(New Object() {"8", "6", "4", "3", "2", "1", "1 / 2"}) - Me.CPgUpDn.Location = New System.Drawing.Point(154, 453) + Me.CPgUpDn.Location = New System.Drawing.Point(154, 490) Me.CPgUpDn.Name = "CPgUpDn" Me.CPgUpDn.Size = New System.Drawing.Size(237, 23) Me.CPgUpDn.TabIndex = 103 @@ -333,7 +335,7 @@ Partial Class OpGeneral Me.cMStopPreview.AutoSize = True Me.cMStopPreview.Checked = True Me.cMStopPreview.CheckState = System.Windows.Forms.CheckState.Checked - Me.cMStopPreview.Location = New System.Drawing.Point(34, 584) + Me.cMStopPreview.Location = New System.Drawing.Point(34, 621) Me.cMStopPreview.Name = "cMStopPreview" Me.cMStopPreview.Size = New System.Drawing.Size(253, 19) Me.cMStopPreview.TabIndex = 108 @@ -382,7 +384,7 @@ Partial Class OpGeneral ' Me.Label3.Anchor = CType(((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left) _ Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) - Me.Label3.Location = New System.Drawing.Point(12, 483) + Me.Label3.Location = New System.Drawing.Point(12, 520) Me.Label3.Name = "Label3" Me.Label3.Size = New System.Drawing.Size(136, 17) Me.Label3.TabIndex = 104 @@ -398,7 +400,7 @@ Partial Class OpGeneral Me.FlowLayoutPanel1.Controls.Add(Me.rMiddleAuto) Me.FlowLayoutPanel1.Controls.Add(Me.rMiddleDrag) Me.FlowLayoutPanel1.FlowDirection = System.Windows.Forms.FlowDirection.TopDown - Me.FlowLayoutPanel1.Location = New System.Drawing.Point(154, 482) + Me.FlowLayoutPanel1.Location = New System.Drawing.Point(154, 519) Me.FlowLayoutPanel1.Name = "FlowLayoutPanel1" Me.FlowLayoutPanel1.Size = New System.Drawing.Size(141, 38) Me.FlowLayoutPanel1.TabIndex = 105 @@ -535,7 +537,7 @@ Partial Class OpGeneral Me.Label10.Dock = System.Windows.Forms.DockStyle.Fill Me.Label10.Location = New System.Drawing.Point(3, 66) Me.Label10.Name = "Label10" - Me.Label10.Size = New System.Drawing.Size(188, 34) + Me.Label10.Size = New System.Drawing.Size(188, 33) Me.Label10.TabIndex = 8 Me.Label10.Text = "Auto Long Note Gap" Me.Label10.TextAlign = System.Drawing.ContentAlignment.MiddleRight @@ -545,20 +547,22 @@ Partial Class OpGeneral Me.TableLayoutPanel3.ColumnCount = 2 Me.TableLayoutPanel3.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 51.8617!)) Me.TableLayoutPanel3.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 48.1383!)) + Me.TableLayoutPanel3.Controls.Add(Me.Label11, 0, 3) Me.TableLayoutPanel3.Controls.Add(Me.TableLayoutPanel4, 1, 2) Me.TableLayoutPanel3.Controls.Add(Me.Label10, 0, 2) Me.TableLayoutPanel3.Controls.Add(Me.TableLayoutPanel2, 1, 1) Me.TableLayoutPanel3.Controls.Add(Me.Label8, 0, 1) Me.TableLayoutPanel3.Controls.Add(Me.nGridPartition, 1, 0) Me.TableLayoutPanel3.Controls.Add(Me.Label6, 0, 0) + Me.TableLayoutPanel3.Controls.Add(Me.TTemp, 1, 3) Me.TableLayoutPanel3.Location = New System.Drawing.Point(15, 107) Me.TableLayoutPanel3.Name = "TableLayoutPanel3" - Me.TableLayoutPanel3.RowCount = 3 - Me.TableLayoutPanel3.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 33.33333!)) - Me.TableLayoutPanel3.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 33.33333!)) - Me.TableLayoutPanel3.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 33.33333!)) - Me.TableLayoutPanel3.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20.0!)) - Me.TableLayoutPanel3.Size = New System.Drawing.Size(376, 100) + Me.TableLayoutPanel3.RowCount = 4 + Me.TableLayoutPanel3.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 25.0!)) + Me.TableLayoutPanel3.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 25.0!)) + Me.TableLayoutPanel3.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 25.0!)) + Me.TableLayoutPanel3.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 25.0!)) + Me.TableLayoutPanel3.Size = New System.Drawing.Size(376, 133) Me.TableLayoutPanel3.TabIndex = 112 ' 'TableLayoutPanel4 @@ -572,7 +576,7 @@ Partial Class OpGeneral Me.TableLayoutPanel4.Name = "TableLayoutPanel4" Me.TableLayoutPanel4.RowCount = 1 Me.TableLayoutPanel4.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100.0!)) - Me.TableLayoutPanel4.Size = New System.Drawing.Size(175, 28) + Me.TableLayoutPanel4.Size = New System.Drawing.Size(175, 27) Me.TableLayoutPanel4.TabIndex = 114 ' 'LabelTHLN @@ -580,14 +584,14 @@ Partial Class OpGeneral Me.LabelTHLN.Dock = System.Windows.Forms.DockStyle.Fill Me.LabelTHLN.Location = New System.Drawing.Point(83, 0) Me.LabelTHLN.Name = "LabelTHLN" - Me.LabelTHLN.Size = New System.Drawing.Size(89, 28) + Me.LabelTHLN.Size = New System.Drawing.Size(89, 27) Me.LabelTHLN.TabIndex = 10 Me.LabelTHLN.Text = "bars" Me.LabelTHLN.TextAlign = System.Drawing.ContentAlignment.MiddleLeft ' 'TableLayoutPanel5 ' - Me.TableLayoutPanel5.Anchor = CType(((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Left) _ + Me.TableLayoutPanel5.Anchor = CType(((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left) _ Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) Me.TableLayoutPanel5.ColumnCount = 3 Me.TableLayoutPanel5.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50.0!)) @@ -602,7 +606,7 @@ Partial Class OpGeneral Me.TableLayoutPanel5.Controls.Add(Me.cStop1296, 0, 3) Me.TableLayoutPanel5.Controls.Add(Me.cAudioLine, 0, 4) Me.TableLayoutPanel5.Controls.Add(Me.cPastePatternToVPosition, 0, 6) - Me.TableLayoutPanel5.Location = New System.Drawing.Point(15, 213) + Me.TableLayoutPanel5.Location = New System.Drawing.Point(15, 250) Me.TableLayoutPanel5.Name = "TableLayoutPanel5" Me.TableLayoutPanel5.RowCount = 7 Me.TableLayoutPanel5.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 14.28571!)) @@ -627,12 +631,31 @@ Partial Class OpGeneral Me.cPastePatternToVPosition.Text = "Snap to Vertical Position for Pasting Patterns" Me.cPastePatternToVPosition.UseVisualStyleBackColor = True ' + 'Label11 + ' + Me.Label11.Dock = System.Windows.Forms.DockStyle.Fill + Me.Label11.Location = New System.Drawing.Point(3, 99) + Me.Label11.Name = "Label11" + Me.Label11.Size = New System.Drawing.Size(188, 34) + Me.Label11.TabIndex = 115 + Me.Label11.Text = "Temporary BMS Filename" + Me.Label11.TextAlign = System.Drawing.ContentAlignment.MiddleRight + ' + 'TTemp + ' + Me.TTemp.Dock = System.Windows.Forms.DockStyle.Fill + Me.TTemp.Location = New System.Drawing.Point(197, 102) + Me.TTemp.Name = "TTemp" + Me.TTemp.Size = New System.Drawing.Size(176, 23) + Me.TTemp.TabIndex = 116 + Me.TTemp.Text = "___TempBMS.bmsc" + ' 'OpGeneral ' Me.AcceptButton = Me.OK_Button Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None Me.CancelButton = Me.Cancel_Button - Me.ClientSize = New System.Drawing.Size(413, 665) + Me.ClientSize = New System.Drawing.Size(413, 702) Me.Controls.Add(Me.TableLayoutPanel5) Me.Controls.Add(Me.TableLayoutPanel3) Me.Controls.Add(Me.FlowLayoutPanel1) @@ -673,6 +696,7 @@ Partial Class OpGeneral Me.TableLayoutPanel2.ResumeLayout(False) CType(Me.NLNGap, System.ComponentModel.ISupportInitialize).EndInit() Me.TableLayoutPanel3.ResumeLayout(False) + Me.TableLayoutPanel3.PerformLayout() Me.TableLayoutPanel4.ResumeLayout(False) Me.TableLayoutPanel5.ResumeLayout(False) Me.TableLayoutPanel5.PerformLayout() @@ -726,4 +750,6 @@ Partial Class OpGeneral Friend WithEvents LabelTHLN As Label Friend WithEvents TableLayoutPanel5 As TableLayoutPanel Friend WithEvents cPastePatternToVPosition As CheckBox + Friend WithEvents Label11 As Label + Friend WithEvents TTemp As TextBox End Class diff --git a/iBMSC/Option Windows/OpGeneral.vb b/iBMSC/Option Windows/OpGeneral.vb index cfce49467..cbd5c57fe 100644 --- a/iBMSC/Option Windows/OpGeneral.vb +++ b/iBMSC/Option Windows/OpGeneral.vb @@ -54,7 +54,7 @@ Public Class OpGeneral Me.Close() End Sub - Public Sub New(ByVal xMsWheel As Integer, ByVal xPgUpDn As Integer, ByVal xMiddleButton As Integer, ByVal xTextEncoding As Integer, ByVal xGridPartition As Integer, ByVal xJackBPM As Double, ByVal xJackTH As Double, ByVal xLNGap As Double, + Public Sub New(ByVal xMsWheel As Integer, ByVal xPgUpDn As Integer, ByVal xMiddleButton As Integer, ByVal xTextEncoding As Integer, ByVal xGridPartition As Integer, ByVal xJackBPM As Double, ByVal xJackTH As Double, ByVal xLNGap As Double, ByVal xTemp As String, ByVal xAutoSave As Integer, ByVal xBeep As Boolean, ByVal xBPMx As Boolean, ByVal xSTOPx As Boolean, ByVal xAudioLine As Boolean, ByVal xTemplateSnapToVPosition As Boolean, ByVal xPastePatternToVPosition As Boolean, ByVal xMFEnter As Boolean, ByVal xMFClick As Boolean, ByVal xMStopPreview As Boolean) InitializeComponent() @@ -83,6 +83,7 @@ Public Class OpGeneral nJackBPM.Value = CDec(xJackBPM) nJackTH.Value = CDec(xJackTH) NLNGap.Value = CDec(xLNGap) + TTemp.Text = xTemp If xMiddleButton = 0 Then rMiddleAuto.Checked = True _ Else rMiddleDrag.Checked = True From 80af29e0373f05a908f053fc44f338adf1ae64ab Mon Sep 17 00:00:00 2001 From: psyk2642 <60137590+psyk2642@users.noreply.github.com> Date: Sun, 15 May 2022 13:23:11 +0800 Subject: [PATCH 167/257] POBAutoLongColumn and POBAutoLongVPosition Fix --- iBMSC/MainWindow.vb | 88 +++++++++++++++++++++++++++------------------ 1 file changed, 54 insertions(+), 34 deletions(-) diff --git a/iBMSC/MainWindow.vb b/iBMSC/MainWindow.vb index 0162f79a2..3a1b06928 100644 --- a/iBMSC/MainWindow.vb +++ b/iBMSC/MainWindow.vb @@ -3674,7 +3674,7 @@ Public Class MainWindow Private Sub THGenre_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles _ THGenre.TextChanged, THTitle.TextChanged, THArtist.TextChanged, THPlayLevel.TextChanged, CHRank.SelectedIndexChanged, THSubTitle.TextChanged, THSubArtist.TextChanged, THStageFile.TextChanged, THBanner.TextChanged, THBackBMP.TextChanged, - CHDifficulty.SelectedIndexChanged, THExRank.TextChanged, THTotal.TextChanged, THComment.TextChanged + CHDifficulty.SelectedIndexChanged, THExRank.TextChanged, THTotal.TextChanged, THComment.TextChanged, TExpansion.TextChanged If IsSaved Then SetIsSaved(False) End Sub @@ -4205,13 +4205,21 @@ Public Class MainWindow End Sub Private Sub POBAutoLongVPosition_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles POBAutoLongVPosition.Click - ' TODO: Make it applicable to notes with the same VPosition, not just one note at a time - If Not NTInput Then ConvertBMSE2NT() - Dim xUndo As UndoRedo.LinkedURCmd = Nothing Dim xRedo As UndoRedo.LinkedURCmd = New UndoRedo.Void Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo + ' Change to NTInput because easier to code + If Not NTInput Then + RedoRemoveNoteAll(False, xUndo, xRedo) + ConvertBMSE2NT() + RedoAddNoteAll(False, xUndo, xRedo) + End If + + For i = 1 To UBound(Notes) + If Notes(i).Selected Then Console.WriteLine(i) + Next + Dim xIPrev(-1) As Integer Dim xI1 = 1 Do While xI1 <= UBound(Notes) @@ -4238,22 +4246,26 @@ Public Class MainWindow xI1 = xIPrev(UBound(xIPrev)) + 1 Loop - If xIPrev.Length <> 0 Then - For Each xIPrevIndv In xIPrev - Dim xWLWAV As Integer = CInt(Notes(xIPrevIndv).Value / 10000) - If wLWAV(xWLWAV).Duration = 0 Then wLWAV(xWLWAV) = LoadDuration(ExcludeFileName(FileName) & "\" & hWAV(xWLWAV)) - - Dim xLen As Double = Math.Max(GetVPositionFromTime(GetTimeFromVPosition(Notes(xIPrevIndv).VPosition) + - wLWAV(xWLWAV).Duration) - - Notes(xIPrevIndv).VPosition - gLNGap * 192 / 4, 0) + ' If xIPrev.Length <> 0 Then + ' For Each xIPrevIndv In xIPrev + ' Dim xWLWAV As Integer = CInt(Notes(xIPrevIndv).Value / 10000) + ' If wLWAV(xWLWAV).Duration = 0 Then wLWAV(xWLWAV) = LoadDuration(ExcludeFileName(FileName) & "\" & hWAV(xWLWAV)) + ' + ' Dim xLen As Double = Math.Max(GetVPositionFromTime(GetTimeFromVPosition(Notes(xIPrevIndv).VPosition) + + ' wLWAV(xWLWAV).Duration) - + ' Notes(xIPrevIndv).VPosition - gLNGap * 192 / 4, 0) + ' + ' RedoLongNoteModify(Notes(xIPrevIndv), Notes(xIPrevIndv).VPosition, xLen, xUndo, xRedo) + ' Notes(xIPrevIndv).Length = xLen + ' Next + ' End If - RedoLongNoteModify(Notes(xIPrevIndv), Notes(xIPrevIndv).VPosition, xLen, xUndo, xRedo) - Notes(xIPrevIndv).Length = xLen - Next + If Not NTInput Then + RedoRemoveNoteAll(False, xUndo, xRedo) + ConvertNT2BMSE() + RedoAddNoteAll(False, xUndo, xRedo) End If - If Not NTInput Then ConvertNT2BMSE() - AddUndo(xUndo, xBaseRedo.Next) SortByVPositionInsertion() UpdatePairing() @@ -4261,13 +4273,17 @@ Public Class MainWindow End Sub Private Sub POBAutoLongColumn_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles POBAutoLongColumn.Click - ' TODO: Make it - If Not NTInput Then ConvertBMSE2NT() - Dim xUndo As UndoRedo.LinkedURCmd = Nothing Dim xRedo As UndoRedo.LinkedURCmd = New UndoRedo.Void Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo + ' Change to NTInput because easier to code + If Not NTInput Then + RedoRemoveNoteAll(False, xUndo, xRedo) + ConvertBMSE2NT() + RedoAddNoteAll(False, xUndo, xRedo) + End If + Dim xIPrev(UBound(gXKeyCol)) As Integer For xI1 As Integer = 1 To UBound(Notes) If Not Notes(xI1).Selected OrElse Notes(xI1).Ghost OrElse Not gXKeyCol.Contains(Notes(xI1).ColumnIndex) Then Continue For @@ -4282,21 +4298,25 @@ Public Class MainWindow xIPrev(xICol) = xI1 Next - For Each xIPrevIndv In xIPrev - If xIPrevIndv <> 0 Then - Dim xWLWAV As Integer = CInt(Notes(xIPrevIndv).Value / 10000) - If wLWAV(xWLWAV).Duration = 0 Then wLWAV(xWLWAV) = LoadDuration(ExcludeFileName(FileName) & "\" & hWAV(xWLWAV)) - - Dim xLen As Double = Math.Max(GetVPositionFromTime(GetTimeFromVPosition(Notes(xIPrevIndv).VPosition) + - wLWAV(xWLWAV).Duration) - - Notes(xIPrevIndv).VPosition - gLNGap * 192 / 4, 0) + ' For Each xIPrevIndv In xIPrev + ' If xIPrevIndv <> 0 Then + ' Dim xWLWAV As Integer = CInt(Notes(xIPrevIndv).Value / 10000) + ' If wLWAV(xWLWAV).Duration = 0 Then wLWAV(xWLWAV) = LoadDuration(ExcludeFileName(FileName) & "\" & hWAV(xWLWAV)) + ' + ' Dim xLen As Double = Math.Max(GetVPositionFromTime(GetTimeFromVPosition(Notes(xIPrevIndv).VPosition) + + ' wLWAV(xWLWAV).Duration) - + ' Notes(xIPrevIndv).VPosition - gLNGap * 192 / 4, 0) + ' + ' RedoLongNoteModify(Notes(xIPrevIndv), Notes(xIPrevIndv).VPosition, xLen, xUndo, xRedo) + ' Notes(xIPrevIndv).Length = xLen + ' End If + ' Next - RedoLongNoteModify(Notes(xIPrevIndv), Notes(xIPrevIndv).VPosition, xLen, xUndo, xRedo) - Notes(xIPrevIndv).Length = xLen - End If - Next - - If Not NTInput Then ConvertNT2BMSE() + If Not NTInput Then + RedoRemoveNoteAll(False, xUndo, xRedo) + ConvertNT2BMSE() + RedoAddNoteAll(False, xUndo, xRedo) + End If AddUndo(xUndo, xBaseRedo.Next) SortByVPositionInsertion() From b084ea01daaf7f90a19cd0f363260d0573ad7120 Mon Sep 17 00:00:00 2001 From: psyk2642 <60137590+psyk2642@users.noreply.github.com> Date: Sun, 15 May 2022 14:36:47 +0800 Subject: [PATCH 168/257] Added BMS file tabs. * Allows multiple files to be opened simultaneously. * Saves a list of the opened files on exiting application and reopens them on relaunching application. ### Unavailable features * Autosaving all files. Currently it behaves the same as previously, which is autosaving the active BMS file. * Integration with Modify Section in Select Expansion Code. * Moving file tabs. Not sure if this will be doable with the current arrangement. * Saving all files on exiting application. Unsaved changes will be gone upon closing. --- README.md | 13 +- iBMSC/BMS.vb | 6 +- iBMSC/ChartIO.vb | 29 +-- iBMSC/Dialogs/fLoadFileProgress.vb | 17 +- iBMSC/EditorPersistent.vb | 123 ++++++---- iBMSC/EditorRecent.vb | 13 +- iBMSC/FileTab.vb | 323 +++++++++++++++++++++++++ iBMSC/ImageButtons/Blank.png | Bin 0 -> 7395 bytes iBMSC/ImageButtonsSmall/x16Blank.png | Bin 0 -> 10585 bytes iBMSC/MainWindow.designer.vb | 100 +++++--- iBMSC/MainWindow.resx | 3 + iBMSC/MainWindow.vb | 168 ++++++++----- iBMSC/My Project/Resources.Designer.vb | 20 ++ iBMSC/My Project/Resources.resx | 6 + iBMSC/Option Windows/OpKeybinding.vb | 5 +- iBMSC/PanelEvents.vb | 13 + iBMSC/TimeSelectionOps.vb | 14 +- iBMSC/UndoRedo.vb | 2 +- iBMSC/iBMSC.vbproj | 3 + 19 files changed, 671 insertions(+), 187 deletions(-) create mode 100644 iBMSC/FileTab.vb create mode 100644 iBMSC/ImageButtons/Blank.png create mode 100644 iBMSC/ImageButtonsSmall/x16Blank.png diff --git a/README.md b/README.md index 675e73528..095a69237 100644 --- a/README.md +++ b/README.md @@ -50,6 +50,7 @@ Listed in the order added. * Added ability to convert notes to Long notes in a series by VPosition or by column. * Added ability to convert between LNObj's and NT LN's. * Added ability to copy and paste patterns to highlighted notes. Accessible via Ctrl+Shift+V. +* Added BMS file tabs. See below for details. ## Keyboard shortcuts * While rebinding keys is now supported, the default keybinding has also been changed to allow note placement between D1 and D8 or only on PMS lanes in PMS mode: @@ -111,4 +112,14 @@ Listed in the order added. ### #TOTAL Options * Allows you to set a recommended #TOTAL value based on either IIDX supposition 1, IIDX supposition 2, or a multiplier. -* Allows you to auto-set the #TOTAL value for the chart. \ No newline at end of file +* Allows you to auto-set the #TOTAL value for the chart. + +## BMS File Tabs +* Allows multiple files to be opened simultaneously. +* Saves a list of the opened files on exiting application and reopens them on relaunching application. + +### Unavailable features +* Autosaving all files. Currently it behaves the same as previously, which is autosaving the active BMS file. +* Integration with Modify Section in Select Expansion Code. +* Moving file tabs. Not sure if this will be doable with the current arrangement. +* Saving all files on exiting application. Unsaved changes will be gone upon closing. \ No newline at end of file diff --git a/iBMSC/BMS.vb b/iBMSC/BMS.vb index 1ce7743c2..5561d1047 100644 --- a/iBMSC/BMS.vb +++ b/iBMSC/BMS.vb @@ -2,12 +2,14 @@ Module BMS Public Function IsChannelLongNote(ByVal I As String) As Boolean - Dim xI As Integer = Integer.Parse(I) + Dim xI As Integer + If Not Integer.TryParse(I, xI) Then Return False Return xI >= 50 And xI < 90 End Function Public Function IsChannelHidden(ByVal I As String) As Boolean - Dim xI As Integer = Integer.Parse(I) + Dim xI As Integer + If Not Integer.TryParse(I, xI) Then Return False Return (xI >= 30 And xI < 50) Or (xI >= 70 And xI < 90) End Function diff --git a/iBMSC/ChartIO.vb b/iBMSC/ChartIO.vb index 0fdbe977d..8457282a6 100644 --- a/iBMSC/ChartIO.vb +++ b/iBMSC/ChartIO.vb @@ -68,9 +68,7 @@ Partial Public Class MainWindow If sLineTrim.StartsWith("#") And Mid(sLineTrim, 5, 3) = "02:" Then Dim xIndex As Integer = Integer.Parse(Mid(sLineTrim, 2, 3)) Dim xRatio As Double = Double.Parse(Mid(sLineTrim, 8)) - Dim xxD As Long = GetDenominator(xRatio) MeasureLength(xIndex) = xRatio * 192.0R - LBeat.Items(xIndex) = Add3Zeros(xIndex) & ": " & xRatio & IIf(xxD > 10000, "", " ( " & CLng(xRatio * xxD) & " / " & xxD & " ) ").ToString() Continue For ElseIf SWIC(sLineTrim, "#WAV") Then @@ -213,7 +211,9 @@ Partial Public Class MainWindow AddToExpansion(xExpansion, xStack, sLine) End If Next + UpdateMeasureBottom() + LBeatRefresh() ' BPM must be updated before loading notes, do not combine loops ' xStrLine2 should contain only # lines for notes @@ -264,12 +264,9 @@ Partial Public Class MainWindow If NTInput Then ConvertBMSE2NT() LWAV.Visible = False - LWAV.Items.Clear() - For xI1 = 1 To 1295 - LWAV.Items.Add(C10to36(xI1) & ": " & hWAV(xI1)) - ' Add waveforms to wLWAV - If hWAV(xI1) <> "" AndAlso ShowWaveform Then WaveformLoadId = 1 : TimerLoadWaveform.Enabled = True - Next + LWAVRefresh() + ' Add waveforms to wLWAV + If ShowWaveform Then WaveformLoadId = 1 : TimerLoadWaveform.Enabled = True LWAV.SelectedIndex = 0 LWAV.Visible = True If ShowWaveform Then WaveformLoaded = True @@ -453,7 +450,6 @@ Partial Public Class MainWindow Dim xNTInput As Boolean = NTInput If GhostMode = 2 Then SwapGhostNotes() ' Revert main notes back to non-ghost notes - ' TODO: Fix Ghost mode 1 and 2 not saving BPMs, STOPs and SCROLLs Dim xNotesBackup() As Note = CType(Notes.Clone(), Note()) 'All notes If xNTInput Then @@ -1036,10 +1032,7 @@ Partial Public Class MainWindow If NTInput Then ConvertBMSE2NT() LWAV.Visible = False - LWAV.Items.Clear() - For xI1 As Integer = 1 To 1295 - LWAV.Items.Add(C10to36(xI1) & ": " & hWAV(xI1)) - Next + LWAVRefresh() LWAV.SelectedIndex = 0 LWAV.Visible = True @@ -1194,9 +1187,6 @@ Partial Public Class MainWindow For xxi As Integer = 1 To xBeatCount Dim xIndex As Integer = br.ReadInt16 MeasureLength(xIndex) = br.ReadDouble - Dim xRatio As Double = MeasureLength(xIndex) / 192.0R - Dim xxD As Long = GetDenominator(xRatio) - LBeat.Items(xIndex) = Add3Zeros(xIndex) & ": " & xRatio & IIf(xxD > 10000, "", " ( " & CLng(xRatio * xxD) & " / " & xxD & " ) ").ToString() Next Case &H6E707845 'Expansion Code @@ -1251,11 +1241,9 @@ Partial Public Class MainWindow mnUndo.Enabled = sUndo(sI).ofType <> UndoRedo.opNoOperation mnRedo.Enabled = sRedo(sIA).ofType <> UndoRedo.opNoOperation + LBeatRefresh() LWAV.Visible = False - LWAV.Items.Clear() - For xI1 As Integer = 1 To 1295 - LWAV.Items.Add(C10to36(xI1) & ": " & hWAV(xI1)) - Next + LWAVRefresh() LWAV.SelectedIndex = 0 LWAV.Visible = True @@ -1270,6 +1258,7 @@ Partial Public Class MainWindow End Sub Private Sub SaveiBMSC(ByVal Path As String) + ' TODO: Save multiple BMSes instead of just the active one. CalculateGreatestVPosition() SortByVPositionInsertion() UpdatePairing() diff --git a/iBMSC/Dialogs/fLoadFileProgress.vb b/iBMSC/Dialogs/fLoadFileProgress.vb index 32ce9b4d3..671878014 100644 --- a/iBMSC/Dialogs/fLoadFileProgress.vb +++ b/iBMSC/Dialogs/fLoadFileProgress.vb @@ -1,12 +1,12 @@ Public Class fLoadFileProgress - Dim xPath(-1) As String + Dim xPaths(-1) As String Dim CancelPressed As Boolean = False Dim IsSaved As Boolean = False Public Sub New(ByVal xxPath() As String, ByVal xIsSaved As Boolean, Optional ByVal TopMost As Boolean = True) InitializeComponent() prog.Maximum = UBound(xxPath) + 1 - xPath = xxPath + xPaths = xxPath IsSaved = xIsSaved Me.TopMost = TopMost End Sub @@ -19,16 +19,21 @@ Public Class fLoadFileProgress Private Sub fLoadFileProgress_Shown(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Shown On Error GoTo 0 - For xI1 As Integer = 0 To UBound(xPath) - Label1.Text = "Currently loading ( " & (xI1 + 1) & " / " & (UBound(xPath) + 1) & " ): " & xPath(xI1) + For xI1 As Integer = 0 To UBound(xPaths) + Label1.Text = "Currently loading ( " & (xI1 + 1) & " / " & (UBound(xPaths) + 1) & " ): " & xPaths(xI1) Dim aa As Integer = prog.Maximum Dim bb As Integer = prog.Value prog.Value = xI1 Application.DoEvents() If CancelPressed Then Exit For - If xI1 = 0 AndAlso IsSaved Then MainWindow.ReadFile(xPath(xI1)) _ - Else System.Diagnostics.Process.Start(Application.ExecutablePath, """" & xPath(xI1) & """") 'Shell("""" & Application.ExecutablePath & """ """ & xPaths(xI1) & """") ' + MainWindow.AddBMSFiles(xPaths) + MainWindow.ReadFile(xPaths(UBound(xPaths))) + ' If xI1 = 0 AndAlso IsSaved Then + ' MainWindow.ReadFile(xPath(xI1)) + ' Else + ' System.Diagnostics.Process.Start(Application.ExecutablePath, """" & xPath(xI1) & """") + ' End If Next Me.Close() End Sub diff --git a/iBMSC/EditorPersistent.vb b/iBMSC/EditorPersistent.vb index 791aa8fdd..f09c0f230 100644 --- a/iBMSC/EditorPersistent.vb +++ b/iBMSC/EditorPersistent.vb @@ -31,16 +31,6 @@ Partial Public Class MainWindow w.WriteEndElement() End Sub - Private Sub XMLWritePlayerArguments(ByVal w As XmlTextWriter, ByVal I As Integer) - w.WriteStartElement("Player") - w.WriteAttributeString("Index", I.ToString()) - w.WriteAttributeString("Path", pArgs(I).Path) - w.WriteAttributeString("FromBeginning", pArgs(I).aBegin) - w.WriteAttributeString("FromHere", pArgs(I).aHere) - w.WriteAttributeString("Stop", pArgs(I).aStop) - w.WriteEndElement() - End Sub - Private Sub XMLWriteKeybindings(ByVal w As XmlTextWriter, ByVal I As Integer) w.WriteStartElement("Option") w.WriteAttributeString("Index", I.ToString()) @@ -51,6 +41,23 @@ Partial Public Class MainWindow w.WriteEndElement() End Sub + Private Sub XMLWriteOpenedFiles(ByVal w As XmlTextWriter, ByVal I As Integer) + w.WriteStartElement("File") + w.WriteAttributeString("Index", I.ToString()) + w.WriteAttributeString("File", BMSFileList(I)) + w.WriteEndElement() + End Sub + + Private Sub XMLWritePlayerArguments(ByVal w As XmlTextWriter, ByVal I As Integer) + w.WriteStartElement("Player") + w.WriteAttributeString("Index", I.ToString()) + w.WriteAttributeString("Path", pArgs(I).Path) + w.WriteAttributeString("FromBeginning", pArgs(I).aBegin) + w.WriteAttributeString("FromHere", pArgs(I).aHere) + w.WriteAttributeString("Stop", pArgs(I).aStop) + w.WriteEndElement() + End Sub + Private Sub SaveSettings(ByVal Path As String, ByVal ThemeOnly As Boolean) Dim w As New XmlTextWriter(Path, System.Text.Encoding.Unicode) With w @@ -81,6 +88,14 @@ Partial Public Class MainWindow .WriteAttributeString("Recent4", Recent(4)) .WriteEndElement() + .WriteStartElement("OpenedFiles") + .WriteAttributeString("Count", UBound(BMSFileList).ToString()) + .WriteAttributeString("BMSFileIndex", BMSFileIndex.ToString()) + For i = 0 To UBound(BMSFileList) + XMLWriteOpenedFiles(w, i) : Next + .WriteEndElement() + + .WriteStartElement("Edit") .WriteAttributeString("NTInput", NTInput.ToString()) .WriteAttributeString("Language", DispLang) @@ -277,6 +292,34 @@ Partial Public Class MainWindow End Select End Function + Private Sub XMLLoadColumn(ByVal n As XmlElement) + Dim i As Integer = -1 + XMLLoadAttribute(n.GetAttribute("Index"), i) + If i < 0 Or i > UBound(column) Then Exit Sub + + With column(i) + 'XMLLoadAttribute(n.GetAttribute("Left"), .Left) + XMLLoadAttribute(n.GetAttribute("Width"), .Width) + XMLLoadAttribute(n.GetAttribute("Title"), .Title) + 'XMLLoadAttribute(n.GetAttribute("Text"), .Text) + Dim Display As Boolean + Dim attr = n.GetAttribute("Display") + XMLLoadAttribute(attr, Display) + .isVisible = CBool(IIf(String.IsNullOrEmpty(attr), .isVisible, Display)) + + 'XMLLoadAttribute(n.GetAttribute("isNumeric"), .isNumeric) + 'XMLLoadAttribute(n.GetAttribute("Visible"), .Visible) + 'XMLLoadAttribute(n.GetAttribute("Identifier"), .Identifier) + XMLLoadAttribute(n.GetAttribute("NoteColor"), .cNote) + .setNoteColor(.cNote) + XMLLoadAttribute(n.GetAttribute("TextColor"), .cText) + XMLLoadAttribute(n.GetAttribute("LongNoteColor"), .cLNote) + .setLNoteColor(.cLNote) + XMLLoadAttribute(n.GetAttribute("LongTextColor"), .cLText) + XMLLoadAttribute(n.GetAttribute("BG"), .cBG) + End With + End Sub + Private Sub XMLLoadElementValue(ByVal n As XmlElement, ByRef v As Integer) If n Is Nothing Then Exit Sub XMLLoadAttribute(n.GetAttribute("Value"), v) @@ -302,17 +345,6 @@ Partial Public Class MainWindow v = New Font(xName, xSize, CType(xStyle, System.Drawing.FontStyle)) End Sub - Private Sub XMLLoadPlayer(ByVal n As XmlElement) - Dim i As Integer = -1 - XMLLoadAttribute(n.GetAttribute("Index"), i) - If i < 0 Or i > UBound(pArgs) Then Exit Sub - - XMLLoadAttribute(n.GetAttribute("Path"), pArgs(i).Path) - XMLLoadAttribute(n.GetAttribute("FromBeginning"), pArgs(i).aBegin) - XMLLoadAttribute(n.GetAttribute("FromHere"), pArgs(i).aHere) - XMLLoadAttribute(n.GetAttribute("Stop"), pArgs(i).aStop) - End Sub - Private Sub XMLLoadKeybinding(ByVal n As XmlElement) For xI = 0 To UBound(Keybindings) If Keybindings(xI).OpName = n.GetAttribute("Name") Then @@ -327,32 +359,21 @@ Partial Public Class MainWindow Next End Sub - Private Sub XMLLoadColumn(ByVal n As XmlElement) - Dim i As Integer = -1 + Private Sub XMLLoadOpenedFiles(ByVal n As XmlElement) + Dim i As Integer XMLLoadAttribute(n.GetAttribute("Index"), i) - If i < 0 Or i > UBound(column) Then Exit Sub + XMLLoadAttribute(n.GetAttribute("File"), BMSFileList(i)) + End Sub - With column(i) - 'XMLLoadAttribute(n.GetAttribute("Left"), .Left) - XMLLoadAttribute(n.GetAttribute("Width"), .Width) - XMLLoadAttribute(n.GetAttribute("Title"), .Title) - 'XMLLoadAttribute(n.GetAttribute("Text"), .Text) - Dim Display As Boolean - Dim attr = n.GetAttribute("Display") - XMLLoadAttribute(attr, Display) - .isVisible = CBool(IIf(String.IsNullOrEmpty(attr), .isVisible, Display)) + Private Sub XMLLoadPlayer(ByVal n As XmlElement) + Dim i As Integer = -1 + XMLLoadAttribute(n.GetAttribute("Index"), i) + If i < 0 Or i > UBound(pArgs) Then Exit Sub - 'XMLLoadAttribute(n.GetAttribute("isNumeric"), .isNumeric) - 'XMLLoadAttribute(n.GetAttribute("Visible"), .Visible) - 'XMLLoadAttribute(n.GetAttribute("Identifier"), .Identifier) - XMLLoadAttribute(n.GetAttribute("NoteColor"), .cNote) - .setNoteColor(.cNote) - XMLLoadAttribute(n.GetAttribute("TextColor"), .cText) - XMLLoadAttribute(n.GetAttribute("LongNoteColor"), .cLNote) - .setLNoteColor(.cLNote) - XMLLoadAttribute(n.GetAttribute("LongTextColor"), .cLText) - XMLLoadAttribute(n.GetAttribute("BG"), .cBG) - End With + XMLLoadAttribute(n.GetAttribute("Path"), pArgs(i).Path) + XMLLoadAttribute(n.GetAttribute("FromBeginning"), pArgs(i).aBegin) + XMLLoadAttribute(n.GetAttribute("FromHere"), pArgs(i).aHere) + XMLLoadAttribute(n.GetAttribute("Stop"), pArgs(i).aStop) End Sub Private Sub LoadSettings(ByVal Path As String) @@ -418,6 +439,20 @@ Partial Public Class MainWindow End With End If + Dim eOpenedFiles As XmlElement = Root.Item("OpenedFiles") + If eOpenedFiles IsNot Nothing Then + With eOpenedFiles + Dim iL As Integer + XMLLoadAttribute(.GetAttribute("Count"), iL) + XMLLoadAttribute(.GetAttribute("BMSFileIndex"), BMSFileIndex) + ReDim Preserve BMSFileList(iL) + + For Each eeFile As XmlElement In .ChildNodes + XMLLoadOpenedFiles(eeFile) + Next + End With + End If + 'edit Dim eEdit As XmlElement = Root.Item("Edit") If eEdit IsNot Nothing Then diff --git a/iBMSC/EditorRecent.vb b/iBMSC/EditorRecent.vb index 3ccc5dea2..d29661f8f 100644 --- a/iBMSC/EditorRecent.vb +++ b/iBMSC/EditorRecent.vb @@ -3,6 +3,9 @@ Dim xAlreadyExists As Boolean = False Dim xI1 As Integer + ' Check if it's ___TempRandom.bms + If xFileName.StartsWith("___TempRandom") Then Exit Sub + For xI1 = 0 To 4 If Recent(xI1) = xFileName Then xAlreadyExists = True @@ -61,22 +64,26 @@ Select Case LCase(Path.GetExtension(xFileName)) Case ".bms", ".bme", ".bml", ".pms", ".txt" - InitPath = ExcludeFileName(xFileName) SetFileName(xFileName) ClearUndo() OpenBMS(My.Computer.FileSystem.ReadAllText(xFileName, TextEncoding)) SetIsSaved(True) + AddBMSFileToListAndTBTabAndStruct(xFileName) + Case ".ibmsc" - InitPath = ExcludeFileName(xFileName) SetFileName("Imported_" & GetFileName(xFileName)) OpeniBMSC(xFileName) + InitPath = ExcludeFileName(xFileName) SetIsSaved(False) + AddBMSFileToListAndTBTabAndStruct(xFileName) + Case Else - InitPath = ExcludeFileName(xFileName) SetFileName(xFileName) ClearUndo() OpenBMS(My.Computer.FileSystem.ReadAllText(xFileName, TextEncoding)) SetIsSaved(True) + AddBMSFileToListAndTBTabAndStruct(xFileName) + End Select End Sub diff --git a/iBMSC/FileTab.vb b/iBMSC/FileTab.vb new file mode 100644 index 000000000..69c459ba7 --- /dev/null +++ b/iBMSC/FileTab.vb @@ -0,0 +1,323 @@ +Imports System.Linq +Imports iBMSC.Editor + +Partial Public Class MainWindow + ' BMS File tabs + Dim BMSFileStructs As BMSStruct() + Dim BMSFileIndex As Integer = 0 + Dim BMSFileList(-1) As String ' {"G:\LR2Making\Zekk_MEJIRUSHI_V2_ogg\MEJIRUSHI_14GLITCH - Copy.bms", "G:\LR2Making\Zekk_MEJIRUSHI_V2_ogg\MEJIRUSHI_14GLITCH.bms", "G:\LR2Making\[NoE]間隙を縫う\_kanngekiAnother.bms"} + Dim BMSFileTSBList As ToolStripButton() + + Structure BMSStruct + Public Notes() As Note + Public NotesTemplate() As Note + Public hWAV() As String + Public hBPM() As Long + Public hSTOP() As Long + Public hBMSCROLL() As Long + Public hCOM() As String + Public wLWAV() As WavSample + Public HeaderT() As String ' Text + Public HeaderN() As Decimal ' Numeric + Public HeaderI() As Integer ' Integer + Public Expansion As String + Public MeasureLength() As Double + + Public ExpansionSplit() As String + Public GhostMode As Integer + + Public sUndo() As UndoRedo.LinkedURCmd + Public sRedo() As UndoRedo.LinkedURCmd + Public sI As Integer + + Public IsSaved As Boolean + Public WaveformLoaded As Boolean + Public ExpansionEnabled As Boolean + + Public Sub New(xNotes() As Note, xNotesTemplate() As Note, + xWAV() As String, xBPM() As Long, xSTOP() As Long, xBMSCROLL() As Long, xCOM() As String, xLWAV() As WavSample, + xHeaderT() As String, xHeaderN() As Decimal, xHeaderI() As Integer, xExpansion As String, xMeasureLength() As Double, + xExpansionSplit() As String, xGhostMode As Integer, + xUndo() As UndoRedo.LinkedURCmd, xRedo() As UndoRedo.LinkedURCmd, xSI As Integer, + xIsSaved As Boolean, xWaveformLoaded As Boolean, xExpansionEnabled As Boolean) + + Notes = xNotes + NotesTemplate = xNotesTemplate + hWAV = xWAV + hBPM = xBPM + hSTOP = xSTOP + hBMSCROLL = xBMSCROLL + hCOM = xCOM + wLWAV = xLWAV + HeaderT = xHeaderT + HeaderN = xHeaderN + HeaderI = xHeaderI + Expansion = xExpansion + MeasureLength = xMeasureLength + + ExpansionSplit = xExpansionSplit + GhostMode = xGhostMode + + sUndo = xUndo + sRedo = xRedo + sI = xSI + + IsSaved = xIsSaved + WaveformLoaded = xWaveformLoaded + ExpansionEnabled = xExpansionEnabled + End Sub + End Structure + + Private Sub TBClose_Click(sender As Object, e As EventArgs) Handles mnClose.Click + If ClosingPopSave() Then Exit Sub + + If BMSFileIndex = UBound(BMSFileList) Or BMSFileIndex = -1 Then TBNew_Click(Nothing, Nothing) : Exit Sub + + Dim xITemp As Integer = BMSFileIndex + TBTab_Click(BMSFileTSBList(BMSFileIndex + 1), New EventArgs) + + RemoveBMSFile(xITemp) + SetBMSFileIndex(xITemp) + End Sub + + Private Sub TBTab_Click(sender As Object, e As EventArgs) + Dim TSBS As ToolStripButton = CType(sender, ToolStripButton) + If TSBS.Checked Then Exit Sub + + ' If Not IsSaved Then + ' Dim xResult As MsgBoxResult = MsgBox(Strings.Messages.SaveOnExit, MsgBoxStyle.YesNoCancel Or MsgBoxStyle.Question, Me.Text) + ' If xResult = MsgBoxResult.Yes Then + ' TBSave_ButtonClick(Nothing, Nothing) + ' ElseIf xResult = MsgBoxResult.No Then + ' SetIsSaved(True) + ' Else + ' Exit Sub + ' End If + ' End If + SaveBMSStruct() + + SetBMSFileIndex(Array.IndexOf(BMSFileTSBList, TSBS)) + + If BMSFileStructs(BMSFileIndex).Notes IsNot Nothing Then + SetFileName(BMSFileList(BMSFileIndex)) + LoadBMSStruct(BMSFileIndex) + Else + If BMSFileList(BMSFileIndex) = FileNameInit Then + TBNew_Click(Nothing, Nothing) + Else + ReadFile(BMSFileList(BMSFileIndex)) + End If + End If + + ' If BMSFileList(BMSFileIndex) = FileNameInit Then + ' TBNew_Click(Nothing, Nothing) + ' Else + ' If BMSFileStructs(BMSFileIndex).Notes IsNot Nothing Then + ' SetFileName(BMSFileList(BMSFileIndex)) + ' LoadBMSStruct() + ' Else + ' ReadFile(BMSFileList(BMSFileIndex)) + ' End If + ' End If + End Sub + + Private Sub TBTab_MouseDown(sender As Object, e As MouseEventArgs) + If e.Button = MouseButtons.Middle Then + Dim xIClicked = Array.IndexOf(BMSFileTSBList, CType(sender, ToolStripButton)) + If xIClicked < BMSFileIndex Then + RemoveBMSFile(xIClicked) + SetBMSFileIndex(BMSFileIndex - 1) + + ElseIf xIClicked = BMSFileIndex Then + TBClose_Click(sender, New EventArgs) + + ElseIf xIClicked <> UBound(BMSFileList) Then + RemoveBMSFile(xIClicked) + + End If + End If + End Sub + + Private Sub AddUntitledBMSFileToList() + Dim ub As Integer = UBound(BMSFileList) + If ub <> -1 AndAlso BMSFileList(ub) = FileNameInit Then Exit Sub + + ReDim Preserve BMSFileList(ub + 1) + BMSFileList(ub + 1) = FileNameInit + End Sub + + Public Sub AddBMSFiles(xPaths As String()) + For xI = 0 To UBound(xPaths) + NewRecent(xPaths(xI)) + AddBMSFileToListAndTBTabAndStruct(xPaths(xI)) + Next + End Sub + + Private Sub AddBMSFileToListAndTBTabAndStruct(xPath As String) + If BMSFileList.Contains(xPath) Then + SetBMSFileIndex(Array.IndexOf(BMSFileList, xPath)) + + Else + If BMSFileIndex = UBound(BMSFileList) Then BMSFileIndex -= 1 + ReDim Preserve BMSFileList(BMSFileList.Length) + ReDim Preserve BMSFileTSBList(BMSFileTSBList.Length) + + For xI = UBound(BMSFileList) - 1 To BMSFileIndex + 1 Step -1 + BMSFileList(xI + 1) = BMSFileList(xI) + BMSFileTSBList(xI + 1) = BMSFileTSBList(xI) + Next + + BMSFileIndex += 1 + ' Add to BMSFileList + BMSFileList(BMSFileIndex) = xPath + ' Add to BMSFileTSBList + BMSFileTSBList(BMSFileIndex) = NewBMSTab(xPath) + + ' Re-add buttons to TBTab + For i = 1 To TBTab.Items.Count + TBTab.Items.RemoveAt(0) + Next + TBTab.Items.AddRange(BMSFileTSBList) + SetBMSFileIndex(BMSFileIndex) + + ' Add to BMSStructs + AddBMSStruct() + End If + End Sub + + Private Function NewBMSTab(xPath As String) As ToolStripButton + Dim xTSB As New ToolStripButton + With xTSB + .Image = My.Resources.x16Blank + .Name = GetFileName(xPath) + .Text = GetFileName(xPath) + End With + AddHandler xTSB.Click, AddressOf TBTab_Click + AddHandler xTSB.MouseDown, AddressOf TBTab_MouseDown + Return xTSB + End Function + + Private Sub RemoveBMSFile(xI As Integer) + For i = xI To UBound(BMSFileList) - 1 + BMSFileList(i) = BMSFileList(i + 1) + BMSFileTSBList(i) = BMSFileTSBList(i + 1) + Next + ReDim Preserve BMSFileList(UBound(BMSFileList) - 1) + ReDim Preserve BMSFileTSBList(UBound(BMSFileTSBList) - 1) + TBTab.Items.RemoveAt(xI) + RemoveBMSStruct(xI) + End Sub + + Private Sub SetBMSFileIndex(xI As Integer) + BMSFileIndex = xI + For i = 0 To UBound(BMSFileTSBList) + If i = BMSFileIndex Then + BMSFileTSBList(i).Checked = True + Else + BMSFileTSBList(i).Checked = False + End If + Next + End Sub + + Private Sub SaveBMSStruct(Optional xI As Integer = -1) + If xI = -1 Then xI = BMSFileIndex + + Dim HeaderT() As String = {THTitle.Text, THArtist.Text, THGenre.Text, THPlayLevel.Text, THTotal.Text, + THSubTitle.Text, THSubArtist.Text, THStageFile.Text, THBanner.Text, THBackBMP.Text, THExRank.Text, THComment.Text} + Dim HeaderN() As Decimal = {THBPM.Value} + Dim HeaderI() As Integer = {CHPlayer.SelectedIndex, CHRank.SelectedIndex, CHDifficulty.SelectedIndex, CHLnObj.SelectedIndex} + + BMSFileStructs(xI) = New BMSStruct(Notes, NotesTemplate, + hWAV, hBPM, hSTOP, hBMSCROLL, hCOM, wLWAV, + HeaderT, HeaderN, HeaderI, TExpansion.Text, MeasureLength, + ExpansionSplit, GhostMode, + sUndo, sRedo, sI, + IsSaved, WaveformLoaded, TExpansion.Enabled) + + End Sub + + Private Sub LoadBMSStruct(Optional xI As Integer = -1) + If xI = -1 Then xI = BMSFileIndex + + With BMSFileStructs(xI) + Notes = .Notes + NotesTemplate = .NotesTemplate + + hWAV = .hWAV + hBPM = .hBPM + hSTOP = .hSTOP + hBMSCROLL = .hBMSCROLL + hCOM = .hCOM + wLWAV = .wLWAV + + THTitle.Text = .HeaderT(0) + THArtist.Text = .HeaderT(1) + THGenre.Text = .HeaderT(2) + THPlayLevel.Text = .HeaderT(3) + THTotal.Text = .HeaderT(4) + THSubTitle.Text = .HeaderT(5) + THSubArtist.Text = .HeaderT(6) + THStageFile.Text = .HeaderT(7) + THBanner.Text = .HeaderT(8) + THBackBMP.Text = .HeaderT(9) + THExRank.Text = .HeaderT(10) + THComment.Text = .HeaderT(11) + + THBPM.Value = .HeaderN(0) + + CHPlayer.SelectedIndex = .HeaderI(0) + CHRank.SelectedIndex = .HeaderI(1) + CHDifficulty.SelectedIndex = .HeaderI(2) + CHLnObj.SelectedIndex = .HeaderI(3) + + TExpansion.Text = .Expansion + + MeasureLength = .MeasureLength + + ExpansionSplit = .ExpansionSplit + GhostMode = .GhostMode + + sUndo = .sUndo + sRedo = .sRedo + sI = .sI + + IsSaved = .IsSaved + WaveformLoaded = .WaveformLoaded + End With + + If Not WaveformLoaded AndAlso ShowWaveform Then WaveformLoadId = 1 : TimerLoadWaveform.Enabled = True + SetIsSaved(IsSaved) + + LWAVRefresh() + LBeatRefresh() + + LoadColorOverride(FileName) + SortByVPositionQuick(0, UBound(Notes)) + UpdateMeasureBottom() + UpdatePairing() + CalculateTotalPlayableNotes() + CalculateGreatestVPosition() + RefreshPanelAll() + POStatusRefresh() + End Sub + + Private Sub AddBMSStruct(Optional xI As Integer = -1) + If xI = -1 Then xI = BMSFileIndex + + ReDim Preserve BMSFileStructs(BMSFileStructs.Length) + For i = UBound(BMSFileStructs) - 1 To xI Step -1 + BMSFileStructs(i + 1) = BMSFileStructs(i) + Next + + BMSFileStructs(xI) = New BMSStruct() + End Sub + + Private Sub RemoveBMSStruct(Optional xI As Integer = -1) + If xI = -1 Then xI = BMSFileIndex + + For i = xI To UBound(BMSFileStructs) - 1 + BMSFileStructs(i) = BMSFileStructs(i + 1) + Next + ReDim Preserve BMSFileStructs(UBound(BMSFileStructs) - 1) + End Sub +End Class diff --git a/iBMSC/ImageButtons/Blank.png b/iBMSC/ImageButtons/Blank.png new file mode 100644 index 0000000000000000000000000000000000000000..a92837b4ea5c3670a21ab497bff1290fd3a5eb90 GIT binary patch literal 7395 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 1140, 17 + + 630, 56 + 1260, 17 diff --git a/iBMSC/MainWindow.vb b/iBMSC/MainWindow.vb index 3a1b06928..11bdbeee8 100644 --- a/iBMSC/MainWindow.vb +++ b/iBMSC/MainWindow.vb @@ -40,7 +40,6 @@ Public Class MainWindow Public Sub New() InitializeComponent() Audio.Initialize() - SupportedAudioExtension = GetSupportedExtensions() ' I don't think this line is good but it's all I've got. End Sub Dim MeasureLength(999) As Double @@ -90,7 +89,8 @@ Public Class MainWindow Dim LnObj As Integer = 0 '0 for none, 1-1295 for 01-ZZ 'IO - Dim FileName As String = "Untitled.bms" + Dim FileNameInit As String = "Untitled.bms" + Dim FileName As String = FileNameInit Dim TempFileName As String = "___TempBMS.bmsc" Dim RandomTempFileName As String = "___TempRandom" & GenerateRandomString(6, False) & ".bmsc" Public ExpansionSplit(2) As String @@ -355,6 +355,7 @@ Public Class MainWindow New Keybinding("End", "*HIDDEN*", {"End"}, KbCategoryAllMod), New Keybinding("PageUp", "*HIDDEN*", {"PageUp"}, KbCategoryAllMod), New Keybinding("PageDown", "*HIDDEN*", {"PageDown"}, KbCategoryAllMod), + New Keybinding("Tab", "*HIDDEN*", {"Tab"}, KbCategoryAllMod), New Keybinding("Decrease Division", "*HIDDEN*", {"Oemcomma"}, KbCategoryAllMod), New Keybinding("Increase Division", "*HIDDEN*", {"OemPeriod"}, KbCategoryAllMod), _ ' Hidden / Experimental @@ -675,6 +676,14 @@ Public Class MainWindow IIf(My.Application.Info.Version.Build = 0, "", "." & My.Application.Info.Version.Build).ToString() Text = IIf(isSaved, "", "*").ToString() & GetFileName(FileName) & " - " & My.Application.Info.Title & " " & xVersion Me.IsSaved = isSaved + + If BMSFileTSBList IsNot Nothing Then + If Not isSaved Then + BMSFileTSBList(BMSFileIndex).Image = My.Resources.x16New + Else + BMSFileTSBList(BMSFileIndex).Image = My.Resources.x16Blank + End If + End If End Sub Private Sub PreviewNote(ByVal xFileLocation As String, ByVal bStop As Boolean) @@ -1061,6 +1070,7 @@ Public Class MainWindow End Sub Private Sub Form1_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing + ' TODO: SaveAll Dim xStrAll As String Dim xRandomFile As Boolean = GetFileName(FileName).StartsWith("___TempRandom") If Not IsSaved Then @@ -1174,11 +1184,16 @@ Public Class MainWindow TExpansion.Text = "" + LWAV.Items.Clear() + For xI1 = 1 To 1295 + LWAV.Items.Add(C10to36(xI1) & ": " & hWAV(xI1)) + Next + LBeat.Items.Clear() For xI1 As Integer = 0 To 999 MeasureLength(xI1) = 192.0R MeasureBottom(xI1) = xI1 * 192.0R - LBeat.Items.Add(Add3Zeros(xI1) & ": 1 ( 4 / 4 )") + LBeat.Items.Add(Add3Zeros(xI1) & ": 1 ( " & CInt(nBeatD.Value) & " / 4" & CInt(nBeatD.Value) & " )") Next End Sub @@ -1203,6 +1218,9 @@ Public Class MainWindow End Sub Private Sub Form1_DragDrop(ByVal sender As Object, ByVal e As DragEventArgs) Handles Me.DragDrop + + If ClosingPopSave() Then Exit Sub + ReDim DDFileName(-1) ' If Not e.Data.GetDataPresent(DataFormats.FileDrop) Then Return @@ -1271,7 +1289,7 @@ Public Class MainWindow SetIsSaved(True) Case ".sm" - SetFileName("Untitled.bms") + SetFileName(FileNameInit) If OpenSM(My.Computer.FileSystem.ReadAllText(xPath, TextEncoding)) Then Return InitPath = ExcludeFileName(xPath) ClearUndo() @@ -1321,6 +1339,8 @@ Public Class MainWindow End Sub Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load + SupportedAudioExtension = GetSupportedExtensions() + 'On Error Resume Next Me.TopMost = True Me.SuspendLayout() @@ -1362,18 +1382,12 @@ Public Class MainWindow spMain = New Panel() {PMainInL, PMainIn, PMainInR} - Dim xI1 As Integer - sUndo(0) = New UndoRedo.NoOperation sUndo(1) = New UndoRedo.NoOperation sRedo(0) = New UndoRedo.NoOperation sRedo(1) = New UndoRedo.NoOperation sI = 0 - LWAV.Items.Clear() - For xI1 = 1 To 1295 - LWAV.Items.Add(C10to36(xI1) & ":") - Next LWAV.SelectedIndex = 0 CHPlayer.SelectedIndex = 0 @@ -1396,42 +1410,58 @@ Public Class MainWindow LoadColorOverride(FileName) SetIsSaved(True) - Dim xStr() As String = Environment.GetCommandLineArgs - 'Dim xStr() As String = {Application.ExecutablePath, "C:\Users\User\Desktop\yang run xuan\SoFtwArES\Games\O2Mania\music\SHOOT!\shoot! -NM-.bms"} - - Dim L1000 As Boolean = False - - If xStr.Length = 2 Then - ReadFile(xStr(1)) - If LCase(Path.GetExtension(xStr(1))) = ".ibmsc" AndAlso GetFileName(xStr(1)).StartsWith("AutoSave_", True, Nothing) Then L1000 = True - End If + Dim BMSFileListCheck(UBound(BMSFileList)) As String + Dim i = -1 + For Each file In BMSFileList + If My.Computer.FileSystem.FileExists(file) Then + i += 1 + BMSFileListCheck(i) = file + End If + Next + BMSFileList = CType(BMSFileListCheck.Clone(), String()) + ReDim Preserve BMSFileList(i) + AddUntitledBMSFileToList() + + ReDim BMSFileTSBList(UBound(BMSFileList)) + ReDim BMSFileStructs(UBound(BMSFileList)) + For xI = 0 To UBound(BMSFileList) + Dim xTSB As ToolStripButton = NewBMSTab(BMSFileList(xI)) + BMSFileTSBList(xI) = xTSB + ' AddHandler xTSB.Click, AddressOf TBTab_Click + TBTab.Items.Add(xTSB) + Next + SetBMSFileIndex(BMSFileIndex) 'pIsSaved.Visible = Not IsSaved IsInitializing = False - If Not L1000 Then - If Process.GetProcessesByName(Process.GetCurrentProcess.ProcessName).Length <= 1 Then + If Process.GetProcessesByName(Process.GetCurrentProcess.ProcessName).Length <= 1 Then - Dim xFiles() As FileInfo = My.Computer.FileSystem.GetDirectoryInfo(My.Application.Info.DirectoryPath).GetFiles("AutoSave_*.IBMSC") - If xFiles IsNot Nothing AndAlso xFiles.Length > 0 Then - - 'Me.TopMost = True - If MsgBox(Replace(Strings.Messages.RestoreAutosavedFile, "{}", xFiles.Length.ToString()), MsgBoxStyle.YesNo Or MsgBoxStyle.MsgBoxSetForeground) = MsgBoxResult.Yes Then - For Each xF As FileInfo In xFiles - 'MsgBox(xF.FullName) - System.Diagnostics.Process.Start(Application.ExecutablePath, """" & xF.FullName & """") - Next - End If + Dim xFiles() As FileInfo = My.Computer.FileSystem.GetDirectoryInfo(My.Application.Info.DirectoryPath).GetFiles("AutoSave_*.IBMSC") + If xFiles IsNot Nothing AndAlso xFiles.Length > 0 Then - For Each xF As FileInfo In xFiles - ReDim Preserve pTempFileNames(UBound(pTempFileNames) + 1) - pTempFileNames(UBound(pTempFileNames)) = xF.FullName + 'Me.TopMost = True + If MsgBox(Replace(Strings.Messages.RestoreAutosavedFile, "{}", xFiles.Length.ToString()), MsgBoxStyle.YesNo Or MsgBoxStyle.MsgBoxSetForeground) = MsgBoxResult.Yes Then + Dim xFUB = UBound(xFiles) + Dim xFilesPaths(xFUB) As String + For xI = 0 To xFUB + xFilesPaths(xI) = xFiles(xI).FullName Next + SetBMSFileIndex(UBound(BMSFileList) - 1) + AddBMSFiles(xFilesPaths) + ' For Each xF As FileInfo In xFiles + ' 'MsgBox(xF.FullName) + ' System.Diagnostics.Process.Start(Application.ExecutablePath, """" & xF.FullName & """") + ' Next End If + + For Each xF As FileInfo In xFiles + ReDim Preserve pTempFileNames(UBound(pTempFileNames) + 1) + pTempFileNames(UBound(pTempFileNames)) = xF.FullName + Next End If End If - IsInitializing = False POStatusRefresh() Me.ResumeLayout() @@ -1440,6 +1470,19 @@ Public Class MainWindow Me.WindowState = CType(tempResize, FormWindowState) Me.Visible = True + + Dim xStr() As String = Environment.GetCommandLineArgs + + If xStr.Length > 1 Then + Dim xStrFiles(UBound(xStr) - 1) As String + For xI = 0 To UBound(xStrFiles) + xStrFiles(xI) = xStr(xI + 1) + Next + SetBMSFileIndex(UBound(BMSFileList) - 1) + AddBMSFiles(xStrFiles) + End If + + If BMSFileIndex <> UBound(BMSFileList) Then ReadFile(BMSFileList(BMSFileIndex)) End Sub Private Sub UpdatePairing() @@ -1771,10 +1814,10 @@ Public Class MainWindow 'KMouseDown = -1 ReDim SelectedNotes(-1) KMouseOver = -1 - If ClosingPopSave() Then Exit Sub + ' If ClosingPopSave() Then Exit Sub ClearUndo() - SetFileName("Untitled.bms") + SetFileName(FileNameInit) InitializeNewBMS() ReDim Notes(0) @@ -1797,17 +1840,14 @@ Public Class MainWindow End With THBPM.Value = 120 - LWAV.Items.Clear() - Dim xI1 As Integer - For xI1 = 1 To 1295 - LWAV.Items.Add(C10to36(xI1) & ": " & hWAV(xI1)) - Next + LWAVRefresh() LWAV.SelectedIndex = 0 SetIsSaved(True) + SetBMSFileIndex(UBound(BMSFileList)) 'pIsSaved.Visible = Not IsSaved - CalculateTotalPlayableNotes() + CalculateTotalPlayableNotes(False) CalculateGreatestVPosition() RefreshPanelAll() POStatusRefresh() @@ -1841,7 +1881,7 @@ Public Class MainWindow End With THBPM.Value = 120 - SetFileName("Untitled.bms") + SetFileName(FileNameInit) SetIsSaved(True) 'pIsSaved.Visible = Not IsSaved @@ -1853,7 +1893,7 @@ Public Class MainWindow 'KMouseDown = -1 ReDim SelectedNotes(-1) KMouseOver = -1 - If ClosingPopSave() Then Exit Sub + ' If ClosingPopSave() Then Exit Sub Dim xDOpen As New OpenFileDialog xDOpen.Filter = Strings.FileType._bms & "|*.bms;*.bme;*.bml;*.pms;*.txt|" & @@ -1865,14 +1905,14 @@ Public Class MainWindow Strings.FileType._all & "|*.*" xDOpen.DefaultExt = "bms" xDOpen.InitialDirectory = IIf(ExcludeFileName(FileName) = "", InitPath, ExcludeFileName(FileName)).ToString() + xDOpen.Multiselect = True If xDOpen.ShowDialog = Windows.Forms.DialogResult.Cancel Then Exit Sub - InitPath = ExcludeFileName(xDOpen.FileName) - SetFileName(xDOpen.FileName) - OpenBMS(My.Computer.FileSystem.ReadAllText(xDOpen.FileName, TextEncoding)) - ClearUndo() - NewRecent(FileName) - SetIsSaved(True) + + Dim xProg As New fLoadFileProgress(xDOpen.FileNames, IsSaved) + xProg.ShowDialog(Me) + + RefreshPanelAll() 'pIsSaved.Visible = Not IsSaved End Sub @@ -1905,8 +1945,8 @@ Public Class MainWindow xDOpen.InitialDirectory = IIf(ExcludeFileName(FileName) = "", InitPath, ExcludeFileName(FileName)).ToString() If xDOpen.ShowDialog = Windows.Forms.DialogResult.Cancel Then Return - InitPath = ExcludeFileName(xDOpen.FileName) SetFileName("Imported_" & GetFileName(xDOpen.FileName)) + InitPath = ExcludeFileName(xDOpen.FileName) OpeniBMSC(xDOpen.FileName) NewRecent(xDOpen.FileName) SetIsSaved(False) @@ -1926,8 +1966,8 @@ Public Class MainWindow If xDOpen.ShowDialog = Windows.Forms.DialogResult.Cancel Then Exit Sub If OpenSM(My.Computer.FileSystem.ReadAllText(xDOpen.FileName, TextEncoding)) Then Exit Sub + SetFileName(FileNameInit) InitPath = ExcludeFileName(xDOpen.FileName) - SetFileName("Untitled.bms") ClearUndo() SetIsSaved(False) 'pIsSaved.Visible = Not IsSaved @@ -1951,7 +1991,6 @@ Public Class MainWindow xDSave.InitialDirectory = InitPath If xDSave.ShowDialog = Windows.Forms.DialogResult.Cancel Then Exit Sub - InitPath = ExcludeFileName(xDSave.FileName) SetFileName(xDSave.FileName) End If Dim xStrAll As String = SaveBMS() @@ -1980,7 +2019,6 @@ Public Class MainWindow xDSave.InitialDirectory = IIf(ExcludeFileName(FileName) = "", InitPath, ExcludeFileName(FileName)).ToString() If xDSave.ShowDialog = Windows.Forms.DialogResult.Cancel Then Exit Sub - InitPath = ExcludeFileName(xDSave.FileName) SetFileName(xDSave.FileName) Dim xStrAll As String = SaveBMS() My.Computer.FileSystem.WriteAllText(FileName, xStrAll, False, TextEncoding) @@ -2371,6 +2409,21 @@ Public Class MainWindow End Select End Sub + Private Sub LWAVRefresh() + For xI1 = 1 To 1295 + Dim xIL = xI1 - 1 + LWAV.Items(xIL) = C10to36(xI1) & ": " & hWAV(xI1) + Next + End Sub + + Private Sub LBeatRefresh() + For xILB = 0 To 999 + Dim a As Double = MeasureLength(xILB) / 192.0R + Dim xxD = GetDenominator(a) + LBeat.Items(xILB) = Add3Zeros(xILB) & ": " & a & IIf(xxD > 10000, "", " ( " & CLng(a * xxD) & " / " & xxD & " ) ").ToString() + Next + End Sub + Private Sub TBErrorCheck_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBErrorCheck.Click, mnErrorCheck.Click If TypeOf sender Is ToolStripButton Then Dim senderC As ToolStripButton = CType(sender, ToolStripButton) @@ -2989,7 +3042,7 @@ Public Class MainWindow ''' Remark: Pls sort and updatepairing before this process. ''' - Private Sub CalculateTotalPlayableNotes() + Private Sub CalculateTotalPlayableNotes(Optional ModifyTotal As Boolean = True) Dim xI1 As Integer Dim xIAll As Integer = 0 Dim xITemp As Integer = 0 @@ -3031,7 +3084,7 @@ Public Class MainWindow TBTotalValue.Text = "" End If TBStatistics.Text = xIAll.ToString() - If TotalAutofill Then THTotal.Text = Math.Round(TotalValue, TotalDecimal).ToString() + If ModifyTotal AndAlso TotalAutofill Then THTotal.Text = Math.Round(TotalValue, TotalDecimal).ToString() End Sub Public Function GetMouseVPosition(Optional snap As Boolean = True) As Double @@ -6123,6 +6176,7 @@ case2: Dim xI0 As Integer End Sub Public Sub Expand_ModifySection() + ' TODO: Revise to the now available tab style RemoveGhostNotes() GhostMode = 0 Dim RandomTempFilePath = ExcludeFileName(FileName) & "\" & RandomTempFileName diff --git a/iBMSC/My Project/Resources.Designer.vb b/iBMSC/My Project/Resources.Designer.vb index 25bf88a86..d2d976ad3 100644 --- a/iBMSC/My Project/Resources.Designer.vb +++ b/iBMSC/My Project/Resources.Designer.vb @@ -70,6 +70,16 @@ Namespace My.Resources End Get End Property + ''' + ''' Looks up a localized resource of type System.Drawing.Bitmap. + ''' + Friend ReadOnly Property Blank() As System.Drawing.Bitmap + Get + Dim obj As Object = ResourceManager.GetObject("Blank", resourceCulture) + Return CType(obj,System.Drawing.Bitmap) + End Get + End Property + ''' ''' Looks up a localized resource of type System.Drawing.Bitmap. ''' @@ -425,6 +435,16 @@ Namespace My.Resources End Get End Property + ''' + ''' Looks up a localized resource of type System.Drawing.Bitmap. + ''' + Friend ReadOnly Property x16Blank() As System.Drawing.Bitmap + Get + Dim obj As Object = ResourceManager.GetObject("x16Blank", resourceCulture) + Return CType(obj,System.Drawing.Bitmap) + End Get + End Property + ''' ''' Looks up a localized resource of type System.Drawing.Bitmap. ''' diff --git a/iBMSC/My Project/Resources.resx b/iBMSC/My Project/Resources.resx index af834dd69..ab7c1188c 100644 --- a/iBMSC/My Project/Resources.resx +++ b/iBMSC/My Project/Resources.resx @@ -427,4 +427,10 @@ ..\ImageButtonsSmall\x16PastePattern.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\ImageButtons\Blank.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\ImageButtonsSmall\x16Blank.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + \ No newline at end of file diff --git a/iBMSC/Option Windows/OpKeybinding.vb b/iBMSC/Option Windows/OpKeybinding.vb index d37928c1a..813aef16b 100644 --- a/iBMSC/Option Windows/OpKeybinding.vb +++ b/iBMSC/Option Windows/OpKeybinding.vb @@ -82,7 +82,6 @@ Public Class OpKeybinding Private Sub BAdd_Click(sender As Object, e As EventArgs) Handles BAdd.Click If TComboInput.Text <> "" Then keyComboOK = True - ' TODO: Check existing keybindings CheckConflictWithOtherFunctions() CheckConflictWithOtherKeybindings() If Not keyComboOK Then Exit Sub @@ -150,7 +149,7 @@ Public Class OpKeybinding End If ' Check with other key combos - Dim OtherFunctionKeyCombos() As String = {"Ctrl+N", "Ctrl+O", "Ctrl+Alt+O", "Ctrl+S", "Ctrl+Alt+S", "Ctrl+Shift+E", "Alt+D1", "Alt+D2", "Alt+D3", "Alt+D4", "Alt+D5", + Dim OtherFunctionKeyCombos() As String = {"Ctrl+N", "Ctrl+O", "Ctrl+Alt+O", "Ctrl+S", "Ctrl+Alt+S", "Ctrl+Shift+E", "Ctrl+W", "Alt+D1", "Alt+D2", "Alt+D3", "Alt+D4", "Alt+D5", "Ctrl+F", "Ctrl+G", "Ctrl+T", "Ctrl+Shift+T", "Alt+B", "Alt+S", "Alt+R", "Alt+G"} If OtherFunctionKeyCombos.Contains(TComboInput.Text) Then @@ -214,7 +213,7 @@ Public Class OpKeybinding Dim KeybindsBackup As MainWindow.Keybinding() = CType(Keybinds.Clone(), MainWindow.Keybinding()) ReDim KeybindsHidden(UBound(KeybindsBackup)) Dim i As Integer = -1 - Dim j As Integer = -1 ' TODO: Setup another array for hidden keybinds, and create sub CheckConflictWithHiddenFunctions + Dim j As Integer = -1 For Each keybind In KeybindsBackup If keybind.Category <> MainWindow.KbCategoryAllMod AndAlso keybind.Category <> MainWindow.KbCategoryHidden Then diff --git a/iBMSC/PanelEvents.vb b/iBMSC/PanelEvents.vb index 4b55d0e3f..cb94edb78 100644 --- a/iBMSC/PanelEvents.vb +++ b/iBMSC/PanelEvents.vb @@ -336,6 +336,19 @@ Partial Public Class MainWindow If PanelFocus = 0 Then LeftPanelScroll.Value = CInt(IIf(LeftPanelScroll.Value + gPgUpDn < 0, LeftPanelScroll.Value + gPgUpDn, 0)) If PanelFocus = 1 Then MainPanelScroll.Value = CInt(IIf(MainPanelScroll.Value + gPgUpDn < 0, MainPanelScroll.Value + gPgUpDn, 0)) If PanelFocus = 2 Then RightPanelScroll.Value = CInt(IIf(RightPanelScroll.Value + gPgUpDn < 0, RightPanelScroll.Value + gPgUpDn, 0)) + + Case "Tab" + ' TODO: Add Ctrl+Tab, etc. + If Not e.Control AndAlso Not e.Shift Then + + ElseIf e.Control AndAlso Not e.Shift Then + + ElseIf Not e.Control AndAlso e.Shift Then + + Else + + End If + Case "Set CGDivision" 'Dim xTempSwap As Integer = gSlash 'gSlash = CGDivide.Value diff --git a/iBMSC/TimeSelectionOps.vb b/iBMSC/TimeSelectionOps.vb index 11470e77b..3ebcc6480 100644 --- a/iBMSC/TimeSelectionOps.vb +++ b/iBMSC/TimeSelectionOps.vb @@ -799,12 +799,7 @@ Partial Public Class MainWindow End If Next - For xILB = 0 To 999 - Dim a As Double = MeasureLength(xILB) / 192.0R - Dim xxD = GetDenominator(a) - LBeat.Items(xILB) = Add3Zeros(xILB) & ": " & a & IIf(xxD > 10000, "", " ( " & CLng(a * xxD) & " / " & xxD & " ) ").ToString() - Next - + LBeatRefresh() UpdateMeasureBottom() End Sub @@ -815,12 +810,7 @@ Partial Public Class MainWindow Next MeasureLength(UBound(MeasureLength)) = 192.0R - For xILB = 0 To 999 - Dim a As Double = MeasureLength(xILB) / 192.0R - Dim xxD = GetDenominator(a) - LBeat.Items(xILB) = Add3Zeros(xILB) & ": " & a & IIf(xxD > 10000, "", " ( " & CLng(a * xxD) & " / " & xxD & " ) ").ToString() - Next - + LBeatRefresh() UpdateMeasureBottom() End Sub diff --git a/iBMSC/UndoRedo.vb b/iBMSC/UndoRedo.vb index 597c7011b..aec624880 100644 --- a/iBMSC/UndoRedo.vb +++ b/iBMSC/UndoRedo.vb @@ -369,7 +369,7 @@ Public Class UndoRedo Public Overrides Function toBytes() As Byte() Dim xToBytes() As Byte = {opChangeMeasure} Dim bitDouble = 8 - ReDim Preserve xToBytes(1 + bitDouble * MeasureLength.Length) + ReDim Preserve xToBytes(bitDouble * MeasureLength.Length) For xI1 As Integer = 1 To UBound(xToBytes) Step bitDouble Dim xId() As Byte = BitConverter.GetBytes(MeasureLength((xI1 - 1) \ bitDouble)) For xIb = 0 To bitDouble - 1 diff --git a/iBMSC/iBMSC.vbproj b/iBMSC/iBMSC.vbproj index 5f680736c..333aacd00 100644 --- a/iBMSC/iBMSC.vbproj +++ b/iBMSC/iBMSC.vbproj @@ -129,6 +129,9 @@ Form + + Form + Component1.vb From a0d92b504b37bc99b18d1746d000f62e4219afe8 Mon Sep 17 00:00:00 2001 From: psyk2642 <60137590+psyk2642@users.noreply.github.com> Date: Sun, 15 May 2022 15:14:07 +0800 Subject: [PATCH 169/257] Allows saving on tab closing via middle-clicking If the file you're trying to close has unsaved changes, a prompt will show up. --- README.md | 1 + iBMSC/FileTab.vb | 34 ++++++++++++++++++++++++++++++++ iBMSC/MainWindow.designer.vb | 4 ++-- iBMSC/MainWindow.vb | 2 +- iBMSC/My Project/AssemblyInfo.vb | 4 ++-- 5 files changed, 40 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 095a69237..1583464ce 100644 --- a/README.md +++ b/README.md @@ -116,6 +116,7 @@ Listed in the order added. ## BMS File Tabs * Allows multiple files to be opened simultaneously. +* Middle-clicking on the file tab will close it. * Saves a list of the opened files on exiting application and reopens them on relaunching application. ### Unavailable features diff --git a/iBMSC/FileTab.vb b/iBMSC/FileTab.vb index 69c459ba7..b5ed869b9 100644 --- a/iBMSC/FileTab.vb +++ b/iBMSC/FileTab.vb @@ -122,9 +122,19 @@ Partial Public Class MainWindow End Sub Private Sub TBTab_MouseDown(sender As Object, e As MouseEventArgs) + Dim xITemp = BMSFileIndex + Dim xExit As Boolean = False + If e.Button = MouseButtons.Middle Then Dim xIClicked = Array.IndexOf(BMSFileTSBList, CType(sender, ToolStripButton)) If xIClicked < BMSFileIndex Then + If Not BMSStructIsSaved(xIClicked) Then + TBTab_Click(BMSFileTSBList(xIClicked), New EventArgs) + ' If ClosingPopSave() Then Exit Sub + xExit = ClosingPopSave() + TBTab_Click(BMSFileTSBList(xITemp), New EventArgs) + If xExit Then Exit Sub + End If RemoveBMSFile(xIClicked) SetBMSFileIndex(BMSFileIndex - 1) @@ -132,6 +142,14 @@ Partial Public Class MainWindow TBClose_Click(sender, New EventArgs) ElseIf xIClicked <> UBound(BMSFileList) Then + If Not BMSStructIsSaved(xIClicked) Then + TBTab_Click(BMSFileTSBList(xIClicked), New EventArgs) + ' If ClosingPopSave() Then Exit Sub + ClosingPopSave() + xExit = ClosingPopSave() + TBTab_Click(BMSFileTSBList(xITemp), New EventArgs) + If xExit Then Exit Sub + End If RemoveBMSFile(xIClicked) End If @@ -320,4 +338,20 @@ Partial Public Class MainWindow Next ReDim Preserve BMSFileStructs(UBound(BMSFileStructs) - 1) End Sub + + Private Function BMSStructInitialized(Optional xI As Integer = -1) As Boolean + If xI = -1 Then xI = BMSFileIndex + + Return BMSFileStructs(xI).Notes IsNot Nothing + End Function + + Private Function BMSStructIsSaved(Optional xI As Integer = -1) As Boolean + If xI = -1 Then xI = BMSFileIndex + + If BMSStructInitialized(xI) Then + Return BMSFileStructs(xI).IsSaved + Else + Return True + End If + End Function End Class diff --git a/iBMSC/MainWindow.designer.vb b/iBMSC/MainWindow.designer.vb index 2c850039d..52bddd365 100644 --- a/iBMSC/MainWindow.designer.vb +++ b/iBMSC/MainWindow.designer.vb @@ -2130,9 +2130,9 @@ Partial Class MainWindow ' 'ToolStripContainer1.TopToolStripPanel ' + Me.ToolStripContainer1.TopToolStripPanel.Controls.Add(Me.TBTab) Me.ToolStripContainer1.TopToolStripPanel.Controls.Add(Me.mnMain) Me.ToolStripContainer1.TopToolStripPanel.Controls.Add(Me.TBMain) - Me.ToolStripContainer1.TopToolStripPanel.Controls.Add(Me.TBTab) ' 'PMain ' @@ -2324,7 +2324,7 @@ Partial Class MainWindow Me.TBTab.Dock = System.Windows.Forms.DockStyle.None Me.TBTab.Location = New System.Drawing.Point(3, 48) Me.TBTab.Name = "TBTab" - Me.TBTab.Size = New System.Drawing.Size(111, 25) + Me.TBTab.Size = New System.Drawing.Size(43, 25) Me.TBTab.TabIndex = 65 ' 'POptionsResizer diff --git a/iBMSC/MainWindow.vb b/iBMSC/MainWindow.vb index 11bdbeee8..0018fa02c 100644 --- a/iBMSC/MainWindow.vb +++ b/iBMSC/MainWindow.vb @@ -1219,7 +1219,7 @@ Public Class MainWindow Private Sub Form1_DragDrop(ByVal sender As Object, ByVal e As DragEventArgs) Handles Me.DragDrop - If ClosingPopSave() Then Exit Sub + ' If ClosingPopSave() Then Exit Sub ReDim DDFileName(-1) ' If Not e.Data.GetDataPresent(DataFormats.FileDrop) Then Return diff --git a/iBMSC/My Project/AssemblyInfo.vb b/iBMSC/My Project/AssemblyInfo.vb index def348d3e..e6bdaa520 100644 --- a/iBMSC/My Project/AssemblyInfo.vb +++ b/iBMSC/My Project/AssemblyInfo.vb @@ -30,7 +30,7 @@ Imports System.Resources ' by using the '*' as shown below: ' - - + + \ No newline at end of file From 55b0123fecfc487a0ca97861c82b6cc68a8fa75d Mon Sep 17 00:00:00 2001 From: psyk2642 <60137590+psyk2642@users.noreply.github.com> Date: Sun, 15 May 2022 17:26:23 +0800 Subject: [PATCH 170/257] Added Tab Key for File Switching Change between file tabs with Ctrl+Tab and Ctrl+Shift+Tab. Changing between selected note is available with the cap key as well since the Tab key doesn't quite work. --- iBMSC/MainWindow.designer.vb | 3 +- iBMSC/MainWindow.vb | 1 + iBMSC/PanelEvents.vb | 67 ++++++++++++++++++++++++++++++------ 3 files changed, 60 insertions(+), 11 deletions(-) diff --git a/iBMSC/MainWindow.designer.vb b/iBMSC/MainWindow.designer.vb index 52bddd365..411d23c17 100644 --- a/iBMSC/MainWindow.designer.vb +++ b/iBMSC/MainWindow.designer.vb @@ -2147,6 +2147,7 @@ Partial Class MainWindow Me.PMain.Name = "PMain" Me.PMain.Size = New System.Drawing.Size(1257, 661) Me.PMain.TabIndex = 58 + Me.PMain.TabStop = True Me.PMain.Tag = "1" ' 'PMainIn @@ -2324,7 +2325,7 @@ Partial Class MainWindow Me.TBTab.Dock = System.Windows.Forms.DockStyle.None Me.TBTab.Location = New System.Drawing.Point(3, 48) Me.TBTab.Name = "TBTab" - Me.TBTab.Size = New System.Drawing.Size(43, 25) + Me.TBTab.Size = New System.Drawing.Size(111, 25) Me.TBTab.TabIndex = 65 ' 'POptionsResizer diff --git a/iBMSC/MainWindow.vb b/iBMSC/MainWindow.vb index 0018fa02c..76b19066e 100644 --- a/iBMSC/MainWindow.vb +++ b/iBMSC/MainWindow.vb @@ -356,6 +356,7 @@ Public Class MainWindow New Keybinding("PageUp", "*HIDDEN*", {"PageUp"}, KbCategoryAllMod), New Keybinding("PageDown", "*HIDDEN*", {"PageDown"}, KbCategoryAllMod), New Keybinding("Tab", "*HIDDEN*", {"Tab"}, KbCategoryAllMod), + New Keybinding("Tab", "*HIDDEN*", {"Capital"}, KbCategoryAllMod), New Keybinding("Decrease Division", "*HIDDEN*", {"Oemcomma"}, KbCategoryAllMod), New Keybinding("Increase Division", "*HIDDEN*", {"OemPeriod"}, KbCategoryAllMod), _ ' Hidden / Experimental diff --git a/iBMSC/PanelEvents.vb b/iBMSC/PanelEvents.vb index cb94edb78..acfc0ea78 100644 --- a/iBMSC/PanelEvents.vb +++ b/iBMSC/PanelEvents.vb @@ -39,9 +39,19 @@ Partial Public Class MainWindow Dim keybindOptionName As String = "" Dim HasSelectedNotes As Boolean = False - For Each note In Notes - If note.Selected Then + Dim FirstSelectedNote As Integer + Dim LastSelectedNote As Integer + For xI = 1 To UBound(Notes) + If Notes(xI).Selected Then HasSelectedNotes = True + + FirstSelectedNote = xI + For xI2 = UBound(Notes) To xI Step -1 + If Notes(xI2).Selected Then + LastSelectedNote = xI2 + Exit For + End If + Next Exit For End If Next @@ -195,7 +205,7 @@ Partial Public Class MainWindow xVPos = Notes(xI1).VPosition + xVPosition - muVPosition Me.RedoMoveNote(Notes(xI1), Notes(xI1).ColumnIndex, xVPos, xUndo, xRedo) Notes(xI1).VPosition = xVPos - IsNoteInPanel(xVPos, Notes(xI1).Length) + ScrollPanelToNote(xVPos, Notes(xI1).Length) Next If xVPosition - muVPosition <> 0 Then AddUndo(xUndo, xBaseRedo.Next) @@ -226,7 +236,7 @@ Partial Public Class MainWindow xVPos = Notes(xI1).VPosition + xVPosition - mVPosition Me.RedoMoveNote(Notes(xI1), Notes(xI1).ColumnIndex, xVPos, xUndo, xRedo) Notes(xI1).VPosition = xVPos - IsNoteInPanel(xVPos, Notes(xI1).Length) + ScrollPanelToNote(xVPos, Notes(xI1).Length) Next If xVPosition - mVPosition <> 0 Then AddUndo(xUndo, xBaseRedo.Next) @@ -255,7 +265,7 @@ Partial Public Class MainWindow xCol = EnabledColumnIndexToColumnArrayIndex(ColumnArrayIndexToEnabledColumnIndex(Notes(xI1).ColumnIndex) - 1 - mLeft) Me.RedoMoveNote(Notes(xI1), xCol, Notes(xI1).VPosition, xUndo, xRedo) Notes(xI1).ColumnIndex = xCol - IsNoteInPanel(Notes(xI1).VPosition, Notes(xI1).Length) + ScrollPanelToNote(Notes(xI1).VPosition, Notes(xI1).Length) Next If -1 - mLeft <> 0 Then AddUndo(xUndo, xBaseRedo.Next) @@ -270,7 +280,7 @@ Partial Public Class MainWindow xCol = EnabledColumnIndexToColumnArrayIndex(ColumnArrayIndexToEnabledColumnIndex(Notes(xI1).ColumnIndex) + 1) Me.RedoMoveNote(Notes(xI1), xCol, Notes(xI1).VPosition, xUndo, xRedo) Notes(xI1).ColumnIndex = xCol - IsNoteInPanel(Notes(xI1).VPosition, Notes(xI1).Length) + ScrollPanelToNote(Notes(xI1).VPosition, Notes(xI1).Length) Next AddUndo(xUndo, xBaseRedo.Next) @@ -338,15 +348,52 @@ Partial Public Class MainWindow If PanelFocus = 2 Then RightPanelScroll.Value = CInt(IIf(RightPanelScroll.Value + gPgUpDn < 0, RightPanelScroll.Value + gPgUpDn, 0)) Case "Tab" - ' TODO: Add Ctrl+Tab, etc. If Not e.Control AndAlso Not e.Shift Then + If Not HasSelectedNotes Then + For xIN = 1 To UBound(Notes) + If Notes(xIN).VPosition >= -PanelVScroll(PanelFocus) Then + FirstSelectedNote = xIN - 1 + Exit For + End If + Next + End If - ElseIf e.Control AndAlso Not e.Shift Then + For xIN = 1 To UBound(Notes) + Notes(xIN).Selected = False + Next + FirstSelectedNote += 1 + Notes(FirstSelectedNote).Selected = True + ScrollPanelToNote(Notes(FirstSelectedNote).VPosition, Notes(FirstSelectedNote).Length) + ' Cannot prevent the tab key from focusing on other things ElseIf Not e.Control AndAlso e.Shift Then + If Not HasSelectedNotes Then + For xIN = UBound(Notes) To 1 Step -1 + If Notes(xIN).VPosition >= -PanelVScroll(PanelFocus) Then + LastSelectedNote = xIN + 1 + Exit For + End If + Next + End If + + For xIN = 1 To UBound(Notes) + Notes(xIN).Selected = False + Next + LastSelectedNote -= 1 + Notes(LastSelectedNote).Selected = True + ScrollPanelToNote(Notes(LastSelectedNote).VPosition, Notes(LastSelectedNote).Length) + ' Cannot prevent the tab key from focusing on other things + + ElseIf e.Control AndAlso Not e.Shift Then + If BMSFileIndex = UBound(BMSFileList) Then Exit Sub + Dim xIBMS As Integer = BMSFileIndex + 1 + TBTab_Click(BMSFileTSBList(xIBMS), New EventArgs) Else + If BMSFileIndex = 0 Then Exit Sub + Dim xIBMS As Integer = BMSFileIndex - 1 + TBTab_Click(BMSFileTSBList(xIBMS), New EventArgs) End If Case "Set CGDivision" @@ -513,7 +560,7 @@ Partial Public Class MainWindow RefreshPanelAll() End Sub - Private Function FindNoteTemplatePosition(ByVal Note As Note) As double() + Private Function FindNoteTemplatePosition(ByVal Note As Note) As Double() Dim VPosDiff As Double = 192 * 999 Dim VPosition As Double Dim xTargetColumn As Integer = 0 @@ -1792,7 +1839,7 @@ Partial Public Class MainWindow e1.Dispose() End Sub - Private Sub IsNoteInPanel(xVPos As Double, xLength As Double) + Private Sub ScrollPanelToNote(xVPos As Double, Optional xLength As Double = 0) If -PanelVScroll(PanelFocus) > xVPos Then ' If notes are moved lower than the window PanelVScroll(PanelFocus) = -xVPos ElseIf -PanelVScroll(PanelFocus) + spMain(PanelFocus).Height / gxHeight * 0.95 < xVPos + xLength Then ' If notes are moved higher than the window From 460fc0afd1fcd12f0c92a912ad659fec7b0390e5 Mon Sep 17 00:00:00 2001 From: psyk2642 <60137590+psyk2642@users.noreply.github.com> Date: Sun, 15 May 2022 18:43:26 +0800 Subject: [PATCH 171/257] Update FileTab.vb --- iBMSC/FileTab.vb | 35 +++++++++++++---------------------- 1 file changed, 13 insertions(+), 22 deletions(-) diff --git a/iBMSC/FileTab.vb b/iBMSC/FileTab.vb index b5ed869b9..d0217a764 100644 --- a/iBMSC/FileTab.vb +++ b/iBMSC/FileTab.vb @@ -2,10 +2,22 @@ Imports iBMSC.Editor Partial Public Class MainWindow + ' BMS File tabs + ''' + ''' Everything related to file tabs are put here. + ''' + ''' BMSFileStructs is to an array of BMSStruct with each BMSStruct referring to each BMS file in the tab list. + ''' BMSFileIndex is the current BMS file index in the tab list. + ''' BMSFileList is the list of BMS files in the tab list. + ''' BMSFileTSBList is the list of ToolStripButtons in the tab list. + ''' + ''' Currently, Untitled.bms must be at the last of the tab list. + ''' + Dim BMSFileStructs As BMSStruct() Dim BMSFileIndex As Integer = 0 - Dim BMSFileList(-1) As String ' {"G:\LR2Making\Zekk_MEJIRUSHI_V2_ogg\MEJIRUSHI_14GLITCH - Copy.bms", "G:\LR2Making\Zekk_MEJIRUSHI_V2_ogg\MEJIRUSHI_14GLITCH.bms", "G:\LR2Making\[NoE]間隙を縫う\_kanngekiAnother.bms"} + Dim BMSFileList(-1) As String Dim BMSFileTSBList As ToolStripButton() Structure BMSStruct @@ -84,16 +96,6 @@ Partial Public Class MainWindow Dim TSBS As ToolStripButton = CType(sender, ToolStripButton) If TSBS.Checked Then Exit Sub - ' If Not IsSaved Then - ' Dim xResult As MsgBoxResult = MsgBox(Strings.Messages.SaveOnExit, MsgBoxStyle.YesNoCancel Or MsgBoxStyle.Question, Me.Text) - ' If xResult = MsgBoxResult.Yes Then - ' TBSave_ButtonClick(Nothing, Nothing) - ' ElseIf xResult = MsgBoxResult.No Then - ' SetIsSaved(True) - ' Else - ' Exit Sub - ' End If - ' End If SaveBMSStruct() SetBMSFileIndex(Array.IndexOf(BMSFileTSBList, TSBS)) @@ -108,17 +110,6 @@ Partial Public Class MainWindow ReadFile(BMSFileList(BMSFileIndex)) End If End If - - ' If BMSFileList(BMSFileIndex) = FileNameInit Then - ' TBNew_Click(Nothing, Nothing) - ' Else - ' If BMSFileStructs(BMSFileIndex).Notes IsNot Nothing Then - ' SetFileName(BMSFileList(BMSFileIndex)) - ' LoadBMSStruct() - ' Else - ' ReadFile(BMSFileList(BMSFileIndex)) - ' End If - ' End If End Sub Private Sub TBTab_MouseDown(sender As Object, e As MouseEventArgs) From c68d1393b650a0bc496351454916211865462b4e Mon Sep 17 00:00:00 2001 From: psyk2642 <60137590+psyk2642@users.noreply.github.com> Date: Mon, 16 May 2022 20:39:16 +0800 Subject: [PATCH 172/257] BMSStruct + Code Update - BMSStruct now saves FileNameTemplate and NTInput - Now all BMS files get loaded at once - Switching between files is now faster - Changed switching between files to be Ctrl+Tab and Ctrl+Shift+Tab, and switching between notes to be Cap and Ctrl+Cap --- iBMSC/FileTab.vb | 54 +++++++++++++++++---- iBMSC/MainWindow.designer.vb | 92 ++++++++++++++++++++++-------------- iBMSC/MainWindow.resx | 3 ++ iBMSC/MainWindow.vb | 35 +++++++++----- iBMSC/PanelEvents.vb | 33 +++++++------ 5 files changed, 144 insertions(+), 73 deletions(-) diff --git a/iBMSC/FileTab.vb b/iBMSC/FileTab.vb index d0217a764..6ff49c559 100644 --- a/iBMSC/FileTab.vb +++ b/iBMSC/FileTab.vb @@ -34,6 +34,7 @@ Partial Public Class MainWindow Public HeaderI() As Integer ' Integer Public Expansion As String Public MeasureLength() As Double + Public FileNameTemplate As String Public ExpansionSplit() As String Public GhostMode As Integer @@ -42,16 +43,17 @@ Partial Public Class MainWindow Public sRedo() As UndoRedo.LinkedURCmd Public sI As Integer + Public ExpansionEnabled As Boolean Public IsSaved As Boolean + Public NTInput As Boolean Public WaveformLoaded As Boolean - Public ExpansionEnabled As Boolean Public Sub New(xNotes() As Note, xNotesTemplate() As Note, xWAV() As String, xBPM() As Long, xSTOP() As Long, xBMSCROLL() As Long, xCOM() As String, xLWAV() As WavSample, - xHeaderT() As String, xHeaderN() As Decimal, xHeaderI() As Integer, xExpansion As String, xMeasureLength() As Double, + xHeaderT() As String, xHeaderN() As Decimal, xHeaderI() As Integer, xExpansion As String, xMeasureLength() As Double, xFileNameTemplate As String, xExpansionSplit() As String, xGhostMode As Integer, xUndo() As UndoRedo.LinkedURCmd, xRedo() As UndoRedo.LinkedURCmd, xSI As Integer, - xIsSaved As Boolean, xWaveformLoaded As Boolean, xExpansionEnabled As Boolean) + xExpansionEnabled As Boolean, xIsSaved As Boolean, xNTInput As Boolean, xWaveformLoaded As Boolean) Notes = xNotes NotesTemplate = xNotesTemplate @@ -66,6 +68,7 @@ Partial Public Class MainWindow HeaderI = xHeaderI Expansion = xExpansion MeasureLength = xMeasureLength + FileNameTemplate = xFileNameTemplate ExpansionSplit = xExpansionSplit GhostMode = xGhostMode @@ -74,9 +77,10 @@ Partial Public Class MainWindow sRedo = xRedo sI = xSI + ExpansionEnabled = xExpansionEnabled IsSaved = xIsSaved + NTInput = xNTInput WaveformLoaded = xWaveformLoaded - ExpansionEnabled = xExpansionEnabled End Sub End Structure @@ -147,6 +151,26 @@ Partial Public Class MainWindow End If End Sub + Private Sub TBTab_MouseMove(sender As Object, e As MouseEventArgs) + Dim TSBS = CType(sender, ToolStripButton) + Dim xITab = Array.IndexOf(BMSFileTSBList, TSBS) + If Not BMSStructInitialized(xITab) Then Exit Sub + Dim BannerDir = ExcludeFileName(BMSFileList(xITab)) & "\" & BMSFileStructs(xITab).HeaderT(8) + If Not My.Computer.FileSystem.FileExists(BannerDir) Then Exit Sub + + With PBOnTabHover + .Image = New Bitmap(BannerDir) + .Size = .Image.Size + ' .Location = e.Location + ' .Parent = Me + .Visible = True + End With + End Sub + + Private Sub TBTab_MouseLeave(sender As Object, e As EventArgs) + PBOnTabHover.Visible = False + End Sub + Private Sub AddUntitledBMSFileToList() Dim ub As Integer = UBound(BMSFileList) If ub <> -1 AndAlso BMSFileList(ub) = FileNameInit Then Exit Sub @@ -203,6 +227,8 @@ Partial Public Class MainWindow End With AddHandler xTSB.Click, AddressOf TBTab_Click AddHandler xTSB.MouseDown, AddressOf TBTab_MouseDown + AddHandler xTSB.MouseMove, AddressOf TBTab_MouseMove + AddHandler xTSB.MouseLeave, AddressOf TBTab_MouseLeave Return xTSB End Function @@ -238,11 +264,18 @@ Partial Public Class MainWindow BMSFileStructs(xI) = New BMSStruct(Notes, NotesTemplate, hWAV, hBPM, hSTOP, hBMSCROLL, hCOM, wLWAV, - HeaderT, HeaderN, HeaderI, TExpansion.Text, MeasureLength, + HeaderT, HeaderN, HeaderI, TExpansion.Text, MeasureLength, FileNameTemplate, ExpansionSplit, GhostMode, sUndo, sRedo, sI, - IsSaved, WaveformLoaded, TExpansion.Enabled) + TExpansion.Enabled, IsSaved, NTInput, WaveformLoaded) + + End Sub + Private Sub SaveAllBMSStruct() + For i = 0 To UBound(BMSFileList) - 1 + ReadFile(BMSFileList(i), False) + SaveBMSStruct(i) + Next End Sub Private Sub LoadBMSStruct(Optional xI As Integer = -1) @@ -280,8 +313,8 @@ Partial Public Class MainWindow CHLnObj.SelectedIndex = .HeaderI(3) TExpansion.Text = .Expansion - MeasureLength = .MeasureLength + FileNameTemplate = .FileNameTemplate ExpansionSplit = .ExpansionSplit GhostMode = .GhostMode @@ -290,20 +323,21 @@ Partial Public Class MainWindow sRedo = .sRedo sI = .sI + TExpansion.Enabled = .ExpansionEnabled IsSaved = .IsSaved + NTInput = .NTInput WaveformLoaded = .WaveformLoaded End With If Not WaveformLoaded AndAlso ShowWaveform Then WaveformLoadId = 1 : TimerLoadWaveform.Enabled = True SetIsSaved(IsSaved) - LWAVRefresh() + LWAVRefresh() ' Wow why does refreshing this list take so damn long LBeatRefresh() + RefreshItemsByNTInput() LoadColorOverride(FileName) - SortByVPositionQuick(0, UBound(Notes)) UpdateMeasureBottom() - UpdatePairing() CalculateTotalPlayableNotes() CalculateGreatestVPosition() RefreshPanelAll() diff --git a/iBMSC/MainWindow.designer.vb b/iBMSC/MainWindow.designer.vb index 411d23c17..371351abf 100644 --- a/iBMSC/MainWindow.designer.vb +++ b/iBMSC/MainWindow.designer.vb @@ -25,16 +25,16 @@ Partial Class MainWindow Me.TBLangDef = New System.Windows.Forms.ToolStripMenuItem() Me.TBLangRefresh = New System.Windows.Forms.ToolStripMenuItem() Me.ToolStripSeparator9 = New System.Windows.Forms.ToolStripSeparator() - Me.TBLanguage = New System.Windows.Forms.ToolStripDropDownButton() Me.mnLanguage = New System.Windows.Forms.ToolStripMenuItem() + Me.TBLanguage = New System.Windows.Forms.ToolStripDropDownButton() Me.cmnTheme = New System.Windows.Forms.ContextMenuStrip(Me.components) Me.TBThemeDef = New System.Windows.Forms.ToolStripMenuItem() Me.TBThemeSave = New System.Windows.Forms.ToolStripMenuItem() Me.TBThemeRefresh = New System.Windows.Forms.ToolStripMenuItem() Me.TBThemeLoadComptability = New System.Windows.Forms.ToolStripMenuItem() Me.ToolStripSeparator6 = New System.Windows.Forms.ToolStripSeparator() - Me.TBTheme = New System.Windows.Forms.ToolStripDropDownButton() Me.mnTheme = New System.Windows.Forms.ToolStripMenuItem() + Me.TBTheme = New System.Windows.Forms.ToolStripDropDownButton() Me.Timer1 = New System.Windows.Forms.Timer(Me.components) Me.Menu1 = New System.Windows.Forms.ContextMenuStrip(Me.components) Me.MInsert = New System.Windows.Forms.ToolStripMenuItem() @@ -136,7 +136,6 @@ Partial Class MainWindow Me.POBSRandom = New System.Windows.Forms.ToolStripMenuItem() Me.POBHRandom = New System.Windows.Forms.ToolStripMenuItem() Me.POBSort = New System.Windows.Forms.ToolStripMenuItem() - Me.POConvert = New System.Windows.Forms.ToolStripDropDownButton() Me.mnPreview = New System.Windows.Forms.ToolStripMenuItem() Me.mnPlayB = New System.Windows.Forms.ToolStripMenuItem() Me.mnPlay = New System.Windows.Forms.ToolStripMenuItem() @@ -145,6 +144,7 @@ Partial Class MainWindow Me.mnTechnicalErrorCheck = New System.Windows.Forms.ToolStripMenuItem() Me.mnTOTAL = New System.Windows.Forms.ToolStripMenuItem() Me.ToolStripSeparator13 = New System.Windows.Forms.ToolStripSeparator() + Me.POConvert = New System.Windows.Forms.ToolStripDropDownButton() Me.TBMain = New System.Windows.Forms.ToolStrip() Me.TBNew = New System.Windows.Forms.ToolStripButton() Me.TBOpen = New System.Windows.Forms.ToolStripSplitButton() @@ -227,6 +227,7 @@ Partial Class MainWindow Me.ToolStripContainer1 = New System.Windows.Forms.ToolStripContainer() Me.PMain = New System.Windows.Forms.Panel() Me.PMainIn = New System.Windows.Forms.Panel() + Me.PBOnTabHover = New System.Windows.Forms.PictureBox() Me.MainPanelScroll = New System.Windows.Forms.VScrollBar() Me.HS = New System.Windows.Forms.HScrollBar() Me.SpR = New System.Windows.Forms.Button() @@ -394,6 +395,7 @@ Partial Class MainWindow Me.TimerRefreshPanel = New System.Windows.Forms.Timer(Me.components) Me.TimerExternalExpansion = New System.Windows.Forms.Timer(Me.components) Me.TimerLoadWaveform = New System.Windows.Forms.Timer(Me.components) + Me.TimerLWAVRefresh = New System.Windows.Forms.Timer(Me.components) Me.cmnLanguage.SuspendLayout() Me.cmnTheme.SuspendLayout() Me.Menu1.SuspendLayout() @@ -407,6 +409,8 @@ Partial Class MainWindow Me.ToolStripContainer1.TopToolStripPanel.SuspendLayout() Me.ToolStripContainer1.SuspendLayout() Me.PMain.SuspendLayout() + Me.PMainIn.SuspendLayout() + CType(Me.PBOnTabHover, System.ComponentModel.ISupportInitialize).BeginInit() Me.PMainR.SuspendLayout() Me.PMainL.SuspendLayout() Me.POptions.SuspendLayout() @@ -478,7 +482,7 @@ Partial Class MainWindow ' Me.cmnLanguage.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.TBLangDef, Me.TBLangRefresh, Me.ToolStripSeparator9}) Me.cmnLanguage.Name = "cmnLanguage" - Me.cmnLanguage.OwnerItem = Me.mnLanguage + Me.cmnLanguage.OwnerItem = Me.TBLanguage Me.cmnLanguage.Size = New System.Drawing.Size(121, 54) ' 'TBLangDef @@ -499,6 +503,14 @@ Partial Class MainWindow Me.ToolStripSeparator9.Name = "ToolStripSeparator9" Me.ToolStripSeparator9.Size = New System.Drawing.Size(117, 6) ' + 'mnLanguage + ' + Me.mnLanguage.DropDown = Me.cmnLanguage + Me.mnLanguage.Image = Global.iBMSC.My.Resources.Resources.x16Language + Me.mnLanguage.Name = "mnLanguage" + Me.mnLanguage.Size = New System.Drawing.Size(253, 22) + Me.mnLanguage.Text = "&Language" + ' 'TBLanguage ' Me.TBLanguage.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image @@ -509,19 +521,11 @@ Partial Class MainWindow Me.TBLanguage.Size = New System.Drawing.Size(29, 22) Me.TBLanguage.Text = "Language" ' - 'mnLanguage - ' - Me.mnLanguage.DropDown = Me.cmnLanguage - Me.mnLanguage.Image = Global.iBMSC.My.Resources.Resources.x16Language - Me.mnLanguage.Name = "mnLanguage" - Me.mnLanguage.Size = New System.Drawing.Size(253, 22) - Me.mnLanguage.Text = "&Language" - ' 'cmnTheme ' Me.cmnTheme.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.TBThemeDef, Me.TBThemeSave, Me.TBThemeRefresh, Me.TBThemeLoadComptability, Me.ToolStripSeparator6}) Me.cmnTheme.Name = "cmnLanguage" - Me.cmnTheme.OwnerItem = Me.mnTheme + Me.cmnTheme.OwnerItem = Me.TBTheme Me.cmnTheme.Size = New System.Drawing.Size(246, 98) ' 'TBThemeDef @@ -555,6 +559,14 @@ Partial Class MainWindow Me.ToolStripSeparator6.Name = "ToolStripSeparator6" Me.ToolStripSeparator6.Size = New System.Drawing.Size(242, 6) ' + 'mnTheme + ' + Me.mnTheme.DropDown = Me.cmnTheme + Me.mnTheme.Image = Global.iBMSC.My.Resources.Resources.x16Theme + Me.mnTheme.Name = "mnTheme" + Me.mnTheme.Size = New System.Drawing.Size(253, 22) + Me.mnTheme.Text = "&Theme" + ' 'TBTheme ' Me.TBTheme.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image @@ -565,14 +577,6 @@ Partial Class MainWindow Me.TBTheme.Size = New System.Drawing.Size(29, 22) Me.TBTheme.Text = "Theme" ' - 'mnTheme - ' - Me.mnTheme.DropDown = Me.cmnTheme - Me.mnTheme.Image = Global.iBMSC.My.Resources.Resources.x16Theme - Me.mnTheme.Name = "mnTheme" - Me.mnTheme.Size = New System.Drawing.Size(253, 22) - Me.mnTheme.Text = "&Theme" - ' 'Timer1 ' Me.Timer1.Interval = 15 @@ -1204,7 +1208,7 @@ Partial Class MainWindow ' Me.cmnConversion.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.POBLong, Me.POBShort, Me.POBLongShort, Me.POBLongObjNT, Me.POBLongNTObj, Me.ToolStripSeparator25, Me.POBAutoLongVPosition, Me.POBAutoLongColumn, Me.ToolStripSeparator10, Me.POBHidden, Me.POBVisible, Me.POBHiddenVisible, Me.ToolStripSeparator11, Me.POBModify, Me.POBMirror, Me.POBFlip, Me.POBRandom, Me.POBRRandom, Me.POBSRandom, Me.POBHRandom, Me.POBSort}) Me.cmnConversion.Name = "cmnLanguage" - Me.cmnConversion.OwnerItem = Me.mnConversion + Me.cmnConversion.OwnerItem = Me.POConvert Me.cmnConversion.Size = New System.Drawing.Size(237, 418) ' 'POBLong @@ -1351,16 +1355,6 @@ Partial Class MainWindow Me.POBSort.Size = New System.Drawing.Size(236, 22) Me.POBSort.Text = "S&ort" ' - 'POConvert - ' - Me.POConvert.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image - Me.POConvert.DropDown = Me.cmnConversion - Me.POConvert.Image = Global.iBMSC.My.Resources.Resources.ConvertNotes - Me.POConvert.ImageTransparentColor = System.Drawing.Color.Magenta - Me.POConvert.Name = "POConvert" - Me.POConvert.Size = New System.Drawing.Size(29, 22) - Me.POConvert.Text = "Convert Notes" - ' 'mnPreview ' Me.mnPreview.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.mnPlayB, Me.mnPlay, Me.mnStop}) @@ -1418,6 +1412,16 @@ Partial Class MainWindow Me.ToolStripSeparator13.Name = "ToolStripSeparator13" Me.ToolStripSeparator13.Size = New System.Drawing.Size(247, 6) ' + 'POConvert + ' + Me.POConvert.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image + Me.POConvert.DropDown = Me.cmnConversion + Me.POConvert.Image = Global.iBMSC.My.Resources.Resources.ConvertNotes + Me.POConvert.ImageTransparentColor = System.Drawing.Color.Magenta + Me.POConvert.Name = "POConvert" + Me.POConvert.Size = New System.Drawing.Size(29, 22) + Me.POConvert.Text = "Convert Notes" + ' 'TBMain ' Me.TBMain.AccessibleRole = System.Windows.Forms.AccessibleRole.ToolBar @@ -2130,9 +2134,9 @@ Partial Class MainWindow ' 'ToolStripContainer1.TopToolStripPanel ' - Me.ToolStripContainer1.TopToolStripPanel.Controls.Add(Me.TBTab) Me.ToolStripContainer1.TopToolStripPanel.Controls.Add(Me.mnMain) Me.ToolStripContainer1.TopToolStripPanel.Controls.Add(Me.TBMain) + Me.ToolStripContainer1.TopToolStripPanel.Controls.Add(Me.TBTab) ' 'PMain ' @@ -2153,6 +2157,7 @@ Partial Class MainWindow 'PMainIn ' Me.PMainIn.BackColor = System.Drawing.Color.Black + Me.PMainIn.Controls.Add(Me.PBOnTabHover) Me.PMainIn.Dock = System.Windows.Forms.DockStyle.Fill Me.PMainIn.Font = New System.Drawing.Font("Verdana", 9.0!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) Me.PMainIn.ForeColor = System.Drawing.Color.White @@ -2163,6 +2168,15 @@ Partial Class MainWindow Me.PMainIn.TabStop = True Me.PMainIn.Tag = "1" ' + 'PBOnTabHover + ' + Me.PBOnTabHover.Location = New System.Drawing.Point(7, 3) + Me.PBOnTabHover.Name = "PBOnTabHover" + Me.PBOnTabHover.Size = New System.Drawing.Size(330, 102) + Me.PBOnTabHover.TabIndex = 0 + Me.PBOnTabHover.TabStop = False + Me.PBOnTabHover.Visible = False + ' 'MainPanelScroll ' Me.MainPanelScroll.AccessibleRole = System.Windows.Forms.AccessibleRole.ScrollBar @@ -2323,9 +2337,9 @@ Partial Class MainWindow ' Me.TBTab.BackColor = System.Drawing.SystemColors.Control Me.TBTab.Dock = System.Windows.Forms.DockStyle.None - Me.TBTab.Location = New System.Drawing.Point(3, 48) + Me.TBTab.Location = New System.Drawing.Point(7, 48) Me.TBTab.Name = "TBTab" - Me.TBTab.Size = New System.Drawing.Size(111, 25) + Me.TBTab.Size = New System.Drawing.Size(43, 25) Me.TBTab.TabIndex = 65 ' 'POptionsResizer @@ -4378,6 +4392,10 @@ Partial Class MainWindow ' Me.TimerLoadWaveform.Interval = 1 ' + 'TimerLWAVRefresh + ' + Me.TimerLWAVRefresh.Interval = 15 + ' 'MainWindow ' Me.AllowDrop = True @@ -4413,6 +4431,8 @@ Partial Class MainWindow Me.ToolStripContainer1.ResumeLayout(False) Me.ToolStripContainer1.PerformLayout() Me.PMain.ResumeLayout(False) + Me.PMainIn.ResumeLayout(False) + CType(Me.PBOnTabHover, System.ComponentModel.ISupportInitialize).EndInit() Me.PMainR.ResumeLayout(False) Me.PMainL.ResumeLayout(False) Me.POptions.ResumeLayout(False) @@ -4881,4 +4901,6 @@ Partial Class MainWindow Friend WithEvents TimerLoadWaveform As Timer Friend WithEvents TBTab As ToolStrip Friend WithEvents mnClose As ToolStripMenuItem + Friend WithEvents PBOnTabHover As PictureBox + Friend WithEvents TimerLWAVRefresh As Timer End Class diff --git a/iBMSC/MainWindow.resx b/iBMSC/MainWindow.resx index 66e934432..935acb7ae 100644 --- a/iBMSC/MainWindow.resx +++ b/iBMSC/MainWindow.resx @@ -214,6 +214,9 @@ 17, 56 + + 715, 56 + 89 diff --git a/iBMSC/MainWindow.vb b/iBMSC/MainWindow.vb index 76b19066e..db51701d3 100644 --- a/iBMSC/MainWindow.vb +++ b/iBMSC/MainWindow.vb @@ -66,8 +66,6 @@ Public Class MainWindow Dim NTInput As Boolean = True Dim ShowFileName As Boolean = False Dim ShowWaveform As Boolean = False - Dim WaveformLoaded As Boolean = False - Dim WaveformLoadId As Integer = 1 Dim BeepWhileSaved As Boolean = True Dim BPMx1296 As Boolean = False @@ -106,7 +104,6 @@ Public Class MainWindow Dim SupportedFileExtension() As String = {".bms", ".bme", ".bml", ".pms", ".txt", ".sm", ".ibmsc"} Dim SupportedAudioExtension() As String = {} - 'Variables for theme 'Dim SaveTheme As Boolean = True @@ -173,7 +170,10 @@ Public Class MainWindow Dim gXKeyCol() As Integer Dim gLNGap As Double = 16 Dim wLWAV(1295) As WavSample + Dim WaveformLoaded As Boolean = False + Dim WaveformLoadId As Integer = 1 Dim NoteWVPosEnd() As Double + Dim LWAVRefreshId As Integer = 1 '----AutoSave Options Dim PreviousAutoSavedFileName As String = "" @@ -355,8 +355,8 @@ Public Class MainWindow New Keybinding("End", "*HIDDEN*", {"End"}, KbCategoryAllMod), New Keybinding("PageUp", "*HIDDEN*", {"PageUp"}, KbCategoryAllMod), New Keybinding("PageDown", "*HIDDEN*", {"PageDown"}, KbCategoryAllMod), - New Keybinding("Tab", "*HIDDEN*", {"Tab"}, KbCategoryAllMod), - New Keybinding("Tab", "*HIDDEN*", {"Capital"}, KbCategoryAllMod), + New Keybinding("TabBetweenFiles", "*HIDDEN*", {"Tab"}, KbCategoryAllMod), + New Keybinding("TabBetweenNotes", "*HIDDEN*", {"Capital"}, KbCategoryAllMod), New Keybinding("Decrease Division", "*HIDDEN*", {"Oemcomma"}, KbCategoryAllMod), New Keybinding("Increase Division", "*HIDDEN*", {"OemPeriod"}, KbCategoryAllMod), _ ' Hidden / Experimental @@ -1280,13 +1280,13 @@ Public Class MainWindow POStatusRefresh() End Sub - Friend Sub ReadFile(ByVal xPath As String) + Friend Sub ReadFile(ByVal xPath As String, Optional xAddRecent As Boolean = True) Select Case LCase(Path.GetExtension(xPath)) Case ".bms", ".bme", ".bml", ".pms", ".txt" SetFileName(xPath) OpenBMS(My.Computer.FileSystem.ReadAllText(xPath, TextEncoding)) ClearUndo() - NewRecent(xPath) + If xAddRecent Then NewRecent(xPath) SetIsSaved(True) Case ".sm" @@ -1300,14 +1300,14 @@ Public Class MainWindow SetFileName("Imported_" & GetFileName(xPath)) OpeniBMSC(xPath) InitPath = ExcludeFileName(xPath) - NewRecent(xPath) + If xAddRecent Then NewRecent(xPath) SetIsSaved(False) Case Else SetFileName(xPath) OpenBMS(My.Computer.FileSystem.ReadAllText(xPath, TextEncoding)) ClearUndo() - NewRecent(xPath) + If xAddRecent Then NewRecent(xPath) SetIsSaved(True) End Select @@ -1483,6 +1483,8 @@ Public Class MainWindow AddBMSFiles(xStrFiles) End If + SaveAllBMSStruct() + If BMSFileIndex <> UBound(BMSFileList) Then ReadFile(BMSFileList(BMSFileIndex)) End Sub @@ -2411,10 +2413,17 @@ Public Class MainWindow End Sub Private Sub LWAVRefresh() - For xI1 = 1 To 1295 - Dim xIL = xI1 - 1 - LWAV.Items(xIL) = C10to36(xI1) & ": " & hWAV(xI1) - Next + LWAVRefreshId = 1 + TimerLWAVRefresh.Enabled = True + End Sub + + Private Sub TimerLWAVRefresh_Tick(sender As Object, e As EventArgs) Handles TimerLWAVRefresh.Tick + Dim xIL = LWAVRefreshId - 1 + LWAV.Items(xIL) = C10to36(LWAVRefreshId) & ": " & hWAV(LWAVRefreshId) + Console.WriteLine(LWAVRefreshId) + + If LWAVRefreshId = 1295 Then LWAVRefreshId = 1 : TimerLWAVRefresh.Enabled = False : Exit Sub + LWAVRefreshId += 1 End Sub Private Sub LBeatRefresh() diff --git a/iBMSC/PanelEvents.vb b/iBMSC/PanelEvents.vb index acfc0ea78..58d7c5dee 100644 --- a/iBMSC/PanelEvents.vb +++ b/iBMSC/PanelEvents.vb @@ -347,8 +347,23 @@ Partial Public Class MainWindow If PanelFocus = 1 Then MainPanelScroll.Value = CInt(IIf(MainPanelScroll.Value + gPgUpDn < 0, MainPanelScroll.Value + gPgUpDn, 0)) If PanelFocus = 2 Then RightPanelScroll.Value = CInt(IIf(RightPanelScroll.Value + gPgUpDn < 0, RightPanelScroll.Value + gPgUpDn, 0)) - Case "Tab" - If Not e.Control AndAlso Not e.Shift Then + Case "TabBetweenFiles" + If e.Control AndAlso Not e.Shift Then + If BMSFileIndex = UBound(BMSFileList) Then Exit Sub + + Dim xIBMS As Integer = BMSFileIndex + 1 + TBTab_Click(BMSFileTSBList(xIBMS), New EventArgs) + + Else + If BMSFileIndex = 0 Then Exit Sub + + Dim xIBMS As Integer = BMSFileIndex - 1 + TBTab_Click(BMSFileTSBList(xIBMS), New EventArgs) + + End If + Case "TabBetweenNotes" + ' Cannot prevent the tab key from focusing on other things so I opted to use the capital key + If Not e.Shift Then If Not HasSelectedNotes Then For xIN = 1 To UBound(Notes) If Notes(xIN).VPosition >= -PanelVScroll(PanelFocus) Then @@ -364,9 +379,8 @@ Partial Public Class MainWindow FirstSelectedNote += 1 Notes(FirstSelectedNote).Selected = True ScrollPanelToNote(Notes(FirstSelectedNote).VPosition, Notes(FirstSelectedNote).Length) - ' Cannot prevent the tab key from focusing on other things - ElseIf Not e.Control AndAlso e.Shift Then + Else If Not HasSelectedNotes Then For xIN = UBound(Notes) To 1 Step -1 If Notes(xIN).VPosition >= -PanelVScroll(PanelFocus) Then @@ -382,18 +396,7 @@ Partial Public Class MainWindow LastSelectedNote -= 1 Notes(LastSelectedNote).Selected = True ScrollPanelToNote(Notes(LastSelectedNote).VPosition, Notes(LastSelectedNote).Length) - ' Cannot prevent the tab key from focusing on other things - - ElseIf e.Control AndAlso Not e.Shift Then - If BMSFileIndex = UBound(BMSFileList) Then Exit Sub - Dim xIBMS As Integer = BMSFileIndex + 1 - TBTab_Click(BMSFileTSBList(xIBMS), New EventArgs) - Else - If BMSFileIndex = 0 Then Exit Sub - - Dim xIBMS As Integer = BMSFileIndex - 1 - TBTab_Click(BMSFileTSBList(xIBMS), New EventArgs) End If Case "Set CGDivision" From 6ec63f7e4440afbbbe5e477aa6a0cef1bc0b8bac Mon Sep 17 00:00:00 2001 From: psyk2642 <60137590+psyk2642@users.noreply.github.com> Date: Mon, 16 May 2022 20:44:31 +0800 Subject: [PATCH 173/257] Update MainWindow.vb --- iBMSC/MainWindow.vb | 1 + 1 file changed, 1 insertion(+) diff --git a/iBMSC/MainWindow.vb b/iBMSC/MainWindow.vb index db51701d3..b2d491614 100644 --- a/iBMSC/MainWindow.vb +++ b/iBMSC/MainWindow.vb @@ -802,6 +802,7 @@ Public Class MainWindow ElseIf xStrLine(0) = "BMSE ClipBoard Object Data Format" Then 'paste For xI1 = 1 To UBound(xStrLine) + If xStrLine(xI1).Trim = "" Then Continue For ' zdr: holy crap this is obtuse Dim posStr = Mid(xStrLine(xI1), 5, 7) Dim vPos = CDbl(posStr) + MeasureBottom(MeasureAtDisplacement(-xVS) + 1) From 167900dbf8afd2849c1bdcc0a969665f078b68be Mon Sep 17 00:00:00 2001 From: psyk2642 <60137590+psyk2642@users.noreply.github.com> Date: Mon, 16 May 2022 20:46:39 +0800 Subject: [PATCH 174/257] Update EditorPersistent.vb Changed Colors.xml to _Colors.xml for the Song option in OpVisualOverride --- iBMSC/EditorPersistent.vb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/iBMSC/EditorPersistent.vb b/iBMSC/EditorPersistent.vb index f09c0f230..030754529 100644 --- a/iBMSC/EditorPersistent.vb +++ b/iBMSC/EditorPersistent.vb @@ -286,7 +286,7 @@ Partial Public Class MainWindow If Not System.IO.Directory.Exists("Colors") Then My.Computer.FileSystem.CreateDirectory("Colors") Return "Colors\" + GetFileName(Path) + ".xml" Case 2 - Return ExcludeFileName(Path) & "\Colors.xml" + Return ExcludeFileName(Path) & "\_Colors.xml" Case Else Return "" End Select From f15a612c264dccf1282de0746577b9ea8900d10e Mon Sep 17 00:00:00 2001 From: psyk2642 <60137590+psyk2642@users.noreply.github.com> Date: Mon, 16 May 2022 20:55:08 +0800 Subject: [PATCH 175/257] Added Option to Enable Preloading all BMS Files --- iBMSC/EditorPersistent.vb | 2 + iBMSC/MainWindow.vb | 14 ++- iBMSC/Option Windows/OpGeneral.Designer.vb | 134 ++++++++++++--------- iBMSC/Option Windows/OpGeneral.vb | 3 +- 4 files changed, 89 insertions(+), 64 deletions(-) diff --git a/iBMSC/EditorPersistent.vb b/iBMSC/EditorPersistent.vb index 030754529..b5a83ea87 100644 --- a/iBMSC/EditorPersistent.vb +++ b/iBMSC/EditorPersistent.vb @@ -123,6 +123,7 @@ Partial Public Class MainWindow .WriteAttributeString("TextEncoding", EncodingToString(TextEncoding)) .WriteAttributeString("BMSGridLimit", BMSGridLimit.ToString()) .WriteAttributeString("BeepWhileSaved", BeepWhileSaved.ToString()) + .WriteAttributeString("PreloadBMSStruct", PreloadBMSStruct.ToString()) .WriteAttributeString("BPMx1296", BPMx1296.ToString()) .WriteAttributeString("STOPx1296", STOPx1296.ToString()) .WriteAttributeString("AudioLine", AudioLine.ToString()) @@ -520,6 +521,7 @@ Partial Public Class MainWindow XMLLoadAttribute(.GetAttribute("BMSGridLimit"), BMSGridLimit) XMLLoadAttribute(.GetAttribute("BeepWhileSaved"), BeepWhileSaved) + XMLLoadAttribute(.GetAttribute("PreloadBMSStruct"), PreloadBMSStruct) XMLLoadAttribute(.GetAttribute("BPMx1296"), BPMx1296) XMLLoadAttribute(.GetAttribute("STOPx1296"), STOPx1296) XMLLoadAttribute(.GetAttribute("AudioLine"), AudioLine) diff --git a/iBMSC/MainWindow.vb b/iBMSC/MainWindow.vb index b2d491614..a443e4699 100644 --- a/iBMSC/MainWindow.vb +++ b/iBMSC/MainWindow.vb @@ -68,6 +68,7 @@ Public Class MainWindow Dim ShowWaveform As Boolean = False Dim BeepWhileSaved As Boolean = True + Dim PreloadBMSStruct As Boolean = False Dim BPMx1296 As Boolean = False Dim STOPx1296 As Boolean = False Dim AudioLine As Boolean = True @@ -1484,7 +1485,7 @@ Public Class MainWindow AddBMSFiles(xStrFiles) End If - SaveAllBMSStruct() + If PreloadBMSStruct Then SaveAllBMSStruct() If BMSFileIndex <> UBound(BMSFileList) Then ReadFile(BMSFileList(BMSFileIndex)) End Sub @@ -2415,6 +2416,7 @@ Public Class MainWindow Private Sub LWAVRefresh() LWAVRefreshId = 1 + LWAV.Enabled = False TimerLWAVRefresh.Enabled = True End Sub @@ -2423,7 +2425,12 @@ Public Class MainWindow LWAV.Items(xIL) = C10to36(LWAVRefreshId) & ": " & hWAV(LWAVRefreshId) Console.WriteLine(LWAVRefreshId) - If LWAVRefreshId = 1295 Then LWAVRefreshId = 1 : TimerLWAVRefresh.Enabled = False : Exit Sub + If LWAVRefreshId = 1295 Then + LWAVRefreshId = 1 + LWAV.Enabled = True + TimerLWAVRefresh.Enabled = False + Exit Sub + End If LWAVRefreshId += 1 End Sub @@ -4058,7 +4065,7 @@ Public Class MainWindow End Select Dim xDiag As New OpGeneral(gWheel, gPgUpDn, MiddleButtonMoveMethod, xTE, CInt(192.0R / BMSGridLimit), ErrorJackBPM, ErrorJackTH, gLNGap, TempFileName, - AutoSaveInterval, BeepWhileSaved, BPMx1296, STOPx1296, AudioLine, TemplateSnapToVPosition, PastePatternToVPosition, + AutoSaveInterval, BeepWhileSaved, PreloadBMSStruct, BPMx1296, STOPx1296, AudioLine, TemplateSnapToVPosition, PastePatternToVPosition, AutoFocusMouseEnter, FirstClickDisabled, ClickStopPreview) If xDiag.ShowDialog() = Windows.Forms.DialogResult.OK Then @@ -4076,6 +4083,7 @@ Public Class MainWindow gLNGap = .NLNGap.Value TempFileName = .TTemp.Text BeepWhileSaved = .cBeep.Checked + PreloadBMSStruct = .cPreloadBMSStruct.Checked BPMx1296 = .cBpm1296.Checked STOPx1296 = .cStop1296.Checked AudioLine = .cAudioLine.Checked diff --git a/iBMSC/Option Windows/OpGeneral.Designer.vb b/iBMSC/Option Windows/OpGeneral.Designer.vb index 2f6d63dd8..cb95a28c8 100644 --- a/iBMSC/Option Windows/OpGeneral.Designer.vb +++ b/iBMSC/Option Windows/OpGeneral.Designer.vb @@ -64,12 +64,13 @@ Partial Class OpGeneral Me.NLNGap = New System.Windows.Forms.NumericUpDown() Me.Label10 = New System.Windows.Forms.Label() Me.TableLayoutPanel3 = New System.Windows.Forms.TableLayoutPanel() + Me.Label11 = New System.Windows.Forms.Label() Me.TableLayoutPanel4 = New System.Windows.Forms.TableLayoutPanel() Me.LabelTHLN = New System.Windows.Forms.Label() + Me.TTemp = New System.Windows.Forms.TextBox() Me.TableLayoutPanel5 = New System.Windows.Forms.TableLayoutPanel() Me.cPastePatternToVPosition = New System.Windows.Forms.CheckBox() - Me.Label11 = New System.Windows.Forms.Label() - Me.TTemp = New System.Windows.Forms.TextBox() + Me.cPreloadBMSStruct = New System.Windows.Forms.CheckBox() Me.TableLayoutPanel1.SuspendLayout() CType(Me.PictureBox1, System.ComponentModel.ISupportInitialize).BeginInit() CType(Me.NAutoSave, System.ComponentModel.ISupportInitialize).BeginInit() @@ -92,7 +93,7 @@ Partial Class OpGeneral Me.TableLayoutPanel1.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50.0!)) Me.TableLayoutPanel1.Controls.Add(Me.OK_Button, 0, 0) Me.TableLayoutPanel1.Controls.Add(Me.Cancel_Button, 1, 0) - Me.TableLayoutPanel1.Location = New System.Drawing.Point(229, 655) + Me.TableLayoutPanel1.Location = New System.Drawing.Point(229, 669) Me.TableLayoutPanel1.Name = "TableLayoutPanel1" Me.TableLayoutPanel1.RowCount = 1 Me.TableLayoutPanel1.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50.0!)) @@ -125,7 +126,7 @@ Partial Class OpGeneral Me.CWheel.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList Me.CWheel.FormattingEnabled = True Me.CWheel.Items.AddRange(New Object() {"1", "1 / 2", "1 / 3", "1 / 4"}) - Me.CWheel.Location = New System.Drawing.Point(154, 461) + Me.CWheel.Location = New System.Drawing.Point(154, 475) Me.CWheel.Name = "CWheel" Me.CWheel.Size = New System.Drawing.Size(237, 23) Me.CWheel.TabIndex = 101 @@ -144,7 +145,7 @@ Partial Class OpGeneral ' Me.Label1.Anchor = CType(((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left) _ Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) - Me.Label1.Location = New System.Drawing.Point(12, 463) + Me.Label1.Location = New System.Drawing.Point(12, 477) Me.Label1.Name = "Label1" Me.Label1.Size = New System.Drawing.Size(136, 17) Me.Label1.TabIndex = 100 @@ -185,9 +186,9 @@ Partial Class OpGeneral Me.cBeep.CheckState = System.Windows.Forms.CheckState.Checked Me.TableLayoutPanel5.SetColumnSpan(Me.cBeep, 3) Me.cBeep.Dock = System.Windows.Forms.DockStyle.Left - Me.cBeep.Location = New System.Drawing.Point(3, 29) + Me.cBeep.Location = New System.Drawing.Point(3, 28) Me.cBeep.Name = "cBeep" - Me.cBeep.Size = New System.Drawing.Size(116, 20) + Me.cBeep.Size = New System.Drawing.Size(116, 19) Me.cBeep.TabIndex = 12 Me.cBeep.Text = "Beep while saved" Me.cBeep.UseVisualStyleBackColor = True @@ -197,7 +198,7 @@ Partial Class OpGeneral Me.PictureBox1.Anchor = CType(((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left) _ Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) Me.PictureBox1.BackColor = System.Drawing.Color.FromArgb(CType(CType(64, Byte), Integer), CType(CType(64, Byte), Integer), CType(CType(64, Byte), Integer)) - Me.PictureBox1.Location = New System.Drawing.Point(20, 445) + Me.PictureBox1.Location = New System.Drawing.Point(20, 459) Me.PictureBox1.Name = "PictureBox1" Me.PictureBox1.Size = New System.Drawing.Size(375, 1) Me.PictureBox1.TabIndex = 47 @@ -208,9 +209,9 @@ Partial Class OpGeneral Me.cBpm1296.AutoSize = True Me.TableLayoutPanel5.SetColumnSpan(Me.cBpm1296, 3) Me.cBpm1296.Dock = System.Windows.Forms.DockStyle.Left - Me.cBpm1296.Location = New System.Drawing.Point(3, 55) + Me.cBpm1296.Location = New System.Drawing.Point(3, 78) Me.cBpm1296.Name = "cBpm1296" - Me.cBpm1296.Size = New System.Drawing.Size(254, 20) + Me.cBpm1296.Size = New System.Drawing.Size(254, 19) Me.cBpm1296.TabIndex = 13 Me.cBpm1296.Text = "Extend number of multi-byte BPMs to 1296" Me.cBpm1296.UseVisualStyleBackColor = True @@ -220,9 +221,9 @@ Partial Class OpGeneral Me.cStop1296.AutoSize = True Me.TableLayoutPanel5.SetColumnSpan(Me.cStop1296, 3) Me.cStop1296.Dock = System.Windows.Forms.DockStyle.Left - Me.cStop1296.Location = New System.Drawing.Point(3, 81) + Me.cStop1296.Location = New System.Drawing.Point(3, 103) Me.cStop1296.Name = "cStop1296" - Me.cStop1296.Size = New System.Drawing.Size(197, 20) + Me.cStop1296.Size = New System.Drawing.Size(197, 19) Me.cStop1296.TabIndex = 14 Me.cStop1296.Text = "Extend number of STOPs to 1296" Me.cStop1296.UseVisualStyleBackColor = True @@ -232,7 +233,7 @@ Partial Class OpGeneral Me.cMEnterFocus.Anchor = CType(((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left) _ Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) Me.cMEnterFocus.AutoSize = True - Me.cMEnterFocus.Location = New System.Drawing.Point(34, 571) + Me.cMEnterFocus.Location = New System.Drawing.Point(34, 585) Me.cMEnterFocus.Name = "cMEnterFocus" Me.cMEnterFocus.Size = New System.Drawing.Size(322, 19) Me.cMEnterFocus.TabIndex = 106 @@ -244,7 +245,7 @@ Partial Class OpGeneral Me.cMClickFocus.Anchor = CType(((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left) _ Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) Me.cMClickFocus.AutoSize = True - Me.cMClickFocus.Location = New System.Drawing.Point(34, 596) + Me.cMClickFocus.Location = New System.Drawing.Point(34, 610) Me.cMClickFocus.Name = "cMClickFocus" Me.cMClickFocus.Size = New System.Drawing.Size(293, 19) Me.cMClickFocus.TabIndex = 107 @@ -273,7 +274,7 @@ Partial Class OpGeneral ' Me.Label5.Anchor = CType(((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left) _ Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) - Me.Label5.Location = New System.Drawing.Point(12, 492) + Me.Label5.Location = New System.Drawing.Point(12, 506) Me.Label5.Name = "Label5" Me.Label5.Size = New System.Drawing.Size(136, 17) Me.Label5.TabIndex = 102 @@ -287,7 +288,7 @@ Partial Class OpGeneral Me.CPgUpDn.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList Me.CPgUpDn.FormattingEnabled = True Me.CPgUpDn.Items.AddRange(New Object() {"8", "6", "4", "3", "2", "1", "1 / 2"}) - Me.CPgUpDn.Location = New System.Drawing.Point(154, 490) + Me.CPgUpDn.Location = New System.Drawing.Point(154, 504) Me.CPgUpDn.Name = "CPgUpDn" Me.CPgUpDn.Size = New System.Drawing.Size(237, 23) Me.CPgUpDn.TabIndex = 103 @@ -310,7 +311,7 @@ Partial Class OpGeneral Me.Label7.Dock = System.Windows.Forms.DockStyle.Left Me.Label7.Location = New System.Drawing.Point(285, 0) Me.Label7.Name = "Label7" - Me.Label7.Size = New System.Drawing.Size(73, 26) + Me.Label7.Size = New System.Drawing.Size(73, 25) Me.Label7.TabIndex = 59 Me.Label7.Text = "minutes" Me.Label7.TextAlign = System.Drawing.ContentAlignment.MiddleLeft @@ -323,7 +324,7 @@ Partial Class OpGeneral Me.cAutoSave.Dock = System.Windows.Forms.DockStyle.Left Me.cAutoSave.Location = New System.Drawing.Point(3, 3) Me.cAutoSave.Name = "cAutoSave" - Me.cAutoSave.Size = New System.Drawing.Size(76, 20) + Me.cAutoSave.Size = New System.Drawing.Size(76, 19) Me.cAutoSave.TabIndex = 10 Me.cAutoSave.Text = "AutoSave" Me.cAutoSave.UseVisualStyleBackColor = True @@ -335,7 +336,7 @@ Partial Class OpGeneral Me.cMStopPreview.AutoSize = True Me.cMStopPreview.Checked = True Me.cMStopPreview.CheckState = System.Windows.Forms.CheckState.Checked - Me.cMStopPreview.Location = New System.Drawing.Point(34, 621) + Me.cMStopPreview.Location = New System.Drawing.Point(34, 635) Me.cMStopPreview.Name = "cMStopPreview" Me.cMStopPreview.Size = New System.Drawing.Size(253, 19) Me.cMStopPreview.TabIndex = 108 @@ -384,7 +385,7 @@ Partial Class OpGeneral ' Me.Label3.Anchor = CType(((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left) _ Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) - Me.Label3.Location = New System.Drawing.Point(12, 520) + Me.Label3.Location = New System.Drawing.Point(12, 534) Me.Label3.Name = "Label3" Me.Label3.Size = New System.Drawing.Size(136, 17) Me.Label3.TabIndex = 104 @@ -400,7 +401,7 @@ Partial Class OpGeneral Me.FlowLayoutPanel1.Controls.Add(Me.rMiddleAuto) Me.FlowLayoutPanel1.Controls.Add(Me.rMiddleDrag) Me.FlowLayoutPanel1.FlowDirection = System.Windows.Forms.FlowDirection.TopDown - Me.FlowLayoutPanel1.Location = New System.Drawing.Point(154, 519) + Me.FlowLayoutPanel1.Location = New System.Drawing.Point(154, 533) Me.FlowLayoutPanel1.Name = "FlowLayoutPanel1" Me.FlowLayoutPanel1.Size = New System.Drawing.Size(141, 38) Me.FlowLayoutPanel1.TabIndex = 105 @@ -503,9 +504,9 @@ Partial Class OpGeneral Me.cAudioLine.AutoSize = True Me.TableLayoutPanel5.SetColumnSpan(Me.cAudioLine, 3) Me.cAudioLine.Dock = System.Windows.Forms.DockStyle.Left - Me.cAudioLine.Location = New System.Drawing.Point(3, 107) + Me.cAudioLine.Location = New System.Drawing.Point(3, 128) Me.cAudioLine.Name = "cAudioLine" - Me.cAudioLine.Size = New System.Drawing.Size(233, 20) + Me.cAudioLine.Size = New System.Drawing.Size(233, 19) Me.cAudioLine.TabIndex = 14 Me.cAudioLine.Text = "Display audio lines during note preview" Me.cAudioLine.UseVisualStyleBackColor = True @@ -515,9 +516,9 @@ Partial Class OpGeneral Me.cTemplateSnapToVPosition.AutoSize = True Me.TableLayoutPanel5.SetColumnSpan(Me.cTemplateSnapToVPosition, 3) Me.cTemplateSnapToVPosition.Dock = System.Windows.Forms.DockStyle.Left - Me.cTemplateSnapToVPosition.Location = New System.Drawing.Point(3, 133) + Me.cTemplateSnapToVPosition.Location = New System.Drawing.Point(3, 153) Me.cTemplateSnapToVPosition.Name = "cTemplateSnapToVPosition" - Me.cTemplateSnapToVPosition.Size = New System.Drawing.Size(326, 20) + Me.cTemplateSnapToVPosition.Size = New System.Drawing.Size(326, 19) Me.cTemplateSnapToVPosition.TabIndex = 111 Me.cTemplateSnapToVPosition.Text = "Snap to Vertical Position for Moving to Template Position" Me.cTemplateSnapToVPosition.UseVisualStyleBackColor = True @@ -565,6 +566,16 @@ Partial Class OpGeneral Me.TableLayoutPanel3.Size = New System.Drawing.Size(376, 133) Me.TableLayoutPanel3.TabIndex = 112 ' + 'Label11 + ' + Me.Label11.Dock = System.Windows.Forms.DockStyle.Fill + Me.Label11.Location = New System.Drawing.Point(3, 99) + Me.Label11.Name = "Label11" + Me.Label11.Size = New System.Drawing.Size(188, 34) + Me.Label11.TabIndex = 115 + Me.Label11.Text = "Temporary BMS Filename" + Me.Label11.TextAlign = System.Drawing.ContentAlignment.MiddleRight + ' 'TableLayoutPanel4 ' Me.TableLayoutPanel4.ColumnCount = 2 @@ -589,6 +600,15 @@ Partial Class OpGeneral Me.LabelTHLN.Text = "bars" Me.LabelTHLN.TextAlign = System.Drawing.ContentAlignment.MiddleLeft ' + 'TTemp + ' + Me.TTemp.Dock = System.Windows.Forms.DockStyle.Fill + Me.TTemp.Location = New System.Drawing.Point(197, 102) + Me.TTemp.Name = "TTemp" + Me.TTemp.Size = New System.Drawing.Size(176, 23) + Me.TTemp.TabIndex = 116 + Me.TTemp.Text = "___TempBMS.bmsc" + ' 'TableLayoutPanel5 ' Me.TableLayoutPanel5.Anchor = CType(((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left) _ @@ -599,24 +619,26 @@ Partial Class OpGeneral Me.TableLayoutPanel5.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 25.0!)) Me.TableLayoutPanel5.Controls.Add(Me.cAutoSave, 0, 0) Me.TableLayoutPanel5.Controls.Add(Me.NAutoSave, 1, 0) - Me.TableLayoutPanel5.Controls.Add(Me.cTemplateSnapToVPosition, 0, 5) + Me.TableLayoutPanel5.Controls.Add(Me.cTemplateSnapToVPosition, 0, 6) Me.TableLayoutPanel5.Controls.Add(Me.Label7, 2, 0) Me.TableLayoutPanel5.Controls.Add(Me.cBeep, 0, 1) - Me.TableLayoutPanel5.Controls.Add(Me.cBpm1296, 0, 2) - Me.TableLayoutPanel5.Controls.Add(Me.cStop1296, 0, 3) - Me.TableLayoutPanel5.Controls.Add(Me.cAudioLine, 0, 4) - Me.TableLayoutPanel5.Controls.Add(Me.cPastePatternToVPosition, 0, 6) - Me.TableLayoutPanel5.Location = New System.Drawing.Point(15, 250) + Me.TableLayoutPanel5.Controls.Add(Me.cBpm1296, 0, 3) + Me.TableLayoutPanel5.Controls.Add(Me.cStop1296, 0, 4) + Me.TableLayoutPanel5.Controls.Add(Me.cAudioLine, 0, 5) + Me.TableLayoutPanel5.Controls.Add(Me.cPastePatternToVPosition, 0, 7) + Me.TableLayoutPanel5.Controls.Add(Me.cPreloadBMSStruct, 0, 2) + Me.TableLayoutPanel5.Location = New System.Drawing.Point(15, 246) Me.TableLayoutPanel5.Name = "TableLayoutPanel5" - Me.TableLayoutPanel5.RowCount = 7 - Me.TableLayoutPanel5.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 14.28571!)) - Me.TableLayoutPanel5.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 14.28571!)) - Me.TableLayoutPanel5.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 14.28571!)) - Me.TableLayoutPanel5.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 14.28571!)) - Me.TableLayoutPanel5.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 14.28571!)) - Me.TableLayoutPanel5.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 14.28571!)) - Me.TableLayoutPanel5.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 14.28571!)) - Me.TableLayoutPanel5.Size = New System.Drawing.Size(376, 183) + Me.TableLayoutPanel5.RowCount = 8 + Me.TableLayoutPanel5.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 12.5!)) + Me.TableLayoutPanel5.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 12.5!)) + Me.TableLayoutPanel5.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 12.5!)) + Me.TableLayoutPanel5.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 12.5!)) + Me.TableLayoutPanel5.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 12.5!)) + Me.TableLayoutPanel5.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 12.5!)) + Me.TableLayoutPanel5.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 12.5!)) + Me.TableLayoutPanel5.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 12.5!)) + Me.TableLayoutPanel5.Size = New System.Drawing.Size(376, 201) Me.TableLayoutPanel5.TabIndex = 113 ' 'cPastePatternToVPosition @@ -624,38 +646,29 @@ Partial Class OpGeneral Me.cPastePatternToVPosition.AutoSize = True Me.TableLayoutPanel5.SetColumnSpan(Me.cPastePatternToVPosition, 3) Me.cPastePatternToVPosition.Dock = System.Windows.Forms.DockStyle.Left - Me.cPastePatternToVPosition.Location = New System.Drawing.Point(3, 159) + Me.cPastePatternToVPosition.Location = New System.Drawing.Point(3, 178) Me.cPastePatternToVPosition.Name = "cPastePatternToVPosition" - Me.cPastePatternToVPosition.Size = New System.Drawing.Size(259, 21) + Me.cPastePatternToVPosition.Size = New System.Drawing.Size(259, 20) Me.cPastePatternToVPosition.TabIndex = 111 Me.cPastePatternToVPosition.Text = "Snap to Vertical Position for Pasting Patterns" Me.cPastePatternToVPosition.UseVisualStyleBackColor = True ' - 'Label11 - ' - Me.Label11.Dock = System.Windows.Forms.DockStyle.Fill - Me.Label11.Location = New System.Drawing.Point(3, 99) - Me.Label11.Name = "Label11" - Me.Label11.Size = New System.Drawing.Size(188, 34) - Me.Label11.TabIndex = 115 - Me.Label11.Text = "Temporary BMS Filename" - Me.Label11.TextAlign = System.Drawing.ContentAlignment.MiddleRight - ' - 'TTemp + 'cPreloadBMSStruct ' - Me.TTemp.Dock = System.Windows.Forms.DockStyle.Fill - Me.TTemp.Location = New System.Drawing.Point(197, 102) - Me.TTemp.Name = "TTemp" - Me.TTemp.Size = New System.Drawing.Size(176, 23) - Me.TTemp.TabIndex = 116 - Me.TTemp.Text = "___TempBMS.bmsc" + Me.cPreloadBMSStruct.AutoSize = True + Me.cPreloadBMSStruct.Location = New System.Drawing.Point(3, 53) + Me.cPreloadBMSStruct.Name = "cPreloadBMSStruct" + Me.cPreloadBMSStruct.Size = New System.Drawing.Size(182, 19) + Me.cPreloadBMSStruct.TabIndex = 112 + Me.cPreloadBMSStruct.Text = "Preload all files in the files tab" + Me.cPreloadBMSStruct.UseVisualStyleBackColor = True ' 'OpGeneral ' Me.AcceptButton = Me.OK_Button Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None Me.CancelButton = Me.Cancel_Button - Me.ClientSize = New System.Drawing.Size(413, 702) + Me.ClientSize = New System.Drawing.Size(413, 716) Me.Controls.Add(Me.TableLayoutPanel5) Me.Controls.Add(Me.TableLayoutPanel3) Me.Controls.Add(Me.FlowLayoutPanel1) @@ -752,4 +765,5 @@ Partial Class OpGeneral Friend WithEvents cPastePatternToVPosition As CheckBox Friend WithEvents Label11 As Label Friend WithEvents TTemp As TextBox + Friend WithEvents cPreloadBMSStruct As CheckBox End Class diff --git a/iBMSC/Option Windows/OpGeneral.vb b/iBMSC/Option Windows/OpGeneral.vb index cbd5c57fe..adb0ae98a 100644 --- a/iBMSC/Option Windows/OpGeneral.vb +++ b/iBMSC/Option Windows/OpGeneral.vb @@ -55,7 +55,7 @@ Public Class OpGeneral End Sub Public Sub New(ByVal xMsWheel As Integer, ByVal xPgUpDn As Integer, ByVal xMiddleButton As Integer, ByVal xTextEncoding As Integer, ByVal xGridPartition As Integer, ByVal xJackBPM As Double, ByVal xJackTH As Double, ByVal xLNGap As Double, ByVal xTemp As String, - ByVal xAutoSave As Integer, ByVal xBeep As Boolean, ByVal xBPMx As Boolean, ByVal xSTOPx As Boolean, ByVal xAudioLine As Boolean, ByVal xTemplateSnapToVPosition As Boolean, ByVal xPastePatternToVPosition As Boolean, + ByVal xAutoSave As Integer, ByVal xBeep As Boolean, ByVal xPreloadBMSStruct As Boolean, ByVal xBPMx As Boolean, ByVal xSTOPx As Boolean, ByVal xAudioLine As Boolean, ByVal xTemplateSnapToVPosition As Boolean, ByVal xPastePatternToVPosition As Boolean, ByVal xMFEnter As Boolean, ByVal xMFClick As Boolean, ByVal xMStopPreview As Boolean) InitializeComponent() @@ -95,6 +95,7 @@ Public Class OpGeneral End If cBeep.Checked = xBeep + cPreloadBMSStruct.Checked = xPreloadBMSStruct cBpm1296.Checked = xBPMx cStop1296.Checked = xSTOPx cAudioLine.Checked = xAudioLine From 904bef7f292280e4e1341579e015eb4849df6f7e Mon Sep 17 00:00:00 2001 From: psyk2642 <60137590+psyk2642@users.noreply.github.com> Date: Mon, 16 May 2022 20:59:50 +0800 Subject: [PATCH 176/257] Updated the Image Display Code If Banner does not exist, try to load StageFile. --- iBMSC/FileTab.vb | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/iBMSC/FileTab.vb b/iBMSC/FileTab.vb index 6ff49c559..df39c1781 100644 --- a/iBMSC/FileTab.vb +++ b/iBMSC/FileTab.vb @@ -156,7 +156,10 @@ Partial Public Class MainWindow Dim xITab = Array.IndexOf(BMSFileTSBList, TSBS) If Not BMSStructInitialized(xITab) Then Exit Sub Dim BannerDir = ExcludeFileName(BMSFileList(xITab)) & "\" & BMSFileStructs(xITab).HeaderT(8) - If Not My.Computer.FileSystem.FileExists(BannerDir) Then Exit Sub + If Not My.Computer.FileSystem.FileExists(BannerDir) Then + BannerDir = ExcludeFileName(BMSFileList(xITab)) & "\" & BMSFileStructs(xITab).HeaderT(7) + If Not My.Computer.FileSystem.FileExists(BannerDir) Then Exit Sub + End If With PBOnTabHover .Image = New Bitmap(BannerDir) From 8e5dc9897e4782e1c0bac26a7c855c1609ecd4a5 Mon Sep 17 00:00:00 2001 From: psyk2642 <60137590+psyk2642@users.noreply.github.com> Date: Mon, 16 May 2022 21:14:21 +0800 Subject: [PATCH 177/257] Checks if there are unsaved files on closing Doesn't save them yet, just as a check at the moment. --- iBMSC/EditorPersistent.vb | 1 + iBMSC/FileTab.vb | 6 +++--- iBMSC/MainWindow.vb | 9 +++++++++ iBMSC/Strings.vb | 1 + 4 files changed, 14 insertions(+), 3 deletions(-) diff --git a/iBMSC/EditorPersistent.vb b/iBMSC/EditorPersistent.vb index b5a83ea87..6d42bd80b 100644 --- a/iBMSC/EditorPersistent.vb +++ b/iBMSC/EditorPersistent.vb @@ -1161,6 +1161,7 @@ Partial Public Class MainWindow XMLLoadLocale(eMessages.Item("SaveOnExit"), Strings.Messages.SaveOnExit) XMLLoadLocale(eMessages.Item("SaveOnExit1"), Strings.Messages.SaveOnExit1) XMLLoadLocale(eMessages.Item("SaveOnExit2"), Strings.Messages.SaveOnExit2) + XMLLoadLocale(eMessages.Item("SaveOnExitOther"), Strings.Messages.SaveOnExitOther) XMLLoadLocale(eMessages.Item("PromptEnter"), Strings.Messages.PromptEnter) XMLLoadLocale(eMessages.Item("PromptEnterNumeric"), Strings.Messages.PromptEnterNumeric) XMLLoadLocale(eMessages.Item("PromptEnterBPM"), Strings.Messages.PromptEnterBPM) diff --git a/iBMSC/FileTab.vb b/iBMSC/FileTab.vb index df39c1781..0634e6478 100644 --- a/iBMSC/FileTab.vb +++ b/iBMSC/FileTab.vb @@ -154,7 +154,7 @@ Partial Public Class MainWindow Private Sub TBTab_MouseMove(sender As Object, e As MouseEventArgs) Dim TSBS = CType(sender, ToolStripButton) Dim xITab = Array.IndexOf(BMSFileTSBList, TSBS) - If Not BMSStructInitialized(xITab) Then Exit Sub + If Not BMSStructIsInitialized(xITab) Then Exit Sub Dim BannerDir = ExcludeFileName(BMSFileList(xITab)) & "\" & BMSFileStructs(xITab).HeaderT(8) If Not My.Computer.FileSystem.FileExists(BannerDir) Then BannerDir = ExcludeFileName(BMSFileList(xITab)) & "\" & BMSFileStructs(xITab).HeaderT(7) @@ -367,7 +367,7 @@ Partial Public Class MainWindow ReDim Preserve BMSFileStructs(UBound(BMSFileStructs) - 1) End Sub - Private Function BMSStructInitialized(Optional xI As Integer = -1) As Boolean + Private Function BMSStructIsInitialized(Optional xI As Integer = -1) As Boolean If xI = -1 Then xI = BMSFileIndex Return BMSFileStructs(xI).Notes IsNot Nothing @@ -376,7 +376,7 @@ Partial Public Class MainWindow Private Function BMSStructIsSaved(Optional xI As Integer = -1) As Boolean If xI = -1 Then xI = BMSFileIndex - If BMSStructInitialized(xI) Then + If BMSStructIsInitialized(xI) Then Return BMSFileStructs(xI).IsSaved Else Return True diff --git a/iBMSC/MainWindow.vb b/iBMSC/MainWindow.vb index a443e4699..71dc5cdc1 100644 --- a/iBMSC/MainWindow.vb +++ b/iBMSC/MainWindow.vb @@ -1114,6 +1114,15 @@ Public Class MainWindow If BeepWhileSaved Then Beep() End If + For i = 0 To UBound(BMSFileList) + If Not BMSStructIsSaved(i) Then + Dim xStr As String = Strings.Messages.SaveOnExitOther + Dim xResult As MsgBoxResult = MsgBox(xStr, MsgBoxStyle.OkCancel Or MsgBoxStyle.Question, Me.Text) + If xResult = MsgBoxResult.Cancel Then e.Cancel = True : Exit Sub + Exit For + End If + Next + If Not e.Cancel Then 'If SaveTheme Then ' My.Computer.FileSystem.WriteAllText(My.Application.Info.DirectoryPath & "\Skin.cff", SaveSkinCFF, False, System.Text.Encoding.Unicode) diff --git a/iBMSC/Strings.vb b/iBMSC/Strings.vb index f6c8b681a..9bc97341a 100644 --- a/iBMSC/Strings.vb +++ b/iBMSC/Strings.vb @@ -22,6 +22,7 @@ Public Class Strings Public Shared SaveOnExit As String = "Do you want to save changes?" Public Shared SaveOnExit1 As String = "You should tell me if you want to save changes before closing the computer. -_,-" Public Shared SaveOnExit2 As String = "You still need to tell me if you want to save changes even though you are closing the application with task manager. -_,-" + Public Shared SaveOnExitOther As String = "There are unsaved files. Discard changes and close the application?" Public Shared PromptEnter As String = "Please enter a label." Public Shared PromptEnterNumeric As String = "Please enter a value." Public Shared PromptEnterMeasure As String = "Please enter a measure (0-999)." From 7e1d57e79b362ce4ac48c61b924619f89e922d55 Mon Sep 17 00:00:00 2001 From: psyk2642 <60137590+psyk2642@users.noreply.github.com> Date: Mon, 16 May 2022 22:00:18 +0800 Subject: [PATCH 178/257] Update ChartIO.vb --- iBMSC/ChartIO.vb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/iBMSC/ChartIO.vb b/iBMSC/ChartIO.vb index 8457282a6..ece3902a5 100644 --- a/iBMSC/ChartIO.vb +++ b/iBMSC/ChartIO.vb @@ -1401,7 +1401,7 @@ Partial Public Class MainWindow bw.Write(100) bw.Write(sI) - For i As Integer = 0 To 99 + For i As Integer = 0 To UndoRedoCount 'UndoCommandsCount Dim countUndo As Integer = 0 Dim pUndo As UndoRedo.LinkedURCmd = sUndo(i) From 0f2024b97916079f46a0794d043f9274d30402cb Mon Sep 17 00:00:00 2001 From: psyk2642 <60137590+psyk2642@users.noreply.github.com> Date: Mon, 16 May 2022 22:04:13 +0800 Subject: [PATCH 179/257] Update ChartIO.vb --- iBMSC/ChartIO.vb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/iBMSC/ChartIO.vb b/iBMSC/ChartIO.vb index ece3902a5..837170b4d 100644 --- a/iBMSC/ChartIO.vb +++ b/iBMSC/ChartIO.vb @@ -1203,7 +1203,7 @@ Partial Public Class MainWindow Dim URCount As Integer = br.ReadInt32 'Should be 100 sI = br.ReadInt32 - For xI As Integer = 0 To 99 + For xI As Integer = 0 To UndoRedoCount Dim xUndoCount As Integer = br.ReadInt32 Dim xBaseUndo As New UndoRedo.Void Dim xIteratorUndo As UndoRedo.LinkedURCmd = xBaseUndo From 35a2deded77a45a038acbc421f97d746d18b4b3c Mon Sep 17 00:00:00 2001 From: psyk2642 <60137590+psyk2642@users.noreply.github.com> Date: Mon, 16 May 2022 22:06:57 +0800 Subject: [PATCH 180/257] Update ChartIO.vb --- iBMSC/ChartIO.vb | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/iBMSC/ChartIO.vb b/iBMSC/ChartIO.vb index 837170b4d..92e09a43c 100644 --- a/iBMSC/ChartIO.vb +++ b/iBMSC/ChartIO.vb @@ -1082,11 +1082,7 @@ Partial Public Class MainWindow Dim xPref As Integer = br.ReadInt32 NTInput = CBool(xPref And &H1) - TBNTInput.Checked = NTInput - POBLongObjNT.Visible = NTInput - POBLongNTObj.Visible = NTInput - POBLong.Visible = Not NTInput - POBLongShort.Visible = Not NTInput + RefreshItemsByNTInput() ErrorCheck = CBool(xPref And &H2) TBErrorCheck.Checked = ErrorCheck From a31c61d7caacaf884bef3fd9d817c6b39bbea4ce Mon Sep 17 00:00:00 2001 From: psyk2642 <60137590+psyk2642@users.noreply.github.com> Date: Mon, 16 May 2022 22:57:20 +0800 Subject: [PATCH 181/257] File tabs Fix - Fixed MeasureLength not saving independently across all BMSStructs. - Fixed changes not being retained while opening files or opening new BMS. --- iBMSC/FileTab.vb | 4 +++- iBMSC/MainWindow.vb | 12 +++++++++--- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/iBMSC/FileTab.vb b/iBMSC/FileTab.vb index 0634e6478..c24ba8d59 100644 --- a/iBMSC/FileTab.vb +++ b/iBMSC/FileTab.vb @@ -259,7 +259,9 @@ Partial Public Class MainWindow Private Sub SaveBMSStruct(Optional xI As Integer = -1) If xI = -1 Then xI = BMSFileIndex - + ' Console.WriteLine(FileName) + ' Console.WriteLine(MeasureLength(0)) + ' If BMSFileStructs(0).MeasureLength IsNot Nothing Then Console.WriteLine("BMSStruct 0, MeasureLength 0: " & BMSFileStructs(0).MeasureLength(0)) Dim HeaderT() As String = {THTitle.Text, THArtist.Text, THGenre.Text, THPlayLevel.Text, THTotal.Text, THSubTitle.Text, THSubArtist.Text, THStageFile.Text, THBanner.Text, THBackBMP.Text, THExRank.Text, THComment.Text} Dim HeaderN() As Decimal = {THBPM.Value} diff --git a/iBMSC/MainWindow.vb b/iBMSC/MainWindow.vb index 71dc5cdc1..ed800e8cb 100644 --- a/iBMSC/MainWindow.vb +++ b/iBMSC/MainWindow.vb @@ -1195,17 +1195,19 @@ Public Class MainWindow WaveformLoaded = False TExpansion.Text = "" + ReDim ExpansionSplit(2) LWAV.Items.Clear() For xI1 = 1 To 1295 LWAV.Items.Add(C10to36(xI1) & ": " & hWAV(xI1)) Next + ReDim MeasureLength(999) LBeat.Items.Clear() For xI1 As Integer = 0 To 999 MeasureLength(xI1) = 192.0R MeasureBottom(xI1) = xI1 * 192.0R - LBeat.Items.Add(Add3Zeros(xI1) & ": 1 ( " & CInt(nBeatD.Value) & " / 4" & CInt(nBeatD.Value) & " )") + LBeat.Items.Add(Add3Zeros(xI1) & ": 1 ( " & CInt(nBeatD.Value) & " / " & CInt(nBeatD.Value) & " )") Next End Sub @@ -1239,6 +1241,8 @@ Public Class MainWindow Dim xOrigPath() As String = CType(e.Data.GetData(DataFormats.FileDrop), String()) ' Dim xPath() As String = FilterFileBySupported(xOrigPath, SupportedFileExtension) ' If xPath.Length > 0 Then + + SaveBMSStruct() Dim xProg As New fLoadFileProgress(xOrigPath, IsSaved) xProg.ShowDialog(Me) ' End If @@ -1824,6 +1828,8 @@ Public Class MainWindow End Function Private Sub TBNew_Click(ByVal sender As System.Object, ByVal e As EventArgs) Handles TBNew.Click, mnNew.Click + SaveBMSStruct() + SetBMSFileIndex(UBound(BMSFileList)) 'KMouseDown = -1 ReDim SelectedNotes(-1) @@ -1858,7 +1864,6 @@ Public Class MainWindow LWAV.SelectedIndex = 0 SetIsSaved(True) - SetBMSFileIndex(UBound(BMSFileList)) 'pIsSaved.Visible = Not IsSaved CalculateTotalPlayableNotes(False) @@ -1923,6 +1928,7 @@ Public Class MainWindow If xDOpen.ShowDialog = Windows.Forms.DialogResult.Cancel Then Exit Sub + SaveBMSStruct() Dim xProg As New fLoadFileProgress(xDOpen.FileNames, IsSaved) xProg.ShowDialog(Me) @@ -2432,7 +2438,7 @@ Public Class MainWindow Private Sub TimerLWAVRefresh_Tick(sender As Object, e As EventArgs) Handles TimerLWAVRefresh.Tick Dim xIL = LWAVRefreshId - 1 LWAV.Items(xIL) = C10to36(LWAVRefreshId) & ": " & hWAV(LWAVRefreshId) - Console.WriteLine(LWAVRefreshId) + ' Console.WriteLine(LWAVRefreshId) If LWAVRefreshId = 1295 Then LWAVRefreshId = 1 From bda47e8156e94da89dacd8c1b42c4340b203d538 Mon Sep 17 00:00:00 2001 From: psyk2642 <60137590+psyk2642@users.noreply.github.com> Date: Tue, 17 May 2022 06:19:53 +0800 Subject: [PATCH 182/257] Update MainWindow.designer.vb --- iBMSC/MainWindow.designer.vb | 66 ++++++++++++++++++------------------ 1 file changed, 33 insertions(+), 33 deletions(-) diff --git a/iBMSC/MainWindow.designer.vb b/iBMSC/MainWindow.designer.vb index 371351abf..1e444f9f7 100644 --- a/iBMSC/MainWindow.designer.vb +++ b/iBMSC/MainWindow.designer.vb @@ -25,16 +25,16 @@ Partial Class MainWindow Me.TBLangDef = New System.Windows.Forms.ToolStripMenuItem() Me.TBLangRefresh = New System.Windows.Forms.ToolStripMenuItem() Me.ToolStripSeparator9 = New System.Windows.Forms.ToolStripSeparator() - Me.mnLanguage = New System.Windows.Forms.ToolStripMenuItem() Me.TBLanguage = New System.Windows.Forms.ToolStripDropDownButton() + Me.mnLanguage = New System.Windows.Forms.ToolStripMenuItem() Me.cmnTheme = New System.Windows.Forms.ContextMenuStrip(Me.components) Me.TBThemeDef = New System.Windows.Forms.ToolStripMenuItem() Me.TBThemeSave = New System.Windows.Forms.ToolStripMenuItem() Me.TBThemeRefresh = New System.Windows.Forms.ToolStripMenuItem() Me.TBThemeLoadComptability = New System.Windows.Forms.ToolStripMenuItem() Me.ToolStripSeparator6 = New System.Windows.Forms.ToolStripSeparator() - Me.mnTheme = New System.Windows.Forms.ToolStripMenuItem() Me.TBTheme = New System.Windows.Forms.ToolStripDropDownButton() + Me.mnTheme = New System.Windows.Forms.ToolStripMenuItem() Me.Timer1 = New System.Windows.Forms.Timer(Me.components) Me.Menu1 = New System.Windows.Forms.ContextMenuStrip(Me.components) Me.MInsert = New System.Windows.Forms.ToolStripMenuItem() @@ -136,6 +136,7 @@ Partial Class MainWindow Me.POBSRandom = New System.Windows.Forms.ToolStripMenuItem() Me.POBHRandom = New System.Windows.Forms.ToolStripMenuItem() Me.POBSort = New System.Windows.Forms.ToolStripMenuItem() + Me.POConvert = New System.Windows.Forms.ToolStripDropDownButton() Me.mnPreview = New System.Windows.Forms.ToolStripMenuItem() Me.mnPlayB = New System.Windows.Forms.ToolStripMenuItem() Me.mnPlay = New System.Windows.Forms.ToolStripMenuItem() @@ -144,7 +145,6 @@ Partial Class MainWindow Me.mnTechnicalErrorCheck = New System.Windows.Forms.ToolStripMenuItem() Me.mnTOTAL = New System.Windows.Forms.ToolStripMenuItem() Me.ToolStripSeparator13 = New System.Windows.Forms.ToolStripSeparator() - Me.POConvert = New System.Windows.Forms.ToolStripDropDownButton() Me.TBMain = New System.Windows.Forms.ToolStrip() Me.TBNew = New System.Windows.Forms.ToolStripButton() Me.TBOpen = New System.Windows.Forms.ToolStripSplitButton() @@ -482,7 +482,7 @@ Partial Class MainWindow ' Me.cmnLanguage.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.TBLangDef, Me.TBLangRefresh, Me.ToolStripSeparator9}) Me.cmnLanguage.Name = "cmnLanguage" - Me.cmnLanguage.OwnerItem = Me.TBLanguage + Me.cmnLanguage.OwnerItem = Me.mnLanguage Me.cmnLanguage.Size = New System.Drawing.Size(121, 54) ' 'TBLangDef @@ -503,14 +503,6 @@ Partial Class MainWindow Me.ToolStripSeparator9.Name = "ToolStripSeparator9" Me.ToolStripSeparator9.Size = New System.Drawing.Size(117, 6) ' - 'mnLanguage - ' - Me.mnLanguage.DropDown = Me.cmnLanguage - Me.mnLanguage.Image = Global.iBMSC.My.Resources.Resources.x16Language - Me.mnLanguage.Name = "mnLanguage" - Me.mnLanguage.Size = New System.Drawing.Size(253, 22) - Me.mnLanguage.Text = "&Language" - ' 'TBLanguage ' Me.TBLanguage.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image @@ -521,11 +513,19 @@ Partial Class MainWindow Me.TBLanguage.Size = New System.Drawing.Size(29, 22) Me.TBLanguage.Text = "Language" ' + 'mnLanguage + ' + Me.mnLanguage.DropDown = Me.cmnLanguage + Me.mnLanguage.Image = Global.iBMSC.My.Resources.Resources.x16Language + Me.mnLanguage.Name = "mnLanguage" + Me.mnLanguage.Size = New System.Drawing.Size(253, 22) + Me.mnLanguage.Text = "&Language" + ' 'cmnTheme ' Me.cmnTheme.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.TBThemeDef, Me.TBThemeSave, Me.TBThemeRefresh, Me.TBThemeLoadComptability, Me.ToolStripSeparator6}) Me.cmnTheme.Name = "cmnLanguage" - Me.cmnTheme.OwnerItem = Me.TBTheme + Me.cmnTheme.OwnerItem = Me.mnTheme Me.cmnTheme.Size = New System.Drawing.Size(246, 98) ' 'TBThemeDef @@ -559,14 +559,6 @@ Partial Class MainWindow Me.ToolStripSeparator6.Name = "ToolStripSeparator6" Me.ToolStripSeparator6.Size = New System.Drawing.Size(242, 6) ' - 'mnTheme - ' - Me.mnTheme.DropDown = Me.cmnTheme - Me.mnTheme.Image = Global.iBMSC.My.Resources.Resources.x16Theme - Me.mnTheme.Name = "mnTheme" - Me.mnTheme.Size = New System.Drawing.Size(253, 22) - Me.mnTheme.Text = "&Theme" - ' 'TBTheme ' Me.TBTheme.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image @@ -577,6 +569,14 @@ Partial Class MainWindow Me.TBTheme.Size = New System.Drawing.Size(29, 22) Me.TBTheme.Text = "Theme" ' + 'mnTheme + ' + Me.mnTheme.DropDown = Me.cmnTheme + Me.mnTheme.Image = Global.iBMSC.My.Resources.Resources.x16Theme + Me.mnTheme.Name = "mnTheme" + Me.mnTheme.Size = New System.Drawing.Size(253, 22) + Me.mnTheme.Text = "&Theme" + ' 'Timer1 ' Me.Timer1.Interval = 15 @@ -1208,7 +1208,7 @@ Partial Class MainWindow ' Me.cmnConversion.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.POBLong, Me.POBShort, Me.POBLongShort, Me.POBLongObjNT, Me.POBLongNTObj, Me.ToolStripSeparator25, Me.POBAutoLongVPosition, Me.POBAutoLongColumn, Me.ToolStripSeparator10, Me.POBHidden, Me.POBVisible, Me.POBHiddenVisible, Me.ToolStripSeparator11, Me.POBModify, Me.POBMirror, Me.POBFlip, Me.POBRandom, Me.POBRRandom, Me.POBSRandom, Me.POBHRandom, Me.POBSort}) Me.cmnConversion.Name = "cmnLanguage" - Me.cmnConversion.OwnerItem = Me.POConvert + Me.cmnConversion.OwnerItem = Me.mnConversion Me.cmnConversion.Size = New System.Drawing.Size(237, 418) ' 'POBLong @@ -1355,6 +1355,16 @@ Partial Class MainWindow Me.POBSort.Size = New System.Drawing.Size(236, 22) Me.POBSort.Text = "S&ort" ' + 'POConvert + ' + Me.POConvert.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image + Me.POConvert.DropDown = Me.cmnConversion + Me.POConvert.Image = Global.iBMSC.My.Resources.Resources.ConvertNotes + Me.POConvert.ImageTransparentColor = System.Drawing.Color.Magenta + Me.POConvert.Name = "POConvert" + Me.POConvert.Size = New System.Drawing.Size(29, 22) + Me.POConvert.Text = "Convert Notes" + ' 'mnPreview ' Me.mnPreview.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.mnPlayB, Me.mnPlay, Me.mnStop}) @@ -1412,16 +1422,6 @@ Partial Class MainWindow Me.ToolStripSeparator13.Name = "ToolStripSeparator13" Me.ToolStripSeparator13.Size = New System.Drawing.Size(247, 6) ' - 'POConvert - ' - Me.POConvert.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image - Me.POConvert.DropDown = Me.cmnConversion - Me.POConvert.Image = Global.iBMSC.My.Resources.Resources.ConvertNotes - Me.POConvert.ImageTransparentColor = System.Drawing.Color.Magenta - Me.POConvert.Name = "POConvert" - Me.POConvert.Size = New System.Drawing.Size(29, 22) - Me.POConvert.Text = "Convert Notes" - ' 'TBMain ' Me.TBMain.AccessibleRole = System.Windows.Forms.AccessibleRole.ToolBar @@ -2337,7 +2337,7 @@ Partial Class MainWindow ' Me.TBTab.BackColor = System.Drawing.SystemColors.Control Me.TBTab.Dock = System.Windows.Forms.DockStyle.None - Me.TBTab.Location = New System.Drawing.Point(7, 48) + Me.TBTab.Location = New System.Drawing.Point(5, 48) Me.TBTab.Name = "TBTab" Me.TBTab.Size = New System.Drawing.Size(43, 25) Me.TBTab.TabIndex = 65 From 51231f61a162e93121227e512780fb9caa1b44cb Mon Sep 17 00:00:00 2001 From: psyk2642 <60137590+psyk2642@users.noreply.github.com> Date: Tue, 17 May 2022 06:34:44 +0800 Subject: [PATCH 183/257] Fix some note types not able to be saved --- iBMSC/ChartIO.vb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/iBMSC/ChartIO.vb b/iBMSC/ChartIO.vb index 92e09a43c..face9a7c8 100644 --- a/iBMSC/ChartIO.vb +++ b/iBMSC/ChartIO.vb @@ -786,8 +786,8 @@ Partial Public Class MainWindow Next For i = 0 To UBound(relativeMeasurePos) 'assign K texts - Dim CBMSCI As Integer = CInt(CurrentBMSChannel) If CInt(relativeMeasurePos(i) / xGCD) > UBound(xStrKey) Then + Dim CBMSCI As Integer = CInt(CurrentBMSChannel) ReDim Preserve xprevNotes(UBound(xprevNotes) + 1) With xprevNotes(UBound(xprevNotes)) .ColumnIndex = BMSChannelToColumn(BMSChannelList(CBMSCI)) From c10cb76104e5f9b3bc80db921e04fd79837bc626 Mon Sep 17 00:00:00 2001 From: psyk2642 <60137590+psyk2642@users.noreply.github.com> Date: Tue, 17 May 2022 06:58:24 +0800 Subject: [PATCH 184/257] Bug Fix - Changed all BPM variables in TimeSelectionOps from Integer to Long. - Fixed some value prompts giving an error when canceled. --- iBMSC/PanelEvents.vb | 87 ++++++++++++++++++++++----------------- iBMSC/TimeSelectionOps.vb | 50 +++++++++++----------- 2 files changed, 74 insertions(+), 63 deletions(-) diff --git a/iBMSC/PanelEvents.vb b/iBMSC/PanelEvents.vb index 58d7c5dee..2e93ac121 100644 --- a/iBMSC/PanelEvents.vb +++ b/iBMSC/PanelEvents.vb @@ -810,8 +810,6 @@ Partial Public Class MainWindow Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo Dim valstr As String = InputBox(xMessage, Text) - Dim value As Long = 0 - If Not valstr.StartsWith("-c ") Then value = CLng(CDbl(valstr) * 10000) If valstr.StartsWith("-c ") Then ' Input comment notes If valstr = "-c " Then valstr &= " " For xI1 = 1 To UBound(Notes) @@ -826,18 +824,24 @@ Partial Public Class MainWindow AddNote(n) AddUndo(xUndo, xBaseRedo.Next) - ElseIf (xColumn = niSCROLL And valstr = "0") Or value <> 0 Then ' Input normal notes - If xColumn <> niSCROLL And value <= 0 Then value = 1 - For xI1 = 1 To UBound(Notes) - If Notes(xI1).VPosition = xVPosition AndAlso Notes(xI1).ColumnIndex = xColumn Then _ - RedoRemoveNote(Notes(xI1), xUndo, xRedo) - Next + Else + Dim valstrDbl As Double + If Double.TryParse(valstr, valstrDbl) Then + Dim PromptValue As Long = CLng(valstrDbl * 10000) + If (xColumn = niSCROLL And valstr = "0") Or PromptValue <> 0 Then ' Input normal notes + If xColumn <> niSCROLL And PromptValue <= 0 Then PromptValue = 1 + For xI1 = 1 To UBound(Notes) + If Notes(xI1).VPosition = xVPosition AndAlso Notes(xI1).ColumnIndex = xColumn Then _ + RedoRemoveNote(Notes(xI1), xUndo, xRedo) + Next - Dim n = New Note(xColumn, xVPosition, value, 0, Hidden) - RedoAddNote(n, xUndo, xRedo) + Dim n = New Note(xColumn, xVPosition, PromptValue, 0, Hidden) + RedoAddNote(n, xUndo, xRedo) - AddNote(n) - AddUndo(xUndo, xBaseRedo.Next) + AddNote(n) + AddUndo(xUndo, xBaseRedo.Next) + End If + End If End If ShouldDrawTempNote = True @@ -1091,24 +1095,26 @@ Partial Public Class MainWindow If NoteColumn = niSTOP Then xMessage = Strings.Messages.PromptEnterSTOP If NoteColumn = niSCROLL Then xMessage = Strings.Messages.PromptEnterSCROLL - Dim valstr As String = InputBox(xMessage, Me.Text) - Dim PromptValue As Long = CLng(CDbl(valstr) * 10000) - If (NoteColumn = niSCROLL And valstr = "0") Or PromptValue <> 0 Then + Dim valstrDbl As Double + If Double.TryParse(valstr, valstrDbl) Then + Dim PromptValue As Long = CLng(valstrDbl * 10000) + If (NoteColumn = niSCROLL And valstr = "0") Or PromptValue <> 0 Then - Dim xUndo As UndoRedo.LinkedURCmd = Nothing - Dim xRedo As UndoRedo.LinkedURCmd = Nothing - RedoRelabelNote(Note, PromptValue, xUndo, xRedo) - If NoteIndex = 0 Then - THBPM.Value = CDec(PromptValue / 10000) - Else - Notes(NoteIndex).Value = PromptValue + Dim xUndo As UndoRedo.LinkedURCmd = Nothing + Dim xRedo As UndoRedo.LinkedURCmd = Nothing + RedoRelabelNote(Note, PromptValue, xUndo, xRedo) + If NoteIndex = 0 Then + THBPM.Value = CDec(PromptValue / 10000) + Else + Notes(NoteIndex).Value = PromptValue + End If + AddUndo(xUndo, xRedo) End If - AddUndo(xUndo, xRedo) End If Else - 'Label prompt - Dim xStr As String = UCase(Trim(InputBox(Strings.Messages.PromptEnter, Me.Text))) + 'Label prompt + Dim xStr As String = UCase(Trim(InputBox(Strings.Messages.PromptEnter, Me.Text))) If Len(xStr) = 0 Then Return @@ -1940,8 +1946,6 @@ Partial Public Class MainWindow If xColumn = niSCROLL Then xMessage = Strings.Messages.PromptEnterSCROLL Dim valstr As String = InputBox(xMessage, Me.Text) - Dim value As Long = 0 - If Not valstr.StartsWith("-c ") Then value = CLng(CDbl(valstr) * 10000) If valstr.StartsWith("-c ") Then ' Input comment notes If valstr = "-c " Then valstr &= " " For xI1 = 1 To UBound(Notes) @@ -1956,17 +1960,24 @@ Partial Public Class MainWindow AddNote(n) AddUndo(xUndo, xBaseRedo.Next) - ElseIf (xColumn = niSCROLL And valstr = "0") Or value <> 0 Then - For xI1 = 1 To UBound(Notes) - If Notes(xI1).VPosition = xVPosition AndAlso Notes(xI1).ColumnIndex = xColumn Then _ - RedoRemoveNote(Notes(xI1), xUndo, xRedo) - Next - - Dim n = New Note(xColumn, xVPosition, value, LongNote, HiddenNote) - RedoAddNote(n, xUndo, xRedo) - AddNote(n) - - AddUndo(xUndo, xBaseRedo.Next) + Else + Dim valstrDbl As Double + If Double.TryParse(valstr, valstrDbl) Then + Dim PromptValue As Long = CLng(valstrDbl * 10000) + + If (xColumn = niSCROLL And valstr = "0") Or PromptValue <> 0 Then + For xI1 = 1 To UBound(Notes) + If Notes(xI1).VPosition = xVPosition AndAlso Notes(xI1).ColumnIndex = xColumn Then _ + RedoRemoveNote(Notes(xI1), xUndo, xRedo) + Next + + Dim n = New Note(xColumn, xVPosition, PromptValue, LongNote, HiddenNote) + RedoAddNote(n, xUndo, xRedo) + AddNote(n) + + AddUndo(xUndo, xBaseRedo.Next) + End If + End If End If Else diff --git a/iBMSC/TimeSelectionOps.vb b/iBMSC/TimeSelectionOps.vb index 3ebcc6480..69d37a544 100644 --- a/iBMSC/TimeSelectionOps.vb +++ b/iBMSC/TimeSelectionOps.vb @@ -7,7 +7,7 @@ Partial Public Class MainWindow If Not TBTimeSelect.Checked Then Exit Sub SortByVPositionInsertion() - BPMChangeByValue(CInt(TVCBPM.Text) * 10000) + BPMChangeByValue(CLng(TVCBPM.Text) * 10000) SortByVPositionInsertion() UpdatePairing() @@ -125,13 +125,13 @@ Partial Public Class MainWindow If xVLower < 0 Then xVLower = 0 If xVUpper >= GetMaxVPosition() Then xVUpper = GetMaxVPosition() - 1 - Dim xBPM As Integer = CInt(Notes(0).Value) + Dim xBPM As Long = Notes(0).Value Dim xI1 As Integer Dim xI2 As Integer Dim xI3 As Integer - Dim xValueL As Integer = xBPM - Dim xValueU As Integer = xBPM + Dim xValueL As Long = xBPM + Dim xValueU As Long = xBPM 'Save undo 'For xI3 = 1 To UBound(K) @@ -148,7 +148,7 @@ Partial Public Class MainWindow 'Below Selection For xI1 = 1 To UBound(Notes) If Notes(xI1).VPosition > xVLower Then Exit For - If Notes(xI1).ColumnIndex = niBPM Then xBPM = CInt(Notes(xI1).Value) + If Notes(xI1).ColumnIndex = niBPM Then xBPM = Notes(xI1).Value Next xValueL = xBPM xI2 = xI1 @@ -157,7 +157,7 @@ Partial Public Class MainWindow For xI1 = xI2 To UBound(Notes) If Notes(xI1).VPosition > xVUpper Then Exit For If Notes(xI1).ColumnIndex = niBPM Then - xBPM = CInt(Notes(xI1).Value) + xBPM = Notes(xI1).Value Notes(xI1).Value = CLng(Notes(xI1).Value * xRatio) End If Notes(xI1).VPosition = (Notes(xI1).VPosition - xVLower) * xRatio + xVLower @@ -183,8 +183,8 @@ Partial Public Class MainWindow If Notes(xI1).VPosition <= xVLower Then 'check BPM If Notes(xI1).ColumnIndex = niBPM Then - xValueL = CInt(Notes(xI1).Value) - xValueU = CInt(Notes(xI1).Value) + xValueL = Notes(xI1).Value + xValueU = Notes(xI1).Value If Notes(xI1).VPosition = xVLower Then xAddBPML = False : Notes(xI1).Value = CLng(IIf(Notes(xI1).Value * xRatio <= 655359999, Notes(xI1).Value * xRatio, 655359999)) End If @@ -196,7 +196,7 @@ Partial Public Class MainWindow ElseIf Notes(xI1).VPosition <= xVUpper Then 'check BPM If Notes(xI1).ColumnIndex = niBPM Then - xValueU = CInt(Notes(xI1).Value) + xValueU = Notes(xI1).Value If Notes(xI1).VPosition = xVUpper Then xAddBPMU = False Else Notes(xI1).Value = CLng(IIf(Notes(xI1).Value * xRatio <= 655359999, Notes(xI1).Value * xRatio, 655359999)) End If @@ -228,8 +228,8 @@ Partial Public Class MainWindow Dim pSelLength As Double = vSelLength Dim pSelHalf As Double = vSelHalf If vSelLength < 0 Then vSelStart += (xRatio - 1) * (xVUpper - xVLower) - vSelLength = vSelLength * xRatio - vSelHalf = vSelHalf * xRatio + vSelLength *= xRatio + vSelHalf *= xRatio ValidateSelection() Me.RedoChangeTimeSelection(pSelStart, pSelLength, pSelHalf, vSelStart, vSelLength, vSelHalf, True, xUndo, xRedo) @@ -277,14 +277,14 @@ Partial Public Class MainWindow If xVHalf > xVUpper Then xVHalf = xVUpper If xVHalf < xVLower Then xVHalf = xVLower - Dim xBPM As Integer = CInt(Notes(0).Value) + Dim xBPM As Long = Notes(0).Value Dim xI1 As Integer Dim xI2 As Integer Dim xI3 As Integer - Dim xValueL As Integer = xBPM - Dim xValueM As Integer = xBPM - Dim xValueU As Integer = xBPM + Dim xValueL As Long = xBPM + Dim xValueM As Long = xBPM + Dim xValueU As Long = xBPM Dim xRatio1 As Double = (xVHalf - xVLower + dVPosition) / (xVHalf - xVLower) Dim xRatio2 As Double = (xVUpper - xVHalf - dVPosition) / (xVUpper - xVHalf) @@ -303,7 +303,7 @@ Partial Public Class MainWindow 'Below Selection For xI1 = 1 To UBound(Notes) If Notes(xI1).VPosition > xVLower Then Exit For - If Notes(xI1).ColumnIndex = niBPM Then xBPM = CInt(Notes(xI1).Value) + If Notes(xI1).ColumnIndex = niBPM Then xBPM = Notes(xI1).Value Next xValueL = xBPM xI2 = xI1 @@ -312,7 +312,7 @@ Partial Public Class MainWindow For xI1 = xI2 To UBound(Notes) If Notes(xI1).VPosition > xVHalf Then Exit For If Notes(xI1).ColumnIndex = niBPM Then - xBPM = CInt(Notes(xI1).Value) + xBPM = Notes(xI1).Value Notes(xI1).Value = CLng(Notes(xI1).Value * xRatio1) End If Notes(xI1).VPosition = (Notes(xI1).VPosition - xVLower) * xRatio1 + xVLower @@ -324,7 +324,7 @@ Partial Public Class MainWindow For xI1 = xI2 To UBound(Notes) If Notes(xI1).VPosition > xVUpper Then Exit For If Notes(xI1).ColumnIndex = niBPM Then - xBPM = CInt(Notes(xI1).Value) + xBPM = Notes(xI1).Value Notes(xI1).Value = CLng(IIf(Notes(xI1).Value * xRatio2 <= 655359999, Notes(xI1).Value * xRatio2, 655359999)) End If Notes(xI1).VPosition = (Notes(xI1).VPosition - xVHalf) * xRatio2 + xVHalf + dVPosition @@ -356,9 +356,9 @@ Partial Public Class MainWindow If Notes(xI1).VPosition <= xVLower Then 'check BPM If Notes(xI1).ColumnIndex = niBPM Then - xValueL = CInt(Notes(xI1).Value) - xValueM = CInt(Notes(xI1).Value) - xValueU = CInt(Notes(xI1).Value) + xValueL = Notes(xI1).Value + xValueM = Notes(xI1).Value + xValueU = Notes(xI1).Value If Notes(xI1).VPosition = xVLower Then xAddBPML = False @@ -380,8 +380,8 @@ Partial Public Class MainWindow ElseIf Notes(xI1).VPosition <= xVHalf Then 'check BPM If Notes(xI1).ColumnIndex = niBPM Then - xValueM = CInt(Notes(xI1).Value) - xValueU = CInt(Notes(xI1).Value) + xValueM = Notes(xI1).Value + xValueU = Notes(xI1).Value If Notes(xI1).VPosition = xVHalf Then xAddBPMM = False ' az: cond. remove @@ -410,7 +410,7 @@ Partial Public Class MainWindow ElseIf Notes(xI1).VPosition <= xVUpper Then 'check BPM If Notes(xI1).ColumnIndex = niBPM Then - xValueU = CInt(Notes(xI1).Value) + xValueU = Notes(xI1).Value If Notes(xI1).VPosition = xVUpper Then xAddBPMU = False Else Notes(xI1).Value = CLng(IIf(Notes(xI1).Value * xRatio2 <= 655359999, Notes(xI1).Value * xRatio2, 655359999)) End If @@ -476,7 +476,7 @@ Partial Public Class MainWindow If bAddUndo Then AddUndo(xUndo, xBaseRedo.Next, bOverWriteUndo) End Sub - Private Sub BPMChangeByValue(ByVal xValue As Integer) + Private Sub BPMChangeByValue(ByVal xValue As Long) 'Dim xUndo As String = vbCrLf 'Dim xRedo As String = vbCrLf Dim xUndo As UndoRedo.LinkedURCmd = Nothing From 45b1599a5a47192b86622495f4309d5ce14333ab Mon Sep 17 00:00:00 2001 From: psyk2642 <60137590+psyk2642@users.noreply.github.com> Date: Tue, 17 May 2022 20:26:53 +0800 Subject: [PATCH 185/257] Slight Optimization for Color Override --- iBMSC/EditorPersistent.vb | 72 ++++++++++++++++++++++++--------------- iBMSC/MainWindow.vb | 14 ++++---- iBMSC/PanelDraw.vb | 72 +++++++++++---------------------------- iBMSC/PanelEvents.vb | 2 +- 4 files changed, 72 insertions(+), 88 deletions(-) diff --git a/iBMSC/EditorPersistent.vb b/iBMSC/EditorPersistent.vb index 6d42bd80b..913c18b0e 100644 --- a/iBMSC/EditorPersistent.vb +++ b/iBMSC/EditorPersistent.vb @@ -257,18 +257,18 @@ Partial Public Class MainWindow .Indentation = 4 .WriteStartElement("ColorOverride") - .WriteAttributeString("Count", UBound(COverridesFull).ToString()) + .WriteAttributeString("Count", UBound(COverrides).ToString()) - For i = 0 To UBound(COverridesFull) + For i = 0 To UBound(COverrides) .WriteStartElement("Color") .WriteAttributeString("Index", i.ToString()) - .WriteAttributeString("Name", COverridesFull(i).Name.ToString()) - .WriteAttributeString("Enabled", COverridesFull(i).Enabled.ToString()) - .WriteAttributeString("ColorOption", COverridesFull(i).ColorOption.ToString()) - .WriteAttributeString("RangeL", COverridesFull(i).RangeL.ToString()) - .WriteAttributeString("RangeU", COverridesFull(i).RangeU.ToString()) - .WriteAttributeString("NoteColor", COverridesFull(i).NoteColor.ToString()) - .WriteAttributeString("NoteColorU", COverridesFull(i).NoteColorU.ToString()) + .WriteAttributeString("Name", COverrides(i).Name.ToString()) + .WriteAttributeString("Enabled", COverrides(i).Enabled.ToString()) + .WriteAttributeString("ColorOption", COverrides(i).ColorOption.ToString()) + .WriteAttributeString("RangeL", COverrides(i).RangeL.ToString()) + .WriteAttributeString("RangeU", COverrides(i).RangeU.ToString()) + .WriteAttributeString("NoteColor", COverrides(i).NoteColor.ToString()) + .WriteAttributeString("NoteColorU", COverrides(i).NoteColorU.ToString()) .WriteEndElement() Next @@ -1526,38 +1526,56 @@ Partial Public Class MainWindow Dim Root As XmlElement = Doc.Item("ColorOverride") Dim n As Integer = CInt(Root.GetAttribute("Count")) - ReDim COverridesFull(n) + ReDim COverrides(n) Dim i As Integer For Each eColor As XmlElement In Root.ChildNodes With eColor XMLLoadAttribute(.GetAttribute("Index"), i) - XMLLoadAttribute(.GetAttribute("Name"), COverridesFull(i).Name) - XMLLoadAttribute(.GetAttribute("Enabled"), COverridesFull(i).Enabled) - XMLLoadAttribute(.GetAttribute("ColorOption"), COverridesFull(i).ColorOption) - XMLLoadAttribute(.GetAttribute("RangeL"), COverridesFull(i).RangeL) - XMLLoadAttribute(.GetAttribute("RangeU"), COverridesFull(i).RangeU) - XMLLoadAttribute(.GetAttribute("NoteColor"), COverridesFull(i).NoteColor) - XMLLoadAttribute(.GetAttribute("NoteColorU"), COverridesFull(i).NoteColorU) + XMLLoadAttribute(.GetAttribute("Name"), COverrides(i).Name) + XMLLoadAttribute(.GetAttribute("Enabled"), COverrides(i).Enabled) + XMLLoadAttribute(.GetAttribute("ColorOption"), COverrides(i).ColorOption) + XMLLoadAttribute(.GetAttribute("RangeL"), COverrides(i).RangeL) + XMLLoadAttribute(.GetAttribute("RangeU"), COverrides(i).RangeU) + XMLLoadAttribute(.GetAttribute("NoteColor"), COverrides(i).NoteColor) + XMLLoadAttribute(.GetAttribute("NoteColorU"), COverrides(i).NoteColorU) End With Next FileStream.Close() Else - ReDim COverridesFull(-1) + ReDim COverrides(-1) End If LoadColorOverrideActive() End Sub Private Sub LoadColorOverrideActive() - Dim i As Integer = -1 - If COverridesFull IsNot Nothing Then - ReDim COverridesActive(UBound(COverridesFull)) - For Each COverride In COverridesFull - If COverride.Enabled Then - i += 1 - COverridesActive(i) = COverride + For xIN = 1 To UBound(COverridesColors) + COverridesColors(xIN) = Color.Empty + For xICO = 0 To UBound(COverrides) + If Not COverrides(xICO).Enabled Then Continue For + Dim CORangeL = COverrides(xICO).RangeL + Dim CORangeU = COverrides(xICO).RangeU + Dim CONoteColor = COverrides(xICO).NoteColor + Dim CONoteColorU = COverrides(xICO).NoteColorU + If xIN >= CORangeL AndAlso xIN <= CORangeU Then + Select Case COverrides(xICO).ColorOption + Case 0 + COverridesColors(xIN) = Color.FromArgb(CONoteColor) + Exit For + Case 1 + Dim CORange = Math.Max(1, CORangeU - CORangeL) + COverridesColors(xIN) = InterpolateColorARGB(Color.FromArgb(CONoteColor), Color.FromArgb(CONoteColorU), (xIN - CORangeL) / CORange) + Exit For + Case 2 + Dim CORange = Math.Max(1, CORangeU - CORangeL) + COverridesColors(xIN) = InterpolateColorAHSL(Color.FromArgb(CONoteColor), Color.FromArgb(CONoteColorU), (xIN - CORangeL) / CORange) + Exit For + Case 3 + Dim CORange = Math.Max(1, CORangeU - CORangeL) + COverridesColors(xIN) = InterpolateColorAHSL(Color.FromArgb(CONoteColor), Color.FromArgb(CONoteColorU), (xIN - CORangeL) / CORange, , 0) + Exit For + End Select End If Next - End If - ReDim Preserve COverridesActive(i) + Next End Sub End Class diff --git a/iBMSC/MainWindow.vb b/iBMSC/MainWindow.vb index ed800e8cb..f210aa1c0 100644 --- a/iBMSC/MainWindow.vb +++ b/iBMSC/MainWindow.vb @@ -269,8 +269,8 @@ Public Class MainWindow NoteColorU = xNoteColorU End Sub End Structure - Dim COverridesFull(-1) As ColorOverride - Dim COverridesActive(-1) As ColorOverride + Dim COverrides(-1) As ColorOverride + Dim COverridesColors(1295) As Color Dim COverridesSaveOption As Integer = 1 '----Keybinding Options @@ -1190,7 +1190,7 @@ Public Class MainWindow FileNameTemplate = "" ReDim hCOM(1295) hCOMNum = 0 - COverridesFull = Nothing + COverrides = Nothing ReDim wLWAV(1295) WaveformLoaded = False @@ -3606,16 +3606,16 @@ Public Class MainWindow End Sub Private Sub TBVCOptions_Click(sender As Object, e As EventArgs) Handles mnVCOptions.Click, BWAVColorOverride.Click - Dim xDiag As New OpVisualOverride(COverridesFull, hWAV, COverridesSaveOption) + Dim xDiag As New OpVisualOverride(COverrides, hWAV, COverridesSaveOption) ' Save settings If xDiag.ShowDialog() = Windows.Forms.DialogResult.OK Then - COverridesFull = CType(xDiag.COverrides.Clone(), ColorOverride()) + COverrides = CType(xDiag.COverrides.Clone(), ColorOverride()) If COverridesSaveOption <> xDiag.CoBSave.SelectedIndex Then COverridesSaveOption = xDiag.CoBSave.SelectedIndex - If Not IsNothing(COverridesFull) Then If COverridesFull.Length > 0 Then SaveColorOverride(FileName, True) + If Not IsNothing(COverrides) Then If COverrides.Length > 0 Then SaveColorOverride(FileName, True) Else - If Not IsNothing(COverridesFull) Then If COverridesFull.Length > 0 Then SaveColorOverride(FileName, False) + If Not IsNothing(COverrides) Then If COverrides.Length > 0 Then SaveColorOverride(FileName, False) End If End If diff --git a/iBMSC/PanelDraw.vb b/iBMSC/PanelDraw.vb index 9f7a58a82..cd67ec1e0 100644 --- a/iBMSC/PanelDraw.vb +++ b/iBMSC/PanelDraw.vb @@ -340,9 +340,9 @@ Partial Public Class MainWindow If Notes(xI1).VPosition > xUpperBorder Then LastNoteToDraw = xI1 - 1 : Exit For If Not IsNoteVisible(xI1, xTHeight, xVS) Then Continue For If NTInput Then - DrawNoteNT(Notes(xI1), e1, xHS, xVS, xTHeight, COverridesActive) + DrawNoteNT(Notes(xI1), e1, xHS, xVS, xTHeight) Else - DrawNote(Notes(xI1), e1, xHS, xVS, xTHeight, COverridesActive) + DrawNote(Notes(xI1), e1, xHS, xVS, xTHeight) End If Next End Sub @@ -371,9 +371,9 @@ Partial Public Class MainWindow Private Sub DrawMouseOver(e1 As BufferedGraphics, xTHeight As Integer, xHS As Integer, xVS As Integer) If NTInput Then - If Not bAdjustLength Then DrawNoteNT(Notes(KMouseOver), e1, xHS, xVS, xTHeight, COverridesActive) + If Not bAdjustLength Then DrawNoteNT(Notes(KMouseOver), e1, xHS, xVS, xTHeight) Else - DrawNote(Notes(KMouseOver), e1, xHS, xVS, xTHeight, COverridesActive) + DrawNote(Notes(KMouseOver), e1, xHS, xVS, xTHeight) End If Dim rect = GetNoteRectangle(KMouseOver, xTHeight, xHS, xVS) @@ -598,7 +598,7 @@ Partial Public Class MainWindow ''' VS.Value. ''' Display height of the panel. (not ClipRectangle.Height) - Private Sub DrawNote(ByVal sNote As Note, ByVal e As BufferedGraphics, ByVal xHS As Integer, ByVal xVS As Integer, ByVal xHeight As Integer, Optional CO() As ColorOverride = Nothing) ', Optional ByVal CheckError As Boolean = True) ', Optional ByVal ConnectToIndex As Long = 0) + Private Sub DrawNote(ByVal sNote As Note, ByVal e As BufferedGraphics, ByVal xHS As Integer, ByVal xVS As Integer, ByVal xHeight As Integer) ', Optional ByVal CheckError As Boolean = True) ', Optional ByVal ConnectToIndex As Long = 0) If Not nEnabled(sNote.ColumnIndex) Then Exit Sub Dim xAlpha As Single = 1.0F If sNote.Hidden Then xAlpha = vo.kOpacity @@ -626,16 +626,11 @@ Partial Public Class MainWindow NoteRowToPanelHeight(sNote.VPosition, xVS, xHeight) + 10) ' Color override - GetColor(sNote, bright, dark, xAlpha, CO) + GetColor(sNote, bright, dark, xAlpha) If Not sNote.LongNote Then xPen = New Pen(GetColumn(sNote.ColumnIndex).getBright(xAlpha)) - If sNote.Landmine Then - bright = Color.Red - dark = Color.Red - End If - xBrush2 = New SolidBrush(GetColumn(sNote.ColumnIndex).cText) Else xBrush2 = New SolidBrush(GetColumn(sNote.ColumnIndex).cLText) @@ -725,7 +720,7 @@ Partial Public Class MainWindow ''' VS.Value. ''' Display height of the panel. (not ClipRectangle.Height) - Private Sub DrawNoteNT(ByVal sNote As Note, ByVal e As BufferedGraphics, ByVal xHS As Integer, ByVal xVS As Integer, ByVal xHeight As Integer, Optional CO() As ColorOverride = Nothing) ', Optional ByVal CheckError As Boolean = True) + Private Sub DrawNoteNT(ByVal sNote As Note, ByVal e As BufferedGraphics, ByVal xHS As Integer, ByVal xVS As Integer, ByVal xHeight As Integer) ', Optional ByVal CheckError As Boolean = True) If Not nEnabled(sNote.ColumnIndex) Then Exit Sub Dim xAlpha As Single = 1.0F If sNote.Hidden Then xAlpha = vo.kOpacity @@ -751,7 +746,7 @@ Partial Public Class MainWindow End If ' Get Color + Color override - GetColor(sNote, bright, dark, xAlpha, CO) + GetColor(sNote, bright, dark, xAlpha) If sNote.Length = 0 Then p1 = New Point(HorizontalPositiontoDisplay(xnLeft, xHS), @@ -759,10 +754,6 @@ Partial Public Class MainWindow p2 = New Point(HorizontalPositiontoDisplay(xnLeft + xColumnWidth, xHS), NoteRowToPanelHeight(sNote.VPosition, xVS, xHeight) + 10) - If sNote.Landmine Then - bright = Color.Red - dark = Color.Red - End If xBrush2 = New SolidBrush(GetColumn(sNote.ColumnIndex).cText) Else p1 = New Point(HorizontalPositiontoDisplay(CInt(xnLeft - 0.5 * xColumnWidth), xHS), @@ -831,43 +822,18 @@ Partial Public Class MainWindow End Sub - Private Sub GetColor(ByRef sNote As Note, ByRef Bright As Color, ByRef Dark As Color, ByVal xAlpha As Single, ByVal CO As ColorOverride()) - If Not IsNothing(CO) Then - - For i = 0 To UBound(CO) - If Not CO(i).Enabled Then Continue For - Dim CORangeL = CO(i).RangeL * 10000 - Dim CORangeU = CO(i).RangeU * 10000 - Dim CONoteColor = CO(i).NoteColor - Dim CONoteColorU = CO(i).NoteColorU - If sNote.Value >= CORangeL AndAlso sNote.Value <= CORangeU AndAlso Not sNote.Landmine Then - Select Case CO(i).ColorOption - Case 0 - Bright = Color.FromArgb(CInt(CONoteColor * xAlpha)) - Dark = Bright - Return - Case 1 - Dim CORange = Math.Max(1, CORangeU - CORangeL) - Bright = InterpolateColorARGB(Color.FromArgb(CONoteColor), Color.FromArgb(CONoteColorU), (sNote.Value - CORangeL) / CORange, xAlpha) - Dark = Bright - Return - Case 2 - Dim CORange = Math.Max(1, CORangeU - CORangeL) - Bright = InterpolateColorAHSL(Color.FromArgb(CONoteColor), Color.FromArgb(CONoteColorU), (sNote.Value - CORangeL) / CORange, xAlpha) - Dark = Bright - Return - Case 3 - Dim CORange = Math.Max(1, CORangeU - CORangeL) - Bright = InterpolateColorAHSL(Color.FromArgb(CONoteColor), Color.FromArgb(CONoteColorU), (sNote.Value - CORangeL) / CORange, xAlpha, 0) - Dark = Bright - Return - End Select - End If - - Next + Private Sub GetColor(ByRef sNote As Note, ByRef Bright As Color, ByRef Dark As Color, ByVal xAlpha As Single) + Dim xICO = CInt(sNote.Value / 10000) + If sNote.Landmine Then + Bright = Color.Red + Dark = Color.Red + ElseIf Not IsColumnNumeric(sNote.ColumnIndex) AndAlso COverridesColors(xICO) <> Color.Empty Then + Bright = COverridesColors(xICO) + Dark = Bright + Else + Bright = GetColumn(sNote.ColumnIndex).getBright(xAlpha) + Dark = GetColumn(sNote.ColumnIndex).getDark(xAlpha) End If - Bright = GetColumn(sNote.ColumnIndex).getBright(xAlpha) - Dark = GetColumn(sNote.ColumnIndex).getDark(xAlpha) End Sub Private Function InterpolateColorARGB(ColorL As Color, ColorU As Color, Ratio As Double, Optional xAlpha As Single = 1) As Color diff --git a/iBMSC/PanelEvents.vb b/iBMSC/PanelEvents.vb index 2e93ac121..138e573d5 100644 --- a/iBMSC/PanelEvents.vb +++ b/iBMSC/PanelEvents.vb @@ -1840,7 +1840,7 @@ Partial Public Class MainWindow Dim e1 As BufferedGraphics = BufferedGraphicsManager.Current.Allocate(spMain(iI).CreateGraphics, New Rectangle(xDispX, xDispY, xDispW, xDispH)) e1.Graphics.FillRectangle(vo.Bg, New Rectangle(xDispX, xDispY, xDispW, xDispH)) - If NTInput Then DrawNoteNT(Notes(foundNoteIndex), e1, xHS, xVS, xHeight, COverridesActive) Else DrawNote(Notes(foundNoteIndex), e1, xHS, xVS, xHeight, COverridesActive) + If NTInput Then DrawNoteNT(Notes(foundNoteIndex), e1, xHS, xVS, xHeight) Else DrawNote(Notes(foundNoteIndex), e1, xHS, xVS, xHeight) e1.Graphics.DrawRectangle(CType(IIf(bAdjustLength, vo.kMouseOverE, vo.kMouseOver), Pen), xDispX, xDispY, xDispW - 1, xDispH - 1) From eb6b5f38aa11f6f75969182f918a780bd4df7ecf Mon Sep 17 00:00:00 2001 From: psyk2642 <60137590+psyk2642@users.noreply.github.com> Date: Tue, 17 May 2022 20:37:24 +0800 Subject: [PATCH 186/257] Slight Optimization for Color Override Part 2 --- iBMSC/PanelDraw.vb | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/iBMSC/PanelDraw.vb b/iBMSC/PanelDraw.vb index cd67ec1e0..c65f0880c 100644 --- a/iBMSC/PanelDraw.vb +++ b/iBMSC/PanelDraw.vb @@ -828,7 +828,9 @@ Partial Public Class MainWindow Bright = Color.Red Dark = Color.Red ElseIf Not IsColumnNumeric(sNote.ColumnIndex) AndAlso COverridesColors(xICO) <> Color.Empty Then - Bright = COverridesColors(xICO) + With COverridesColors(xICO) + Bright = Color.FromArgb(Convert.ToByte(Convert.ToInt32(.A) * xAlpha), .R, .G, .B) + End With Dark = Bright Else Bright = GetColumn(sNote.ColumnIndex).getBright(xAlpha) From 2f86f6fb9cca1d0eb2f3adde9c8a45173143e71a Mon Sep 17 00:00:00 2001 From: psyk2642 <60137590+psyk2642@users.noreply.github.com> Date: Tue, 17 May 2022 22:26:59 +0800 Subject: [PATCH 187/257] SortByVPositionQuick Now Sorts by ColumnIndex Too --- iBMSC/MainWindow.vb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/iBMSC/MainWindow.vb b/iBMSC/MainWindow.vb index f210aa1c0..5f12b11b8 100644 --- a/iBMSC/MainWindow.vb +++ b/iBMSC/MainWindow.vb @@ -544,7 +544,7 @@ Public Class MainWindow If xMin >= xMax Then Exit Sub ' Pick the dividing value. - xI1 = CInt((xMax - xMin) / 2) + xMin + xI1 = CInt((xMax + xMin) / 2) xNote = Notes(xI1) ' Swap it to the front. @@ -554,7 +554,7 @@ Public Class MainWindow iHi = xMax Do ' Look down from hi for a value < med_value. - Do While Notes(iHi).VPosition >= xNote.VPosition + Do While Notes(iHi).VPosition > xNote.VPosition OrElse (Notes(iHi).VPosition = xNote.VPosition AndAlso Notes(iHi).ColumnIndex > xNote.ColumnIndex) iHi = iHi - 1 If iHi <= iLo Then Exit Do Loop From cda87c1c5e7a011c1ee21998990efc8355a80cf9 Mon Sep 17 00:00:00 2001 From: psyk2642 <60137590+psyk2642@users.noreply.github.com> Date: Tue, 17 May 2022 22:40:13 +0800 Subject: [PATCH 188/257] GetNoteLabel Code Update Background stuff --- iBMSC/PanelDraw.vb | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/iBMSC/PanelDraw.vb b/iBMSC/PanelDraw.vb index c65f0880c..5a559d43c 100644 --- a/iBMSC/PanelDraw.vb +++ b/iBMSC/PanelDraw.vb @@ -928,21 +928,22 @@ Partial Public Class MainWindow End Function Private Function GetNoteLabel(ByVal sNote As Note) As String - Dim xLabel As String = C10to36(sNote.Value \ 10000) + Dim xIC10 As Integer = CInt(sNote.Value \ 10000) ' If note is a comment note If sNote.Comment Then ' If it is an LN and it is the lower note in its LN pair, display nothing If sNote.LNPair > 0 AndAlso Notes(sNote.LNPair).VPosition > sNote.VPosition Then - xLabel = "" + GetNoteLabel = "" Else - xLabel = WordWrapConvert(hCOM(C36to10(xLabel))) + GetNoteLabel = WordWrapConvert(hCOM(xIC10)) End If ElseIf IsColumnNumeric(sNote.ColumnIndex) Then ' IIf(IsColumnNumeric(sNote.ColumnIndex) AndAlso Not sNote.Comment, sNote.Value / 10000, xLabel) - xLabel = (sNote.Value / 10000).ToString() - ElseIf ShowFileName AndAlso hWAV(C36to10(xLabel)) <> "" Then - xLabel = Path.GetFileNameWithoutExtension(hWAV(C36to10(xLabel))) + GetNoteLabel = (sNote.Value / 10000).ToString() + ElseIf ShowFileName AndAlso hWAV(xIC10) <> "" Then + GetNoteLabel = Path.GetFileNameWithoutExtension(hWAV(xIC10)) + Else + GetNoteLabel = C10to36(xIC10) End If - Return xLabel End Function Private Sub DrawPlayLines(e1 As BufferedGraphics, xTHeight As Integer, xTHWidth As Integer, xHS As Integer, xVS As Integer) From 0ef09fa51130bf3e8f397fbb8697eaeca3f37d56 Mon Sep 17 00:00:00 2001 From: psyk2642 <60137590+psyk2642@users.noreply.github.com> Date: Tue, 17 May 2022 23:30:54 +0800 Subject: [PATCH 189/257] Various Code Stuff - Added moving first note function to MoveToBGM - Fixed POBSort and added some functionalities --- iBMSC/EditorPersistent.vb | 8 +++---- iBMSC/MainWindow.vb | 36 ++++++++++++++++++---------- iBMSC/Option Windows/OpKeybinding.vb | 2 +- iBMSC/PanelEvents.vb | 28 +++++++++++++++++++++- 4 files changed, 56 insertions(+), 18 deletions(-) diff --git a/iBMSC/EditorPersistent.vb b/iBMSC/EditorPersistent.vb index 913c18b0e..36eb4bcd4 100644 --- a/iBMSC/EditorPersistent.vb +++ b/iBMSC/EditorPersistent.vb @@ -35,9 +35,9 @@ Partial Public Class MainWindow w.WriteStartElement("Option") w.WriteAttributeString("Index", I.ToString()) w.WriteAttributeString("Name", Keybindings(I).OpName) - w.WriteAttributeString("Description", Keybindings(I).Description) + ' w.WriteAttributeString("Description", Keybindings(I).Description) w.WriteAttributeString("Combos", Join(Keybindings(I).Combo, ", ")) - w.WriteAttributeString("Category", Keybindings(I).Category.ToString()) + ' w.WriteAttributeString("Category", Keybindings(I).Category.ToString()) w.WriteEndElement() End Sub @@ -350,9 +350,9 @@ Partial Public Class MainWindow For xI = 0 To UBound(Keybindings) If Keybindings(xI).OpName = n.GetAttribute("Name") Then XMLLoadAttribute(n.GetAttribute("Name"), Keybindings(xI).OpName) - XMLLoadAttribute(n.GetAttribute("Description"), Keybindings(xI).Description) + ' XMLLoadAttribute(n.GetAttribute("Description"), Keybindings(xI).Description) Keybindings(xI).Combo = Split(n.GetAttribute("Combos"), ", ") - XMLLoadAttribute(n.GetAttribute("Category"), Keybindings(xI).Category) + ' XMLLoadAttribute(n.GetAttribute("Category"), Keybindings(xI).Category) RenameShortcuts(Keybindings(xI)) Exit Sub diff --git a/iBMSC/MainWindow.vb b/iBMSC/MainWindow.vb index 5f12b11b8..9d0ebe20f 100644 --- a/iBMSC/MainWindow.vb +++ b/iBMSC/MainWindow.vb @@ -291,9 +291,10 @@ Public Class MainWindow Public KbCategorySP As Integer = 1 Public KbCategoryPMS As Integer = 2 Public KbCategoryDP As Integer = 3 + Public KbCategoryBGM As Integer = 4 Public KbCategoryAllMod As Integer = 10 ' AllMod meaning all modifiers included Public KbCategoryHidden As Integer = 0 - Public KbCategory() As Integer = {KbCategoryPMS, KbCategoryDP, KbCategorySP, KbCategoryAllMod, KbCategoryHidden, -1} ' Order matters + Public KbCategory() As Integer = {KbCategoryPMS, KbCategoryDP, KbCategorySP, KbCategoryBGM, KbCategoryAllMod, KbCategoryHidden, -1} ' Order matters Public KeybindingsInit() As Keybinding = { ' SP Note Assignments New Keybinding("Move to A2", "Move note to 1P Lane 1", {"D1", "NumPad1"}, KbCategorySP), New Keybinding("Move to A3", "Move note to 1P Lane 2", {"D2", "NumPad2"}, KbCategorySP), @@ -323,7 +324,7 @@ Public Class MainWindow New Keybinding("Move to P8", "Move note to PMS Lane 8", {"D8", "NumPad8"}, KbCategoryPMS), New Keybinding("Move to P9", "Move note to PMS Lane 9", {"D9", "NumPad9"}, KbCategoryPMS), _ ' Miscellaneous BMS - New Keybinding("Move to BGM", "Move note to BGM Lane", {"D0", "NumPad0"}), + New Keybinding("Move to BGM", "Move note to BGM Lane", {"D0", "NumPad0"}, KbCategoryBGM), New Keybinding("Move to Template Position", "Move note to Template Position if available", {"P"}), New Keybinding("Disable Vertical Moves", "Disable vertical moves", {"D"}), New Keybinding("Snap to Grid", "Snap to grid", {"G"}), @@ -356,6 +357,7 @@ Public Class MainWindow New Keybinding("End", "*HIDDEN*", {"End"}, KbCategoryAllMod), New Keybinding("PageUp", "*HIDDEN*", {"PageUp"}, KbCategoryAllMod), New Keybinding("PageDown", "*HIDDEN*", {"PageDown"}, KbCategoryAllMod), + New Keybinding("Next", "*HIDDEN*", {"Next"}, KbCategoryAllMod), ' ??? New Keybinding("TabBetweenFiles", "*HIDDEN*", {"Tab"}, KbCategoryAllMod), New Keybinding("TabBetweenNotes", "*HIDDEN*", {"Capital"}, KbCategoryAllMod), New Keybinding("Decrease Division", "*HIDDEN*", {"Oemcomma"}, KbCategoryAllMod), @@ -4770,6 +4772,7 @@ Public Class MainWindow ' Array 1: Unmodified array Dim xniArray1() As Integer = gXKeyCol + Dim niBMax As Integer = niB Dim xniArrayLen = xniArray1.Length @@ -4783,25 +4786,33 @@ Public Class MainWindow Dim xI1Arr(-1) As Integer ' Find the first index of selected notes Do While xI1 <= UBound(Notes) - If Not Notes(xI1).Selected Or Notes(xI1).Ghost Or Notes(xI1).ColumnIndex < xniArray1(0) Or Notes(xI1).ColumnIndex > xniArray1(UBound(xniArray1)) Then xI1 += 1 : Continue Do - ' Begin building array until vPosition changes + If Not Notes(xI1).Selected OrElse Notes(xI1).Ghost OrElse Not IsColumnSound(Notes(xI1).ColumnIndex) Then xI1 += 1 : Continue Do + ' Begin building array until vPosition changes too much vPos = Notes(xI1).VPosition Do While xI1 <= UBound(Notes) AndAlso Math.Abs(GetTimeFromVPosition(Notes(xI1).VPosition) - GetTimeFromVPosition(vPos)) <= ErrorJackSpeed - If Not Notes(xI1).Selected Or Notes(xI1).Ghost Or Notes(xI1).ColumnIndex < xniArray1(0) Or Notes(xI1).ColumnIndex > xniArray1(UBound(xniArray1)) Then xI1 += 1 : Continue Do + If Not Notes(xI1).Selected OrElse Notes(xI1).Ghost OrElse Not IsColumnSound(Notes(xI1).ColumnIndex) Then xI1 += 1 : Continue Do ReDim Preserve xI1Arr(xI1Arr.Length) xI1Arr(UBound(xI1Arr)) = xI1 xI1 += 1 Loop + ' Extend xniArray1 if need be + If xI1Arr.Length > xniArray1.Length Then + Dim xUB0 As Integer = UBound(xniArray1) + ReDim Preserve xniArray1(UBound(xI1Arr)) + For i = xUB0 + 1 To UBound(xniArray1) + xniArray1(i) = niBMax + niBMax += 1 + Next + End If + ' Sort columns, insertion sort For xI2 = 1 To UBound(xI1Arr) For xI3 = xI2 To 1 Step -1 - If Notes(xI1Arr(xI2 - 1)).Value > Notes(xI1Arr(xI2)).Value Then - xITemp = xI1Arr(xI2 - 1) - xI1Arr(xI2 - 1) = xI1Arr(xI2) - xI1Arr(xI2) = xITemp - Else - Exit For + If Notes(xI1Arr(xI3 - 1)).Value > Notes(xI1Arr(xI3)).Value Then + xITemp = xI1Arr(xI3 - 1) + xI1Arr(xI3 - 1) = xI1Arr(xI3) + xI1Arr(xI3) = xITemp End If Next Next @@ -4809,13 +4820,14 @@ Public Class MainWindow ' Move notes For xI2 = 0 To UBound(xI1Arr) Dim xI2I = xI1Arr(xI2) - Me.RedoMoveNote(Notes(xI2I), xniArray1(xI2), Notes(xI2I).VPosition, xUndo, xRedo) + RedoMoveNote(Notes(xI2I), xniArray1(xI2), Notes(xI2I).VPosition, xUndo, xRedo) Notes(xI2I).ColumnIndex = xniArray1(xI2) Next ReDim xI1Arr(-1) Loop AddUndo(xUndo, xBaseRedo.Next) + SortByVPositionQuick(0, UBound(Notes)) UpdatePairing() RefreshPanelAll() End Sub diff --git a/iBMSC/Option Windows/OpKeybinding.vb b/iBMSC/Option Windows/OpKeybinding.vb index 813aef16b..9f8b6815f 100644 --- a/iBMSC/Option Windows/OpKeybinding.vb +++ b/iBMSC/Option Windows/OpKeybinding.vb @@ -161,7 +161,7 @@ Public Class OpKeybinding ' Check for category restrictions Select Case Keybinds(LVKeybinding.FocusedItem.Index).Category ' If note assignment option, check if there is shift - Case MainWindow.KbCategorySP, MainWindow.KbCategoryDP, MainWindow.KbCategoryPMS + Case MainWindow.KbCategorySP, MainWindow.KbCategoryDP, MainWindow.KbCategoryPMS, MainWindow.KbCategoryBGM If keyComboEvent.Contains("Shift") Then keyComboOK = False MsgBox("Error: Shift cannot be used for note assignment keybindings.") diff --git a/iBMSC/PanelEvents.vb b/iBMSC/PanelEvents.vb index 138e573d5..a529e6251 100644 --- a/iBMSC/PanelEvents.vb +++ b/iBMSC/PanelEvents.vb @@ -75,7 +75,7 @@ Partial Public Class MainWindow For Each keybind In keybindOptions Dim keyComboString = Join(keyComboEvent, "+") ' Category SP/PMS/DP: Account for per-note assignment using shift - If P = KbCategorySP Or P = KbCategoryPMS Or P = KbCategoryDP Then keyComboString = keyComboString.Replace("Shift+", "") + If P = KbCategorySP OrElse P = KbCategoryPMS OrElse P = KbCategoryDP OrElse P = KbCategoryBGM Then keyComboString = keyComboString.Replace("Shift+", "") ' Category AllMod: Ignore modifiers If P = KbCategoryAllMod Then keyComboString = e.KeyCode.ToString() @@ -346,6 +346,10 @@ Partial Public Class MainWindow If PanelFocus = 0 Then LeftPanelScroll.Value = CInt(IIf(LeftPanelScroll.Value + gPgUpDn < 0, LeftPanelScroll.Value + gPgUpDn, 0)) If PanelFocus = 1 Then MainPanelScroll.Value = CInt(IIf(MainPanelScroll.Value + gPgUpDn < 0, MainPanelScroll.Value + gPgUpDn, 0)) If PanelFocus = 2 Then RightPanelScroll.Value = CInt(IIf(RightPanelScroll.Value + gPgUpDn < 0, RightPanelScroll.Value + gPgUpDn, 0)) + Case "Next" ' Same as PageDown + If PanelFocus = 0 Then LeftPanelScroll.Value = CInt(IIf(LeftPanelScroll.Value + gPgUpDn < 0, LeftPanelScroll.Value + gPgUpDn, 0)) + If PanelFocus = 1 Then MainPanelScroll.Value = CInt(IIf(MainPanelScroll.Value + gPgUpDn < 0, MainPanelScroll.Value + gPgUpDn, 0)) + If PanelFocus = 2 Then RightPanelScroll.Value = CInt(IIf(RightPanelScroll.Value + gPgUpDn < 0, RightPanelScroll.Value + gPgUpDn, 0)) Case "TabBetweenFiles" If e.Control AndAlso Not e.Shift Then @@ -474,6 +478,8 @@ Partial Public Class MainWindow Private Sub MoveToBGM(xUndo As UndoRedo.LinkedURCmd, xRedo As UndoRedo.LinkedURCmd) Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo + Dim bMoveAndDeselectFirstNote = My.Computer.Keyboard.ShiftKeyDown + For xI2 As Integer = 1 To UBound(Notes) If Not Notes(xI2).Selected Then Continue For @@ -499,8 +505,28 @@ Partial Public Class MainWindow Me.RedoMoveNote(Notes(xI2), currentBGMColumn, .VPosition, xUndo, xRedo) .ColumnIndex = currentBGMColumn + + If bMoveAndDeselectFirstNote Then + Notes(xI2).Selected = False + PanelPreviewNoteIndex(xI2) + + ' az: Add selected notes to undo + ' to preserve selection status + ' this works because the note find + ' does not account for selection status + ' when checking equality! (equalsBMSE, equalsNT) + For xI3 As Integer = 1 To UBound(Notes) + If xI3 = xI2 Then Continue For + If Notes(xI3).Selected Then + RedoMoveNote(Notes(xI3), Notes(xI3).ColumnIndex, Notes(xI3).VPosition, xUndo, xRedo) + End If + Next + + Exit For + End If End With Next + AddUndo(xUndo, xBaseRedo.Next) UpdatePairing() CalculateTotalPlayableNotes() From f93f72ab65632529033d999f0f319b9be7a66570 Mon Sep 17 00:00:00 2001 From: psyk2642 <60137590+psyk2642@users.noreply.github.com> Date: Wed, 18 May 2022 06:39:12 +0800 Subject: [PATCH 190/257] Update MainWindow.designer.vb --- iBMSC/MainWindow.designer.vb | 66 ++++++++++++++++++------------------ 1 file changed, 33 insertions(+), 33 deletions(-) diff --git a/iBMSC/MainWindow.designer.vb b/iBMSC/MainWindow.designer.vb index 1e444f9f7..413602713 100644 --- a/iBMSC/MainWindow.designer.vb +++ b/iBMSC/MainWindow.designer.vb @@ -25,16 +25,16 @@ Partial Class MainWindow Me.TBLangDef = New System.Windows.Forms.ToolStripMenuItem() Me.TBLangRefresh = New System.Windows.Forms.ToolStripMenuItem() Me.ToolStripSeparator9 = New System.Windows.Forms.ToolStripSeparator() - Me.TBLanguage = New System.Windows.Forms.ToolStripDropDownButton() Me.mnLanguage = New System.Windows.Forms.ToolStripMenuItem() + Me.TBLanguage = New System.Windows.Forms.ToolStripDropDownButton() Me.cmnTheme = New System.Windows.Forms.ContextMenuStrip(Me.components) Me.TBThemeDef = New System.Windows.Forms.ToolStripMenuItem() Me.TBThemeSave = New System.Windows.Forms.ToolStripMenuItem() Me.TBThemeRefresh = New System.Windows.Forms.ToolStripMenuItem() Me.TBThemeLoadComptability = New System.Windows.Forms.ToolStripMenuItem() Me.ToolStripSeparator6 = New System.Windows.Forms.ToolStripSeparator() - Me.TBTheme = New System.Windows.Forms.ToolStripDropDownButton() Me.mnTheme = New System.Windows.Forms.ToolStripMenuItem() + Me.TBTheme = New System.Windows.Forms.ToolStripDropDownButton() Me.Timer1 = New System.Windows.Forms.Timer(Me.components) Me.Menu1 = New System.Windows.Forms.ContextMenuStrip(Me.components) Me.MInsert = New System.Windows.Forms.ToolStripMenuItem() @@ -136,7 +136,6 @@ Partial Class MainWindow Me.POBSRandom = New System.Windows.Forms.ToolStripMenuItem() Me.POBHRandom = New System.Windows.Forms.ToolStripMenuItem() Me.POBSort = New System.Windows.Forms.ToolStripMenuItem() - Me.POConvert = New System.Windows.Forms.ToolStripDropDownButton() Me.mnPreview = New System.Windows.Forms.ToolStripMenuItem() Me.mnPlayB = New System.Windows.Forms.ToolStripMenuItem() Me.mnPlay = New System.Windows.Forms.ToolStripMenuItem() @@ -145,6 +144,7 @@ Partial Class MainWindow Me.mnTechnicalErrorCheck = New System.Windows.Forms.ToolStripMenuItem() Me.mnTOTAL = New System.Windows.Forms.ToolStripMenuItem() Me.ToolStripSeparator13 = New System.Windows.Forms.ToolStripSeparator() + Me.POConvert = New System.Windows.Forms.ToolStripDropDownButton() Me.TBMain = New System.Windows.Forms.ToolStrip() Me.TBNew = New System.Windows.Forms.ToolStripButton() Me.TBOpen = New System.Windows.Forms.ToolStripSplitButton() @@ -482,7 +482,7 @@ Partial Class MainWindow ' Me.cmnLanguage.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.TBLangDef, Me.TBLangRefresh, Me.ToolStripSeparator9}) Me.cmnLanguage.Name = "cmnLanguage" - Me.cmnLanguage.OwnerItem = Me.mnLanguage + Me.cmnLanguage.OwnerItem = Me.TBLanguage Me.cmnLanguage.Size = New System.Drawing.Size(121, 54) ' 'TBLangDef @@ -503,6 +503,14 @@ Partial Class MainWindow Me.ToolStripSeparator9.Name = "ToolStripSeparator9" Me.ToolStripSeparator9.Size = New System.Drawing.Size(117, 6) ' + 'mnLanguage + ' + Me.mnLanguage.DropDown = Me.cmnLanguage + Me.mnLanguage.Image = Global.iBMSC.My.Resources.Resources.x16Language + Me.mnLanguage.Name = "mnLanguage" + Me.mnLanguage.Size = New System.Drawing.Size(253, 22) + Me.mnLanguage.Text = "&Language" + ' 'TBLanguage ' Me.TBLanguage.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image @@ -513,19 +521,11 @@ Partial Class MainWindow Me.TBLanguage.Size = New System.Drawing.Size(29, 22) Me.TBLanguage.Text = "Language" ' - 'mnLanguage - ' - Me.mnLanguage.DropDown = Me.cmnLanguage - Me.mnLanguage.Image = Global.iBMSC.My.Resources.Resources.x16Language - Me.mnLanguage.Name = "mnLanguage" - Me.mnLanguage.Size = New System.Drawing.Size(253, 22) - Me.mnLanguage.Text = "&Language" - ' 'cmnTheme ' Me.cmnTheme.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.TBThemeDef, Me.TBThemeSave, Me.TBThemeRefresh, Me.TBThemeLoadComptability, Me.ToolStripSeparator6}) Me.cmnTheme.Name = "cmnLanguage" - Me.cmnTheme.OwnerItem = Me.mnTheme + Me.cmnTheme.OwnerItem = Me.TBTheme Me.cmnTheme.Size = New System.Drawing.Size(246, 98) ' 'TBThemeDef @@ -559,6 +559,14 @@ Partial Class MainWindow Me.ToolStripSeparator6.Name = "ToolStripSeparator6" Me.ToolStripSeparator6.Size = New System.Drawing.Size(242, 6) ' + 'mnTheme + ' + Me.mnTheme.DropDown = Me.cmnTheme + Me.mnTheme.Image = Global.iBMSC.My.Resources.Resources.x16Theme + Me.mnTheme.Name = "mnTheme" + Me.mnTheme.Size = New System.Drawing.Size(253, 22) + Me.mnTheme.Text = "&Theme" + ' 'TBTheme ' Me.TBTheme.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image @@ -569,14 +577,6 @@ Partial Class MainWindow Me.TBTheme.Size = New System.Drawing.Size(29, 22) Me.TBTheme.Text = "Theme" ' - 'mnTheme - ' - Me.mnTheme.DropDown = Me.cmnTheme - Me.mnTheme.Image = Global.iBMSC.My.Resources.Resources.x16Theme - Me.mnTheme.Name = "mnTheme" - Me.mnTheme.Size = New System.Drawing.Size(253, 22) - Me.mnTheme.Text = "&Theme" - ' 'Timer1 ' Me.Timer1.Interval = 15 @@ -1208,7 +1208,7 @@ Partial Class MainWindow ' Me.cmnConversion.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.POBLong, Me.POBShort, Me.POBLongShort, Me.POBLongObjNT, Me.POBLongNTObj, Me.ToolStripSeparator25, Me.POBAutoLongVPosition, Me.POBAutoLongColumn, Me.ToolStripSeparator10, Me.POBHidden, Me.POBVisible, Me.POBHiddenVisible, Me.ToolStripSeparator11, Me.POBModify, Me.POBMirror, Me.POBFlip, Me.POBRandom, Me.POBRRandom, Me.POBSRandom, Me.POBHRandom, Me.POBSort}) Me.cmnConversion.Name = "cmnLanguage" - Me.cmnConversion.OwnerItem = Me.mnConversion + Me.cmnConversion.OwnerItem = Me.POConvert Me.cmnConversion.Size = New System.Drawing.Size(237, 418) ' 'POBLong @@ -1355,16 +1355,6 @@ Partial Class MainWindow Me.POBSort.Size = New System.Drawing.Size(236, 22) Me.POBSort.Text = "S&ort" ' - 'POConvert - ' - Me.POConvert.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image - Me.POConvert.DropDown = Me.cmnConversion - Me.POConvert.Image = Global.iBMSC.My.Resources.Resources.ConvertNotes - Me.POConvert.ImageTransparentColor = System.Drawing.Color.Magenta - Me.POConvert.Name = "POConvert" - Me.POConvert.Size = New System.Drawing.Size(29, 22) - Me.POConvert.Text = "Convert Notes" - ' 'mnPreview ' Me.mnPreview.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.mnPlayB, Me.mnPlay, Me.mnStop}) @@ -1422,6 +1412,16 @@ Partial Class MainWindow Me.ToolStripSeparator13.Name = "ToolStripSeparator13" Me.ToolStripSeparator13.Size = New System.Drawing.Size(247, 6) ' + 'POConvert + ' + Me.POConvert.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image + Me.POConvert.DropDown = Me.cmnConversion + Me.POConvert.Image = Global.iBMSC.My.Resources.Resources.ConvertNotes + Me.POConvert.ImageTransparentColor = System.Drawing.Color.Magenta + Me.POConvert.Name = "POConvert" + Me.POConvert.Size = New System.Drawing.Size(29, 22) + Me.POConvert.Text = "Convert Notes" + ' 'TBMain ' Me.TBMain.AccessibleRole = System.Windows.Forms.AccessibleRole.ToolBar @@ -2337,7 +2337,7 @@ Partial Class MainWindow ' Me.TBTab.BackColor = System.Drawing.SystemColors.Control Me.TBTab.Dock = System.Windows.Forms.DockStyle.None - Me.TBTab.Location = New System.Drawing.Point(5, 48) + Me.TBTab.Location = New System.Drawing.Point(3, 48) Me.TBTab.Name = "TBTab" Me.TBTab.Size = New System.Drawing.Size(43, 25) Me.TBTab.TabIndex = 65 From c61cb54855e638dc611ba6a72fa825a833f7c00f Mon Sep 17 00:00:00 2001 From: psyk2642 <60137590+psyk2642@users.noreply.github.com> Date: Wed, 18 May 2022 21:15:39 +0800 Subject: [PATCH 191/257] Added Tab Colors via Right Clicking (somewhat) Color does not show when highlighted. --- iBMSC/EditorPersistent.vb | 3 +++ iBMSC/FileTab.vb | 25 +++++++++++++++++++++++-- 2 files changed, 26 insertions(+), 2 deletions(-) diff --git a/iBMSC/EditorPersistent.vb b/iBMSC/EditorPersistent.vb index 36eb4bcd4..4a9ab454c 100644 --- a/iBMSC/EditorPersistent.vb +++ b/iBMSC/EditorPersistent.vb @@ -45,6 +45,7 @@ Partial Public Class MainWindow w.WriteStartElement("File") w.WriteAttributeString("Index", I.ToString()) w.WriteAttributeString("File", BMSFileList(I)) + w.WriteAttributeString("Color", BMSFileColor(I).ToArgb.ToString()) w.WriteEndElement() End Sub @@ -364,6 +365,7 @@ Partial Public Class MainWindow Dim i As Integer XMLLoadAttribute(n.GetAttribute("Index"), i) XMLLoadAttribute(n.GetAttribute("File"), BMSFileList(i)) + XMLLoadAttribute(n.GetAttribute("Color"), BMSFileColor(i)) End Sub Private Sub XMLLoadPlayer(ByVal n As XmlElement) @@ -447,6 +449,7 @@ Partial Public Class MainWindow XMLLoadAttribute(.GetAttribute("Count"), iL) XMLLoadAttribute(.GetAttribute("BMSFileIndex"), BMSFileIndex) ReDim Preserve BMSFileList(iL) + ReDim Preserve BMSFileColor(iL) For Each eeFile As XmlElement In .ChildNodes XMLLoadOpenedFiles(eeFile) diff --git a/iBMSC/FileTab.vb b/iBMSC/FileTab.vb index c24ba8d59..21cb5e716 100644 --- a/iBMSC/FileTab.vb +++ b/iBMSC/FileTab.vb @@ -18,6 +18,7 @@ Partial Public Class MainWindow Dim BMSFileStructs As BMSStruct() Dim BMSFileIndex As Integer = 0 Dim BMSFileList(-1) As String + Dim BMSFileColor(-1) As Color Dim BMSFileTSBList As ToolStripButton() Structure BMSStruct @@ -118,10 +119,11 @@ Partial Public Class MainWindow Private Sub TBTab_MouseDown(sender As Object, e As MouseEventArgs) Dim xITemp = BMSFileIndex - Dim xExit As Boolean = False + Dim xTSB = CType(sender, ToolStripButton) + Dim xIClicked = Array.IndexOf(BMSFileTSBList, xTSB) If e.Button = MouseButtons.Middle Then - Dim xIClicked = Array.IndexOf(BMSFileTSBList, CType(sender, ToolStripButton)) + Dim xExit As Boolean If xIClicked < BMSFileIndex Then If Not BMSStructIsSaved(xIClicked) Then TBTab_Click(BMSFileTSBList(xIClicked), New EventArgs) @@ -148,6 +150,12 @@ Partial Public Class MainWindow RemoveBMSFile(xIClicked) End If + ElseIf e.Button = MouseButtons.Right Then + Dim xColorPicker As New ColorPicker + xColorPicker.SetOrigColor(xTSB.BackColor) + If xColorPicker.ShowDialog(Me) = Windows.Forms.DialogResult.Cancel Then Exit Sub + ColorTSBChange(xTSB, xColorPicker.NewColor) + BMSFileColor(xIClicked) = xColorPicker.NewColor End If End Sub @@ -221,12 +229,23 @@ Partial Public Class MainWindow End If End Sub + Private Sub ColorTSBChange(ByVal xTSB As ToolStripButton, ByVal c As Color) ' Copied from OpPlayer + xTSB.BackColor = c + xTSB.ForeColor = CType(IIf(CInt(c.GetBrightness * 255) + 255 - c.A >= 128, Color.Black, Color.White), Color) + End Sub + Private Function NewBMSTab(xPath As String) As ToolStripButton Dim xTSB As New ToolStripButton With xTSB .Image = My.Resources.x16Blank .Name = GetFileName(xPath) .Text = GetFileName(xPath) + For i = 0 To UBound(BMSFileColor) + If BMSFileList(i) = xPath Then + .BackColor = BMSFileColor(i) + .ForeColor = CType(IIf(CInt(.BackColor.GetBrightness * 255) + 255 - .BackColor.A >= 128, Color.Black, Color.White), Color) + End If + Next End With AddHandler xTSB.Click, AddressOf TBTab_Click AddHandler xTSB.MouseDown, AddressOf TBTab_MouseDown @@ -238,9 +257,11 @@ Partial Public Class MainWindow Private Sub RemoveBMSFile(xI As Integer) For i = xI To UBound(BMSFileList) - 1 BMSFileList(i) = BMSFileList(i + 1) + BMSFileColor(i) = BMSFileColor(i + 1) BMSFileTSBList(i) = BMSFileTSBList(i + 1) Next ReDim Preserve BMSFileList(UBound(BMSFileList) - 1) + ReDim Preserve BMSFileColor(UBound(BMSFileColor) - 1) ReDim Preserve BMSFileTSBList(UBound(BMSFileTSBList) - 1) TBTab.Items.RemoveAt(xI) RemoveBMSStruct(xI) From 8f6629db7918f58740f5522623fd807c08672864 Mon Sep 17 00:00:00 2001 From: psyk2642 <60137590+psyk2642@users.noreply.github.com> Date: Thu, 19 May 2022 19:15:25 +0800 Subject: [PATCH 192/257] Code Update --- iBMSC/FileTab.vb | 2 +- iBMSC/MainWindow.vb | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/iBMSC/FileTab.vb b/iBMSC/FileTab.vb index 21cb5e716..b7cbd5cb1 100644 --- a/iBMSC/FileTab.vb +++ b/iBMSC/FileTab.vb @@ -142,7 +142,6 @@ Partial Public Class MainWindow If Not BMSStructIsSaved(xIClicked) Then TBTab_Click(BMSFileTSBList(xIClicked), New EventArgs) ' If ClosingPopSave() Then Exit Sub - ClosingPopSave() xExit = ClosingPopSave() TBTab_Click(BMSFileTSBList(xITemp), New EventArgs) If xExit Then Exit Sub @@ -150,6 +149,7 @@ Partial Public Class MainWindow RemoveBMSFile(xIClicked) End If + ElseIf e.Button = MouseButtons.Right Then Dim xColorPicker As New ColorPicker xColorPicker.SetOrigColor(xTSB.BackColor) diff --git a/iBMSC/MainWindow.vb b/iBMSC/MainWindow.vb index 9d0ebe20f..7efe4a711 100644 --- a/iBMSC/MainWindow.vb +++ b/iBMSC/MainWindow.vb @@ -1125,7 +1125,7 @@ Public Class MainWindow End If Next - If Not e.Cancel Then + If Not e.Cancel AndAlso Not xRandomFile Then 'If SaveTheme Then ' My.Computer.FileSystem.WriteAllText(My.Application.Info.DirectoryPath & "\Skin.cff", SaveSkinCFF, False, System.Text.Encoding.Unicode) 'Else From 81dd38629c0b556b13ff9d1f9b34db318eaebbed Mon Sep 17 00:00:00 2001 From: psyk2642 <60137590+psyk2642@users.noreply.github.com> Date: Fri, 20 May 2022 23:15:15 +0800 Subject: [PATCH 193/257] Added #BMP List - Added #BMP List. - Added Ctrl+Shift+Scroll to switch between selected items. --- iBMSC/ChartIO.vb | 66 ++++++-- iBMSC/Column.vb | 4 +- iBMSC/EditorColumns.vb | 61 +++---- iBMSC/EditorPersistent.vb | 25 +++ iBMSC/EditorUndoRedo.vb | 4 +- iBMSC/FileTab.vb | 15 +- iBMSC/MainWindow.designer.vb | 304 ++++++++++++++++++++++++++++++++--- iBMSC/MainWindow.resx | 3 + iBMSC/MainWindow.vb | 298 +++++++++++++++++++++++++++++++++- iBMSC/PanelDraw.vb | 33 +++- iBMSC/PanelEvents.vb | 102 ++++++++++-- iBMSC/Strings.vb | 2 +- misc/Data/eng.Lang.xml | Bin 34202 -> 34616 bytes 13 files changed, 817 insertions(+), 100 deletions(-) diff --git a/iBMSC/ChartIO.vb b/iBMSC/ChartIO.vb index face9a7c8..74a630b21 100644 --- a/iBMSC/ChartIO.vb +++ b/iBMSC/ChartIO.vb @@ -27,6 +27,7 @@ Partial Public Class MainWindow ReDim NotesTemplate(0) ReDim mColumn(999) ReDim hWAV(1295) + ReDim hBMP(1295) ReDim hBPM(1295) 'x10000 ReDim hSTOP(1295) ReDim hBMSCROLL(1295) @@ -75,6 +76,10 @@ Partial Public Class MainWindow hWAV(C36to10(Mid(sLineTrim, Len("#WAV") + 1, 2))) = Mid(sLineTrim, Len("#WAV") + 4) Continue For + ElseIf SWIC(sLineTrim, "#BMP") Then + hBMP(C36to10(Mid(sLineTrim, Len("#BMP") + 1, 2))) = Mid(sLineTrim, Len("#BMP") + 4) + Continue For + ElseIf SWIC(sLineTrim, "#BPM") And Not Mid(sLineTrim, Len("#BPM") + 1, 1).Trim = "" Then 'If BPM## ' zdr: No limits on BPM editing.. they don't make much sense. hBPM(C36to10(Mid(sLineTrim, Len("#BPM") + 1, 2))) = CLng(CDbl(Mid(sLineTrim, Len("#BPM") + 4)) * 10000) @@ -263,13 +268,12 @@ Partial Public Class MainWindow Else If NTInput Then ConvertBMSE2NT() - LWAV.Visible = False - LWAVRefresh() ' Add waveforms to wLWAV If ShowWaveform Then WaveformLoadId = 1 : TimerLoadWaveform.Enabled = True + LWAVRefresh() LWAV.SelectedIndex = 0 - LWAV.Visible = True - If ShowWaveform Then WaveformLoaded = True + LBMPRefresh() + LBMP.SelectedIndex = 0 TExpansion.Text = xExpansion End If @@ -309,6 +313,7 @@ Partial Public Class MainWindow Dim Notes(0) As Note Dim mColumn(999) As Integer Dim hWAV(1295) As String + Dim hBMP(1295) As String Dim hBPM(1295) As Long 'x10000 Dim hSTOP(1295) As Long Dim hBMSCROLL(1295) As Long @@ -669,6 +674,10 @@ Partial Public Class MainWindow If Not hWAV(i) = "" Then xStrHeader &= "#WAV" & C10to36(i) & " " & hWAV(i) & vbCrLf Next + For i = 1 To UBound(hBMP) + If Not hBMP(i) = "" Then xStrHeader &= "#BMP" & C10to36(i) & + " " & hBMP(i) & vbCrLf + Next For i = 1 To UBound(hBPM) xStrHeader &= "#BPM" & IIf(BPMx1296, C10to36(i), Mid("0" & Hex(i), Len(Hex(i)))).ToString() & @@ -1031,10 +1040,10 @@ Partial Public Class MainWindow If NTInput Then ConvertBMSE2NT() - LWAV.Visible = False LWAVRefresh() LWAV.SelectedIndex = 0 - LWAV.Visible = True + LBMPRefresh() + LBMP.SelectedIndex = 0 THBPM.Value = CDec(Notes(0).Value / 10000) SortByVPositionQuick(0, UBound(Notes)) @@ -1062,6 +1071,7 @@ Partial Public Class MainWindow ReDim Notes(0) ReDim mColumn(999) ReDim hWAV(1295) + ReDim hBMP(1295) Me.InitializeNewBMS() Me.InitializeOpenBMS() @@ -1169,6 +1179,21 @@ Partial Public Class MainWindow hWAV(xI) = br.ReadString Next + Case &H504D42 'BMP List + Dim xBMPOptions As Integer = br.ReadByte + BMPMultiSelect = CBool(xBMPOptions And &H1) + CBMPMultiSelect.Checked = BMPMultiSelect + CBMPMultiSelect_CheckedChanged(CBMPMultiSelect, New EventArgs) + BMPChangeLabel = CBool(xBMPOptions And &H2) + CBMPChangeLabel.Checked = BMPChangeLabel + CBMPChangeLabel_CheckedChanged(CBMPChangeLabel, New EventArgs) + + Dim xBMPCount As Integer = br.ReadInt32 + For xxi As Integer = 1 To xBMPCount + Dim xI As Integer = br.ReadInt16 + hBMP(xI) = br.ReadString + Next + Case &H74616542 'Beat nBeatN.Value = br.ReadInt16 nBeatD.Value = br.ReadInt16 @@ -1237,11 +1262,11 @@ Partial Public Class MainWindow mnUndo.Enabled = sUndo(sI).ofType <> UndoRedo.opNoOperation mnRedo.Enabled = sRedo(sIA).ofType <> UndoRedo.opNoOperation - LBeatRefresh() - LWAV.Visible = False LWAVRefresh() LWAV.SelectedIndex = 0 - LWAV.Visible = True + LBMPRefresh() + LBMP.SelectedIndex = 0 + LBeatRefresh() THBPM.Value = CDec(Notes(0).Value / 10000) SortByVPositionQuick(0, UBound(Notes)) @@ -1254,7 +1279,8 @@ Partial Public Class MainWindow End Sub Private Sub SaveiBMSC(ByVal Path As String) - ' TODO: Save multiple BMSes instead of just the active one. + ' TODO: Save unsaved BMSes instead of just the active one. + ' TODO: Save all the added features: ShowWaveform, Keybinding options, #TOTAL Tool CalculateGreatestVPosition() SortByVPositionInsertion() UpdatePairing() @@ -1356,6 +1382,26 @@ Partial Public Class MainWindow bw.Write(hWAV(i)) Next + 'BMP List + bw.Write(&H504D42) + + Dim xBMPOptions As Integer = 0 + If BMPMultiSelect Then xBMPOptions = xBMPOptions Or &H1 + If BMPChangeLabel Then xBMPOptions = xBMPOptions Or &H2 + bw.Write(CByte(xBMPOptions)) + + Dim xBMPCount As Integer = 0 + For i As Integer = 1 To UBound(hBMP) + If hBMP(i) <> "" Then xBMPCount += 1 + Next + bw.Write(xBMPCount) + + For i As Integer = 1 To UBound(hBMP) + If hBMP(i) = "" Then Continue For + bw.Write(CShort(i)) + bw.Write(hBMP(i)) + Next + 'Beat 'bw.Write("Beat".ToCharArray) bw.Write(&H74616542) diff --git a/iBMSC/Column.vb b/iBMSC/Column.vb index f6e6296fb..cf7d89fd4 100644 --- a/iBMSC/Column.vb +++ b/iBMSC/Column.vb @@ -59,6 +59,7 @@ Public Title As String Public isNumeric As Boolean Public isSound As Boolean + Public isImage As Boolean Public Identifier As Integer Public cNote As Integer @@ -101,12 +102,13 @@ End Sub Public Sub New(ByVal xLeft As Integer, ByVal xWidth As Integer, ByVal xTitle As String, - ByVal xNoteCol As Boolean, ByVal xisNumeric As Boolean, ByVal xisSound As Boolean, ByVal xVisible As Boolean, ByVal xIdentifier As Integer, + ByVal xNoteCol As Boolean, ByVal xisNumeric As Boolean, ByVal xisSound As Boolean, ByVal xisImage As Boolean, ByVal xVisible As Boolean, ByVal xIdentifier As Integer, ByVal xcNote As Integer, ByVal xcText As Integer, ByVal xcLNote As Integer, ByVal xcLText As Integer, ByVal xcBG As Integer) Left = xLeft Title = xTitle isNumeric = xisNumeric isSound = xisSound + isImage = xisImage Identifier = xIdentifier _Width = xWidth diff --git a/iBMSC/EditorColumns.vb b/iBMSC/EditorColumns.vb index 1cdea242a..5bb80d328 100644 --- a/iBMSC/EditorColumns.vb +++ b/iBMSC/EditorColumns.vb @@ -34,34 +34,35 @@ Partial Public Class MainWindow Public Const niS4 As Integer = 26 Public Const niB As Integer = 27 - Public column() As Column = {New Column(0, 50, "Measure", False, True, False, False, 0, 0, &HFF00FFFF, 0, &HFF00FFFF, 0), - New Column(50, 60, "SCROLL", True, True, False, False, 99, 0, &HFFFF0000, 0, &HFFFF0000, 0), - New Column(110, 60, "BPM", True, True, False, False, 3, 0, &HFFFF0000, 0, &HFFFF0000, 0), - New Column(170, 50, "STOP", True, True, False, False, 9, 0, &HFFFF0000, 0, &HFFFF0000, 0), - New Column(220, 5, "", False, False, False, False, 0, 0, 0, 0, 0, 0), - New Column(225, 42, "A1", True, False, True, True, 16, &HFFB0B0B0, &HFF000000, &HFFC0C0C0, &HFF000000, &H14FFFFFF), - New Column(267, 30, "A2", True, False, True, True, 11, &HFF62B0FF, &HFF000000, &HFF6AB0F7, &HFF000000, &H140033FF), - New Column(297, 42, "A3", True, False, True, True, 12, &HFFB0B0B0, &HFF000000, &HFFC0C0C0, &HFF000000, &H14FFFFFF), - New Column(339, 45, "A4", True, False, True, True, 13, &HFFFFC862, &HFF000000, &HFFF7C66A, &HFF000000, &H16F38B0C), - New Column(384, 42, "A5", True, False, True, True, 14, &HFFB0B0B0, &HFF000000, &HFFC0C0C0, &HFF000000, &H14FFFFFF), - New Column(426, 30, "A6", True, False, True, True, 15, &HFF62B0FF, &HFF000000, &HFF6AB0F7, &HFF000000, &H140033FF), - New Column(456, 42, "A7", True, False, True, True, 18, &HFFB0B0B0, &HFF000000, &HFFC0C0C0, &HFF000000, &H14FFFFFF), - New Column(498, 40, "A8", True, False, True, True, 19, &HFF808080, &HFF000000, &HFF909090, &HFF000000, 0), - New Column(498, 5, "", False, False, False, False, 0, 0, 0, 0, 0, 0), - New Column(503, 42, "D1", True, False, True, True, 21, &HFFB0B0B0, &HFF000000, &HFFC0C0C0, &HFF000000, &H14FFFFFF), - New Column(503, 30, "D2", True, False, True, True, 22, &HFF62B0FF, &HFF000000, &HFF6AB0F7, &HFF000000, &H140033FF), - New Column(503, 42, "D3", True, False, True, True, 23, &HFFB0B0B0, &HFF000000, &HFFC0C0C0, &HFF000000, &H14FFFFFF), - New Column(503, 45, "D4", True, False, True, True, 24, &HFFFFC862, &HFF000000, &HFFF7C66A, &HFF000000, &H16F38B0C), - New Column(503, 42, "D5", True, False, True, True, 25, &HFFB0B0B0, &HFF000000, &HFFC0C0C0, &HFF000000, &H14FFFFFF), - New Column(503, 30, "D6", True, False, True, True, 28, &HFF62B0FF, &HFF000000, &HFF6AB0F7, &HFF000000, &H140033FF), - New Column(503, 42, "D7", True, False, True, True, 29, &HFFB0B0B0, &HFF000000, &HFFC0C0C0, &HFF000000, &H14FFFFFF), - New Column(503, 40, "D8", True, False, True, True, 26, &HFF808080, &HFF000000, &HFF909090, &HFF000000, 0), - New Column(503, 5, "", False, False, False, False, 0, 0, 0, 0, 0, 0), - New Column(503, 40, "BGA", True, False, False, False, 4, &HFF8CD78A, &HFF000000, &HFF90D38E, &HFF000000, 0), - New Column(503, 40, "LAYER", True, False, False, False, 7, &HFF8CD78A, &HFF000000, &HFF90D38E, &HFF000000, 0), - New Column(503, 40, "POOR", True, False, False, False, 6, &HFF8CD78A, &HFF000000, &HFF90D38E, &HFF000000, 0), - New Column(503, 5, "", False, False, False, False, 0, 0, 0, 0, 0, 0), - New Column(503, 40, "B", True, False, True, True, 1, &HFFE18080, &HFF000000, &HFFDC8585, &HFF000000, 0)} + ' xNoteCol, xisNumeric, xisSound, xisImage, xVisible + Public column() As Column = {New Column(0, 50, "Measure", False, True, False, False, False, 0, 0, &HFF00FFFF, 0, &HFF00FFFF, 0), + New Column(50, 60, "SCROLL", True, True, False, False, False, 99, 0, &HFFFF0000, 0, &HFFFF0000, 0), + New Column(110, 60, "BPM", True, True, False, False, False, 3, 0, &HFFFF0000, 0, &HFFFF0000, 0), + New Column(170, 50, "STOP", True, True, False, False, False, 9, 0, &HFFFF0000, 0, &HFFFF0000, 0), + New Column(220, 5, "", False, False, False, False, False, 0, 0, 0, 0, 0, 0), + New Column(225, 42, "A1", True, False, True, False, True, 16, &HFFB0B0B0, &HFF000000, &HFFC0C0C0, &HFF000000, &H14FFFFFF), + New Column(267, 30, "A2", True, False, True, False, True, 11, &HFF62B0FF, &HFF000000, &HFF6AB0F7, &HFF000000, &H140033FF), + New Column(297, 42, "A3", True, False, True, False, True, 12, &HFFB0B0B0, &HFF000000, &HFFC0C0C0, &HFF000000, &H14FFFFFF), + New Column(339, 45, "A4", True, False, True, False, True, 13, &HFFFFC862, &HFF000000, &HFFF7C66A, &HFF000000, &H16F38B0C), + New Column(384, 42, "A5", True, False, True, False, True, 14, &HFFB0B0B0, &HFF000000, &HFFC0C0C0, &HFF000000, &H14FFFFFF), + New Column(426, 30, "A6", True, False, True, False, True, 15, &HFF62B0FF, &HFF000000, &HFF6AB0F7, &HFF000000, &H140033FF), + New Column(456, 42, "A7", True, False, True, False, True, 18, &HFFB0B0B0, &HFF000000, &HFFC0C0C0, &HFF000000, &H14FFFFFF), + New Column(498, 40, "A8", True, False, True, False, True, 19, &HFF808080, &HFF000000, &HFF909090, &HFF000000, 0), + New Column(498, 5, "", False, False, False, False, False, 0, 0, 0, 0, 0, 0), + New Column(503, 42, "D1", True, False, True, False, True, 21, &HFFB0B0B0, &HFF000000, &HFFC0C0C0, &HFF000000, &H14FFFFFF), + New Column(503, 30, "D2", True, False, True, False, True, 22, &HFF62B0FF, &HFF000000, &HFF6AB0F7, &HFF000000, &H140033FF), + New Column(503, 42, "D3", True, False, True, False, True, 23, &HFFB0B0B0, &HFF000000, &HFFC0C0C0, &HFF000000, &H14FFFFFF), + New Column(503, 45, "D4", True, False, True, False, True, 24, &HFFFFC862, &HFF000000, &HFFF7C66A, &HFF000000, &H16F38B0C), + New Column(503, 42, "D5", True, False, True, False, True, 25, &HFFB0B0B0, &HFF000000, &HFFC0C0C0, &HFF000000, &H14FFFFFF), + New Column(503, 30, "D6", True, False, True, False, True, 28, &HFF62B0FF, &HFF000000, &HFF6AB0F7, &HFF000000, &H140033FF), + New Column(503, 42, "D7", True, False, True, False, True, 29, &HFFB0B0B0, &HFF000000, &HFFC0C0C0, &HFF000000, &H14FFFFFF), + New Column(503, 40, "D8", True, False, True, False, True, 26, &HFF808080, &HFF000000, &HFF909090, &HFF000000, 0), + New Column(503, 5, "", False, False, False, False, False, 0, 0, 0, 0, 0, 0), + New Column(503, 40, "BGA", True, False, False, True, False, 4, &HFF8CD78A, &HFF000000, &HFF90D38E, &HFF000000, 0), + New Column(503, 40, "LAYER", True, False, False, True, False, 7, &HFF8CD78A, &HFF000000, &HFF90D38E, &HFF000000, 0), + New Column(503, 40, "POOR", True, False, False, True, False, 6, &HFF8CD78A, &HFF000000, &HFF90D38E, &HFF000000, 0), + New Column(503, 5, "", False, False, False, False, False, 0, 0, 0, 0, 0, 0), + New Column(503, 40, "B", True, False, True, False, True, 1, &HFFE18080, &HFF000000, &HFFDC8585, &HFF000000, 0)} Public Const idflBPM As Integer = 5 @@ -127,6 +128,10 @@ Partial Public Class MainWindow Private Function IsColumnSound(ByVal iCol As Integer) As Boolean If iCol < niB Then Return column(iCol).isSound Else Return column(niB).isSound End Function + Private Function IsColumnImage(ByVal iCol As Integer) As Boolean + If iCol < niB Then Return column(iCol).isImage Else Return column(niB).isImage + End Function + diff --git a/iBMSC/EditorPersistent.vb b/iBMSC/EditorPersistent.vb index 4a9ab454c..218272ebd 100644 --- a/iBMSC/EditorPersistent.vb +++ b/iBMSC/EditorPersistent.vb @@ -552,6 +552,20 @@ Partial Public Class MainWindow End With End If + 'BMP + Dim eBMP As XmlElement = Root.Item("BMP") + If eBMP IsNot Nothing Then + With eBMP + XMLLoadAttribute(.GetAttribute("BMPMultiSelect"), BMPMultiSelect) + CBMPMultiSelect.Checked = BMPMultiSelect + CBMPMultiSelect_CheckedChanged(CBMPMultiSelect, New EventArgs) + + XMLLoadAttribute(.GetAttribute("BMPChangeLabel"), BMPChangeLabel) + CBMPChangeLabel.Checked = BMPChangeLabel + CBMPChangeLabel_CheckedChanged(CBMPChangeLabel, New EventArgs) + End With + End If + 'ShowHide Dim eShowHide As XmlElement = Root.Item("ShowHide") If eShowHide IsNot Nothing Then @@ -1150,6 +1164,17 @@ Partial Public Class MainWindow XMLLoadLocaleToolTipUniversal(eWAV.Item("MoveDown"), BWAVDown) XMLLoadLocaleToolTipUniversal(eWAV.Item("Browse"), BWAVBrowse) XMLLoadLocaleToolTipUniversal(eWAV.Item("Remove"), BWAVRemove) + XMLLoadLocaleToolTipUniversal(eWAV.Item("Duplicate"), BWAVDuplicate) + XMLLoadLocaleToolTipUniversal(eWAV.Item("OverrideColor"), BWAVColorOverride) + End If + + Dim eBMP As XmlElement = eOptionsPanel.Item("BMP") + If eBMP IsNot Nothing Then + XMLLoadLocale(eBMP.Item("Title"), POBMPSwitch.Text) + XMLLoadLocaleToolTipUniversal(eBMP.Item("MoveUp"), BBMPUp) + XMLLoadLocaleToolTipUniversal(eBMP.Item("MoveDown"), BBMPDown) + XMLLoadLocaleToolTipUniversal(eBMP.Item("Browse"), BBMPBrowse) + XMLLoadLocaleToolTipUniversal(eBMP.Item("Remove"), BBMPRemove) End If XMLLoadLocale(eOptionsPanel.Item("Beat"), POBeatSwitch.Text) diff --git a/iBMSC/EditorUndoRedo.vb b/iBMSC/EditorUndoRedo.vb index 48b580139..021ffd761 100644 --- a/iBMSC/EditorUndoRedo.vb +++ b/iBMSC/EditorUndoRedo.vb @@ -18,7 +18,7 @@ Partial Public Class MainWindow Notes(UBound(Notes)) = xCmd.note If TBWavIncrease.Checked Then - IncreaseCurrentWav() + IncreaseCurrentWAV() End If Case UndoRedo.opRemoveNote Dim xCmd As UndoRedo.RemoveNote = CType(sCmd, UndoRedo.RemoveNote) @@ -32,7 +32,7 @@ Partial Public Class MainWindow End If If TBWavIncrease.Checked Then - DecreaseCurrentWav() + DecreaseCurrentWAV() End If Case UndoRedo.opChangeNote diff --git a/iBMSC/FileTab.vb b/iBMSC/FileTab.vb index b7cbd5cb1..3c657f3d6 100644 --- a/iBMSC/FileTab.vb +++ b/iBMSC/FileTab.vb @@ -25,6 +25,7 @@ Partial Public Class MainWindow Public Notes() As Note Public NotesTemplate() As Note Public hWAV() As String + Public hBMP() As String Public hBPM() As Long Public hSTOP() As Long Public hBMSCROLL() As Long @@ -37,6 +38,7 @@ Partial Public Class MainWindow Public MeasureLength() As Double Public FileNameTemplate As String + Public RandomSource As String Public ExpansionSplit() As String Public GhostMode As Integer @@ -50,7 +52,7 @@ Partial Public Class MainWindow Public WaveformLoaded As Boolean Public Sub New(xNotes() As Note, xNotesTemplate() As Note, - xWAV() As String, xBPM() As Long, xSTOP() As Long, xBMSCROLL() As Long, xCOM() As String, xLWAV() As WavSample, + xWAV() As String, xBMP() As String, xBPM() As Long, xSTOP() As Long, xBMSCROLL() As Long, xCOM() As String, xLWAV() As WavSample, xHeaderT() As String, xHeaderN() As Decimal, xHeaderI() As Integer, xExpansion As String, xMeasureLength() As Double, xFileNameTemplate As String, xExpansionSplit() As String, xGhostMode As Integer, xUndo() As UndoRedo.LinkedURCmd, xRedo() As UndoRedo.LinkedURCmd, xSI As Integer, @@ -59,6 +61,7 @@ Partial Public Class MainWindow Notes = xNotes NotesTemplate = xNotesTemplate hWAV = xWAV + hBMP = xBMP hBPM = xBPM hSTOP = xSTOP hBMSCROLL = xBMSCROLL @@ -83,6 +86,10 @@ Partial Public Class MainWindow NTInput = xNTInput WaveformLoaded = xWaveformLoaded End Sub + + Public Sub AddRandomSource(xPath As String) + RandomSource = xPath + End Sub End Structure Private Sub TBClose_Click(sender As Object, e As EventArgs) Handles mnClose.Click @@ -289,7 +296,7 @@ Partial Public Class MainWindow Dim HeaderI() As Integer = {CHPlayer.SelectedIndex, CHRank.SelectedIndex, CHDifficulty.SelectedIndex, CHLnObj.SelectedIndex} BMSFileStructs(xI) = New BMSStruct(Notes, NotesTemplate, - hWAV, hBPM, hSTOP, hBMSCROLL, hCOM, wLWAV, + hWAV, hBMP, hBPM, hSTOP, hBMSCROLL, hCOM, wLWAV, HeaderT, HeaderN, HeaderI, TExpansion.Text, MeasureLength, FileNameTemplate, ExpansionSplit, GhostMode, sUndo, sRedo, sI, @@ -312,6 +319,7 @@ Partial Public Class MainWindow NotesTemplate = .NotesTemplate hWAV = .hWAV + hBMP = .hBMP hBPM = .hBPM hSTOP = .hSTOP hBMSCROLL = .hBMSCROLL @@ -358,7 +366,8 @@ Partial Public Class MainWindow If Not WaveformLoaded AndAlso ShowWaveform Then WaveformLoadId = 1 : TimerLoadWaveform.Enabled = True SetIsSaved(IsSaved) - LWAVRefresh() ' Wow why does refreshing this list take so damn long + LWAVRefresh() ' P: Wow why does refreshing this list take so damn long + LBMPRefresh() ' P: Likely this too LBeatRefresh() RefreshItemsByNTInput() diff --git a/iBMSC/MainWindow.designer.vb b/iBMSC/MainWindow.designer.vb index 413602713..829fda751 100644 --- a/iBMSC/MainWindow.designer.vb +++ b/iBMSC/MainWindow.designer.vb @@ -255,6 +255,10 @@ Partial Class MainWindow Me.BWAVUp = New System.Windows.Forms.Button() Me.BWAVDuplicate = New System.Windows.Forms.Button() Me.BWAVColorOverride = New System.Windows.Forms.Button() + Me.BBMPUp = New System.Windows.Forms.Button() + Me.BBMPDown = New System.Windows.Forms.Button() + Me.BBMPBrowse = New System.Windows.Forms.Button() + Me.BBMPRemove = New System.Windows.Forms.Button() Me.POptions = New System.Windows.Forms.Panel() Me.POExpansion = New System.Windows.Forms.Panel() Me.POExpansionInner = New System.Windows.Forms.Panel() @@ -281,6 +285,16 @@ Partial Class MainWindow Me.CBeatPreserve = New System.Windows.Forms.RadioButton() Me.POBeatSwitch = New System.Windows.Forms.CheckBox() Me.POWAV = New System.Windows.Forms.Panel() + Me.POBMP = New System.Windows.Forms.Panel() + Me.POBMPInner = New System.Windows.Forms.TableLayoutPanel() + Me.POBMPExpander = New System.Windows.Forms.CheckBox() + Me.LBMP = New System.Windows.Forms.ListBox() + Me.FlowLayoutPanel4 = New System.Windows.Forms.FlowLayoutPanel() + Me.POBMPResizer = New System.Windows.Forms.Button() + Me.POBMPPart2 = New System.Windows.Forms.TableLayoutPanel() + Me.CBMPMultiSelect = New System.Windows.Forms.CheckBox() + Me.CBMPChangeLabel = New System.Windows.Forms.CheckBox() + Me.POBMPSwitch = New System.Windows.Forms.CheckBox() Me.POWAVInner = New System.Windows.Forms.TableLayoutPanel() Me.POWAVExpander = New System.Windows.Forms.CheckBox() Me.LWAV = New System.Windows.Forms.ListBox() @@ -396,6 +410,7 @@ Partial Class MainWindow Me.TimerExternalExpansion = New System.Windows.Forms.Timer(Me.components) Me.TimerLoadWaveform = New System.Windows.Forms.Timer(Me.components) Me.TimerLWAVRefresh = New System.Windows.Forms.Timer(Me.components) + Me.TimerLBMPRefresh = New System.Windows.Forms.Timer(Me.components) Me.cmnLanguage.SuspendLayout() Me.cmnTheme.SuspendLayout() Me.Menu1.SuspendLayout() @@ -406,6 +421,7 @@ Partial Class MainWindow Me.FStatus2.SuspendLayout() Me.FStatus.SuspendLayout() Me.ToolStripContainer1.ContentPanel.SuspendLayout() + Me.ToolStripContainer1.LeftToolStripPanel.SuspendLayout() Me.ToolStripContainer1.TopToolStripPanel.SuspendLayout() Me.ToolStripContainer1.SuspendLayout() Me.PMain.SuspendLayout() @@ -423,6 +439,10 @@ Partial Class MainWindow CType(Me.nBeatN, System.ComponentModel.ISupportInitialize).BeginInit() Me.POBeatPart2.SuspendLayout() Me.POWAV.SuspendLayout() + Me.POBMP.SuspendLayout() + Me.POBMPInner.SuspendLayout() + Me.FlowLayoutPanel4.SuspendLayout() + Me.POBMPPart2.SuspendLayout() Me.POWAVInner.SuspendLayout() Me.FlowLayoutPanel3.SuspendLayout() Me.POWAVPart2.SuspendLayout() @@ -2124,8 +2144,12 @@ Partial Class MainWindow Me.ToolStripContainer1.ContentPanel.Controls.Add(Me.SpL) Me.ToolStripContainer1.ContentPanel.Controls.Add(Me.PMainR) Me.ToolStripContainer1.ContentPanel.Controls.Add(Me.PMainL) - Me.ToolStripContainer1.ContentPanel.Size = New System.Drawing.Size(1267, 661) + Me.ToolStripContainer1.ContentPanel.Size = New System.Drawing.Size(1241, 711) Me.ToolStripContainer1.Dock = System.Windows.Forms.DockStyle.Fill + ' + 'ToolStripContainer1.LeftToolStripPanel + ' + Me.ToolStripContainer1.LeftToolStripPanel.Controls.Add(Me.TBTab) Me.ToolStripContainer1.Location = New System.Drawing.Point(0, 0) Me.ToolStripContainer1.Name = "ToolStripContainer1" Me.ToolStripContainer1.Size = New System.Drawing.Size(1267, 759) @@ -2136,7 +2160,6 @@ Partial Class MainWindow ' Me.ToolStripContainer1.TopToolStripPanel.Controls.Add(Me.mnMain) Me.ToolStripContainer1.TopToolStripPanel.Controls.Add(Me.TBMain) - Me.ToolStripContainer1.TopToolStripPanel.Controls.Add(Me.TBTab) ' 'PMain ' @@ -2149,7 +2172,7 @@ Partial Class MainWindow Me.PMain.ForeColor = System.Drawing.Color.White Me.PMain.Location = New System.Drawing.Point(5, 0) Me.PMain.Name = "PMain" - Me.PMain.Size = New System.Drawing.Size(1257, 661) + Me.PMain.Size = New System.Drawing.Size(1231, 711) Me.PMain.TabIndex = 58 Me.PMain.TabStop = True Me.PMain.Tag = "1" @@ -2163,7 +2186,7 @@ Partial Class MainWindow Me.PMainIn.ForeColor = System.Drawing.Color.White Me.PMainIn.Location = New System.Drawing.Point(0, 0) Me.PMainIn.Name = "PMainIn" - Me.PMainIn.Size = New System.Drawing.Size(1240, 644) + Me.PMainIn.Size = New System.Drawing.Size(1214, 694) Me.PMainIn.TabIndex = 0 Me.PMainIn.TabStop = True Me.PMainIn.Tag = "1" @@ -2182,11 +2205,11 @@ Partial Class MainWindow Me.MainPanelScroll.AccessibleRole = System.Windows.Forms.AccessibleRole.ScrollBar Me.MainPanelScroll.Dock = System.Windows.Forms.DockStyle.Right Me.MainPanelScroll.LargeChange = 592 - Me.MainPanelScroll.Location = New System.Drawing.Point(1240, 0) + Me.MainPanelScroll.Location = New System.Drawing.Point(1214, 0) Me.MainPanelScroll.Maximum = 591 Me.MainPanelScroll.Minimum = -10000 Me.MainPanelScroll.Name = "MainPanelScroll" - Me.MainPanelScroll.Size = New System.Drawing.Size(17, 644) + Me.MainPanelScroll.Size = New System.Drawing.Size(17, 694) Me.MainPanelScroll.SmallChange = 12 Me.MainPanelScroll.TabIndex = 2 Me.MainPanelScroll.Tag = "1" @@ -2196,10 +2219,10 @@ Partial Class MainWindow Me.HS.AccessibleRole = System.Windows.Forms.AccessibleRole.ScrollBar Me.HS.Dock = System.Windows.Forms.DockStyle.Bottom Me.HS.LargeChange = 777 - Me.HS.Location = New System.Drawing.Point(0, 644) + Me.HS.Location = New System.Drawing.Point(0, 694) Me.HS.Maximum = 1233 Me.HS.Name = "HS" - Me.HS.Size = New System.Drawing.Size(1257, 17) + Me.HS.Size = New System.Drawing.Size(1231, 17) Me.HS.TabIndex = 3 Me.HS.Tag = "1" ' @@ -2208,9 +2231,9 @@ Partial Class MainWindow Me.SpR.Dock = System.Windows.Forms.DockStyle.Right Me.SpR.FlatAppearance.BorderSize = 0 Me.SpR.FlatStyle = System.Windows.Forms.FlatStyle.Flat - Me.SpR.Location = New System.Drawing.Point(1262, 0) + Me.SpR.Location = New System.Drawing.Point(1236, 0) Me.SpR.Name = "SpR" - Me.SpR.Size = New System.Drawing.Size(5, 661) + Me.SpR.Size = New System.Drawing.Size(5, 711) Me.SpR.TabIndex = 59 Me.SpR.TabStop = False Me.SpR.UseVisualStyleBackColor = True @@ -2223,7 +2246,7 @@ Partial Class MainWindow Me.SpL.FlatStyle = System.Windows.Forms.FlatStyle.Flat Me.SpL.Location = New System.Drawing.Point(0, 0) Me.SpL.Name = "SpL" - Me.SpL.Size = New System.Drawing.Size(5, 661) + Me.SpL.Size = New System.Drawing.Size(5, 711) Me.SpL.TabIndex = 60 Me.SpL.TabStop = False Me.SpL.UseVisualStyleBackColor = True @@ -2238,9 +2261,9 @@ Partial Class MainWindow Me.PMainR.Dock = System.Windows.Forms.DockStyle.Right Me.PMainR.Font = New System.Drawing.Font("Verdana", 9.0!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) Me.PMainR.ForeColor = System.Drawing.Color.White - Me.PMainR.Location = New System.Drawing.Point(1267, 0) + Me.PMainR.Location = New System.Drawing.Point(1241, 0) Me.PMainR.Name = "PMainR" - Me.PMainR.Size = New System.Drawing.Size(0, 661) + Me.PMainR.Size = New System.Drawing.Size(0, 711) Me.PMainR.TabIndex = 56 Me.PMainR.Tag = "2" ' @@ -2252,7 +2275,7 @@ Partial Class MainWindow Me.PMainInR.ForeColor = System.Drawing.Color.White Me.PMainInR.Location = New System.Drawing.Point(0, 0) Me.PMainInR.Name = "PMainInR" - Me.PMainInR.Size = New System.Drawing.Size(0, 644) + Me.PMainInR.Size = New System.Drawing.Size(0, 694) Me.PMainInR.TabIndex = 0 Me.PMainInR.TabStop = True Me.PMainInR.Tag = "2" @@ -2265,7 +2288,7 @@ Partial Class MainWindow Me.RightPanelScroll.Maximum = 591 Me.RightPanelScroll.Minimum = -10000 Me.RightPanelScroll.Name = "RightPanelScroll" - Me.RightPanelScroll.Size = New System.Drawing.Size(17, 644) + Me.RightPanelScroll.Size = New System.Drawing.Size(17, 694) Me.RightPanelScroll.SmallChange = 12 Me.RightPanelScroll.TabIndex = 2 Me.RightPanelScroll.Tag = "2" @@ -2274,7 +2297,7 @@ Partial Class MainWindow ' Me.HSR.Dock = System.Windows.Forms.DockStyle.Bottom Me.HSR.LargeChange = 777 - Me.HSR.Location = New System.Drawing.Point(0, 644) + Me.HSR.Location = New System.Drawing.Point(0, 694) Me.HSR.Maximum = 1233 Me.HSR.Name = "HSR" Me.HSR.Size = New System.Drawing.Size(0, 17) @@ -2292,7 +2315,7 @@ Partial Class MainWindow Me.PMainL.ForeColor = System.Drawing.Color.White Me.PMainL.Location = New System.Drawing.Point(0, 0) Me.PMainL.Name = "PMainL" - Me.PMainL.Size = New System.Drawing.Size(0, 661) + Me.PMainL.Size = New System.Drawing.Size(0, 711) Me.PMainL.TabIndex = 54 Me.PMainL.Tag = "0" ' @@ -2304,7 +2327,7 @@ Partial Class MainWindow Me.PMainInL.ForeColor = System.Drawing.Color.White Me.PMainInL.Location = New System.Drawing.Point(0, 0) Me.PMainInL.Name = "PMainInL" - Me.PMainInL.Size = New System.Drawing.Size(0, 644) + Me.PMainInL.Size = New System.Drawing.Size(0, 694) Me.PMainInL.TabIndex = 0 Me.PMainInL.TabStop = True Me.PMainInL.Tag = "0" @@ -2317,7 +2340,7 @@ Partial Class MainWindow Me.LeftPanelScroll.Maximum = 591 Me.LeftPanelScroll.Minimum = -10000 Me.LeftPanelScroll.Name = "LeftPanelScroll" - Me.LeftPanelScroll.Size = New System.Drawing.Size(17, 644) + Me.LeftPanelScroll.Size = New System.Drawing.Size(17, 694) Me.LeftPanelScroll.SmallChange = 12 Me.LeftPanelScroll.TabIndex = 2 Me.LeftPanelScroll.Tag = "0" @@ -2326,7 +2349,7 @@ Partial Class MainWindow ' Me.HSL.Dock = System.Windows.Forms.DockStyle.Bottom Me.HSL.LargeChange = 777 - Me.HSL.Location = New System.Drawing.Point(0, 644) + Me.HSL.Location = New System.Drawing.Point(0, 694) Me.HSL.Maximum = 1233 Me.HSL.Name = "HSL" Me.HSL.Size = New System.Drawing.Size(0, 17) @@ -2337,9 +2360,9 @@ Partial Class MainWindow ' Me.TBTab.BackColor = System.Drawing.SystemColors.Control Me.TBTab.Dock = System.Windows.Forms.DockStyle.None - Me.TBTab.Location = New System.Drawing.Point(3, 48) + Me.TBTab.Location = New System.Drawing.Point(0, 3) Me.TBTab.Name = "TBTab" - Me.TBTab.Size = New System.Drawing.Size(43, 25) + Me.TBTab.Size = New System.Drawing.Size(26, 111) Me.TBTab.TabIndex = 65 ' 'POptionsResizer @@ -2497,6 +2520,50 @@ Partial Class MainWindow Me.ToolTipUniversal.SetToolTip(Me.BWAVColorOverride, "Override color") Me.BWAVColorOverride.UseVisualStyleBackColor = True ' + 'BBMPUp + ' + Me.BBMPUp.Image = Global.iBMSC.My.Resources.Resources.x16Up + Me.BBMPUp.Location = New System.Drawing.Point(0, 0) + Me.BBMPUp.Margin = New System.Windows.Forms.Padding(0) + Me.BBMPUp.Name = "BBMPUp" + Me.BBMPUp.Size = New System.Drawing.Size(24, 24) + Me.BBMPUp.TabIndex = 602 + Me.ToolTipUniversal.SetToolTip(Me.BBMPUp, "Move Up") + Me.BBMPUp.UseVisualStyleBackColor = True + ' + 'BBMPDown + ' + Me.BBMPDown.Image = Global.iBMSC.My.Resources.Resources.x16Down + Me.BBMPDown.Location = New System.Drawing.Point(24, 0) + Me.BBMPDown.Margin = New System.Windows.Forms.Padding(0) + Me.BBMPDown.Name = "BBMPDown" + Me.BBMPDown.Size = New System.Drawing.Size(24, 24) + Me.BBMPDown.TabIndex = 603 + Me.ToolTipUniversal.SetToolTip(Me.BBMPDown, "Move Down") + Me.BBMPDown.UseVisualStyleBackColor = True + ' + 'BBMPBrowse + ' + Me.BBMPBrowse.Image = Global.iBMSC.My.Resources.Resources.x16PlayerBrowse + Me.BBMPBrowse.Location = New System.Drawing.Point(48, 0) + Me.BBMPBrowse.Margin = New System.Windows.Forms.Padding(0) + Me.BBMPBrowse.Name = "BBMPBrowse" + Me.BBMPBrowse.Size = New System.Drawing.Size(24, 24) + Me.BBMPBrowse.TabIndex = 604 + Me.ToolTipUniversal.SetToolTip(Me.BBMPBrowse, "Browse") + Me.BBMPBrowse.UseVisualStyleBackColor = True + ' + 'BBMPRemove + ' + Me.BBMPRemove.Image = Global.iBMSC.My.Resources.Resources.x16Remove + Me.BBMPRemove.Location = New System.Drawing.Point(72, 0) + Me.BBMPRemove.Margin = New System.Windows.Forms.Padding(0) + Me.BBMPRemove.Name = "BBMPRemove" + Me.BBMPRemove.Size = New System.Drawing.Size(24, 24) + Me.BBMPRemove.TabIndex = 605 + Me.ToolTipUniversal.SetToolTip(Me.BBMPRemove, "Remove") + Me.BBMPRemove.UseVisualStyleBackColor = True + ' 'POptions ' Me.POptions.AutoSize = True @@ -2510,7 +2577,7 @@ Partial Class MainWindow Me.POptions.Dock = System.Windows.Forms.DockStyle.Top Me.POptions.Location = New System.Drawing.Point(0, 0) Me.POptions.Name = "POptions" - Me.POptions.Size = New System.Drawing.Size(183, 1778) + Me.POptions.Size = New System.Drawing.Size(183, 2048) Me.POptions.TabIndex = 29 ' 'POExpansion @@ -2520,7 +2587,7 @@ Partial Class MainWindow Me.POExpansion.Controls.Add(Me.POExpansionInner) Me.POExpansion.Controls.Add(Me.POExpansionSwitch) Me.POExpansion.Dock = System.Windows.Forms.DockStyle.Top - Me.POExpansion.Location = New System.Drawing.Point(0, 1483) + Me.POExpansion.Location = New System.Drawing.Point(0, 1753) Me.POExpansion.Name = "POExpansion" Me.POExpansion.Size = New System.Drawing.Size(183, 295) Me.POExpansion.TabIndex = 6 @@ -2601,7 +2668,7 @@ Partial Class MainWindow Me.POBeat.Controls.Add(Me.POBeatInner) Me.POBeat.Controls.Add(Me.POBeatSwitch) Me.POBeat.Dock = System.Windows.Forms.DockStyle.Top - Me.POBeat.Location = New System.Drawing.Point(0, 1213) + Me.POBeat.Location = New System.Drawing.Point(0, 1483) Me.POBeat.Name = "POBeat" Me.POBeat.Size = New System.Drawing.Size(183, 270) Me.POBeat.TabIndex = 5 @@ -2862,14 +2929,171 @@ Partial Class MainWindow Me.POWAV.AllowDrop = True Me.POWAV.AutoSize = True Me.POWAV.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink + Me.POWAV.Controls.Add(Me.POBMP) Me.POWAV.Controls.Add(Me.POWAVInner) Me.POWAV.Controls.Add(Me.POWAVSwitch) Me.POWAV.Dock = System.Windows.Forms.DockStyle.Top Me.POWAV.Location = New System.Drawing.Point(0, 943) Me.POWAV.Name = "POWAV" - Me.POWAV.Size = New System.Drawing.Size(183, 270) + Me.POWAV.Size = New System.Drawing.Size(183, 540) Me.POWAV.TabIndex = 4 ' + 'POBMP + ' + Me.POBMP.AllowDrop = True + Me.POBMP.AutoSize = True + Me.POBMP.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink + Me.POBMP.Controls.Add(Me.POBMPInner) + Me.POBMP.Controls.Add(Me.POBMPSwitch) + Me.POBMP.Dock = System.Windows.Forms.DockStyle.Top + Me.POBMP.Location = New System.Drawing.Point(0, 270) + Me.POBMP.Name = "POBMP" + Me.POBMP.Size = New System.Drawing.Size(183, 270) + Me.POBMP.TabIndex = 602 + ' + 'POBMPInner + ' + Me.POBMPInner.ColumnCount = 1 + Me.POBMPInner.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100.0!)) + Me.POBMPInner.Controls.Add(Me.POBMPExpander, 0, 1) + Me.POBMPInner.Controls.Add(Me.LBMP, 0, 3) + Me.POBMPInner.Controls.Add(Me.FlowLayoutPanel4, 0, 0) + Me.POBMPInner.Controls.Add(Me.POBMPResizer, 0, 4) + Me.POBMPInner.Controls.Add(Me.POBMPPart2, 0, 2) + Me.POBMPInner.Dock = System.Windows.Forms.DockStyle.Top + Me.POBMPInner.Location = New System.Drawing.Point(0, 20) + Me.POBMPInner.Name = "POBMPInner" + Me.POBMPInner.RowCount = 5 + Me.POBMPInner.RowStyles.Add(New System.Windows.Forms.RowStyle()) + Me.POBMPInner.RowStyles.Add(New System.Windows.Forms.RowStyle()) + Me.POBMPInner.RowStyles.Add(New System.Windows.Forms.RowStyle()) + Me.POBMPInner.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100.0!)) + Me.POBMPInner.RowStyles.Add(New System.Windows.Forms.RowStyle()) + Me.POBMPInner.Size = New System.Drawing.Size(183, 250) + Me.POBMPInner.TabIndex = 5 + ' + 'POBMPExpander + ' + Me.POBMPExpander.Appearance = System.Windows.Forms.Appearance.Button + Me.POBMPExpander.AutoSize = True + Me.POBMPExpander.Cursor = System.Windows.Forms.Cursors.Hand + Me.POBMPExpander.Dock = System.Windows.Forms.DockStyle.Top + Me.POBMPExpander.FlatAppearance.BorderSize = 0 + Me.POBMPExpander.FlatStyle = System.Windows.Forms.FlatStyle.Popup + Me.POBMPExpander.Location = New System.Drawing.Point(0, 30) + Me.POBMPExpander.Margin = New System.Windows.Forms.Padding(0) + Me.POBMPExpander.Name = "POBMPExpander" + Me.POBMPExpander.Size = New System.Drawing.Size(183, 25) + Me.POBMPExpander.TabIndex = 701 + Me.POBMPExpander.TabStop = False + Me.POBMPExpander.Text = "Expand..." + Me.POBMPExpander.TextAlign = System.Drawing.ContentAlignment.MiddleCenter + Me.POBMPExpander.UseVisualStyleBackColor = False + ' + 'LBMP + ' + Me.LBMP.Dock = System.Windows.Forms.DockStyle.Fill + Me.LBMP.Font = New System.Drawing.Font("Consolas", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.LBMP.IntegralHeight = False + Me.LBMP.ItemHeight = 14 + Me.LBMP.Location = New System.Drawing.Point(3, 93) + Me.LBMP.Margin = New System.Windows.Forms.Padding(3, 0, 3, 0) + Me.LBMP.Name = "LBMP" + Me.LBMP.SelectionMode = System.Windows.Forms.SelectionMode.MultiExtended + Me.LBMP.Size = New System.Drawing.Size(177, 152) + Me.LBMP.TabIndex = 704 + ' + 'FlowLayoutPanel4 + ' + Me.FlowLayoutPanel4.AutoSize = True + Me.FlowLayoutPanel4.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink + Me.FlowLayoutPanel4.Controls.Add(Me.BBMPUp) + Me.FlowLayoutPanel4.Controls.Add(Me.BBMPDown) + Me.FlowLayoutPanel4.Controls.Add(Me.BBMPBrowse) + Me.FlowLayoutPanel4.Controls.Add(Me.BBMPRemove) + Me.FlowLayoutPanel4.Location = New System.Drawing.Point(3, 3) + Me.FlowLayoutPanel4.Name = "FlowLayoutPanel4" + Me.FlowLayoutPanel4.Size = New System.Drawing.Size(96, 24) + Me.FlowLayoutPanel4.TabIndex = 26 + Me.FlowLayoutPanel4.WrapContents = False + ' + 'POBMPResizer + ' + Me.POBMPResizer.Dock = System.Windows.Forms.DockStyle.Top + Me.POBMPResizer.FlatAppearance.BorderSize = 0 + Me.POBMPResizer.FlatStyle = System.Windows.Forms.FlatStyle.Flat + Me.POBMPResizer.Location = New System.Drawing.Point(0, 245) + Me.POBMPResizer.Margin = New System.Windows.Forms.Padding(0) + Me.POBMPResizer.Name = "POBMPResizer" + Me.POBMPResizer.Size = New System.Drawing.Size(183, 5) + Me.POBMPResizer.TabIndex = 33 + Me.POBMPResizer.TabStop = False + Me.POBMPResizer.UseVisualStyleBackColor = True + ' + 'POBMPPart2 + ' + Me.POBMPPart2.AutoSize = True + Me.POBMPPart2.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink + Me.POBMPPart2.ColumnCount = 1 + Me.POBMPPart2.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100.0!)) + Me.POBMPPart2.Controls.Add(Me.CBMPMultiSelect, 0, 0) + Me.POBMPPart2.Controls.Add(Me.CBMPChangeLabel, 0, 1) + Me.POBMPPart2.Dock = System.Windows.Forms.DockStyle.Fill + Me.POBMPPart2.Location = New System.Drawing.Point(0, 55) + Me.POBMPPart2.Margin = New System.Windows.Forms.Padding(0) + Me.POBMPPart2.Name = "POBMPPart2" + Me.POBMPPart2.RowCount = 2 + Me.POBMPPart2.RowStyles.Add(New System.Windows.Forms.RowStyle()) + Me.POBMPPart2.RowStyles.Add(New System.Windows.Forms.RowStyle()) + Me.POBMPPart2.Size = New System.Drawing.Size(183, 38) + Me.POBMPPart2.TabIndex = 35 + Me.POBMPPart2.Visible = False + ' + 'CBMPMultiSelect + ' + Me.CBMPMultiSelect.AutoSize = True + Me.CBMPMultiSelect.Checked = True + Me.CBMPMultiSelect.CheckState = System.Windows.Forms.CheckState.Checked + Me.CBMPMultiSelect.Location = New System.Drawing.Point(3, 0) + Me.CBMPMultiSelect.Margin = New System.Windows.Forms.Padding(3, 0, 3, 0) + Me.CBMPMultiSelect.Name = "CBMPMultiSelect" + Me.CBMPMultiSelect.Size = New System.Drawing.Size(154, 19) + Me.CBMPMultiSelect.TabIndex = 702 + Me.CBMPMultiSelect.Text = "Allow Multiple Selection" + Me.CBMPMultiSelect.UseVisualStyleBackColor = True + ' + 'CBMPChangeLabel + ' + Me.CBMPChangeLabel.AutoSize = True + Me.CBMPChangeLabel.Checked = True + Me.CBMPChangeLabel.CheckState = System.Windows.Forms.CheckState.Checked + Me.CBMPChangeLabel.Location = New System.Drawing.Point(3, 19) + Me.CBMPChangeLabel.Margin = New System.Windows.Forms.Padding(3, 0, 3, 0) + Me.CBMPChangeLabel.Name = "CBMPChangeLabel" + Me.CBMPChangeLabel.Size = New System.Drawing.Size(155, 19) + Me.CBMPChangeLabel.TabIndex = 703 + Me.CBMPChangeLabel.Text = "Synchronize Note Labels" + Me.CBMPChangeLabel.UseVisualStyleBackColor = True + ' + 'POBMPSwitch + ' + Me.POBMPSwitch.Appearance = System.Windows.Forms.Appearance.Button + Me.POBMPSwitch.BackColor = System.Drawing.SystemColors.Control + Me.POBMPSwitch.Checked = True + Me.POBMPSwitch.CheckState = System.Windows.Forms.CheckState.Checked + Me.POBMPSwitch.Cursor = System.Windows.Forms.Cursors.Hand + Me.POBMPSwitch.Dock = System.Windows.Forms.DockStyle.Top + Me.POBMPSwitch.Font = New System.Drawing.Font("Segoe UI", 9.0!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.POBMPSwitch.Location = New System.Drawing.Point(0, 0) + Me.POBMPSwitch.Name = "POBMPSwitch" + Me.POBMPSwitch.Size = New System.Drawing.Size(183, 20) + Me.POBMPSwitch.TabIndex = 601 + Me.POBMPSwitch.TabStop = False + Me.POBMPSwitch.Text = "#BMP (Images List)" + Me.POBMPSwitch.TextAlign = System.Drawing.ContentAlignment.MiddleCenter + Me.POBMPSwitch.UseCompatibleTextRendering = True + Me.POBMPSwitch.UseVisualStyleBackColor = False + ' 'POWAVInner ' Me.POWAVInner.ColumnCount = 1 @@ -4396,6 +4620,10 @@ Partial Class MainWindow ' Me.TimerLWAVRefresh.Interval = 15 ' + 'TimerLBMPRefresh + ' + Me.TimerLBMPRefresh.Interval = 15 + ' 'MainWindow ' Me.AllowDrop = True @@ -4426,6 +4654,8 @@ Partial Class MainWindow Me.FStatus.ResumeLayout(False) Me.FStatus.PerformLayout() Me.ToolStripContainer1.ContentPanel.ResumeLayout(False) + Me.ToolStripContainer1.LeftToolStripPanel.ResumeLayout(False) + Me.ToolStripContainer1.LeftToolStripPanel.PerformLayout() Me.ToolStripContainer1.TopToolStripPanel.ResumeLayout(False) Me.ToolStripContainer1.TopToolStripPanel.PerformLayout() Me.ToolStripContainer1.ResumeLayout(False) @@ -4450,6 +4680,13 @@ Partial Class MainWindow Me.POBeatPart2.ResumeLayout(False) Me.POBeatPart2.PerformLayout() Me.POWAV.ResumeLayout(False) + Me.POWAV.PerformLayout() + Me.POBMP.ResumeLayout(False) + Me.POBMPInner.ResumeLayout(False) + Me.POBMPInner.PerformLayout() + Me.FlowLayoutPanel4.ResumeLayout(False) + Me.POBMPPart2.ResumeLayout(False) + Me.POBMPPart2.PerformLayout() Me.POWAVInner.ResumeLayout(False) Me.POWAVInner.PerformLayout() Me.FlowLayoutPanel3.ResumeLayout(False) @@ -4903,4 +5140,19 @@ Partial Class MainWindow Friend WithEvents mnClose As ToolStripMenuItem Friend WithEvents PBOnTabHover As PictureBox Friend WithEvents TimerLWAVRefresh As Timer + Friend WithEvents POBMP As Panel + Friend WithEvents POBMPInner As TableLayoutPanel + Friend WithEvents POBMPExpander As CheckBox + Friend WithEvents LBMP As ListBox + Friend WithEvents FlowLayoutPanel4 As FlowLayoutPanel + Friend WithEvents BBMPUp As Button + Friend WithEvents BBMPDown As Button + Friend WithEvents BBMPBrowse As Button + Friend WithEvents BBMPRemove As Button + Friend WithEvents POBMPResizer As Button + Friend WithEvents POBMPPart2 As TableLayoutPanel + Friend WithEvents CBMPMultiSelect As CheckBox + Friend WithEvents CBMPChangeLabel As CheckBox + Friend WithEvents POBMPSwitch As CheckBox + Friend WithEvents TimerLBMPRefresh As Timer End Class diff --git a/iBMSC/MainWindow.resx b/iBMSC/MainWindow.resx index 935acb7ae..eef0f8214 100644 --- a/iBMSC/MainWindow.resx +++ b/iBMSC/MainWindow.resx @@ -217,6 +217,9 @@ 715, 56 + + 866, 49 + 89 diff --git a/iBMSC/MainWindow.vb b/iBMSC/MainWindow.vb index 7efe4a711..d5195ee86 100644 --- a/iBMSC/MainWindow.vb +++ b/iBMSC/MainWindow.vb @@ -66,6 +66,7 @@ Public Class MainWindow Dim NTInput As Boolean = True Dim ShowFileName As Boolean = False Dim ShowWaveform As Boolean = False + Dim ShowBMP As Boolean = False Dim BeepWhileSaved As Boolean = True Dim PreloadBMSStruct As Boolean = False @@ -80,6 +81,8 @@ Public Class MainWindow Dim WAVMultiSelect As Boolean = True Dim WAVChangeLabel As Boolean = True + Dim BMPMultiSelect As Boolean = True + Dim BMPChangeLabel As Boolean = True Dim BeatChangeMode As Integer = 0 'Dim FloatTolerance As Double = 0.0001R @@ -175,6 +178,7 @@ Public Class MainWindow Dim WaveformLoadId As Integer = 1 Dim NoteWVPosEnd() As Double Dim LWAVRefreshId As Integer = 1 + Dim LBMPRefreshId As Integer = 1 '----AutoSave Options Dim PreviousAutoSavedFileName As String = "" @@ -187,10 +191,11 @@ Public Class MainWindow Dim ErrorJackSpeed As Double = 60 * 4 / ErrorJackBPM / ErrorJackTH '----Header Options + Dim hBMP(1295) As String Dim hWAV(1295) As String + Dim hBMSCROLL(1295) As Long Dim hBPM(1295) As Long 'x10000 Dim hSTOP(1295) As Long - Dim hBMSCROLL(1295) As Long '----Grid Options Dim gSnap As Boolean = True @@ -732,7 +737,7 @@ Public Class MainWindow If TBWavIncrease.Checked Then If Notes(I).Value = LWAV.SelectedIndex * 10000 Then - DecreaseCurrentWav() + DecreaseCurrentWAV() End If End If @@ -1204,6 +1209,11 @@ Public Class MainWindow LWAV.Items.Add(C10to36(xI1) & ": " & hWAV(xI1)) Next + LBMP.Items.Clear() + For xI1 = 1 To 1295 + LBMP.Items.Add(C10to36(xI1) & ": " & hBMP(xI1)) + Next + ReDim MeasureLength(999) LBeat.Items.Clear() For xI1 As Integer = 0 To 999 @@ -1387,6 +1397,7 @@ Public Class MainWindow File.Delete(xTempFileName) POWAVResizer.Cursor = xDownCursor + POBMPResizer.Cursor = xDownCursor POBeatResizer.Cursor = xDownCursor POExpansionResizer.Cursor = xDownCursor @@ -2373,7 +2384,7 @@ Public Class MainWindow PMainInMouseMove(spMain(PanelFocus), xMEArgs) End Sub - Private Sub ValidateWavListView() + Private Sub ValidateWAVListView() Try Dim xRect As Rectangle = LWAV.GetItemRectangle(LWAV.SelectedIndex) If xRect.Top + xRect.Height > LWAV.DisplayRectangle.Height Then SendMessage(LWAV.Handle, &H115, 1, 0) @@ -2381,6 +2392,14 @@ Public Class MainWindow End Try End Sub + Private Sub ValidateBMPListView() + Try + Dim xRect As Rectangle = LBMP.GetItemRectangle(LBMP.SelectedIndex) + If xRect.Top + xRect.Height > LBMP.DisplayRectangle.Height Then SendMessage(LBMP.Handle, &H115, 1, 0) + Catch ex As Exception + End Try + End Sub + Private Sub LWAV_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles LWAV.Click If TBWrite.Checked Then FSW.Text = C10to36(LWAV.SelectedIndex + 1) @@ -2451,6 +2470,26 @@ Public Class MainWindow LWAVRefreshId += 1 End Sub + Private Sub LBMPRefresh() + LBMPRefreshId = 1 + LBMP.Enabled = False + TimerLBMPRefresh.Enabled = True + End Sub + + Private Sub TimerLBMPRefresh_Tick(sender As Object, e As EventArgs) Handles TimerLBMPRefresh.Tick + Dim xIL = LBMPRefreshId - 1 + LBMP.Items(xIL) = C10to36(LBMPRefreshId) & ": " & hBMP(LBMPRefreshId) + ' Console.WriteLine(LBMPRefreshId) + + If LBMPRefreshId = 1295 Then + LBMPRefreshId = 1 + LBMP.Enabled = True + TimerLBMPRefresh.Enabled = False + Exit Sub + End If + LBMPRefreshId += 1 + End Sub + Private Sub LBeatRefresh() For xILB = 0 To 999 Dim a As Double = MeasureLength(xILB) / 192.0R @@ -3735,6 +3774,87 @@ Public Class MainWindow TExpansion.Height = POExpansion.Height - 25 - BExpansion.Height End Sub + Private Sub AddToPOBMP(ByVal xPath() As String) + Dim xIndices(LBMP.SelectedIndices.Count - 1) As Integer + LBMP.SelectedIndices.CopyTo(xIndices, 0) + If xIndices.Length = 0 Then Exit Sub + + If xIndices.Length < xPath.Length Then + Dim i As Integer = xIndices.Length + Dim currBMPIndex As Integer = xIndices(UBound(xIndices)) + 1 + ReDim Preserve xIndices(UBound(xPath)) + + Do While i < xIndices.Length And currBMPIndex <= 1294 + Do While currBMPIndex <= 1294 AndAlso hBMP(currBMPIndex + 1) <> "" + currBMPIndex += 1 + Loop + If currBMPIndex > 1294 Then Exit Do + + xIndices(i) = currBMPIndex + currBMPIndex += 1 + i += 1 + Loop + + If currBMPIndex > 1294 Then + ReDim Preserve xPath(i - 1) + ReDim Preserve xIndices(i - 1) + End If + End If + + 'Dim xI2 As Integer = 0 + For xI1 As Integer = 0 To UBound(xPath) + 'If xI2 > UBound(xIndices) Then Exit For + 'hBMP(xIndices(xI2) + 1) = GetFileName(xPath(xI1)) + 'LBMP.Items.Item(xIndices(xI2)) = C10to36(xIndices(xI2) + 1) & ": " & GetFileName(xPath(xI1)) + hBMP(xIndices(xI1) + 1) = GetFileName(xPath(xI1)) + LBMP.Items.Item(xIndices(xI1)) = C10to36(xIndices(xI1) + 1) & ": " & GetFileName(xPath(xI1)) + 'xI2 += 1 + ' Add BMPeforms to wLBMP + Next + + LBMP.SelectedIndices.Clear() + For xI1 As Integer = 0 To CInt(IIf(UBound(xIndices) < UBound(xPath), UBound(xIndices), UBound(xPath))) + LBMP.SelectedIndices.Add(xIndices(xI1)) + Next + + If IsSaved Then SetIsSaved(False) + RefreshPanelAll() + End Sub + + Private Sub POBMP_DragDrop(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles POBMP.DragDrop + ReDim DDFileName(-1) + If Not e.Data.GetDataPresent(DataFormats.FileDrop) Then Return + + Dim xOrigPath() As String = CType(e.Data.GetData(DataFormats.FileDrop), String()) + Dim xPath() As String = FilterFileBySupported(xOrigPath, SupportedAudioExtension) + Array.Sort(xPath) + If xPath.Length = 0 Then + RefreshPanelAll() + Exit Sub + End If + + AddToPOBMP(xPath) + End Sub + + Private Sub POBMP_DragEnter(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles POBMP.DragEnter + If e.Data.GetDataPresent(DataFormats.FileDrop) Then + e.Effect = DragDropEffects.Copy + DDFileName = FilterFileBySupported(CType(e.Data.GetData(DataFormats.FileDrop), String()), SupportedAudioExtension) + Else + e.Effect = DragDropEffects.None + End If + RefreshPanelAll() + End Sub + + Private Sub POBMP_DragLeave(ByVal sender As Object, ByVal e As System.EventArgs) Handles POBMP.DragLeave + ReDim DDFileName(-1) + RefreshPanelAll() + End Sub + + Private Sub POBMP_Resize(ByVal sender As Object, ByVal e As System.EventArgs) Handles POBMP.Resize + LBMP.Height = POBMP.Height - 25 + End Sub + Private Sub mn_DropDownClosed(ByVal sender As Object, ByVal e As System.EventArgs) Dim TSMIS As ToolStripMenuItem = CType(sender, ToolStripMenuItem) TSMIS.ForeColor = Color.White @@ -5386,7 +5506,7 @@ Public Class MainWindow Dim xL1 As String = C10to36(xI1) Dim xL2 As String = C10to36(xI1 + 1) For xI2 As Integer = 1 To UBound(Notes) - If IsColumnNumeric(Notes(xI2).ColumnIndex) Then Continue For + If Not IsColumnSound(Notes(xI2).ColumnIndex) Then Continue For If C10to36(Notes(xI2).Value \ 10000) = xL1 Then Me.RedoRelabelNote(Notes(xI2), xI1 * 10000 + 10000, xUndo, xRedo) @@ -5442,12 +5562,10 @@ Public Class MainWindow LWAV.Items.Item(xI1 + 1) = C10to36(xI1 + 2) & ": " & hWAV(xI1 + 2) If WAVChangeLabel Then - - Dim xL1 As String = C10to36(xI1 + 2) Dim xL2 As String = C10to36(xI1 + 1) For xI2 As Integer = 1 To UBound(Notes) - If IsColumnNumeric(Notes(xI2).ColumnIndex) Then Continue For + If Not IsColumnSound(Notes(xI2).ColumnIndex) Then Continue For If C10to36(Notes(xI2).Value \ 10000) = xL1 Then Me.RedoRelabelNote(Notes(xI2), xI1 * 10000 + 10000, xUndo, xRedo) @@ -5557,6 +5675,168 @@ Public Class MainWindow POStatusRefresh() End Sub + + Private Sub CBMPMultiSelect_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CBMPMultiSelect.CheckedChanged + BMPMultiSelect = CBMPMultiSelect.Checked + LBMP.SelectionMode = CType(IIf(BMPMultiSelect, SelectionMode.MultiExtended, SelectionMode.One), SelectionMode) + End Sub + + Private Sub CBMPChangeLabel_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CBMPChangeLabel.CheckedChanged + BMPChangeLabel = CBMPChangeLabel.Checked + End Sub + + Private Sub BBMPUp_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BBMPUp.Click + If LBMP.SelectedIndex = -1 Then Return + + Dim xUndo As UndoRedo.LinkedURCmd = Nothing + Dim xRedo As UndoRedo.LinkedURCmd = New UndoRedo.Void + Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo + + Dim xIndices(LBMP.SelectedIndices.Count - 1) As Integer + LBMP.SelectedIndices.CopyTo(xIndices, 0) + + Dim xS As Integer + For xS = 0 To 1294 + If Array.IndexOf(xIndices, xS) = -1 Then Exit For + Next + + Dim xStr As String = "" + Dim xIndex As Integer = -1 + For xI1 As Integer = xS To 1294 + xIndex = Array.IndexOf(xIndices, xI1) + If xIndex <> -1 Then + xStr = hBMP(xI1 + 1) + hBMP(xI1 + 1) = hBMP(xI1) + hBMP(xI1) = xStr + + LBMP.Items.Item(xI1) = C10to36(xI1 + 1) & ": " & hBMP(xI1 + 1) + LBMP.Items.Item(xI1 - 1) = C10to36(xI1) & ": " & hBMP(xI1) + + If BMPChangeLabel Then + Dim xL1 As String = C10to36(xI1) + Dim xL2 As String = C10to36(xI1 + 1) + For xI2 As Integer = 1 To UBound(Notes) + If IsColumnNumeric(Notes(xI2).ColumnIndex) Then Continue For + + If C10to36(Notes(xI2).Value \ 10000) = xL1 Then + Me.RedoRelabelNote(Notes(xI2), xI1 * 10000 + 10000, xUndo, xRedo) + Notes(xI2).Value = xI1 * 10000 + 10000 + + ElseIf C10to36(Notes(xI2).Value \ 10000) = xL2 Then + Me.RedoRelabelNote(Notes(xI2), xI1 * 10000, xUndo, xRedo) + Notes(xI2).Value = xI1 * 10000 + + End If + Next + + End If + xIndices(xIndex) += -1 + End If + Next + + LBMP.SelectedIndices.Clear() + For xI1 As Integer = 0 To UBound(xIndices) + LBMP.SelectedIndices.Add(xIndices(xI1)) + Next + + AddUndo(xUndo, xBaseRedo.Next) + RefreshPanelAll() + POStatusRefresh() + End Sub + + Private Sub BBMPDown_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BBMPDown.Click + If LBMP.SelectedIndex = -1 Then Return + + Dim xUndo As UndoRedo.LinkedURCmd = Nothing + Dim xRedo As UndoRedo.LinkedURCmd = New UndoRedo.Void + Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo + + Dim xIndices(LBMP.SelectedIndices.Count - 1) As Integer + LBMP.SelectedIndices.CopyTo(xIndices, 0) + + Dim xS As Integer + For xS = 1294 To 0 Step -1 + If Array.IndexOf(xIndices, xS) = -1 Then Exit For + Next + + Dim xStr As String = "" + Dim xIndex As Integer = -1 + For xI1 As Integer = xS To 0 Step -1 + xIndex = Array.IndexOf(xIndices, xI1) + If xIndex <> -1 Then + xStr = hBMP(xI1 + 1) + hBMP(xI1 + 1) = hBMP(xI1 + 2) + hBMP(xI1 + 2) = xStr + + LBMP.Items.Item(xI1) = C10to36(xI1 + 1) & ": " & hBMP(xI1 + 1) + LBMP.Items.Item(xI1 + 1) = C10to36(xI1 + 2) & ": " & hBMP(xI1 + 2) + + If BMPChangeLabel Then + + + Dim xL1 As String = C10to36(xI1 + 2) + Dim xL2 As String = C10to36(xI1 + 1) + For xI2 As Integer = 1 To UBound(Notes) + If IsColumnNumeric(Notes(xI2).ColumnIndex) Then Continue For + + If C10to36(Notes(xI2).Value \ 10000) = xL1 Then + Me.RedoRelabelNote(Notes(xI2), xI1 * 10000 + 10000, xUndo, xRedo) + Notes(xI2).Value = xI1 * 10000 + 10000 + + ElseIf C10to36(Notes(xI2).Value \ 10000) = xL2 Then + Me.RedoRelabelNote(Notes(xI2), xI1 * 10000 + 20000, xUndo, xRedo) + Notes(xI2).Value = xI1 * 10000 + 20000 + + End If + Next + + End If + xIndices(xIndex) += 1 + End If + Next + + LBMP.SelectedIndices.Clear() + For xI1 As Integer = 0 To UBound(xIndices) + LBMP.SelectedIndices.Add(xIndices(xI1)) + Next + + AddUndo(xUndo, xBaseRedo.Next) + RefreshPanelAll() + POStatusRefresh() + End Sub + + Private Sub BBMPBrowse_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BBMPBrowse.Click + Dim xDBMP As New OpenFileDialog + xDBMP.Filter = Strings.FileType._image & "|*.bmp;*.png;*.jpg;*.gif|" & + Strings.FileType._all & "|*.*" + xDBMP.InitialDirectory = IIf(ExcludeFileName(FileName) = "", InitPath, ExcludeFileName(FileName)).ToString() + xDBMP.DefaultExt = "png" + xDBMP.Multiselect = BMPMultiSelect + + If xDBMP.ShowDialog = Windows.Forms.DialogResult.Cancel Then Exit Sub + InitPath = ExcludeFileName(xDBMP.FileName) + + AddToPOBMP(xDBMP.FileNames) + End Sub + + Private Sub BBMPRemove_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BBMPRemove.Click + Dim xIndices(LBMP.SelectedIndices.Count - 1) As Integer + LBMP.SelectedIndices.CopyTo(xIndices, 0) + For xI1 As Integer = 0 To UBound(xIndices) + hBMP(xIndices(xI1) + 1) = "" + LBMP.Items.Item(xIndices(xI1)) = C10to36(xIndices(xI1) + 1) & ": " + Next + + LBMP.SelectedIndices.Clear() + For xI1 As Integer = 0 To UBound(xIndices) + LBMP.SelectedIndices.Add(xIndices(xI1)) + Next + + If IsSaved Then SetIsSaved(False) + RefreshPanelAll() + POStatusRefresh() + End Sub + Private Sub mnMain_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles mnMain.MouseDown ', TBMain.MouseDown ', pttl.MouseDown, pIsSaved.MouseDown If e.Button = Windows.Forms.MouseButtons.Left Then ReleaseCapture() @@ -6016,6 +6296,7 @@ case2: Dim xI0 As Integer POGridSwitch.CheckedChanged, POWaveFormSwitch.CheckedChanged, POWAVSwitch.CheckedChanged, + POBMPSwitch.CheckedChanged, POBeatSwitch.CheckedChanged, POExpansionSwitch.CheckedChanged @@ -6028,6 +6309,7 @@ case2: Dim xI0 As Integer ElseIf Object.ReferenceEquals(sender, POGridSwitch) Then : Target = POGridInner ElseIf Object.ReferenceEquals(sender, POWaveFormSwitch) Then : Target = POWaveFormInner ElseIf Object.ReferenceEquals(sender, POWAVSwitch) Then : Target = POWAVInner + ElseIf Object.ReferenceEquals(sender, POBMPSwitch) Then : Target = POBMPInner ElseIf Object.ReferenceEquals(sender, POBeatSwitch) Then : Target = POBeatInner ElseIf Object.ReferenceEquals(sender, POExpansionSwitch) Then : Target = POExpansionInner End If @@ -6048,6 +6330,7 @@ case2: Dim xI0 As Integer POGridExpander.CheckedChanged, POWaveFormExpander.CheckedChanged, POWAVExpander.CheckedChanged, + POBMPExpander.CheckedChanged, POBeatExpander.CheckedChanged Try @@ -6060,6 +6343,7 @@ case2: Dim xI0 As Integer ElseIf Object.ReferenceEquals(sender, POGridExpander) Then : Target = POGridPart2 ' : TargetParent = POGridInner ElseIf Object.ReferenceEquals(sender, POWaveFormExpander) Then : Target = POWaveFormPart2 ' : TargetParent = POWaveFormInner ElseIf Object.ReferenceEquals(sender, POWAVExpander) Then : Target = POWAVPart2 ' : TargetParent = POWaveFormInner + ElseIf Object.ReferenceEquals(sender, POBMPExpander) Then : Target = POBMPPart2 ' : TargetParent = POWaveFormInner ElseIf Object.ReferenceEquals(sender, POBeatExpander) Then : Target = POBeatPart2 ' : TargetParent = POWaveFormInner End If diff --git a/iBMSC/PanelDraw.vb b/iBMSC/PanelDraw.vb index 5a559d43c..fca241021 100644 --- a/iBMSC/PanelDraw.vb +++ b/iBMSC/PanelDraw.vb @@ -117,18 +117,34 @@ Partial Public Class MainWindow End Sub Private Sub DrawTempNote(e1 As BufferedGraphics, xTHeight As Integer, xHS As Integer, xVS As Integer) - Dim xValue As Integer = (LWAV.SelectedIndex + 1) * 10000 + Dim xText As String + + If IsColumnNumeric(SelectedColumn) Then + xText = GetColumn(SelectedColumn).Title + + ElseIf IsColumnSound(SelectedColumn) Then + Dim xValue = LWAV.SelectedIndex + 1 + If ShowFileName Then + xText = Path.GetFileNameWithoutExtension(hWAV(xValue)) + Else + xText = C10to36(xValue) + End If + + Else + Dim xValue = LBMP.SelectedIndex + 1 + If ShowFileName Then + xText = Path.GetFileNameWithoutExtension(hBMP(xValue)) + Else + xText = C10to36(xValue) + End If + + End If Dim xAlpha As Single = 1.0F If ModifierHiddenActive() Then xAlpha = vo.kOpacity End If - Dim xText As String = C10to36(xValue \ 10000) - If IsColumnNumeric(SelectedColumn) Then - xText = GetColumn(SelectedColumn).Title - End If - Dim xPen As Pen Dim xBrush As Drawing2D.LinearGradientBrush Dim xBrush2 As SolidBrush @@ -928,6 +944,7 @@ Partial Public Class MainWindow End Function Private Function GetNoteLabel(ByVal sNote As Note) As String + Dim xIC10 As Integer = CInt(sNote.Value \ 10000) ' If note is a comment note If sNote.Comment Then @@ -939,8 +956,10 @@ Partial Public Class MainWindow End If ElseIf IsColumnNumeric(sNote.ColumnIndex) Then ' IIf(IsColumnNumeric(sNote.ColumnIndex) AndAlso Not sNote.Comment, sNote.Value / 10000, xLabel) GetNoteLabel = (sNote.Value / 10000).ToString() - ElseIf ShowFileName AndAlso hWAV(xIC10) <> "" Then + ElseIf ShowFileName AndAlso IsColumnSound(sNote.ColumnIndex) AndAlso hWAV(xIC10) <> "" Then GetNoteLabel = Path.GetFileNameWithoutExtension(hWAV(xIC10)) + ElseIf ShowFileName AndAlso hBMP(xIC10) <> "" Then + GetNoteLabel = Path.GetFileNameWithoutExtension(hBMP(xIC10)) Else GetNoteLabel = C10to36(xIC10) End If diff --git a/iBMSC/PanelEvents.vb b/iBMSC/PanelEvents.vb index a529e6251..cb46bae90 100644 --- a/iBMSC/PanelEvents.vb +++ b/iBMSC/PanelEvents.vb @@ -417,9 +417,9 @@ Partial Public Class MainWindow .Value += CDec(IIf(.Value > .Maximum - .Increment, .Maximum - .Value, .Increment)) End With Case "DecreaseCurrentWav" - DecreaseCurrentWav() + DecreaseCurrentWAV() Case "IncreaseCurrentWav" - IncreaseCurrentWav() + IncreaseCurrentWAV() Case "TBPreviewHighlighted_Click" TBPreviewHighlighted_Click(sender, New EventArgs) Case "GetVPositionFromTime" ' Currently not accessible @@ -452,7 +452,7 @@ Partial Public Class MainWindow Return False End Function - Private Sub DecreaseCurrentWav() + Private Sub DecreaseCurrentWAV() If LWAV.SelectedIndex = -1 Then LWAV.SelectedIndex = 0 Else @@ -463,7 +463,7 @@ Partial Public Class MainWindow End If End Sub - Private Sub IncreaseCurrentWav() + Private Sub IncreaseCurrentWAV() If LWAV.SelectedIndex = -1 Then LWAV.SelectedIndex = 0 Else @@ -471,7 +471,30 @@ Partial Public Class MainWindow If newIndex > LWAV.Items.Count - 1 Then newIndex = LWAV.Items.Count - 1 LWAV.SelectedIndices.Clear() LWAV.SelectedIndex = newIndex - ValidateWavListView() + ValidateWAVListView() + End If + End Sub + + Private Sub DecreaseCurrentBMP() + If LBMP.SelectedIndex = -1 Then + LBMP.SelectedIndex = 0 + Else + Dim newIndex As Integer = LBMP.SelectedIndex - 1 + If newIndex < 0 Then newIndex = 0 + LBMP.SelectedIndices.Clear() + LBMP.SelectedIndex = newIndex + End If + End Sub + + Private Sub IncreaseCurrentBMP() + If LBMP.SelectedIndex = -1 Then + LBMP.SelectedIndex = 0 + Else + Dim newIndex As Integer = LBMP.SelectedIndex + 1 + If newIndex > LBMP.Items.Count - 1 Then newIndex = LBMP.Items.Count - 1 + LBMP.SelectedIndices.Clear() + LBMP.SelectedIndex = newIndex + ValidateBMPListView() End If End Sub @@ -481,7 +504,7 @@ Partial Public Class MainWindow Dim bMoveAndDeselectFirstNote = My.Computer.Keyboard.ShiftKeyDown For xI2 As Integer = 1 To UBound(Notes) - If Not Notes(xI2).Selected Then Continue For + If Not Notes(xI2).Selected OrElse Not IsColumnSound(Notes(xI2).ColumnIndex) Then Continue For With Notes(xI2) Dim currentBGMColumn As Integer = niB @@ -713,7 +736,7 @@ Partial Public Class MainWindow If My.Computer.Keyboard.ShiftKeyDown Then LWAV.SelectedIndices.Clear() LWAV.SelectedIndex = C36to10(C10to36(Notes(xI1).Value \ 10000)) - 1 - ValidateWavListView() + ValidateWAVListView() Else Dim xUndo As UndoRedo.LinkedURCmd = Nothing @@ -872,7 +895,7 @@ Partial Public Class MainWindow ShouldDrawTempNote = True - Else + ElseIf IsColumnSound(xColumn) Then Dim xLbl As Integer = (LWAV.SelectedIndex + 1) * 10000 Dim Landmine As Boolean = ModifierLandmineActive() @@ -892,7 +915,7 @@ Partial Public Class MainWindow SelectedNotes(0).LNPair = -1 If TBWavIncrease.Checked Then - IncreaseCurrentWav() + IncreaseCurrentWAV() End If 'KMouseDown = 1 @@ -905,6 +928,33 @@ Partial Public Class MainWindow Dim xRedo As UndoRedo.LinkedURCmd = Nothing RedoAddNote(Notes(UBound(Notes)), xUndo, xRedo, TBWavIncrease.Checked) AddUndo(xUndo, xRedo) + + Else ' Column is image + Dim xLbl As Integer = (LBMP.SelectedIndex + 1) * 10000 + + ReDim Preserve Notes(UBound(Notes) + 1) + With Notes(UBound(Notes)) + .VPosition = xVPosition + .ColumnIndex = xColumn + .Value = xLbl + .Hidden = False + .Landmine = False + .TempMouseDown = True + End With + + ReDim SelectedNotes(0) + SelectedNotes(0) = Notes(UBound(Notes)) + SelectedNotes(0).LNPair = -1 + + ' If TBWavIncrease.Checked Then + ' IncreaseCurrentWAV() + ' End If + uAdded = False + + Dim xUndo As UndoRedo.LinkedURCmd = Nothing + Dim xRedo As UndoRedo.LinkedURCmd = Nothing + RedoAddNote(Notes(UBound(Notes)), xUndo, xRedo, False) + AddUndo(xUndo, xRedo) End If SortByVPositionInsertion() @@ -1139,8 +1189,8 @@ Partial Public Class MainWindow End If End If Else - 'Label prompt - Dim xStr As String = UCase(Trim(InputBox(Strings.Messages.PromptEnter, Me.Text))) + 'Label prompt + Dim xStr As String = UCase(Trim(InputBox(Strings.Messages.PromptEnter, Me.Text))) If Len(xStr) = 0 Then Return @@ -1902,13 +1952,18 @@ Partial Public Class MainWindow ' az: Handle zoom in/out. Should work with any of the three splitters. Private Sub PMain_Scroll(sender As Object, e As MouseEventArgs) Handles PMainIn.MouseWheel, PMainInL.MouseWheel, PMainInR.MouseWheel + With My.Computer.Keyboard - If .CtrlKeyDown Then + If .ShiftKeyDown Then + If .CtrlKeyDown Then + If Math.Sign(e.Delta) = -1 Then IncreaseCurrentBMP() Else DecreaseCurrentBMP() + Else + If Math.Sign(e.Delta) = -1 Then IncreaseCurrentWAV() Else DecreaseCurrentWAV() + End If + ElseIf .CtrlKeyDown Then Dim dv = Math.Round(CGHeight2.Value + e.Delta / 120) CGHeight2.Value = CInt(Math.Min(CGHeight2.Maximum, Math.Max(CGHeight2.Minimum, dv))) CGHeight.Value = CDec(CGHeight2.Value / 4) - ElseIf .ShiftKeyDown Then - If Math.Sign(e.Delta) = -1 Then IncreaseCurrentWav() Else DecreaseCurrentWav() End If End With End Sub @@ -2006,7 +2061,7 @@ Partial Public Class MainWindow End If End If - Else + ElseIf IsColumnSound(xColumn) Then Dim xValue As Integer = (LWAV.SelectedIndex + 1) * 10000 For xI1 = 1 To UBound(Notes) @@ -2020,9 +2075,26 @@ Partial Public Class MainWindow RedoAddNote(n, xUndo, xRedo) AddNote(n) + AddUndo(xUndo, xRedo) + Else ' Column is image + Dim xValue As Integer = (LBMP.SelectedIndex + 1) * 10000 + + For xI1 = 1 To UBound(Notes) + If Notes(xI1).VPosition = xVPosition AndAlso Notes(xI1).ColumnIndex = xColumn Then _ + RedoRemoveNote(Notes(xI1), xUndo, xRedo) + Next + + Dim n = New Note(xColumn, xVPosition, xValue, + LongNote, False, True, False) + + RedoAddNote(n, xUndo, xRedo) + AddNote(n) + AddUndo(xUndo, xRedo) End If End If + Else + End If If Not ShouldDrawTempNote Then ShouldDrawTempNote = True diff --git a/iBMSC/Strings.vb b/iBMSC/Strings.vb index 9bc97341a..db81ff5cf 100644 --- a/iBMSC/Strings.vb +++ b/iBMSC/Strings.vb @@ -1,5 +1,5 @@ Public Class Strings - + ' TODO: Add all strings for new features here... Public Shared OK As String = "OK" Public Shared Cancel As String = "Cancel" Public Shared None As String = "None" diff --git a/misc/Data/eng.Lang.xml b/misc/Data/eng.Lang.xml index c3a2cd58a4c4cba8b8c9c90dd02a409531a85f35..e402b3534998a3f6efb2a061e9f45a72fdb15c3b 100644 GIT binary patch delta 195 zcmbQ$&9tMBX~P%0$pTs|^)3vh3 Date: Fri, 20 May 2022 23:21:40 +0800 Subject: [PATCH 194/257] Update PanelDraw.vb --- iBMSC/PanelDraw.vb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/iBMSC/PanelDraw.vb b/iBMSC/PanelDraw.vb index fca241021..066fb9ab8 100644 --- a/iBMSC/PanelDraw.vb +++ b/iBMSC/PanelDraw.vb @@ -124,7 +124,7 @@ Partial Public Class MainWindow ElseIf IsColumnSound(SelectedColumn) Then Dim xValue = LWAV.SelectedIndex + 1 - If ShowFileName Then + If ShowFileName AndAlso hWAV(xValue) <> "" Then xText = Path.GetFileNameWithoutExtension(hWAV(xValue)) Else xText = C10to36(xValue) @@ -132,7 +132,7 @@ Partial Public Class MainWindow Else Dim xValue = LBMP.SelectedIndex + 1 - If ShowFileName Then + If ShowFileName AndAlso hBMP(xValue) <> "" Then xText = Path.GetFileNameWithoutExtension(hBMP(xValue)) Else xText = C10to36(xValue) From aedc283b02a4250780c491aa19544c8df900b908 Mon Sep 17 00:00:00 2001 From: psyk2642 <60137590+psyk2642@users.noreply.github.com> Date: Sat, 21 May 2022 00:01:13 +0800 Subject: [PATCH 195/257] Added a "Brush" Tool to image notes Select a range of BMP files in the #BMP list then create a long note in NTInput mode, and the BMP notes will be added correspondingly. --- README.md | 2 ++ iBMSC/PanelEvents.vb | 44 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 46 insertions(+) diff --git a/README.md b/README.md index 1583464ce..31749915a 100644 --- a/README.md +++ b/README.md @@ -51,6 +51,8 @@ Listed in the order added. * Added ability to convert between LNObj's and NT LN's. * Added ability to copy and paste patterns to highlighted notes. Accessible via Ctrl+Shift+V. * Added BMS file tabs. See below for details. +* Added #BMP list. +* Added "brush" tool to BMP notes. Select a range of BMP files in the #BMP list then create a long note in NTInput mode, and the BMP notes will be added correspondingly. ## Keyboard shortcuts * While rebinding keys is now supported, the default keybinding has also been changed to allow note placement between D1 and D8 or only on PMS lanes in PMS mode: diff --git a/iBMSC/PanelEvents.vb b/iBMSC/PanelEvents.vb index cb46bae90..6a9b4a1bf 100644 --- a/iBMSC/PanelEvents.vb +++ b/iBMSC/PanelEvents.vb @@ -1978,6 +1978,50 @@ Partial Public Class MainWindow HSValue = -1 Timer1.Enabled = False 'KMouseDown = -1 + + ' Faux Brush Tool for notes + If SelectedNotes.Length = 1 AndAlso IsColumnImage(SelectedNotes(0).ColumnIndex) Then + ' Dim VLen = SelectedNotes(0).Length + ' P: This line above doesn't work so yeah, only way to find it is with the Undo list LOL + Dim VPosStart As Double + Dim VLen As Double + Dim xColumn As Integer + With CType(sRedo(sI), UndoRedo.AddNote).note + VLen = .Length + VPosStart = .VPosition + xColumn = .ColumnIndex + End With + + If VLen <> 0 Then + TBUndo_Click(Nothing, Nothing) + + Dim xUndo As UndoRedo.LinkedURCmd = Nothing + Dim xRedo As UndoRedo.LinkedURCmd = New UndoRedo.Void + Dim xBaseRedo As UndoRedo.LinkedURCmd = xRedo + + Dim n = New Note(xColumn, VPosStart, (LBMP.SelectedIndices(0) + 1) * 10000, + False, False, True, False) + RedoAddNote(n, xUndo, xRedo) + AddNote(n) + + For xI = 1 To LBMP.SelectedIndices.Count - 1 + n = New Note(xColumn, VPosStart + VLen * xI / (LBMP.SelectedIndices.Count - 1), (LBMP.SelectedIndices(xI) + 1) * 10000, + False, False, True, False) + + RedoAddNote(n, xUndo, xRedo) + AddNote(n) + Next + AddUndo(xUndo, xBaseRedo.Next) + + If Not ShouldDrawTempNote Then ShouldDrawTempNote = True + + CalculateGreatestVPosition() + RefreshPanelAll() + ReDim SelectedNotes(-1) + Exit Sub + End If + End If + ReDim SelectedNotes(-1) Dim PanelS As Panel = CType(sender, Panel) From 9509c49e64b6d8d082e4eed12b92ef099b167ae8 Mon Sep 17 00:00:00 2001 From: psyk2642 <60137590+psyk2642@users.noreply.github.com> Date: Sat, 21 May 2022 00:01:48 +0800 Subject: [PATCH 196/257] Update AssemblyInfo.vb --- iBMSC/My Project/AssemblyInfo.vb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/iBMSC/My Project/AssemblyInfo.vb b/iBMSC/My Project/AssemblyInfo.vb index e6bdaa520..a1ad1c1c5 100644 --- a/iBMSC/My Project/AssemblyInfo.vb +++ b/iBMSC/My Project/AssemblyInfo.vb @@ -30,7 +30,7 @@ Imports System.Resources ' by using the '*' as shown below: ' - - + + \ No newline at end of file From 42239c36a1e6fae0dd7c3fe0f6e0f16b250e1150 Mon Sep 17 00:00:00 2001 From: psyk2642 <60137590+psyk2642@users.noreply.github.com> Date: Sat, 21 May 2022 00:08:58 +0800 Subject: [PATCH 197/257] File Tab Color Fix --- iBMSC/EditorRecent.vb | 6 +++--- iBMSC/FileTab.vb | 8 ++++++-- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/iBMSC/EditorRecent.vb b/iBMSC/EditorRecent.vb index d29661f8f..f589e7993 100644 --- a/iBMSC/EditorRecent.vb +++ b/iBMSC/EditorRecent.vb @@ -68,21 +68,21 @@ ClearUndo() OpenBMS(My.Computer.FileSystem.ReadAllText(xFileName, TextEncoding)) SetIsSaved(True) - AddBMSFileToListAndTBTabAndStruct(xFileName) + AddBMSFileToListAndColorAndTBTabAndStruct(xFileName) Case ".ibmsc" SetFileName("Imported_" & GetFileName(xFileName)) OpeniBMSC(xFileName) InitPath = ExcludeFileName(xFileName) SetIsSaved(False) - AddBMSFileToListAndTBTabAndStruct(xFileName) + AddBMSFileToListAndColorAndTBTabAndStruct(xFileName) Case Else SetFileName(xFileName) ClearUndo() OpenBMS(My.Computer.FileSystem.ReadAllText(xFileName, TextEncoding)) SetIsSaved(True) - AddBMSFileToListAndTBTabAndStruct(xFileName) + AddBMSFileToListAndColorAndTBTabAndStruct(xFileName) End Select End Sub diff --git a/iBMSC/FileTab.vb b/iBMSC/FileTab.vb index 3c657f3d6..2550cf78e 100644 --- a/iBMSC/FileTab.vb +++ b/iBMSC/FileTab.vb @@ -200,11 +200,11 @@ Partial Public Class MainWindow Public Sub AddBMSFiles(xPaths As String()) For xI = 0 To UBound(xPaths) NewRecent(xPaths(xI)) - AddBMSFileToListAndTBTabAndStruct(xPaths(xI)) + AddBMSFileToListAndColorAndTBTabAndStruct(xPaths(xI)) Next End Sub - Private Sub AddBMSFileToListAndTBTabAndStruct(xPath As String) + Private Sub AddBMSFileToListAndColorAndTBTabAndStruct(xPath As String) If BMSFileList.Contains(xPath) Then SetBMSFileIndex(Array.IndexOf(BMSFileList, xPath)) @@ -212,15 +212,19 @@ Partial Public Class MainWindow If BMSFileIndex = UBound(BMSFileList) Then BMSFileIndex -= 1 ReDim Preserve BMSFileList(BMSFileList.Length) ReDim Preserve BMSFileTSBList(BMSFileTSBList.Length) + ReDim Preserve BMSFileColor(BMSFileColor.Length) For xI = UBound(BMSFileList) - 1 To BMSFileIndex + 1 Step -1 BMSFileList(xI + 1) = BMSFileList(xI) + BMSFileColor(xI + 1) = BMSFileColor(xI) BMSFileTSBList(xI + 1) = BMSFileTSBList(xI) Next BMSFileIndex += 1 ' Add to BMSFileList BMSFileList(BMSFileIndex) = xPath + ' Add to BMSFileColor + BMSFileColor(BMSFileIndex) = System.Drawing.SystemColors.Control ' Add to BMSFileTSBList BMSFileTSBList(BMSFileIndex) = NewBMSTab(xPath) From 862e99ecc447e9324c1cf3008af08aad1461017b Mon Sep 17 00:00:00 2001 From: psyk2642 <60137590+psyk2642@users.noreply.github.com> Date: Sat, 21 May 2022 00:11:00 +0800 Subject: [PATCH 198/257] Update MainWindow.designer.vb --- iBMSC/MainWindow.designer.vb | 50 ++++++++++++++++-------------------- 1 file changed, 22 insertions(+), 28 deletions(-) diff --git a/iBMSC/MainWindow.designer.vb b/iBMSC/MainWindow.designer.vb index 829fda751..8c8711307 100644 --- a/iBMSC/MainWindow.designer.vb +++ b/iBMSC/MainWindow.designer.vb @@ -421,7 +421,6 @@ Partial Class MainWindow Me.FStatus2.SuspendLayout() Me.FStatus.SuspendLayout() Me.ToolStripContainer1.ContentPanel.SuspendLayout() - Me.ToolStripContainer1.LeftToolStripPanel.SuspendLayout() Me.ToolStripContainer1.TopToolStripPanel.SuspendLayout() Me.ToolStripContainer1.SuspendLayout() Me.PMain.SuspendLayout() @@ -2144,12 +2143,8 @@ Partial Class MainWindow Me.ToolStripContainer1.ContentPanel.Controls.Add(Me.SpL) Me.ToolStripContainer1.ContentPanel.Controls.Add(Me.PMainR) Me.ToolStripContainer1.ContentPanel.Controls.Add(Me.PMainL) - Me.ToolStripContainer1.ContentPanel.Size = New System.Drawing.Size(1241, 711) + Me.ToolStripContainer1.ContentPanel.Size = New System.Drawing.Size(1267, 661) Me.ToolStripContainer1.Dock = System.Windows.Forms.DockStyle.Fill - ' - 'ToolStripContainer1.LeftToolStripPanel - ' - Me.ToolStripContainer1.LeftToolStripPanel.Controls.Add(Me.TBTab) Me.ToolStripContainer1.Location = New System.Drawing.Point(0, 0) Me.ToolStripContainer1.Name = "ToolStripContainer1" Me.ToolStripContainer1.Size = New System.Drawing.Size(1267, 759) @@ -2158,6 +2153,7 @@ Partial Class MainWindow ' 'ToolStripContainer1.TopToolStripPanel ' + Me.ToolStripContainer1.TopToolStripPanel.Controls.Add(Me.TBTab) Me.ToolStripContainer1.TopToolStripPanel.Controls.Add(Me.mnMain) Me.ToolStripContainer1.TopToolStripPanel.Controls.Add(Me.TBMain) ' @@ -2172,7 +2168,7 @@ Partial Class MainWindow Me.PMain.ForeColor = System.Drawing.Color.White Me.PMain.Location = New System.Drawing.Point(5, 0) Me.PMain.Name = "PMain" - Me.PMain.Size = New System.Drawing.Size(1231, 711) + Me.PMain.Size = New System.Drawing.Size(1257, 661) Me.PMain.TabIndex = 58 Me.PMain.TabStop = True Me.PMain.Tag = "1" @@ -2186,7 +2182,7 @@ Partial Class MainWindow Me.PMainIn.ForeColor = System.Drawing.Color.White Me.PMainIn.Location = New System.Drawing.Point(0, 0) Me.PMainIn.Name = "PMainIn" - Me.PMainIn.Size = New System.Drawing.Size(1214, 694) + Me.PMainIn.Size = New System.Drawing.Size(1240, 644) Me.PMainIn.TabIndex = 0 Me.PMainIn.TabStop = True Me.PMainIn.Tag = "1" @@ -2205,11 +2201,11 @@ Partial Class MainWindow Me.MainPanelScroll.AccessibleRole = System.Windows.Forms.AccessibleRole.ScrollBar Me.MainPanelScroll.Dock = System.Windows.Forms.DockStyle.Right Me.MainPanelScroll.LargeChange = 592 - Me.MainPanelScroll.Location = New System.Drawing.Point(1214, 0) + Me.MainPanelScroll.Location = New System.Drawing.Point(1240, 0) Me.MainPanelScroll.Maximum = 591 Me.MainPanelScroll.Minimum = -10000 Me.MainPanelScroll.Name = "MainPanelScroll" - Me.MainPanelScroll.Size = New System.Drawing.Size(17, 694) + Me.MainPanelScroll.Size = New System.Drawing.Size(17, 644) Me.MainPanelScroll.SmallChange = 12 Me.MainPanelScroll.TabIndex = 2 Me.MainPanelScroll.Tag = "1" @@ -2219,10 +2215,10 @@ Partial Class MainWindow Me.HS.AccessibleRole = System.Windows.Forms.AccessibleRole.ScrollBar Me.HS.Dock = System.Windows.Forms.DockStyle.Bottom Me.HS.LargeChange = 777 - Me.HS.Location = New System.Drawing.Point(0, 694) + Me.HS.Location = New System.Drawing.Point(0, 644) Me.HS.Maximum = 1233 Me.HS.Name = "HS" - Me.HS.Size = New System.Drawing.Size(1231, 17) + Me.HS.Size = New System.Drawing.Size(1257, 17) Me.HS.TabIndex = 3 Me.HS.Tag = "1" ' @@ -2231,9 +2227,9 @@ Partial Class MainWindow Me.SpR.Dock = System.Windows.Forms.DockStyle.Right Me.SpR.FlatAppearance.BorderSize = 0 Me.SpR.FlatStyle = System.Windows.Forms.FlatStyle.Flat - Me.SpR.Location = New System.Drawing.Point(1236, 0) + Me.SpR.Location = New System.Drawing.Point(1262, 0) Me.SpR.Name = "SpR" - Me.SpR.Size = New System.Drawing.Size(5, 711) + Me.SpR.Size = New System.Drawing.Size(5, 661) Me.SpR.TabIndex = 59 Me.SpR.TabStop = False Me.SpR.UseVisualStyleBackColor = True @@ -2246,7 +2242,7 @@ Partial Class MainWindow Me.SpL.FlatStyle = System.Windows.Forms.FlatStyle.Flat Me.SpL.Location = New System.Drawing.Point(0, 0) Me.SpL.Name = "SpL" - Me.SpL.Size = New System.Drawing.Size(5, 711) + Me.SpL.Size = New System.Drawing.Size(5, 661) Me.SpL.TabIndex = 60 Me.SpL.TabStop = False Me.SpL.UseVisualStyleBackColor = True @@ -2261,9 +2257,9 @@ Partial Class MainWindow Me.PMainR.Dock = System.Windows.Forms.DockStyle.Right Me.PMainR.Font = New System.Drawing.Font("Verdana", 9.0!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) Me.PMainR.ForeColor = System.Drawing.Color.White - Me.PMainR.Location = New System.Drawing.Point(1241, 0) + Me.PMainR.Location = New System.Drawing.Point(1267, 0) Me.PMainR.Name = "PMainR" - Me.PMainR.Size = New System.Drawing.Size(0, 711) + Me.PMainR.Size = New System.Drawing.Size(0, 661) Me.PMainR.TabIndex = 56 Me.PMainR.Tag = "2" ' @@ -2275,7 +2271,7 @@ Partial Class MainWindow Me.PMainInR.ForeColor = System.Drawing.Color.White Me.PMainInR.Location = New System.Drawing.Point(0, 0) Me.PMainInR.Name = "PMainInR" - Me.PMainInR.Size = New System.Drawing.Size(0, 694) + Me.PMainInR.Size = New System.Drawing.Size(0, 644) Me.PMainInR.TabIndex = 0 Me.PMainInR.TabStop = True Me.PMainInR.Tag = "2" @@ -2288,7 +2284,7 @@ Partial Class MainWindow Me.RightPanelScroll.Maximum = 591 Me.RightPanelScroll.Minimum = -10000 Me.RightPanelScroll.Name = "RightPanelScroll" - Me.RightPanelScroll.Size = New System.Drawing.Size(17, 694) + Me.RightPanelScroll.Size = New System.Drawing.Size(17, 644) Me.RightPanelScroll.SmallChange = 12 Me.RightPanelScroll.TabIndex = 2 Me.RightPanelScroll.Tag = "2" @@ -2297,7 +2293,7 @@ Partial Class MainWindow ' Me.HSR.Dock = System.Windows.Forms.DockStyle.Bottom Me.HSR.LargeChange = 777 - Me.HSR.Location = New System.Drawing.Point(0, 694) + Me.HSR.Location = New System.Drawing.Point(0, 644) Me.HSR.Maximum = 1233 Me.HSR.Name = "HSR" Me.HSR.Size = New System.Drawing.Size(0, 17) @@ -2315,7 +2311,7 @@ Partial Class MainWindow Me.PMainL.ForeColor = System.Drawing.Color.White Me.PMainL.Location = New System.Drawing.Point(0, 0) Me.PMainL.Name = "PMainL" - Me.PMainL.Size = New System.Drawing.Size(0, 711) + Me.PMainL.Size = New System.Drawing.Size(0, 661) Me.PMainL.TabIndex = 54 Me.PMainL.Tag = "0" ' @@ -2327,7 +2323,7 @@ Partial Class MainWindow Me.PMainInL.ForeColor = System.Drawing.Color.White Me.PMainInL.Location = New System.Drawing.Point(0, 0) Me.PMainInL.Name = "PMainInL" - Me.PMainInL.Size = New System.Drawing.Size(0, 694) + Me.PMainInL.Size = New System.Drawing.Size(0, 644) Me.PMainInL.TabIndex = 0 Me.PMainInL.TabStop = True Me.PMainInL.Tag = "0" @@ -2340,7 +2336,7 @@ Partial Class MainWindow Me.LeftPanelScroll.Maximum = 591 Me.LeftPanelScroll.Minimum = -10000 Me.LeftPanelScroll.Name = "LeftPanelScroll" - Me.LeftPanelScroll.Size = New System.Drawing.Size(17, 694) + Me.LeftPanelScroll.Size = New System.Drawing.Size(17, 644) Me.LeftPanelScroll.SmallChange = 12 Me.LeftPanelScroll.TabIndex = 2 Me.LeftPanelScroll.Tag = "0" @@ -2349,7 +2345,7 @@ Partial Class MainWindow ' Me.HSL.Dock = System.Windows.Forms.DockStyle.Bottom Me.HSL.LargeChange = 777 - Me.HSL.Location = New System.Drawing.Point(0, 694) + Me.HSL.Location = New System.Drawing.Point(0, 644) Me.HSL.Maximum = 1233 Me.HSL.Name = "HSL" Me.HSL.Size = New System.Drawing.Size(0, 17) @@ -2360,9 +2356,9 @@ Partial Class MainWindow ' Me.TBTab.BackColor = System.Drawing.SystemColors.Control Me.TBTab.Dock = System.Windows.Forms.DockStyle.None - Me.TBTab.Location = New System.Drawing.Point(0, 3) + Me.TBTab.Location = New System.Drawing.Point(3, 48) Me.TBTab.Name = "TBTab" - Me.TBTab.Size = New System.Drawing.Size(26, 111) + Me.TBTab.Size = New System.Drawing.Size(43, 25) Me.TBTab.TabIndex = 65 ' 'POptionsResizer @@ -4654,8 +4650,6 @@ Partial Class MainWindow Me.FStatus.ResumeLayout(False) Me.FStatus.PerformLayout() Me.ToolStripContainer1.ContentPanel.ResumeLayout(False) - Me.ToolStripContainer1.LeftToolStripPanel.ResumeLayout(False) - Me.ToolStripContainer1.LeftToolStripPanel.PerformLayout() Me.ToolStripContainer1.TopToolStripPanel.ResumeLayout(False) Me.ToolStripContainer1.TopToolStripPanel.PerformLayout() Me.ToolStripContainer1.ResumeLayout(False) From 3430021dabad94763e4a32e83dac9d7080fa8e7d Mon Sep 17 00:00:00 2001 From: psyk2642 <60137590+psyk2642@users.noreply.github.com> Date: Sat, 21 May 2022 00:29:01 +0800 Subject: [PATCH 199/257] Added SupportedImageExtension Borrowed some code from https://github.com/NS-Kazuki/iBMSC/commit/700339c0b82cdaadb394e4a369be3eaa2e13770b --- iBMSC/EditorPersistent.vb | 2 ++ iBMSC/MainWindow.vb | 14 +++++++------- iBMSC/Strings.vb | 2 ++ misc/Data/eng.Lang.xml | Bin 34616 -> 34960 bytes 4 files changed, 11 insertions(+), 7 deletions(-) diff --git a/iBMSC/EditorPersistent.vb b/iBMSC/EditorPersistent.vb index 218272ebd..62dbe992f 100644 --- a/iBMSC/EditorPersistent.vb +++ b/iBMSC/EditorPersistent.vb @@ -1240,7 +1240,9 @@ Partial Public Class MainWindow XMLLoadLocale(eFileType.Item("OGG"), Strings.FileType.OGG) XMLLoadLocale(eFileType.Item("MP3"), Strings.FileType.MP3) XMLLoadLocale(eFileType.Item("MID"), Strings.FileType.MID) + XMLLoadLocale(eFileType.Item("_im"), Strings.FileType._im) XMLLoadLocale(eFileType.Item("_image"), Strings.FileType._image) + XMLLoadLocale(eFileType.Item("_movie"), Strings.FileType._movie) XMLLoadLocale(eFileType.Item("EXE"), Strings.FileType.EXE) End If diff --git a/iBMSC/MainWindow.vb b/iBMSC/MainWindow.vb index d5195ee86..b6bd71333 100644 --- a/iBMSC/MainWindow.vb +++ b/iBMSC/MainWindow.vb @@ -107,6 +107,7 @@ Public Class MainWindow Dim DDFileName() As String = {} Dim SupportedFileExtension() As String = {".bms", ".bme", ".bml", ".pms", ".txt", ".sm", ".ibmsc"} Dim SupportedAudioExtension() As String = {} + Dim SupportedImageExtension() As String = {".bmp", ".png", ".jpg", ".jpeg", ".gif", ".mpg", ".mpeg", ".avi", ".m1v", ".m2v", ".m4v", ".mp4", ".webm", ".wmv"} 'Variables for theme 'Dim SaveTheme As Boolean = True @@ -1205,12 +1206,9 @@ Public Class MainWindow ReDim ExpansionSplit(2) LWAV.Items.Clear() - For xI1 = 1 To 1295 - LWAV.Items.Add(C10to36(xI1) & ": " & hWAV(xI1)) - Next - LBMP.Items.Clear() For xI1 = 1 To 1295 + LWAV.Items.Add(C10to36(xI1) & ": " & hWAV(xI1)) LBMP.Items.Add(C10to36(xI1) & ": " & hBMP(xI1)) Next @@ -3826,7 +3824,7 @@ Public Class MainWindow If Not e.Data.GetDataPresent(DataFormats.FileDrop) Then Return Dim xOrigPath() As String = CType(e.Data.GetData(DataFormats.FileDrop), String()) - Dim xPath() As String = FilterFileBySupported(xOrigPath, SupportedAudioExtension) + Dim xPath() As String = FilterFileBySupported(xOrigPath, SupportedImageExtension) Array.Sort(xPath) If xPath.Length = 0 Then RefreshPanelAll() @@ -3839,7 +3837,7 @@ Public Class MainWindow Private Sub POBMP_DragEnter(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles POBMP.DragEnter If e.Data.GetDataPresent(DataFormats.FileDrop) Then e.Effect = DragDropEffects.Copy - DDFileName = FilterFileBySupported(CType(e.Data.GetData(DataFormats.FileDrop), String()), SupportedAudioExtension) + DDFileName = FilterFileBySupported(CType(e.Data.GetData(DataFormats.FileDrop), String()), SupportedImageExtension) Else e.Effect = DragDropEffects.None End If @@ -5807,7 +5805,9 @@ Public Class MainWindow Private Sub BBMPBrowse_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BBMPBrowse.Click Dim xDBMP As New OpenFileDialog - xDBMP.Filter = Strings.FileType._image & "|*.bmp;*.png;*.jpg;*.gif|" & + xDBMP.Filter = Strings.FileType._im & "|*.bmp;*.png;*.jpg;*.gif;*.mpg;*.mpeg;*.avi;*.m1v;*.m2v;*.m4v;*.mp4;*.webm;*.wmv|" & + Strings.FileType._image & "|*.bmp;*.png;*.jpg;*.gif|" & + Strings.FileType._movie & "|*.mpg;*.mpeg;*.avi;*.m1v;*.m2v;*.m4v;*.mp4;*.webm;*.wmv|" & Strings.FileType._all & "|*.*" xDBMP.InitialDirectory = IIf(ExcludeFileName(FileName) = "", InitPath, ExcludeFileName(FileName)).ToString() xDBMP.DefaultExt = "png" diff --git a/iBMSC/Strings.vb b/iBMSC/Strings.vb index db81ff5cf..d0fc65d71 100644 --- a/iBMSC/Strings.vb +++ b/iBMSC/Strings.vb @@ -77,7 +77,9 @@ Public Class Strings Public Shared MP3 As String = "MPEG Layer-3 Audio (*.mp3)" Public Shared MID As String = "MIDI (*.mid)" + Public Shared _im As String = "Supported Image and Movie Format (*.png, *.bmp, *.jpg, *.gif, *.mpg, *.mpeg, *.avi, *.m1v, *.m2v, *.m4v, *.mp4, *.webm, *.wmv)" Public Shared _image As String = "Supported Image Format (*.png, *.bmp, *.jpg, *.gif)" + Public Shared _movie As String = "Supported Movie Format (*.mpg, *.mpeg, *.avi, *.m1v, *.m2v, *.m4v, *.mp4, *.webm, *.wmv)" Public Shared EXE As String = "Executable file (*.exe)" End Class diff --git a/misc/Data/eng.Lang.xml b/misc/Data/eng.Lang.xml index e402b3534998a3f6efb2a061e9f45a72fdb15c3b..c4cee53a8c35512097a4193083f523d56cc6c9ca 100644 GIT binary patch delta 254 zcmdnd$24Ig(}qLQj7pOaMmw|SG88bRPW~A!?Qh6X#-PKXz@WvT$B@flgu*jH;T15L zz*Uwrq%tG{)x&g_1KDK^nhZ*l&0}O);~6p;awmTb5$E>=iYGFp163;k>AcAoqg5xT fMH?^!^-ca5EsStSICb4&!=TRqcEx7*n2%Zj?3pt= delta 64 zcmbO*k!eRC(}qLQlfQ(BOuiAVH`yXqK(v6tgh7WvfkBHwkD;6)m!S;Ao4hbVm^&WG Q%Lno^8B#aTkNv0x0H&`KQUCw| From 77b913edeaf5858e9fdaf3bdc2c4c1a3ff2221f8 Mon Sep 17 00:00:00 2001 From: psyk2642 <60137590+psyk2642@users.noreply.github.com> Date: Sat, 21 May 2022 01:25:52 +0800 Subject: [PATCH 200/257] File Tab Fix --- iBMSC/MainWindow.vb | 1 + 1 file changed, 1 insertion(+) diff --git a/iBMSC/MainWindow.vb b/iBMSC/MainWindow.vb index b6bd71333..44a24955a 100644 --- a/iBMSC/MainWindow.vb +++ b/iBMSC/MainWindow.vb @@ -1449,6 +1449,7 @@ Public Class MainWindow ReDim Preserve BMSFileList(i) AddUntitledBMSFileToList() + ReDim BMSFileColor(UBound(BMSFileList)) ReDim BMSFileTSBList(UBound(BMSFileList)) ReDim BMSFileStructs(UBound(BMSFileList)) For xI = 0 To UBound(BMSFileList) From 2a80b7d75d7c21950d05d3485a55e66634033766 Mon Sep 17 00:00:00 2001 From: psyk2642 <60137590+psyk2642@users.noreply.github.com> Date: Sat, 21 May 2022 08:29:38 +0800 Subject: [PATCH 201/257] Code Update/Optimization --- README.md | 1 - iBMSC/ChartIO.vb | 35 +++++++++++++++++++---------------- iBMSC/MainWindow.vb | 45 ++++++++++++++++++++++++++------------------- iBMSC/PanelDraw.vb | 7 ++++--- 4 files changed, 49 insertions(+), 39 deletions(-) diff --git a/README.md b/README.md index 31749915a..be7ced598 100644 --- a/README.md +++ b/README.md @@ -19,7 +19,6 @@ Listed in the order added. * Reorganized the sidebar so you can tab between textboxes properly. * Prevented notes in Expansion Code from being loaded. * Rare bug that occurs when the mouse is highlighting a long note while toggling between NT and BMSE simultaneously. -* Slightly faster loading time. * Smoothened Selection Box animation. ## Functionalities diff --git a/iBMSC/ChartIO.vb b/iBMSC/ChartIO.vb index 74a630b21..799d48a63 100644 --- a/iBMSC/ChartIO.vb +++ b/iBMSC/ChartIO.vb @@ -218,7 +218,7 @@ Partial Public Class MainWindow Next UpdateMeasureBottom() - LBeatRefresh() + If Not IsApplicationInitializing Then LBeatRefresh() ' BPM must be updated before loading notes, do not combine loops ' xStrLine2 should contain only # lines for notes @@ -268,23 +268,26 @@ Partial Public Class MainWindow Else If NTInput Then ConvertBMSE2NT() - ' Add waveforms to wLWAV - If ShowWaveform Then WaveformLoadId = 1 : TimerLoadWaveform.Enabled = True - LWAVRefresh() - LWAV.SelectedIndex = 0 - LBMPRefresh() - LBMP.SelectedIndex = 0 + If Not IsApplicationInitializing Then + ' Add waveforms to wLWAV + If ShowWaveform Then WaveformLoadId = 1 : TimerLoadWaveform.Enabled = True + LWAVRefresh() + LWAV.SelectedIndex = 0 + LBMPRefresh() + LBMP.SelectedIndex = 0 - TExpansion.Text = xExpansion - End If + TExpansion.Text = xExpansion - LoadColorOverride(FileName) - SortByVPositionQuick(0, UBound(Notes)) - UpdatePairing() - CalculateTotalPlayableNotes() - CalculateGreatestVPosition() - RefreshPanelAll() - POStatusRefresh() + LoadColorOverride(FileName) + SortByVPositionQuick(0, UBound(Notes)) + UpdatePairing() + CalculateTotalPlayableNotes() + CalculateGreatestVPosition() + RefreshPanelAll() + POStatusRefresh() + + End If + End If End Sub Private Sub AddToExpansion(ByRef xExpansion As String, ByRef xStack As Integer, ByVal sLine As String) diff --git a/iBMSC/MainWindow.vb b/iBMSC/MainWindow.vb index 44a24955a..b33eaa48c 100644 --- a/iBMSC/MainWindow.vb +++ b/iBMSC/MainWindow.vb @@ -76,7 +76,7 @@ Public Class MainWindow Dim TemplateSnapToVPosition As Boolean = False Dim PastePatternToVPosition As Boolean = False - Dim IsInitializing As Boolean = True + Dim IsApplicationInitializing As Boolean = True Dim FirstMouseEnter As Boolean = True Dim WAVMultiSelect As Boolean = True @@ -1205,12 +1205,6 @@ Public Class MainWindow TExpansion.Text = "" ReDim ExpansionSplit(2) - LWAV.Items.Clear() - LBMP.Items.Clear() - For xI1 = 1 To 1295 - LWAV.Items.Add(C10to36(xI1) & ": " & hWAV(xI1)) - LBMP.Items.Add(C10to36(xI1) & ": " & hBMP(xI1)) - Next ReDim MeasureLength(999) LBeat.Items.Clear() @@ -1381,7 +1375,6 @@ Public Class MainWindow 'Me.ShowCaption = False 'SetWindowText(Me.Handle.ToInt32, FileName) - InitializeNewBMS() 'nBeatD.SelectedIndex = 4 Try @@ -1415,7 +1408,16 @@ Public Class MainWindow sRedo(1) = New UndoRedo.NoOperation sI = 0 + + LWAV.Items.Clear() + LBMP.Items.Clear() + For xI1 = 1 To 1295 + LWAV.Items.Add(C10to36(xI1) & ": " & hWAV(xI1)) + LBMP.Items.Add(C10to36(xI1) & ": " & hBMP(xI1)) + Next + LWAV.SelectedIndex = 0 + LBMP.SelectedIndex = 0 CHPlayer.SelectedIndex = 0 CalculateGreatestVPosition() @@ -1434,8 +1436,6 @@ Public Class MainWindow '----------------------------------------------------------------------------------------------------------------- End If 'On Error GoTo 0 - LoadColorOverride(FileName) - SetIsSaved(True) Dim BMSFileListCheck(UBound(BMSFileList)) As String Dim i = -1 @@ -1461,7 +1461,6 @@ Public Class MainWindow SetBMSFileIndex(BMSFileIndex) 'pIsSaved.Visible = Not IsSaved - IsInitializing = False If Process.GetProcessesByName(Process.GetCurrentProcess.ProcessName).Length <= 1 Then @@ -1490,8 +1489,6 @@ Public Class MainWindow End If End If - POStatusRefresh() - Me.ResumeLayout() tempResize = Me.WindowState Me.TopMost = False @@ -1512,7 +1509,15 @@ Public Class MainWindow If PreloadBMSStruct Then SaveAllBMSStruct() - If BMSFileIndex <> UBound(BMSFileList) Then ReadFile(BMSFileList(BMSFileIndex)) + IsApplicationInitializing = False + + If BMSFileIndex <> UBound(BMSFileList) Then ReadFile(BMSFileList(BMSFileIndex)) Else InitializeNewBMS() + + LoadColorOverride(FileName) + SetIsSaved(True) + + POStatusRefresh() + Me.ResumeLayout() End Sub Private Sub UpdatePairing() @@ -1874,6 +1879,8 @@ Public Class MainWindow LWAVRefresh() LWAV.SelectedIndex = 0 + LBMPRefresh() + LBMP.SelectedIndex = 0 SetIsSaved(True) 'pIsSaved.Visible = Not IsSaved @@ -4175,7 +4182,7 @@ Public Class MainWindow 'AddUndo(xUndo, xRedo) UpdateColumnsX() - If IsInitializing Then Exit Sub + If IsApplicationInitializing Then Exit Sub RefreshPanelAll() End Sub @@ -5985,7 +5992,7 @@ Public Class MainWindow column(niPOOR).isVisible = gDisplayBGAColumn column(niS4).isVisible = gDisplayBGAColumn - If IsInitializing Then Exit Sub + If IsApplicationInitializing Then Exit Sub For xI1 As Integer = 1 To UBound(Notes) Notes(xI1).Selected = Notes(xI1).Selected And nEnabled(Notes(xI1).ColumnIndex) Next @@ -5998,7 +6005,7 @@ Public Class MainWindow column(niSCROLL).isVisible = gSCROLL - If IsInitializing Then Exit Sub + If IsApplicationInitializing Then Exit Sub For xI1 As Integer = 1 To UBound(Notes) Notes(xI1).Selected = Notes(xI1).Selected And nEnabled(Notes(xI1).ColumnIndex) Next @@ -6011,7 +6018,7 @@ Public Class MainWindow column(niSTOP).isVisible = gSTOP - If IsInitializing Then Exit Sub + If IsApplicationInitializing Then Exit Sub For xI1 As Integer = 1 To UBound(Notes) Notes(xI1).Selected = Notes(xI1).Selected And nEnabled(Notes(xI1).ColumnIndex) Next @@ -6027,7 +6034,7 @@ Public Class MainWindow column(niBPM).isVisible = gBPM - If IsInitializing Then Exit Sub + If IsApplicationInitializing Then Exit Sub For xI1 As Integer = 1 To UBound(Notes) Notes(xI1).Selected = Notes(xI1).Selected And nEnabled(Notes(xI1).ColumnIndex) Next diff --git a/iBMSC/PanelDraw.vb b/iBMSC/PanelDraw.vb index 066fb9ab8..0adae05e2 100644 --- a/iBMSC/PanelDraw.vb +++ b/iBMSC/PanelDraw.vb @@ -3,7 +3,7 @@ Partial Public Class MainWindow Private Sub RefreshPanelAll() - If IsInitializing Then Exit Sub + If IsApplicationInitializing Then Exit Sub RefreshPanel(0, PMainInL.DisplayRectangle) RefreshPanel(1, PMainIn.DisplayRectangle) RefreshPanel(2, PMainInR.DisplayRectangle) @@ -32,8 +32,9 @@ Partial Public Class MainWindow End Function Private Sub RefreshPanel(ByVal xIndex As Integer, ByVal DisplayRect As Rectangle) - If Me.WindowState = FormWindowState.Minimized Then Return - If DisplayRect.Width <= 0 Or DisplayRect.Height <= 0 Then Return + If IsApplicationInitializing OrElse + Me.WindowState = FormWindowState.Minimized OrElse + DisplayRect.Width <= 0 OrElse DisplayRect.Height <= 0 Then Return 'If spMain.Count = 0 Then Return 'Dim currentContext As BufferedGraphicsContext = BufferedGraphicsManager.Current Dim e1 As BufferedGraphics = GetBuffer(xIndex, DisplayRect) From 1a15a723e6a9757448757546a9bfc96dbcf0b730 Mon Sep 17 00:00:00 2001 From: psyk2642 <60137590+psyk2642@users.noreply.github.com> Date: Sat, 21 May 2022 08:45:33 +0800 Subject: [PATCH 202/257] Update MainWindow.vb --- iBMSC/MainWindow.vb | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/iBMSC/MainWindow.vb b/iBMSC/MainWindow.vb index b33eaa48c..7260bafa2 100644 --- a/iBMSC/MainWindow.vb +++ b/iBMSC/MainWindow.vb @@ -1511,7 +1511,7 @@ Public Class MainWindow IsApplicationInitializing = False - If BMSFileIndex <> UBound(BMSFileList) Then ReadFile(BMSFileList(BMSFileIndex)) Else InitializeNewBMS() + If BMSFileIndex <> UBound(BMSFileList) Then ReadFile(BMSFileList(BMSFileIndex)) Else TBNew_Click(Nothing, Nothing) LoadColorOverride(FileName) SetIsSaved(True) @@ -2457,6 +2457,7 @@ Public Class MainWindow End Sub Private Sub LWAVRefresh() + LWAV.BeginUpdate() LWAVRefreshId = 1 LWAV.Enabled = False TimerLWAVRefresh.Enabled = True @@ -2471,12 +2472,14 @@ Public Class MainWindow LWAVRefreshId = 1 LWAV.Enabled = True TimerLWAVRefresh.Enabled = False + LWAV.EndUpdate() Exit Sub End If LWAVRefreshId += 1 End Sub Private Sub LBMPRefresh() + LBMP.BeginUpdate() LBMPRefreshId = 1 LBMP.Enabled = False TimerLBMPRefresh.Enabled = True @@ -2491,6 +2494,7 @@ Public Class MainWindow LBMPRefreshId = 1 LBMP.Enabled = True TimerLBMPRefresh.Enabled = False + LBMP.EndUpdate() Exit Sub End If LBMPRefreshId += 1 From e5ee17ea69ecffe1e189d4f80938e66fd892c1b7 Mon Sep 17 00:00:00 2001 From: psyk2642 <60137590+psyk2642@users.noreply.github.com> Date: Sat, 21 May 2022 10:51:05 +0800 Subject: [PATCH 203/257] Update EditorPersistent.vb --- iBMSC/EditorPersistent.vb | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/iBMSC/EditorPersistent.vb b/iBMSC/EditorPersistent.vb index 62dbe992f..7066d1284 100644 --- a/iBMSC/EditorPersistent.vb +++ b/iBMSC/EditorPersistent.vb @@ -136,6 +136,11 @@ Partial Public Class MainWindow .WriteAttributeString("BeatChangeMode", BeatChangeMode.ToString()) .WriteEndElement() + .WriteStartElement("BMP") + .WriteAttributeString("BMPMultiSelect", BMPMultiSelect.ToString()) + .WriteAttributeString("BMPChangeLabel", BMPChangeLabel.ToString()) + .WriteEndElement() + .WriteStartElement("ShowHide") .WriteAttributeString("showMenu", mnSMenu.Checked.ToString()) .WriteAttributeString("showTB", mnSTB.Checked.ToString()) From b62dcf2fa59b48c1e350e9b54def0a1be263b4a6 Mon Sep 17 00:00:00 2001 From: psyk2642 <60137590+psyk2642@users.noreply.github.com> Date: Sat, 21 May 2022 22:24:44 +0800 Subject: [PATCH 204/257] Added XCopy to vbproj and to OpPlayer stands for File Name of Template. --- iBMSC/EditorPersistent.vb | 1 + iBMSC/MainWindow.vb | 15 +++++++----- iBMSC/Option Windows/OpPlayer.Designer.vb | 28 +++++++++++----------- iBMSC/Option Windows/OpPlayer.vb | 7 +++--- iBMSC/Strings.vb | 1 + iBMSC/iBMSC.vbproj | 3 +++ misc/Data/eng.Lang.xml | Bin 34960 -> 35084 bytes 7 files changed, 32 insertions(+), 23 deletions(-) diff --git a/iBMSC/EditorPersistent.vb b/iBMSC/EditorPersistent.vb index 7066d1284..a8d4b6528 100644 --- a/iBMSC/EditorPersistent.vb +++ b/iBMSC/EditorPersistent.vb @@ -1281,6 +1281,7 @@ Partial Public Class MainWindow XMLLoadLocale(ePlayerOptions.Item("DirectoryOfApp"), Strings.fopPlayer.DirectoryOfApp) XMLLoadLocale(ePlayerOptions.Item("CurrMeasure"), Strings.fopPlayer.CurrMeasure) XMLLoadLocale(ePlayerOptions.Item("FileName"), Strings.fopPlayer.FileName) + XMLLoadLocale(ePlayerOptions.Item("FileNameTemplate"), Strings.fopPlayer.FileNameTemplate) XMLLoadLocale(ePlayerOptions.Item("RestoreDefault"), Strings.fopPlayer.RestoreDefault) End If diff --git a/iBMSC/MainWindow.vb b/iBMSC/MainWindow.vb index 7260bafa2..08e20a819 100644 --- a/iBMSC/MainWindow.vb +++ b/iBMSC/MainWindow.vb @@ -662,15 +662,18 @@ Public Class MainWindow End Function Public Function PrevCodeToReal(ByVal InitStr As String) As String - Dim xFileName As String = IIf(Not PathIsValid(FileName), + Dim xPath As String = IIf(Not PathIsValid(FileName), IIf(InitPath = "", My.Application.Info.DirectoryPath, InitPath), ExcludeFileName(FileName)).ToString() _ - & "\" & TempFileName + & "\" + Dim xFileName As String = xPath & TempFileName + Dim xFileNameT As String = xPath & FileNameTemplate Dim xMeasure As Integer = MeasureAtDisplacement(Math.Abs(PanelVScroll(PanelFocus))) - Dim xS1 As String = Replace(InitStr, "", My.Application.Info.DirectoryPath) - Dim xS2 As String = Replace(xS1, "", xMeasure.ToString()) - Dim xS3 As String = Replace(xS2, "", xFileName) - Return xS3 + Dim xStr As String = Replace(InitStr, "", My.Application.Info.DirectoryPath) + xStr = Replace(xStr, "", xMeasure.ToString()) + xStr = Replace(xStr, "", xFileName) + xStr = Replace(xStr, "", xFileNameT) + Return xStr End Function Private Sub SetFileName(ByVal xFileName As String) diff --git a/iBMSC/Option Windows/OpPlayer.Designer.vb b/iBMSC/Option Windows/OpPlayer.Designer.vb index eb2187347..8c656ceb7 100644 --- a/iBMSC/Option Windows/OpPlayer.Designer.vb +++ b/iBMSC/Option Windows/OpPlayer.Designer.vb @@ -30,7 +30,7 @@ Partial Class OpPlayer Me.TPlayB = New System.Windows.Forms.TextBox() Me.TPlay = New System.Windows.Forms.TextBox() Me.TStop = New System.Windows.Forms.TextBox() - Me.Label6 = New System.Windows.Forms.Label() + Me.LReferences = New System.Windows.Forms.Label() Me.TPath = New System.Windows.Forms.TextBox() Me.Label1 = New System.Windows.Forms.Label() Me.BBrowse = New System.Windows.Forms.Button() @@ -48,7 +48,7 @@ Partial Class OpPlayer ' Me.OK_Button.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) Me.OK_Button.FlatStyle = System.Windows.Forms.FlatStyle.System - Me.OK_Button.Location = New System.Drawing.Point(72, 316) + Me.OK_Button.Location = New System.Drawing.Point(72, 331) Me.OK_Button.Name = "OK_Button" Me.OK_Button.Size = New System.Drawing.Size(78, 23) Me.OK_Button.TabIndex = 0 @@ -59,7 +59,7 @@ Partial Class OpPlayer Me.Cancel_Button.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) Me.Cancel_Button.DialogResult = System.Windows.Forms.DialogResult.Cancel Me.Cancel_Button.FlatStyle = System.Windows.Forms.FlatStyle.System - Me.Cancel_Button.Location = New System.Drawing.Point(156, 316) + Me.Cancel_Button.Location = New System.Drawing.Point(156, 331) Me.Cancel_Button.Name = "Cancel_Button" Me.Cancel_Button.Size = New System.Drawing.Size(78, 23) Me.Cancel_Button.TabIndex = 1 @@ -115,13 +115,13 @@ Partial Class OpPlayer ' 'Label6 ' - Me.Label6.AutoSize = True - Me.Label6.Location = New System.Drawing.Point(14, 244) - Me.Label6.Name = "Label6" - Me.Label6.Size = New System.Drawing.Size(225, 60) - Me.Label6.TabIndex = 11 - Me.Label6.Text = "References (case-sensitive):" & Global.Microsoft.VisualBasic.ChrW(13) & Global.Microsoft.VisualBasic.ChrW(10) & " = Directory of the application" & Global.Microsoft.VisualBasic.ChrW(13) & Global.Microsoft.VisualBasic.ChrW(10) & "" & - " = Current measure" & Global.Microsoft.VisualBasic.ChrW(13) & Global.Microsoft.VisualBasic.ChrW(10) & " = File Name" + Me.LReferences.AutoSize = True + Me.LReferences.Location = New System.Drawing.Point(14, 244) + Me.LReferences.Name = "Label6" + Me.LReferences.Size = New System.Drawing.Size(225, 75) + Me.LReferences.TabIndex = 11 + Me.LReferences.Text = "References (case-sensitive):" & Global.Microsoft.VisualBasic.ChrW(13) & Global.Microsoft.VisualBasic.ChrW(10) & " = Directory of the application" & Global.Microsoft.VisualBasic.ChrW(13) & Global.Microsoft.VisualBasic.ChrW(10) & "" & + " = Current measure" & Global.Microsoft.VisualBasic.ChrW(13) & Global.Microsoft.VisualBasic.ChrW(10) & " = File Name" & Global.Microsoft.VisualBasic.ChrW(13) & Global.Microsoft.VisualBasic.ChrW(10) & " = File Name of Template" ' 'TPath ' @@ -153,7 +153,7 @@ Partial Class OpPlayer ' Me.BDefault.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) Me.BDefault.FlatStyle = System.Windows.Forms.FlatStyle.System - Me.BDefault.Location = New System.Drawing.Point(240, 316) + Me.BDefault.Location = New System.Drawing.Point(240, 331) Me.BDefault.Name = "BDefault" Me.BDefault.Size = New System.Drawing.Size(130, 23) Me.BDefault.TabIndex = 62 @@ -223,7 +223,7 @@ Partial Class OpPlayer Me.AcceptButton = Me.OK_Button Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None Me.CancelButton = Me.Cancel_Button - Me.ClientSize = New System.Drawing.Size(382, 351) + Me.ClientSize = New System.Drawing.Size(382, 366) Me.Controls.Add(Me.Label7) Me.Controls.Add(Me.Label5) Me.Controls.Add(Me.PictureBox1) @@ -236,7 +236,7 @@ Partial Class OpPlayer Me.Controls.Add(Me.BBrowse) Me.Controls.Add(Me.TPath) Me.Controls.Add(Me.Label1) - Me.Controls.Add(Me.Label6) + Me.Controls.Add(Me.LReferences) Me.Controls.Add(Me.TStop) Me.Controls.Add(Me.TPlay) Me.Controls.Add(Me.TPlayB) @@ -264,7 +264,7 @@ Partial Class OpPlayer Friend WithEvents TPlayB As System.Windows.Forms.TextBox Friend WithEvents TPlay As System.Windows.Forms.TextBox Friend WithEvents TStop As System.Windows.Forms.TextBox - Friend WithEvents Label6 As System.Windows.Forms.Label + Friend WithEvents LReferences As System.Windows.Forms.Label Friend WithEvents TPath As System.Windows.Forms.TextBox Friend WithEvents Label1 As System.Windows.Forms.Label Friend WithEvents BBrowse As System.Windows.Forms.Button diff --git a/iBMSC/Option Windows/OpPlayer.vb b/iBMSC/Option Windows/OpPlayer.vb index 699182d9a..fd83d8948 100644 --- a/iBMSC/Option Windows/OpPlayer.vb +++ b/iBMSC/Option Windows/OpPlayer.vb @@ -29,10 +29,11 @@ Public Class OpPlayer Label4.Text = Strings.fopPlayer.StopPlaying BAdd.Text = Strings.fopPlayer.Add BRemove.Text = Strings.fopPlayer.Remove - Label6.Text = Strings.fopPlayer.References & vbCrLf & + LReferences.Text = Strings.fopPlayer.References & vbCrLf & " = " & Strings.fopPlayer.DirectoryOfApp & vbCrLf & " = " & Strings.fopPlayer.CurrMeasure & vbCrLf & - " = " & Strings.fopPlayer.FileName + " = " & Strings.fopPlayer.FileName & vbCrLf & + " = " & Strings.fopPlayer.FileNameTemplate OK_Button.Text = Strings.OK Cancel_Button.Text = Strings.Cancel BDefault.Text = Strings.fopPlayer.RestoreDefault @@ -151,7 +152,7 @@ Public Class OpPlayer Private Sub ValidateTextBox() For Each xT As TextBox In New TextBox() {TPath, TPlayB, TPlay, TStop} - Dim xText As String = xT.Text.Replace("", "").Replace("", "").Replace("", "").Replace("""", "") + Dim xText As String = xT.Text.Replace("", "").Replace("", "").Replace("", "").Replace("", "").Replace("""", "") Dim xContainsInvalidChar As Boolean = False For Each xC As Char In Path.GetInvalidPathChars diff --git a/iBMSC/Strings.vb b/iBMSC/Strings.vb index d0fc65d71..fa17c291b 100644 --- a/iBMSC/Strings.vb +++ b/iBMSC/Strings.vb @@ -135,6 +135,7 @@ Public Class Strings Public Shared DirectoryOfApp As String = "Directory of the application" Public Shared CurrMeasure As String = "Current measure" Public Shared FileName As String = "File Name" + Public Shared FileNameTemplate As String = "File Name of Template" Public Shared RestoreDefault As String = "Restore Default" End Class diff --git a/iBMSC/iBMSC.vbproj b/iBMSC/iBMSC.vbproj index 333aacd00..356f31294 100644 --- a/iBMSC/iBMSC.vbproj +++ b/iBMSC/iBMSC.vbproj @@ -380,6 +380,9 @@ + + Xcopy /E /I "$(SolutionDir)\misc\Data" "$(TargetDir)\Data" +