diff --git a/SM64 ROM Manager.LangResCollector/LangResFilterConfig.cs b/SM64 ROM Manager.LangResCollector/LangResFilterConfig.cs new file mode 100644 index 0000000..0368097 --- /dev/null +++ b/SM64 ROM Manager.LangResCollector/LangResFilterConfig.cs @@ -0,0 +1,15 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace SM64_ROM_Manager.LangRes_Collector +{ + internal class LangResFilterConfig + { + public string[] FileNameBlackList { get; set; } + public string[] FileNameWhiteList { get; set; } + public string[] PropNameBlackList { get; set; } + } +} diff --git a/SM64 ROM Manager.LangResCollector/Program.cs b/SM64 ROM Manager.LangResCollector/Program.cs index da2e443..2429cc6 100644 --- a/SM64 ROM Manager.LangResCollector/Program.cs +++ b/SM64 ROM Manager.LangResCollector/Program.cs @@ -7,8 +7,10 @@ using System.Resources; using System.Collections; using System.Linq; using Microsoft.WindowsAPICodePack.Dialogs; +using Newtonsoft.Json.Linq; +using System.Reflection; -namespace SM64_ROM_Manager_LangRes_Collector +namespace SM64_ROM_Manager.LangRes_Collector { class Program { @@ -17,24 +19,9 @@ namespace SM64_ROM_Manager_LangRes_Collector var resFiles = new List(); var ofd = new CommonOpenFileDialog { IsFolderPicker = true }; string rootPath, outputPath; - var fileNameBlackList = new string[] - { - "Resources.resx", - "My*Icons.resx", - "*.de.resx", - "ReflectionSymbols.resx", - "UpdatingAdministrationLangRes" - }; - var fileNameWhiteList = new string[] - { - "*.resx" - }; - var blackListPropNames = new string[] - { - ">>*", - "*.AccessibleName", - "*.AccessibleDescription" - }; + var myAppDir = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); + var myConfigFilePath = Path.Combine(myAppDir, "FilterConfig.json"); + var filterConfig = JObject.Parse(File.ReadAllText(myConfigFilePath)).ToObject(); // Get root path ofd.Title = "Root (repository) directory"; @@ -53,18 +40,18 @@ namespace SM64_ROM_Manager_LangRes_Collector // Collect files if (Directory.Exists(rootPath)) { - foreach (var filePath in Directory.GetFiles(rootPath, "*.resx", SearchOption.AllDirectories)) + foreach (var filePath in Directory.GetFiles(rootPath, string.Empty, SearchOption.AllDirectories)) { var fileName = Path.GetFileName(filePath); var copyFile = true; - foreach (var blackFileName in fileNameBlackList) + foreach (var blackFileName in filterConfig.FileNameBlackList) { if (copyFile && LikeString(fileName, blackFileName, CompareMethod.Binary)) copyFile = false; } - foreach (var whiteFileName in fileNameWhiteList) + foreach (var whiteFileName in filterConfig.FileNameWhiteList) { if (copyFile && !LikeString(fileName, whiteFileName, CompareMethod.Binary)) copyFile = false; @@ -90,16 +77,16 @@ namespace SM64_ROM_Manager_LangRes_Collector var propName = (string)kvp.Key; var useProp = true; - foreach (var blackPropName in blackListPropNames) + // Check for blacklisted property names + foreach (var blackPropName in filterConfig.PropNameBlackList) { if (useProp && LikeString(propName, blackPropName, CompareMethod.Binary)) useProp = false; } - if (useProp && kvp.Value is string) + // Hold property to write later, if it's a string + if (useProp && kvp.Value is string val) { - var val = (string)kvp.Value; - if (!string.IsNullOrEmpty(val)) propsToCopy.Add(propName, (string)kvp.Value); } @@ -110,9 +97,16 @@ namespace SM64_ROM_Manager_LangRes_Collector // Write output ResX file if (propsToCopy.Any()) { - var resFileOutput = Path.Combine(outputPath, Path.GetFileName(resFileInput)); + var resFileOutput = Path.Combine(outputPath, resFileInput.Replace(rootPath, outputPath)); + var resFileOutputDir = Path.GetDirectoryName(resFileOutput); + + // Ensure the directory exists + Directory.CreateDirectory(resFileOutputDir); + + // Open a ResXResourceWriter var resWriter = new ResXResourceWriter(resFileOutput); + // Write all hold properties foreach (var kvp in propsToCopy) resWriter.AddResource(kvp.Key, kvp.Value); diff --git a/SM64 ROM Manager.LangResCollector/SM64 ROM Manager.LangResCollector.csproj b/SM64 ROM Manager.LangResCollector/SM64 ROM Manager.LangResCollector.csproj index 23ea8df..6de22b8 100644 --- a/SM64 ROM Manager.LangResCollector/SM64 ROM Manager.LangResCollector.csproj +++ b/SM64 ROM Manager.LangResCollector/SM64 ROM Manager.LangResCollector.csproj @@ -4,13 +4,14 @@ Exe net6.0-windows7 true - SM64_ROM_Manager_LangRes_Collector - SM64_ROM_Manager_LangRes_Collector.Program + SM64_ROM_Manager.LangRes_Collector + SM64_ROM_Manager.LangRes_Collector.Program - + + @@ -20,12 +21,18 @@ ..\Shared Libs\DotNetBarNew\DevComponents.DotNetBar.Charts.dll + + ..\Shared Libs\DotNetBarNew\DevComponents.DotNetBar.Design.dll + ..\Shared Libs\DotNetBarNew\DevComponents.DotNetBar.Keyboard.dll ..\Shared Libs\DotNetBarNew\DevComponents.DotNetBar.Layout.dll + + ..\Shared Libs\DotNetBarNew\DevComponents.DotNetBar.Layout.Design.dll + ..\Shared Libs\DotNetBarNew\DevComponents.DotNetBar.Schedule.dll @@ -38,6 +45,12 @@ ..\Shared Libs\DotNetBarNew\DevComponents.Instrumentation.dll + + ..\Shared Libs\DotNetBarNew\DevComponents.Instrumentation.Design.dll + + + ..\Shared Libs\DotNetBarNew\DevComponents.SuperGrid.Design.dll + ..\Shared Libs\DotNetBarNew\DevComponents.TreeGX.dll