This repository was archived by the owner on Oct 8, 2026. It is now read-only.
Repository navigation
Expand file tree
/
Copy pathMainWindow.xaml.cs
More file actions
82 lines (73 loc) · 3.46 KB
/
Copy pathMainWindow.xaml.cs
File metadata and controls
82 lines (73 loc) · 3.46 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using Microsoft.Win32;
using SciLors_Mashed_File_Extractor.FileFormats.PIZ;
namespace SciLors_Mashed_File_Extractor {
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window {
private List<PIZFile> files = new List<PIZFile>();
public MainWindow() {
InitializeComponent();
}
private void mniOpen_Click(object sender, RoutedEventArgs e) {
OpenFileDialog openFileDialog = new OpenFileDialog();
openFileDialog.Multiselect = true;
openFileDialog.Filter = "PIZ files (*.piz)|*.piz";//|RWS files (*.RWS)|*.rws|";
if (openFileDialog.ShowDialog() == true) {
tvwContent.Items.Clear();
foreach (string filePath in openFileDialog.FileNames) {
PIZFile file = new PIZFile(filePath);
TreeViewItem baseItem = new TreeViewItem();
baseItem.Tag = file;
baseItem.Header = file.fileName + " ["
+ String.Format("Appendix2=0x{0:X2}", (byte)file.fileSignature.appendix2)
+ "]";
TreeViewItem baseInfoItem = new TreeViewItem();
baseInfoItem.Header = "Files [" + file.files.Count + "]";
foreach (FileHeader fileHeader in file.files) {
TreeViewItem fileInfoItem = new TreeViewItem();
fileInfoItem.Tag = fileHeader;
fileInfoItem.Header = fileHeader.fileName;
fileInfoItem.ItemsSource = new string[] {
String.Format("Offset=0x{0:X8}", fileHeader.fileOffset),
"Size=" + fileHeader.fileSize,
String.Format("Unknown=0x{0:X8}", fileHeader.fileUnknown),
};
ContextMenu ctxFile = new ContextMenu();
MenuItem extractMenu = new MenuItem();
extractMenu.Header = "Extract File";
extractMenu.Click += new RoutedEventHandler(tvwContext_ExtractFile);
ctxFile.Items.Add(extractMenu);
fileInfoItem.ContextMenu = ctxFile;
baseInfoItem.Items.Add(fileInfoItem);
}
baseItem.Items.Add(baseInfoItem);
tvwContent.Items.Add(baseItem);
}
}
}
private void tvwContext_ExtractFile(object sender, RoutedEventArgs e) {
TreeViewItem parent = (TreeViewItem)((ContextMenu)((MenuItem)sender).Parent).PlacementTarget;
PIZFile pizFile = (PIZFile)((TreeViewItem)((TreeViewItem)parent.Parent).Parent).Tag;
FileHeader fileHeader = (FileHeader)parent.Tag;
SaveFileDialog saveFileDialog = new SaveFileDialog();
saveFileDialog.FileName = fileHeader.fileName;
saveFileDialog.ShowDialog();
pizFile.extractFile(fileHeader, saveFileDialog.FileName);
}
}
}