diff --git a/About.Designer.cs b/About.Designer.cs
index 2cd6f69..7ce49f2 100644
--- a/About.Designer.cs
+++ b/About.Designer.cs
@@ -1,4 +1,4 @@
-namespace NBTPlus
+namespace NBTExplorer
{
partial class About
{
@@ -28,6 +28,8 @@
private void InitializeComponent ()
{
this.linkLabel1 = new System.Windows.Forms.LinkLabel();
+ this.pictureBox1 = new System.Windows.Forms.PictureBox();
+ ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit();
this.SuspendLayout();
//
// linkLabel1
@@ -35,25 +37,37 @@
this.linkLabel1.AutoSize = true;
this.linkLabel1.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.linkLabel1.LinkArea = new System.Windows.Forms.LinkArea(0, 0);
- this.linkLabel1.Location = new System.Drawing.Point(97, 9);
+ this.linkLabel1.Location = new System.Drawing.Point(96, 12);
this.linkLabel1.Name = "linkLabel1";
this.linkLabel1.Size = new System.Drawing.Size(245, 120);
this.linkLabel1.TabIndex = 0;
this.linkLabel1.Text = "NBTExplorer\r\nCopyright ©2011 Justin Aquadro\r\n\r\nNBTExplorer is based on NBTEdit by" +
" copyboy\r\nFugue icon set: p.yusukekamiyamane.com\r\n\r\nEmail: jaquadro@gmail.com\r\nN" +
"BTExplorer Github Project Page";
+ //
+ // pictureBox1
+ //
+ this.pictureBox1.Image = global::NBTExplorer.Properties.Resources.Dead_Bush;
+ this.pictureBox1.Location = new System.Drawing.Point(12, 12);
+ this.pictureBox1.Name = "pictureBox1";
+ this.pictureBox1.Size = new System.Drawing.Size(78, 78);
+ this.pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;
+ this.pictureBox1.TabIndex = 1;
+ this.pictureBox1.TabStop = false;
//
// About
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
- this.ClientSize = new System.Drawing.Size(365, 138);
+ this.ClientSize = new System.Drawing.Size(350, 144);
+ this.Controls.Add(this.pictureBox1);
this.Controls.Add(this.linkLabel1);
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
this.MaximizeBox = false;
this.MinimizeBox = false;
this.Name = "About";
this.Text = "About NBTExplorer";
+ ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit();
this.ResumeLayout(false);
this.PerformLayout();
@@ -62,6 +76,7 @@
#endregion
private System.Windows.Forms.LinkLabel linkLabel1;
+ private System.Windows.Forms.PictureBox pictureBox1;
}
diff --git a/About.cs b/About.cs
index bf9e8ee..cdd45f1 100644
--- a/About.cs
+++ b/About.cs
@@ -7,7 +7,7 @@ using System.Linq;
using System.Text;
using System.Windows.Forms;
-namespace NBTPlus
+namespace NBTExplorer
{
public partial class About : Form
{
diff --git a/EditValue.Designer.cs b/EditValue.Designer.cs
index 7c96167..b64fa14 100644
--- a/EditValue.Designer.cs
+++ b/EditValue.Designer.cs
@@ -1,4 +1,4 @@
-namespace NBTPlus
+namespace NBTExplorer
{
partial class EditValue
{
diff --git a/EditValue.cs b/EditValue.cs
index aa6be80..fc8fc6c 100644
--- a/EditValue.cs
+++ b/EditValue.cs
@@ -8,7 +8,7 @@ using System.Text;
using System.Windows.Forms;
using Substrate.Nbt;
-namespace NBTPlus
+namespace NBTExplorer
{
public enum EditValueType
{
diff --git a/Find.Designer.cs b/Find.Designer.cs
new file mode 100644
index 0000000..75bcd3b
--- /dev/null
+++ b/Find.Designer.cs
@@ -0,0 +1,133 @@
+namespace NBTExplorer
+{
+ partial class Find
+ {
+ ///
+ /// Required designer variable.
+ ///
+ private System.ComponentModel.IContainer components = null;
+
+ ///
+ /// Clean up any resources being used.
+ ///
+ /// true if managed resources should be disposed; otherwise, false.
+ protected override void Dispose (bool disposing)
+ {
+ if (disposing && (components != null)) {
+ components.Dispose();
+ }
+ base.Dispose(disposing);
+ }
+
+ #region Windows Form Designer generated code
+
+ ///
+ /// Required method for Designer support - do not modify
+ /// the contents of this method with the code editor.
+ ///
+ private void InitializeComponent ()
+ {
+ this._cbName = new System.Windows.Forms.CheckBox();
+ this._cbValue = new System.Windows.Forms.CheckBox();
+ this._textName = new System.Windows.Forms.TextBox();
+ this._textValue = new System.Windows.Forms.TextBox();
+ this._buttonFind = new System.Windows.Forms.Button();
+ this._buttonCancel = new System.Windows.Forms.Button();
+ this.SuspendLayout();
+ //
+ // _cbName
+ //
+ this._cbName.AutoSize = true;
+ this._cbName.Checked = true;
+ this._cbName.CheckState = System.Windows.Forms.CheckState.Checked;
+ this._cbName.Location = new System.Drawing.Point(13, 13);
+ this._cbName.Name = "_cbName";
+ this._cbName.Size = new System.Drawing.Size(57, 17);
+ this._cbName.TabIndex = 0;
+ this._cbName.Text = "Name:";
+ this._cbName.UseVisualStyleBackColor = true;
+ //
+ // _cbValue
+ //
+ this._cbValue.AutoSize = true;
+ this._cbValue.Location = new System.Drawing.Point(13, 37);
+ this._cbValue.Name = "_cbValue";
+ this._cbValue.Size = new System.Drawing.Size(56, 17);
+ this._cbValue.TabIndex = 1;
+ this._cbValue.Text = "Value:";
+ this._cbValue.UseVisualStyleBackColor = true;
+ //
+ // _textName
+ //
+ this._textName.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+ | System.Windows.Forms.AnchorStyles.Right)));
+ this._textName.Location = new System.Drawing.Point(76, 12);
+ this._textName.Name = "_textName";
+ this._textName.Size = new System.Drawing.Size(273, 20);
+ this._textName.TabIndex = 2;
+ //
+ // _textValue
+ //
+ this._textValue.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+ | System.Windows.Forms.AnchorStyles.Right)));
+ this._textValue.Location = new System.Drawing.Point(76, 34);
+ this._textValue.Name = "_textValue";
+ this._textValue.Size = new System.Drawing.Size(273, 20);
+ this._textValue.TabIndex = 3;
+ //
+ // _buttonFind
+ //
+ this._buttonFind.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
+ this._buttonFind.Location = new System.Drawing.Point(274, 65);
+ this._buttonFind.Name = "_buttonFind";
+ this._buttonFind.Size = new System.Drawing.Size(75, 23);
+ this._buttonFind.TabIndex = 4;
+ this._buttonFind.Text = "Find";
+ this._buttonFind.UseVisualStyleBackColor = true;
+ this._buttonFind.Click += new System.EventHandler(this._buttonFind_Click);
+ //
+ // _buttonCancel
+ //
+ this._buttonCancel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
+ this._buttonCancel.DialogResult = System.Windows.Forms.DialogResult.Cancel;
+ this._buttonCancel.Location = new System.Drawing.Point(193, 65);
+ this._buttonCancel.Name = "_buttonCancel";
+ this._buttonCancel.Size = new System.Drawing.Size(75, 23);
+ this._buttonCancel.TabIndex = 5;
+ this._buttonCancel.Text = "Cancel";
+ this._buttonCancel.UseVisualStyleBackColor = true;
+ this._buttonCancel.Click += new System.EventHandler(this._buttonCancel_Click);
+ //
+ // Find
+ //
+ this.AcceptButton = this._buttonFind;
+ this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ this.CancelButton = this._buttonCancel;
+ this.ClientSize = new System.Drawing.Size(361, 100);
+ this.Controls.Add(this._buttonCancel);
+ this.Controls.Add(this._buttonFind);
+ this.Controls.Add(this._textValue);
+ this.Controls.Add(this._textName);
+ this.Controls.Add(this._cbValue);
+ this.Controls.Add(this._cbName);
+ this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
+ this.MaximizeBox = false;
+ this.MinimizeBox = false;
+ this.Name = "Find";
+ this.Text = "Find";
+ this.ResumeLayout(false);
+ this.PerformLayout();
+
+ }
+
+ #endregion
+
+ private System.Windows.Forms.CheckBox _cbName;
+ private System.Windows.Forms.CheckBox _cbValue;
+ private System.Windows.Forms.TextBox _textName;
+ private System.Windows.Forms.TextBox _textValue;
+ private System.Windows.Forms.Button _buttonFind;
+ private System.Windows.Forms.Button _buttonCancel;
+ }
+}
\ No newline at end of file
diff --git a/Find.cs b/Find.cs
new file mode 100644
index 0000000..6420758
--- /dev/null
+++ b/Find.cs
@@ -0,0 +1,51 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Data;
+using System.Drawing;
+using System.Linq;
+using System.Text;
+using System.Windows.Forms;
+
+namespace NBTExplorer
+{
+ public partial class Find : Form
+ {
+ public Find ()
+ {
+ InitializeComponent();
+ }
+
+ public bool MatchName
+ {
+ get { return _cbName.Checked; }
+ }
+
+ public bool MatchValue
+ {
+ get { return _cbValue.Checked; }
+ }
+
+ public string NameToken
+ {
+ get { return _textName.Text; }
+ }
+
+ public string ValueToken
+ {
+ get { return _textValue.Text; }
+ }
+
+ private void _buttonFind_Click (object sender, EventArgs e)
+ {
+ DialogResult = DialogResult.OK;
+ Close();
+ }
+
+ private void _buttonCancel_Click (object sender, EventArgs e)
+ {
+ DialogResult = DialogResult.Cancel;
+ Close();
+ }
+ }
+}
diff --git a/Find.resx b/Find.resx
new file mode 100644
index 0000000..1af7de1
--- /dev/null
+++ b/Find.resx
@@ -0,0 +1,120 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
\ No newline at end of file
diff --git a/Form1.Designer.cs b/Form1.Designer.cs
index c6211af..f647e17 100644
--- a/Form1.Designer.cs
+++ b/Form1.Designer.cs
@@ -1,4 +1,4 @@
-namespace NBTPlus
+namespace NBTExplorer
{
partial class Form1
{
@@ -31,23 +31,30 @@
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Form1));
this.menuStrip1 = new System.Windows.Forms.MenuStrip();
this.fileToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+ this.openToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+ this.openFolderToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.toolStripSeparator3 = new System.Windows.Forms.ToolStripSeparator();
+ this.saveToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.toolStripSeparator4 = new System.Windows.Forms.ToolStripSeparator();
- this.editToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+ this.exitToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.searchToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+ this.findToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+ this.findNextToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.helpToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+ this.aboutToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.toolStripContainer1 = new System.Windows.Forms.ToolStripContainer();
+ this.statusStrip1 = new System.Windows.Forms.StatusStrip();
+ this.toolStripStatusLabel1 = new System.Windows.Forms.ToolStripStatusLabel();
this._nodeTree = new System.Windows.Forms.TreeView();
this.imageList1 = new System.Windows.Forms.ImageList(this.components);
this.toolStrip1 = new System.Windows.Forms.ToolStrip();
- this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator();
- this.toolStripSeparator2 = new System.Windows.Forms.ToolStripSeparator();
- this._nodeContainerContext = new System.Windows.Forms.ContextMenuStrip(this.components);
this._buttonOpen = new System.Windows.Forms.ToolStripButton();
this._buttonSave = new System.Windows.Forms.ToolStripButton();
+ this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator();
this._buttonRename = new System.Windows.Forms.ToolStripButton();
this._buttonEdit = new System.Windows.Forms.ToolStripButton();
this._buttonDelete = new System.Windows.Forms.ToolStripButton();
+ this.toolStripSeparator2 = new System.Windows.Forms.ToolStripSeparator();
this._buttonAddTagByte = new System.Windows.Forms.ToolStripButton();
this._buttonAddTagShort = new System.Windows.Forms.ToolStripButton();
this._buttonAddTagInt = new System.Windows.Forms.ToolStripButton();
@@ -58,18 +65,16 @@
this._buttonAddTagString = new System.Windows.Forms.ToolStripButton();
this._buttonAddTagList = new System.Windows.Forms.ToolStripButton();
this._buttonAddTagCompound = new System.Windows.Forms.ToolStripButton();
- this.openToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
- this.openFolderToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
- this.saveToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
- this.saveItemAsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
- this.exitToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
- this.aboutToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+ this.toolStripSeparator5 = new System.Windows.Forms.ToolStripSeparator();
+ this._buttonFindNext = new System.Windows.Forms.ToolStripButton();
+ this._nodeContainerContext = new System.Windows.Forms.ContextMenuStrip(this.components);
this.openSubTreeToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.saveItemToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.menuStrip1.SuspendLayout();
this.toolStripContainer1.ContentPanel.SuspendLayout();
this.toolStripContainer1.TopToolStripPanel.SuspendLayout();
this.toolStripContainer1.SuspendLayout();
+ this.statusStrip1.SuspendLayout();
this.toolStrip1.SuspendLayout();
this._nodeContainerContext.SuspendLayout();
this.SuspendLayout();
@@ -78,7 +83,6 @@
//
this.menuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.fileToolStripMenuItem,
- this.editToolStripMenuItem,
this.searchToolStripMenuItem,
this.helpToolStripMenuItem});
this.menuStrip1.Location = new System.Drawing.Point(0, 0);
@@ -94,35 +98,86 @@
this.openFolderToolStripMenuItem,
this.toolStripSeparator3,
this.saveToolStripMenuItem,
- this.saveItemAsToolStripMenuItem,
this.toolStripSeparator4,
this.exitToolStripMenuItem});
this.fileToolStripMenuItem.Name = "fileToolStripMenuItem";
this.fileToolStripMenuItem.Size = new System.Drawing.Size(37, 20);
this.fileToolStripMenuItem.Text = "&File";
//
+ // openToolStripMenuItem
+ //
+ this.openToolStripMenuItem.Image = global::NBTExplorer.Properties.Resources.folder_open_document;
+ this.openToolStripMenuItem.Name = "openToolStripMenuItem";
+ this.openToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.O)));
+ this.openToolStripMenuItem.Size = new System.Drawing.Size(223, 22);
+ this.openToolStripMenuItem.Text = "&Open...";
+ this.openToolStripMenuItem.Click += new System.EventHandler(this.openToolStripMenuItem_Click);
+ //
+ // openFolderToolStripMenuItem
+ //
+ this.openFolderToolStripMenuItem.Image = global::NBTExplorer.Properties.Resources.folder_open;
+ this.openFolderToolStripMenuItem.Name = "openFolderToolStripMenuItem";
+ this.openFolderToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)(((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.Shift)
+ | System.Windows.Forms.Keys.O)));
+ this.openFolderToolStripMenuItem.Size = new System.Drawing.Size(223, 22);
+ this.openFolderToolStripMenuItem.Text = "Open &Folder...";
+ this.openFolderToolStripMenuItem.Click += new System.EventHandler(this.openFolderToolStripMenuItem_Click);
+ //
// toolStripSeparator3
//
this.toolStripSeparator3.Name = "toolStripSeparator3";
this.toolStripSeparator3.Size = new System.Drawing.Size(220, 6);
//
+ // saveToolStripMenuItem
+ //
+ this.saveToolStripMenuItem.Image = global::NBTExplorer.Properties.Resources.disk;
+ this.saveToolStripMenuItem.Name = "saveToolStripMenuItem";
+ this.saveToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.S)));
+ this.saveToolStripMenuItem.Size = new System.Drawing.Size(223, 22);
+ this.saveToolStripMenuItem.Text = "&Save";
+ this.saveToolStripMenuItem.Click += new System.EventHandler(this.saveToolStripMenuItem_Click);
+ //
// toolStripSeparator4
//
this.toolStripSeparator4.Name = "toolStripSeparator4";
this.toolStripSeparator4.Size = new System.Drawing.Size(220, 6);
//
- // editToolStripMenuItem
+ // exitToolStripMenuItem
//
- this.editToolStripMenuItem.Name = "editToolStripMenuItem";
- this.editToolStripMenuItem.Size = new System.Drawing.Size(39, 20);
- this.editToolStripMenuItem.Text = "&Edit";
+ this.exitToolStripMenuItem.Image = global::NBTExplorer.Properties.Resources.door;
+ this.exitToolStripMenuItem.Name = "exitToolStripMenuItem";
+ this.exitToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Alt | System.Windows.Forms.Keys.F4)));
+ this.exitToolStripMenuItem.Size = new System.Drawing.Size(223, 22);
+ this.exitToolStripMenuItem.Text = "E&xit";
+ this.exitToolStripMenuItem.Click += new System.EventHandler(this.exitToolStripMenuItem_Click);
//
// searchToolStripMenuItem
//
+ this.searchToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
+ this.findToolStripMenuItem,
+ this.findNextToolStripMenuItem});
this.searchToolStripMenuItem.Name = "searchToolStripMenuItem";
this.searchToolStripMenuItem.Size = new System.Drawing.Size(54, 20);
this.searchToolStripMenuItem.Text = "&Search";
//
+ // findToolStripMenuItem
+ //
+ this.findToolStripMenuItem.Image = global::NBTExplorer.Properties.Resources.binocular;
+ this.findToolStripMenuItem.Name = "findToolStripMenuItem";
+ this.findToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.F)));
+ this.findToolStripMenuItem.Size = new System.Drawing.Size(152, 22);
+ this.findToolStripMenuItem.Text = "Find...";
+ this.findToolStripMenuItem.Click += new System.EventHandler(this.findToolStripMenuItem_Click);
+ //
+ // findNextToolStripMenuItem
+ //
+ this.findNextToolStripMenuItem.Image = global::NBTExplorer.Properties.Resources.binocular__arrow;
+ this.findNextToolStripMenuItem.Name = "findNextToolStripMenuItem";
+ this.findNextToolStripMenuItem.ShortcutKeys = System.Windows.Forms.Keys.F3;
+ this.findNextToolStripMenuItem.Size = new System.Drawing.Size(152, 22);
+ this.findNextToolStripMenuItem.Text = "Find Next";
+ this.findNextToolStripMenuItem.Click += new System.EventHandler(this.findNextToolStripMenuItem_Click);
+ //
// helpToolStripMenuItem
//
this.helpToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
@@ -131,11 +186,21 @@
this.helpToolStripMenuItem.Size = new System.Drawing.Size(44, 20);
this.helpToolStripMenuItem.Text = "&Help";
//
+ // aboutToolStripMenuItem
+ //
+ this.aboutToolStripMenuItem.Image = global::NBTExplorer.Properties.Resources.information_frame;
+ this.aboutToolStripMenuItem.Name = "aboutToolStripMenuItem";
+ this.aboutToolStripMenuItem.ShortcutKeys = System.Windows.Forms.Keys.F1;
+ this.aboutToolStripMenuItem.Size = new System.Drawing.Size(126, 22);
+ this.aboutToolStripMenuItem.Text = "&About";
+ this.aboutToolStripMenuItem.Click += new System.EventHandler(this.aboutToolStripMenuItem_Click);
+ //
// toolStripContainer1
//
//
// toolStripContainer1.ContentPanel
//
+ this.toolStripContainer1.ContentPanel.Controls.Add(this.statusStrip1);
this.toolStripContainer1.ContentPanel.Controls.Add(this._nodeTree);
this.toolStripContainer1.ContentPanel.Size = new System.Drawing.Size(562, 351);
this.toolStripContainer1.Dock = System.Windows.Forms.DockStyle.Fill;
@@ -149,6 +214,25 @@
//
this.toolStripContainer1.TopToolStripPanel.Controls.Add(this.toolStrip1);
//
+ // statusStrip1
+ //
+ this.statusStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
+ this.toolStripStatusLabel1});
+ this.statusStrip1.Location = new System.Drawing.Point(0, 329);
+ this.statusStrip1.Name = "statusStrip1";
+ this.statusStrip1.Size = new System.Drawing.Size(562, 22);
+ this.statusStrip1.SizingGrip = false;
+ this.statusStrip1.TabIndex = 1;
+ this.statusStrip1.Text = "statusStrip1";
+ this.statusStrip1.Visible = false;
+ //
+ // toolStripStatusLabel1
+ //
+ this.toolStripStatusLabel1.Name = "toolStripStatusLabel1";
+ this.toolStripStatusLabel1.Size = new System.Drawing.Size(547, 17);
+ this.toolStripStatusLabel1.Spring = true;
+ this.toolStripStatusLabel1.Text = "Please wait...";
+ //
// _nodeTree
//
this._nodeTree.Dock = System.Windows.Forms.DockStyle.Fill;
@@ -199,31 +283,15 @@
this._buttonAddTagByteArray,
this._buttonAddTagString,
this._buttonAddTagList,
- this._buttonAddTagCompound});
+ this._buttonAddTagCompound,
+ this.toolStripSeparator5,
+ this._buttonFindNext});
this.toolStrip1.Location = new System.Drawing.Point(0, 0);
this.toolStrip1.Name = "toolStrip1";
this.toolStrip1.Size = new System.Drawing.Size(562, 25);
this.toolStrip1.Stretch = true;
this.toolStrip1.TabIndex = 0;
//
- // toolStripSeparator1
- //
- this.toolStripSeparator1.Name = "toolStripSeparator1";
- this.toolStripSeparator1.Size = new System.Drawing.Size(6, 25);
- //
- // toolStripSeparator2
- //
- this.toolStripSeparator2.Name = "toolStripSeparator2";
- this.toolStripSeparator2.Size = new System.Drawing.Size(6, 25);
- //
- // _nodeContainerContext
- //
- this._nodeContainerContext.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
- this.openSubTreeToolStripMenuItem,
- this.saveItemToolStripMenuItem});
- this._nodeContainerContext.Name = "contextMenuStrip1";
- this._nodeContainerContext.Size = new System.Drawing.Size(180, 48);
- //
// _buttonOpen
//
this._buttonOpen.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
@@ -244,6 +312,11 @@
this._buttonSave.Text = "Save All Modified Tags";
this._buttonSave.Click += new System.EventHandler(this._buttonSave_Click);
//
+ // toolStripSeparator1
+ //
+ this.toolStripSeparator1.Name = "toolStripSeparator1";
+ this.toolStripSeparator1.Size = new System.Drawing.Size(6, 25);
+ //
// _buttonRename
//
this._buttonRename.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
@@ -274,6 +347,11 @@
this._buttonDelete.Text = "Delete Tag";
this._buttonDelete.Click += new System.EventHandler(this._buttonDelete_Click);
//
+ // toolStripSeparator2
+ //
+ this.toolStripSeparator2.Name = "toolStripSeparator2";
+ this.toolStripSeparator2.Size = new System.Drawing.Size(6, 25);
+ //
// _buttonAddTagByte
//
this._buttonAddTagByte.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
@@ -374,69 +452,39 @@
this._buttonAddTagCompound.Text = "Add Compound Tag";
this._buttonAddTagCompound.Click += new System.EventHandler(this._buttonAddTagCompound_Click);
//
- // openToolStripMenuItem
+ // toolStripSeparator5
//
- this.openToolStripMenuItem.Image = global::NBTPlus.Properties.Resources.folder_open_document;
- this.openToolStripMenuItem.Name = "openToolStripMenuItem";
- this.openToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.O)));
- this.openToolStripMenuItem.Size = new System.Drawing.Size(223, 22);
- this.openToolStripMenuItem.Text = "&Open...";
- this.openToolStripMenuItem.Click += new System.EventHandler(this.openToolStripMenuItem_Click);
+ this.toolStripSeparator5.Name = "toolStripSeparator5";
+ this.toolStripSeparator5.Size = new System.Drawing.Size(6, 25);
//
- // openFolderToolStripMenuItem
+ // _buttonFindNext
//
- this.openFolderToolStripMenuItem.Image = global::NBTPlus.Properties.Resources.folder_open;
- this.openFolderToolStripMenuItem.Name = "openFolderToolStripMenuItem";
- this.openFolderToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)(((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.Shift)
- | System.Windows.Forms.Keys.O)));
- this.openFolderToolStripMenuItem.Size = new System.Drawing.Size(223, 22);
- this.openFolderToolStripMenuItem.Text = "Open &Folder...";
- this.openFolderToolStripMenuItem.Click += new System.EventHandler(this.openFolderToolStripMenuItem_Click);
+ this._buttonFindNext.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
+ this._buttonFindNext.Image = global::NBTExplorer.Properties.Resources.binocular__arrow;
+ this._buttonFindNext.ImageTransparentColor = System.Drawing.Color.Magenta;
+ this._buttonFindNext.Name = "_buttonFindNext";
+ this._buttonFindNext.Size = new System.Drawing.Size(23, 22);
+ this._buttonFindNext.Text = "Find / Find Next";
+ this._buttonFindNext.Click += new System.EventHandler(this._buttonFindNext_Click);
//
- // saveToolStripMenuItem
+ // _nodeContainerContext
//
- this.saveToolStripMenuItem.Image = global::NBTPlus.Properties.Resources.disk;
- this.saveToolStripMenuItem.Name = "saveToolStripMenuItem";
- this.saveToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.S)));
- this.saveToolStripMenuItem.Size = new System.Drawing.Size(223, 22);
- this.saveToolStripMenuItem.Text = "&Save";
- //
- // saveItemAsToolStripMenuItem
- //
- this.saveItemAsToolStripMenuItem.Image = global::NBTPlus.Properties.Resources.disk__pencil;
- this.saveItemAsToolStripMenuItem.Name = "saveItemAsToolStripMenuItem";
- this.saveItemAsToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)(((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.Shift)
- | System.Windows.Forms.Keys.S)));
- this.saveItemAsToolStripMenuItem.Size = new System.Drawing.Size(223, 22);
- this.saveItemAsToolStripMenuItem.Text = "Save Item &As...";
- //
- // exitToolStripMenuItem
- //
- this.exitToolStripMenuItem.Image = global::NBTPlus.Properties.Resources.door;
- this.exitToolStripMenuItem.Name = "exitToolStripMenuItem";
- this.exitToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Alt | System.Windows.Forms.Keys.F4)));
- this.exitToolStripMenuItem.Size = new System.Drawing.Size(223, 22);
- this.exitToolStripMenuItem.Text = "E&xit";
- //
- // aboutToolStripMenuItem
- //
- this.aboutToolStripMenuItem.Image = global::NBTPlus.Properties.Resources.information_frame;
- this.aboutToolStripMenuItem.Name = "aboutToolStripMenuItem";
- this.aboutToolStripMenuItem.ShortcutKeys = System.Windows.Forms.Keys.F1;
- this.aboutToolStripMenuItem.Size = new System.Drawing.Size(126, 22);
- this.aboutToolStripMenuItem.Text = "&About";
- this.aboutToolStripMenuItem.Click += new System.EventHandler(this.aboutToolStripMenuItem_Click);
+ this._nodeContainerContext.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
+ this.openSubTreeToolStripMenuItem,
+ this.saveItemToolStripMenuItem});
+ this._nodeContainerContext.Name = "contextMenuStrip1";
+ this._nodeContainerContext.Size = new System.Drawing.Size(180, 48);
//
// openSubTreeToolStripMenuItem
//
- this.openSubTreeToolStripMenuItem.Image = global::NBTPlus.Properties.Resources.folder_open;
+ this.openSubTreeToolStripMenuItem.Image = global::NBTExplorer.Properties.Resources.folder_open;
this.openSubTreeToolStripMenuItem.Name = "openSubTreeToolStripMenuItem";
this.openSubTreeToolStripMenuItem.Size = new System.Drawing.Size(179, 22);
this.openSubTreeToolStripMenuItem.Text = "Open Node As Root";
//
// saveItemToolStripMenuItem
//
- this.saveItemToolStripMenuItem.Image = global::NBTPlus.Properties.Resources.disk;
+ this.saveItemToolStripMenuItem.Image = global::NBTExplorer.Properties.Resources.disk;
this.saveItemToolStripMenuItem.Name = "saveItemToolStripMenuItem";
this.saveItemToolStripMenuItem.Size = new System.Drawing.Size(179, 22);
this.saveItemToolStripMenuItem.Text = "Save Node";
@@ -448,16 +496,20 @@
this.ClientSize = new System.Drawing.Size(562, 400);
this.Controls.Add(this.toolStripContainer1);
this.Controls.Add(this.menuStrip1);
+ this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
this.MainMenuStrip = this.menuStrip1;
this.Name = "Form1";
this.Text = "NBTExplorer";
this.menuStrip1.ResumeLayout(false);
this.menuStrip1.PerformLayout();
this.toolStripContainer1.ContentPanel.ResumeLayout(false);
+ this.toolStripContainer1.ContentPanel.PerformLayout();
this.toolStripContainer1.TopToolStripPanel.ResumeLayout(false);
this.toolStripContainer1.TopToolStripPanel.PerformLayout();
this.toolStripContainer1.ResumeLayout(false);
this.toolStripContainer1.PerformLayout();
+ this.statusStrip1.ResumeLayout(false);
+ this.statusStrip1.PerformLayout();
this.toolStrip1.ResumeLayout(false);
this.toolStrip1.PerformLayout();
this._nodeContainerContext.ResumeLayout(false);
@@ -470,7 +522,6 @@
private System.Windows.Forms.MenuStrip menuStrip1;
private System.Windows.Forms.ToolStripMenuItem fileToolStripMenuItem;
- private System.Windows.Forms.ToolStripMenuItem editToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem searchToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem helpToolStripMenuItem;
private System.Windows.Forms.ToolStripContainer toolStripContainer1;
@@ -502,9 +553,14 @@
private System.Windows.Forms.ToolStripMenuItem saveItemToolStripMenuItem;
private System.Windows.Forms.ToolStripSeparator toolStripSeparator3;
private System.Windows.Forms.ToolStripMenuItem saveToolStripMenuItem;
- private System.Windows.Forms.ToolStripMenuItem saveItemAsToolStripMenuItem;
private System.Windows.Forms.ToolStripSeparator toolStripSeparator4;
private System.Windows.Forms.ToolStripMenuItem exitToolStripMenuItem;
+ private System.Windows.Forms.ToolStripMenuItem findToolStripMenuItem;
+ private System.Windows.Forms.ToolStripMenuItem findNextToolStripMenuItem;
+ private System.Windows.Forms.ToolStripSeparator toolStripSeparator5;
+ private System.Windows.Forms.ToolStripButton _buttonFindNext;
+ private System.Windows.Forms.StatusStrip statusStrip1;
+ private System.Windows.Forms.ToolStripStatusLabel toolStripStatusLabel1;
}
}
diff --git a/Form1.cs b/Form1.cs
index fac5d71..e81d31c 100644
--- a/Form1.cs
+++ b/Form1.cs
@@ -10,7 +10,7 @@ using Substrate.Nbt;
using System.IO;
using Substrate.Core;
-namespace NBTPlus
+namespace NBTExplorer
{
public partial class Form1 : Form
{
@@ -285,6 +285,8 @@ namespace NBTPlus
node.Nodes.Clear();
LoadNbtStream(node, data.Region.GetChunkDataInputStream(data.X, data.Z));
+
+ data.Expanded = true;
}
public void LoadLazyNbt (TreeNode node)
@@ -297,6 +299,8 @@ namespace NBTPlus
NBTFile file = new NBTFile(data.Path);
LoadNbtStream(node, file.GetDataInputStream(data.CompressionType));
+
+ data.Expanded = true;
}
public void LoadLazyDirectory (TreeNode node)
@@ -314,6 +318,8 @@ namespace NBTPlus
foreach (string filepath in Directory.EnumerateFiles(data.Path)) {
TryLoadFile(node.Nodes, filepath);
}
+
+ data.Expanded = true;
}
public void LoadLazyRegion (TreeNode node)
@@ -324,6 +330,8 @@ namespace NBTPlus
node.Nodes.Clear();
LoadRegion(node, data.Path);
+
+ data.Expanded = true;
}
public void UnloadLazyDataNode (TreeNode node)
@@ -334,35 +342,52 @@ namespace NBTPlus
node.Nodes.Clear();
node.Nodes.Add(new TreeNode());
+
+ data.Expanded = false;
+ }
+
+ private void ExpandNode (TreeNode node)
+ {
+ if (node.Tag == null)
+ return;
+
+ if (node.Tag is DataNode) {
+ if ((node.Tag as DataNode).Expanded)
+ return;
+ }
+
+ if (node.Tag is RegionChunkData) {
+ LoadLazyChunk(node);
+ }
+ else if (node.Tag is NbtFileData) {
+ LoadLazyNbt(node);
+ }
+ else if (node.Tag is DirectoryData) {
+ LoadLazyDirectory(node);
+ }
+ else if (node.Tag is RegionData) {
+ LoadLazyRegion(node);
+ }
+ }
+
+ private void CollapseNode (TreeNode node)
+ {
+ if (node.Tag == null)
+ return;
+
+ if (node.Tag is DataNode) {
+ UnloadLazyDataNode(node);
+ }
}
private void NodeExpand (object sender, TreeViewCancelEventArgs e)
{
- if (e.Node.Tag == null)
- return;
-
- if (e.Node.Tag is RegionChunkData) {
- LoadLazyChunk(e.Node);
- }
- else if (e.Node.Tag is NbtFileData) {
- LoadLazyNbt(e.Node);
- }
- else if (e.Node.Tag is DirectoryData) {
- LoadLazyDirectory(e.Node);
- }
- else if (e.Node.Tag is RegionData) {
- LoadLazyRegion(e.Node);
- }
+ ExpandNode(e.Node);
}
private void NodeCollapse (object sender, TreeViewEventArgs e)
{
- if (e.Node.Tag == null)
- return;
-
- if (e.Node.Tag is DataNode) {
- UnloadLazyDataNode(e.Node);
- }
+ CollapseNode(e.Node);
}
private void NodeSelected (object sender, TreeViewEventArgs e)
@@ -986,6 +1011,133 @@ namespace NBTPlus
{
AddTagToNode(_nodeTree.SelectedNode, TagType.TAG_COMPOUND);
}
+
+ private void saveToolStripMenuItem_Click (object sender, EventArgs e)
+ {
+ SaveAll();
+ }
+
+ private void exitToolStripMenuItem_Click (object sender, EventArgs e)
+ {
+ Application.Exit();
+ }
+
+ private TreeNode _rootSearchNode;
+ private string _searchName;
+ private string _searchValue;
+ private IEnumerator _search;
+
+ private void Find (TreeNode node)
+ {
+ if (node == null)
+ return;
+
+ Find form = new Find();
+ if (form.ShowDialog() == DialogResult.OK) {
+ _rootSearchNode = node;
+
+ _searchName = form.MatchName ? form.NameToken : null;
+ _searchValue = form.MatchValue ? form.ValueToken : null;
+
+ _search = FindNode(node).GetEnumerator();
+
+ FindNext();
+ }
+ }
+
+ private void FindNext ()
+ {
+ if (_search == null)
+ return;
+
+ statusStrip1.Visible = true;
+ Application.DoEvents();
+
+ _nodeTree.SelectedNode = null;
+
+ if (!_search.MoveNext()) {
+ _nodeTree.SelectedNode = _rootSearchNode;
+ if (_rootSearchNode != null && _rootSearchNode.Tag is DataNode) {
+ if (_rootSearchNode.IsExpanded && !(_rootSearchNode.Tag as DataNode).Expanded) {
+ _rootSearchNode.Collapse();
+ }
+ }
+
+ statusStrip1.Visible = false;
+
+ MessageBox.Show("End of results");
+ _search = null;
+ }
+
+ statusStrip1.Visible = false;
+ }
+
+ private IEnumerable FindNode (TreeNode node)
+ {
+ if (node == null)
+ yield break;
+
+ bool expand = false;
+
+ if (node.Tag is DataNode) {
+ DataNode data = node.Tag as DataNode;
+ if (!data.Expanded) {
+ ExpandNode(node);
+ expand = true;
+ }
+ }
+
+ TagNode tag = GetTagNode(node);
+ if (tag != null) {
+ bool mName = _searchName == null;
+ bool mValue = _searchValue == null;
+
+ if (_searchName != null) {
+ string tagName = GetTagNodeName(node);
+ if (tagName != null)
+ mName = tagName.Contains(_searchName);
+ }
+ if (_searchValue != null) {
+ string tagValue = GetTagNodeText(node);
+ if (tagValue != null)
+ mValue = tagValue.Contains(_searchValue);
+ }
+
+ if (mName && mValue) {
+ _nodeTree.SelectedNode = node;
+ yield return node;
+ }
+ }
+
+ foreach (TreeNode sub in node.Nodes) {
+ foreach (TreeNode s in FindNode(sub))
+ yield return s;
+ }
+
+ if (expand) {
+ DataNode data = node.Tag as DataNode;
+ if (!data.Modified)
+ CollapseNode(node);
+ }
+ }
+
+ private void findToolStripMenuItem_Click (object sender, EventArgs e)
+ {
+ Find(_nodeTree.SelectedNode);
+ }
+
+ private void findNextToolStripMenuItem_Click (object sender, EventArgs e)
+ {
+ FindNext();
+ }
+
+ private void _buttonFindNext_Click (object sender, EventArgs e)
+ {
+ if (_search == null)
+ Find(_nodeTree.SelectedNode);
+ else
+ FindNext();
+ }
}
public class TagKey : IComparable
@@ -1047,6 +1199,8 @@ namespace NBTPlus
_modified = value;
}
}
+
+ public bool Expanded { get; set; }
}
public class NbtDataNode : DataNode
diff --git a/Form1.resx b/Form1.resx
index 2ac3d75..465e679 100644
--- a/Form1.resx
+++ b/Form1.resx
@@ -120,6 +120,9 @@
17, 17
+
+ 527, 17
+
237, 17
@@ -128,7 +131,7 @@
AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w
LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0
ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAADW
- LgAAAk1TRnQBSQFMAgEBDgEAAXABAAFwAQABEAEAARABAAT/ARkBAAj/AUIBTQE2BwABNgMAASgDAAFA
+ LgAAAk1TRnQBSQFMAgEBDgEAAYgBAAGIAQABEAEAARABAAT/ARkBAAj/AUIBTQE2BwABNgMAASgDAAFA
AwABQAMAAQEBAAEYBgABMBIAA/wD+SH4A/kD/AMAA/0D+SH4A/kD/WMAAZYBqQG8AVwBhAGuAVwBhAGu
AVwBhAGuAVwBhAGuAVwBhAGuAVwBhAGuAVwBhAGuAVwBhAGuAVwBhAGuAVwBhAGuAVwBhAGuAVwBhAGu
AVwBhAGuAZYBqQG8AwACzwHLArkBsAK5AbACuQGwArkBsAK5AbACuQGwArkBsAK5AbACuQGwArkBsAK5
@@ -514,14 +517,311 @@
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAFySURBVDhPY2CgBthfz8CyP4kl40AiczcM19sxnEHGyHIg
tSA9cLv3xrErn6rWXPp+T+f/d7s7wHh2hikKhomD1IDUgvTADdiVwOx+c4r3EWQDlpc4/ofhJYV2cINB
- akBqQXrgBuyIZ8m9vyz7wbPNDf9heEuj338YXlftARcHyYPUgvTADdgawzz1w9nlf//fXfUfhu+uKgcy
+ akBqQXrgBuyIZ8m9vyz7wbPNDf9heEuj338YXlftARcHyYPUgvTADdgawzz17anlf//fXfUfhu+uKgcy
IfjMzDS4OEgepBakB27A5ijmGT8vzf//+cRUON7dEfofhjc3+KLIgdSC9MAN2BDFPPvbudn/PxyZCMcg
zavKXcCGLCt2QJEDqQXpgRuwOoJ5/qeT0/6/2d8DxyDNID6MRpYDqQXpgRuwPIx58btD/f9f7monCoPU
gvTADVgSwrjsFTDun25tIgqD1IL0wA2YH8C4+smWxv8PN9QShUFqQXrgBkzxZNzxYF31//trq4jCILUg
- PTAD5FKNGee1uTAeJQWD9AANkAMZwg/E4kAsRSIG6QHppQwAACRX3YQSNn5eAAAAAElFTkSuQmCC
+ PTAD5FKNGee1uTAeJQWD9AANkAMZwg/E4kAsRSIG6QHppQwAAARN3Xh69LLBAAAAAElFTkSuQmCC
347, 17
+
+
+ AAABAAQAMDAAAAEAIACoJQAARgAAACAgAAABACAAqBAAAO4lAAAYGAAAAQAgAIgJAACWNgAAEBAAAAEA
+ IABoBAAAHkAAACgAAAAwAAAAYAAAAAEAIAAAAAAAgCUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAABjRbAAY0WwsGNFvIBTNa/wo5Yf8jXo3/KGSU/yZhkf8NPmf/BTNa/wY0W+AGNFscBjRbAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAABTNaAAUzWgsFM1rIBDJZ/wk4YP8iXYz/KGSU/yZhkf8NPmf/BTNa/wY0
+ W+AGNFscBjRbAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABzVdAAc1XQsHNV3IBjRc/ws6Yv8jXo3/KGSU/yZh
+ kf8NPmf/BTNa/wY0W+AGNFscBjRbAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIFiGACBYhgsgWIbIH1iG/yFa
+ iP8mYpL/KGSU/yZhkf8NPmf/BTNa/wY0W+AGNFscBjRbAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKGSUAChk
+ lAsoZJTIKGSU/yhklP8oZJT/KGSU/yZhkf8NPmf/BTNa/wY0W+AGNFscBjRbAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAKGSUAChklAsoZJTIKGSU/yhklP8oZJT/KGSU/yZhkf8NPmf/BTNa/wY0W+AGNFscBjRbAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAKGSUAChklAsoZJTIKGSU/yhklP8oZJT/KGSU/yZhkf8NPmf/BTNa/wY0
+ W+AGNFscBjRbAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAChk
+ lAAoZJQAKGSUAChklAAoZJQAKGSUAAAAAAAAAAAAKGSUAChklAsoZJTIKGSU/yhklP8oZJT/KGSU/yZh
+ kf8NPmf/BTNa/wY0W+AGNFscBjRbAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAChklAAoZJQGKGSUCihklAkoZJQCKGSUAAAAAAAAAAAAJmKRACZikQsmYpHIJmKR/yZi
+ kv8nY5P/KGSU/yZhkf8NPmf/BTNa/wY0W+AGNFscBjRbAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ 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
+ lAAoZJQAKGSUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAKGSUAChklAgoZJSuKGSU4CNejeAjXo30I16N/yRejf8nYpL/KGSU/yNe
+ jf8KOWH/BTNa/wY0W/QGNFtOBjRbHgY0WxoGNFsDBjRbAAY0WwoGNFuxBjRb4AY0W8QGNFsYBjRbAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKGSUAChklAEoZJQXKGSUHgo5YR4KOWGxCThg/wo7
+ Y/8gWoj/KGSU/yNejf8KOWH/BTNa/wY0W/0GNFvmBjRb4AY0W8UGNFsYBjRbAAY0WwEGNFsYBjRbHgY0
+ WxoGNFsDBjRbAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEURuABFEbgARRG4AEURuAAUz
+ WgAFM1mkBDFY/wY0W/8gWYf/KGWV/yNejf8JOGD/BDJZ/wUzWv8FM1r/BjRb/wY0W+EGNFsYBjRbAAY0
+ WwAGNFsABjRbAAY0WwAGNFsABjRbAAY0WwAGNFsABjRbAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABjRbAAY0
+ WwIGNFsqBjRbNgY0WzYKOmK5DD1m/w0/aP8bU4D/IFqI/x1Wg/8PQGr/DD1m/ww9Zv8HNl3/BTNa/wY0
+ W+YGNFtMBjRbNgY0WzMGNFsLBjRbAAY0WwYGNFswBjRbNgY0WyoGNFsCBjRbAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAABjRbAAY0WwkGNFu9BjRb9AY0W/QbUX77JmKS/yRfjv8NP2j/BjRb/ws6Yv8hXIv/JmGR/yRf
+ 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
+ AAAAAAAAAAAAAAAAAAAAAAAAKGSUAChklBMoZJSRKGSUpChklH4oZJQGKGSUAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKGSUAChklAAoZJQAKGSUACdjkx4nY5PgJ2OT/ydj
+ k/MnY5M2J2OTAAAAAAAAAAAAAAAAAAAAAAAAAAAAKGSUAChklAAoZJQAKGSUAChklAAoZJQAKGSUAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKGSUAChk
+ lB4oZJTgKGSU/yhklPMoZJQ2KGSUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAKGSUAChklB4oZJTgKGSU/yhklPMoZJQ2KGSUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAKGSUAChklB4oZJTgKGSU/yhklPMoZJQ2KGSUAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ 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
+ AADmBwAA/nMAAP53AAD/fwAA/38AAA==
+
+
\ No newline at end of file
diff --git a/NBTExplorer.csproj b/NBTExplorer.csproj
index 4c8310f..73a38cc 100644
--- a/NBTExplorer.csproj
+++ b/NBTExplorer.csproj
@@ -8,7 +8,7 @@
{8A458245-8176-4599-95CD-3CA39F2435CE}
WinExe
Properties
- NBTPlus
+ NBTExplorer
NBTExplorer
v4.0
Client
@@ -33,6 +33,9 @@
prompt
4
+
+ dead_bush.ico
+
..\Substrate\SubstrateCS\bin\Release\Ionic.Zlib.dll
@@ -64,6 +67,12 @@
EditValue.cs
+
+ Form
+
+
+ Find.cs
+
Form
@@ -78,6 +87,9 @@
EditValue.cs
+
+ Find.cs
+
Form1.cs
@@ -122,6 +134,16 @@
+
+
+
+
+
+
+
+
+
+