Current News
Archived News
Search News
Discussion Forum


Old Forum
Install Programs More Downloads...
Troubleshooting
Source Code
Format Specs.
Misc. Information
Non-SF Stuff
Links




index 5ed59c2..f5705c1 100644 (file)
@@ -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
@@ -1755,10 +1851,11 @@ Do While fNum <= List.ListItems.Count - 1
 Loop
 End Sub
 Sub ShowSelected()
-Dim fNum As Long, nSelect As Long, sSize As Long, fSize As Long, L2 As String, hMPQ As Long, hFile As Long
+Dim fNum As Long, nSelect As Long, sSize As Currency, fSize As Long, L2 As String, hMPQ As Long, hFile As Long
 On Error GoTo NotSelected
 List.SelectedItem.Tag = List.SelectedItem.Tag
 On Error GoTo 0
+On Error Resume Next
 For fNum = 1 To List.ListItems.Count
     If List.ListItems.Item(fNum).Selected Then
         nSelect = nSelect + 1
@@ -1792,12 +1889,14 @@ ElseIf sSize = 0 Then
 Else
     StatBar.Panels.Item(1).Text = "Selected " + CStr(nSelect) + " files, " + CStr(Int(sSize / 1024)) + "KB"
 End If
+On Error GoTo 0
 Exit Sub
 NotSelected:
 StatBar.Panels.Item(1).Text = "Selected 0 files, 0KB"
 End Sub
 Sub ShowTotal()
-Dim fNum As Long, nFiles As Long, tSize As Long
+Dim fNum As Long, nFiles As Long, tSize As Currency
+On Error Resume Next
 For fNum = 1 To List.ListItems.Count
     nFiles = nFiles + 1
     If List.ListItems.Item(fNum).ListSubItems(1).Text <> "" Then
@@ -1809,6 +1908,7 @@ If tSize / 1024 > 0 And tSize / 1024 < 1 Then
 Else
     StatBar.Panels.Item(2).Text = "Total " + CStr(nFiles) + "/" + CStr(GetNumMpqFiles(CD.FileName)) + " files, " + CStr(Int(tSize / 1024)) + "KB"
 End If
+On Error GoTo 0
 End Sub
 Private Sub cmdGo_Click()
 StatBar.Style = 1
@@ -1984,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
@@ -2156,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
@@ -2286,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
@@ -2521,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
@@ -2632,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
@@ -2684,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
@@ -2693,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
@@ -2704,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
@@ -2713,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
@@ -2751,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
@@ -2783,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
@@ -2906,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
@@ -2931,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
@@ -3137,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