diff --git a/App.config b/App.config new file mode 100644 index 0000000..731f6de --- /dev/null +++ b/App.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/DazDsx.cs b/DazDsx.cs new file mode 100644 index 0000000..00d15d2 --- /dev/null +++ b/DazDsx.cs @@ -0,0 +1,171 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Xml.Linq; + +namespace DazXmlModifier +{ + class DazDsx + { + String filepathfull { get; set; } + XDocument xfile; + public String productName { get; set; } + public String globalID { get; set; } + public List AssetNames { get; set; } + + /// + /// + /// + /// + public DazDsx(String filepathfull) + { + this.filepathfull = filepathfull; + this.AssetNames = new List(); + readXmlDoc(); + } + + /// + /// + /// + private void readXmlDoc() + { + //Load file and fill out basic variables. + this.xfile = XDocument.Load(filepathfull); + var xProductNode = xfile.Descendants().Where(n => n.Name == "Product").FirstOrDefault(); + if ((xProductNode != null) & (xProductNode.FirstAttribute != null)) + productName = xProductNode.FirstAttribute.Value; + var xGlobalIDNode = xfile.Descendants().Where(n => n.Name == "GlobalID").FirstOrDefault(); + if ((xGlobalIDNode != null) & (xGlobalIDNode.FirstAttribute != null)) + globalID = xGlobalIDNode.FirstAttribute.Value; + + //This will loop through every asset to populate names. + var xAssetsNode = xfile.Descendants().Where(n => n.Name == "Assets").FirstOrDefault(); + foreach (XElement xasset in xAssetsNode.Descendants("Asset")) + { + AssetNames.Add(xasset.FirstAttribute.Value); + } + + } + + + + public Boolean ProcessAssets(String assetName, String content, String cat, String comp, Boolean compBase) + { + var xAssetsNode = xfile.Descendants().Where(n => n.Name == "Assets").FirstOrDefault(); + //This will loop through every asset. + foreach (XElement xasset in xAssetsNode.Descendants("Asset")) + { + String localAssetName = xasset.FirstAttribute.Value; + + //Check if this is the asset we want to modify. + if (assetName != localAssetName) + continue; + + Console.WriteLine(localAssetName); + + //====== Content Type ====== + // + if (content != "") + { + xasset.Add(new XElement("ContentType", new XAttribute("VALUE", content))); + } + + //====== Categories ====== + // + // < Category VALUE = "/Default/Wardrobe/Dresses" /> + // + if (cat != "") + { + XElement xcatagories = new XElement("Categories"); + xcatagories.Add(new XElement("Category", new XAttribute("VALUE", cat))); + xasset.Add(xcatagories); + } + + //====== Compatibilitybase ====== + // + if (compBase) + { + String baseName = localAssetName.Split('/').Last(); + String info = "/" + productName + "/" + baseName.Substring(0, baseName.Length - 4); + xasset.Add(new XElement("CompatibilityBase", new XAttribute("VALUE", info))); + } + + //====== Compatibility ====== + // + // < Compatibility VALUE = "/Genesis 8/Female" /> + // + if ((comp != "") & (comp != "Null (do not add)")) + { + XElement xcatagories = new XElement("Compatibilities"); + xcatagories.Add(new XElement("Compatibility", new XAttribute("VALUE", cat))); + xasset.Add(xcatagories); + } + } + return true; + } + + /// + /// DO NOT USE + /// + /// + public Boolean ProcessAssets(String content, String cat, String comp, Boolean compBase) + { + var xAssetsNode = xfile.Descendants().Where(n => n.Name == "Assets").FirstOrDefault(); + //This will loop through every asset. + foreach (XElement xasset in xAssetsNode.Descendants("Asset")) + { + String assetName = xasset.FirstAttribute.Value; + Console.WriteLine(assetName); + //xasset.FirstAttribute.SetValue("TESTING"); + + //====== Content Type ====== + // + if (content != "") + { + xasset.Add(new XElement("ContentType", new XAttribute("VALUE", content))); + } + + //====== Categories ====== + // + // < Category VALUE = "/Default/Wardrobe/Dresses" /> + // + if (cat != "") + { + XElement xcatagories = new XElement("Categories"); + xcatagories.Add(new XElement("Category", new XAttribute("VALUE", cat))); + xasset.Add(xcatagories); + } + + //====== Compatibilitybase ====== + if (compBase) + { + String baseName = assetName.Split('/').Last(); + String info = "/" + productName + "/" + baseName.Substring(0, baseName.Length - 4); + xasset.Add(new XElement("CompatibilityBase", new XAttribute("VALUE", info))); + } + + //====== Compatibility ====== + if (comp != "") + { + XElement xcatagories = new XElement("Compatibilities"); + xcatagories.Add(new XElement("Compatibility", new XAttribute("VALUE", cat))); + xasset.Add(xcatagories); + } + } + return true; + } + + /// + /// + /// + /// + public Boolean saveChanges() + { + this.xfile.Save(filepathfull); + return true; + } + + } +} diff --git a/DazXmlModifier.csproj b/DazXmlModifier.csproj new file mode 100644 index 0000000..4822cbc --- /dev/null +++ b/DazXmlModifier.csproj @@ -0,0 +1,88 @@ + + + + + Debug + AnyCPU + {CFF8BA34-9A14-4FF4-86D0-9D002B31B53D} + WinExe + DazXmlModifier + DazXmlModifier + v4.6.1 + 512 + true + true + + + AnyCPU + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + + + + + + + + + + + + + + Form + + + Form1.cs + + + + + Form1.cs + + + ResXFileCodeGenerator + Resources.Designer.cs + Designer + + + True + Resources.resx + + + SettingsSingleFileGenerator + Settings.Designer.cs + + + True + Settings.settings + True + + + + + + + + + + + \ No newline at end of file diff --git a/DazXmlModifier.sln b/DazXmlModifier.sln new file mode 100644 index 0000000..6130a1d --- /dev/null +++ b/DazXmlModifier.sln @@ -0,0 +1,25 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 15 +VisualStudioVersion = 15.0.28307.168 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DazXmlModifier", "DazXmlModifier.csproj", "{CFF8BA34-9A14-4FF4-86D0-9D002B31B53D}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {CFF8BA34-9A14-4FF4-86D0-9D002B31B53D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {CFF8BA34-9A14-4FF4-86D0-9D002B31B53D}.Debug|Any CPU.Build.0 = Debug|Any CPU + {CFF8BA34-9A14-4FF4-86D0-9D002B31B53D}.Release|Any CPU.ActiveCfg = Release|Any CPU + {CFF8BA34-9A14-4FF4-86D0-9D002B31B53D}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {CDAAEA4A-2BDE-4785-8BB4-82A0DC7619F0} + EndGlobalSection +EndGlobal diff --git a/Form1.Designer.cs b/Form1.Designer.cs new file mode 100644 index 0000000..31a035f --- /dev/null +++ b/Form1.Designer.cs @@ -0,0 +1,238 @@ +namespace DazXmlModifier +{ + partial class Form1 + { + /// + /// 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.btn_search = new System.Windows.Forms.Button(); + this.txt_runtimeDir = new System.Windows.Forms.TextBox(); + this.label1 = new System.Windows.Forms.Label(); + this.lbl_prodName = new System.Windows.Forms.Label(); + this.groupBox5 = new System.Windows.Forms.GroupBox(); + this.lbl_globalID = new System.Windows.Forms.Label(); + this.btn_save = new System.Windows.Forms.Button(); + this.dg1 = new System.Windows.Forms.DataGridView(); + this.xId = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.xContent = new System.Windows.Forms.DataGridViewComboBoxColumn(); + this.xCategories = new System.Windows.Forms.DataGridViewComboBoxColumn(); + this.xCompatibilityBase = new System.Windows.Forms.DataGridViewCheckBoxColumn(); + this.xCompatibility = new System.Windows.Forms.DataGridViewComboBoxColumn(); + this.groupBox5.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.dg1)).BeginInit(); + this.SuspendLayout(); + // + // btn_search + // + this.btn_search.Location = new System.Drawing.Point(11, 53); + this.btn_search.Name = "btn_search"; + this.btn_search.Size = new System.Drawing.Size(129, 41); + this.btn_search.TabIndex = 1; + this.btn_search.Text = "Load DSX"; + this.btn_search.UseVisualStyleBackColor = true; + this.btn_search.Click += new System.EventHandler(this.btn_search_Click); + // + // txt_runtimeDir + // + this.txt_runtimeDir.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.txt_runtimeDir.Location = new System.Drawing.Point(64, 27); + this.txt_runtimeDir.Name = "txt_runtimeDir"; + this.txt_runtimeDir.Size = new System.Drawing.Size(570, 20); + this.txt_runtimeDir.TabIndex = 2; + this.txt_runtimeDir.Text = "C:\\Users\\Collin\\Documents\\GitHub\\DazXmlModifier\\docs\\DAZ_3D_45801_Belle_Dress_for" + + "_Genesis_8_Females.dsx"; + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Location = new System.Drawing.Point(8, 30); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(50, 13); + this.label1.TabIndex = 3; + this.label1.Text = "DXF File:"; + this.label1.TextAlign = System.Drawing.ContentAlignment.MiddleRight; + // + // lbl_prodName + // + this.lbl_prodName.AutoSize = true; + this.lbl_prodName.Location = new System.Drawing.Point(147, 58); + this.lbl_prodName.Name = "lbl_prodName"; + this.lbl_prodName.Size = new System.Drawing.Size(78, 13); + this.lbl_prodName.TabIndex = 8; + this.lbl_prodName.Text = "Product Name:"; + this.lbl_prodName.TextAlign = System.Drawing.ContentAlignment.MiddleRight; + // + // groupBox5 + // + this.groupBox5.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.groupBox5.Controls.Add(this.lbl_globalID); + this.groupBox5.Controls.Add(this.txt_runtimeDir); + this.groupBox5.Controls.Add(this.btn_search); + this.groupBox5.Controls.Add(this.label1); + this.groupBox5.Controls.Add(this.lbl_prodName); + this.groupBox5.Location = new System.Drawing.Point(12, 12); + this.groupBox5.Name = "groupBox5"; + this.groupBox5.Size = new System.Drawing.Size(640, 104); + this.groupBox5.TabIndex = 6; + this.groupBox5.TabStop = false; + this.groupBox5.Text = "Content Type:"; + // + // lbl_globalID + // + this.lbl_globalID.AutoSize = true; + this.lbl_globalID.Location = new System.Drawing.Point(147, 76); + this.lbl_globalID.Name = "lbl_globalID"; + this.lbl_globalID.Size = new System.Drawing.Size(79, 13); + this.lbl_globalID.TabIndex = 9; + this.lbl_globalID.Text = "DAZ Global ID:"; + this.lbl_globalID.TextAlign = System.Drawing.ContentAlignment.MiddleRight; + // + // btn_save + // + this.btn_save.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.btn_save.Location = new System.Drawing.Point(12, 309); + this.btn_save.Name = "btn_save"; + this.btn_save.Size = new System.Drawing.Size(640, 41); + this.btn_save.TabIndex = 4; + this.btn_save.Text = "Save Modifed DSX"; + this.btn_save.UseVisualStyleBackColor = true; + this.btn_save.Click += new System.EventHandler(this.btn_save_Click); + // + // dg1 + // + this.dg1.AllowUserToAddRows = false; + this.dg1.AllowUserToDeleteRows = false; + this.dg1.AllowUserToResizeRows = false; + this.dg1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.dg1.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; + this.dg1.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] { + this.xId, + this.xContent, + this.xCategories, + this.xCompatibilityBase, + this.xCompatibility}); + this.dg1.EditMode = System.Windows.Forms.DataGridViewEditMode.EditOnEnter; + this.dg1.Location = new System.Drawing.Point(12, 122); + this.dg1.MultiSelect = false; + this.dg1.Name = "dg1"; + this.dg1.Size = new System.Drawing.Size(640, 181); + this.dg1.TabIndex = 8; + this.dg1.EditingControlShowing += new System.Windows.Forms.DataGridViewEditingControlShowingEventHandler(this.dg1_EditingControlShowing); + // + // xId + // + this.xId.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.Fill; + this.xId.HeaderText = "Name"; + this.xId.MinimumWidth = 100; + this.xId.Name = "xId"; + this.xId.ReadOnly = true; + // + // xContent + // + this.xContent.HeaderText = "Content Type"; + this.xContent.Items.AddRange(new object[] { + "Follower/Wardrobe", + "Follower/Accessory", + "Prop", + "Presets/Materials"}); + this.xContent.Name = "xContent"; + this.xContent.Width = 120; + // + // xCategories + // + this.xCategories.AutoComplete = false; + this.xCategories.HeaderText = "Categories"; + this.xCategories.Items.AddRange(new object[] { + "Default/Wardrobe", + "Default/Materials", + "Default/Accessories", + "Default/Props", + "Default/Poses", + "CUSTOM HERE"}); + this.xCategories.Name = "xCategories"; + this.xCategories.Width = 120; + // + // xCompatibilityBase + // + this.xCompatibilityBase.HeaderText = "CompatibilityBase"; + this.xCompatibilityBase.Name = "xCompatibilityBase"; + this.xCompatibilityBase.Resizable = System.Windows.Forms.DataGridViewTriState.True; + // + // xCompatibility + // + this.xCompatibility.HeaderText = "Compatibility"; + this.xCompatibility.Items.AddRange(new object[] { + "Genesis 8/Female", + "Genesis 8/Male", + "Genesis 3/Female", + "Genesis 3/Male", + "Genesis 2/Female", + "Genesis 2/Male", + "Genesis", + "Null (do not add)"}); + this.xCompatibility.Name = "xCompatibility"; + this.xCompatibility.Width = 110; + // + // Form1 + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(664, 362); + this.Controls.Add(this.dg1); + this.Controls.Add(this.btn_save); + this.Controls.Add(this.groupBox5); + this.MinimumSize = new System.Drawing.Size(680, 400); + this.Name = "Form1"; + this.Text = "Daz XML Editor"; + this.Load += new System.EventHandler(this.Form1_Load); + this.groupBox5.ResumeLayout(false); + this.groupBox5.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.dg1)).EndInit(); + this.ResumeLayout(false); + + } + + #endregion + private System.Windows.Forms.Button btn_search; + private System.Windows.Forms.TextBox txt_runtimeDir; + private System.Windows.Forms.Label label1; + private System.Windows.Forms.Label lbl_prodName; + private System.Windows.Forms.GroupBox groupBox5; + private System.Windows.Forms.Button btn_save; + private System.Windows.Forms.Label lbl_globalID; + private System.Windows.Forms.DataGridView dg1; + private System.Windows.Forms.DataGridViewTextBoxColumn xId; + private System.Windows.Forms.DataGridViewComboBoxColumn xContent; + private System.Windows.Forms.DataGridViewComboBoxColumn xCategories; + private System.Windows.Forms.DataGridViewCheckBoxColumn xCompatibilityBase; + private System.Windows.Forms.DataGridViewComboBoxColumn xCompatibility; + } +} + diff --git a/Form1.cs b/Form1.cs new file mode 100644 index 0000000..8014b53 --- /dev/null +++ b/Form1.cs @@ -0,0 +1,188 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.IO; +using System.Linq; +using System.Reflection; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace DazXmlModifier +{ + public partial class Form1 : Form + { + + DazDsx d; + + public Form1() + { + InitializeComponent(); + } + + private void Form1_Load(object sender, EventArgs e) + { + this.Text = "Daz XML Editor - Version " + typeof(Form1).Assembly.GetName().Version; + btn_save.Enabled = false; + dg1.Enabled = false; + } + + /// + /// + /// + private void btn_search_Click(object sender, EventArgs e) + { + try + { + dg1.Rows.Clear(); + LoadFile(); + PopulateGridView(); + btn_save.Enabled = true; + dg1.Enabled = true; + } + catch(Exception ex) + { + MessageBox.Show("System Exception trying to load file. Message:" + ex.Message); + } + + } + + /// + /// + /// + private void btn_save_Click(object sender, EventArgs e) + { + try + { + SubmitEdits(); + } + catch (Exception ex) + { + MessageBox.Show("System Exception trying to save edits. Message:" + ex.Message); + } + + } + + /// + /// + /// + /// + private Boolean SubmitEdits() + { + if (d != null) + { + //Check for null values + foreach (DataGridViewRow row in dg1.Rows) + { + if ((String)row.Cells["xContent"].Value == null) + { + MessageBox.Show("Error, null value for Content in row " + row.Index + "."); + return false; + } + if ((String)row.Cells["xCategories"].Value == null) + { + MessageBox.Show("Error, null value for Categories in row " + row.Index + "."); + return false; + } + if ((String)row.Cells["xCompatibility"].Value == null) + { + MessageBox.Show("Error, null value for Compatibility in row " + row.Index + "."); + return false; + } + } + //Do Real Edit + foreach (DataGridViewRow row in dg1.Rows) + { + String name = (String)row.Cells["xId"].Value; + String content = (String)row.Cells["xContent"].Value; + String catagories = (String)row.Cells["xCategories"].Value; + String compatibility = (String)row.Cells["xCompatibility"].Value; + Boolean compatibilityBase = (Convert.ToBoolean(row.Cells["xCompatibilityBase"].Value)); + d.ProcessAssets(name, content, catagories, compatibility, compatibilityBase); + } + d.saveChanges(); + btn_save.Enabled = false; + dg1.Enabled = false; + } + else + MessageBox.Show("Please first load dsx file."); + return true; + } + + /// + /// + /// + /// + private Boolean LoadFile() + { + String dsxPath = ""; + + if (txt_runtimeDir.Text == null) + { + MessageBox.Show("Missing dsx path."); + return false; + } + + dsxPath = txt_runtimeDir.Text; + + if (!File.Exists(dsxPath)) + { + MessageBox.Show("Dsx file does not exist."); + return false; + } + + d = new DazDsx(dsxPath); + lbl_prodName.Text = "Product Name: " + d.productName; + lbl_globalID.Text = "DAZ Global ID: " + d.globalID; + return true; + } + + /// + /// + /// + /// + private Boolean PopulateGridView() + { + foreach (String s in d.AssetNames) + { + dg1.Rows.Add(s,null,null,null,null); + } + return true; + } + + + ////Fix for editable combo box in gridview... + private void dg1_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e) + { + var cbo = e.Control as ComboBox; + if (cbo == null) + { + return; + } + + cbo.DropDownStyle = ComboBoxStyle.DropDown; + cbo.Validating -= HandleDG1ComboBoxValidating; + cbo.Validating += HandleDG1ComboBoxValidating; + } + ////Fix for editable combo box in gridview... + private void HandleDG1ComboBoxValidating(object sender, CancelEventArgs e) + { + var combo = sender as DataGridViewComboBoxEditingControl; + if (combo == null) + { + return; + } + if (!combo.Items.Contains(combo.Text)) //check if item is already in drop down, if not, add it to all + { + var comboColumn = dg1.Columns[dg1.CurrentCell.ColumnIndex] as DataGridViewComboBoxColumn; + combo.Items.Add(combo.Text); + comboColumn.Items.Add(combo.Text); + dg1.CurrentCell.Value = combo.Text; + } + } + + + } +} diff --git a/Form1.resx b/Form1.resx new file mode 100644 index 0000000..da05ba3 --- /dev/null +++ b/Form1.resx @@ -0,0 +1,135 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + + True + + + True + + + True + + + True + + + True + + \ No newline at end of file diff --git a/Program.cs b/Program.cs new file mode 100644 index 0000000..5d95cf1 --- /dev/null +++ b/Program.cs @@ -0,0 +1,22 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace DazXmlModifier +{ + static class Program + { + /// + /// The main entry point for the application. + /// + [STAThread] + static void Main() + { + Application.EnableVisualStyles(); + Application.SetCompatibleTextRenderingDefault(false); + Application.Run(new Form1()); + } + } +} diff --git a/Properties/AssemblyInfo.cs b/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..e6a7e98 --- /dev/null +++ b/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("Daz XML Modifier")] +[assembly: AssemblyDescription("Modifes XML Data For Smart Content.")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("C-Tek")] +[assembly: AssemblyProduct("Daz XML Modifier")] +[assembly: AssemblyCopyright("Copyright © 2019")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM +[assembly: Guid("cff8ba34-9a14-4ff4-86d0-9d002b31b53d")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/Properties/Resources.Designer.cs b/Properties/Resources.Designer.cs new file mode 100644 index 0000000..d5eac98 --- /dev/null +++ b/Properties/Resources.Designer.cs @@ -0,0 +1,71 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:4.0.30319.42000 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace DazXmlModifier.Properties +{ + + + /// + /// A strongly-typed resource class, for looking up localized strings, etc. + /// + // This class was auto-generated by the StronglyTypedResourceBuilder + // class via a tool like ResGen or Visual Studio. + // To add or remove a member, edit your .ResX file then rerun ResGen + // with the /str option, or rebuild your VS project. + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + internal class Resources + { + + private static global::System.Resources.ResourceManager resourceMan; + + private static global::System.Globalization.CultureInfo resourceCulture; + + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + internal Resources() + { + } + + /// + /// Returns the cached ResourceManager instance used by this class. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Resources.ResourceManager ResourceManager + { + get + { + if ((resourceMan == null)) + { + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("DazXmlModifier.Properties.Resources", typeof(Resources).Assembly); + resourceMan = temp; + } + return resourceMan; + } + } + + /// + /// Overrides the current thread's CurrentUICulture property for all + /// resource lookups using this strongly typed resource class. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Globalization.CultureInfo Culture + { + get + { + return resourceCulture; + } + set + { + resourceCulture = value; + } + } + } +} diff --git a/Properties/Resources.resx b/Properties/Resources.resx new file mode 100644 index 0000000..af7dbeb --- /dev/null +++ b/Properties/Resources.resx @@ -0,0 +1,117 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/Properties/Settings.Designer.cs b/Properties/Settings.Designer.cs new file mode 100644 index 0000000..8b80ccf --- /dev/null +++ b/Properties/Settings.Designer.cs @@ -0,0 +1,30 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:4.0.30319.42000 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace DazXmlModifier.Properties +{ + + + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")] + internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase + { + + private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); + + public static Settings Default + { + get + { + return defaultInstance; + } + } + } +} diff --git a/Properties/Settings.settings b/Properties/Settings.settings new file mode 100644 index 0000000..3964565 --- /dev/null +++ b/Properties/Settings.settings @@ -0,0 +1,7 @@ + + + + + + + diff --git a/docs/DAZ_3D_45801_Belle_Dress_for_Genesis_8_Females.dsx b/docs/DAZ_3D_45801_Belle_Dress_for_Genesis_8_Females.dsx new file mode 100644 index 0000000..6dc882b --- /dev/null +++ b/docs/DAZ_3D_45801_Belle_Dress_for_Genesis_8_Females.dsx @@ -0,0 +1,139 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/DAZ_3D_45801_Belle_Dress_for_Genesis_8_Females.dsx.bk b/docs/DAZ_3D_45801_Belle_Dress_for_Genesis_8_Females.dsx.bk new file mode 100644 index 0000000..58ee501 --- /dev/null +++ b/docs/DAZ_3D_45801_Belle_Dress_for_Genesis_8_Females.dsx.bk @@ -0,0 +1,119 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/LOCAL_USER_8000000007_Flounce_Dress_for_G8F.dsx b/docs/LOCAL_USER_8000000007_Flounce_Dress_for_G8F.dsx new file mode 100644 index 0000000..a926707 --- /dev/null +++ b/docs/LOCAL_USER_8000000007_Flounce_Dress_for_G8F.dsx @@ -0,0 +1,222 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/XML fixer Instructions.docx b/docs/XML fixer Instructions.docx new file mode 100644 index 0000000..2d0444b Binary files /dev/null and b/docs/XML fixer Instructions.docx differ