diff --git a/CHANGELIST.md b/CHANGELIST.md
index 8516c5be..5b0b1eb2 100644
--- a/CHANGELIST.md
+++ b/CHANGELIST.md
@@ -5,6 +5,7 @@
- Fix XboxOne/XboxSX Filename bug (Deterous)
- Trim PIC for XboxOne/XboxSX (Deterous)
- Get volume label from UIC outputs
+- Add site code listing to Check
### 3.1.8 (2024-05-09)
diff --git a/MPF.Check/Program.cs b/MPF.Check/Program.cs
index de8dee4c..16822fa4 100644
--- a/MPF.Check/Program.cs
+++ b/MPF.Check/Program.cs
@@ -99,6 +99,7 @@ namespace MPF.Check
Console.WriteLine();
Console.WriteLine("Standalone Options:");
Console.WriteLine("-h, -? Show this help text");
+ Console.WriteLine("-lc, --listcodes List supported comment/content site codes");
Console.WriteLine("-lm, --listmedia List supported media types");
Console.WriteLine("-ls, --listsystems List supported system types");
Console.WriteLine("-lp, --listprograms List supported dumping program outputs");
diff --git a/MPF.Core/Utilities/EnumExtensions.cs b/MPF.Core/Utilities/EnumExtensions.cs
index d44acfb2..e7d45acf 100644
--- a/MPF.Core/Utilities/EnumExtensions.cs
+++ b/MPF.Core/Utilities/EnumExtensions.cs
@@ -45,5 +45,43 @@ namespace MPF.Core.Utilities
return programs;
}
+
+ ///
+ /// List all site codes with their short usable names
+ ///
+ public static List ListSiteCodes()
+ {
+ var siteCodes = new List();
+
+ foreach (var val in Enum.GetValues(typeof(SiteCode)))
+ {
+ string? shortName = ((SiteCode?)val).ShortName()?.TrimEnd(':');
+ string? longName = ((SiteCode?)val).LongName()?.TrimEnd(':');
+ bool multiline = ((SiteCode?)val).IsMultiLine();
+
+ // Invalid codes should be skipped
+ if (shortName == null || longName == null)
+ continue;
+
+ // Handle site tags
+ string siteCode;
+ if (shortName == longName)
+ siteCode = "***".PadRight(16, ' ');
+ else
+ siteCode = shortName.PadRight(16, ' ');
+
+ // Handle expanded tags
+ siteCode += longName.PadRight(32, ' ');
+
+ // Include multiline indicator if necessary
+ if (multiline)
+ siteCode += "[Multiline]";
+
+ // Add the formatted site code
+ siteCodes.Add(siteCode);
+ }
+
+ return siteCodes;
+ }
}
}
diff --git a/MPF.Core/Utilities/OptionsLoader.cs b/MPF.Core/Utilities/OptionsLoader.cs
index 6d873067..b7a5e6aa 100644
--- a/MPF.Core/Utilities/OptionsLoader.cs
+++ b/MPF.Core/Utilities/OptionsLoader.cs
@@ -26,7 +26,17 @@ namespace MPF.Core.Utilities
return false;
// List options
- if (args[0] == "-lm" || args[0] == "--listmedia")
+ if (args[0] == "-lc" || args[0] == "--listcodes")
+ {
+ Console.WriteLine("Supported Site Codes:");
+ foreach (string siteCode in EnumExtensions.ListSiteCodes())
+ {
+ Console.WriteLine(siteCode);
+ }
+ Console.ReadLine();
+ return true;
+ }
+ else if (args[0] == "-lm" || args[0] == "--listmedia")
{
Console.WriteLine("Supported Media Types:");
foreach (string mediaType in Extensions.ListMediaTypes())