X-Git-Url: https://sfsrealm.hopto.org/projects/?a=blobdiff_plain;f=listing.frm;h=f5705c17c50b4055029c804ad0b68013edee7060;hb=db62770c7e8870dae4b4553ef202e706d9fa5161;hp=a257dd8762668b24304cf5e30175417ac6c4f53d;hpb=5a1d5f7f90c3dbca48e1fd647c2e18cd6634bcad;p=WinMPQ.git diff --git a/listing.frm b/listing.frm index a257dd8..f5705c1 100644 --- a/listing.frm +++ b/listing.frm @@ -56,7 +56,7 @@ Begin VB.Form MpqEx Width = 6690 _ExtentX = 11800 _ExtentY = 609 - ButtonWidth = 1535 + ButtonWidth = 1561 ButtonHeight = 556 Wrappable = 0 'False Appearance = 1 @@ -308,7 +308,7 @@ Begin VB.Form MpqEx End Begin VB.Menu mnuMAdd Caption = "&Add..." - Shortcut = ^A + Shortcut = ^{INSERT} End Begin VB.Menu mnuMAddFolder Caption = "Add &Folder..." @@ -336,6 +336,10 @@ Begin VB.Form MpqEx Caption = "&Deflate" Shortcut = {F9} End + Begin VB.Menu mnuMCBzip2 + Caption = "&Bzip2" + Shortcut = ^{F11} + End Begin VB.Menu mnuMCAudio Caption = "&Audio" Begin VB.Menu mnuMCALowest @@ -681,6 +685,83 @@ MousePointer = 0 ShowSelected ShowTotal End Sub +Sub ConvertCwad() + Dim hCwad As Long, hMPQ As Long, hFile As Long, ListBuffer As String, BufSize As Long, Files() As String, buffer() As Byte, fLen As Long, nFile As Long, CwadName As String, dwFlags As Long + + If CWadOpenArchive(CD.FileName, 0, hCwad) Then + MsgBox "This archive must be converted to MPQ format to open it." + vbCrLf + "Enter a name for the converted archive or cancel if you do not want to perform the conversion.", vbInformation, "WinMPQ" + CwadName = CD.FileName + CD.Flags = &H1000 Or &H4 Or &H2 + CD.DefaultExt = "mpq" + CD.Filter = "Mpq Archive (*.mpq)|*.mpq" + CD.hwndOwner = hWnd + CD.FileName = CwadName + ".mpq" + If ShowSave(CD) Then + If CD.FileName = CwadName Then + MsgBox "Cannot overwrite source archive.", vbExclamation, "WinMPQ" + CWadCloseArchive hCwad + Exit Sub + End If + + BufSize = CWadListFiles(hCwad, ListBuffer, 0) + If BufSize > 0 Then ListBuffer = String$(BufSize - 1, Chr$(0)) + CWadListFiles hCwad, ListBuffer, BufSize + MultiStringToArray ListBuffer, Files + + If FileExists(CD.FileName) Then Kill CD.FileName + hMPQ = mOpenMpq(CD.FileName) + If hMPQ = 0 Then + StatBar.SimpleText = "Can't create archive " + CD.FileName + Else + dwFlags = MAFA_REPLACE_EXISTING + If GlobalEncrypt Then dwFlags = dwFlags Or MAFA_ENCRYPT + + For nFile = 1 To UBound(Files) + If CWadOpenFile(hCwad, Files(nFile), 0, hFile) Then + fLen = CWadGetFileSize(hFile) + + If fLen > 0 Then + ReDim buffer(fLen - 1) + Else + ReDim buffer(0) + End If + + CWadSetFilePointer hFile, 0, FILE_BEGIN + CWadReadFile hFile, buffer(0), fLen, fLen + CWadCloseFile hFile + + StatBar.SimpleText = "Adding " + Files(nFile) + "..." + MousePointer = 11 + If mnuMCNone.Checked Then + MpqAddFileFromBufferEx hMPQ, buffer(0), fLen, Files(nFile), dwFlags, 0, 0 + ElseIf mnuMCStandard.Checked Then + MpqAddFileFromBufferEx hMPQ, buffer(0), fLen, Files(nFile), dwFlags Or MAFA_COMPRESS, MAFA_COMPRESS_STANDARD, 0 + ElseIf mnuMCDeflate.Checked Then + MpqAddFileFromBufferEx hMPQ, buffer(0), fLen, Files(nFile), dwFlags Or MAFA_COMPRESS, MAFA_COMPRESS_DEFLATE, DefaultCompressLevel + ElseIf mnuMCBzip2.Checked Then + MpqAddFileFromBufferEx hMPQ, buffer(0), fLen, Files(nFile), dwFlags Or MAFA_COMPRESS, MAFA_COMPRESS_BZIP2, 0 + ElseIf mnuMCAMedium.Checked Then + MpqAddWaveFromBuffer hMPQ, buffer(0), fLen, Files(nFile), dwFlags Or MAFA_COMPRESS, 0 + ElseIf mnuMCAHighest.Checked Then + MpqAddWaveFromBuffer hMPQ, buffer(0), fLen, Files(nFile), dwFlags Or MAFA_COMPRESS, 1 + ElseIf mnuMCALowest.Checked Then + MpqAddWaveFromBuffer hMPQ, buffer(0), fLen, Files(nFile), dwFlags Or MAFA_COMPRESS, 2 + ElseIf mnuMCAuto.Checked Then + mAddAutoFromBuffer hMPQ, buffer(0), fLen, Files(nFile) + End If + End If + Next nFile + + MpqCloseUpdatedArchive hMPQ, 0 + End If + Else + CD.FileName = CwadName + End If + + CWadCloseArchive hCwad + End If +End Sub + Sub DelRecentFile(rFileName As String) Dim bNum As Long, fNum As Long For bNum = 1 To 8 @@ -1136,7 +1217,11 @@ If sLine <> "" Then ElseIf cType = -1 Then mAddAutoFile hMPQ, FullPath(CurPath, fLine), Param(3) + fLine ElseIf cType = 1 Then - MpqAddFileToArchiveEx hMPQ, FullPath(CurPath, fLine), Param(3) + fLine, dwFlags, DefaultCompress, DefaultCompressLevel + If DefaultCompress = MAFA_COMPRESS_DEFLATE Then + MpqAddFileToArchiveEx hMPQ, FullPath(CurPath, fLine), Param(3) + fLine, dwFlags, DefaultCompress, DefaultCompressLevel + Else + MpqAddFileToArchiveEx hMPQ, FullPath(CurPath, fLine), Param(3) + fLine, dwFlags, DefaultCompress, 0 + End If Else MpqAddFileToArchiveEx hMPQ, FullPath(CurPath, fLine), Param(3) + fLine, dwFlags, 0, 0 End If @@ -1158,7 +1243,11 @@ If sLine <> "" Then ElseIf cType = -1 Then mAddAutoFile hMPQ, FullPath(CurPath, fLine), Param(3) ElseIf cType = 1 Then - MpqAddFileToArchiveEx hMPQ, FullPath(CurPath, fLine), Param(3), dwFlags, DefaultCompress, DefaultCompressLevel + If DefaultCompress = MAFA_COMPRESS_DEFLATE Then + MpqAddFileToArchiveEx hMPQ, FullPath(CurPath, fLine), Param(3), dwFlags, DefaultCompress, DefaultCompressLevel + Else + MpqAddFileToArchiveEx hMPQ, FullPath(CurPath, fLine), Param(3), dwFlags, DefaultCompress, 0 + End If Else MpqAddFileToArchiveEx hMPQ, FullPath(CurPath, fLine), Param(3), dwFlags, 0, 0 End If @@ -1587,6 +1676,11 @@ If FileExists(CD.FileName) And FileLen(CD.FileName) = 0 Then GoTo FileOpened End If On Error GoTo 0 + +If IsMPQ(CD.FileName) = False Then + ConvertCwad +End If + If IsMPQ(CD.FileName) = False Then CD.FileName = "" MsgBox "This file does not contain an MPQ archive.", vbExclamation, "WinMPQ" @@ -1634,6 +1728,7 @@ List.ListItems.Clear List.Sorted = False FileFilter = mFilter StatBar.SimpleText = "Building list... 0% complete" +mFilter.Clear For fNum = 0 To UBound(FileEntries) #If InternalListing Then If Mpq.FileExists(CD.FileName, FileList(fNum)) Then @@ -1743,6 +1838,7 @@ Caption = "WinMPQ - " + Mid(CD.FileName, bNum) AddRecentFile CD.FileName MousePointer = 0 End Sub + Sub RemoveDuplicates() Dim fNum As Long fNum = 1 @@ -1988,6 +2084,7 @@ If WindowState <> 1 Then txtCommand.Width = ScaleWidth - cmdGo.Width - Label1.Width cmdGo.Top = txtCommand.Top cmdGo.Left = txtCommand.Left + txtCommand.Width + mFilter.Left = Toolbar.Buttons.Item("filterspace").Left mFilter.Width = ScaleWidth - mFilter.Left - Toolbar.Buttons.Item("List").Width Toolbar.Buttons.Item("filterspace").Width = mFilter.Width End If @@ -2160,8 +2257,15 @@ Private Sub List_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then List_DblClick End Sub Private Sub List_KeyUp(KeyCode As Integer, Shift As Integer) +Dim fNum As Long, fSelect As Long If KeyCode = vbKeyDelete Then mnuMDelete_Click +ElseIf (Shift And vbCtrlMask) And KeyCode = vbKeyA Then + fSelect = List.SelectedItem.Index + For fNum = 1 To List.ListItems.Count + List.ListItems.Item(fNum).Selected = True + Next fNum + List.ListItems.Item(fSelect).Selected = True ElseIf KeyCode = 93 Or ((Shift And vbShiftMask) And KeyCode = vbKeyF10) Then On Error GoTo NotSelected List.SelectedItem.Tag = List.SelectedItem.Tag @@ -2290,6 +2394,8 @@ For bNum = 1 To UBound(Files) MpqAddFileToArchiveEx hMPQ, Files(bNum), ShortFiles(bNum), dwFlags Or MAFA_COMPRESS, MAFA_COMPRESS_STANDARD, 0 ElseIf mnuMCDeflate.Checked Then MpqAddFileToArchiveEx hMPQ, Files(bNum), ShortFiles(bNum), dwFlags Or MAFA_COMPRESS, MAFA_COMPRESS_DEFLATE, DefaultCompressLevel + ElseIf mnuMCBzip2.Checked Then + MpqAddFileToArchiveEx hMPQ, Files(bNum), ShortFiles(bNum), dwFlags Or MAFA_COMPRESS, MAFA_COMPRESS_BZIP2, 0 ElseIf mnuMCAMedium.Checked Then MpqAddWaveToArchive hMPQ, Files(bNum), ShortFiles(bNum), dwFlags Or MAFA_COMPRESS, 0 ElseIf mnuMCAHighest.Checked Then @@ -2525,6 +2631,8 @@ For bNum = 1 To UBound(Files) MpqAddFileToArchiveEx hMPQ, Files(bNum), ShortFiles(bNum), dwFlags Or MAFA_COMPRESS, MAFA_COMPRESS_STANDARD, 0 ElseIf mnuMCDeflate.Checked Then MpqAddFileToArchiveEx hMPQ, Files(bNum), ShortFiles(bNum), dwFlags Or MAFA_COMPRESS, MAFA_COMPRESS_DEFLATE, DefaultCompressLevel + ElseIf mnuMCBzip2.Checked Then + MpqAddFileToArchiveEx hMPQ, Files(bNum), ShortFiles(bNum), dwFlags Or MAFA_COMPRESS, MAFA_COMPRESS_BZIP2, 0 ElseIf mnuMCAMedium.Checked Then MpqAddWaveToArchive hMPQ, Files(bNum), ShortFiles(bNum), dwFlags Or MAFA_COMPRESS, 0 ElseIf mnuMCAHighest.Checked Then @@ -2636,6 +2744,8 @@ For bNum = 1 To UBound(Files) MpqAddFileToArchiveEx hMPQ, Files(bNum), ShortFiles(bNum), dwFlags Or MAFA_COMPRESS, MAFA_COMPRESS_STANDARD, 0 ElseIf mnuMCDeflate.Checked Then MpqAddFileToArchiveEx hMPQ, Files(bNum), ShortFiles(bNum), dwFlags Or MAFA_COMPRESS, MAFA_COMPRESS_DEFLATE, DefaultCompressLevel + ElseIf mnuMCBzip2.Checked Then + MpqAddFileToArchiveEx hMPQ, Files(bNum), ShortFiles(bNum), dwFlags Or MAFA_COMPRESS, MAFA_COMPRESS_BZIP2, 0 ElseIf mnuMCAMedium.Checked Then MpqAddWaveToArchive hMPQ, Files(bNum), ShortFiles(bNum), dwFlags Or MAFA_COMPRESS, 0 ElseIf mnuMCAHighest.Checked Then @@ -2688,6 +2798,7 @@ Private Sub mnuMCAHighest_Click() mnuMCNone.Checked = False mnuMCStandard.Checked = False mnuMCDeflate.Checked = False +mnuMCBzip2.Checked = False mnuMCALowest.Checked = False mnuMCAMedium.Checked = False mnuMCAHighest.Checked = True @@ -2697,6 +2808,7 @@ Private Sub mnuMCALowest_Click() mnuMCNone.Checked = False mnuMCStandard.Checked = False mnuMCDeflate.Checked = False +mnuMCBzip2.Checked = False mnuMCALowest.Checked = True mnuMCAMedium.Checked = False mnuMCAHighest.Checked = False @@ -2708,6 +2820,7 @@ Private Sub mnuMCAMedium_Click() mnuMCNone.Checked = False mnuMCStandard.Checked = False mnuMCDeflate.Checked = False +mnuMCBzip2.Checked = False mnuMCALowest.Checked = False mnuMCAMedium.Checked = True mnuMCAHighest.Checked = False @@ -2717,16 +2830,29 @@ Private Sub mnuMCAuto_Click() mnuMCNone.Checked = False mnuMCStandard.Checked = False mnuMCDeflate.Checked = False +mnuMCBzip2.Checked = False mnuMCALowest.Checked = False mnuMCAMedium.Checked = False mnuMCAHighest.Checked = False mnuMCAuto.Checked = True End Sub +Private Sub mnuMCBzip2_Click() +mnuMCNone.Checked = False +mnuMCStandard.Checked = False +mnuMCDeflate.Checked = False +mnuMCBzip2.Checked = True +mnuMCALowest.Checked = False +mnuMCAMedium.Checked = False +mnuMCAHighest.Checked = False +mnuMCAuto.Checked = False +End Sub + Private Sub mnuMCDeflate_Click() mnuMCNone.Checked = False mnuMCStandard.Checked = False mnuMCDeflate.Checked = True +mnuMCBzip2.Checked = False mnuMCALowest.Checked = False mnuMCAMedium.Checked = False mnuMCAHighest.Checked = False @@ -2755,6 +2881,7 @@ Private Sub mnuMCNone_Click() mnuMCNone.Checked = True mnuMCStandard.Checked = False mnuMCDeflate.Checked = False +mnuMCBzip2.Checked = False mnuMCALowest.Checked = False mnuMCAMedium.Checked = False mnuMCAHighest.Checked = False @@ -2787,6 +2914,7 @@ Private Sub mnuMCStandard_Click() mnuMCNone.Checked = False mnuMCStandard.Checked = True mnuMCDeflate.Checked = False +mnuMCBzip2.Checked = False mnuMCALowest.Checked = False mnuMCAMedium.Checked = False mnuMCAHighest.Checked = False @@ -2910,7 +3038,7 @@ Private Sub mnuFNew_Click() Dim TItem As Menu CD.Flags = &H1000 Or &H4 Or &H2 CD.DefaultExt = "mpq" -CD.Filter = "Mpq Archives (*.mpq;*.exe;*.snp;*.scm;*.scx;*.w3m)|*.mpq;*.exe;*.snp;*.scm;*.scx;*.w3m|All Files (*.*)|*.*" +CD.Filter = "Mpq Archives (*.mpq;*.exe;*.snp;*.scm;*.scx;*.w3m;*.w3x)|*.mpq;*.exe;*.snp;*.scm;*.scx;*.w3m;*.w3x|All Files (*.*)|*.*" CD.hwndOwner = hWnd If ShowSave(CD) = False Then GoTo Cancel ReDim FileList(0) As String @@ -2935,7 +3063,7 @@ End Sub Private Sub mnuFOpen_Click() Dim OldFileName As String CD.Flags = &H1000 Or &H4 Or &H2 -CD.Filter = "Mpq Archives (*.mpq;*.exe;*.snp;*.scm;*.scx;*.w3m)|*.mpq;*.exe;*.snp;*.scm;*.scx;*.w3m|All Files (*.*)|*.*" +CD.Filter = "All Archives|*.mpq;*.exe;*.snp;*.scm;*.scx;*.w3m;*.w3x;*.cwd|Mpq Archives (*.mpq;*.exe;*.snp;*.scm;*.scx;*.w3m;*.w3x)|*.mpq;*.exe;*.snp;*.scm;*.scx;*.w3m;*.w3x|Cwad Archives (*.cwd;*.exe)|*.cwd;*.exe|All Files (*.*)|*.*" OldFileName = CD.FileName CD.hwndOwner = hWnd If ShowOpen(CD) = False Then GoTo Cancel @@ -3141,6 +3269,8 @@ For fNum = 1 To UBound(OpenFiles) MpqAddFileToArchiveEx hMPQ, FullPath(Path, OpenFiles(fNum)), OpenFiles(fNum), dwFlags Or MAFA_COMPRESS, MAFA_COMPRESS_STANDARD, 0 ElseIf mnuMCDeflate.Checked Then MpqAddFileToArchiveEx hMPQ, FullPath(Path, OpenFiles(fNum)), OpenFiles(fNum), dwFlags Or MAFA_COMPRESS, MAFA_COMPRESS_DEFLATE, DefaultCompressLevel + ElseIf mnuMCBzip2.Checked Then + MpqAddFileToArchiveEx hMPQ, FullPath(Path, OpenFiles(fNum)), OpenFiles(fNum), dwFlags Or MAFA_COMPRESS, MAFA_COMPRESS_BZIP2, 0 ElseIf mnuMCAMedium.Checked Then MpqAddWaveToArchive hMPQ, FullPath(Path, OpenFiles(fNum)), OpenFiles(fNum), dwFlags Or MAFA_COMPRESS, 0 ElseIf mnuMCAHighest.Checked Then