Manage Pcks feature (#18)

* Add Console Installer Form

* Improved FTPClient constructor

* Add FTPClient.SetTimeoutLimit and made download and upload file accept a stream

* Add new Panels and move old for reference

* Update WiiU Install Panel

* Update FTPClient.ListDirectory

* Add Cemu Installer Panel

* CemuInstallPanel - Add path validation

* ConsoleInstaller - Removed PS3 support

* Rename 'Additional-Features' folder to 'Features'

* CemuInstallPanel - Add context item to add new custom pcks

* CemuInstallerPanel - Add function to remove pck from DLC folder

* CemuInstallPanel - Add directory exist check

* Rename 'ConsoleInstaller' to 'PckManager'

* Renamed Panels

* FTPClient.cs - Prefixed private class members with an underscore

* PckManager.cs - Renamed 'selectedPlatformComboBox' to 'supportedPlatformComboBox'

* CemuPanel.cs - Add better Directory name validation

* WiiUPanel.cs - Renamed some designer component names

* PS3Panel.cs - Removed unused text box

* PckManager.cs - Added message box for unimplemented panels

* CemuPanel.cs - Improved file path handling

* Removed PS3Panel.cs

* PckManager.cs - For now only Cemu is supported !

* Moved Features folder to project root and changed namespace of PckManager

* Removed StringExtensions and made method 'ContainsAny' generic and moved it to EnumerableExtensions
This commit is contained in:
Miku-666
2023-05-07 16:29:37 +02:00
committed by GitHub
parent 6ffca2e226
commit 6f273008c9
30 changed files with 4482 additions and 3969 deletions

View File

@@ -1,5 +1,7 @@
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Net;
using System.Text;
using System.Xml.Linq;
@@ -8,40 +10,36 @@ namespace PckStudio.Classes.Misc
{
public class FTPClient : IDisposable
{
private const int bufferSize = 2048;
private Uri _host;
private ICredentials _credentials;
private Uri hostUri;
private NetworkCredential credentials;
private FtpWebRequest request = null;
private FtpWebResponse response = null;
private Stream _stream = null;
private FtpWebRequest _request = null;
private FtpWebResponse _response = null;
private int _timeout = 1_000; // 1 sec
public FTPClient(string host, string username)
: this(new Uri(host), username, string.Empty)
{
}
: this(new Uri(host), username, string.Empty) { }
public FTPClient(Uri uri, string username)
: this(uri, username, string.Empty)
{
}
public FTPClient(Uri host, string username)
: this(host, username, string.Empty) { }
public FTPClient(string host, string username, string password)
: this(new Uri(host), username, password)
{
}
: this(new Uri(host), username, password) { }
public FTPClient(Uri uri, string username, string password)
{
hostUri = uri;
credentials = new NetworkCredential(username, password);
: this(uri, new NetworkCredential(username, password)) { }
if (hostUri.Scheme != Uri.UriSchemeFtp)
public FTPClient(string host, ICredentials credentials)
: this(new Uri(host), credentials) { }
public FTPClient(Uri host, ICredentials credentials)
{
if (host.Scheme != Uri.UriSchemeFtp)
{
throw new InvalidOperationException("Not a valid FTP Scheme");
}
this._host = host;
_credentials = credentials;
}
/// <summary>
@@ -51,7 +49,7 @@ namespace PckStudio.Classes.Misc
/// <param name="credentials"></param>
/// <param name="method">See <see cref="WebRequestMethods.Ftp"/></param>
/// <returns><see cref="FtpWebRequest"/></returns>
public static FtpWebRequest CreateFTPWebRequest(Uri uri, ICredentials credentials, string method)
public static FtpWebRequest CreateRequest(Uri uri, ICredentials credentials, string method)
{
FtpWebRequest request = (FtpWebRequest)WebRequest.Create(uri);
request.Credentials = credentials;
@@ -59,44 +57,31 @@ namespace PckStudio.Classes.Misc
return request;
}
// TODO: let it accept a destination Stream ?
public void DownloadFile(string remoteFilepath, string localFilepath)
{
using (var fs = File.OpenWrite(localFilepath))
{
DownloadFile(remoteFilepath, fs);
}
}
public void DownloadFile(string remoteFilepath, Stream destination)
{
try
{
request = CreateFTPWebRequest(new Uri(hostUri, remoteFilepath), credentials, WebRequestMethods.Ftp.DownloadFile);
//request = (FtpWebRequest)WebRequest.Create(host + "/" + remoteFile);
//request.Credentials = credentials;
//request.Method = WebRequestMethods.Ftp.DownloadFile;
request.UseBinary = true;
request.UsePassive = true;
request.KeepAlive = true;
_request = CreateRequest(new Uri(_host, remoteFilepath), _credentials, WebRequestMethods.Ftp.DownloadFile);
SetRequestTimeout();
response = (FtpWebResponse)request.GetResponse();
_stream = response.GetResponseStream();
byte[] buffer = new byte[Convert.ToInt32(GetFileSize(remoteFilepath))];
int num = _stream.Read(buffer, 0, Convert.ToInt32(GetFileSize(remoteFilepath)));
_response = (FtpWebResponse)_request.GetResponse();
Stream responseStream = _response.GetResponseStream();
using (FileStream fileStream = new FileStream(localFilepath, FileMode.OpenOrCreate))
{
try
{
while (num > 0)
{
fileStream.Write(buffer, 0, num);
num = _stream.Read(buffer, 0, Convert.ToInt32(GetFileSize(remoteFilepath)));
}
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
}
}
long destinationOrigin = destination.Position;
responseStream.CopyTo(destination);
destination.Position = destinationOrigin;
_stream.Close();
response.Close();
request = null;
responseStream.Close();
_response.Close();
_request = null;
}
catch (Exception ex)
{
@@ -108,85 +93,59 @@ namespace PckStudio.Classes.Misc
{
try
{
request = CreateFTPWebRequest(new Uri(hostUri, directory), credentials, WebRequestMethods.Ftp.ListDirectory);
//request = (FtpWebRequest)WebRequest.Create(host + "/" + directory);
//request.Credentials = credentials;
//request.Method = WebRequestMethods.Ftp.ListDirectory;
_request = CreateRequest(new Uri(_host, directory), _credentials, WebRequestMethods.Ftp.ListDirectory);
request.UseBinary = true;
request.UsePassive = true;
request.KeepAlive = true;
SetRequestTimeout();
response = (FtpWebResponse)request.GetResponse();
_stream = response.GetResponseStream();
StreamReader streamReader = new StreamReader(_stream);
string text = string.Empty;
try
_response = (FtpWebResponse)_request.GetResponse();
Stream responseStream = _response.GetResponseStream();
StreamReader streamReader = new StreamReader(responseStream);
IList<string> text = new List<string>();
while (streamReader.Peek() != -1)
{
while (streamReader.Peek() != -1)
{
text += streamReader.ReadLine() + "|";
}
text.Add(streamReader.ReadLine());
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
}
streamReader.Close();
_stream.Close();
response.Close();
request = null;
responseStream.Close();
try
{
return text.Split("|".ToCharArray());
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
_response.Close();
_request = null;
return text.ToArray();
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
Console.WriteLine(ex.ToString());
}
return Array.Empty<string>();
}
public void UploadFile(string localFile, string remoteFile)
{
using (var fs = File.OpenRead(localFile))
{
UploadFile(fs, remoteFile);
}
}
public void UploadFile(Stream source, string remoteFile)
{
try
{
request = CreateFTPWebRequest(new Uri(hostUri, remoteFile), credentials, WebRequestMethods.Ftp.UploadFile);
//request = (FtpWebRequest)WebRequest.Create(host + "/" + remoteFile);
//request.Credentials = credentials;
//request.Method = WebRequestMethods.Ftp.UploadFile;
_request = CreateRequest(new Uri(_host, remoteFile), _credentials, WebRequestMethods.Ftp.UploadFile);
request.UseBinary = true;
request.UsePassive = true;
request.KeepAlive = true;
_stream = request.GetRequestStream();
FileStream fileStream = new FileStream(localFile, FileMode.Open);
byte[] buffer = new byte[fileStream.Length];
int num = fileStream.Read(buffer, 0, (int)fileStream.Length);
try
{
while (num != 0)
{
_stream.Write(buffer, 0, num);
num = fileStream.Read(buffer, 0, (int)fileStream.Length);
}
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
}
SetRequestTimeout();
fileStream.Close();
_stream.Close();
request = null;
Stream requestStream = _request.GetRequestStream();
source.CopyTo(requestStream);
requestStream.Close();
_response = (FtpWebResponse)_request.GetResponse();
_response.Close();
_request = null;
}
catch (Exception ex)
{
@@ -198,19 +157,14 @@ namespace PckStudio.Classes.Misc
{
try
{
request = CreateFTPWebRequest(new Uri(hostUri, filename), credentials, WebRequestMethods.Ftp.DeleteFile);
//request = (FtpWebRequest)WebRequest.Create(host + "/" + filename);
//request.Credentials = credentials;
//request.Method = WebRequestMethods.Ftp.DeleteFile;
_request = CreateRequest(new Uri(_host, filename), _credentials, WebRequestMethods.Ftp.DeleteFile);
request.UseBinary = true;
request.UsePassive = true;
request.KeepAlive = true;
SetRequestTimeout();
response = (FtpWebResponse)request.GetResponse();
response.Close();
_response = (FtpWebResponse)_request.GetResponse();
_response.Close();
request = null;
_request = null;
}
catch (Exception ex)
{
@@ -222,19 +176,14 @@ namespace PckStudio.Classes.Misc
{
try
{
request = CreateFTPWebRequest(new Uri(hostUri, name), credentials, WebRequestMethods.Ftp.Rename);
//request = (FtpWebRequest)WebRequest.Create(host + "/" + name);
//request.Credentials = credentials;
//request.Method = WebRequestMethods.Ftp.Rename;
_request = CreateRequest(new Uri(_host, name), _credentials, WebRequestMethods.Ftp.Rename);
request.UseBinary = true;
request.UsePassive = true;
request.KeepAlive = true;
request.RenameTo = newName;
response = (FtpWebResponse)request.GetResponse();
response.Close();
request = null;
SetRequestTimeout();
_request.RenameTo = newName;
_response = (FtpWebResponse)_request.GetResponse();
_response.Close();
_request = null;
}
catch (Exception ex)
{
@@ -246,27 +195,21 @@ namespace PckStudio.Classes.Misc
{
try
{
request = CreateFTPWebRequest(new Uri(hostUri, serverFilepath), credentials, WebRequestMethods.Ftp.AppendFile);
//request = (FtpWebRequest)WebRequest.Create(host + "/" + name);
//request.Credentials = credentials;
//request.Method = WebRequestMethods.Ftp.MakeDirectory;
_request = CreateRequest(new Uri(_host, serverFilepath), _credentials, WebRequestMethods.Ftp.AppendFile);
request.UseBinary = true;
request.UsePassive = true;
request.KeepAlive = true;
SetRequestTimeout();
request.ContentLength = data.Length;
_request.ContentLength = data.Length;
// This example assumes the FTP site uses anonymous logon.
Stream requestStream = request.GetRequestStream();
Stream requestStream = _request.GetRequestStream();
requestStream.Write(data, 0, data.Length);
requestStream.Close();
FtpWebResponse response = (FtpWebResponse)request.GetResponse();
FtpWebResponse response = (FtpWebResponse)_request.GetResponse();
Console.WriteLine("Append status: {0}", response.StatusDescription);
response.Close();
request = null;
_request = null;
}
catch (Exception ex)
{
@@ -278,19 +221,14 @@ namespace PckStudio.Classes.Misc
{
try
{
request = CreateFTPWebRequest(new Uri(hostUri, name), credentials, WebRequestMethods.Ftp.MakeDirectory);
//request = (FtpWebRequest)WebRequest.Create(host + "/" + name);
//request.Credentials = credentials;
//request.Method = WebRequestMethods.Ftp.MakeDirectory;
_request = CreateRequest(new Uri(_host, name), _credentials, WebRequestMethods.Ftp.MakeDirectory);
request.UseBinary = true;
request.UsePassive = true;
request.KeepAlive = true;
SetRequestTimeout();
response = (FtpWebResponse)request.GetResponse();
response.Close();
_response = (FtpWebResponse)_request.GetResponse();
_response.Close();
request = null;
_request = null;
}
catch (Exception ex)
{
@@ -300,26 +238,34 @@ namespace PckStudio.Classes.Misc
public long GetFileSize(string filepath)
{
FtpWebRequest ftpWebRequest = CreateFTPWebRequest(new Uri(hostUri, filepath), credentials, WebRequestMethods.Ftp.GetFileSize);
//FtpWebRequest ftpWebRequest = (FtpWebRequest)WebRequest.Create(host + "/" + fileName);
//ftpWebRequest.Credentials = credentials;
//ftpWebRequest.Method = WebRequestMethods.Ftp.GetFileSize;
_request = CreateRequest(new Uri(_host, filepath), _credentials, WebRequestMethods.Ftp.GetFileSize);
ftpWebRequest.UseBinary = true;
SetRequestTimeout();
_response = (FtpWebResponse)_request.GetResponse();
long contentLength = _response.ContentLength;
_response.Close();
FtpWebResponse response = (FtpWebResponse)ftpWebRequest.GetResponse();
long contentLength = response.ContentLength;
response.Close();
_request = null;
return contentLength;
}
public void SetTimeoutLimit(TimeSpan delay)
{
_timeout = (int)delay.TotalMilliseconds;
}
private void SetRequestTimeout()
{
if (_request != null)
_request.Timeout = _timeout;
}
public void Dispose()
{
_stream.Dispose();
response.Dispose();
request = null;
response = null;
_stream = null;
_response?.Dispose();
_request = null;
_response = null;
}
}
}

View File

@@ -0,0 +1,211 @@
/*
* Source by: Simon Mourier(https://stackoverflow.com/users/403671/simon-mourier)
*/
namespace PckStudio.Classes.Misc
{
using System;
using System.Diagnostics;
using System.Runtime.InteropServices;
using System.Runtime.InteropServices.ComTypes;
using System.Windows; // for WPF support
using System.Windows.Interop; // for WPF support
public class OpenFolderDialog
{
public virtual string ResultPath { get; protected set; }
public virtual string ResultName { get; protected set; }
public virtual string InputPath { get; set; }
public virtual bool ForceFileSystem { get; set; }
public virtual string Title { get; set; }
public virtual string OkButtonLabel { get; set; }
public virtual string FileNameLabel { get; set; }
protected virtual int SetOptions(int options)
{
if (ForceFileSystem)
{
options |= (int)FOS.FOS_FORCEFILESYSTEM;
}
return options;
}
// for WPF support
public bool? ShowDialog(Window owner = null, bool throwOnError = false)
{
owner ??= Application.Current.MainWindow;
return ShowDialog(owner != null ? new WindowInteropHelper(owner).Handle : IntPtr.Zero, throwOnError);
}
// for all .NET
public virtual bool? ShowDialog(IntPtr owner, bool throwOnError = false)
{
var dialog = (IFileOpenDialog)new FileOpenDialog();
if (!string.IsNullOrEmpty(InputPath))
{
if (CheckHr(SHCreateItemFromParsingName(InputPath, null, typeof(IShellItem).GUID, out var item), throwOnError) != 0)
return null;
dialog.SetFolder(item);
}
var options = FOS.FOS_PICKFOLDERS;
options = (FOS)SetOptions((int)options);
dialog.SetOptions(options);
if (Title != null)
{
dialog.SetTitle(Title);
}
if (OkButtonLabel != null)
{
dialog.SetOkButtonLabel(OkButtonLabel);
}
if (FileNameLabel != null)
{
dialog.SetFileName(FileNameLabel);
}
if (owner == IntPtr.Zero)
{
owner = Process.GetCurrentProcess().MainWindowHandle;
if (owner == IntPtr.Zero)
{
owner = GetDesktopWindow();
}
}
var hr = dialog.Show(owner);
if (hr == ERROR_CANCELLED)
return null;
if (CheckHr(hr, throwOnError) != 0)
return null;
if (CheckHr(dialog.GetResult(out var result), throwOnError) != 0)
return null;
if (CheckHr(result.GetDisplayName(SIGDN.SIGDN_DESKTOPABSOLUTEPARSING, out var path), throwOnError) != 0)
return null;
ResultPath = path;
if (CheckHr(result.GetDisplayName(SIGDN.SIGDN_DESKTOPABSOLUTEEDITING, out path), false) == 0)
{
ResultName = path;
}
return true;
}
private static int CheckHr(int hr, bool throwOnError)
{
if (hr != 0)
{
if (throwOnError)
Marshal.ThrowExceptionForHR(hr);
}
return hr;
}
[DllImport("shell32")]
private static extern int SHCreateItemFromParsingName([MarshalAs(UnmanagedType.LPWStr)] string pszPath, IBindCtx pbc, [MarshalAs(UnmanagedType.LPStruct)] Guid riid, out IShellItem ppv);
[DllImport("user32")]
private static extern IntPtr GetDesktopWindow();
#pragma warning disable IDE1006 // Naming Styles
private const int ERROR_CANCELLED = unchecked((int)0x800704C7);
#pragma warning restore IDE1006 // Naming Styles
[ComImport, Guid("DC1C5A9C-E88A-4dde-A5A1-60F82A20AEF7")] // CLSID_FileOpenDialog
private class FileOpenDialog
{
}
[ComImport, Guid("42f85136-db7e-439c-85f1-e4075d135fc8"), InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
private interface IFileOpenDialog
{
[PreserveSig] int Show(IntPtr parent); // IModalWindow
[PreserveSig] int SetFileTypes(); // not fully defined
[PreserveSig] int SetFileTypeIndex(int iFileType);
[PreserveSig] int GetFileTypeIndex(out int piFileType);
[PreserveSig] int Advise(); // not fully defined
[PreserveSig] int Unadvise();
[PreserveSig] int SetOptions(FOS fos);
[PreserveSig] int GetOptions(out FOS pfos);
[PreserveSig] int SetDefaultFolder(IShellItem psi);
[PreserveSig] int SetFolder(IShellItem psi);
[PreserveSig] int GetFolder(out IShellItem ppsi);
[PreserveSig] int GetCurrentSelection(out IShellItem ppsi);
[PreserveSig] int SetFileName([MarshalAs(UnmanagedType.LPWStr)] string pszName);
[PreserveSig] int GetFileName([MarshalAs(UnmanagedType.LPWStr)] out string pszName);
[PreserveSig] int SetTitle([MarshalAs(UnmanagedType.LPWStr)] string pszTitle);
[PreserveSig] int SetOkButtonLabel([MarshalAs(UnmanagedType.LPWStr)] string pszText);
[PreserveSig] int SetFileNameLabel([MarshalAs(UnmanagedType.LPWStr)] string pszLabel);
[PreserveSig] int GetResult(out IShellItem ppsi);
[PreserveSig] int AddPlace(IShellItem psi, int alignment);
[PreserveSig] int SetDefaultExtension([MarshalAs(UnmanagedType.LPWStr)] string pszDefaultExtension);
[PreserveSig] int Close(int hr);
[PreserveSig] int SetClientGuid(); // not fully defined
[PreserveSig] int ClearClientData();
[PreserveSig] int SetFilter([MarshalAs(UnmanagedType.IUnknown)] object pFilter);
[PreserveSig] int GetResults([MarshalAs(UnmanagedType.IUnknown)] out object ppenum);
[PreserveSig] int GetSelectedItems([MarshalAs(UnmanagedType.IUnknown)] out object ppsai);
}
[ComImport, Guid("43826D1E-E718-42EE-BC55-A1E261C37BFE"), InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
private interface IShellItem
{
[PreserveSig] int BindToHandler(); // not fully defined
[PreserveSig] int GetParent(); // not fully defined
[PreserveSig] int GetDisplayName(SIGDN sigdnName, [MarshalAs(UnmanagedType.LPWStr)] out string ppszName);
[PreserveSig] int GetAttributes(); // not fully defined
[PreserveSig] int Compare(); // not fully defined
}
#pragma warning disable CA1712 // Do not prefix enum values with type name
private enum SIGDN : uint
{
SIGDN_DESKTOPABSOLUTEEDITING = 0x8004c000,
SIGDN_DESKTOPABSOLUTEPARSING = 0x80028000,
SIGDN_FILESYSPATH = 0x80058000,
SIGDN_NORMALDISPLAY = 0,
SIGDN_PARENTRELATIVE = 0x80080001,
SIGDN_PARENTRELATIVEEDITING = 0x80031001,
SIGDN_PARENTRELATIVEFORADDRESSBAR = 0x8007c001,
SIGDN_PARENTRELATIVEPARSING = 0x80018001,
SIGDN_URL = 0x80068000
}
[Flags]
private enum FOS
{
FOS_OVERWRITEPROMPT = 0x2,
FOS_STRICTFILETYPES = 0x4,
FOS_NOCHANGEDIR = 0x8,
FOS_PICKFOLDERS = 0x20,
FOS_FORCEFILESYSTEM = 0x40,
FOS_ALLNONSTORAGEITEMS = 0x80,
FOS_NOVALIDATE = 0x100,
FOS_ALLOWMULTISELECT = 0x200,
FOS_PATHMUSTEXIST = 0x800,
FOS_FILEMUSTEXIST = 0x1000,
FOS_CREATEPROMPT = 0x2000,
FOS_SHAREAWARE = 0x4000,
FOS_NOREADONLYRETURN = 0x8000,
FOS_NOTESTFILECREATE = 0x10000,
FOS_HIDEMRUPLACES = 0x20000,
FOS_HIDEPINNEDPLACES = 0x40000,
FOS_NODEREFERENCELINKS = 0x100000,
FOS_OKBUTTONNEEDSINTERACTION = 0x200000,
FOS_DONTADDTORECENT = 0x2000000,
FOS_FORCESHOWHIDDEN = 0x10000000,
FOS_DEFAULTNOMINIMODE = 0x20000000,
FOS_FORCEPREVIEWPANEON = 0x40000000,
FOS_SUPPORTSTREAMABLEITEMS = unchecked((int)0x80000000)
}
#pragma warning restore CA1712 // Do not prefix enum values with type name
}
}

View File

@@ -1,4 +1,5 @@
using System.Collections.Generic;
using System.Linq;
namespace PckStudio.Extensions
{
@@ -13,5 +14,15 @@ namespace PckStudio.Extensions
}
yield break;
}
public static bool ContainsAny<T>(this IEnumerable<T> array, params T[] items)
{
foreach (var item in array)
{
if (items.Contains(item))
return true;
}
return false;
}
}
}

283
PCK-Studio/Features/CemuPanel.Designer.cs generated Normal file
View File

@@ -0,0 +1,283 @@
namespace PckStudio.Features
{
partial class CemuPanel
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Component Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.components = new System.ComponentModel.Container();
System.Windows.Forms.TableLayoutPanel layoutPanel;
this.radioButtonEur = new System.Windows.Forms.RadioButton();
this.radioButtonUs = new System.Windows.Forms.RadioButton();
this.radioButtonJap = new System.Windows.Forms.RadioButton();
this.GameDirectoryTextBox = new MetroFramework.Controls.MetroTextBox();
this.BrowseDirectoryBtn = new System.Windows.Forms.Button();
this.DLCTreeView = new System.Windows.Forms.TreeView();
this.DLCContextMenu = new MetroFramework.Controls.MetroContextMenu(this.components);
this.openSkinPackToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.openTexturePackToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.addCustomPckToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.removePckToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
layoutPanel = new System.Windows.Forms.TableLayoutPanel();
layoutPanel.SuspendLayout();
this.DLCContextMenu.SuspendLayout();
this.SuspendLayout();
//
// layoutPanel
//
layoutPanel.BackColor = System.Drawing.Color.Black;
layoutPanel.ColumnCount = 3;
layoutPanel.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 33.33332F));
layoutPanel.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 33.33334F));
layoutPanel.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 33.33334F));
layoutPanel.Controls.Add(this.radioButtonEur, 0, 1);
layoutPanel.Controls.Add(this.radioButtonUs, 1, 1);
layoutPanel.Controls.Add(this.radioButtonJap, 2, 1);
layoutPanel.Controls.Add(this.GameDirectoryTextBox, 0, 0);
layoutPanel.Controls.Add(this.BrowseDirectoryBtn, 2, 0);
layoutPanel.Controls.Add(this.DLCTreeView, 0, 2);
layoutPanel.Dock = System.Windows.Forms.DockStyle.Fill;
layoutPanel.Location = new System.Drawing.Point(0, 0);
layoutPanel.Margin = new System.Windows.Forms.Padding(0);
layoutPanel.Name = "layoutPanel";
layoutPanel.RowCount = 3;
layoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle());
layoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 36F));
layoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F));
layoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20F));
layoutPanel.Size = new System.Drawing.Size(430, 550);
layoutPanel.TabIndex = 4;
//
// radioButtonEur
//
this.radioButtonEur.Appearance = System.Windows.Forms.Appearance.Button;
this.radioButtonEur.AutoSize = true;
this.radioButtonEur.BackColor = System.Drawing.Color.Transparent;
this.radioButtonEur.CheckAlign = System.Drawing.ContentAlignment.BottomRight;
this.radioButtonEur.Checked = true;
this.radioButtonEur.Dock = System.Windows.Forms.DockStyle.Fill;
this.radioButtonEur.FlatAppearance.CheckedBackColor = System.Drawing.Color.DodgerBlue;
this.radioButtonEur.FlatAppearance.MouseDownBackColor = System.Drawing.Color.Aqua;
this.radioButtonEur.FlatAppearance.MouseOverBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(192)))), ((int)(((byte)(192)))));
this.radioButtonEur.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.radioButtonEur.Font = new System.Drawing.Font("Segoe UI", 12F);
this.radioButtonEur.ForeColor = System.Drawing.Color.White;
this.radioButtonEur.ImeMode = System.Windows.Forms.ImeMode.NoControl;
this.radioButtonEur.Location = new System.Drawing.Point(3, 36);
this.radioButtonEur.Name = "radioButtonEur";
this.radioButtonEur.Size = new System.Drawing.Size(137, 30);
this.radioButtonEur.TabIndex = 1;
this.radioButtonEur.TabStop = true;
this.radioButtonEur.Text = "EUR";
this.radioButtonEur.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
this.radioButtonEur.UseVisualStyleBackColor = false;
this.radioButtonEur.Click += new System.EventHandler(this.radioButton_Click);
//
// radioButtonUs
//
this.radioButtonUs.Appearance = System.Windows.Forms.Appearance.Button;
this.radioButtonUs.AutoSize = true;
this.radioButtonUs.BackColor = System.Drawing.Color.Transparent;
this.radioButtonUs.CheckAlign = System.Drawing.ContentAlignment.BottomRight;
this.radioButtonUs.Dock = System.Windows.Forms.DockStyle.Fill;
this.radioButtonUs.FlatAppearance.CheckedBackColor = System.Drawing.Color.DodgerBlue;
this.radioButtonUs.FlatAppearance.MouseDownBackColor = System.Drawing.Color.Aqua;
this.radioButtonUs.FlatAppearance.MouseOverBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(192)))), ((int)(((byte)(192)))));
this.radioButtonUs.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.radioButtonUs.Font = new System.Drawing.Font("Segoe UI", 12F);
this.radioButtonUs.ForeColor = System.Drawing.Color.White;
this.radioButtonUs.ImeMode = System.Windows.Forms.ImeMode.NoControl;
this.radioButtonUs.Location = new System.Drawing.Point(146, 36);
this.radioButtonUs.Name = "radioButtonUs";
this.radioButtonUs.Size = new System.Drawing.Size(137, 30);
this.radioButtonUs.TabIndex = 0;
this.radioButtonUs.Text = "US";
this.radioButtonUs.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
this.radioButtonUs.UseVisualStyleBackColor = false;
this.radioButtonUs.Click += new System.EventHandler(this.radioButton_Click);
//
// radioButtonJap
//
this.radioButtonJap.Appearance = System.Windows.Forms.Appearance.Button;
this.radioButtonJap.AutoSize = true;
this.radioButtonJap.BackColor = System.Drawing.Color.Transparent;
this.radioButtonJap.CheckAlign = System.Drawing.ContentAlignment.BottomRight;
this.radioButtonJap.Dock = System.Windows.Forms.DockStyle.Fill;
this.radioButtonJap.FlatAppearance.CheckedBackColor = System.Drawing.Color.DodgerBlue;
this.radioButtonJap.FlatAppearance.MouseDownBackColor = System.Drawing.Color.Aqua;
this.radioButtonJap.FlatAppearance.MouseOverBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(192)))), ((int)(((byte)(192)))));
this.radioButtonJap.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.radioButtonJap.Font = new System.Drawing.Font("Segoe UI", 12F);
this.radioButtonJap.ForeColor = System.Drawing.Color.White;
this.radioButtonJap.ImeMode = System.Windows.Forms.ImeMode.NoControl;
this.radioButtonJap.Location = new System.Drawing.Point(289, 36);
this.radioButtonJap.Name = "radioButtonJap";
this.radioButtonJap.Size = new System.Drawing.Size(138, 30);
this.radioButtonJap.TabIndex = 2;
this.radioButtonJap.Text = "JAP";
this.radioButtonJap.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
this.radioButtonJap.UseVisualStyleBackColor = false;
this.radioButtonJap.Click += new System.EventHandler(this.radioButton_Click);
//
// GameDirectoryTextBox
//
this.GameDirectoryTextBox.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(64)))), ((int)(((byte)(64)))), ((int)(((byte)(64)))));
layoutPanel.SetColumnSpan(this.GameDirectoryTextBox, 2);
//
//
//
this.GameDirectoryTextBox.CustomButton.Image = null;
this.GameDirectoryTextBox.CustomButton.ImeMode = System.Windows.Forms.ImeMode.NoControl;
this.GameDirectoryTextBox.CustomButton.Location = new System.Drawing.Point(252, 1);
this.GameDirectoryTextBox.CustomButton.Name = "";
this.GameDirectoryTextBox.CustomButton.Size = new System.Drawing.Size(25, 25);
this.GameDirectoryTextBox.CustomButton.Style = MetroFramework.MetroColorStyle.Blue;
this.GameDirectoryTextBox.CustomButton.TabIndex = 1;
this.GameDirectoryTextBox.CustomButton.Theme = MetroFramework.MetroThemeStyle.Light;
this.GameDirectoryTextBox.CustomButton.UseSelectable = true;
this.GameDirectoryTextBox.CustomButton.Visible = false;
this.GameDirectoryTextBox.Dock = System.Windows.Forms.DockStyle.Fill;
this.GameDirectoryTextBox.Lines = new string[0];
this.GameDirectoryTextBox.Location = new System.Drawing.Point(3, 3);
this.GameDirectoryTextBox.MaxLength = 32767;
this.GameDirectoryTextBox.Name = "GameDirectoryTextBox";
this.GameDirectoryTextBox.PasswordChar = '\0';
this.GameDirectoryTextBox.PromptText = "Cemu Game Directory";
this.GameDirectoryTextBox.ScrollBars = System.Windows.Forms.ScrollBars.None;
this.GameDirectoryTextBox.SelectedText = "";
this.GameDirectoryTextBox.SelectionLength = 0;
this.GameDirectoryTextBox.SelectionStart = 0;
this.GameDirectoryTextBox.ShortcutsEnabled = true;
this.GameDirectoryTextBox.Size = new System.Drawing.Size(280, 27);
this.GameDirectoryTextBox.Style = MetroFramework.MetroColorStyle.Blue;
this.GameDirectoryTextBox.TabIndex = 11;
this.GameDirectoryTextBox.Theme = MetroFramework.MetroThemeStyle.Dark;
this.GameDirectoryTextBox.UseSelectable = true;
this.GameDirectoryTextBox.WaterMark = "Cemu Game Directory";
this.GameDirectoryTextBox.WaterMarkColor = System.Drawing.Color.FromArgb(((int)(((byte)(109)))), ((int)(((byte)(109)))), ((int)(((byte)(109)))));
this.GameDirectoryTextBox.WaterMarkFont = new System.Drawing.Font("Segoe UI", 12F, System.Drawing.FontStyle.Italic, System.Drawing.GraphicsUnit.Pixel);
//
// BrowseDirectoryBtn
//
this.BrowseDirectoryBtn.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
this.BrowseDirectoryBtn.BackColor = System.Drawing.Color.DarkCyan;
this.BrowseDirectoryBtn.Dock = System.Windows.Forms.DockStyle.Fill;
this.BrowseDirectoryBtn.FlatAppearance.BorderSize = 0;
this.BrowseDirectoryBtn.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.BrowseDirectoryBtn.Font = new System.Drawing.Font("Segoe UI", 9.75F);
this.BrowseDirectoryBtn.ForeColor = System.Drawing.Color.White;
this.BrowseDirectoryBtn.ImeMode = System.Windows.Forms.ImeMode.NoControl;
this.BrowseDirectoryBtn.Location = new System.Drawing.Point(289, 3);
this.BrowseDirectoryBtn.Name = "BrowseDirectoryBtn";
this.BrowseDirectoryBtn.Size = new System.Drawing.Size(138, 27);
this.BrowseDirectoryBtn.TabIndex = 12;
this.BrowseDirectoryBtn.Text = "Browse";
this.BrowseDirectoryBtn.UseVisualStyleBackColor = false;
this.BrowseDirectoryBtn.Click += new System.EventHandler(this.BrowseDirectoryBtn_Click);
//
// DLCTreeView
//
this.DLCTreeView.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
layoutPanel.SetColumnSpan(this.DLCTreeView, 3);
this.DLCTreeView.ContextMenuStrip = this.DLCContextMenu;
this.DLCTreeView.Location = new System.Drawing.Point(3, 72);
this.DLCTreeView.Name = "DLCTreeView";
this.DLCTreeView.Size = new System.Drawing.Size(424, 475);
this.DLCTreeView.TabIndex = 13;
this.DLCTreeView.AfterSelect += new System.Windows.Forms.TreeViewEventHandler(this.DLCTreeView_AfterSelect);
this.DLCTreeView.NodeMouseDoubleClick += new System.Windows.Forms.TreeNodeMouseClickEventHandler(this.DLCTreeView_NodeMouseDoubleClick);
//
// DLCContextMenu
//
this.DLCContextMenu.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.openSkinPackToolStripMenuItem,
this.openTexturePackToolStripMenuItem,
this.addCustomPckToolStripMenuItem,
this.removePckToolStripMenuItem});
this.DLCContextMenu.Name = "DLCContextMenu";
this.DLCContextMenu.Size = new System.Drawing.Size(173, 92);
//
// openSkinPackToolStripMenuItem
//
this.openSkinPackToolStripMenuItem.Name = "openSkinPackToolStripMenuItem";
this.openSkinPackToolStripMenuItem.Size = new System.Drawing.Size(172, 22);
this.openSkinPackToolStripMenuItem.Text = "Open Pack";
this.openSkinPackToolStripMenuItem.Click += new System.EventHandler(this.openSkinPackToolStripMenuItem_Click);
//
// openTexturePackToolStripMenuItem
//
this.openTexturePackToolStripMenuItem.Name = "openTexturePackToolStripMenuItem";
this.openTexturePackToolStripMenuItem.Size = new System.Drawing.Size(172, 22);
this.openTexturePackToolStripMenuItem.Text = "Open Texture Pack";
this.openTexturePackToolStripMenuItem.Click += new System.EventHandler(this.openTexturePackToolStripMenuItem_Click);
//
// addCustomPckToolStripMenuItem
//
this.addCustomPckToolStripMenuItem.Name = "addCustomPckToolStripMenuItem";
this.addCustomPckToolStripMenuItem.Size = new System.Drawing.Size(172, 22);
this.addCustomPckToolStripMenuItem.Text = "Add pck";
this.addCustomPckToolStripMenuItem.Click += new System.EventHandler(this.addCustomPckToolStripMenuItem_Click);
//
// removePckToolStripMenuItem
//
this.removePckToolStripMenuItem.Name = "removePckToolStripMenuItem";
this.removePckToolStripMenuItem.Size = new System.Drawing.Size(172, 22);
this.removePckToolStripMenuItem.Text = "Remove pck";
this.removePckToolStripMenuItem.Click += new System.EventHandler(this.removePckToolStripMenuItem_Click);
//
// CemuPanel
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.AutoSize = true;
this.BackColor = System.Drawing.SystemColors.ActiveCaptionText;
this.Controls.Add(layoutPanel);
this.Name = "CemuPanel";
this.Size = new System.Drawing.Size(430, 550);
layoutPanel.ResumeLayout(false);
layoutPanel.PerformLayout();
this.DLCContextMenu.ResumeLayout(false);
this.ResumeLayout(false);
}
#endregion
private System.Windows.Forms.Button BrowseDirectoryBtn;
private MetroFramework.Controls.MetroTextBox GameDirectoryTextBox;
private System.Windows.Forms.RadioButton radioButtonEur;
private System.Windows.Forms.RadioButton radioButtonUs;
private System.Windows.Forms.RadioButton radioButtonJap;
private System.Windows.Forms.TreeView DLCTreeView;
private MetroFramework.Controls.MetroContextMenu DLCContextMenu;
private System.Windows.Forms.ToolStripMenuItem openSkinPackToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem openTexturePackToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem addCustomPckToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem removePckToolStripMenuItem;
}
}

View File

@@ -0,0 +1,222 @@
using System;
using System.IO;
using System.Linq;
using System.Windows.Forms;
using PckStudio.Extensions;
using PckStudio.Classes.Misc;
namespace PckStudio.Features
{
/// <summary>
/// Wishlist:
/// - add the ability to save the currently open pck file to the desired folder destination.
/// (even if the pck file has not yet be saved to disk)
/// </summary>
public partial class CemuPanel : UserControl
{
public CemuPanel()
{
InitializeComponent();
}
private string GetSelectedRegionTitleId()
{
if (radioButtonEur.Checked)
{
return "101d7500";
}
if (radioButtonUs.Checked)
{
return "101d9d00";
}
if (radioButtonJap.Checked)
{
return "101dbe00";
}
throw new Exception("how did you get here ?");
}
private string GetGameContentPath()
{
string region = GetSelectedRegionTitleId();
return $"{GameDirectoryTextBox.Text}/usr/title/0005000e/{region}/content";
}
private string GetContentSubDirectory(params string[] subpaths)
{
return Path.Combine(GetGameContentPath(), Path.Combine(subpaths));
}
private void BrowseDirectoryBtn_Click(object sender, EventArgs e)
{
OpenFolderDialog openFolderDialog = new OpenFolderDialog
{
Title = "Select Cemu Game Directory"
};
if (openFolderDialog.ShowDialog(Handle) == true && Directory.Exists(openFolderDialog.ResultPath))
{
GameDirectoryTextBox.Text = openFolderDialog.ResultPath;
ListDLCs();
}
}
private class DLCDirectoryInfo
{
private readonly bool _hasTexturePack;
private readonly string _basePckPath;
private readonly string _texturePackPath;
public bool HasTexturePack => _hasTexturePack;
public string PackPath => _basePckPath;
public string TexturePackPath => _texturePackPath;
public DLCDirectoryInfo(DirectoryInfo directory)
{
_basePckPath = directory.GetFiles().FirstOrDefault(f => f.Name.EndsWith(".pck")).FullName;
_ = _basePckPath ?? throw new NullReferenceException($"Could not find any '.pck' inside {directory.Name}");
if (TryGetDataDirectory(directory, out var dataDir))
{
var tpFileInfo = dataDir.GetFiles().FirstOrDefault(f => !f.Name.Equals("audio.pck") && f.Name.EndsWith(".pck"));
_hasTexturePack = tpFileInfo is not null;
_texturePackPath = _hasTexturePack ? tpFileInfo.FullName : string.Empty;
}
}
public DLCDirectoryInfo(string path)
: this(new DirectoryInfo(path))
{
}
private bool TryGetDataDirectory(DirectoryInfo directory, out DirectoryInfo dataDirectory)
{
var dirs = directory.GetDirectories("Data", SearchOption.TopDirectoryOnly);
dataDirectory = dirs.Length != 0 ? dirs[0] : null;
return dirs.Length != 0;
}
}
private void ListDLCs()
{
DLCTreeView.Nodes.Clear();
if (!IsValidInstallDirectory())
{
MessageBox.Show("Please select a valid Game Directory!", "Invalid Directory Specified",
MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}
if (!IsValidGameDirectory())
{
MessageBox.Show($"Could not find '{GetGameContentPath()}'!", "Not Found",
MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}
string dirPath = GetContentSubDirectory("WiiU", "DLC");
DirectoryInfo dlcDirectory = new DirectoryInfo(dirPath);
if (!dlcDirectory.Exists)
{
MessageBox.Show($"'{dirPath}' does not exist!", "Not Found",
MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}
foreach (var directoryInfo in dlcDirectory.GetDirectories())
{
if (directoryInfo.GetFileSystemInfos().Length != 0)
{
var node = DLCTreeView.Nodes.Add(directoryInfo.Name);
node.Tag = new DLCDirectoryInfo(directoryInfo);
}
}
}
private bool IsValidInstallDirectory()
{
return !string.IsNullOrWhiteSpace(GameDirectoryTextBox.Text) && Directory.Exists(GameDirectoryTextBox.Text);
}
private void radioButton_Click(object sender, EventArgs e)
{
ListDLCs();
}
private bool IsValidGameDirectory()
{
return IsValidInstallDirectory() && Directory.Exists(GetGameContentPath());
}
private void openSkinPackToolStripMenuItem_Click(object sender, EventArgs e)
{
if (DLCTreeView.SelectedNode.Tag is DLCDirectoryInfo dlcDir)
{
Program.MainInstance.LoadPckFromFile(dlcDir.PackPath);
}
}
private void openTexturePackToolStripMenuItem_Click(object sender, EventArgs e)
{
if (DLCTreeView.SelectedNode.Tag is DLCDirectoryInfo dlcDir && dlcDir.HasTexturePack)
{
Program.MainInstance.LoadPckFromFile(dlcDir.TexturePackPath);
}
}
private void DLCTreeView_AfterSelect(object sender, TreeViewEventArgs e)
{
openTexturePackToolStripMenuItem.Visible = e.Node.Tag is DLCDirectoryInfo dlcDir && dlcDir.HasTexturePack;
}
private void addCustomPckToolStripMenuItem_Click(object sender, EventArgs e)
{
RenamePrompt prompt = new RenamePrompt(string.Empty);
prompt.OKButton.Text = "OK";
prompt.TextLabel.Text = "Folder:";
if (prompt.ShowDialog(this) != DialogResult.OK)
return;
if (prompt.NewText.ContainsAny(Path.GetInvalidPathChars()))
{
MessageBox.Show("Invalid Folder name entered!", "Invalid Folder Name", MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}
string directoryPath = GetContentSubDirectory("WiiU", "DLC", prompt.NewText);
if (Directory.Exists(directoryPath))
{
MessageBox.Show("A Folder with the same name already exists!", "Folder Name taken", MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}
Directory.CreateDirectory(directoryPath);
using OpenFileDialog fileDialog = new OpenFileDialog
{
Filter = "PCK (Minecraft Console Package)|*.pck"
};
if (fileDialog.ShowDialog(this) == DialogResult.OK)
{
File.Copy(fileDialog.FileName, Path.Combine(directoryPath, fileDialog.SafeFileName));
}
}
private void removePckToolStripMenuItem_Click(object sender, EventArgs e)
{
string pckName = DLCTreeView.SelectedNode.Text;
var result = MessageBox.Show($"Are you sure you want to permanently delete '{pckName}'?", "Hold up!", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question);
if (result == DialogResult.Yes)
{
string directoryPath = GetContentSubDirectory("WiiU", "DLC", pckName);
Directory.Delete(directoryPath, recursive: true);
DLCTreeView.SelectedNode.Remove();
}
}
private void DLCTreeView_NodeMouseDoubleClick(object sender, TreeNodeMouseClickEventArgs e)
{
openSkinPackToolStripMenuItem_Click(sender, e);
}
}
}

View File

@@ -117,10 +117,10 @@
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<metadata name="metroLabel1.GenerateMember" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<metadata name="layoutPanel.GenerateMember" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
</metadata>
<metadata name="metroLabel2.GenerateMember" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
<metadata name="DLCContextMenu.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value>
</metadata>
</root>

127
PCK-Studio/Features/PckManager.Designer.cs generated Normal file
View File

@@ -0,0 +1,127 @@
namespace PckStudio.Features
{
partial class PckManager
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
MetroFramework.Controls.MetroLabel metroLabel1;
MetroFramework.Controls.MetroLabel metroLabel2;
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(PckManager));
this.supportedPlatformComboBox = new MetroFramework.Controls.MetroComboBox();
this.mainPanel = new System.Windows.Forms.TableLayoutPanel();
metroLabel1 = new MetroFramework.Controls.MetroLabel();
metroLabel2 = new MetroFramework.Controls.MetroLabel();
this.mainPanel.SuspendLayout();
this.SuspendLayout();
//
// metroLabel1
//
metroLabel1.AutoSize = true;
metroLabel1.Location = new System.Drawing.Point(264, 73);
metroLabel1.Name = "metroLabel1";
metroLabel1.Size = new System.Drawing.Size(90, 19);
metroLabel1.Style = MetroFramework.MetroColorStyle.Black;
metroLabel1.TabIndex = 1;
metroLabel1.Text = "Console Type:";
metroLabel1.Theme = MetroFramework.MetroThemeStyle.Dark;
//
// metroLabel2
//
metroLabel2.AutoSize = true;
metroLabel2.Dock = System.Windows.Forms.DockStyle.Fill;
metroLabel2.Location = new System.Drawing.Point(3, 0);
metroLabel2.Name = "metroLabel2";
metroLabel2.Size = new System.Drawing.Size(183, 35);
metroLabel2.Style = MetroFramework.MetroColorStyle.Black;
metroLabel2.TabIndex = 13;
metroLabel2.Text = "Platform type:";
metroLabel2.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
metroLabel2.Theme = MetroFramework.MetroThemeStyle.Dark;
//
// supportedPlatformComboBox
//
this.supportedPlatformComboBox.BackColor = System.Drawing.SystemColors.Window;
this.supportedPlatformComboBox.Dock = System.Windows.Forms.DockStyle.Fill;
this.supportedPlatformComboBox.FormattingEnabled = true;
this.supportedPlatformComboBox.ItemHeight = 23;
this.supportedPlatformComboBox.Location = new System.Drawing.Point(192, 3);
this.supportedPlatformComboBox.Name = "supportedPlatformComboBox";
this.supportedPlatformComboBox.PromptText = "Select Platform";
this.supportedPlatformComboBox.Size = new System.Drawing.Size(184, 29);
this.supportedPlatformComboBox.Style = MetroFramework.MetroColorStyle.Black;
this.supportedPlatformComboBox.TabIndex = 0;
this.supportedPlatformComboBox.Theme = MetroFramework.MetroThemeStyle.Dark;
this.supportedPlatformComboBox.UseSelectable = true;
this.supportedPlatformComboBox.SelectedIndexChanged += new System.EventHandler(this.supportedPlatformComboBox_SelectedIndexChanged);
//
// mainPanel
//
this.mainPanel.BackColor = System.Drawing.Color.Transparent;
this.mainPanel.ColumnCount = 2;
this.mainPanel.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F));
this.mainPanel.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F));
this.mainPanel.Controls.Add(this.supportedPlatformComboBox, 1, 0);
this.mainPanel.Controls.Add(metroLabel2, 0, 0);
this.mainPanel.Dock = System.Windows.Forms.DockStyle.Fill;
this.mainPanel.Location = new System.Drawing.Point(20, 60);
this.mainPanel.Margin = new System.Windows.Forms.Padding(0);
this.mainPanel.Name = "mainPanel";
this.mainPanel.RowCount = 2;
this.mainPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 35F));
this.mainPanel.RowStyles.Add(new System.Windows.Forms.RowStyle());
this.mainPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20F));
this.mainPanel.Size = new System.Drawing.Size(379, 560);
this.mainPanel.TabIndex = 3;
//
// PckManager
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(419, 640);
this.Controls.Add(this.mainPanel);
this.Controls.Add(metroLabel1);
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
this.MaximizeBox = false;
this.MinimizeBox = false;
this.MinimumSize = new System.Drawing.Size(419, 640);
this.Name = "PckManager";
this.Style = MetroFramework.MetroColorStyle.Silver;
this.Text = "Pck Manager";
this.Theme = MetroFramework.MetroThemeStyle.Dark;
this.mainPanel.ResumeLayout(false);
this.mainPanel.PerformLayout();
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
private MetroFramework.Controls.MetroComboBox supportedPlatformComboBox;
private System.Windows.Forms.TableLayoutPanel mainPanel;
}
}

View File

@@ -0,0 +1,76 @@
/* Copyright (c) 2022-present miku-666
* This software is provided 'as-is', without any express or implied
* warranty. In no event will the authors be held liable for any damages
* arising from the use of this software.
*
* Permission is granted to anyone to use this software for any purpose,
* including commercial applications, and to alter it and redistribute it
* freely, subject to the following restrictions:
*
* 1. The origin of this software must not be misrepresented; you must not
* claim that you wrote the original software. If you use this software
* in a product, an acknowledgment in the product documentation would be
* appreciated but is not required.
* 2. Altered source versions must be plainly marked as such, and must not be
* misrepresented as being the original software.
* 3. This notice may not be removed or altered from any source distribution.
**/
using System;
using System.Windows.Forms;
namespace PckStudio.Features
{
public partial class PckManager : MetroFramework.Forms.MetroForm
{
private Control currentlyShowingControl;
private const string CemU = "Cemu";
// TODO: Implement these Panels
private const string WiiU = "Wii U";
private const string PS3 = "Play Station 3";
private const string PSVita = "PS Vita";
private const string RPCS3 = "RPCS3";
public PckManager()
{
InitializeComponent();
supportedPlatformComboBox.Items.AddRange(new string[]
{
// WiiU,
// PS3,
// PSVita,
CemU,
// RPCS3,
});
}
private void supportedPlatformComboBox_SelectedIndexChanged(object sender, EventArgs e)
{
mainPanel.Controls.Remove(currentlyShowingControl);
if (supportedPlatformComboBox.SelectedIndex > -1)
{
string text = supportedPlatformComboBox.Items[supportedPlatformComboBox.SelectedIndex].ToString();
try
{
currentlyShowingControl = text switch
{
CemU => new CemuPanel(),
//WiiU => new WiiUPanel(),
//PS3 => throw new NotImplementedException($"{text}-Panel is currently not implemented."),
//PSVita => throw new NotImplementedException($"{text}-Panel is currently not implemented."),
//RPCS3 => throw new NotImplementedException($"{text}-Panel is currently not implemented."),
_ => throw new Exception($"No Panel found for: {text}"),
};
currentlyShowingControl.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Bottom | AnchorStyles.Right;
mainPanel.SetColumnSpan(currentlyShowingControl, 2);
mainPanel.Controls.Add(currentlyShowingControl, 0, 1);
}
catch (NotImplementedException ex)
{
MessageBox.Show(ex.Message, "Not Implemented");
}
}
}
}
}

File diff suppressed because it is too large Load Diff

428
PCK-Studio/Features/WiiUPanel.Designer.cs generated Normal file
View File

@@ -0,0 +1,428 @@
namespace PckStudio.Features
{
partial class WiiUPanel
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Component Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.components = new System.ComponentModel.Container();
this.myTablePanel1 = new System.Windows.Forms.TableLayoutPanel();
this.buttonServerToggle = new System.Windows.Forms.Button();
this.IPv4TextBox = new MetroFramework.Controls.MetroTextBox();
this.listViewPCKS = new System.Windows.Forms.ListView();
this.contextMenuStripCaffiine = new System.Windows.Forms.ContextMenuStrip(this.components);
this.replaceToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.replacePCKToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.radioButtonUSB = new System.Windows.Forms.RadioButton();
this.TextBoxPackImage = new MetroFramework.Controls.MetroTextBox();
this.radioButtonSystem = new System.Windows.Forms.RadioButton();
this.buttonSelect = new System.Windows.Forms.Button();
this.PackImageSelection = new System.Windows.Forms.Button();
this.regionLayoutPanel = new System.Windows.Forms.TableLayoutPanel();
this.radioButtonEur = new System.Windows.Forms.RadioButton();
this.radioButtonUs = new System.Windows.Forms.RadioButton();
this.radioButtonJap = new System.Windows.Forms.RadioButton();
this.myTablePanel1.SuspendLayout();
this.contextMenuStripCaffiine.SuspendLayout();
this.regionLayoutPanel.SuspendLayout();
this.SuspendLayout();
//
// myTablePanel1
//
this.myTablePanel1.BackColor = System.Drawing.Color.Black;
this.myTablePanel1.ColumnCount = 3;
this.myTablePanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 33.33333F));
this.myTablePanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 33.33334F));
this.myTablePanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 33.33334F));
this.myTablePanel1.Controls.Add(this.buttonServerToggle, 2, 0);
this.myTablePanel1.Controls.Add(this.IPv4TextBox, 0, 0);
this.myTablePanel1.Controls.Add(this.listViewPCKS, 0, 4);
this.myTablePanel1.Controls.Add(this.radioButtonUSB);
this.myTablePanel1.Controls.Add(this.TextBoxPackImage, 0, 1);
this.myTablePanel1.Controls.Add(this.radioButtonSystem, 1, 2);
this.myTablePanel1.Controls.Add(this.buttonSelect, 0, 2);
this.myTablePanel1.Controls.Add(this.PackImageSelection, 2, 1);
this.myTablePanel1.Controls.Add(this.regionLayoutPanel, 0, 3);
this.myTablePanel1.Dock = System.Windows.Forms.DockStyle.Fill;
this.myTablePanel1.Location = new System.Drawing.Point(0, 0);
this.myTablePanel1.Margin = new System.Windows.Forms.Padding(0);
this.myTablePanel1.Name = "myTablePanel1";
this.myTablePanel1.RowCount = 8;
this.myTablePanel1.RowStyles.Add(new System.Windows.Forms.RowStyle());
this.myTablePanel1.RowStyles.Add(new System.Windows.Forms.RowStyle());
this.myTablePanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 36F));
this.myTablePanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 46F));
this.myTablePanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F));
this.myTablePanel1.RowStyles.Add(new System.Windows.Forms.RowStyle());
this.myTablePanel1.RowStyles.Add(new System.Windows.Forms.RowStyle());
this.myTablePanel1.RowStyles.Add(new System.Windows.Forms.RowStyle());
this.myTablePanel1.Size = new System.Drawing.Size(430, 550);
this.myTablePanel1.TabIndex = 3;
//
// buttonServerToggle
//
this.buttonServerToggle.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
this.buttonServerToggle.BackColor = System.Drawing.Color.SpringGreen;
this.buttonServerToggle.Dock = System.Windows.Forms.DockStyle.Fill;
this.buttonServerToggle.Enabled = false;
this.buttonServerToggle.FlatAppearance.BorderSize = 0;
this.buttonServerToggle.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.buttonServerToggle.Font = new System.Drawing.Font("Segoe UI", 9.75F);
this.buttonServerToggle.ForeColor = System.Drawing.Color.White;
this.buttonServerToggle.ImeMode = System.Windows.Forms.ImeMode.NoControl;
this.buttonServerToggle.Location = new System.Drawing.Point(289, 3);
this.buttonServerToggle.Name = "buttonServerToggle";
this.buttonServerToggle.Size = new System.Drawing.Size(138, 27);
this.buttonServerToggle.TabIndex = 9;
this.buttonServerToggle.Text = "Start";
this.buttonServerToggle.UseVisualStyleBackColor = false;
this.buttonServerToggle.Click += new System.EventHandler(this.buttonServerToggle_Click);
//
// IPv4TextBox
//
this.IPv4TextBox.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(64)))), ((int)(((byte)(64)))), ((int)(((byte)(64)))));
this.myTablePanel1.SetColumnSpan(this.IPv4TextBox, 2);
//
//
//
this.IPv4TextBox.CustomButton.Image = null;
this.IPv4TextBox.CustomButton.ImeMode = System.Windows.Forms.ImeMode.NoControl;
this.IPv4TextBox.CustomButton.Location = new System.Drawing.Point(312, 1);
this.IPv4TextBox.CustomButton.Name = "";
this.IPv4TextBox.CustomButton.Size = new System.Drawing.Size(25, 25);
this.IPv4TextBox.CustomButton.Style = MetroFramework.MetroColorStyle.Blue;
this.IPv4TextBox.CustomButton.TabIndex = 1;
this.IPv4TextBox.CustomButton.Theme = MetroFramework.MetroThemeStyle.Light;
this.IPv4TextBox.CustomButton.UseSelectable = true;
this.IPv4TextBox.CustomButton.Visible = false;
this.IPv4TextBox.Dock = System.Windows.Forms.DockStyle.Fill;
this.IPv4TextBox.IconRight = true;
this.IPv4TextBox.Lines = new string[0];
this.IPv4TextBox.Location = new System.Drawing.Point(3, 3);
this.IPv4TextBox.MaxLength = 32767;
this.IPv4TextBox.Name = "IPv4TextBox";
this.IPv4TextBox.PasswordChar = '\0';
this.IPv4TextBox.PromptText = "Wii U IP";
this.IPv4TextBox.ScrollBars = System.Windows.Forms.ScrollBars.None;
this.IPv4TextBox.SelectedText = "";
this.IPv4TextBox.SelectionLength = 0;
this.IPv4TextBox.SelectionStart = 0;
this.IPv4TextBox.ShortcutsEnabled = true;
this.IPv4TextBox.Size = new System.Drawing.Size(280, 27);
this.IPv4TextBox.Style = MetroFramework.MetroColorStyle.Blue;
this.IPv4TextBox.TabIndex = 10;
this.IPv4TextBox.Theme = MetroFramework.MetroThemeStyle.Dark;
this.IPv4TextBox.UseSelectable = true;
this.IPv4TextBox.WaterMark = "Wii U IP";
this.IPv4TextBox.WaterMarkColor = System.Drawing.Color.FromArgb(((int)(((byte)(109)))), ((int)(((byte)(109)))), ((int)(((byte)(109)))));
this.IPv4TextBox.WaterMarkFont = new System.Drawing.Font("Segoe UI", 12F, System.Drawing.FontStyle.Italic, System.Drawing.GraphicsUnit.Pixel);
//
// listViewPCKS
//
this.listViewPCKS.Activation = System.Windows.Forms.ItemActivation.TwoClick;
this.myTablePanel1.SetColumnSpan(this.listViewPCKS, 3);
this.listViewPCKS.ContextMenuStrip = this.contextMenuStripCaffiine;
this.listViewPCKS.Dock = System.Windows.Forms.DockStyle.Fill;
this.listViewPCKS.Enabled = false;
this.listViewPCKS.HideSelection = false;
this.listViewPCKS.Location = new System.Drawing.Point(3, 151);
this.listViewPCKS.Name = "listViewPCKS";
this.listViewPCKS.Size = new System.Drawing.Size(424, 396);
this.listViewPCKS.TabIndex = 3;
this.listViewPCKS.UseCompatibleStateImageBehavior = false;
this.listViewPCKS.View = System.Windows.Forms.View.Details;
this.listViewPCKS.MouseDown += new System.Windows.Forms.MouseEventHandler(this.listViewPCKS_MouseDown);
//
// contextMenuStripCaffiine
//
this.contextMenuStripCaffiine.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.replaceToolStripMenuItem,
this.replacePCKToolStripMenuItem});
this.contextMenuStripCaffiine.Name = "contextMenuStripCaffiine";
this.contextMenuStripCaffiine.Size = new System.Drawing.Size(212, 48);
//
// replaceToolStripMenuItem
//
this.replaceToolStripMenuItem.Image = global::PckStudio.Properties.Resources.Replace;
this.replaceToolStripMenuItem.Name = "replaceToolStripMenuItem";
this.replaceToolStripMenuItem.Size = new System.Drawing.Size(211, 22);
this.replaceToolStripMenuItem.Text = "Replace";
this.replaceToolStripMenuItem.TextImageRelation = System.Windows.Forms.TextImageRelation.TextAboveImage;
this.replaceToolStripMenuItem.Click += new System.EventHandler(this.replaceToolStripMenuItem_Click);
//
// replacePCKToolStripMenuItem
//
this.replacePCKToolStripMenuItem.Image = global::PckStudio.Properties.Resources.Replace;
this.replacePCKToolStripMenuItem.Name = "replacePCKToolStripMenuItem";
this.replacePCKToolStripMenuItem.Size = new System.Drawing.Size(211, 22);
this.replacePCKToolStripMenuItem.Text = "Replace with external PCK";
this.replacePCKToolStripMenuItem.Click += new System.EventHandler(this.replacePCKToolStripMenuItem_Click);
//
// radioButtonUSB
//
this.radioButtonUSB.Appearance = System.Windows.Forms.Appearance.Button;
this.radioButtonUSB.BackColor = System.Drawing.Color.Transparent;
this.radioButtonUSB.CheckAlign = System.Drawing.ContentAlignment.MiddleCenter;
this.radioButtonUSB.Dock = System.Windows.Forms.DockStyle.Fill;
this.radioButtonUSB.FlatAppearance.CheckedBackColor = System.Drawing.Color.Teal;
this.radioButtonUSB.FlatAppearance.MouseDownBackColor = System.Drawing.Color.Aqua;
this.radioButtonUSB.FlatAppearance.MouseOverBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(192)))), ((int)(((byte)(192)))));
this.radioButtonUSB.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.radioButtonUSB.Font = new System.Drawing.Font("Segoe UI", 12F);
this.radioButtonUSB.ForeColor = System.Drawing.Color.White;
this.radioButtonUSB.ImeMode = System.Windows.Forms.ImeMode.NoControl;
this.radioButtonUSB.Location = new System.Drawing.Point(289, 69);
this.radioButtonUSB.Name = "radioButtonUSB";
this.radioButtonUSB.Size = new System.Drawing.Size(138, 30);
this.radioButtonUSB.TabIndex = 6;
this.radioButtonUSB.Text = "USB";
this.radioButtonUSB.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
this.radioButtonUSB.UseVisualStyleBackColor = false;
this.radioButtonUSB.Click += new System.EventHandler(this.radioButton_Click);
//
// TextBoxPackImage
//
this.TextBoxPackImage.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(64)))), ((int)(((byte)(64)))), ((int)(((byte)(64)))));
this.myTablePanel1.SetColumnSpan(this.TextBoxPackImage, 2);
//
//
//
this.TextBoxPackImage.CustomButton.Image = null;
this.TextBoxPackImage.CustomButton.ImeMode = System.Windows.Forms.ImeMode.NoControl;
this.TextBoxPackImage.CustomButton.Location = new System.Drawing.Point(312, 1);
this.TextBoxPackImage.CustomButton.Name = "";
this.TextBoxPackImage.CustomButton.Size = new System.Drawing.Size(25, 25);
this.TextBoxPackImage.CustomButton.Style = MetroFramework.MetroColorStyle.Blue;
this.TextBoxPackImage.CustomButton.TabIndex = 1;
this.TextBoxPackImage.CustomButton.Theme = MetroFramework.MetroThemeStyle.Light;
this.TextBoxPackImage.CustomButton.UseSelectable = true;
this.TextBoxPackImage.CustomButton.Visible = false;
this.TextBoxPackImage.Dock = System.Windows.Forms.DockStyle.Fill;
this.TextBoxPackImage.IconRight = true;
this.TextBoxPackImage.Lines = new string[0];
this.TextBoxPackImage.Location = new System.Drawing.Point(3, 36);
this.TextBoxPackImage.MaxLength = 32767;
this.TextBoxPackImage.Name = "TextBoxPackImage";
this.TextBoxPackImage.PasswordChar = '\0';
this.TextBoxPackImage.PromptText = "Pack Image";
this.TextBoxPackImage.ReadOnly = true;
this.TextBoxPackImage.ScrollBars = System.Windows.Forms.ScrollBars.None;
this.TextBoxPackImage.SelectedText = "";
this.TextBoxPackImage.SelectionLength = 0;
this.TextBoxPackImage.SelectionStart = 0;
this.TextBoxPackImage.ShortcutsEnabled = true;
this.TextBoxPackImage.Size = new System.Drawing.Size(280, 27);
this.TextBoxPackImage.Style = MetroFramework.MetroColorStyle.Blue;
this.TextBoxPackImage.TabIndex = 11;
this.TextBoxPackImage.Theme = MetroFramework.MetroThemeStyle.Dark;
this.TextBoxPackImage.UseSelectable = true;
this.TextBoxPackImage.WaterMark = "Pack Image";
this.TextBoxPackImage.WaterMarkColor = System.Drawing.Color.FromArgb(((int)(((byte)(109)))), ((int)(((byte)(109)))), ((int)(((byte)(109)))));
this.TextBoxPackImage.WaterMarkFont = new System.Drawing.Font("Segoe UI", 12F, System.Drawing.FontStyle.Italic, System.Drawing.GraphicsUnit.Pixel);
//
// radioButtonSystem
//
this.radioButtonSystem.Appearance = System.Windows.Forms.Appearance.Button;
this.radioButtonSystem.BackColor = System.Drawing.Color.Transparent;
this.radioButtonSystem.CheckAlign = System.Drawing.ContentAlignment.MiddleCenter;
this.radioButtonSystem.Checked = true;
this.radioButtonSystem.Dock = System.Windows.Forms.DockStyle.Fill;
this.radioButtonSystem.FlatAppearance.CheckedBackColor = System.Drawing.Color.DodgerBlue;
this.radioButtonSystem.FlatAppearance.MouseDownBackColor = System.Drawing.Color.Aqua;
this.radioButtonSystem.FlatAppearance.MouseOverBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(192)))), ((int)(((byte)(192)))));
this.radioButtonSystem.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.radioButtonSystem.Font = new System.Drawing.Font("Segoe UI", 12F);
this.radioButtonSystem.ForeColor = System.Drawing.Color.White;
this.radioButtonSystem.ImeMode = System.Windows.Forms.ImeMode.NoControl;
this.radioButtonSystem.Location = new System.Drawing.Point(146, 69);
this.radioButtonSystem.Name = "radioButtonSystem";
this.radioButtonSystem.Size = new System.Drawing.Size(137, 30);
this.radioButtonSystem.TabIndex = 5;
this.radioButtonSystem.TabStop = true;
this.radioButtonSystem.Text = "System";
this.radioButtonSystem.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
this.radioButtonSystem.UseVisualStyleBackColor = false;
this.radioButtonSystem.Click += new System.EventHandler(this.radioButton_Click);
//
// buttonSelect
//
this.buttonSelect.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom;
this.buttonSelect.Dock = System.Windows.Forms.DockStyle.Fill;
this.buttonSelect.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.buttonSelect.Font = new System.Drawing.Font("Segoe UI", 12F);
this.buttonSelect.ForeColor = System.Drawing.Color.White;
this.buttonSelect.ImeMode = System.Windows.Forms.ImeMode.NoControl;
this.buttonSelect.Location = new System.Drawing.Point(3, 69);
this.buttonSelect.Name = "buttonSelect";
this.buttonSelect.Size = new System.Drawing.Size(137, 30);
this.buttonSelect.TabIndex = 1;
this.buttonSelect.UseVisualStyleBackColor = true;
this.buttonSelect.Click += new System.EventHandler(this.buttonSelect_Click);
//
// PackImageSelection
//
this.PackImageSelection.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
this.PackImageSelection.BackColor = System.Drawing.Color.DarkCyan;
this.PackImageSelection.Dock = System.Windows.Forms.DockStyle.Fill;
this.PackImageSelection.Enabled = false;
this.PackImageSelection.FlatAppearance.BorderSize = 0;
this.PackImageSelection.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.PackImageSelection.Font = new System.Drawing.Font("Segoe UI", 9.75F);
this.PackImageSelection.ForeColor = System.Drawing.Color.White;
this.PackImageSelection.ImeMode = System.Windows.Forms.ImeMode.NoControl;
this.PackImageSelection.Location = new System.Drawing.Point(289, 36);
this.PackImageSelection.Name = "PackImageSelection";
this.PackImageSelection.Size = new System.Drawing.Size(138, 27);
this.PackImageSelection.TabIndex = 12;
this.PackImageSelection.Text = "Browse";
this.PackImageSelection.UseVisualStyleBackColor = false;
this.PackImageSelection.Click += new System.EventHandler(this.PackImageSelection_Click);
//
// regionLayoutPanel
//
this.regionLayoutPanel.ColumnCount = 3;
this.myTablePanel1.SetColumnSpan(this.regionLayoutPanel, 3);
this.regionLayoutPanel.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 33.33333F));
this.regionLayoutPanel.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 33.33333F));
this.regionLayoutPanel.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 33.33333F));
this.regionLayoutPanel.Controls.Add(this.radioButtonEur, 0, 0);
this.regionLayoutPanel.Controls.Add(this.radioButtonUs, 1, 0);
this.regionLayoutPanel.Controls.Add(this.radioButtonJap, 2, 0);
this.regionLayoutPanel.Dock = System.Windows.Forms.DockStyle.Fill;
this.regionLayoutPanel.Location = new System.Drawing.Point(3, 105);
this.regionLayoutPanel.Name = "regionLayoutPanel";
this.regionLayoutPanel.RowCount = 1;
this.regionLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle());
this.regionLayoutPanel.Size = new System.Drawing.Size(424, 40);
this.regionLayoutPanel.TabIndex = 13;
//
// radioButtonEur
//
this.radioButtonEur.Appearance = System.Windows.Forms.Appearance.Button;
this.radioButtonEur.AutoSize = true;
this.radioButtonEur.BackColor = System.Drawing.Color.Transparent;
this.radioButtonEur.CheckAlign = System.Drawing.ContentAlignment.MiddleCenter;
this.radioButtonEur.Checked = true;
this.radioButtonEur.Dock = System.Windows.Forms.DockStyle.Fill;
this.radioButtonEur.FlatAppearance.CheckedBackColor = System.Drawing.Color.DodgerBlue;
this.radioButtonEur.FlatAppearance.MouseDownBackColor = System.Drawing.Color.Aqua;
this.radioButtonEur.FlatAppearance.MouseOverBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(192)))), ((int)(((byte)(192)))));
this.radioButtonEur.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.radioButtonEur.Font = new System.Drawing.Font("Segoe UI", 12F);
this.radioButtonEur.ForeColor = System.Drawing.Color.White;
this.radioButtonEur.ImeMode = System.Windows.Forms.ImeMode.NoControl;
this.radioButtonEur.Location = new System.Drawing.Point(3, 3);
this.radioButtonEur.Name = "radioButtonEur";
this.radioButtonEur.Size = new System.Drawing.Size(135, 34);
this.radioButtonEur.TabIndex = 1;
this.radioButtonEur.TabStop = true;
this.radioButtonEur.Text = "EUR";
this.radioButtonEur.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
this.radioButtonEur.UseVisualStyleBackColor = false;
this.radioButtonEur.Click += new System.EventHandler(this.radioButton_Click);
//
// radioButtonUs
//
this.radioButtonUs.Appearance = System.Windows.Forms.Appearance.Button;
this.radioButtonUs.AutoSize = true;
this.radioButtonUs.BackColor = System.Drawing.Color.Transparent;
this.radioButtonUs.CheckAlign = System.Drawing.ContentAlignment.MiddleCenter;
this.radioButtonUs.Dock = System.Windows.Forms.DockStyle.Fill;
this.radioButtonUs.FlatAppearance.CheckedBackColor = System.Drawing.Color.Teal;
this.radioButtonUs.FlatAppearance.MouseDownBackColor = System.Drawing.Color.Aqua;
this.radioButtonUs.FlatAppearance.MouseOverBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(192)))), ((int)(((byte)(192)))));
this.radioButtonUs.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.radioButtonUs.Font = new System.Drawing.Font("Segoe UI", 12F);
this.radioButtonUs.ForeColor = System.Drawing.Color.White;
this.radioButtonUs.ImeMode = System.Windows.Forms.ImeMode.NoControl;
this.radioButtonUs.Location = new System.Drawing.Point(144, 3);
this.radioButtonUs.Name = "radioButtonUs";
this.radioButtonUs.Size = new System.Drawing.Size(135, 34);
this.radioButtonUs.TabIndex = 0;
this.radioButtonUs.Text = "US";
this.radioButtonUs.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
this.radioButtonUs.UseVisualStyleBackColor = false;
this.radioButtonUs.Click += new System.EventHandler(this.radioButton_Click);
//
// radioButtonJap
//
this.radioButtonJap.Appearance = System.Windows.Forms.Appearance.Button;
this.radioButtonJap.AutoSize = true;
this.radioButtonJap.BackColor = System.Drawing.Color.Transparent;
this.radioButtonJap.CheckAlign = System.Drawing.ContentAlignment.MiddleCenter;
this.radioButtonJap.Dock = System.Windows.Forms.DockStyle.Fill;
this.radioButtonJap.FlatAppearance.CheckedBackColor = System.Drawing.Color.Teal;
this.radioButtonJap.FlatAppearance.MouseDownBackColor = System.Drawing.Color.Aqua;
this.radioButtonJap.FlatAppearance.MouseOverBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(192)))), ((int)(((byte)(192)))));
this.radioButtonJap.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.radioButtonJap.Font = new System.Drawing.Font("Segoe UI", 12F);
this.radioButtonJap.ForeColor = System.Drawing.Color.White;
this.radioButtonJap.ImeMode = System.Windows.Forms.ImeMode.NoControl;
this.radioButtonJap.Location = new System.Drawing.Point(285, 3);
this.radioButtonJap.Name = "radioButtonJap";
this.radioButtonJap.Size = new System.Drawing.Size(136, 34);
this.radioButtonJap.TabIndex = 2;
this.radioButtonJap.Text = "JAP";
this.radioButtonJap.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
this.radioButtonJap.UseVisualStyleBackColor = false;
this.radioButtonJap.Click += new System.EventHandler(this.radioButton_Click);
//
// WiiUPanel
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.BackColor = System.Drawing.SystemColors.ActiveCaptionText;
this.Controls.Add(this.myTablePanel1);
this.Name = "WiiUPanel";
this.Size = new System.Drawing.Size(430, 550);
this.myTablePanel1.ResumeLayout(false);
this.contextMenuStripCaffiine.ResumeLayout(false);
this.regionLayoutPanel.ResumeLayout(false);
this.regionLayoutPanel.PerformLayout();
this.ResumeLayout(false);
}
#endregion
private System.Windows.Forms.TableLayoutPanel myTablePanel1;
private System.Windows.Forms.Button buttonServerToggle;
private System.Windows.Forms.Button buttonSelect;
private System.Windows.Forms.RadioButton radioButtonSystem;
private System.Windows.Forms.RadioButton radioButtonUSB;
private System.Windows.Forms.RadioButton radioButtonEur;
private System.Windows.Forms.RadioButton radioButtonUs;
private System.Windows.Forms.RadioButton radioButtonJap;
private MetroFramework.Controls.MetroTextBox IPv4TextBox;
private System.Windows.Forms.ListView listViewPCKS;
private MetroFramework.Controls.MetroTextBox TextBoxPackImage;
private System.Windows.Forms.Button PackImageSelection;
private System.Windows.Forms.ContextMenuStrip contextMenuStripCaffiine;
private System.Windows.Forms.ToolStripMenuItem replaceToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem replacePCKToolStripMenuItem;
private System.Windows.Forms.TableLayoutPanel regionLayoutPanel;
}
}

View File

@@ -0,0 +1,290 @@
using System;
using System.Collections.Generic;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Net;
using System.Text.RegularExpressions;
using System.Windows.Forms;
using OMI.Formats.Archive;
using OMI.Formats.Pck;
using OMI.Workers.Archive;
using OMI.Workers.Pck;
using PckStudio.Classes.Misc;
namespace PckStudio.Features
{
public partial class WiiUPanel : UserControl
{
string DLCPath = string.Empty;
string mod = string.Empty;
bool serverOn = false;
ConsoleArchive archive = new ConsoleArchive();
PckFile currentPCK = null;
private const string FtpUsername = "PCK_Studio_Client";
// TODO: randomize per 'session'(instance)
private const string FtpSessionPassword = "a3262443";
private ICredentials sessionCredentials = new NetworkCredential(FtpUsername, FtpSessionPassword);
public WiiUPanel()
{
InitializeComponent();
UpdateDLCPath();
buttonServerToggle.Enabled = true;
if (listViewPCKS.Columns.Count == 0)
{
listViewPCKS.Columns.Add(DLCPath, listViewPCKS.Width);
}
}
[Obsolete("Prompt user to use Aroma instead!")]
private void buttonSelect_Click(object sender, EventArgs e)
{
MessageBox.Show("Please use Aroma's ftp Plugin!");
return;
}
private enum ButtonState
{
Start,
Stop,
Wait
}
private void SetButtonState(ButtonState state)
{
switch(state)
{
case ButtonState.Start:
buttonServerToggle.BackColor = Color.FromArgb(68, 178, 13);
serverOn = false;
buttonServerToggle.Text = "Start";
listViewPCKS.Enabled = false;
break;
case ButtonState.Stop:
serverOn = true;
buttonServerToggle.BackColor = Color.Red;
buttonServerToggle.Text = "Stop";
listViewPCKS.Enabled = true;
break;
case ButtonState.Wait:
buttonServerToggle.BackColor = Color.MediumAquamarine;
buttonServerToggle.Text = "Wait..";
break;
default:
break;
}
}
private string GetConsoleDevice()
{
if (radioButtonSystem.Checked)
{
return "storage_mlc";
}
if (radioButtonUSB.Checked)
{
return "storage_usb";
}
throw new Exception("how did you get here ?");
}
private string GetConsoleRegion()
{
if (radioButtonEur.Checked)
{
return "101d7500";
}
if (radioButtonUs.Checked)
{
return "101d9d00";
}
if (radioButtonJap.Checked)
{
return "101dbe00";
}
throw new Exception("how did you get here ?");
}
private string GetGameContentPath()
{
string device = GetConsoleDevice();
string region = GetConsoleRegion();
return $"{device}/usr/title/0005000e/{region}/content";
}
private void UpdateDLCPath()
{
DLCPath = $"{GetGameContentPath()}/WiiU/DLC/";
}
private void buttonServerToggle_Click(object sender, EventArgs e)
{
//Turn off server
if (serverOn)
{
listViewPCKS.Items.Clear();
try
{
SetButtonState(ButtonState.Start);
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
return;
}
if (!Regex.IsMatch(IPv4TextBox.Text, @"^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$"))
{
MessageBox.Show("Please enter a valid Wii U IP!");
return;
}
// Turn on server
try
{
SetButtonState(ButtonState.Wait);
ServicePointManager.Expect100Continue = true;
using (var client = new FTPClient($"ftp://{IPv4TextBox.Text}", sessionCredentials))
{
client.SetTimeoutLimit(TimeSpan.FromSeconds(10));
string[] dirList = client.ListDirectory(DLCPath);
listViewPCKS.Items.AddRange(dirList.Select(s => new ListViewItem(s)).ToArray());
foreach (ListViewItem pck in listViewPCKS.Items)
{
string[] res = client.ListDirectory($"{DLCPath}/{pck.Text}");
if (res.Length != 1)
{
pck.Remove();
}
}
}
SetButtonState(ButtonState.Stop);
}
catch (Exception ex)
{
SetButtonState(ButtonState.Start);
MessageBox.Show(ex.ToString());
}
}
private void radioButton_Click(object sender, EventArgs e)
{
UpdateDLCPath();
listViewPCKS.Columns[0].Text = DLCPath;
}
private void listViewPCKS_MouseDown(object sender, MouseEventArgs e)
{
ListViewHitTestInfo hitTestInfo = listViewPCKS.HitTest(e.Location);
if (e.Button == MouseButtons.Right && hitTestInfo.Location != ListViewHitTestLocations.None)
{
contextMenuStripCaffiine.Show(Cursor.Position);
}
}
private void replaceToolStripMenuItem_Click(object sender, EventArgs e)
{
if (listViewPCKS.SelectedItems.Count != 0)
{
SetButtonState(ButtonState.Wait);
ReplacePck(mod);
MessageBox.Show("PCK Replaced!");
}
SetButtonState(ButtonState.Stop);
UpdateDLCPath();
}
private void replacePCKToolStripMenuItem_Click(object sender, EventArgs e)
{
if (listViewPCKS.SelectedItems.Count != 0)
{
SetButtonState(ButtonState.Wait);
OpenFileDialog openPCK = new OpenFileDialog();
openPCK.Filter = "PCK File|*.pck";
if (openPCK.ShowDialog() == DialogResult.OK)
{
ReplacePck(openPCK.FileName);
MessageBox.Show("PCK Replaced!");
}
}
SetButtonState(ButtonState.Stop);
UpdateDLCPath();
}
private void ReplacePck(string filename)
{
using (FTPClient client = new FTPClient($"ftp://{IPv4TextBox.Text}", sessionCredentials))
client.UploadFile(filename, DLCPath + "/" + listViewPCKS.SelectedItems[0].Text + "/" + listViewPCKS.SelectedItems[0].Tag.ToString());
if (!string.IsNullOrWhiteSpace(TextBoxPackImage.Text))
{
string PackID = GetPackId(filename);
GetARCFromConsole();
AddOrReplacePackImage(PackID);
SendARCToConsole();
}
}
private string GetPackId(string filepath)
{
var reader = new PckFileReader();
currentPCK = reader.FromFile(filepath);
if (currentPCK is null) return string.Empty;
return currentPCK.TryGetFile("0", PckFile.FileData.FileType.InfoFile, out var file)
? file.Properties.GetProperty("PACKID").Item2
: string.Empty;
}
private void GetARCFromConsole()
{
using var ms = new MemoryStream();
using (FTPClient client = new FTPClient($"ftp://{IPv4TextBox.Text}", sessionCredentials))
{
client.DownloadFile(GetGameContentPath() + "/Common/Media/MediaWiiU.arc", ms);
ms.Position = 0;
var reader = new ARCFileReader();
archive = reader.FromStream(ms);
}
}
private void AddOrReplacePackImage(string packId)
{
string arcPath = $"Graphics\\PackGraphics\\{packId}.png";
byte[] data = File.ReadAllBytes(TextBoxPackImage.Text);
if (archive.ContainsKey(arcPath)) archive[arcPath] = data;
else archive.Add(arcPath, data);
}
private void SendARCToConsole()
{
using (FTPClient client = new FTPClient($"ftp://{IPv4TextBox.Text}", sessionCredentials))
{
using (var ms = new MemoryStream())
{
var writer = new ARCFileWriter(archive);
writer.WriteToStream(ms);
ms.Position = 0;
client.UploadFile(ms, GetGameContentPath() + "/Common/Media/MediaWiiU.arc");
}
archive.Clear();
currentPCK?.Files.Clear();
currentPCK = null;
}
GC.Collect();
}
private void PackImageSelection_Click(object sender, EventArgs e)
{
OpenFileDialog ofd = new OpenFileDialog();
ofd.Filter = "Pack Image|*.png";
if (ofd.ShowDialog() == DialogResult.OK)
TextBoxPackImage.Text = ofd.FileName;
}
}
}

View File

@@ -1,320 +0,0 @@
namespace PckStudio.Forms.Utilities
{
partial class ConsoleInstaller
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
MetroFramework.Controls.MetroLabel metroLabel1;
MetroFramework.Controls.MetroLabel metroLabel2;
this.selectedConsoleComboBox = new MetroFramework.Controls.MetroComboBox();
this.myTablePanel1 = new System.Windows.Forms.TableLayoutPanel();
this.EurDig = new System.Windows.Forms.RadioButton();
this.USDig = new System.Windows.Forms.RadioButton();
this.textBoxHost = new MetroFramework.Controls.MetroTextBox();
this.EurDisc = new System.Windows.Forms.RadioButton();
this.USDisc = new System.Windows.Forms.RadioButton();
this.listViewPCKS = new System.Windows.Forms.ListView();
this.JPDig = new System.Windows.Forms.RadioButton();
this.buttonServerToggle = new System.Windows.Forms.Button();
metroLabel1 = new MetroFramework.Controls.MetroLabel();
metroLabel2 = new MetroFramework.Controls.MetroLabel();
this.myTablePanel1.SuspendLayout();
this.SuspendLayout();
//
// metroLabel1
//
metroLabel1.AutoSize = true;
metroLabel1.Location = new System.Drawing.Point(264, 73);
metroLabel1.Name = "metroLabel1";
metroLabel1.Size = new System.Drawing.Size(90, 19);
metroLabel1.Style = MetroFramework.MetroColorStyle.Black;
metroLabel1.TabIndex = 1;
metroLabel1.Text = "Console Type:";
metroLabel1.Theme = MetroFramework.MetroThemeStyle.Dark;
//
// metroLabel2
//
metroLabel2.AutoSize = true;
metroLabel2.Dock = System.Windows.Forms.DockStyle.Fill;
metroLabel2.Location = new System.Drawing.Point(129, 0);
metroLabel2.Name = "metroLabel2";
metroLabel2.Size = new System.Drawing.Size(120, 35);
metroLabel2.Style = MetroFramework.MetroColorStyle.Black;
metroLabel2.TabIndex = 13;
metroLabel2.Text = "Console Type:";
metroLabel2.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
metroLabel2.Theme = MetroFramework.MetroThemeStyle.Dark;
//
// selectedConsoleComboBox
//
this.selectedConsoleComboBox.BackColor = System.Drawing.SystemColors.Window;
this.selectedConsoleComboBox.FormattingEnabled = true;
this.selectedConsoleComboBox.ItemHeight = 23;
this.selectedConsoleComboBox.Items.AddRange(new object[] {
"Wii U",
"Play Station 3",
"PS Vita"});
this.selectedConsoleComboBox.Location = new System.Drawing.Point(255, 3);
this.selectedConsoleComboBox.Name = "selectedConsoleComboBox";
this.selectedConsoleComboBox.PromptText = "Select console";
this.selectedConsoleComboBox.Size = new System.Drawing.Size(121, 29);
this.selectedConsoleComboBox.Style = MetroFramework.MetroColorStyle.Black;
this.selectedConsoleComboBox.TabIndex = 0;
this.selectedConsoleComboBox.Theme = MetroFramework.MetroThemeStyle.Dark;
this.selectedConsoleComboBox.UseSelectable = true;
//
// myTablePanel1
//
this.myTablePanel1.BackColor = System.Drawing.Color.Transparent;
this.myTablePanel1.ColumnCount = 3;
this.myTablePanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 33.33332F));
this.myTablePanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 33.33334F));
this.myTablePanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 33.33334F));
this.myTablePanel1.Controls.Add(this.EurDig, 1, 2);
this.myTablePanel1.Controls.Add(this.USDig, 2, 2);
this.myTablePanel1.Controls.Add(this.textBoxHost, 0, 1);
this.myTablePanel1.Controls.Add(this.EurDisc, 1, 3);
this.myTablePanel1.Controls.Add(this.USDisc, 2, 3);
this.myTablePanel1.Controls.Add(this.listViewPCKS, 0, 4);
this.myTablePanel1.Controls.Add(this.JPDig, 0, 2);
this.myTablePanel1.Controls.Add(this.buttonServerToggle, 2, 1);
this.myTablePanel1.Controls.Add(this.selectedConsoleComboBox, 2, 0);
this.myTablePanel1.Controls.Add(metroLabel2, 1, 0);
this.myTablePanel1.Dock = System.Windows.Forms.DockStyle.Fill;
this.myTablePanel1.Location = new System.Drawing.Point(20, 60);
this.myTablePanel1.Margin = new System.Windows.Forms.Padding(0);
this.myTablePanel1.Name = "myTablePanel1";
this.myTablePanel1.RowCount = 5;
this.myTablePanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 35F));
this.myTablePanel1.RowStyles.Add(new System.Windows.Forms.RowStyle());
this.myTablePanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 36F));
this.myTablePanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 36F));
this.myTablePanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F));
this.myTablePanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20F));
this.myTablePanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20F));
this.myTablePanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20F));
this.myTablePanel1.Size = new System.Drawing.Size(379, 561);
this.myTablePanel1.TabIndex = 3;
//
// EurDig
//
this.EurDig.Appearance = System.Windows.Forms.Appearance.Button;
this.EurDig.AutoSize = true;
this.EurDig.BackColor = System.Drawing.Color.Transparent;
this.EurDig.CheckAlign = System.Drawing.ContentAlignment.BottomRight;
this.EurDig.FlatAppearance.CheckedBackColor = System.Drawing.Color.Teal;
this.EurDig.FlatAppearance.MouseDownBackColor = System.Drawing.Color.Aqua;
this.EurDig.FlatAppearance.MouseOverBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(192)))), ((int)(((byte)(192)))));
this.EurDig.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.EurDig.Font = new System.Drawing.Font("Segoe UI", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.EurDig.ForeColor = System.Drawing.Color.White;
this.EurDig.Location = new System.Drawing.Point(129, 71);
this.EurDig.Name = "EurDig";
this.EurDig.Size = new System.Drawing.Size(100, 30);
this.EurDig.TabIndex = 11;
this.EurDig.Text = "EUR Digital";
this.EurDig.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
this.EurDig.UseVisualStyleBackColor = false;
//
// USDig
//
this.USDig.Appearance = System.Windows.Forms.Appearance.Button;
this.USDig.AutoSize = true;
this.USDig.BackColor = System.Drawing.Color.Transparent;
this.USDig.CheckAlign = System.Drawing.ContentAlignment.BottomRight;
this.USDig.FlatAppearance.CheckedBackColor = System.Drawing.Color.Teal;
this.USDig.FlatAppearance.MouseDownBackColor = System.Drawing.Color.Aqua;
this.USDig.FlatAppearance.MouseOverBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(192)))), ((int)(((byte)(192)))));
this.USDig.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.USDig.Font = new System.Drawing.Font("Segoe UI", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.USDig.ForeColor = System.Drawing.Color.White;
this.USDig.Location = new System.Drawing.Point(255, 71);
this.USDig.Name = "USDig";
this.USDig.Size = new System.Drawing.Size(91, 30);
this.USDig.TabIndex = 12;
this.USDig.Text = "US Digital";
this.USDig.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
this.USDig.UseVisualStyleBackColor = false;
//
// textBoxHost
//
this.textBoxHost.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(64)))), ((int)(((byte)(64)))), ((int)(((byte)(64)))));
this.myTablePanel1.SetColumnSpan(this.textBoxHost, 2);
//
//
//
this.textBoxHost.CustomButton.Image = null;
this.textBoxHost.CustomButton.Location = new System.Drawing.Point(274, 2);
this.textBoxHost.CustomButton.Name = "";
this.textBoxHost.CustomButton.Size = new System.Drawing.Size(15, 15);
this.textBoxHost.CustomButton.Style = MetroFramework.MetroColorStyle.Blue;
this.textBoxHost.CustomButton.TabIndex = 1;
this.textBoxHost.CustomButton.Theme = MetroFramework.MetroThemeStyle.Light;
this.textBoxHost.CustomButton.UseSelectable = true;
this.textBoxHost.CustomButton.Visible = false;
this.textBoxHost.IconRight = true;
this.textBoxHost.Lines = new string[0];
this.textBoxHost.Location = new System.Drawing.Point(3, 38);
this.textBoxHost.MaxLength = 32767;
this.textBoxHost.Name = "textBoxHost";
this.textBoxHost.PasswordChar = '\0';
this.textBoxHost.PromptText = "IP Address";
this.textBoxHost.ScrollBars = System.Windows.Forms.ScrollBars.None;
this.textBoxHost.SelectedText = "";
this.textBoxHost.SelectionLength = 0;
this.textBoxHost.SelectionStart = 0;
this.textBoxHost.ShortcutsEnabled = true;
this.textBoxHost.Size = new System.Drawing.Size(246, 20);
this.textBoxHost.Style = MetroFramework.MetroColorStyle.Blue;
this.textBoxHost.TabIndex = 10;
this.textBoxHost.Theme = MetroFramework.MetroThemeStyle.Dark;
this.textBoxHost.UseSelectable = true;
this.textBoxHost.WaterMark = "IP Address";
this.textBoxHost.WaterMarkColor = System.Drawing.Color.FromArgb(((int)(((byte)(109)))), ((int)(((byte)(109)))), ((int)(((byte)(109)))));
this.textBoxHost.WaterMarkFont = new System.Drawing.Font("Segoe UI", 12F, System.Drawing.FontStyle.Italic, System.Drawing.GraphicsUnit.Pixel);
//
// EurDisc
//
this.EurDisc.Appearance = System.Windows.Forms.Appearance.Button;
this.EurDisc.AutoSize = true;
this.EurDisc.BackColor = System.Drawing.Color.Transparent;
this.EurDisc.CheckAlign = System.Drawing.ContentAlignment.BottomRight;
this.EurDisc.FlatAppearance.CheckedBackColor = System.Drawing.Color.Teal;
this.EurDisc.FlatAppearance.MouseDownBackColor = System.Drawing.Color.Aqua;
this.EurDisc.FlatAppearance.MouseOverBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(192)))), ((int)(((byte)(192)))));
this.EurDisc.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.EurDisc.Font = new System.Drawing.Font("Segoe UI", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.EurDisc.ForeColor = System.Drawing.Color.White;
this.EurDisc.Location = new System.Drawing.Point(129, 107);
this.EurDisc.Name = "EurDisc";
this.EurDisc.Size = new System.Drawing.Size(84, 30);
this.EurDisc.TabIndex = 0;
this.EurDisc.Text = "EUR Disc";
this.EurDisc.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
this.EurDisc.UseVisualStyleBackColor = false;
//
// USDisc
//
this.USDisc.Appearance = System.Windows.Forms.Appearance.Button;
this.USDisc.AutoSize = true;
this.USDisc.BackColor = System.Drawing.Color.Transparent;
this.USDisc.CheckAlign = System.Drawing.ContentAlignment.BottomRight;
this.USDisc.FlatAppearance.CheckedBackColor = System.Drawing.Color.Teal;
this.USDisc.FlatAppearance.MouseDownBackColor = System.Drawing.Color.Aqua;
this.USDisc.FlatAppearance.MouseOverBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(192)))), ((int)(((byte)(192)))));
this.USDisc.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.USDisc.Font = new System.Drawing.Font("Segoe UI", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.USDisc.ForeColor = System.Drawing.Color.White;
this.USDisc.Location = new System.Drawing.Point(255, 107);
this.USDisc.Name = "USDisc";
this.USDisc.Size = new System.Drawing.Size(75, 30);
this.USDisc.TabIndex = 2;
this.USDisc.Text = "US Disc";
this.USDisc.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
this.USDisc.UseVisualStyleBackColor = false;
//
// listViewPCKS
//
this.listViewPCKS.Activation = System.Windows.Forms.ItemActivation.TwoClick;
this.myTablePanel1.SetColumnSpan(this.listViewPCKS, 3);
this.listViewPCKS.Dock = System.Windows.Forms.DockStyle.Fill;
this.listViewPCKS.Enabled = false;
this.listViewPCKS.HideSelection = false;
this.listViewPCKS.Location = new System.Drawing.Point(3, 143);
this.listViewPCKS.Name = "listViewPCKS";
this.listViewPCKS.Size = new System.Drawing.Size(373, 415);
this.listViewPCKS.TabIndex = 3;
this.listViewPCKS.UseCompatibleStateImageBehavior = false;
this.listViewPCKS.View = System.Windows.Forms.View.Details;
//
// JPDig
//
this.JPDig.Appearance = System.Windows.Forms.Appearance.Button;
this.JPDig.AutoSize = true;
this.JPDig.BackColor = System.Drawing.Color.Transparent;
this.JPDig.CheckAlign = System.Drawing.ContentAlignment.BottomRight;
this.JPDig.FlatAppearance.CheckedBackColor = System.Drawing.Color.Teal;
this.JPDig.FlatAppearance.MouseDownBackColor = System.Drawing.Color.Aqua;
this.JPDig.FlatAppearance.MouseOverBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(192)))), ((int)(((byte)(192)))));
this.JPDig.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.JPDig.Font = new System.Drawing.Font("Segoe UI", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.JPDig.ForeColor = System.Drawing.Color.White;
this.JPDig.Location = new System.Drawing.Point(3, 71);
this.JPDig.Name = "JPDig";
this.JPDig.Size = new System.Drawing.Size(47, 30);
this.JPDig.TabIndex = 1;
this.JPDig.Text = "JAP";
this.JPDig.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
this.JPDig.UseVisualStyleBackColor = false;
//
// buttonServerToggle
//
this.buttonServerToggle.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
this.buttonServerToggle.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(68)))), ((int)(((byte)(178)))), ((int)(((byte)(13)))));
this.buttonServerToggle.FlatAppearance.BorderSize = 0;
this.buttonServerToggle.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.buttonServerToggle.Font = new System.Drawing.Font("Segoe UI", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.buttonServerToggle.ForeColor = System.Drawing.Color.White;
this.buttonServerToggle.Location = new System.Drawing.Point(255, 38);
this.buttonServerToggle.Name = "buttonServerToggle";
this.buttonServerToggle.Size = new System.Drawing.Size(121, 27);
this.buttonServerToggle.TabIndex = 9;
this.buttonServerToggle.Text = "Start";
this.buttonServerToggle.UseVisualStyleBackColor = false;
//
// ConsoleInstaller
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(419, 641);
this.Controls.Add(this.myTablePanel1);
this.Controls.Add(metroLabel1);
this.Name = "ConsoleInstaller";
this.Style = MetroFramework.MetroColorStyle.Silver;
this.Text = "Console Installer";
this.Theme = MetroFramework.MetroThemeStyle.Dark;
this.myTablePanel1.ResumeLayout(false);
this.myTablePanel1.PerformLayout();
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
private MetroFramework.Controls.MetroComboBox selectedConsoleComboBox;
private System.Windows.Forms.TableLayoutPanel myTablePanel1;
private System.Windows.Forms.RadioButton EurDig;
private System.Windows.Forms.RadioButton USDig;
private System.Windows.Forms.Button buttonServerToggle;
private MetroFramework.Controls.MetroTextBox textBoxHost;
private System.Windows.Forms.RadioButton EurDisc;
private System.Windows.Forms.RadioButton USDisc;
private System.Windows.Forms.ListView listViewPCKS;
private System.Windows.Forms.RadioButton JPDig;
}
}

View File

@@ -1,20 +0,0 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace PckStudio.Forms.Utilities
{
public partial class ConsoleInstaller : MetroFramework.Forms.MetroForm
{
public ConsoleInstaller()
{
InitializeComponent();
}
}
}

View File

@@ -1,356 +0,0 @@
namespace PckStudio.Forms
{
partial class installPS3
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.components = new System.ComponentModel.Container();
this.metroTabPageMain = new MetroFramework.Controls.MetroTabPage();
this.myTablePanel1 = new System.Windows.Forms.TableLayoutPanel();
this.EurDig = new System.Windows.Forms.RadioButton();
this.USDig = new System.Windows.Forms.RadioButton();
this.buttonServerToggle = new System.Windows.Forms.Button();
this.textBoxHost = new MetroFramework.Controls.MetroTextBox();
this.EurDisc = new System.Windows.Forms.RadioButton();
this.USDisc = new System.Windows.Forms.RadioButton();
this.listViewPCKS = new System.Windows.Forms.ListView();
this.JPDig = new System.Windows.Forms.RadioButton();
this.metroTabControlMain = new MetroFramework.Controls.MetroTabControl();
this.contextMenuStripCaffiine = new System.Windows.Forms.ContextMenuStrip(this.components);
this.replaceToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.replacePCKToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.metroTabPageMain.SuspendLayout();
this.myTablePanel1.SuspendLayout();
this.metroTabControlMain.SuspendLayout();
this.contextMenuStripCaffiine.SuspendLayout();
this.SuspendLayout();
//
// metroTabPageMain
//
this.metroTabPageMain.Controls.Add(this.myTablePanel1);
this.metroTabPageMain.HorizontalScrollbarBarColor = true;
this.metroTabPageMain.HorizontalScrollbarHighlightOnWheel = false;
this.metroTabPageMain.HorizontalScrollbarSize = 10;
this.metroTabPageMain.Location = new System.Drawing.Point(4, 38);
this.metroTabPageMain.Name = "metroTabPageMain";
this.metroTabPageMain.Size = new System.Drawing.Size(427, 537);
this.metroTabPageMain.Style = MetroFramework.MetroColorStyle.Blue;
this.metroTabPageMain.TabIndex = 0;
this.metroTabPageMain.Text = "Installer";
this.metroTabPageMain.Theme = MetroFramework.MetroThemeStyle.Dark;
this.metroTabPageMain.VerticalScrollbarBarColor = true;
this.metroTabPageMain.VerticalScrollbarHighlightOnWheel = false;
this.metroTabPageMain.VerticalScrollbarSize = 10;
//
// myTablePanel1
//
this.myTablePanel1.BackColor = System.Drawing.Color.Transparent;
this.myTablePanel1.ColumnCount = 3;
this.myTablePanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 33.33333F));
this.myTablePanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 33.33334F));
this.myTablePanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 33.33334F));
this.myTablePanel1.Controls.Add(this.EurDig, 1, 1);
this.myTablePanel1.Controls.Add(this.USDig, 2, 1);
this.myTablePanel1.Controls.Add(this.buttonServerToggle, 2, 0);
this.myTablePanel1.Controls.Add(this.textBoxHost, 0, 0);
this.myTablePanel1.Controls.Add(this.EurDisc, 1, 2);
this.myTablePanel1.Controls.Add(this.USDisc, 2, 2);
this.myTablePanel1.Controls.Add(this.listViewPCKS, 0, 3);
this.myTablePanel1.Controls.Add(this.JPDig, 0, 1);
this.myTablePanel1.Dock = System.Windows.Forms.DockStyle.Fill;
this.myTablePanel1.Location = new System.Drawing.Point(0, 0);
this.myTablePanel1.Margin = new System.Windows.Forms.Padding(0);
this.myTablePanel1.Name = "myTablePanel1";
this.myTablePanel1.RowCount = 7;
this.myTablePanel1.RowStyles.Add(new System.Windows.Forms.RowStyle());
this.myTablePanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 36F));
this.myTablePanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 36F));
this.myTablePanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F));
this.myTablePanel1.RowStyles.Add(new System.Windows.Forms.RowStyle());
this.myTablePanel1.RowStyles.Add(new System.Windows.Forms.RowStyle());
this.myTablePanel1.RowStyles.Add(new System.Windows.Forms.RowStyle());
this.myTablePanel1.Size = new System.Drawing.Size(427, 537);
this.myTablePanel1.TabIndex = 2;
//
// EurDig
//
this.EurDig.Appearance = System.Windows.Forms.Appearance.Button;
this.EurDig.AutoSize = true;
this.EurDig.BackColor = System.Drawing.Color.Transparent;
this.EurDig.CheckAlign = System.Drawing.ContentAlignment.BottomRight;
this.EurDig.FlatAppearance.CheckedBackColor = System.Drawing.Color.Teal;
this.EurDig.FlatAppearance.MouseDownBackColor = System.Drawing.Color.Aqua;
this.EurDig.FlatAppearance.MouseOverBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(192)))), ((int)(((byte)(192)))));
this.EurDig.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.EurDig.Font = new System.Drawing.Font("Segoe UI", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.EurDig.ForeColor = System.Drawing.Color.White;
this.EurDig.Location = new System.Drawing.Point(145, 36);
this.EurDig.Name = "EurDig";
this.EurDig.Size = new System.Drawing.Size(100, 30);
this.EurDig.TabIndex = 11;
this.EurDig.Text = "EUR Digital";
this.EurDig.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
this.EurDig.UseVisualStyleBackColor = false;
this.EurDig.CheckedChanged += new System.EventHandler(this.EurDig_CheckedChanged);
//
// USDig
//
this.USDig.Appearance = System.Windows.Forms.Appearance.Button;
this.USDig.AutoSize = true;
this.USDig.BackColor = System.Drawing.Color.Transparent;
this.USDig.CheckAlign = System.Drawing.ContentAlignment.BottomRight;
this.USDig.FlatAppearance.CheckedBackColor = System.Drawing.Color.Teal;
this.USDig.FlatAppearance.MouseDownBackColor = System.Drawing.Color.Aqua;
this.USDig.FlatAppearance.MouseOverBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(192)))), ((int)(((byte)(192)))));
this.USDig.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.USDig.Font = new System.Drawing.Font("Segoe UI", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.USDig.ForeColor = System.Drawing.Color.White;
this.USDig.Location = new System.Drawing.Point(287, 36);
this.USDig.Name = "USDig";
this.USDig.Size = new System.Drawing.Size(91, 30);
this.USDig.TabIndex = 12;
this.USDig.Text = "US Digital";
this.USDig.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
this.USDig.UseVisualStyleBackColor = false;
this.USDig.CheckedChanged += new System.EventHandler(this.USDig_CheckedChanged);
//
// buttonServerToggle
//
this.buttonServerToggle.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
this.buttonServerToggle.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(68)))), ((int)(((byte)(178)))), ((int)(((byte)(13)))));
this.buttonServerToggle.FlatAppearance.BorderSize = 0;
this.buttonServerToggle.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.buttonServerToggle.Font = new System.Drawing.Font("Segoe UI", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.buttonServerToggle.ForeColor = System.Drawing.Color.White;
this.buttonServerToggle.Location = new System.Drawing.Point(287, 3);
this.buttonServerToggle.Name = "buttonServerToggle";
this.buttonServerToggle.Size = new System.Drawing.Size(137, 27);
this.buttonServerToggle.TabIndex = 9;
this.buttonServerToggle.Text = "Start";
this.buttonServerToggle.UseVisualStyleBackColor = false;
this.buttonServerToggle.Click += new System.EventHandler(this.buttonServerToggle_Click);
//
// textBoxHost
//
this.textBoxHost.Anchor = System.Windows.Forms.AnchorStyles.Left;
this.textBoxHost.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(64)))), ((int)(((byte)(64)))), ((int)(((byte)(64)))));
this.myTablePanel1.SetColumnSpan(this.textBoxHost, 2);
//
//
//
this.textBoxHost.CustomButton.Image = null;
this.textBoxHost.CustomButton.Location = new System.Drawing.Point(260, 2);
this.textBoxHost.CustomButton.Name = "";
this.textBoxHost.CustomButton.Size = new System.Drawing.Size(15, 15);
this.textBoxHost.CustomButton.Style = MetroFramework.MetroColorStyle.Blue;
this.textBoxHost.CustomButton.TabIndex = 1;
this.textBoxHost.CustomButton.Theme = MetroFramework.MetroThemeStyle.Light;
this.textBoxHost.CustomButton.UseSelectable = true;
this.textBoxHost.CustomButton.Visible = false;
this.textBoxHost.IconRight = true;
this.textBoxHost.Lines = new string[0];
this.textBoxHost.Location = new System.Drawing.Point(3, 6);
this.textBoxHost.MaxLength = 32767;
this.textBoxHost.Name = "textBoxHost";
this.textBoxHost.PasswordChar = '\0';
this.textBoxHost.PromptText = "PS3 IP";
this.textBoxHost.ScrollBars = System.Windows.Forms.ScrollBars.None;
this.textBoxHost.SelectedText = "";
this.textBoxHost.SelectionLength = 0;
this.textBoxHost.SelectionStart = 0;
this.textBoxHost.ShortcutsEnabled = true;
this.textBoxHost.Size = new System.Drawing.Size(278, 20);
this.textBoxHost.Style = MetroFramework.MetroColorStyle.Blue;
this.textBoxHost.TabIndex = 10;
this.textBoxHost.Theme = MetroFramework.MetroThemeStyle.Dark;
this.textBoxHost.UseSelectable = true;
this.textBoxHost.WaterMark = "PS3 IP";
this.textBoxHost.WaterMarkColor = System.Drawing.Color.FromArgb(((int)(((byte)(109)))), ((int)(((byte)(109)))), ((int)(((byte)(109)))));
this.textBoxHost.WaterMarkFont = new System.Drawing.Font("Segoe UI", 12F, System.Drawing.FontStyle.Italic, System.Drawing.GraphicsUnit.Pixel);
//
// EurDisc
//
this.EurDisc.Appearance = System.Windows.Forms.Appearance.Button;
this.EurDisc.AutoSize = true;
this.EurDisc.BackColor = System.Drawing.Color.Transparent;
this.EurDisc.CheckAlign = System.Drawing.ContentAlignment.BottomRight;
this.EurDisc.FlatAppearance.CheckedBackColor = System.Drawing.Color.Teal;
this.EurDisc.FlatAppearance.MouseDownBackColor = System.Drawing.Color.Aqua;
this.EurDisc.FlatAppearance.MouseOverBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(192)))), ((int)(((byte)(192)))));
this.EurDisc.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.EurDisc.Font = new System.Drawing.Font("Segoe UI", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.EurDisc.ForeColor = System.Drawing.Color.White;
this.EurDisc.Location = new System.Drawing.Point(145, 72);
this.EurDisc.Name = "EurDisc";
this.EurDisc.Size = new System.Drawing.Size(84, 30);
this.EurDisc.TabIndex = 0;
this.EurDisc.Text = "EUR Disc";
this.EurDisc.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
this.EurDisc.UseVisualStyleBackColor = false;
this.EurDisc.CheckedChanged += new System.EventHandler(this.EurDisc_CheckedChanged);
//
// USDisc
//
this.USDisc.Appearance = System.Windows.Forms.Appearance.Button;
this.USDisc.AutoSize = true;
this.USDisc.BackColor = System.Drawing.Color.Transparent;
this.USDisc.CheckAlign = System.Drawing.ContentAlignment.BottomRight;
this.USDisc.FlatAppearance.CheckedBackColor = System.Drawing.Color.Teal;
this.USDisc.FlatAppearance.MouseDownBackColor = System.Drawing.Color.Aqua;
this.USDisc.FlatAppearance.MouseOverBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(192)))), ((int)(((byte)(192)))));
this.USDisc.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.USDisc.Font = new System.Drawing.Font("Segoe UI", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.USDisc.ForeColor = System.Drawing.Color.White;
this.USDisc.Location = new System.Drawing.Point(287, 72);
this.USDisc.Name = "USDisc";
this.USDisc.Size = new System.Drawing.Size(75, 30);
this.USDisc.TabIndex = 2;
this.USDisc.Text = "US Disc";
this.USDisc.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
this.USDisc.UseVisualStyleBackColor = false;
this.USDisc.CheckedChanged += new System.EventHandler(this.USDisc_CheckedChanged);
//
// listViewPCKS
//
this.listViewPCKS.Activation = System.Windows.Forms.ItemActivation.TwoClick;
this.myTablePanel1.SetColumnSpan(this.listViewPCKS, 3);
this.listViewPCKS.Dock = System.Windows.Forms.DockStyle.Fill;
this.listViewPCKS.Enabled = false;
this.listViewPCKS.HideSelection = false;
this.listViewPCKS.Location = new System.Drawing.Point(3, 108);
this.listViewPCKS.Name = "listViewPCKS";
this.listViewPCKS.Size = new System.Drawing.Size(421, 426);
this.listViewPCKS.TabIndex = 3;
this.listViewPCKS.UseCompatibleStateImageBehavior = false;
this.listViewPCKS.View = System.Windows.Forms.View.Details;
this.listViewPCKS.SelectedIndexChanged += new System.EventHandler(this.listViewPCKS_SelectedIndexChanged);
this.listViewPCKS.Click += new System.EventHandler(this.listViewPCKS_Click);
this.listViewPCKS.DoubleClick += new System.EventHandler(this.listViewPCKS_DoubleClick);
this.listViewPCKS.MouseDown += new System.Windows.Forms.MouseEventHandler(this.listViewPCKS_MouseDown);
//
// JPDig
//
this.JPDig.Appearance = System.Windows.Forms.Appearance.Button;
this.JPDig.AutoSize = true;
this.JPDig.BackColor = System.Drawing.Color.Transparent;
this.JPDig.CheckAlign = System.Drawing.ContentAlignment.BottomRight;
this.JPDig.FlatAppearance.CheckedBackColor = System.Drawing.Color.Teal;
this.JPDig.FlatAppearance.MouseDownBackColor = System.Drawing.Color.Aqua;
this.JPDig.FlatAppearance.MouseOverBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(192)))), ((int)(((byte)(192)))));
this.JPDig.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.JPDig.Font = new System.Drawing.Font("Segoe UI", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.JPDig.ForeColor = System.Drawing.Color.White;
this.JPDig.Location = new System.Drawing.Point(3, 36);
this.JPDig.Name = "JPDig";
this.JPDig.Size = new System.Drawing.Size(47, 30);
this.JPDig.TabIndex = 1;
this.JPDig.Text = "JAP";
this.JPDig.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
this.JPDig.UseVisualStyleBackColor = false;
this.JPDig.CheckedChanged += new System.EventHandler(this.JPDig_CheckedChanged);
//
// metroTabControlMain
//
this.metroTabControlMain.Controls.Add(this.metroTabPageMain);
this.metroTabControlMain.Dock = System.Windows.Forms.DockStyle.Fill;
this.metroTabControlMain.Location = new System.Drawing.Point(20, 60);
this.metroTabControlMain.Name = "metroTabControlMain";
this.metroTabControlMain.SelectedIndex = 0;
this.metroTabControlMain.Size = new System.Drawing.Size(435, 579);
this.metroTabControlMain.Style = MetroFramework.MetroColorStyle.White;
this.metroTabControlMain.TabIndex = 0;
this.metroTabControlMain.Theme = MetroFramework.MetroThemeStyle.Dark;
this.metroTabControlMain.UseSelectable = true;
//
// contextMenuStripCaffiine
//
this.contextMenuStripCaffiine.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.replaceToolStripMenuItem,
this.replacePCKToolStripMenuItem});
this.contextMenuStripCaffiine.Name = "contextMenuStripCaffiine";
this.contextMenuStripCaffiine.Size = new System.Drawing.Size(212, 48);
this.contextMenuStripCaffiine.Opening += new System.ComponentModel.CancelEventHandler(this.contextMenuStripCaffiine_Opening);
//
// replaceToolStripMenuItem
//
this.replaceToolStripMenuItem.Image = global::PckStudio.Properties.Resources.Replace;
this.replaceToolStripMenuItem.Name = "replaceToolStripMenuItem";
this.replaceToolStripMenuItem.Size = new System.Drawing.Size(211, 22);
this.replaceToolStripMenuItem.Text = "Replace";
this.replaceToolStripMenuItem.TextImageRelation = System.Windows.Forms.TextImageRelation.TextAboveImage;
this.replaceToolStripMenuItem.Click += new System.EventHandler(this.replaceToolStripMenuItem_Click);
//
// replacePCKToolStripMenuItem
//
this.replacePCKToolStripMenuItem.Image = global::PckStudio.Properties.Resources.Replace;
this.replacePCKToolStripMenuItem.Name = "replacePCKToolStripMenuItem";
this.replacePCKToolStripMenuItem.Size = new System.Drawing.Size(211, 22);
this.replacePCKToolStripMenuItem.Text = "Replace with external PCK";
this.replacePCKToolStripMenuItem.Click += new System.EventHandler(this.replacePCKToolStripMenuItem_Click);
//
// installPS3
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.BorderStyle = MetroFramework.Forms.MetroFormBorderStyle.FixedSingle;
this.ClientSize = new System.Drawing.Size(475, 659);
this.Controls.Add(this.metroTabControlMain);
this.MaximizeBox = false;
this.Name = "installPS3";
this.Resizable = false;
this.ShadowType = MetroFramework.Forms.MetroFormShadowType.SystemShadow;
this.Style = MetroFramework.MetroColorStyle.White;
this.Text = "Install to Playstation®3";
this.Theme = MetroFramework.MetroThemeStyle.Dark;
this.Load += new System.EventHandler(this.installPS3_Load);
this.metroTabPageMain.ResumeLayout(false);
this.myTablePanel1.ResumeLayout(false);
this.myTablePanel1.PerformLayout();
this.metroTabControlMain.ResumeLayout(false);
this.contextMenuStripCaffiine.ResumeLayout(false);
this.ResumeLayout(false);
}
#endregion
private MetroFramework.Controls.MetroTabPage metroTabPageMain;
private System.Windows.Forms.TableLayoutPanel myTablePanel1;
private System.Windows.Forms.RadioButton USDisc;
private System.Windows.Forms.RadioButton JPDig;
private System.Windows.Forms.RadioButton EurDisc;
private System.Windows.Forms.ListView listViewPCKS;
private MetroFramework.Controls.MetroTabControl metroTabControlMain;
private System.Windows.Forms.ContextMenuStrip contextMenuStripCaffiine;
private System.Windows.Forms.ToolStripMenuItem replacePCKToolStripMenuItem;
private System.Windows.Forms.Button buttonServerToggle;
private MetroFramework.Controls.MetroTextBox textBoxHost;
private System.Windows.Forms.ToolStripMenuItem replaceToolStripMenuItem;
private System.Windows.Forms.RadioButton USDig;
private System.Windows.Forms.RadioButton EurDig;
}
}

View File

@@ -1,472 +0,0 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.IO;
using System.Net;
using System.Windows.Forms;
using MetroFramework.Forms;
using PckStudio.Classes.Misc;
namespace PckStudio.Forms
{
public partial class installPS3 : MetroForm
{
string loca = "";
string dlcPath = "";
string mod = "";
bool serverOn = false;
string currentpath = "";
public installPS3(string mod)
{
InitializeComponent();
this.mod = mod;
if (mod == null)
{
replaceToolStripMenuItem.Visible = false;
}
else
{
replaceToolStripMenuItem.Text = "Replace with " + Path.GetFileName(mod);
}
}
//items class for use in bedrock skin conversion
public class pckDir
{
public string folder { get; set; }
public string file { get; set; }
}
List<pckDir> pcks = new List<pckDir>();
private void updateDatabase()
{
pcks.Clear();
pcks.Add(new pckDir() { folder = "Battle & Beasts", file = "BattleAndBeasts.pck" });
pcks.Add(new pckDir() { folder = "Battle & Beasts 2", file = "BattleAndBeasts2.pck" });
pcks.Add(new pckDir() { folder = "Biome Settlers Pack 1", file = "SkinsBiomeSettlers1.pck" });
pcks.Add(new pckDir() { folder = "Biome Settlers Pack 2", file = "SkinsBiomeSettlers2.pck" });
//pcks.Add(new pckDir() { folder = "Campfire Tales Skin Pack", file = "" });
pcks.Add(new pckDir() { folder = "Doctor Who Skins Volume I", file = "SkinPackDrWho.pck" });
pcks.Add(new pckDir() { folder = "Doctor Who Skins Volume II", file = "SkinPackDrWho.pck" });
pcks.Add(new pckDir() { folder = "Festive Skin Pack", file = "SkinsFestive.pck" });
pcks.Add(new pckDir() { folder = "FINAL FANTASY XV Skin Pack", file = "FinalFantasyXV.pck" });
pcks.Add(new pckDir() { folder = "Magic The Gathering Skin Pack", file = "magicthegathering.pck" });
pcks.Add(new pckDir() { folder = "Mini Game Heroes Skin Pack", file = "Minigame2.pck" });
pcks.Add(new pckDir() { folder = "Mini Game Masters Skin Pack", file = "Minigame.pck" });
pcks.Add(new pckDir() { folder = "Moana Character Pack", file = "Moana.pck" });
pcks.Add(new pckDir() { folder = "Power Rangers Skin Pack", file = "PowerRangers.pck" });
pcks.Add(new pckDir() { folder = "Redstone Specialists Skin Pack", file = "SkinsRedstoneSpecialists.pck" });
pcks.Add(new pckDir() { folder = "Skin Pack 1", file = "Skins1.pck" });
pcks.Add(new pckDir() { folder = "Star Wars Classic Skin Pack", file = "StarWarsClassicPack.pck" });
pcks.Add(new pckDir() { folder = "Star Wars Prequel Skin Pack", file = "StarWarsPrequel.pck" });
pcks.Add(new pckDir() { folder = "Star Wars Rebels Skin Pack", file = "StarWarsRebelsPack.pck" });
pcks.Add(new pckDir() { folder = "Star Wars Sequel Skin Pack", file = "StarWarsSequel.pck" });
pcks.Add(new pckDir() { folder = "Story Mode Skin Pack", file = "PackStoryMode.pck" });
pcks.Add(new pckDir() { folder = "Stranger Things Skin Pack", file = "StrangerThings.pck" });
pcks.Add(new pckDir() { folder = "Strangers Biome Settlers 3 Skin Pack", file = "BiomeSettlers3_Strangers.pck" });
pcks.Add(new pckDir() { folder = "The Incredibles Skin Pack", file = "Incredibles.pck" });
pcks.Add(new pckDir() { folder = "The Simpsons Skin Pack", file = "SkinPackSimpsons.pck" });
pcks.Add(new pckDir() { folder = "Villains Skin Pack", file = "Villains.pck" });
}
public void buttonMode(string mode)
{
if (mode == "start")
{
buttonServerToggle.BackColor = Color.FromArgb(68, 178, 13);
serverOn = false;
buttonServerToggle.Text = "Start";
listViewPCKS.Enabled = false;
}
else if (mode == "stop")
{
serverOn = true;
buttonServerToggle.BackColor = Color.Red;
buttonServerToggle.Text = "Stop";
listViewPCKS.Enabled = true;
}
else if (mode == "loading")
{
buttonServerToggle.BackColor = Color.MediumAquamarine;
buttonServerToggle.Text = "Wait..";
}
}
private void loadPcks()
{
string region = "";
if (JPDig.Checked)
{
region = "NPJB00549/";
}
else if (EurDisc.Checked)
{
region = "BLES01976/";
}
else if (EurDig.Checked)
{
region = "NPEB01899/";
}
else if (USDisc.Checked)
{
region = "BLUS31426/";
}
else if (USDig.Checked)
{
region = "NPUB31419/";
}
string device = "/dev_hdd0/";
if (region != "" && device != "")
{
dlcPath = device + "game/" + region;
buttonServerToggle.Enabled = true;
if (listViewPCKS.Columns.Count == 0)
{
listViewPCKS.Columns.Add(dlcPath, 395);
}
}
}
private void buttonServerToggle_Click(object sender, EventArgs e)
{
string mode = "";
if (serverOn == false)
{
//Makes sure user typed in their ip
if (textBoxHost.Text == "")
{
MessageBox.Show("Please enter a valid Playstation®3 IP!");
return;
}
//Turns Server On
try
{
buttonMode(mode = "loading");
ServicePointManager.Expect100Continue = true;
//ServicePointManager.ServerCertificateValidationCallback = new System.Net.Security.RemoteCertificateValidationCallback(OnValidateCertificate);
FtpWebRequest request = (FtpWebRequest)WebRequest.Create("ftp://" + textBoxHost.Text + "/" + dlcPath);
currentpath = textBoxHost.Text + "/" + dlcPath;
request.Method = WebRequestMethods.Ftp.ListDirectory;
request.Credentials = new NetworkCredential("", "");
request.EnableSsl = false;
request.Timeout = 1200000;
ServicePoint sp = request.ServicePoint;
Console.WriteLine("ServicePoint connections = {0}.", sp.ConnectionLimit);
sp.ConnectionLimit = 1;
using (var response = (FtpWebResponse)request.GetResponse())
{
using (var stream = response.GetResponseStream())
{
using (var reader = new StreamReader(stream, true))
{
string line = reader.ReadLine();
while (line != null)
{
listViewPCKS.Items.Add(line);
Console.WriteLine(line);
line = reader.ReadLine();
}
}
}
}
foreach (ListViewItem pck in listViewPCKS.Items)
{
int i = 0;
FtpWebRequest request2 = (FtpWebRequest)WebRequest.Create("ftp://" + textBoxHost.Text + "/" + dlcPath + "/");
request2.Method = WebRequestMethods.Ftp.ListDirectory;
request2.Credentials = new NetworkCredential("", "");
request2.EnableSsl = false;
request2.Timeout = 1200000;
ServicePoint sp2 = request2.ServicePoint;
Console.WriteLine("NOBLEDEZ WAS HERE", sp2.ConnectionLimit);
sp2.ConnectionLimit = 1;
using (var response = (FtpWebResponse)request2.GetResponse())
{
using (var stream = response.GetResponseStream())
{
using (var reader = new StreamReader(stream, true))
{
string line = reader.ReadLine();
while (line != null)
{
i += 1;
pck.Tag = line;
line = reader.ReadLine();
}
}
}
}
if (i != 1)
{
pck.Remove();
}
else
{
}
if(pck.Text != ".")
listViewPCKS.Items.Add(pck);
}
buttonMode(mode = "stop");
}
catch (Exception disc)
{
buttonMode(mode = "start");
MessageBox.Show(disc.ToString());
}
}
else if (serverOn == true)
{
//Turns Server Off
listViewPCKS.Items.Clear();
try
{
buttonMode(mode = "start");
}
catch (Exception disc)
{
MessageBox.Show(disc.ToString());
}
}
}
private void radioButtonEur_Click(object sender, EventArgs e)
{
loadPcks();
}
private void radioButtonUs_Click(object sender, EventArgs e)
{
loadPcks();
}
private void radioButtonJap_Click(object sender, EventArgs e)
{
loadPcks();
}
private void listViewPCKS_Click(object sender, EventArgs e)
{
}
private void listViewPCKS_MouseDown(object sender, MouseEventArgs e)
{
ListViewHitTestInfo HI = listViewPCKS.HitTest(e.Location);
if (e.Button == MouseButtons.Right)
{
if (HI.Location == ListViewHitTestLocations.None)
{
}
else
{
contextMenuStripCaffiine.Show(Cursor.Position);
}
}
}
private void replacePCKToolStripMenuItem_Click(object sender, EventArgs e)
{
if (listViewPCKS.SelectedItems.Count != 0)
{
buttonMode("loading");
OpenFileDialog openPCK = new OpenFileDialog();
if (openPCK.ShowDialog() == DialogResult.OK)
{
using (FTPClient client = new FTPClient("ftp://" + textBoxHost.Text, "", ""))
client.UploadFile(openPCK.FileName, dlcPath + "/" + listViewPCKS.SelectedItems[0].Text + "/" + listViewPCKS.SelectedItems[0].Tag.ToString());
MessageBox.Show("PCK Replaced!");
}
}
buttonMode("stop");
loadPcks();
}
private void listViewPCKS_SelectedIndexChanged(object sender, EventArgs e)
{
}
private void buttonInstall_Click(object sender, EventArgs e)
{
if (MessageBox.Show("Replace with " + Path.GetFileNameWithoutExtension(mod) + "?", "Install Mod", MessageBoxButtons.YesNo) == DialogResult.Yes)
{
if (!Directory.Exists(dlcPath + pcks[listViewPCKS.SelectedItems[0].Index].folder + "/"))
{
Directory.CreateDirectory(dlcPath + pcks[listViewPCKS.SelectedItems[0].Index].folder + "/");
}
File.Copy(mod, dlcPath + pcks[listViewPCKS.SelectedItems[0].Index].folder + "/" + pcks[listViewPCKS.SelectedItems[0].Index].file);
}
loadPcks();
}
private void deletePCKModToolStripMenuItem_Click(object sender, EventArgs e)
{
Directory.Delete(dlcPath + pcks[listViewPCKS.SelectedItems[0].Index].folder + "/", true);
loadPcks();
}
private void buttonServerToggle_Clic(object sender, EventArgs e)
{
}
private void contextMenuStripCaffiine_Opening(object sender, CancelEventArgs e)
{
}
private void replaceToolStripMenuItem_Click(object sender, EventArgs e)
{
if (listViewPCKS.SelectedItems.Count != 0)
{
buttonMode("loading");
using (FTPClient client = new FTPClient("ftp://" + textBoxHost.Text, "", ""))
client.UploadFile(mod, dlcPath + "/" + listViewPCKS.SelectedItems[0].Text + "/" + listViewPCKS.SelectedItems[0].Tag.ToString());
MessageBox.Show("PCK Replaced!");
}
buttonMode("stop");
loadPcks();
}
private void EurDisc_CheckedChanged(object sender, EventArgs e)
{
loadPcks();
}
private void EurDig_CheckedChanged(object sender, EventArgs e)
{
loadPcks();
}
private void USDig_CheckedChanged(object sender, EventArgs e)
{
loadPcks();
}
private void USDisc_CheckedChanged(object sender, EventArgs e)
{
loadPcks();
}
private void JPDig_CheckedChanged(object sender, EventArgs e)
{
loadPcks();
}
private void installPS3_Load(object sender, EventArgs e)
{
loadPcks();
}
private void listViewPCKS_DoubleClick(object sender, EventArgs e)
{
try
{
string folname = listViewPCKS.SelectedItems[0].Text;
if (folname.Contains(".") && folname != "..")
return;
Console.WriteLine("ftp://" + currentpath + listViewPCKS.SelectedItems[0].Text);
listViewPCKS.Items.Clear();
FtpWebRequest request = (FtpWebRequest)WebRequest.Create("ftp://" + currentpath.Replace("//", "/") + folname);
if (folname == "..")
{
string[] tmp = currentpath.Split(new[] { "/" }, StringSplitOptions.None);
Console.WriteLine(tmp[(tmp).Length - 2]);
string foldr = tmp[(tmp).Length - 2];
request = (FtpWebRequest)WebRequest.Create("ftp://" + currentpath.Replace(foldr, "").Replace("//", "/"));
}
request.Method = WebRequestMethods.Ftp.ListDirectory;
request.Credentials = new NetworkCredential("", "");
request.EnableSsl = false;
request.Timeout = 1200000;
currentpath = currentpath + "/" + folname + "/";
ServicePoint sp = request.ServicePoint;
Console.WriteLine("ServicePoint connections = {0}.", sp.ConnectionLimit);
sp.ConnectionLimit = 1;
using (var response = (FtpWebResponse)request.GetResponse())
{
using (var stream = response.GetResponseStream())
{
using (var reader = new StreamReader(stream, true))
{
string line = reader.ReadLine();
while (line != null)
{
listViewPCKS.Items.Add(line);
Console.WriteLine(line);
line = reader.ReadLine();
}
}
}
}
foreach (ListViewItem pck in listViewPCKS.Items)
{
int i = 0;
FtpWebRequest request2 = (FtpWebRequest)WebRequest.Create("ftp://" + currentpath);
request2.Method = WebRequestMethods.Ftp.ListDirectory;
request2.Credentials = new NetworkCredential("", "");
request2.EnableSsl = false;
request2.Timeout = 1200000;
ServicePoint sp2 = request2.ServicePoint;
Console.WriteLine("NOBLEDEZ WAS HERE", sp2.ConnectionLimit);
sp2.ConnectionLimit = 1;
using (var response = (FtpWebResponse)request2.GetResponse())
{
using (var stream = response.GetResponseStream())
{
using (var reader = new StreamReader(stream, true))
{
string line = reader.ReadLine();
while (line != null)
{
i += 1;
pck.Tag = line;
line = reader.ReadLine();
}
}
}
}
if (i != 1)
{
pck.Remove();
}
else
{
}
listViewPCKS.Items.Add(pck);
}
}
catch
{
}
}
}
}

View File

@@ -1,358 +0,0 @@

namespace PckStudio.Forms
{
partial class installVita
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.components = new System.ComponentModel.Container();
this.metroTabPageMain = new MetroFramework.Controls.MetroTabPage();
this.myTablePanel1 = new System.Windows.Forms.TableLayoutPanel();
this.EurDig = new System.Windows.Forms.RadioButton();
this.USDig = new System.Windows.Forms.RadioButton();
this.buttonServerToggle = new System.Windows.Forms.Button();
this.textBoxHost = new MetroFramework.Controls.MetroTextBox();
this.EurDisc = new System.Windows.Forms.RadioButton();
this.USDisc = new System.Windows.Forms.RadioButton();
this.listViewPCKS = new System.Windows.Forms.ListView();
this.JPDig = new System.Windows.Forms.RadioButton();
this.metroTabControlMain = new MetroFramework.Controls.MetroTabControl();
this.contextMenuStripCaffiine = new System.Windows.Forms.ContextMenuStrip(this.components);
this.replaceToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.replacePCKToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.metroTabPageMain.SuspendLayout();
this.myTablePanel1.SuspendLayout();
this.metroTabControlMain.SuspendLayout();
this.contextMenuStripCaffiine.SuspendLayout();
this.SuspendLayout();
//
// metroTabPageMain
//
this.metroTabPageMain.Controls.Add(this.myTablePanel1);
this.metroTabPageMain.HorizontalScrollbarBarColor = true;
this.metroTabPageMain.HorizontalScrollbarHighlightOnWheel = false;
this.metroTabPageMain.HorizontalScrollbarSize = 10;
this.metroTabPageMain.Location = new System.Drawing.Point(4, 38);
this.metroTabPageMain.Name = "metroTabPageMain";
this.metroTabPageMain.Size = new System.Drawing.Size(427, 537);
this.metroTabPageMain.Style = MetroFramework.MetroColorStyle.Blue;
this.metroTabPageMain.TabIndex = 0;
this.metroTabPageMain.Text = "Installer";
this.metroTabPageMain.Theme = MetroFramework.MetroThemeStyle.Dark;
this.metroTabPageMain.VerticalScrollbarBarColor = true;
this.metroTabPageMain.VerticalScrollbarHighlightOnWheel = false;
this.metroTabPageMain.VerticalScrollbarSize = 10;
//
// myTablePanel1
//
this.myTablePanel1.BackColor = System.Drawing.Color.Transparent;
this.myTablePanel1.ColumnCount = 3;
this.myTablePanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 33.33333F));
this.myTablePanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 33.33334F));
this.myTablePanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 33.33334F));
this.myTablePanel1.Controls.Add(this.EurDig, 1, 1);
this.myTablePanel1.Controls.Add(this.USDig, 2, 1);
this.myTablePanel1.Controls.Add(this.buttonServerToggle, 2, 0);
this.myTablePanel1.Controls.Add(this.textBoxHost, 0, 0);
this.myTablePanel1.Controls.Add(this.EurDisc, 1, 2);
this.myTablePanel1.Controls.Add(this.USDisc, 2, 2);
this.myTablePanel1.Controls.Add(this.listViewPCKS, 0, 3);
this.myTablePanel1.Controls.Add(this.JPDig, 0, 1);
this.myTablePanel1.Dock = System.Windows.Forms.DockStyle.Fill;
this.myTablePanel1.Location = new System.Drawing.Point(0, 0);
this.myTablePanel1.Margin = new System.Windows.Forms.Padding(0);
this.myTablePanel1.Name = "myTablePanel1";
this.myTablePanel1.RowCount = 7;
this.myTablePanel1.RowStyles.Add(new System.Windows.Forms.RowStyle());
this.myTablePanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 36F));
this.myTablePanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 36F));
this.myTablePanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F));
this.myTablePanel1.RowStyles.Add(new System.Windows.Forms.RowStyle());
this.myTablePanel1.RowStyles.Add(new System.Windows.Forms.RowStyle());
this.myTablePanel1.RowStyles.Add(new System.Windows.Forms.RowStyle());
this.myTablePanel1.Size = new System.Drawing.Size(427, 537);
this.myTablePanel1.TabIndex = 2;
//
// EurDig
//
this.EurDig.Appearance = System.Windows.Forms.Appearance.Button;
this.EurDig.AutoSize = true;
this.EurDig.BackColor = System.Drawing.Color.Transparent;
this.EurDig.CheckAlign = System.Drawing.ContentAlignment.BottomRight;
this.EurDig.FlatAppearance.CheckedBackColor = System.Drawing.Color.Teal;
this.EurDig.FlatAppearance.MouseDownBackColor = System.Drawing.Color.Aqua;
this.EurDig.FlatAppearance.MouseOverBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(192)))), ((int)(((byte)(192)))));
this.EurDig.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.EurDig.Font = new System.Drawing.Font("Segoe UI", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.EurDig.ForeColor = System.Drawing.Color.White;
this.EurDig.Location = new System.Drawing.Point(145, 36);
this.EurDig.Name = "EurDig";
this.EurDig.Size = new System.Drawing.Size(100, 30);
this.EurDig.TabIndex = 11;
this.EurDig.Text = "EUR Digital";
this.EurDig.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
this.EurDig.UseVisualStyleBackColor = false;
this.EurDig.CheckedChanged += new System.EventHandler(this.EurDig_CheckedChanged);
//
// USDig
//
this.USDig.Appearance = System.Windows.Forms.Appearance.Button;
this.USDig.AutoSize = true;
this.USDig.BackColor = System.Drawing.Color.Transparent;
this.USDig.CheckAlign = System.Drawing.ContentAlignment.BottomRight;
this.USDig.FlatAppearance.CheckedBackColor = System.Drawing.Color.Teal;
this.USDig.FlatAppearance.MouseDownBackColor = System.Drawing.Color.Aqua;
this.USDig.FlatAppearance.MouseOverBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(192)))), ((int)(((byte)(192)))));
this.USDig.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.USDig.Font = new System.Drawing.Font("Segoe UI", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.USDig.ForeColor = System.Drawing.Color.White;
this.USDig.Location = new System.Drawing.Point(287, 36);
this.USDig.Name = "USDig";
this.USDig.Size = new System.Drawing.Size(91, 30);
this.USDig.TabIndex = 12;
this.USDig.Text = "US Digital";
this.USDig.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
this.USDig.UseVisualStyleBackColor = false;
this.USDig.CheckedChanged += new System.EventHandler(this.USDig_CheckedChanged);
//
// buttonServerToggle
//
this.buttonServerToggle.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
this.buttonServerToggle.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(68)))), ((int)(((byte)(178)))), ((int)(((byte)(13)))));
this.buttonServerToggle.FlatAppearance.BorderSize = 0;
this.buttonServerToggle.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.buttonServerToggle.Font = new System.Drawing.Font("Segoe UI", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.buttonServerToggle.ForeColor = System.Drawing.Color.White;
this.buttonServerToggle.Location = new System.Drawing.Point(287, 3);
this.buttonServerToggle.Name = "buttonServerToggle";
this.buttonServerToggle.Size = new System.Drawing.Size(137, 27);
this.buttonServerToggle.TabIndex = 9;
this.buttonServerToggle.Text = "Start";
this.buttonServerToggle.UseVisualStyleBackColor = false;
this.buttonServerToggle.Click += new System.EventHandler(this.buttonServerToggle_Click);
//
// textBoxHost
//
this.textBoxHost.Anchor = System.Windows.Forms.AnchorStyles.Left;
this.textBoxHost.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(64)))), ((int)(((byte)(64)))), ((int)(((byte)(64)))));
this.myTablePanel1.SetColumnSpan(this.textBoxHost, 2);
//
//
//
this.textBoxHost.CustomButton.Image = null;
this.textBoxHost.CustomButton.Location = new System.Drawing.Point(260, 2);
this.textBoxHost.CustomButton.Name = "";
this.textBoxHost.CustomButton.Size = new System.Drawing.Size(15, 15);
this.textBoxHost.CustomButton.Style = MetroFramework.MetroColorStyle.Blue;
this.textBoxHost.CustomButton.TabIndex = 1;
this.textBoxHost.CustomButton.Theme = MetroFramework.MetroThemeStyle.Light;
this.textBoxHost.CustomButton.UseSelectable = true;
this.textBoxHost.CustomButton.Visible = false;
this.textBoxHost.IconRight = true;
this.textBoxHost.Lines = new string[0];
this.textBoxHost.Location = new System.Drawing.Point(3, 6);
this.textBoxHost.MaxLength = 32767;
this.textBoxHost.Name = "textBoxHost";
this.textBoxHost.PasswordChar = '\0';
this.textBoxHost.PromptText = "PS Vita IP";
this.textBoxHost.ScrollBars = System.Windows.Forms.ScrollBars.None;
this.textBoxHost.SelectedText = "";
this.textBoxHost.SelectionLength = 0;
this.textBoxHost.SelectionStart = 0;
this.textBoxHost.ShortcutsEnabled = true;
this.textBoxHost.Size = new System.Drawing.Size(278, 20);
this.textBoxHost.Style = MetroFramework.MetroColorStyle.Blue;
this.textBoxHost.TabIndex = 10;
this.textBoxHost.Theme = MetroFramework.MetroThemeStyle.Dark;
this.textBoxHost.UseSelectable = true;
this.textBoxHost.WaterMark = "PS Vita IP";
this.textBoxHost.WaterMarkColor = System.Drawing.Color.FromArgb(((int)(((byte)(109)))), ((int)(((byte)(109)))), ((int)(((byte)(109)))));
this.textBoxHost.WaterMarkFont = new System.Drawing.Font("Segoe UI", 12F, System.Drawing.FontStyle.Italic, System.Drawing.GraphicsUnit.Pixel);
//
// EurDisc
//
this.EurDisc.Appearance = System.Windows.Forms.Appearance.Button;
this.EurDisc.AutoSize = true;
this.EurDisc.BackColor = System.Drawing.Color.Transparent;
this.EurDisc.CheckAlign = System.Drawing.ContentAlignment.BottomRight;
this.EurDisc.FlatAppearance.CheckedBackColor = System.Drawing.Color.Teal;
this.EurDisc.FlatAppearance.MouseDownBackColor = System.Drawing.Color.Aqua;
this.EurDisc.FlatAppearance.MouseOverBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(192)))), ((int)(((byte)(192)))));
this.EurDisc.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.EurDisc.Font = new System.Drawing.Font("Segoe UI", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.EurDisc.ForeColor = System.Drawing.Color.White;
this.EurDisc.Location = new System.Drawing.Point(145, 72);
this.EurDisc.Name = "EurDisc";
this.EurDisc.Size = new System.Drawing.Size(84, 30);
this.EurDisc.TabIndex = 0;
this.EurDisc.Text = "EUR Disc";
this.EurDisc.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
this.EurDisc.UseVisualStyleBackColor = false;
this.EurDisc.CheckedChanged += new System.EventHandler(this.EurDisc_CheckedChanged);
//
// USDisc
//
this.USDisc.Appearance = System.Windows.Forms.Appearance.Button;
this.USDisc.AutoSize = true;
this.USDisc.BackColor = System.Drawing.Color.Transparent;
this.USDisc.CheckAlign = System.Drawing.ContentAlignment.BottomRight;
this.USDisc.FlatAppearance.CheckedBackColor = System.Drawing.Color.Teal;
this.USDisc.FlatAppearance.MouseDownBackColor = System.Drawing.Color.Aqua;
this.USDisc.FlatAppearance.MouseOverBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(192)))), ((int)(((byte)(192)))));
this.USDisc.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.USDisc.Font = new System.Drawing.Font("Segoe UI", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.USDisc.ForeColor = System.Drawing.Color.White;
this.USDisc.Location = new System.Drawing.Point(287, 72);
this.USDisc.Name = "USDisc";
this.USDisc.Size = new System.Drawing.Size(75, 30);
this.USDisc.TabIndex = 2;
this.USDisc.Text = "US Disc";
this.USDisc.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
this.USDisc.UseVisualStyleBackColor = false;
this.USDisc.CheckedChanged += new System.EventHandler(this.USDisc_CheckedChanged);
//
// listViewPCKS
//
this.listViewPCKS.Activation = System.Windows.Forms.ItemActivation.TwoClick;
this.myTablePanel1.SetColumnSpan(this.listViewPCKS, 3);
this.listViewPCKS.Dock = System.Windows.Forms.DockStyle.Fill;
this.listViewPCKS.Enabled = false;
this.listViewPCKS.HideSelection = false;
this.listViewPCKS.Location = new System.Drawing.Point(3, 108);
this.listViewPCKS.Name = "listViewPCKS";
this.listViewPCKS.Size = new System.Drawing.Size(421, 426);
this.listViewPCKS.TabIndex = 3;
this.listViewPCKS.UseCompatibleStateImageBehavior = false;
this.listViewPCKS.View = System.Windows.Forms.View.Details;
this.listViewPCKS.SelectedIndexChanged += new System.EventHandler(this.listViewPCKS_SelectedIndexChanged);
this.listViewPCKS.Click += new System.EventHandler(this.listViewPCKS_Click);
this.listViewPCKS.DoubleClick += new System.EventHandler(this.listViewPCKS_DoubleClick);
this.listViewPCKS.MouseDown += new System.Windows.Forms.MouseEventHandler(this.listViewPCKS_MouseDown);
//
// JPDig
//
this.JPDig.Appearance = System.Windows.Forms.Appearance.Button;
this.JPDig.AutoSize = true;
this.JPDig.BackColor = System.Drawing.Color.Transparent;
this.JPDig.CheckAlign = System.Drawing.ContentAlignment.BottomRight;
this.JPDig.FlatAppearance.CheckedBackColor = System.Drawing.Color.Teal;
this.JPDig.FlatAppearance.MouseDownBackColor = System.Drawing.Color.Aqua;
this.JPDig.FlatAppearance.MouseOverBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(192)))), ((int)(((byte)(192)))));
this.JPDig.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.JPDig.Font = new System.Drawing.Font("Segoe UI", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.JPDig.ForeColor = System.Drawing.Color.White;
this.JPDig.Location = new System.Drawing.Point(3, 36);
this.JPDig.Name = "JPDig";
this.JPDig.Size = new System.Drawing.Size(47, 30);
this.JPDig.TabIndex = 1;
this.JPDig.Text = "JAP";
this.JPDig.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
this.JPDig.UseVisualStyleBackColor = false;
this.JPDig.CheckedChanged += new System.EventHandler(this.JPDig_CheckedChanged);
//
// metroTabControlMain
//
this.metroTabControlMain.Controls.Add(this.metroTabPageMain);
this.metroTabControlMain.Dock = System.Windows.Forms.DockStyle.Fill;
this.metroTabControlMain.Location = new System.Drawing.Point(20, 60);
this.metroTabControlMain.Name = "metroTabControlMain";
this.metroTabControlMain.SelectedIndex = 0;
this.metroTabControlMain.Size = new System.Drawing.Size(435, 579);
this.metroTabControlMain.Style = MetroFramework.MetroColorStyle.White;
this.metroTabControlMain.TabIndex = 0;
this.metroTabControlMain.Theme = MetroFramework.MetroThemeStyle.Dark;
this.metroTabControlMain.UseSelectable = true;
//
// contextMenuStripCaffiine
//
this.contextMenuStripCaffiine.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.replaceToolStripMenuItem,
this.replacePCKToolStripMenuItem});
this.contextMenuStripCaffiine.Name = "contextMenuStripCaffiine";
this.contextMenuStripCaffiine.Size = new System.Drawing.Size(212, 48);
this.contextMenuStripCaffiine.Opening += new System.ComponentModel.CancelEventHandler(this.contextMenuStripCaffiine_Opening);
//
// replaceToolStripMenuItem
//
this.replaceToolStripMenuItem.Image = global::PckStudio.Properties.Resources.Replace;
this.replaceToolStripMenuItem.Name = "replaceToolStripMenuItem";
this.replaceToolStripMenuItem.Size = new System.Drawing.Size(211, 22);
this.replaceToolStripMenuItem.Text = "Replace";
this.replaceToolStripMenuItem.TextImageRelation = System.Windows.Forms.TextImageRelation.TextAboveImage;
this.replaceToolStripMenuItem.Click += new System.EventHandler(this.replaceToolStripMenuItem_Click);
//
// replacePCKToolStripMenuItem
//
this.replacePCKToolStripMenuItem.Image = global::PckStudio.Properties.Resources.Replace;
this.replacePCKToolStripMenuItem.Name = "replacePCKToolStripMenuItem";
this.replacePCKToolStripMenuItem.Size = new System.Drawing.Size(211, 22);
this.replacePCKToolStripMenuItem.Text = "Replace with external PCK";
this.replacePCKToolStripMenuItem.Click += new System.EventHandler(this.replacePCKToolStripMenuItem_Click);
//
// installVita
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.BorderStyle = MetroFramework.Forms.MetroFormBorderStyle.FixedSingle;
this.ClientSize = new System.Drawing.Size(475, 659);
this.Controls.Add(this.metroTabControlMain);
this.MaximizeBox = false;
this.Name = "installVita";
this.Resizable = false;
this.ShadowType = MetroFramework.Forms.MetroFormShadowType.SystemShadow;
this.Style = MetroFramework.MetroColorStyle.White;
this.Text = "Install to Playstation®Vita";
this.Theme = MetroFramework.MetroThemeStyle.Dark;
this.Load += new System.EventHandler(this.installVita_Load);
this.metroTabPageMain.ResumeLayout(false);
this.myTablePanel1.ResumeLayout(false);
this.myTablePanel1.PerformLayout();
this.metroTabControlMain.ResumeLayout(false);
this.contextMenuStripCaffiine.ResumeLayout(false);
this.ResumeLayout(false);
}
#endregion
private MetroFramework.Controls.MetroTabPage metroTabPageMain;
private System.Windows.Forms.TableLayoutPanel myTablePanel1;
private System.Windows.Forms.RadioButton USDisc;
private System.Windows.Forms.RadioButton JPDig;
private System.Windows.Forms.RadioButton EurDisc;
private System.Windows.Forms.ListView listViewPCKS;
private MetroFramework.Controls.MetroTabControl metroTabControlMain;
private System.Windows.Forms.ContextMenuStrip contextMenuStripCaffiine;
private System.Windows.Forms.ToolStripMenuItem replacePCKToolStripMenuItem;
private System.Windows.Forms.Button buttonServerToggle;
private MetroFramework.Controls.MetroTextBox textBoxHost;
private System.Windows.Forms.ToolStripMenuItem replaceToolStripMenuItem;
private System.Windows.Forms.RadioButton USDig;
private System.Windows.Forms.RadioButton EurDig;
}
}

View File

@@ -1,472 +0,0 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.IO;
using System.Net;
using System.Windows.Forms;
using MetroFramework.Forms;
using PckStudio.Classes.Misc;
namespace PckStudio.Forms
{
public partial class installVita : MetroForm
{
public installVita(string mod)
{
InitializeComponent();
this.mod = mod;
if (mod == null)
{
replaceToolStripMenuItem.Visible = false;
}
else
{
replaceToolStripMenuItem.Text = "Replace with " + Path.GetFileName(mod);
}
}
string loca = "";
string dlcPath = "";
string mod = "";
bool serverOn = false;
string currentpath = "";
//items class for use in bedrock skin conversion
public class pckDir
{
public string folder { get; set; }
public string file { get; set; }
}
List<pckDir> pcks = new List<pckDir>();
private void updateDatabase()
{
pcks.Clear();
pcks.Add(new pckDir() { folder = "Battle & Beasts", file = "BattleAndBeasts.pck" });
pcks.Add(new pckDir() { folder = "Battle & Beasts 2", file = "BattleAndBeasts2.pck" });
pcks.Add(new pckDir() { folder = "Biome Settlers Pack 1", file = "SkinsBiomeSettlers1.pck" });
pcks.Add(new pckDir() { folder = "Biome Settlers Pack 2", file = "SkinsBiomeSettlers2.pck" });
//pcks.Add(new pckDir() { folder = "Campfire Tales Skin Pack", file = "" });
pcks.Add(new pckDir() { folder = "Doctor Who Skins Volume I", file = "SkinPackDrWho.pck" });
pcks.Add(new pckDir() { folder = "Doctor Who Skins Volume II", file = "SkinPackDrWho.pck" });
pcks.Add(new pckDir() { folder = "Festive Skin Pack", file = "SkinsFestive.pck" });
pcks.Add(new pckDir() { folder = "FINAL FANTASY XV Skin Pack", file = "FinalFantasyXV.pck" });
pcks.Add(new pckDir() { folder = "Magic The Gathering Skin Pack", file = "magicthegathering.pck" });
pcks.Add(new pckDir() { folder = "Mini Game Heroes Skin Pack", file = "Minigame2.pck" });
pcks.Add(new pckDir() { folder = "Mini Game Masters Skin Pack", file = "Minigame.pck" });
pcks.Add(new pckDir() { folder = "Moana Character Pack", file = "Moana.pck" });
pcks.Add(new pckDir() { folder = "Power Rangers Skin Pack", file = "PowerRangers.pck" });
pcks.Add(new pckDir() { folder = "Redstone Specialists Skin Pack", file = "SkinsRedstoneSpecialists.pck" });
pcks.Add(new pckDir() { folder = "Skin Pack 1", file = "Skins1.pck" });
pcks.Add(new pckDir() { folder = "Star Wars Classic Skin Pack", file = "StarWarsClassicPack.pck" });
pcks.Add(new pckDir() { folder = "Star Wars Prequel Skin Pack", file = "StarWarsPrequel.pck" });
pcks.Add(new pckDir() { folder = "Star Wars Rebels Skin Pack", file = "StarWarsRebelsPack.pck" });
pcks.Add(new pckDir() { folder = "Star Wars Sequel Skin Pack", file = "StarWarsSequel.pck" });
pcks.Add(new pckDir() { folder = "Story Mode Skin Pack", file = "PackStoryMode.pck" });
pcks.Add(new pckDir() { folder = "Stranger Things Skin Pack", file = "StrangerThings.pck" });
pcks.Add(new pckDir() { folder = "Strangers Biome Settlers 3 Skin Pack", file = "BiomeSettlers3_Strangers.pck" });
pcks.Add(new pckDir() { folder = "The Incredibles Skin Pack", file = "Incredibles.pck" });
pcks.Add(new pckDir() { folder = "The Simpsons Skin Pack", file = "SkinPackSimpsons.pck" });
pcks.Add(new pckDir() { folder = "Villains Skin Pack", file = "Villains.pck" });
}
public void buttonMode(string mode)
{
if (mode == "start")
{
buttonServerToggle.BackColor = Color.FromArgb(68, 178, 13);
serverOn = false;
buttonServerToggle.Text = "Start";
listViewPCKS.Enabled = false;
}
else if (mode == "stop")
{
serverOn = true;
buttonServerToggle.BackColor = Color.Red;
buttonServerToggle.Text = "Stop";
listViewPCKS.Enabled = true;
}
else if (mode == "loading")
{
buttonServerToggle.BackColor = Color.MediumAquamarine;
buttonServerToggle.Text = "Wait..";
}
}
private void loadPcks()
{
string region = "";
if (JPDig.Checked)
{
region = "NPJB00549/";
}
else if (EurDisc.Checked)
{
region = "BLES01976/";
}
else if (EurDig.Checked)
{
region = "NPEB01899/";
}
else if (USDisc.Checked)
{
region = "BLUS31426/";
}
else if (USDig.Checked)
{
region = "NPUB31419/";
}
string device = "/dev_hdd0/";
if (region != "" && device != "")
{
dlcPath = device + "game/" + region;
buttonServerToggle.Enabled = true;
if (listViewPCKS.Columns.Count == 0)
{
listViewPCKS.Columns.Add(dlcPath, 395);
}
}
}
private void buttonServerToggle_Click(object sender, EventArgs e)
{
if (serverOn == false)
{
//Makes sure user typed in their ip
if (textBoxHost.Text == "")
{
MessageBox.Show("Please enter a valid Playstation®3 IP!");
return;
}
//Turns Server On
try
{
buttonMode("loading");
ServicePointManager.Expect100Continue = true;
//ServicePointManager.ServerCertificateValidationCallback = new System.Net.Security.RemoteCertificateValidationCallback(OnValidateCertificate);
FtpWebRequest request = (FtpWebRequest)WebRequest.Create("ftp://" + textBoxHost.Text + "/" + dlcPath);
currentpath = textBoxHost.Text + "/" + dlcPath;
request.Method = WebRequestMethods.Ftp.ListDirectory;
request.Credentials = new NetworkCredential("", "");
request.EnableSsl = false;
request.Timeout = 1200000;
ServicePoint sp = request.ServicePoint;
Console.WriteLine("ServicePoint connections = {0}.", sp.ConnectionLimit);
sp.ConnectionLimit = 1;
using (var response = (FtpWebResponse)request.GetResponse())
{
using (var stream = response.GetResponseStream())
{
using (var reader = new StreamReader(stream, true))
{
string line = reader.ReadLine();
while (line != null)
{
listViewPCKS.Items.Add(line);
Console.WriteLine(line);
line = reader.ReadLine();
}
}
}
}
foreach (ListViewItem pck in listViewPCKS.Items)
{
int i = 0;
FtpWebRequest request2 = (FtpWebRequest)WebRequest.Create("ftp://" + textBoxHost.Text + "/" + dlcPath + "/");
request2.Method = WebRequestMethods.Ftp.ListDirectory;
request2.Credentials = new NetworkCredential("", "");
request2.EnableSsl = false;
request2.Timeout = 1200000;
ServicePoint sp2 = request2.ServicePoint;
Console.WriteLine("NOBLEDEZ WAS HERE", sp2.ConnectionLimit);
sp2.ConnectionLimit = 1;
using (var response = (FtpWebResponse)request2.GetResponse())
{
using (var stream = response.GetResponseStream())
{
using (var reader = new StreamReader(stream, true))
{
string line = reader.ReadLine();
while (line != null)
{
i += 1;
pck.Tag = line;
line = reader.ReadLine();
}
}
}
}
if (i != 1)
{
pck.Remove();
}
else
{
}
if (pck.Text != ".")
listViewPCKS.Items.Add(pck);
}
buttonMode("stop");
}
catch (Exception disc)
{
buttonMode("start");
MessageBox.Show(disc.ToString());
}
}
else if (serverOn == true)
{
//Turns Server Off
listViewPCKS.Items.Clear();
try
{
buttonMode("start");
}
catch (Exception disc)
{
MessageBox.Show(disc.ToString());
}
}
}
private void radioButtonEur_Click(object sender, EventArgs e)
{
loadPcks();
}
private void radioButtonUs_Click(object sender, EventArgs e)
{
loadPcks();
}
private void radioButtonJap_Click(object sender, EventArgs e)
{
loadPcks();
}
private void listViewPCKS_Click(object sender, EventArgs e)
{
}
private void listViewPCKS_MouseDown(object sender, MouseEventArgs e)
{
ListViewHitTestInfo HI = listViewPCKS.HitTest(e.Location);
if (e.Button == MouseButtons.Right)
{
if (HI.Location == ListViewHitTestLocations.None)
{
}
else
{
contextMenuStripCaffiine.Show(Cursor.Position);
}
}
}
private void replacePCKToolStripMenuItem_Click(object sender, EventArgs e)
{
if (listViewPCKS.SelectedItems.Count != 0)
{
buttonMode("loading");
OpenFileDialog openPCK = new OpenFileDialog();
if (openPCK.ShowDialog() == DialogResult.OK)
{
using (FTPClient client = new FTPClient("ftp://" + textBoxHost.Text, "", ""))
client.UploadFile(openPCK.FileName, dlcPath + "/" + listViewPCKS.SelectedItems[0].Text + "/" + listViewPCKS.SelectedItems[0].Tag.ToString());
MessageBox.Show("PCK Replaced!");
}
}
buttonMode("stop");
loadPcks();
}
private void listViewPCKS_SelectedIndexChanged(object sender, EventArgs e)
{
}
private void buttonInstall_Click(object sender, EventArgs e)
{
if (MessageBox.Show("Replace with " + Path.GetFileNameWithoutExtension(mod) + "?", "Install Mod", MessageBoxButtons.YesNo) == DialogResult.Yes)
{
if (!Directory.Exists(dlcPath + pcks[listViewPCKS.SelectedItems[0].Index].folder + "/"))
{
Directory.CreateDirectory(dlcPath + pcks[listViewPCKS.SelectedItems[0].Index].folder + "/");
}
File.Copy(mod, dlcPath + pcks[listViewPCKS.SelectedItems[0].Index].folder + "/" + pcks[listViewPCKS.SelectedItems[0].Index].file);
}
loadPcks();
}
private void deletePCKModToolStripMenuItem_Click(object sender, EventArgs e)
{
Directory.Delete(dlcPath + pcks[listViewPCKS.SelectedItems[0].Index].folder + "/", true);
loadPcks();
}
private void buttonServerToggle_Clic(object sender, EventArgs e)
{
}
private void contextMenuStripCaffiine_Opening(object sender, CancelEventArgs e)
{
}
private void replaceToolStripMenuItem_Click(object sender, EventArgs e)
{
if (listViewPCKS.SelectedItems.Count != 0)
{
buttonMode("loading");
using (FTPClient client = new FTPClient("ftp://" + textBoxHost.Text, "", ""))
client.UploadFile(mod, dlcPath + "/" + listViewPCKS.SelectedItems[0].Text + "/" + listViewPCKS.SelectedItems[0].Tag.ToString());
MessageBox.Show("PCK Replaced!");
}
buttonMode("stop");
loadPcks();
}
private void EurDisc_CheckedChanged(object sender, EventArgs e)
{
loadPcks();
}
private void EurDig_CheckedChanged(object sender, EventArgs e)
{
loadPcks();
}
private void USDig_CheckedChanged(object sender, EventArgs e)
{
loadPcks();
}
private void USDisc_CheckedChanged(object sender, EventArgs e)
{
loadPcks();
}
private void JPDig_CheckedChanged(object sender, EventArgs e)
{
loadPcks();
}
private void installVita_Load(object sender, EventArgs e)
{
loadPcks();
}
private void listViewPCKS_DoubleClick(object sender, EventArgs e)
{
try
{
string folname = listViewPCKS.SelectedItems[0].Text;
if (folname.Contains(".") && folname != "..")
return;
Console.WriteLine("ftp://" + currentpath + listViewPCKS.SelectedItems[0].Text);
listViewPCKS.Items.Clear();
FtpWebRequest request = (FtpWebRequest)WebRequest.Create("ftp://" + currentpath.Replace("//", "/") + folname);
if (folname == "..")
{
string[] tmp = currentpath.Split(new[] { "/" }, StringSplitOptions.None);
Console.WriteLine(tmp[(tmp).Length - 2]);
string foldr = tmp[(tmp).Length - 2];
request = (FtpWebRequest)WebRequest.Create("ftp://" + currentpath.Replace(foldr, "").Replace("//", "/"));
}
request.Method = WebRequestMethods.Ftp.ListDirectory;
request.Credentials = new NetworkCredential("", "");
request.EnableSsl = false;
request.Timeout = 1200000;
currentpath = currentpath + "/" + folname + "/";
ServicePoint sp = request.ServicePoint;
Console.WriteLine("ServicePoint connections = {0}.", sp.ConnectionLimit);
sp.ConnectionLimit = 1;
using (var response = (FtpWebResponse)request.GetResponse())
{
using (var stream = response.GetResponseStream())
{
using (var reader = new StreamReader(stream, true))
{
string line = reader.ReadLine();
while (line != null)
{
listViewPCKS.Items.Add(line);
Console.WriteLine(line);
line = reader.ReadLine();
}
}
}
}
foreach (ListViewItem pck in listViewPCKS.Items)
{
int i = 0;
FtpWebRequest request2 = (FtpWebRequest)WebRequest.Create("ftp://" + currentpath);
request2.Method = WebRequestMethods.Ftp.ListDirectory;
request2.Credentials = new NetworkCredential("", "");
request2.EnableSsl = false;
request2.Timeout = 1200000;
ServicePoint sp2 = request2.ServicePoint;
Console.WriteLine("NOBLEDEZ WAS HERE", sp2.ConnectionLimit);
sp2.ConnectionLimit = 1;
using (var response = (FtpWebResponse)request2.GetResponse())
{
using (var stream = response.GetResponseStream())
{
using (var reader = new StreamReader(stream, true))
{
string line = reader.ReadLine();
while (line != null)
{
i += 1;
pck.Tag = line;
line = reader.ReadLine();
}
}
}
}
if (i != 1)
{
pck.Remove();
}
else
{
}
listViewPCKS.Items.Add(pck);
}
}
catch
{
}
}
}
}

View File

@@ -1,123 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<metadata name="contextMenuStripCaffiine.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value>
</metadata>
</root>

View File

@@ -1,350 +0,0 @@
namespace PckStudio.Forms
{
partial class installWiiU
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.components = new System.ComponentModel.Container();
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(installWiiU));
this.metroTabPageMain = new MetroFramework.Controls.MetroTabPage();
this.myTablePanel1 = new System.Windows.Forms.TableLayoutPanel();
this.buttonServerToggle = new System.Windows.Forms.Button();
this.panel1 = new System.Windows.Forms.Panel();
this.radioButtonSystem = new System.Windows.Forms.RadioButton();
this.buttonSelect = new System.Windows.Forms.Button();
this.radioButtonUSB = new System.Windows.Forms.RadioButton();
this.textBoxHost = new MetroFramework.Controls.MetroTextBox();
this.radioButtonEur = new System.Windows.Forms.RadioButton();
this.radioButtonUs = new System.Windows.Forms.RadioButton();
this.radioButtonJap = new System.Windows.Forms.RadioButton();
this.listViewPCKS = new System.Windows.Forms.ListView();
this.TextBoxPackImage = new MetroFramework.Controls.MetroTextBox();
this.PackImageSelection = new System.Windows.Forms.Button();
this.metroTabControlMain = new MetroFramework.Controls.MetroTabControl();
this.contextMenuStripCaffiine = new System.Windows.Forms.ContextMenuStrip(this.components);
this.replaceToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.replacePCKToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.metroTabPageMain.SuspendLayout();
this.myTablePanel1.SuspendLayout();
this.panel1.SuspendLayout();
this.metroTabControlMain.SuspendLayout();
this.contextMenuStripCaffiine.SuspendLayout();
this.SuspendLayout();
//
// metroTabPageMain
//
this.metroTabPageMain.Controls.Add(this.myTablePanel1);
this.metroTabPageMain.HorizontalScrollbarBarColor = true;
this.metroTabPageMain.HorizontalScrollbarHighlightOnWheel = false;
this.metroTabPageMain.HorizontalScrollbarSize = 10;
resources.ApplyResources(this.metroTabPageMain, "metroTabPageMain");
this.metroTabPageMain.Name = "metroTabPageMain";
this.metroTabPageMain.Style = MetroFramework.MetroColorStyle.Blue;
this.metroTabPageMain.Theme = MetroFramework.MetroThemeStyle.Dark;
this.metroTabPageMain.VerticalScrollbarBarColor = true;
this.metroTabPageMain.VerticalScrollbarHighlightOnWheel = false;
this.metroTabPageMain.VerticalScrollbarSize = 10;
//
// myTablePanel1
//
this.myTablePanel1.BackColor = System.Drawing.Color.Transparent;
resources.ApplyResources(this.myTablePanel1, "myTablePanel1");
this.myTablePanel1.Controls.Add(this.buttonServerToggle, 2, 0);
this.myTablePanel1.Controls.Add(this.panel1, 0, 2);
this.myTablePanel1.Controls.Add(this.textBoxHost, 0, 0);
this.myTablePanel1.Controls.Add(this.radioButtonEur, 0, 3);
this.myTablePanel1.Controls.Add(this.radioButtonUs, 1, 3);
this.myTablePanel1.Controls.Add(this.radioButtonJap, 2, 3);
this.myTablePanel1.Controls.Add(this.listViewPCKS, 0, 4);
this.myTablePanel1.Controls.Add(this.TextBoxPackImage, 0, 1);
this.myTablePanel1.Controls.Add(this.PackImageSelection, 2, 1);
this.myTablePanel1.Name = "myTablePanel1";
//
// buttonServerToggle
//
resources.ApplyResources(this.buttonServerToggle, "buttonServerToggle");
this.buttonServerToggle.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(68)))), ((int)(((byte)(178)))), ((int)(((byte)(13)))));
this.buttonServerToggle.FlatAppearance.BorderSize = 0;
this.buttonServerToggle.ForeColor = System.Drawing.Color.White;
this.buttonServerToggle.Name = "buttonServerToggle";
this.buttonServerToggle.UseVisualStyleBackColor = false;
this.buttonServerToggle.Click += new System.EventHandler(this.buttonServerToggle_Click);
//
// panel1
//
this.myTablePanel1.SetColumnSpan(this.panel1, 3);
this.panel1.Controls.Add(this.radioButtonSystem);
this.panel1.Controls.Add(this.buttonSelect);
this.panel1.Controls.Add(this.radioButtonUSB);
resources.ApplyResources(this.panel1, "panel1");
this.panel1.Name = "panel1";
//
// radioButtonSystem
//
resources.ApplyResources(this.radioButtonSystem, "radioButtonSystem");
this.radioButtonSystem.BackColor = System.Drawing.Color.Transparent;
this.radioButtonSystem.FlatAppearance.CheckedBackColor = System.Drawing.Color.Teal;
this.radioButtonSystem.FlatAppearance.MouseDownBackColor = System.Drawing.Color.Aqua;
this.radioButtonSystem.FlatAppearance.MouseOverBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(192)))), ((int)(((byte)(192)))));
this.radioButtonSystem.ForeColor = System.Drawing.Color.White;
this.radioButtonSystem.Name = "radioButtonSystem";
this.radioButtonSystem.TabStop = true;
this.radioButtonSystem.UseVisualStyleBackColor = false;
this.radioButtonSystem.CheckedChanged += new System.EventHandler(this.radioButtonSystem_CheckedChanged);
//
// buttonSelect
//
resources.ApplyResources(this.buttonSelect, "buttonSelect");
this.buttonSelect.ForeColor = System.Drawing.Color.White;
this.buttonSelect.Name = "buttonSelect";
this.buttonSelect.UseVisualStyleBackColor = true;
this.buttonSelect.Click += new System.EventHandler(this.buttonSelect_Click);
//
// radioButtonUSB
//
resources.ApplyResources(this.radioButtonUSB, "radioButtonUSB");
this.radioButtonUSB.BackColor = System.Drawing.Color.Transparent;
this.radioButtonUSB.FlatAppearance.CheckedBackColor = System.Drawing.Color.Teal;
this.radioButtonUSB.FlatAppearance.MouseDownBackColor = System.Drawing.Color.Aqua;
this.radioButtonUSB.FlatAppearance.MouseOverBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(192)))), ((int)(((byte)(192)))));
this.radioButtonUSB.ForeColor = System.Drawing.Color.White;
this.radioButtonUSB.Name = "radioButtonUSB";
this.radioButtonUSB.TabStop = true;
this.radioButtonUSB.UseVisualStyleBackColor = false;
this.radioButtonUSB.CheckedChanged += new System.EventHandler(this.radioButtonUSB_CheckedChanged);
//
// textBoxHost
//
resources.ApplyResources(this.textBoxHost, "textBoxHost");
this.textBoxHost.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(64)))), ((int)(((byte)(64)))), ((int)(((byte)(64)))));
this.myTablePanel1.SetColumnSpan(this.textBoxHost, 2);
//
//
//
this.textBoxHost.CustomButton.Image = ((System.Drawing.Image)(resources.GetObject("resource.Image")));
this.textBoxHost.CustomButton.ImeMode = ((System.Windows.Forms.ImeMode)(resources.GetObject("resource.ImeMode")));
this.textBoxHost.CustomButton.Location = ((System.Drawing.Point)(resources.GetObject("resource.Location")));
this.textBoxHost.CustomButton.Name = "";
this.textBoxHost.CustomButton.Size = ((System.Drawing.Size)(resources.GetObject("resource.Size")));
this.textBoxHost.CustomButton.Style = MetroFramework.MetroColorStyle.Blue;
this.textBoxHost.CustomButton.TabIndex = ((int)(resources.GetObject("resource.TabIndex")));
this.textBoxHost.CustomButton.Theme = MetroFramework.MetroThemeStyle.Light;
this.textBoxHost.CustomButton.UseSelectable = true;
this.textBoxHost.CustomButton.Visible = ((bool)(resources.GetObject("resource.Visible")));
this.textBoxHost.IconRight = true;
this.textBoxHost.Lines = new string[0];
this.textBoxHost.MaxLength = 32767;
this.textBoxHost.Name = "textBoxHost";
this.textBoxHost.PasswordChar = '\0';
this.textBoxHost.PromptText = "Wii U IP";
this.textBoxHost.ScrollBars = System.Windows.Forms.ScrollBars.None;
this.textBoxHost.SelectedText = "";
this.textBoxHost.SelectionLength = 0;
this.textBoxHost.SelectionStart = 0;
this.textBoxHost.ShortcutsEnabled = true;
this.textBoxHost.Style = MetroFramework.MetroColorStyle.Blue;
this.textBoxHost.Theme = MetroFramework.MetroThemeStyle.Dark;
this.textBoxHost.UseSelectable = true;
this.textBoxHost.WaterMark = "Wii U IP";
this.textBoxHost.WaterMarkColor = System.Drawing.Color.FromArgb(((int)(((byte)(109)))), ((int)(((byte)(109)))), ((int)(((byte)(109)))));
this.textBoxHost.WaterMarkFont = new System.Drawing.Font("Segoe UI", 12F, System.Drawing.FontStyle.Italic, System.Drawing.GraphicsUnit.Pixel);
//
// radioButtonEur
//
resources.ApplyResources(this.radioButtonEur, "radioButtonEur");
this.radioButtonEur.BackColor = System.Drawing.Color.Transparent;
this.radioButtonEur.FlatAppearance.CheckedBackColor = System.Drawing.Color.Teal;
this.radioButtonEur.FlatAppearance.MouseDownBackColor = System.Drawing.Color.Aqua;
this.radioButtonEur.FlatAppearance.MouseOverBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(192)))), ((int)(((byte)(192)))));
this.radioButtonEur.ForeColor = System.Drawing.Color.White;
this.radioButtonEur.Name = "radioButtonEur";
this.radioButtonEur.TabStop = true;
this.radioButtonEur.UseVisualStyleBackColor = false;
this.radioButtonEur.Click += new System.EventHandler(this.radioButtonEur_Click);
//
// radioButtonUs
//
resources.ApplyResources(this.radioButtonUs, "radioButtonUs");
this.radioButtonUs.BackColor = System.Drawing.Color.Transparent;
this.radioButtonUs.FlatAppearance.CheckedBackColor = System.Drawing.Color.Teal;
this.radioButtonUs.FlatAppearance.MouseDownBackColor = System.Drawing.Color.Aqua;
this.radioButtonUs.FlatAppearance.MouseOverBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(192)))), ((int)(((byte)(192)))));
this.radioButtonUs.ForeColor = System.Drawing.Color.White;
this.radioButtonUs.Name = "radioButtonUs";
this.radioButtonUs.TabStop = true;
this.radioButtonUs.UseVisualStyleBackColor = false;
this.radioButtonUs.Click += new System.EventHandler(this.radioButtonUs_Click);
//
// radioButtonJap
//
resources.ApplyResources(this.radioButtonJap, "radioButtonJap");
this.radioButtonJap.BackColor = System.Drawing.Color.Transparent;
this.radioButtonJap.FlatAppearance.CheckedBackColor = System.Drawing.Color.Teal;
this.radioButtonJap.FlatAppearance.MouseDownBackColor = System.Drawing.Color.Aqua;
this.radioButtonJap.FlatAppearance.MouseOverBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(192)))), ((int)(((byte)(192)))));
this.radioButtonJap.ForeColor = System.Drawing.Color.White;
this.radioButtonJap.Name = "radioButtonJap";
this.radioButtonJap.TabStop = true;
this.radioButtonJap.UseVisualStyleBackColor = false;
this.radioButtonJap.Click += new System.EventHandler(this.radioButtonJap_Click);
//
// listViewPCKS
//
this.listViewPCKS.Activation = System.Windows.Forms.ItemActivation.TwoClick;
this.myTablePanel1.SetColumnSpan(this.listViewPCKS, 3);
resources.ApplyResources(this.listViewPCKS, "listViewPCKS");
this.listViewPCKS.HideSelection = false;
this.listViewPCKS.Name = "listViewPCKS";
this.listViewPCKS.UseCompatibleStateImageBehavior = false;
this.listViewPCKS.View = System.Windows.Forms.View.Details;
this.listViewPCKS.SelectedIndexChanged += new System.EventHandler(this.listViewPCKS_SelectedIndexChanged);
this.listViewPCKS.Click += new System.EventHandler(this.listViewPCKS_Click);
this.listViewPCKS.MouseDown += new System.Windows.Forms.MouseEventHandler(this.listViewPCKS_MouseDown);
//
// TextBoxPackImage
//
resources.ApplyResources(this.TextBoxPackImage, "TextBoxPackImage");
this.TextBoxPackImage.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(64)))), ((int)(((byte)(64)))), ((int)(((byte)(64)))));
this.myTablePanel1.SetColumnSpan(this.TextBoxPackImage, 2);
//
//
//
this.TextBoxPackImage.CustomButton.Image = ((System.Drawing.Image)(resources.GetObject("resource.Image1")));
this.TextBoxPackImage.CustomButton.ImeMode = ((System.Windows.Forms.ImeMode)(resources.GetObject("resource.ImeMode1")));
this.TextBoxPackImage.CustomButton.Location = ((System.Drawing.Point)(resources.GetObject("resource.Location1")));
this.TextBoxPackImage.CustomButton.Name = "";
this.TextBoxPackImage.CustomButton.Size = ((System.Drawing.Size)(resources.GetObject("resource.Size1")));
this.TextBoxPackImage.CustomButton.Style = MetroFramework.MetroColorStyle.Blue;
this.TextBoxPackImage.CustomButton.TabIndex = ((int)(resources.GetObject("resource.TabIndex1")));
this.TextBoxPackImage.CustomButton.Theme = MetroFramework.MetroThemeStyle.Light;
this.TextBoxPackImage.CustomButton.UseSelectable = true;
this.TextBoxPackImage.CustomButton.Visible = ((bool)(resources.GetObject("resource.Visible1")));
this.TextBoxPackImage.IconRight = true;
this.TextBoxPackImage.Lines = new string[0];
this.TextBoxPackImage.MaxLength = 32767;
this.TextBoxPackImage.Name = "TextBoxPackImage";
this.TextBoxPackImage.PasswordChar = '\0';
this.TextBoxPackImage.PromptText = "Pack Image";
this.TextBoxPackImage.ScrollBars = System.Windows.Forms.ScrollBars.None;
this.TextBoxPackImage.SelectedText = "";
this.TextBoxPackImage.SelectionLength = 0;
this.TextBoxPackImage.SelectionStart = 0;
this.TextBoxPackImage.ShortcutsEnabled = true;
this.TextBoxPackImage.Style = MetroFramework.MetroColorStyle.Blue;
this.TextBoxPackImage.Theme = MetroFramework.MetroThemeStyle.Dark;
this.TextBoxPackImage.UseSelectable = true;
this.TextBoxPackImage.WaterMark = "Pack Image";
this.TextBoxPackImage.WaterMarkColor = System.Drawing.Color.FromArgb(((int)(((byte)(109)))), ((int)(((byte)(109)))), ((int)(((byte)(109)))));
this.TextBoxPackImage.WaterMarkFont = new System.Drawing.Font("Segoe UI", 12F, System.Drawing.FontStyle.Italic, System.Drawing.GraphicsUnit.Pixel);
//
// PackImageSelection
//
resources.ApplyResources(this.PackImageSelection, "PackImageSelection");
this.PackImageSelection.BackColor = System.Drawing.Color.Sienna;
this.PackImageSelection.FlatAppearance.BorderSize = 0;
this.PackImageSelection.ForeColor = System.Drawing.Color.White;
this.PackImageSelection.Name = "PackImageSelection";
this.PackImageSelection.UseVisualStyleBackColor = false;
this.PackImageSelection.Click += new System.EventHandler(this.PackImageSelection_Click);
//
// metroTabControlMain
//
this.metroTabControlMain.Controls.Add(this.metroTabPageMain);
resources.ApplyResources(this.metroTabControlMain, "metroTabControlMain");
this.metroTabControlMain.Name = "metroTabControlMain";
this.metroTabControlMain.SelectedIndex = 0;
this.metroTabControlMain.Style = MetroFramework.MetroColorStyle.White;
this.metroTabControlMain.Theme = MetroFramework.MetroThemeStyle.Dark;
this.metroTabControlMain.UseSelectable = true;
//
// contextMenuStripCaffiine
//
this.contextMenuStripCaffiine.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.replaceToolStripMenuItem,
this.replacePCKToolStripMenuItem});
this.contextMenuStripCaffiine.Name = "contextMenuStripCaffiine";
resources.ApplyResources(this.contextMenuStripCaffiine, "contextMenuStripCaffiine");
this.contextMenuStripCaffiine.Opening += new System.ComponentModel.CancelEventHandler(this.contextMenuStripCaffiine_Opening);
//
// replaceToolStripMenuItem
//
this.replaceToolStripMenuItem.Image = global::PckStudio.Properties.Resources.Replace;
this.replaceToolStripMenuItem.Name = "replaceToolStripMenuItem";
resources.ApplyResources(this.replaceToolStripMenuItem, "replaceToolStripMenuItem");
this.replaceToolStripMenuItem.Click += new System.EventHandler(this.replaceToolStripMenuItem_Click);
//
// replacePCKToolStripMenuItem
//
this.replacePCKToolStripMenuItem.Image = global::PckStudio.Properties.Resources.Replace;
this.replacePCKToolStripMenuItem.Name = "replacePCKToolStripMenuItem";
resources.ApplyResources(this.replacePCKToolStripMenuItem, "replacePCKToolStripMenuItem");
this.replacePCKToolStripMenuItem.Click += new System.EventHandler(this.replacePCKToolStripMenuItem_Click);
//
// installWiiU
//
resources.ApplyResources(this, "$this");
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.BorderStyle = MetroFramework.Forms.MetroFormBorderStyle.FixedSingle;
this.Controls.Add(this.metroTabControlMain);
this.MaximizeBox = false;
this.Name = "installWiiU";
this.Resizable = false;
this.ShadowType = MetroFramework.Forms.MetroFormShadowType.SystemShadow;
this.Style = MetroFramework.MetroColorStyle.White;
this.Theme = MetroFramework.MetroThemeStyle.Dark;
this.metroTabPageMain.ResumeLayout(false);
this.myTablePanel1.ResumeLayout(false);
this.myTablePanel1.PerformLayout();
this.panel1.ResumeLayout(false);
this.metroTabControlMain.ResumeLayout(false);
this.contextMenuStripCaffiine.ResumeLayout(false);
this.ResumeLayout(false);
}
#endregion
private MetroFramework.Controls.MetroTabPage metroTabPageMain;
private System.Windows.Forms.TableLayoutPanel myTablePanel1;
private System.Windows.Forms.RadioButton radioButtonJap;
private System.Windows.Forms.RadioButton radioButtonEur;
private System.Windows.Forms.RadioButton radioButtonUs;
private System.Windows.Forms.ListView listViewPCKS;
private MetroFramework.Controls.MetroTabControl metroTabControlMain;
private System.Windows.Forms.ContextMenuStrip contextMenuStripCaffiine;
private System.Windows.Forms.ToolStripMenuItem replacePCKToolStripMenuItem;
private System.Windows.Forms.Panel panel1;
private System.Windows.Forms.RadioButton radioButtonSystem;
private System.Windows.Forms.Button buttonSelect;
private System.Windows.Forms.RadioButton radioButtonUSB;
private System.Windows.Forms.Button buttonServerToggle;
private MetroFramework.Controls.MetroTextBox textBoxHost;
private System.Windows.Forms.ToolStripMenuItem replaceToolStripMenuItem;
private MetroFramework.Controls.MetroTextBox TextBoxPackImage;
private System.Windows.Forms.Button PackImageSelection;
}
}

View File

@@ -1,486 +0,0 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.IO;
using System.IO.Compression;
using System.Net;
using System.Windows.Forms;
using System.Diagnostics;
using PckStudio.Classes.FileTypes;
using PckStudio.Classes.IO.PCK;
using PckStudio.Classes.Misc;
using OMI.Formats.Archive;
using OMI.Workers.Archive;
using OMI.Workers.Pck;
using OMI.Formats.Pck;
namespace PckStudio.Forms
{
public partial class installWiiU : MetroFramework.Forms.MetroForm
{
string loca = "";
string dlcPath = "";
string mod = "";
bool serverOn = false;
ConsoleArchive archive = new ConsoleArchive();
public installWiiU(string mod)
{
InitializeComponent();
this.mod = mod;
if (mod == null)
{
replaceToolStripMenuItem.Visible = false;
}
else
{
replaceToolStripMenuItem.Text = "Replace with " + Path.GetFileName(mod);
}
}
//items class for use in bedrock skin conversion
public class pckDir
{
public string folder { get; set; }
public string file { get; set; }
}
private void buttonSelect_Click(object sender, EventArgs e)
{
FolderBrowserDialog sdFind = new FolderBrowserDialog();
if (sdFind.ShowDialog() == DialogResult.OK)
{
try
{
string sdRoot = Directory.GetDirectoryRoot(sdFind.SelectedPath);
if (!Directory.Exists(sdRoot + "/wiiu/apps/"))
{
Directory.CreateDirectory(sdRoot + "/wiiu/apps/");
}
using (WebClient client = new WebClient())
{
try
{
// File.WriteAllBytes(sdRoot + "/wiiu/apps/apps.zip", PckStudio.Properties.Resources.apps);
}
catch
{
MessageBox.Show("Could not extract resources to:\n" + sdRoot + "/wiiu/apps/apps.zip");
return;
}
}
string zipPath = sdRoot + "/wiiu/apps/apps.zip";
string extractPath = sdRoot + "/wiiu/apps/temp";
ZipFile.ExtractToDirectory(zipPath, extractPath);
if (!Directory.Exists(sdRoot + "/wiiu/apps/ftpiiu_everywhere"))
{
Directory.Move(sdRoot + "/wiiu/apps/temp/ftpiiu_everywhere", sdRoot + "/wiiu/apps/ftpiiu_everywhere");
}
if (!Directory.Exists(sdRoot + "/wiiu/apps/homebrew_launcher"))
{
Directory.Move(sdRoot + "/wiiu/apps/temp/homebrew_launcher", sdRoot + "/wiiu/apps/homebrew_launcher");
}
if (!Directory.Exists(sdRoot + "/wiiu/apps/mocha_fshax"))
{
Directory.Move(sdRoot + "/wiiu/apps/temp/mocha_fshax", sdRoot + "/wiiu/apps/mocha_fshax");
}
if (!File.Exists(sdRoot + "/wiiu/apps/sign_c2w_patcher.elf"))
{
File.Move(sdRoot + "/wiiu/apps/temp/sign_c2w_patcher.elf", sdRoot + "/wiiu/apps/sign_c2w_patcher.elf");
}
File.Delete(sdRoot + "/wiiu/apps/apps.zip");
Directory.Delete(sdRoot + "/wiiu/apps/temp/", true);
}
catch (Exception er)
{
MessageBox.Show(er.ToString());
}
MessageBox.Show("Done");
}
}
List<pckDir> pcks = new List<pckDir>();
PckFile currentPCK = null;
private void updateDatabase()
{
pcks.Clear();
pcks.Add(new pckDir() { folder = "Battle & Beasts", file = "BattleAndBeasts.pck" });
pcks.Add(new pckDir() { folder = "Battle & Beasts 2", file = "BattleAndBeasts2.pck" });
pcks.Add(new pckDir() { folder = "Biome Settlers Pack 1", file = "SkinsBiomeSettlers1.pck" });
pcks.Add(new pckDir() { folder = "Biome Settlers Pack 2", file = "SkinsBiomeSettlers2.pck" });
//pcks.Add(new pckDir() { folder = "Campfire Tales Skin Pack", file = "" });
pcks.Add(new pckDir() { folder = "Doctor Who Skins Volume I", file = "SkinPackDrWho.pck" });
pcks.Add(new pckDir() { folder = "Doctor Who Skins Volume II", file = "SkinPackDrWho.pck" });
pcks.Add(new pckDir() { folder = "Festive Skin Pack", file = "SkinsFestive.pck" });
pcks.Add(new pckDir() { folder = "FINAL FANTASY XV Skin Pack", file = "FinalFantasyXV.pck" });
pcks.Add(new pckDir() { folder = "Magic The Gathering Skin Pack", file = "magicthegathering.pck" });
pcks.Add(new pckDir() { folder = "Mini Game Heroes Skin Pack", file = "Minigame2.pck" });
pcks.Add(new pckDir() { folder = "Mini Game Masters Skin Pack", file = "Minigame.pck" });
pcks.Add(new pckDir() { folder = "Moana Character Pack", file = "Moana.pck" });
pcks.Add(new pckDir() { folder = "Power Rangers Skin Pack", file = "PowerRangers.pck" });
pcks.Add(new pckDir() { folder = "Redstone Specialists Skin Pack", file = "SkinsRedstoneSpecialists.pck" });
pcks.Add(new pckDir() { folder = "Skin Pack 1", file = "Skins1.pck" });
pcks.Add(new pckDir() { folder = "Star Wars Classic Skin Pack", file = "StarWarsClassicPack.pck" });
pcks.Add(new pckDir() { folder = "Star Wars Prequel Skin Pack", file = "StarWarsPrequel.pck" });
pcks.Add(new pckDir() { folder = "Star Wars Rebels Skin Pack", file = "StarWarsRebelsPack.pck" });
pcks.Add(new pckDir() { folder = "Star Wars Sequel Skin Pack", file = "StarWarsSequel.pck" });
pcks.Add(new pckDir() { folder = "Story Mode Skin Pack", file = "PackStoryMode.pck" });
pcks.Add(new pckDir() { folder = "Stranger Things Skin Pack", file = "StrangerThings.pck" });
pcks.Add(new pckDir() { folder = "Strangers Biome Settlers 3 Skin Pack", file = "BiomeSettlers3_Strangers.pck" });
pcks.Add(new pckDir() { folder = "The Incredibles Skin Pack", file = "Incredibles.pck" });
pcks.Add(new pckDir() { folder = "The Simpsons Skin Pack", file = "SkinPackSimpsons.pck" });
pcks.Add(new pckDir() { folder = "Villains Skin Pack", file = "Villains.pck" });
}
public void buttonMode(string mode)
{
if (mode == "start")
{
buttonServerToggle.BackColor = Color.FromArgb(68, 178, 13);
serverOn = false;
buttonServerToggle.Text = "Start";
listViewPCKS.Enabled = false;
}
else if (mode == "stop")
{
serverOn = true;
buttonServerToggle.BackColor = Color.Red;
buttonServerToggle.Text = "Stop";
listViewPCKS.Enabled = true;
}
else if (mode == "loading")
{
buttonServerToggle.BackColor = Color.MediumAquamarine;
buttonServerToggle.Text = "Wait..";
}
}
private void loadPcks()
{
string region = "";
if (radioButtonEur.Checked)
{
region = "101d7500";
}
else if (radioButtonUs.Checked)
{
region = "101d9d00";
}
else if (radioButtonJap.Checked)
{
region = "101dbe00";
}
string device = "";
if (radioButtonSystem.Checked)
{
device = "storage_mlc";
}
else if (radioButtonUSB.Checked)
{
device = "storage_usb";
}
if (region != "" && device != "")
{
dlcPath = device + "/usr/title/0005000e/" + region + "/content/WiiU/DLC/";
buttonServerToggle.Enabled = true;
if (listViewPCKS.Columns.Count == 0)
{
listViewPCKS.Columns.Add(dlcPath, 395);
}
}
}
private void buttonServerToggle_Click(object sender, EventArgs e)
{
if (serverOn == false)
{
//Makes sure user typed in their ip
if (textBoxHost.Text == "")
{
MessageBox.Show("Please enter a valid Wii U IP!");
return;
}
//Turns Server On
try
{
buttonMode("loading");
ServicePointManager.Expect100Continue = true;
//ServicePointManager.ServerCertificateValidationCallback = new System.Net.Security.RemoteCertificateValidationCallback(OnValidateCertificate);
FtpWebRequest request = (FtpWebRequest)WebRequest.Create("ftp://" + textBoxHost.Text + "/" + dlcPath);
request.Method = WebRequestMethods.Ftp.ListDirectory;
request.Credentials = new NetworkCredential("", "a3262443");
request.EnableSsl = false;
request.Timeout = 1200000;
ServicePoint sp = request.ServicePoint;
Debug.WriteLine("ServicePoint connections = {0}.", sp.ConnectionLimit);
sp.ConnectionLimit = 1;
using (var response = (FtpWebResponse)request.GetResponse())
{
using (var stream = response.GetResponseStream())
{
using (var reader = new StreamReader(stream, true))
{
string line = reader.ReadLine();
while (line != null)
{
listViewPCKS.Items.Add(line);
line = reader.ReadLine();
}
}
}
}
foreach (ListViewItem pck in listViewPCKS.Items)
{
int i = 0;
FtpWebRequest request2 = (FtpWebRequest)WebRequest.Create("ftp://" + textBoxHost.Text + "/" + dlcPath + "/" + pck.Text + "/");
request2.Method = WebRequestMethods.Ftp.ListDirectory;
request2.Credentials = new NetworkCredential("", "a3262443");
request2.EnableSsl = false;
request2.Timeout = 1200000;
ServicePoint sp2 = request2.ServicePoint;
Console.WriteLine("NOBLEDEZ//PHOENIXARC WAS HERE", sp2.ConnectionLimit);
sp2.ConnectionLimit = 1;
using (var response = (FtpWebResponse)request2.GetResponse())
{
using (var stream = response.GetResponseStream())
{
using (var reader = new StreamReader(stream, true))
{
string line = reader.ReadLine();
while (line != null)
{
i += 1;
pck.Tag = line;
line = reader.ReadLine();
}
}
}
}
if (i != 1)
{
pck.Remove();
}
}
buttonMode("stop");
}
catch (Exception disc)
{
buttonMode("start");
MessageBox.Show(disc.ToString());
}
}
else if (serverOn == true)
{
//Turns Server Off
listViewPCKS.Items.Clear();
try
{
buttonMode("start");
}
catch (Exception disc)
{
MessageBox.Show(disc.ToString());
}
}
}
private void radioButtonEur_Click(object sender, EventArgs e)
{
loadPcks();
}
private void radioButtonUs_Click(object sender, EventArgs e)
{
loadPcks();
}
private void radioButtonJap_Click(object sender, EventArgs e)
{
loadPcks();
}
private void listViewPCKS_Click(object sender, EventArgs e)
{
}
private void listViewPCKS_MouseDown(object sender, MouseEventArgs e)
{
ListViewHitTestInfo hitTestInfo = listViewPCKS.HitTest(e.Location);
if (e.Button == MouseButtons.Right)
{
if (hitTestInfo.Location == ListViewHitTestLocations.None)
{
}
else
{
contextMenuStripCaffiine.Show(Cursor.Position);
}
}
}
private void replacePCKToolStripMenuItem_Click(object sender, EventArgs e)
{
if (listViewPCKS.SelectedItems.Count != 0)
{
buttonMode("loading");
OpenFileDialog openPCK = new OpenFileDialog();
openPCK.Filter = "PCK File|*.pck";
if (openPCK.ShowDialog() == DialogResult.OK)
{
using (FTPClient client = new FTPClient("ftp://" + textBoxHost.Text, "", "a3262443"))
client.UploadFile(openPCK.FileName, dlcPath + "/" + listViewPCKS.SelectedItems[0].Text + "/" + listViewPCKS.SelectedItems[0].Tag.ToString());
if(TextBoxPackImage.Text != "")
{
string PackID = GetPackID(openPCK.FileName);
GetARCFromConsole();
ReplacePackImage(PackID);
SendARCToConsole();
}
MessageBox.Show("PCK Replaced!");
}
}
buttonMode("stop");
loadPcks();
}
private void listViewPCKS_SelectedIndexChanged(object sender, EventArgs e)
{
}
private void buttonInstall_Click(object sender, EventArgs e)
{
if (MessageBox.Show("Replace with " + Path.GetFileNameWithoutExtension(mod) + "?", "Install Mod", MessageBoxButtons.YesNo) == DialogResult.Yes)
{
if (!Directory.Exists(dlcPath + pcks[listViewPCKS.SelectedItems[0].Index].folder + "/"))
{
Directory.CreateDirectory(dlcPath + pcks[listViewPCKS.SelectedItems[0].Index].folder + "/");
}
File.Copy(mod, dlcPath + pcks[listViewPCKS.SelectedItems[0].Index].folder + "/" + pcks[listViewPCKS.SelectedItems[0].Index].file);
}
loadPcks();
}
private void deletePCKModToolStripMenuItem_Click(object sender, EventArgs e)
{
Directory.Delete(dlcPath + pcks[listViewPCKS.SelectedItems[0].Index].folder + "/", true);
loadPcks();
}
private void buttonServerToggle_Clic(object sender, EventArgs e)
{
}
private void contextMenuStripCaffiine_Opening(object sender, CancelEventArgs e)
{
}
private void radioButtonSystem_CheckedChanged(object sender, EventArgs e)
{
loadPcks();
}
private void radioButtonUSB_CheckedChanged(object sender, EventArgs e)
{
loadPcks();
}
private void replaceToolStripMenuItem_Click(object sender, EventArgs e)
{
if (listViewPCKS.SelectedItems.Count != 0)
{
buttonMode("loading");
using (FTPClient client = new FTPClient("ftp://" + textBoxHost.Text, "", "a3262443"))
client.UploadFile(mod, dlcPath + "/" + listViewPCKS.SelectedItems[0].Text + "/" + listViewPCKS.SelectedItems[0].Tag.ToString());
if (TextBoxPackImage.Text != "")
{
string PackID = GetPackID(mod);
GetARCFromConsole();
ReplacePackImage(PackID);
SendARCToConsole();
}
MessageBox.Show("PCK Replaced!");
}
buttonMode("stop");
loadPcks();
}
private string GetPackID(string filename)
{
var reader = new PckFileReader();
currentPCK = reader.FromFile(filename);
if (currentPCK.TryGetFile("0", PckFile.FileData.FileType.InfoFile, out var file) &&
file.Properties.HasProperty("PACKID"))
{
file.Properties.GetProperty("PACKID");
}
throw new KeyNotFoundException();
}
private void GetARCFromConsole()
{
using (FTPClient client = new FTPClient("ftp://" + textBoxHost.Text, "", "a3262443"))
client.DownloadFile(dlcPath + "../../Common/Media/MediaWiiU.arc", Program.AppData + "MediaWiiU.arc");
var reader = new ARCFileReader();
archive = reader.FromStream(new MemoryStream(File.ReadAllBytes(Program.AppData + "MediaWiiU.arc")));
}
private void ReplacePackImage(string PackID)
{
if (archive.ContainsKey("Graphics\\PackGraphics\\" + PackID + ".png"))
archive["Graphics\\PackGraphics\\" + PackID + ".png"] = File.ReadAllBytes(TextBoxPackImage.Text);
else
archive.Add("Graphics\\PackGraphics\\" + PackID + ".png", File.ReadAllBytes(TextBoxPackImage.Text));
}
private void SendARCToConsole()
{
using (FTPClient client = new FTPClient("ftp://" + textBoxHost.Text, "", "a3262443"))
{
MemoryStream ms = new MemoryStream();
var writer = new ARCFileWriter(archive);
writer.WriteToStream(ms);
File.WriteAllBytes(Program.AppData + "MediaWiiU.arc", ms.ToArray());
client.UploadFile(Program.AppData + "MediaWiiU.arc", dlcPath + "../../Common/Media/MediaWiiU.arc");
archive.Clear();
currentPCK.Files.Clear();
currentPCK = null;
ms.Dispose();
}
GC.Collect();
}
private void PackImageSelection_Click(object sender, EventArgs e)
{
OpenFileDialog ofd = new OpenFileDialog();
ofd.Filter = "PNG Image|*.png";
if(ofd.ShowDialog() == DialogResult.OK)
TextBoxPackImage.Text = ofd.FileName;
}
}
}

View File

@@ -1135,8 +1135,6 @@ namespace PckStudio.Forms
private void buttonInstallWiiU_Click(object sender, EventArgs e)
{
installWiiU install = new installWiiU(Program.AppData + "/PCK Center/myPcks/" + mod + ".pck");
install.ShowDialog();
}
}
}

View File

@@ -104,9 +104,6 @@
this.administrativeToolsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.storeToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.openPckCenterToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.wiiUPCKInstallerToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.PS3PCKInstallerToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.VitaPCKInstallerToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.joinDevelopmentDiscordToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.trelloBoardToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.miscToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
@@ -141,8 +138,9 @@
this.label11 = new MetroFramework.Controls.MetroLabel();
this.treeViewMain = new System.Windows.Forms.TreeView();
this.imageList = new System.Windows.Forms.ImageList(this.components);
this.pictureBoxImagePreview = new PckStudio.PictureBoxWithInterpolationMode();
this.LittleEndianCheckBox = new MetroFramework.Controls.MetroCheckBox();
this.openPckManagerToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.pictureBoxImagePreview = new PckStudio.PictureBoxWithInterpolationMode();
this.contextMenuPCKEntries.SuspendLayout();
this.menuStrip.SuspendLayout();
this.contextMenuMetaTree.SuspendLayout();
@@ -665,9 +663,6 @@
//
this.storeToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.openPckCenterToolStripMenuItem,
this.wiiUPCKInstallerToolStripMenuItem,
this.PS3PCKInstallerToolStripMenuItem,
this.VitaPCKInstallerToolStripMenuItem,
this.joinDevelopmentDiscordToolStripMenuItem,
this.trelloBoardToolStripMenuItem});
this.storeToolStripMenuItem.ForeColor = System.Drawing.Color.White;
@@ -682,24 +677,6 @@
resources.ApplyResources(this.openPckCenterToolStripMenuItem, "openPckCenterToolStripMenuItem");
this.openPckCenterToolStripMenuItem.Click += new System.EventHandler(this.openPckCenterToolStripMenuItem_Click);
//
// wiiUPCKInstallerToolStripMenuItem
//
resources.ApplyResources(this.wiiUPCKInstallerToolStripMenuItem, "wiiUPCKInstallerToolStripMenuItem");
this.wiiUPCKInstallerToolStripMenuItem.Name = "wiiUPCKInstallerToolStripMenuItem";
this.wiiUPCKInstallerToolStripMenuItem.Click += new System.EventHandler(this.wiiUPCKInstallerToolStripMenuItem_Click);
//
// PS3PCKInstallerToolStripMenuItem
//
resources.ApplyResources(this.PS3PCKInstallerToolStripMenuItem, "PS3PCKInstallerToolStripMenuItem");
this.PS3PCKInstallerToolStripMenuItem.Name = "PS3PCKInstallerToolStripMenuItem";
this.PS3PCKInstallerToolStripMenuItem.Click += new System.EventHandler(this.PS3PCKInstallerToolStripMenuItem_Click);
//
// VitaPCKInstallerToolStripMenuItem
//
resources.ApplyResources(this.VitaPCKInstallerToolStripMenuItem, "VitaPCKInstallerToolStripMenuItem");
this.VitaPCKInstallerToolStripMenuItem.Name = "VitaPCKInstallerToolStripMenuItem";
this.VitaPCKInstallerToolStripMenuItem.Click += new System.EventHandler(this.VitaPCKInstallerToolStripMenuItem_Click);
//
// joinDevelopmentDiscordToolStripMenuItem
//
resources.ApplyResources(this.joinDevelopmentDiscordToolStripMenuItem, "joinDevelopmentDiscordToolStripMenuItem");
@@ -716,6 +693,7 @@
//
this.miscToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.addCustomPackImageToolStripMenuItem,
this.openPckManagerToolStripMenuItem,
this.convertMusicFilesToolStripMenuItem});
this.miscToolStripMenuItem.ForeColor = System.Drawing.Color.White;
this.miscToolStripMenuItem.Name = "miscToolStripMenuItem";
@@ -1048,14 +1026,6 @@
resources.ApplyResources(this.imageList, "imageList");
this.imageList.TransparentColor = System.Drawing.Color.Transparent;
//
// pictureBoxImagePreview
//
resources.ApplyResources(this.pictureBoxImagePreview, "pictureBoxImagePreview");
this.pictureBoxImagePreview.BackColor = System.Drawing.Color.Transparent;
this.pictureBoxImagePreview.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.NearestNeighbor;
this.pictureBoxImagePreview.Name = "pictureBoxImagePreview";
this.pictureBoxImagePreview.TabStop = false;
//
// LittleEndianCheckBox
//
resources.ApplyResources(this.LittleEndianCheckBox, "LittleEndianCheckBox");
@@ -1065,6 +1035,20 @@
this.LittleEndianCheckBox.Theme = MetroFramework.MetroThemeStyle.Dark;
this.LittleEndianCheckBox.UseSelectable = true;
//
// openPckManagerToolStripMenuItem
//
this.openPckManagerToolStripMenuItem.Name = "openPckManagerToolStripMenuItem";
resources.ApplyResources(this.openPckManagerToolStripMenuItem, "openPckManagerToolStripMenuItem");
this.openPckManagerToolStripMenuItem.Click += new System.EventHandler(this.openPckManagerToolStripMenuItem_Click);
//
// pictureBoxImagePreview
//
resources.ApplyResources(this.pictureBoxImagePreview, "pictureBoxImagePreview");
this.pictureBoxImagePreview.BackColor = System.Drawing.Color.Transparent;
this.pictureBoxImagePreview.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.NearestNeighbor;
this.pictureBoxImagePreview.Name = "pictureBoxImagePreview";
this.pictureBoxImagePreview.TabStop = false;
//
// MainForm
//
this.ApplyImageInvert = true;
@@ -1144,11 +1128,9 @@
private MetroFramework.Controls.MetroTabPage editorTab;
private MetroFramework.Controls.MetroCheckBox LittleEndianCheckBox;
private MetroFramework.Controls.MetroLabel label11;
private System.Windows.Forms.ToolStripMenuItem wiiUPCKInstallerToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem PS3PCKInstallerToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem OpenInstallerToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem settingsToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem administrativeToolsToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem VitaPCKInstallerToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem toNobledezJackToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem toPhoenixARCDeveloperToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem joinDevelopmentDiscordToolStripMenuItem;
@@ -1217,6 +1199,7 @@
private System.Windows.Forms.ToolStripMenuItem convertMusicFilesToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem wavBinkaToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem binkaWavToolStripMenuItem;
}
private System.Windows.Forms.ToolStripMenuItem openPckManagerToolStripMenuItem;
}
}

View File

@@ -28,6 +28,7 @@ using PckStudio.Classes.Misc;
using PckStudio.Classes.IO.PCK;
using PckStudio.Classes.IO._3DST;
using PckStudio.Internal;
using PckStudio.Features;
namespace PckStudio
{
@@ -104,7 +105,7 @@ namespace PckStudio
};
}
public void LoadPck(string filepath)
public void LoadPckFromFile(string filepath)
{
checkSaveState();
treeViewMain.Nodes.Clear();
@@ -152,7 +153,7 @@ namespace PckStudio
ofd.Filter = "PCK (Minecraft Console Package)|*.pck";
if (ofd.ShowDialog() == DialogResult.OK)
{
LoadPck(ofd.FileName);
LoadPckFromFile(ofd.FileName);
}
}
}
@@ -1741,12 +1742,6 @@ namespace PckStudio
#endif
}
private void wiiUPCKInstallerToolStripMenuItem_Click(object sender, EventArgs e)
{
installWiiU install = new installWiiU(null);
install.ShowDialog();
}
private void howToMakeABasicSkinPackToolStripMenuItem_Click(object sender, EventArgs e)
{
Process.Start("https://www.youtube.com/watch?v=A43aHRHkKxk");
@@ -1784,8 +1779,7 @@ namespace PckStudio
private void PS3PCKInstallerToolStripMenuItem_Click(object sender, EventArgs e)
{
installPS3 install = new installPS3(null);
install.ShowDialog();
}
private void settingsToolStripMenuItem_Click(object sender, EventArgs e)
@@ -1802,9 +1796,6 @@ namespace PckStudio
private void VitaPCKInstallerToolStripMenuItem_Click(object sender, EventArgs e)
{
installVita install = new installVita(null);
install.ShowDialog();
}
private void toPhoenixARCDeveloperToolStripMenuItem_Click(object sender, EventArgs e)
@@ -1874,7 +1865,7 @@ namespace PckStudio
string[] Filepaths = (string[])e.Data.GetData(DataFormats.FileDrop, false);
if (Filepaths.Length > 1)
MessageBox.Show("Only one pck file at a time is currently supported");
LoadPck(Filepaths[0]);
LoadPckFromFile(Filepaths[0]);
}
private void OpenPck_DragLeave(object sender, EventArgs e)
@@ -2273,6 +2264,12 @@ namespace PckStudio
Process.Start("https://trello.com/b/0XLNOEbe/pck-studio");
}
private void openPckManagerToolStripMenuItem_Click(object sender, EventArgs e)
{
PckManager installer = new PckManager();
installer.Show(this);
}
private async void wavBinkaToolStripMenuItem_Click(object sender, EventArgs e)
{
using OpenFileDialog fileDialog = new OpenFileDialog

View File

@@ -23984,738 +23984,6 @@
<data name="openPckCenterToolStripMenuItem.Text" xml:space="preserve">
<value>Open PCK Center</value>
</data>
<data name="wiiUPCKInstallerToolStripMenuItem.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
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
</value>
</data>
<data name="wiiUPCKInstallerToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>212, 22</value>
</data>
<data name="wiiUPCKInstallerToolStripMenuItem.Text" xml:space="preserve">
<value>Wii U PCK Installer</value>
</data>
<data name="PS3PCKInstallerToolStripMenuItem.Enabled" type="System.Boolean, mscorlib">
<value>False</value>
</data>
<data name="PS3PCKInstallerToolStripMenuItem.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
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
</value>
</data>
<data name="PS3PCKInstallerToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>212, 22</value>
</data>
<data name="PS3PCKInstallerToolStripMenuItem.Text" xml:space="preserve">
<value>PS3 PCK Installer</value>
</data>
<data name="VitaPCKInstallerToolStripMenuItem.Enabled" type="System.Boolean, mscorlib">
<value>False</value>
</data>
<data name="VitaPCKInstallerToolStripMenuItem.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
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
</value>
</data>
<data name="VitaPCKInstallerToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>212, 22</value>
</data>
<data name="VitaPCKInstallerToolStripMenuItem.Text" xml:space="preserve">
<value>PSVita PCK Installer</value>
</data>
<data name="joinDevelopmentDiscordToolStripMenuItem.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAYAAABccqhmAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO
@@ -24855,6 +24123,12 @@
<data name="addCustomPackImageToolStripMenuItem.Text" xml:space="preserve">
<value>Add Custom Pack Icon</value>
</data>
<data name="openPckManagerToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>195, 22</value>
</data>
<data name="openPckManagerToolStripMenuItem.Text" xml:space="preserve">
<value>Open Pck Manager</value>
</data>
<data name="convertMusicFilesToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>195, 22</value>
</data>
@@ -30031,6 +29305,9 @@
AP//AAA=
</value>
</data>
<data name="$this.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="$this.MinimumSize" type="System.Drawing.Size, System.Drawing">
<value>1064, 660</value>
</data>
@@ -30472,24 +29749,6 @@
<data name="&gt;&gt;openPckCenterToolStripMenuItem.Type" xml:space="preserve">
<value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;wiiUPCKInstallerToolStripMenuItem.Name" xml:space="preserve">
<value>wiiUPCKInstallerToolStripMenuItem</value>
</data>
<data name="&gt;&gt;wiiUPCKInstallerToolStripMenuItem.Type" xml:space="preserve">
<value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;PS3PCKInstallerToolStripMenuItem.Name" xml:space="preserve">
<value>PS3PCKInstallerToolStripMenuItem</value>
</data>
<data name="&gt;&gt;PS3PCKInstallerToolStripMenuItem.Type" xml:space="preserve">
<value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;VitaPCKInstallerToolStripMenuItem.Name" xml:space="preserve">
<value>VitaPCKInstallerToolStripMenuItem</value>
</data>
<data name="&gt;&gt;VitaPCKInstallerToolStripMenuItem.Type" xml:space="preserve">
<value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;joinDevelopmentDiscordToolStripMenuItem.Name" xml:space="preserve">
<value>joinDevelopmentDiscordToolStripMenuItem</value>
</data>
@@ -30562,6 +29821,12 @@
<data name="&gt;&gt;imageList.Type" xml:space="preserve">
<value>System.Windows.Forms.ImageList, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;openPckManagerToolStripMenuItem.Name" xml:space="preserve">
<value>openPckManagerToolStripMenuItem</value>
</data>
<data name="&gt;&gt;openPckManagerToolStripMenuItem.Type" xml:space="preserve">
<value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;$this.Name" xml:space="preserve">
<value>MainForm</value>
</data>

View File

@@ -167,6 +167,7 @@
<Reference Include="WindowsFormsIntegration" />
</ItemGroup>
<ItemGroup>
<Compile Include="Extensions\ListExtensions.cs" />
<Compile Include="Internals\ApplicationBuildInfo.cs" />
<Compile Include="Classes\API\PCKCenter\model\PCKCenterJSON.cs" />
<Compile Include="Classes\API\PCKCenter\PCKCollections.cs" />
@@ -189,6 +190,7 @@
<Compile Include="Classes\IO\Sounds\Sounds.cs" />
<Compile Include="Classes\Misc\FTPClient.cs" />
<Compile Include="Classes\Misc\FileCacher.cs" />
<Compile Include="Classes\Misc\OpenFolderDialog.cs" />
<Compile Include="Classes\Models\DefaultModels\Steve64x64Model.cs" />
<Compile Include="Internals\SkinBOX.cs" />
<Compile Include="Classes\Utils\ARC\ARCUtil.cs" />
@@ -223,6 +225,18 @@
<Compile Include="Classes\Networking\Network.cs" />
<Compile Include="Classes\Misc\RichPresenceClient.cs" />
<Compile Include="Classes\Networking\Update.cs" />
<Compile Include="Features\CemuPanel.cs">
<SubType>UserControl</SubType>
</Compile>
<Compile Include="Features\CemuPanel.Designer.cs">
<DependentUpon>CemuPanel.cs</DependentUpon>
</Compile>
<Compile Include="Features\WiiUPanel.cs">
<SubType>UserControl</SubType>
</Compile>
<Compile Include="Features\WiiUPanel.Designer.cs">
<DependentUpon>WiiUPanel.cs</DependentUpon>
</Compile>
<Compile Include="Internals\CommitInfo.cs" />
<Compile Include="Forms\Additional-Popups\EntityForms\AddEntry.cs">
<SubType>Form</SubType>
@@ -359,6 +373,12 @@
<Compile Include="Forms\Editor\BoxEditor.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="Features\PckManager.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="Features\PckManager.Designer.cs">
<DependentUpon>PckManager.cs</DependentUpon>
</Compile>
<Compile Include="Forms\Editor\BoxEditor.Designer.cs">
<DependentUpon>BoxEditor.cs</DependentUpon>
</Compile>
@@ -404,25 +424,6 @@
<Compile Include="Forms\Editor\AudioEditor.Designer.cs">
<DependentUpon>AudioEditor.cs</DependentUpon>
</Compile>
<Compile Include="Forms\Utilities\installPS3.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="Forms\Utilities\installPS3.Designer.cs">
<DependentUpon>installPS3.cs</DependentUpon>
</Compile>
<Compile Include="Forms\Utilities\installVita.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="Forms\Utilities\installVita.Designer.cs">
<DependentUpon>installVita.cs</DependentUpon>
</Compile>
<Compile Include="Forms\Utilities\installWiiU.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="Forms\Utilities\installWiiU.Designer.cs">
<DependentUpon>installWiiU.cs</DependentUpon>
</Compile>
<Compile Include="Extensions\ListExtensions.cs" />
<Compile Include="Forms\Utilities\PCK Manager.cs">
<SubType>Form</SubType>
</Compile>
@@ -472,6 +473,12 @@
</Compile>
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="Classes\IO\3DST\TextureCodec.cs" />
<EmbeddedResource Include="Features\CemuPanel.resx">
<DependentUpon>CemuPanel.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Features\WiiUPanel.resx">
<DependentUpon>WiiUPanel.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Forms\Additional-Popups\EntityForms\AddEntry.resx">
<DependentUpon>AddEntry.cs</DependentUpon>
</EmbeddedResource>
@@ -557,6 +564,9 @@
<EmbeddedResource Include="Forms\Additional-Popups\InProgressPrompt.resx">
<DependentUpon>InProgressPrompt.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Features\PckManager.resx">
<DependentUpon>PckManager.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Forms\Editor\BoxEditor.resx">
<DependentUpon>BoxEditor.cs</DependentUpon>
</EmbeddedResource>
@@ -590,18 +600,6 @@
<DependentUpon>AudioEditor.cs</DependentUpon>
<SubType>Designer</SubType>
</EmbeddedResource>
<EmbeddedResource Include="Forms\Utilities\installPS3.resx">
<DependentUpon>installPS3.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Forms\Utilities\installVita.resx">
<DependentUpon>installVita.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Forms\Utilities\installWiiU.ja.resx">
<DependentUpon>installWiiU.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Forms\Utilities\installWiiU.resx">
<DependentUpon>installWiiU.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Forms\Utilities\PCK Manager.ja.resx">
<DependentUpon>PCK Manager.cs</DependentUpon>
</EmbeddedResource>

View File

@@ -13,6 +13,8 @@ namespace PckStudio
public static readonly string AppData = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), "PCK-Studio");
public static readonly string AppDataCache = Path.Combine(AppData, "cache");
public static MainForm MainInstance { get; private set; }
/// <summary>
/// The main entry point for the application.
/// </summary>
@@ -20,11 +22,11 @@ namespace PckStudio
static void Main(string[] args)
{
System.Globalization.CultureInfo.CurrentCulture = System.Globalization.CultureInfo.InvariantCulture;
var mainForm = new MainForm();
MainInstance = new MainForm();
if (args.Length > 0 && File.Exists(args[0]) && args[0].EndsWith(".pck"))
mainForm.LoadPck(args[0]);
Application.Run(mainForm);
MainInstance.LoadPckFromFile(args[0]);
Application.Run(MainInstance);
}
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 354 B