Skip to content

Commit 7a25c3c

Browse files
committed
Merge branch 'master' of https://github.com/racerxdl/jpak.git
2 parents 9591fcd + c026ea9 commit 7a25c3c

139 files changed

Lines changed: 2351 additions & 0 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

README.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,11 +23,14 @@ What is done
2323
* Get file as Base64
2424
* Get file as HTML Data URI (for hide from Network Requests)
2525
* GZIP Decompress Support, forked from https://github.com/jsxgraph/jsxgraph/
26+
* Simple C# Windows Tool for Exploring and Export Content from JPAK Files
2627

2728
TODO
2829
========
2930
* Load files from JPAK only when needed. A.K.A. - Fetch only the necessary parts from jpak file.
3031
* Add option to compress files on packing.
32+
* More stuff on JPAK Explorer for Windows
33+
* JPAK Explorer for Linux
3134

3235
How to use it
3336
========
@@ -201,6 +204,11 @@ f.close()
201204

202205
* TODO on Tools: Add option to compress files on packer.py
203206

207+
C# JPAK Tool:
208+
========
209+
210+
A C# Version of JPAK Tool is available. There is many things todo in there, but it works for the JPAK Explorer. The images used in thumbnail is from Crystal Clear, can be found at http://commons.wikimedia.org/wiki/Crystal_Clear and its licensed under LGPL
211+
204212
Example
205213
========
206214

\

Whitespace-only changes.
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
2+
Microsoft Visual Studio Solution File, Format Version 12.00
3+
# Visual Studio 2012
4+
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "JPAK Explorer Win", "JPAK Explorer Win\JPAK Explorer Win.csproj", "{D1B3F540-6626-4992-AB3E-5A6199284118}"
5+
EndProject
6+
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "JPAKTool", "JPAKTool\JPAKTool.csproj", "{6C14A943-8BAC-45C1-95E8-A0E33C91C094}"
7+
EndProject
8+
Global
9+
GlobalSection(SolutionConfigurationPlatforms) = preSolution
10+
Debug|Any CPU = Debug|Any CPU
11+
Release|Any CPU = Release|Any CPU
12+
EndGlobalSection
13+
GlobalSection(ProjectConfigurationPlatforms) = postSolution
14+
{D1B3F540-6626-4992-AB3E-5A6199284118}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
15+
{D1B3F540-6626-4992-AB3E-5A6199284118}.Debug|Any CPU.Build.0 = Debug|Any CPU
16+
{D1B3F540-6626-4992-AB3E-5A6199284118}.Release|Any CPU.ActiveCfg = Release|Any CPU
17+
{D1B3F540-6626-4992-AB3E-5A6199284118}.Release|Any CPU.Build.0 = Release|Any CPU
18+
{6C14A943-8BAC-45C1-95E8-A0E33C91C094}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
19+
{6C14A943-8BAC-45C1-95E8-A0E33C91C094}.Debug|Any CPU.Build.0 = Debug|Any CPU
20+
{6C14A943-8BAC-45C1-95E8-A0E33C91C094}.Release|Any CPU.ActiveCfg = Release|Any CPU
21+
{6C14A943-8BAC-45C1-95E8-A0E33C91C094}.Release|Any CPU.Build.0 = Release|Any CPU
22+
EndGlobalSection
23+
GlobalSection(SolutionProperties) = preSolution
24+
HideSolutionNode = FALSE
25+
EndGlobalSection
26+
EndGlobal
80 KB
Binary file not shown.

tools/JPAK Explorer Win/JPAK Explorer Win/Explorer.Designer.cs

Lines changed: 95 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 121 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,121 @@
1+
/**********************************************
2+
* _ ____ _ _ __ _ ___ *
3+
* | | _ \ / \ | |/ / __ _/ | / _ \ *
4+
* _ | | |_) / _ \ | ' / \ \ / / || | | | *
5+
*| |_| | __/ ___ \| . \ \ V /| || |_| | *
6+
* \___/|_| /_/ \_\_|\_\ \_/ |_(_)___/ *
7+
* *
8+
*Multiuse Javascript Package *
9+
*By: Lucas Teske *
10+
*https://github.com/racerxdl/jpak *
11+
**********************************************/
12+
using System;
13+
using System.Collections.Generic;
14+
using System.ComponentModel;
15+
using System.Data;
16+
using System.Drawing;
17+
using System.Linq;
18+
using System.Text;
19+
using System.Windows.Forms;
20+
using System.IO;
21+
using Newtonsoft.Json.Linq;
22+
23+
namespace JPAK
24+
{
25+
public partial class Explorer : Form
26+
{
27+
ImageList TypeImages;
28+
DirectoryEntry root;
29+
DirectoryEntry currentdir;
30+
FileStream fileVol;
31+
32+
public Explorer()
33+
{
34+
InitializeComponent();
35+
}
36+
private void UpdateView(ListView view, DirectoryEntry dir)
37+
{
38+
view.Items.Clear();
39+
String[] tmp = dir.path.Split('/');
40+
String backpath = tmp.Length > 1 ? String.Join("/", Extensions.SubArray(tmp, 0, tmp.Length - 1)) : "/";
41+
if (dir != root)
42+
{
43+
ListViewItem backdir = new ListViewItem("..");
44+
backdir.Name = backpath;
45+
backdir.ImageKey = "folder";
46+
view.Items.Add(backdir);
47+
}
48+
view.LargeImageList = TypeImages;
49+
view.SmallImageList = TypeImages;
50+
foreach (DirectoryEntry dire in dir.directories)
51+
{
52+
ListViewItem f = new ListViewItem(dire.name);
53+
f.Name = dire.path;
54+
f.ImageKey = "folder";
55+
view.Items.Add(f);
56+
}
57+
foreach (FileEntry file in dir.files)
58+
{
59+
ListViewItem f = new ListViewItem(file.name);
60+
f.Name = file.path;
61+
f.ImageKey = JPAKTool.GetFileExt(file.name);
62+
view.Items.Add(f);
63+
}
64+
65+
}
66+
private void loadfile_Click(object sender, EventArgs e)
67+
{
68+
TypeImages = JPAKTool.GetFileTypeImageList();
69+
if (fileVol != null)
70+
fileVol.Close();
71+
DialogResult result = openFile.ShowDialog();
72+
if (result == DialogResult.OK)
73+
{
74+
fileVol = File.Open(openFile.FileName, FileMode.Open);
75+
if (JPAKTool.CheckJPAK(fileVol))
76+
{
77+
root = JPAKTool.GetFileTable(fileVol);
78+
currentdir = root;
79+
UpdateView(dataView, root);
80+
description.Text = "Double click on a file to export";
81+
}
82+
else
83+
{
84+
MessageBox.Show("Error: Invalid JPAK file!");
85+
}
86+
}
87+
else
88+
{
89+
description.Text = "Load a JPAK file";
90+
}
91+
}
92+
93+
94+
private void dataView_DoubleClick(object sender, EventArgs e)
95+
{
96+
ListViewItem item = dataView.SelectedItems[0];
97+
if (item.ImageKey.Equals("folder"))
98+
{
99+
String[] folders = item.Name.ToString().Split('/');
100+
DirectoryEntry newdir = root.GetFolder(Extensions.SubArray(folders,1,folders.Length-1));
101+
UpdateView(dataView, newdir);
102+
currentdir = newdir;
103+
}
104+
else
105+
{
106+
String[] path = item.Name.Split('/');
107+
String filename = Extensions.SubArray(path, path.Length - 1, 1)[0];
108+
FileEntry file = currentdir.GetFile(filename);
109+
exportFileDialog.FileName = filename;
110+
exportFileDialog.Title = "Select where to save the file.";
111+
DialogResult result = exportFileDialog.ShowDialog();
112+
if (result == DialogResult.OK)
113+
{
114+
JPAKTool.ExportFile(fileVol, exportFileDialog.FileName, file.offset, file.size);
115+
MessageBox.Show(exportFileDialog.FileName);
116+
}
117+
}
118+
119+
}
120+
}
121+
}

0 commit comments

Comments
 (0)