diff --git a/Tools/ANXContentCompilerGUI/ANX.ContentCompiler.GUI.csproj b/Tools/ANXContentCompilerGUI/ANX.ContentCompiler.GUI.csproj
index 166e62bc..9cdf8e61 100644
--- a/Tools/ANXContentCompilerGUI/ANX.ContentCompiler.GUI.csproj
+++ b/Tools/ANXContentCompilerGUI/ANX.ContentCompiler.GUI.csproj
@@ -61,6 +61,12 @@
RibbonButton.cs
+
+ Form
+
+
+ NewFolderScreen.cs
+
Form
@@ -131,6 +137,9 @@
RibbonButton.cs
+
+ NewFolderScreen.cs
+
OpenProjectScreen.cs
diff --git a/Tools/ANXContentCompilerGUI/Dialogues/OpenProjectScreen.Designer.cs b/Tools/ANXContentCompilerGUI/Dialogues/OpenProjectScreen.Designer.cs
index 263c01ab..76d2f0b2 100644
--- a/Tools/ANXContentCompilerGUI/Dialogues/OpenProjectScreen.Designer.cs
+++ b/Tools/ANXContentCompilerGUI/Dialogues/OpenProjectScreen.Designer.cs
@@ -32,12 +32,12 @@
this.buttonNext = new System.Windows.Forms.Button();
this.button3 = new System.Windows.Forms.Button();
this.panel1 = new System.Windows.Forms.Panel();
+ this.listBoxRecentProjects = new System.Windows.Forms.ListBox();
this.buttonBrowse = new System.Windows.Forms.Button();
this.textBoxLocation = new System.Windows.Forms.TextBox();
this.labelManualSearch = new System.Windows.Forms.Label();
this.labelHeading = new System.Windows.Forms.Label();
this.label1 = new System.Windows.Forms.Label();
- this.listBoxRecentProjects = new System.Windows.Forms.ListBox();
this.panel1.SuspendLayout();
this.SuspendLayout();
//
@@ -104,6 +104,24 @@
this.panel1.Size = new System.Drawing.Size(600, 359);
this.panel1.TabIndex = 14;
//
+ // listBoxRecentProjects
+ //
+ this.listBoxRecentProjects.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(64)))), ((int)(((byte)(64)))), ((int)(((byte)(64)))));
+ this.listBoxRecentProjects.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
+ this.listBoxRecentProjects.ForeColor = System.Drawing.Color.LightGray;
+ this.listBoxRecentProjects.FormattingEnabled = true;
+ this.listBoxRecentProjects.Items.AddRange(new object[] {
+ "Test",
+ "Blubb",
+ "Put",
+ "Recent",
+ "Projects",
+ "here"});
+ this.listBoxRecentProjects.Location = new System.Drawing.Point(71, 96);
+ this.listBoxRecentProjects.Name = "listBoxRecentProjects";
+ this.listBoxRecentProjects.Size = new System.Drawing.Size(443, 119);
+ this.listBoxRecentProjects.TabIndex = 21;
+ //
// buttonBrowse
//
this.buttonBrowse.DialogResult = System.Windows.Forms.DialogResult.OK;
@@ -158,26 +176,9 @@
this.label1.Text = "New Project";
this.label1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
//
- // listBoxRecentProjects
- //
- this.listBoxRecentProjects.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(64)))), ((int)(((byte)(64)))), ((int)(((byte)(64)))));
- this.listBoxRecentProjects.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
- this.listBoxRecentProjects.ForeColor = System.Drawing.Color.LightGray;
- this.listBoxRecentProjects.FormattingEnabled = true;
- this.listBoxRecentProjects.Items.AddRange(new object[] {
- "Test",
- "Blubb",
- "Put",
- "Recent",
- "Projects",
- "here"});
- this.listBoxRecentProjects.Location = new System.Drawing.Point(71, 96);
- this.listBoxRecentProjects.Name = "listBoxRecentProjects";
- this.listBoxRecentProjects.Size = new System.Drawing.Size(443, 119);
- this.listBoxRecentProjects.TabIndex = 21;
- //
// OpenProjectScreen
//
+ this.AcceptButton = this.buttonNext;
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(64)))), ((int)(((byte)(64)))), ((int)(((byte)(64)))));
diff --git a/Tools/ANXContentCompilerGUI/Dialogues/OpenProjectScreen.resx b/Tools/ANXContentCompilerGUI/Dialogues/OpenProjectScreen.resx
index 5ea0895e..29dcb1b3 100644
--- a/Tools/ANXContentCompilerGUI/Dialogues/OpenProjectScreen.resx
+++ b/Tools/ANXContentCompilerGUI/Dialogues/OpenProjectScreen.resx
@@ -112,9 +112,9 @@
2.0
- System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
- System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.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/Tools/ANXContentCompilerGUI/MainWindow.cs b/Tools/ANXContentCompilerGUI/MainWindow.cs
index 34433800..c797f346 100644
--- a/Tools/ANXContentCompilerGUI/MainWindow.cs
+++ b/Tools/ANXContentCompilerGUI/MainWindow.cs
@@ -184,10 +184,10 @@ namespace ANX.ContentCompiler.GUI
var absPath = ProjectFolder + Path.DirectorySeparatorChar + folder + Path.DirectorySeparatorChar + Path.GetFileName(file);
if (!Directory.Exists(Path.Combine(ProjectFolder, folder)))
Directory.CreateDirectory(Path.Combine(ProjectFolder, folder));
- File.Copy(file, absPath);
+ File.Copy(file, absPath, true);
var item = new BuildItem
{
- AssetName = String.IsNullOrEmpty(folder) ? folder.Replace(_contentProject.ContentRoot, "") + Path.DirectorySeparatorChar + Path.GetFileNameWithoutExtension(file) : Path.GetFileNameWithoutExtension(file),
+ AssetName = !String.IsNullOrEmpty(folder) ? folder.Replace(_contentProject.ContentRoot + Path.DirectorySeparatorChar, "") + Path.DirectorySeparatorChar + Path.GetFileNameWithoutExtension(file) : Path.GetFileNameWithoutExtension(file),
SourceFilename = absPath,
OutputFilename = ProjectOutputDir + Path.DirectorySeparatorChar + folder + Path.DirectorySeparatorChar + Path.GetFileName(file),
ImporterName = ImporterManager.GuessImporterByFileExtension(file)
@@ -203,6 +203,35 @@ namespace ANX.ContentCompiler.GUI
}
ChangeEnvironmentOpenProject();
}
+
+ public void AddFolder(string name)
+ {
+ string folder = _contentProject.ContentRoot;
+ var node = treeView.SelectedNode;
+ if (node != null)
+ folder = node.Name;
+ else
+ node = treeView.Nodes[0];
+
+ var newFolder = new TreeNode(name) { Name = folder + Path.DirectorySeparatorChar + name};
+ node.Nodes.Add(newFolder);
+
+ }
+
+ public void RemoveFile(string name)
+ {
+
+ }
+
+ public void RemoveFiles(string[] files)
+ {
+
+ }
+
+ public void RemoveFolder(string name)
+ {
+
+ }
#endregion
#region EnvironmentStates
@@ -228,20 +257,29 @@ namespace ANX.ContentCompiler.GUI
var rootNode = new TreeNode(ProjectName + "(" + _contentProject.ContentRoot + ")") {Name = _contentProject.ContentRoot};
treeView.Nodes.Add(rootNode);
var lastNode = rootNode;
- foreach (var parts in _contentProject.BuildItems.Select(buildItem => buildItem.AssetName.Split('/')).Where(parts => parts.Length >= 2))
+ foreach (var parts in _contentProject.BuildItems.Select(buildItem => buildItem.AssetName.Split(Path.DirectorySeparatorChar)).Where(parts => parts.Length >= 2))
{
+ string folder = "";
+ string parent = _contentProject.ContentRoot;
for (int i=0; i < parts.Length - 1; i++)
{
- var node = new TreeNode(parts[i]) {Name = lastNode.Name + "/" + parts[i] + "/"};
- if (!lastNode.Nodes.Contains(node))
- {
- lastNode.Nodes.Add(node);
- lastNode = node;
- }
+ if (parts[i] == null) continue;
+ if (i > 0)
+ folder += Path.DirectorySeparatorChar + parts[i];
else
- {
- lastNode = lastNode.Nodes[parts[i]];
- }
+ folder = parts[0];
+
+
+ if (parts.Length > 2 && i < parts.Length -2)
+ parent += Path.DirectorySeparatorChar + parts[i];
+ //else if (parts.Length == 2)
+ // parent += Path.DirectorySeparatorChar + parts[0];
+ }
+ lastNode = treeView.RecursiveSearch(parent);
+ var node = new TreeNode(parts[parts.Length - 2]) { Name = _contentProject.ContentRoot + Path.DirectorySeparatorChar + folder };
+ if (!ContainsTreeNode(lastNode, node))
+ {
+ lastNode.Nodes.Add(node);
}
lastNode = rootNode;
}
@@ -261,15 +299,15 @@ namespace ANX.ContentCompiler.GUI
lastNode = lastNode.Nodes[parts[i]];
}
}*/
- string path = "";
+ string path = _contentProject.ContentRoot;
if (parts != null)
{
for (int i = 0; i < parts.Length - 1; i++)
{
- path = parts[i];
+ path += String.IsNullOrEmpty(path) ? parts[i] : Path.DirectorySeparatorChar + parts[i];
}
}
- if (!String.IsNullOrEmpty(path))
+ if (parts != null)
{
var node = treeView.RecursiveSearch(path);
if (node == null) throw new ArgumentNullException("Node not found!");
@@ -412,6 +450,12 @@ namespace ANX.ContentCompiler.GUI
}
}
}
+
+ private bool ContainsTreeNode(TreeNode haystack, TreeNode needle)
+ {
+ return haystack.Nodes.Cast().Any(node => node.Name.Equals(needle.Name));
+ }
+
#endregion
#region PropertyGridEvents
diff --git a/Tools/ANXContentCompilerGUI/Resources/appbar.new.png b/Tools/ANXContentCompilerGUI/Resources/appbar.new.png
new file mode 100644
index 00000000..efe8a35e
Binary files /dev/null and b/Tools/ANXContentCompilerGUI/Resources/appbar.new.png differ
diff --git a/Tools/ANXContentCompilerGUI/Resources/appbar.new.window.png b/Tools/ANXContentCompilerGUI/Resources/appbar.new.window.png
new file mode 100644
index 00000000..235cbf2d
Binary files /dev/null and b/Tools/ANXContentCompilerGUI/Resources/appbar.new.window.png differ
diff --git a/Tools/ANXContentCompilerGUI/States/EditingState.Designer.cs b/Tools/ANXContentCompilerGUI/States/EditingState.Designer.cs
index 9560ba04..8f70a290 100644
--- a/Tools/ANXContentCompilerGUI/States/EditingState.Designer.cs
+++ b/Tools/ANXContentCompilerGUI/States/EditingState.Designer.cs
@@ -71,6 +71,7 @@
this.arrowButtonCreateFolder.Name = "arrowButtonCreateFolder";
this.arrowButtonCreateFolder.Size = new System.Drawing.Size(348, 64);
this.arrowButtonCreateFolder.TabIndex = 6;
+ this.arrowButtonCreateFolder.Click += new System.EventHandler(this.ArrowButtonCreateFolderClick);
//
// arrowButtonPreview
//
diff --git a/Tools/ANXContentCompilerGUI/States/EditingState.cs b/Tools/ANXContentCompilerGUI/States/EditingState.cs
index eae7aa42..195c7c65 100644
--- a/Tools/ANXContentCompilerGUI/States/EditingState.cs
+++ b/Tools/ANXContentCompilerGUI/States/EditingState.cs
@@ -1,5 +1,6 @@
using System;
using System.Windows.Forms;
+using ANX.ContentCompiler.GUI.Dialogues;
namespace ANX.ContentCompiler.GUI.States
{
@@ -27,5 +28,16 @@ namespace ANX.ContentCompiler.GUI.States
}
}
+ private void ArrowButtonCreateFolderClick(object sender, EventArgs e)
+ {
+ using (var dlg = new NewFolderScreen())
+ {
+ if (dlg.ShowDialog() == DialogResult.OK)
+ {
+ MainWindow.Instance.AddFolder(dlg.textBoxName.Text);
+ }
+ }
+ }
+
}
}
diff --git a/Tools/ANXContentCompilerGUI/States/MenuState.Designer.cs b/Tools/ANXContentCompilerGUI/States/MenuState.Designer.cs
index 7d3498de..643108e2 100644
--- a/Tools/ANXContentCompilerGUI/States/MenuState.Designer.cs
+++ b/Tools/ANXContentCompilerGUI/States/MenuState.Designer.cs
@@ -384,12 +384,12 @@
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None;
this.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(64)))), ((int)(((byte)(64)))), ((int)(((byte)(64)))));
this.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
- this.Controls.Add(this.panelSettings);
this.Controls.Add(this.labelVersion);
this.Controls.Add(this.panelOpen);
this.Controls.Add(this.panel1);
this.Controls.Add(this.panelSaveAs);
this.Controls.Add(this.panelNew);
+ this.Controls.Add(this.panelSettings);
this.Font = new System.Drawing.Font("Segoe UI", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.ForeColor = System.Drawing.Color.White;
this.Name = "MenuState";
diff --git a/Tools/ANXContentCompilerGUI/States/MenuState.cs b/Tools/ANXContentCompilerGUI/States/MenuState.cs
index 05ffaf0d..eaa74ec4 100644
--- a/Tools/ANXContentCompilerGUI/States/MenuState.cs
+++ b/Tools/ANXContentCompilerGUI/States/MenuState.cs
@@ -6,6 +6,7 @@ using System.Data;
using System.Linq;
using System.Text;
using System.Windows.Forms;
+using ANX.ContentCompiler.GUI.Dialogues;
namespace ANX.ContentCompiler.GUI.States
{
@@ -112,29 +113,45 @@ namespace ANX.ContentCompiler.GUI.States
#region MenuNew
private void ArrowButtonFileClick(object sender, EventArgs e)
{
-
+ using (var dlg = new OpenFileDialog())
+ {
+ dlg.Multiselect = true;
+ dlg.Title = "Add files";
+ if (dlg.ShowDialog() == DialogResult.OK)
+ MainWindow.Instance.AddFiles(dlg.FileNames);
+ }
+ MainWindow.Instance.ToggleMenuMode();
}
private void ArrowButtonFolderClick(object sender, EventArgs e)
{
-
+ using (var dlg = new NewFolderScreen())
+ {
+ if (dlg.ShowDialog() == DialogResult.OK)
+ {
+ MainWindow.Instance.AddFolder(dlg.textBoxName.Text);
+ }
+ }
+ MainWindow.Instance.ToggleMenuMode();
}
private void ArrowButtonNewProjectClick(object sender, EventArgs e)
{
-
+ MainWindow.Instance.NewProject(sender, e);
}
#endregion
#region MenuOpen
private void ArrowButtonOpenClick(object sender, EventArgs e)
{
-
+ MainWindow.Instance.OpenProjectDialog(sender, e);
+ MainWindow.Instance.ToggleMenuMode();
}
private void ArrowButtonImportClick(object sender, EventArgs e)
{
-
+ MainWindow.Instance.OpenProjectDialog(sender, e);
+ MainWindow.Instance.ToggleMenuMode();
}
#endregion
@@ -142,11 +159,13 @@ namespace ANX.ContentCompiler.GUI.States
private void ArrowButtonSaveAsCprojClick(object sender, EventArgs e)
{
MainWindow.Instance.SaveProjectAs(sender, e);
+ MainWindow.Instance.ToggleMenuMode();
}
private void ArrowButtonSaveAsCcProjClick(object sender, EventArgs e)
{
MainWindow.Instance.SaveProjectAs(sender, e);
+ MainWindow.Instance.ToggleMenuMode();
}
#endregion
diff --git a/Tools/ANXContentCompilerGUI/States/MenuState.resx b/Tools/ANXContentCompilerGUI/States/MenuState.resx
index 381fcdcc..a27baa78 100644
--- a/Tools/ANXContentCompilerGUI/States/MenuState.resx
+++ b/Tools/ANXContentCompilerGUI/States/MenuState.resx
@@ -112,10 +112,10 @@
2.0
- System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
- System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
If you want to use your existing XNA Contentproject you need to choose the Import option. Also the Import option is required when trying to open files created by the EES Content Compiler 3.
diff --git a/Tools/ANXContentCompilerGUI/TreeViewExtensions.cs b/Tools/ANXContentCompilerGUI/TreeViewExtensions.cs
index 9ce8bc9c..89f6a67a 100644
--- a/Tools/ANXContentCompilerGUI/TreeViewExtensions.cs
+++ b/Tools/ANXContentCompilerGUI/TreeViewExtensions.cs
@@ -1,7 +1,4 @@
using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
using System.Windows.Forms;
namespace ANX.ContentCompiler.GUI