mirror of
https://mirror.ghproxy.com/https://github.com/dexyfex/CodeWalker
synced 2025-01-09 23:28:03 +08:00
YTD and embedded texture editing in YtdForm, Fixed texture sorting by hash when importing XML
This commit is contained in:
parent
a4998e36c8
commit
7f0bb17e68
@ -26,6 +26,7 @@ namespace CodeWalker.GameFiles
|
||||
public void Load(byte[] data, RpfFileEntry entry)
|
||||
{
|
||||
Name = entry.Name;
|
||||
RpfFileEntry = entry;
|
||||
|
||||
|
||||
RpfResourceFileEntry resentry = entry as RpfResourceFileEntry;
|
||||
|
@ -99,7 +99,6 @@ namespace CodeWalker.GameFiles
|
||||
public void ReadXml(XmlNode node, string ddsfolder)
|
||||
{
|
||||
var textures = new List<Texture>();
|
||||
var texturehashes = new List<uint>();
|
||||
|
||||
var inodes = node.SelectNodes("Item");
|
||||
if (inodes != null)
|
||||
@ -109,15 +108,10 @@ namespace CodeWalker.GameFiles
|
||||
var tex = new Texture();
|
||||
tex.ReadXml(inode, ddsfolder);
|
||||
textures.Add(tex);
|
||||
texturehashes.Add(tex.NameHash);
|
||||
}
|
||||
}
|
||||
|
||||
TextureNameHashes = new ResourceSimpleList64_uint();
|
||||
TextureNameHashes.data_items = texturehashes.ToArray();
|
||||
Textures = new ResourcePointerList64<Texture>();
|
||||
Textures.data_items = textures.ToArray();
|
||||
BuildDict();
|
||||
BuildFromTextureList(textures);
|
||||
}
|
||||
public static void WriteXmlNode(TextureDictionary d, StringBuilder sb, int indent, string ddsfolder, string name = "TextureDictionary")
|
||||
{
|
||||
@ -175,6 +169,23 @@ namespace CodeWalker.GameFiles
|
||||
Dict = dict;
|
||||
}
|
||||
|
||||
public void BuildFromTextureList(List<Texture> textures)
|
||||
{
|
||||
textures.Sort((a, b) => a.NameHash.CompareTo(b.NameHash));
|
||||
|
||||
var texturehashes = new List<uint>();
|
||||
foreach (var tex in textures)
|
||||
{
|
||||
texturehashes.Add(tex.NameHash);
|
||||
}
|
||||
|
||||
TextureNameHashes = new ResourceSimpleList64_uint();
|
||||
TextureNameHashes.data_items = texturehashes.ToArray();
|
||||
Textures = new ResourcePointerList64<Texture>();
|
||||
Textures.data_items = textures.ToArray();
|
||||
BuildDict();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
[TypeConverter(typeof(ExpandableObjectConverter))] public class TextureBase : ResourceSystemBlock
|
||||
|
@ -1608,7 +1608,7 @@ namespace CodeWalker
|
||||
private void ViewYtd(string name, string path, byte[] data, RpfFileEntry e)
|
||||
{
|
||||
var ytd = RpfFile.GetFile<YtdFile>(e, data);
|
||||
YtdForm f = new YtdForm();
|
||||
YtdForm f = new YtdForm(this);
|
||||
f.Show();
|
||||
f.LoadYtd(ytd);
|
||||
}
|
||||
|
179
CodeWalker/Forms/YtdForm.Designer.cs
generated
179
CodeWalker/Forms/YtdForm.Designer.cs
generated
@ -31,16 +31,26 @@
|
||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(YtdForm));
|
||||
this.menuStrip1 = new System.Windows.Forms.MenuStrip();
|
||||
this.FileMenu = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.FileSaveAllMenu = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.FileSaveMenu = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.FileSaveAsMenu = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.FileSaveTextureAsMenu = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.FileSaveAllTexturesMenu = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.EditMenu = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.ViewMenu = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.toolStrip1 = new System.Windows.Forms.ToolStrip();
|
||||
this.NewButton = new System.Windows.Forms.ToolStripSplitButton();
|
||||
this.OpenButton = new System.Windows.Forms.ToolStripSplitButton();
|
||||
this.SaveButton = new System.Windows.Forms.ToolStripSplitButton();
|
||||
this.ToolbarSaveMenu = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.ToolbarSaveAsMenu = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.ToolbarSaveTextureAsMenu = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.ToolbarSaveAllTexturesMenu = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.MainToolbar = new System.Windows.Forms.StatusStrip();
|
||||
this.StatusLabel = new System.Windows.Forms.ToolStripStatusLabel();
|
||||
this.MainSplitContainer = new System.Windows.Forms.SplitContainer();
|
||||
this.ReplaceTextureButton = new System.Windows.Forms.Button();
|
||||
this.RemoveTextureButton = new System.Windows.Forms.Button();
|
||||
this.AddTextureButton = new System.Windows.Forms.Button();
|
||||
this.TexturesListView = new System.Windows.Forms.ListView();
|
||||
this.TextureNameColumnHeader = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
|
||||
this.TextureSizeColumnHeader = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
|
||||
@ -58,11 +68,10 @@
|
||||
this.label4 = new System.Windows.Forms.Label();
|
||||
this.DetailsTabPage = new System.Windows.Forms.TabPage();
|
||||
this.DetailsPropertyGrid = new CodeWalker.WinForms.PropertyGridFix();
|
||||
this.SaveFileDialog = new System.Windows.Forms.SaveFileDialog();
|
||||
this.SaveDDSFileDialog = new System.Windows.Forms.SaveFileDialog();
|
||||
this.FolderBrowserDialog = new System.Windows.Forms.FolderBrowserDialog();
|
||||
this.FileSaveAsMenu = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.ToolbarSaveAsMenu = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.ToolbarSaveAllMenu = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.OpenDDSFileDialog = new System.Windows.Forms.OpenFileDialog();
|
||||
this.SaveYTDFileDialog = new System.Windows.Forms.SaveFileDialog();
|
||||
this.menuStrip1.SuspendLayout();
|
||||
this.toolStrip1.SuspendLayout();
|
||||
this.MainToolbar.SuspendLayout();
|
||||
@ -93,21 +102,46 @@
|
||||
// FileMenu
|
||||
//
|
||||
this.FileMenu.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
this.FileSaveMenu,
|
||||
this.FileSaveAsMenu,
|
||||
this.FileSaveAllMenu});
|
||||
this.FileSaveTextureAsMenu,
|
||||
this.FileSaveAllTexturesMenu});
|
||||
this.FileMenu.Name = "FileMenu";
|
||||
this.FileMenu.Size = new System.Drawing.Size(37, 20);
|
||||
this.FileMenu.Text = "File";
|
||||
//
|
||||
// FileSaveAllMenu
|
||||
// FileSaveMenu
|
||||
//
|
||||
this.FileSaveAllMenu.Image = ((System.Drawing.Image)(resources.GetObject("FileSaveAllMenu.Image")));
|
||||
this.FileSaveAllMenu.Name = "FileSaveAllMenu";
|
||||
this.FileSaveAllMenu.ShortcutKeys = ((System.Windows.Forms.Keys)(((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.Shift)
|
||||
this.FileSaveMenu.Image = ((System.Drawing.Image)(resources.GetObject("FileSaveMenu.Image")));
|
||||
this.FileSaveMenu.Name = "FileSaveMenu";
|
||||
this.FileSaveMenu.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.S)));
|
||||
this.FileSaveMenu.Size = new System.Drawing.Size(242, 22);
|
||||
this.FileSaveMenu.Text = "Save YTD";
|
||||
this.FileSaveMenu.Click += new System.EventHandler(this.FileSaveMenu_Click);
|
||||
//
|
||||
// FileSaveAsMenu
|
||||
//
|
||||
this.FileSaveAsMenu.Name = "FileSaveAsMenu";
|
||||
this.FileSaveAsMenu.Size = new System.Drawing.Size(242, 22);
|
||||
this.FileSaveAsMenu.Text = "Save YTD As...";
|
||||
this.FileSaveAsMenu.Click += new System.EventHandler(this.FileSaveAsMenu_Click);
|
||||
//
|
||||
// FileSaveTextureAsMenu
|
||||
//
|
||||
this.FileSaveTextureAsMenu.Name = "FileSaveTextureAsMenu";
|
||||
this.FileSaveTextureAsMenu.Size = new System.Drawing.Size(242, 22);
|
||||
this.FileSaveTextureAsMenu.Text = "Save Texture As...";
|
||||
this.FileSaveTextureAsMenu.Click += new System.EventHandler(this.FileSaveTextureAsMenu_Click);
|
||||
//
|
||||
// FileSaveAllTexturesMenu
|
||||
//
|
||||
this.FileSaveAllTexturesMenu.Image = ((System.Drawing.Image)(resources.GetObject("FileSaveAllTexturesMenu.Image")));
|
||||
this.FileSaveAllTexturesMenu.Name = "FileSaveAllTexturesMenu";
|
||||
this.FileSaveAllTexturesMenu.ShortcutKeys = ((System.Windows.Forms.Keys)(((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.Shift)
|
||||
| System.Windows.Forms.Keys.S)));
|
||||
this.FileSaveAllMenu.Size = new System.Drawing.Size(196, 22);
|
||||
this.FileSaveAllMenu.Text = "Save All...";
|
||||
this.FileSaveAllMenu.Click += new System.EventHandler(this.FileSaveAllMenu_Click);
|
||||
this.FileSaveAllTexturesMenu.Size = new System.Drawing.Size(242, 22);
|
||||
this.FileSaveAllTexturesMenu.Text = "Save All Textures...";
|
||||
this.FileSaveAllTexturesMenu.Click += new System.EventHandler(this.FileSaveAllTexturesMenu_Click);
|
||||
//
|
||||
// EditMenu
|
||||
//
|
||||
@ -159,8 +193,10 @@
|
||||
//
|
||||
this.SaveButton.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
|
||||
this.SaveButton.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
this.ToolbarSaveMenu,
|
||||
this.ToolbarSaveAsMenu,
|
||||
this.ToolbarSaveAllMenu});
|
||||
this.ToolbarSaveTextureAsMenu,
|
||||
this.ToolbarSaveAllTexturesMenu});
|
||||
this.SaveButton.Image = ((System.Drawing.Image)(resources.GetObject("SaveButton.Image")));
|
||||
this.SaveButton.ImageTransparentColor = System.Drawing.Color.Magenta;
|
||||
this.SaveButton.Name = "SaveButton";
|
||||
@ -168,6 +204,36 @@
|
||||
this.SaveButton.Text = "Save YTD...";
|
||||
this.SaveButton.ButtonClick += new System.EventHandler(this.SaveButton_ButtonClick);
|
||||
//
|
||||
// ToolbarSaveMenu
|
||||
//
|
||||
this.ToolbarSaveMenu.Image = ((System.Drawing.Image)(resources.GetObject("ToolbarSaveMenu.Image")));
|
||||
this.ToolbarSaveMenu.Name = "ToolbarSaveMenu";
|
||||
this.ToolbarSaveMenu.Size = new System.Drawing.Size(170, 22);
|
||||
this.ToolbarSaveMenu.Text = "Save YTD";
|
||||
this.ToolbarSaveMenu.Click += new System.EventHandler(this.ToolbarSaveMenu_Click);
|
||||
//
|
||||
// ToolbarSaveAsMenu
|
||||
//
|
||||
this.ToolbarSaveAsMenu.Name = "ToolbarSaveAsMenu";
|
||||
this.ToolbarSaveAsMenu.Size = new System.Drawing.Size(170, 22);
|
||||
this.ToolbarSaveAsMenu.Text = "Save YTD As...";
|
||||
this.ToolbarSaveAsMenu.Click += new System.EventHandler(this.ToolbarSaveAsMenu_Click);
|
||||
//
|
||||
// ToolbarSaveTextureAsMenu
|
||||
//
|
||||
this.ToolbarSaveTextureAsMenu.Name = "ToolbarSaveTextureAsMenu";
|
||||
this.ToolbarSaveTextureAsMenu.Size = new System.Drawing.Size(170, 22);
|
||||
this.ToolbarSaveTextureAsMenu.Text = "Save Texture As...";
|
||||
this.ToolbarSaveTextureAsMenu.Click += new System.EventHandler(this.ToolbarSaveTextureAsMenu_Click);
|
||||
//
|
||||
// ToolbarSaveAllTexturesMenu
|
||||
//
|
||||
this.ToolbarSaveAllTexturesMenu.Image = ((System.Drawing.Image)(resources.GetObject("ToolbarSaveAllTexturesMenu.Image")));
|
||||
this.ToolbarSaveAllTexturesMenu.Name = "ToolbarSaveAllTexturesMenu";
|
||||
this.ToolbarSaveAllTexturesMenu.Size = new System.Drawing.Size(170, 22);
|
||||
this.ToolbarSaveAllTexturesMenu.Text = "Save All Textures...";
|
||||
this.ToolbarSaveAllTexturesMenu.Click += new System.EventHandler(this.ToolbarSaveAllTexturesMenu_Click);
|
||||
//
|
||||
// MainToolbar
|
||||
//
|
||||
this.MainToolbar.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
@ -193,6 +259,9 @@
|
||||
//
|
||||
// MainSplitContainer.Panel1
|
||||
//
|
||||
this.MainSplitContainer.Panel1.Controls.Add(this.ReplaceTextureButton);
|
||||
this.MainSplitContainer.Panel1.Controls.Add(this.RemoveTextureButton);
|
||||
this.MainSplitContainer.Panel1.Controls.Add(this.AddTextureButton);
|
||||
this.MainSplitContainer.Panel1.Controls.Add(this.TexturesListView);
|
||||
//
|
||||
// MainSplitContainer.Panel2
|
||||
@ -204,6 +273,41 @@
|
||||
this.MainSplitContainer.SplitterDistance = 257;
|
||||
this.MainSplitContainer.TabIndex = 3;
|
||||
//
|
||||
// ReplaceTextureButton
|
||||
//
|
||||
this.ReplaceTextureButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
|
||||
this.ReplaceTextureButton.Enabled = false;
|
||||
this.ReplaceTextureButton.Location = new System.Drawing.Point(170, 462);
|
||||
this.ReplaceTextureButton.Name = "ReplaceTextureButton";
|
||||
this.ReplaceTextureButton.Size = new System.Drawing.Size(75, 23);
|
||||
this.ReplaceTextureButton.TabIndex = 3;
|
||||
this.ReplaceTextureButton.Text = "Replace...";
|
||||
this.ReplaceTextureButton.UseVisualStyleBackColor = true;
|
||||
this.ReplaceTextureButton.Click += new System.EventHandler(this.ReplaceTextureButton_Click);
|
||||
//
|
||||
// RemoveTextureButton
|
||||
//
|
||||
this.RemoveTextureButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
|
||||
this.RemoveTextureButton.Enabled = false;
|
||||
this.RemoveTextureButton.Location = new System.Drawing.Point(89, 462);
|
||||
this.RemoveTextureButton.Name = "RemoveTextureButton";
|
||||
this.RemoveTextureButton.Size = new System.Drawing.Size(75, 23);
|
||||
this.RemoveTextureButton.TabIndex = 2;
|
||||
this.RemoveTextureButton.Text = "Remove";
|
||||
this.RemoveTextureButton.UseVisualStyleBackColor = true;
|
||||
this.RemoveTextureButton.Click += new System.EventHandler(this.RemoveTextureButton_Click);
|
||||
//
|
||||
// AddTextureButton
|
||||
//
|
||||
this.AddTextureButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
|
||||
this.AddTextureButton.Location = new System.Drawing.Point(8, 462);
|
||||
this.AddTextureButton.Name = "AddTextureButton";
|
||||
this.AddTextureButton.Size = new System.Drawing.Size(75, 23);
|
||||
this.AddTextureButton.TabIndex = 1;
|
||||
this.AddTextureButton.Text = "Add...";
|
||||
this.AddTextureButton.UseVisualStyleBackColor = true;
|
||||
this.AddTextureButton.Click += new System.EventHandler(this.AddTextureButton_Click);
|
||||
//
|
||||
// TexturesListView
|
||||
//
|
||||
this.TexturesListView.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
|
||||
@ -217,7 +321,7 @@
|
||||
this.TexturesListView.Location = new System.Drawing.Point(3, 3);
|
||||
this.TexturesListView.Name = "TexturesListView";
|
||||
this.TexturesListView.ShowItemToolTips = true;
|
||||
this.TexturesListView.Size = new System.Drawing.Size(251, 483);
|
||||
this.TexturesListView.Size = new System.Drawing.Size(251, 453);
|
||||
this.TexturesListView.TabIndex = 0;
|
||||
this.TexturesListView.UseCompatibleStateImageBehavior = false;
|
||||
this.TexturesListView.View = System.Windows.Forms.View.Details;
|
||||
@ -250,6 +354,7 @@
|
||||
this.SelTextureNameTextBox.Name = "SelTextureNameTextBox";
|
||||
this.SelTextureNameTextBox.Size = new System.Drawing.Size(271, 20);
|
||||
this.SelTextureNameTextBox.TabIndex = 46;
|
||||
this.SelTextureNameTextBox.TextChanged += new System.EventHandler(this.SelTextureNameTextBox_TextChanged);
|
||||
//
|
||||
// TextureTabControl
|
||||
//
|
||||
@ -398,34 +503,17 @@
|
||||
this.DetailsPropertyGrid.Size = new System.Drawing.Size(558, 445);
|
||||
this.DetailsPropertyGrid.TabIndex = 0;
|
||||
//
|
||||
// SaveFileDialog
|
||||
// SaveDDSFileDialog
|
||||
//
|
||||
this.SaveFileDialog.Filter = "DDS files|*.dds|All files|*.*";
|
||||
this.SaveDDSFileDialog.Filter = "DDS files|*.dds|All files|*.*";
|
||||
//
|
||||
// FileSaveAsMenu
|
||||
// OpenDDSFileDialog
|
||||
//
|
||||
this.FileSaveAsMenu.Image = ((System.Drawing.Image)(resources.GetObject("FileSaveAsMenu.Image")));
|
||||
this.FileSaveAsMenu.Name = "FileSaveAsMenu";
|
||||
this.FileSaveAsMenu.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.S)));
|
||||
this.FileSaveAsMenu.Size = new System.Drawing.Size(196, 22);
|
||||
this.FileSaveAsMenu.Text = "Save As...";
|
||||
this.FileSaveAsMenu.Click += new System.EventHandler(this.FileSaveAsMenu_Click);
|
||||
this.OpenDDSFileDialog.Filter = "DDS files|*.dds|All files|*.*";
|
||||
//
|
||||
// ToolbarSaveAsMenu
|
||||
// SaveYTDFileDialog
|
||||
//
|
||||
this.ToolbarSaveAsMenu.Image = ((System.Drawing.Image)(resources.GetObject("ToolbarSaveAsMenu.Image")));
|
||||
this.ToolbarSaveAsMenu.Name = "ToolbarSaveAsMenu";
|
||||
this.ToolbarSaveAsMenu.Size = new System.Drawing.Size(152, 22);
|
||||
this.ToolbarSaveAsMenu.Text = "Save as...";
|
||||
this.ToolbarSaveAsMenu.Click += new System.EventHandler(this.ToolbarSaveAsMenu_Click);
|
||||
//
|
||||
// ToolbarSaveAllMenu
|
||||
//
|
||||
this.ToolbarSaveAllMenu.Image = ((System.Drawing.Image)(resources.GetObject("ToolbarSaveAllMenu.Image")));
|
||||
this.ToolbarSaveAllMenu.Name = "ToolbarSaveAllMenu";
|
||||
this.ToolbarSaveAllMenu.Size = new System.Drawing.Size(152, 22);
|
||||
this.ToolbarSaveAllMenu.Text = "Save All...";
|
||||
this.ToolbarSaveAllMenu.Click += new System.EventHandler(this.ToolbarSaveAllMenu_Click);
|
||||
this.SaveYTDFileDialog.Filter = "YTD files|*.ytd|All files|*.*";
|
||||
//
|
||||
// YtdForm
|
||||
//
|
||||
@ -494,11 +582,20 @@
|
||||
private System.Windows.Forms.Panel SelTexturePanel;
|
||||
private System.Windows.Forms.Label label1;
|
||||
private System.Windows.Forms.ComboBox SelTextureZoomCombo;
|
||||
private System.Windows.Forms.ToolStripMenuItem FileSaveAllMenu;
|
||||
private System.Windows.Forms.SaveFileDialog SaveFileDialog;
|
||||
private System.Windows.Forms.ToolStripMenuItem FileSaveAllTexturesMenu;
|
||||
private System.Windows.Forms.SaveFileDialog SaveDDSFileDialog;
|
||||
private System.Windows.Forms.FolderBrowserDialog FolderBrowserDialog;
|
||||
private System.Windows.Forms.ToolStripMenuItem FileSaveMenu;
|
||||
private System.Windows.Forms.ToolStripMenuItem ToolbarSaveMenu;
|
||||
private System.Windows.Forms.ToolStripMenuItem ToolbarSaveAllTexturesMenu;
|
||||
private System.Windows.Forms.Button ReplaceTextureButton;
|
||||
private System.Windows.Forms.Button RemoveTextureButton;
|
||||
private System.Windows.Forms.Button AddTextureButton;
|
||||
private System.Windows.Forms.OpenFileDialog OpenDDSFileDialog;
|
||||
private System.Windows.Forms.ToolStripMenuItem FileSaveAsMenu;
|
||||
private System.Windows.Forms.ToolStripMenuItem FileSaveTextureAsMenu;
|
||||
private System.Windows.Forms.ToolStripMenuItem ToolbarSaveAsMenu;
|
||||
private System.Windows.Forms.ToolStripMenuItem ToolbarSaveAllMenu;
|
||||
private System.Windows.Forms.ToolStripMenuItem ToolbarSaveTextureAsMenu;
|
||||
private System.Windows.Forms.SaveFileDialog SaveYTDFileDialog;
|
||||
}
|
||||
}
|
@ -17,15 +17,20 @@ namespace CodeWalker.Forms
|
||||
{
|
||||
public partial class YtdForm : Form
|
||||
{
|
||||
private string fileName;
|
||||
private string FileName;
|
||||
private YtdFile Ytd { get; set; }
|
||||
private TextureDictionary TexDict { get; set; }
|
||||
private Texture CurrentTexture = null;
|
||||
private float CurrentZoom = 0.0f; //1.0 = 100%, 0.0 = stretch
|
||||
private bool Modified = false;
|
||||
private ExploreForm ExploreForm = null;
|
||||
private ModelForm ModelForm = null;
|
||||
|
||||
|
||||
public YtdForm()
|
||||
public YtdForm(ExploreForm exploreForm = null, ModelForm modelForm = null)
|
||||
{
|
||||
ExploreForm = exploreForm;
|
||||
ModelForm = modelForm;
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
@ -34,18 +39,18 @@ namespace CodeWalker.Forms
|
||||
{
|
||||
Ytd = ytd;
|
||||
|
||||
fileName = ytd?.Name;
|
||||
if (string.IsNullOrEmpty(fileName))
|
||||
FileName = ytd?.Name;
|
||||
if (string.IsNullOrEmpty(FileName))
|
||||
{
|
||||
fileName = ytd?.RpfFileEntry?.Name;
|
||||
FileName = ytd?.RpfFileEntry?.Name;
|
||||
}
|
||||
|
||||
LoadTexDict(ytd.TextureDict, fileName);
|
||||
LoadTexDict(ytd.TextureDict, FileName);
|
||||
}
|
||||
public void LoadTexDict(TextureDictionary texdict, string filename)
|
||||
{
|
||||
TexDict = texdict;
|
||||
fileName = filename;
|
||||
FileName = filename;
|
||||
|
||||
TexturesListView.Items.Clear();
|
||||
SelTexturePictureBox.Image = null;
|
||||
@ -82,6 +87,7 @@ namespace CodeWalker.Forms
|
||||
|
||||
|
||||
UpdateFormTitle();
|
||||
UpdateSaveYTDAs();
|
||||
}
|
||||
|
||||
private string GetTexCountStr()
|
||||
@ -92,11 +98,24 @@ namespace CodeWalker.Forms
|
||||
}
|
||||
|
||||
|
||||
private void SelectTexture(Texture tex)
|
||||
{
|
||||
TexturesListView.SelectedItems.Clear();
|
||||
if (tex == null) return;
|
||||
foreach (ListViewItem lvi in TexturesListView.Items)
|
||||
{
|
||||
if (lvi.Tag == tex)
|
||||
{
|
||||
lvi.Selected = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void ShowTextureMip(Texture tex, int mip, bool mipchange)
|
||||
{
|
||||
CurrentTexture = tex;
|
||||
UpdateSaveAs();
|
||||
UpdateSaveTextureAs();
|
||||
|
||||
if (tex == null)
|
||||
{
|
||||
@ -107,10 +126,15 @@ namespace CodeWalker.Forms
|
||||
SelTextureMipTrackBar.Value = 0;
|
||||
SelTextureMipTrackBar.Maximum = 0;
|
||||
DetailsPropertyGrid.SelectedObject = null;
|
||||
RemoveTextureButton.Enabled = false;
|
||||
ReplaceTextureButton.Enabled = false;
|
||||
UpdateStatus(GetTexCountStr());
|
||||
return;
|
||||
}
|
||||
|
||||
RemoveTextureButton.Enabled = true;
|
||||
ReplaceTextureButton.Enabled = true;
|
||||
|
||||
|
||||
if (mipchange)
|
||||
{
|
||||
@ -169,10 +193,156 @@ namespace CodeWalker.Forms
|
||||
}
|
||||
|
||||
|
||||
private void AddTexture()
|
||||
{
|
||||
if (TexDict.Textures?.data_items == null) return;
|
||||
|
||||
var tex = OpenDDSFile();
|
||||
if (tex == null) return;
|
||||
|
||||
var textures = new List<Texture>();
|
||||
textures.AddRange(TexDict.Textures.data_items);
|
||||
textures.Add(tex);
|
||||
|
||||
TexDict.BuildFromTextureList(textures);
|
||||
|
||||
Modified = true;
|
||||
|
||||
LoadTexDict(TexDict, FileName);
|
||||
|
||||
SelectTexture(tex);
|
||||
|
||||
UpdateModelFormTextures();
|
||||
}
|
||||
|
||||
private void RemoveTexture()
|
||||
{
|
||||
if (TexDict?.Textures?.data_items == null) return;
|
||||
if (CurrentTexture == null) return;
|
||||
|
||||
var textures = new List<Texture>();
|
||||
foreach (var tex in TexDict.Textures.data_items)
|
||||
{
|
||||
if (tex != CurrentTexture)
|
||||
{
|
||||
textures.Add(tex);
|
||||
}
|
||||
}
|
||||
|
||||
TexDict.BuildFromTextureList(textures);
|
||||
|
||||
Modified = true;
|
||||
|
||||
LoadTexDict(TexDict, FileName);
|
||||
|
||||
SelectTexture(null);
|
||||
|
||||
UpdateModelFormTextures();
|
||||
}
|
||||
|
||||
private void ReplaceTexture()
|
||||
{
|
||||
if (TexDict?.Textures?.data_items == null) return;
|
||||
if (CurrentTexture == null) return;
|
||||
|
||||
var tex = OpenDDSFile();
|
||||
if (tex == null) return;
|
||||
|
||||
tex.Name = CurrentTexture.Name;
|
||||
tex.NameHash = CurrentTexture.NameHash;
|
||||
|
||||
var textures = new List<Texture>();
|
||||
foreach (var t in TexDict.Textures.data_items)
|
||||
{
|
||||
if (t != CurrentTexture)
|
||||
{
|
||||
textures.Add(t);
|
||||
}
|
||||
}
|
||||
textures.Add(tex);
|
||||
|
||||
TexDict.BuildFromTextureList(textures);
|
||||
|
||||
Modified = true;
|
||||
|
||||
LoadTexDict(TexDict, FileName);
|
||||
|
||||
SelectTexture(tex);
|
||||
|
||||
UpdateModelFormTextures();
|
||||
}
|
||||
|
||||
private void RenameTexture(string name)
|
||||
{
|
||||
if (string.IsNullOrEmpty(name)) return;
|
||||
if (TexDict?.Textures?.data_items == null) return;
|
||||
if (CurrentTexture == null) return;
|
||||
if (CurrentTexture.Name == name) return;
|
||||
|
||||
var tex = CurrentTexture;
|
||||
|
||||
tex.Name = name;
|
||||
tex.NameHash = JenkHash.GenHash(name.ToLowerInvariant());
|
||||
|
||||
var textures = new List<Texture>();
|
||||
textures.AddRange(TexDict.Textures.data_items);
|
||||
|
||||
TexDict.BuildFromTextureList(textures);
|
||||
|
||||
Modified = true;
|
||||
|
||||
foreach (ListViewItem lvi in TexturesListView.Items)
|
||||
{
|
||||
if (lvi.Tag == tex)
|
||||
{
|
||||
lvi.Text = tex.Name;
|
||||
lvi.ToolTipText = tex.Name;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
UpdateFormTitle();
|
||||
UpdateSaveYTDAs();
|
||||
UpdateModelFormTextures();
|
||||
}
|
||||
|
||||
|
||||
private Texture OpenDDSFile()
|
||||
{
|
||||
if (OpenDDSFileDialog.ShowDialog() != DialogResult.OK) return null;
|
||||
|
||||
var fn = OpenDDSFileDialog.FileName;
|
||||
|
||||
if (!File.Exists(fn)) return null; //couldn't find file?
|
||||
|
||||
try
|
||||
{
|
||||
var dds = File.ReadAllBytes(fn);
|
||||
var tex = DDSIO.GetTexture(dds);
|
||||
tex.Name = Path.GetFileNameWithoutExtension(fn);
|
||||
tex.NameHash = JenkHash.GenHash(tex.Name?.ToLowerInvariant());
|
||||
JenkIndex.Ensure(tex.Name?.ToLowerInvariant());
|
||||
return tex;
|
||||
}
|
||||
catch
|
||||
{
|
||||
MessageBox.Show("Unable to load " + fn + ".\nAre you sure it's a valid .dds file?");
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
private void UpdateModelFormTextures()
|
||||
{
|
||||
if (ModelForm == null) return;
|
||||
|
||||
//TODO: live update of model form view when changes have been made...
|
||||
}
|
||||
|
||||
private void UpdateFormTitle()
|
||||
{
|
||||
Text = fileName + " - Texture Dictionary - CodeWalker by dexyfex";
|
||||
Text = FileName + (Modified ? "*" : "") + " - Texture Dictionary - CodeWalker by dexyfex";
|
||||
}
|
||||
|
||||
private void UpdateStatus(string text)
|
||||
@ -211,41 +381,141 @@ namespace CodeWalker.Forms
|
||||
|
||||
|
||||
|
||||
private void UpdateSaveYTDAs()
|
||||
{
|
||||
if (Ytd == null)
|
||||
{
|
||||
FileSaveMenu.Text = "Save YTD";
|
||||
FileSaveAsMenu.Text = "Save YTD As...";
|
||||
ToolbarSaveMenu.Text = "Save YTD";
|
||||
ToolbarSaveAsMenu.Text = "Save YTD As...";
|
||||
FileSaveMenu.Enabled = false;
|
||||
FileSaveAsMenu.Enabled = false;
|
||||
ToolbarSaveMenu.Enabled = false;
|
||||
ToolbarSaveAsMenu.Enabled = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
var cansave = (ExploreForm?.EditMode ?? false);
|
||||
var s = "Save " + FileName;
|
||||
var sas = "Save " + FileName + " As...";
|
||||
FileSaveMenu.Text = s;
|
||||
FileSaveAsMenu.Text = sas;
|
||||
ToolbarSaveMenu.Text = s;
|
||||
ToolbarSaveAsMenu.Text = sas;
|
||||
FileSaveMenu.Enabled = cansave;
|
||||
FileSaveAsMenu.Enabled = true;
|
||||
ToolbarSaveMenu.Enabled = cansave;
|
||||
ToolbarSaveAsMenu.Enabled = true;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private void UpdateSaveAs()
|
||||
private void UpdateSaveTextureAs()
|
||||
{
|
||||
if (CurrentTexture == null)
|
||||
{
|
||||
FileSaveAsMenu.Text = "Save As...";
|
||||
ToolbarSaveAsMenu.Text = "Save As...";
|
||||
FileSaveAsMenu.Enabled = false;
|
||||
ToolbarSaveAsMenu.Enabled = false;
|
||||
FileSaveTextureAsMenu.Text = "Save Texture As...";
|
||||
ToolbarSaveTextureAsMenu.Text = "Save Texture As...";
|
||||
FileSaveTextureAsMenu.Enabled = false;
|
||||
ToolbarSaveTextureAsMenu.Enabled = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
string fname = CurrentTexture.Name + ".dds";
|
||||
string sas = "Save " + fname + " As...";
|
||||
FileSaveAsMenu.Text = sas;
|
||||
ToolbarSaveAsMenu.Text = sas;
|
||||
FileSaveAsMenu.Enabled = true;
|
||||
ToolbarSaveAsMenu.Enabled = true;
|
||||
FileSaveTextureAsMenu.Text = sas;
|
||||
ToolbarSaveTextureAsMenu.Text = sas;
|
||||
FileSaveTextureAsMenu.Enabled = true;
|
||||
ToolbarSaveTextureAsMenu.Enabled = true;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private void SaveAs()
|
||||
|
||||
private void SaveYTD(bool saveas = false)
|
||||
{
|
||||
if (Ytd == null) return;
|
||||
if (!(ExploreForm?.EditMode ?? false))
|
||||
{
|
||||
saveas = true;
|
||||
}
|
||||
|
||||
var isinrpf = false;
|
||||
var rpfFileEntry = Ytd.RpfFileEntry;
|
||||
if (rpfFileEntry == null)
|
||||
{
|
||||
saveas = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (rpfFileEntry?.Parent != null)
|
||||
{
|
||||
if (!saveas)
|
||||
{
|
||||
isinrpf = true;
|
||||
if (!rpfFileEntry.Path.ToLowerInvariant().StartsWith("mods"))
|
||||
{
|
||||
if (MessageBox.Show("This file is NOT located in the mods folder - Are you SURE you want to save this file?\r\nWARNING: This could cause permanent damage to your game!!!", "WARNING: Are you sure about this?", MessageBoxButtons.YesNo) != DialogResult.Yes)
|
||||
{
|
||||
saveas = true;//that was a close one
|
||||
isinrpf = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (!string.IsNullOrEmpty(rpfFileEntry?.Path))
|
||||
{
|
||||
isinrpf = false; //saving direct to filesystem in RPF explorer...
|
||||
}
|
||||
else
|
||||
{
|
||||
saveas = true;//this probably shouldn't happen
|
||||
}
|
||||
}
|
||||
|
||||
var data = Ytd.Save();
|
||||
|
||||
if (saveas) //save direct to filesystem in external location
|
||||
{
|
||||
SaveYTDFileDialog.FileName = FileName;
|
||||
if (SaveYTDFileDialog.ShowDialog() != DialogResult.OK) return;
|
||||
string fpath = SaveYTDFileDialog.FileName;
|
||||
File.WriteAllBytes(fpath, data);
|
||||
}
|
||||
else if (!isinrpf) //save direct to filesystem in RPF explorer
|
||||
{
|
||||
File.WriteAllBytes(rpfFileEntry.Path, data);
|
||||
ExploreForm?.RefreshMainListViewInvoke(); //update the file details in explorer...
|
||||
}
|
||||
else //save to RPF...
|
||||
{
|
||||
if (!(ExploreForm?.EnsureRpfValidEncryption(rpfFileEntry.File) ?? false))
|
||||
{
|
||||
MessageBox.Show("Unable to save file, RPF encryption needs to be OPEN for this operation!");
|
||||
return;
|
||||
}
|
||||
|
||||
Ytd.RpfFileEntry = RpfFile.CreateFile(rpfFileEntry.Parent, rpfFileEntry.Name, data);
|
||||
ExploreForm?.RefreshMainListViewInvoke(); //update the file details in explorer...
|
||||
}
|
||||
|
||||
Modified = false;
|
||||
UpdateStatus("YTD file saved successfully at " + DateTime.Now.ToString());
|
||||
UpdateFormTitle();
|
||||
}
|
||||
|
||||
private void SaveTextureAs()
|
||||
{
|
||||
if (CurrentTexture == null) return;
|
||||
string fname = CurrentTexture.Name + ".dds";
|
||||
SaveFileDialog.FileName = fname;
|
||||
if (SaveFileDialog.ShowDialog() != DialogResult.OK) return;
|
||||
string fpath = SaveFileDialog.FileName;
|
||||
SaveDDSFileDialog.FileName = fname;
|
||||
if (SaveDDSFileDialog.ShowDialog() != DialogResult.OK) return;
|
||||
string fpath = SaveDDSFileDialog.FileName;
|
||||
byte[] dds = DDSIO.GetDDSFile(CurrentTexture);
|
||||
File.WriteAllBytes(fpath, dds);
|
||||
}
|
||||
|
||||
private void SaveAll()
|
||||
private void SaveAllTextures()
|
||||
{
|
||||
if (TexDict?.Textures?.data_items == null) return;
|
||||
if (FolderBrowserDialog.ShowDialogNew() != DialogResult.OK) return;
|
||||
@ -305,29 +575,76 @@ namespace CodeWalker.Forms
|
||||
UpdateZoom();
|
||||
}
|
||||
|
||||
private void FileSaveAllMenu_Click(object sender, EventArgs e)
|
||||
private void FileSaveMenu_Click(object sender, EventArgs e)
|
||||
{
|
||||
SaveAll();
|
||||
SaveYTD();
|
||||
}
|
||||
|
||||
private void FileSaveAsMenu_Click(object sender, EventArgs e)
|
||||
{
|
||||
SaveAs();
|
||||
SaveYTD(true);
|
||||
}
|
||||
|
||||
private void FileSaveTextureAsMenu_Click(object sender, EventArgs e)
|
||||
{
|
||||
SaveTextureAs();
|
||||
}
|
||||
|
||||
private void FileSaveAllTexturesMenu_Click(object sender, EventArgs e)
|
||||
{
|
||||
SaveAllTextures();
|
||||
}
|
||||
|
||||
private void SaveButton_ButtonClick(object sender, EventArgs e)
|
||||
{
|
||||
SaveAs();
|
||||
if (Ytd != null)
|
||||
{
|
||||
SaveYTD();
|
||||
}
|
||||
else
|
||||
{
|
||||
SaveTextureAs();
|
||||
}
|
||||
}
|
||||
|
||||
private void ToolbarSaveMenu_Click(object sender, EventArgs e)
|
||||
{
|
||||
SaveYTD();
|
||||
}
|
||||
|
||||
private void ToolbarSaveAsMenu_Click(object sender, EventArgs e)
|
||||
{
|
||||
SaveAs();
|
||||
SaveYTD(true);
|
||||
}
|
||||
|
||||
private void ToolbarSaveAllMenu_Click(object sender, EventArgs e)
|
||||
private void ToolbarSaveTextureAsMenu_Click(object sender, EventArgs e)
|
||||
{
|
||||
SaveAll();
|
||||
SaveTextureAs();
|
||||
}
|
||||
|
||||
private void ToolbarSaveAllTexturesMenu_Click(object sender, EventArgs e)
|
||||
{
|
||||
SaveAllTextures();
|
||||
}
|
||||
|
||||
private void AddTextureButton_Click(object sender, EventArgs e)
|
||||
{
|
||||
AddTexture();
|
||||
}
|
||||
|
||||
private void RemoveTextureButton_Click(object sender, EventArgs e)
|
||||
{
|
||||
RemoveTexture();
|
||||
}
|
||||
|
||||
private void ReplaceTextureButton_Click(object sender, EventArgs e)
|
||||
{
|
||||
ReplaceTexture();
|
||||
}
|
||||
|
||||
private void SelTextureNameTextBox_TextChanged(object sender, EventArgs e)
|
||||
{
|
||||
RenameTexture(SelTextureNameTextBox.Text);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -121,15 +121,14 @@
|
||||
<value>17, 17</value>
|
||||
</metadata>
|
||||
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||
<data name="FileSaveAsMenu.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<data name="FileSaveMenu.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||
YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAABUSURBVDhPY/j//z9FGEx8+/btPwn4PRAbMAABigFOTk5w
|
||||
/OH9RzhGFgPRbW1tcEPIMgCEYYaQbQAIg/QQZQAyRlZDWwOIwaMGDEoDyMFwA8jH/xkAuAOq5KQIy40A
|
||||
AAAASUVORK5CYII=
|
||||
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO
|
||||
xAAADsQBlSsOGwAAAFRJREFUOE9j+P//P0UYTHz79u0/Cfg9EBswAAGKAU5OTnD84f1HOEYWA9FtbW1w
|
||||
Q8gyAIRhhpBtAAiD9BBlADJGVkNbA4jBowYMSgPIwXADyMf/GQC4A6rkpAjLjQAAAABJRU5ErkJggg==
|
||||
</value>
|
||||
</data>
|
||||
<data name="FileSaveAllMenu.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<data name="FileSaveAllTexturesMenu.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO
|
||||
wwAADsMBx2+oZAAAAHZJREFUOE/tkLENwCAMBBkpMzCcF2IwgmTRJnpiSyhgQ5EyLx128VzhYKXWejlk
|
||||
@ -161,15 +160,14 @@
|
||||
K0QAIeQTi/cp4B9tCZE2c6oRhQAAAABJRU5ErkJggg==
|
||||
</value>
|
||||
</data>
|
||||
<data name="ToolbarSaveAsMenu.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<data name="ToolbarSaveMenu.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||
YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAABUSURBVDhPY/j//z9FGEx8+/btPwn4PRAbMAABigFOTk5w
|
||||
/OH9RzhGFgPRbW1tcEPIMgCEYYaQbQAIg/QQZQAyRlZDWwOIwaMGDEoDyMFwA8jH/xkAuAOq5KQIy40A
|
||||
AAAASUVORK5CYII=
|
||||
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO
|
||||
xAAADsQBlSsOGwAAAFRJREFUOE9j+P//P0UYTHz79u0/Cfg9EBswAAGKAU5OTnD84f1HOEYWA9FtbW1w
|
||||
Q8gyAIRhhpBtAAiD9BBlADJGVkNbA4jBowYMSgPIwXADyMf/GQC4A6rkpAjLjQAAAABJRU5ErkJggg==
|
||||
</value>
|
||||
</data>
|
||||
<data name="ToolbarSaveAllMenu.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<data name="ToolbarSaveAllTexturesMenu.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO
|
||||
wwAADsMBx2+oZAAAAHZJREFUOE/tkLENwCAMBBkpMzCcF2IwgmTRJnpiSyhgQ5EyLx128VzhYKXWejlk
|
||||
@ -212,12 +210,18 @@
|
||||
+6sAAAAASUVORK5CYII=
|
||||
</value>
|
||||
</data>
|
||||
<metadata name="SaveFileDialog.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<metadata name="SaveDDSFileDialog.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>358, 17</value>
|
||||
</metadata>
|
||||
<metadata name="FolderBrowserDialog.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>489, 17</value>
|
||||
</metadata>
|
||||
<metadata name="OpenDDSFileDialog.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>654, 17</value>
|
||||
</metadata>
|
||||
<metadata name="SaveYTDFileDialog.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>813, 17</value>
|
||||
</metadata>
|
||||
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
AAABAAMAICAAAAAAGACoDAAANgAAABAQAAAAABgAaAMAAN4MAABAQAAAAAAYACgyAABGEAAAKAAAACAA
|
||||
|
Loading…
Reference in New Issue
Block a user