Colorify SCSI MODE PAGE 0Dh

This commit is contained in:
2025-08-17 16:54:14 +01:00
parent 2e1da76630
commit 5d0258dfb0
2 changed files with 55 additions and 26 deletions

View File

@@ -85,89 +85,91 @@ public static partial class Modes
ModePage_0D page = modePage.Value;
var sb = new StringBuilder();
sb.AppendLine(Localization.SCSI_CD_ROM_parameters_page);
sb.AppendLine($"[bold][blue]{Localization.SCSI_CD_ROM_parameters_page}[/][/]");
if(page.PS) sb.AppendLine("\t" + Localization.Parameters_can_be_saved);
if(page.PS) sb.AppendLine($"\t[green]{Localization.Parameters_can_be_saved}[/]");
switch(page.InactivityTimerMultiplier)
{
case 0:
sb.AppendLine("\t" +
Localization
.Drive_will_remain_in_track_hold_state_a_vendor_specified_time_after_a_seek_or_read);
sb.AppendLine($"\t[slateblue1]{Localization.Drive_will_remain_in_track_hold_state_a_vendor_specified_time_after_a_seek_or_read}[/]");
break;
case 1:
sb.AppendLine("\t" + Localization.Drive_will_remain_in_track_hold_state_125_ms_after_a_seek_or_read);
sb.AppendLine($"\t[slateblue1]{MarkupHelper.HighlightNumbers(Localization.Drive_will_remain_in_track_hold_state_125_ms_after_a_seek_or_read, "lime")}[/]");
break;
case 2:
sb.AppendLine("\t" + Localization.Drive_will_remain_in_track_hold_state_250_ms_after_a_seek_or_read);
sb.AppendLine($"\t[slateblue1]{MarkupHelper.HighlightNumbers(Localization.Drive_will_remain_in_track_hold_state_250_ms_after_a_seek_or_read, "lime")}[/]");
break;
case 3:
sb.AppendLine("\t" + Localization.Drive_will_remain_in_track_hold_state_500_ms_after_a_seek_or_read);
sb.AppendLine($"\t[slateblue1]{MarkupHelper.HighlightNumbers(Localization.Drive_will_remain_in_track_hold_state_500_ms_after_a_seek_or_read, "lime")}[/]");
break;
case 4:
sb.AppendLine("\t" + Localization.Drive_will_remain_in_track_hold_state_1_second_after_a_seek_or_read);
sb.AppendLine($"\t[slateblue1]{MarkupHelper.HighlightNumbers(Localization.Drive_will_remain_in_track_hold_state_1_second_after_a_seek_or_read, "lime")}[/]");
break;
case 5:
sb.AppendLine("\t" + Localization.Drive_will_remain_in_track_hold_state_2_seconds_after_a_seek_or_read);
sb.AppendLine($"\t[slateblue1]{MarkupHelper.HighlightNumbers(Localization.Drive_will_remain_in_track_hold_state_2_seconds_after_a_seek_or_read, "lime")}[/]");
break;
case 6:
sb.AppendLine("\t" + Localization.Drive_will_remain_in_track_hold_state_4_seconds_after_a_seek_or_read);
sb.AppendLine($"\t[slateblue1]{MarkupHelper.HighlightNumbers(Localization.Drive_will_remain_in_track_hold_state_4_seconds_after_a_seek_or_read, "lime")}[/]");
break;
case 7:
sb.AppendLine("\t" + Localization.Drive_will_remain_in_track_hold_state_8_seconds_after_a_seek_or_read);
sb.AppendLine($"\t[slateblue1]{MarkupHelper.HighlightNumbers(Localization.Drive_will_remain_in_track_hold_state_8_seconds_after_a_seek_or_read, "lime")}[/]");
break;
case 8:
sb.AppendLine("\t" +
Localization.Drive_will_remain_in_track_hold_state_16_seconds_after_a_seek_or_read);
sb.AppendLine($"\t[slateblue1]{
MarkupHelper.HighlightNumbers(Localization.Drive_will_remain_in_track_hold_state_16_seconds_after_a_seek_or_read, "lime")}[/]");
break;
case 9:
sb.AppendLine("\t" +
Localization.Drive_will_remain_in_track_hold_state_32_seconds_after_a_seek_or_read);
sb.AppendLine($"\t[slateblue1]{
MarkupHelper.HighlightNumbers(Localization.Drive_will_remain_in_track_hold_state_32_seconds_after_a_seek_or_read, "lime")}[/]");
break;
case 10:
sb.AppendLine("\t" + Localization.Drive_will_remain_in_track_hold_state_1_minute_after_a_seek_or_read);
sb.AppendLine($"\t[slateblue1]{MarkupHelper.HighlightNumbers(Localization.Drive_will_remain_in_track_hold_state_1_minute_after_a_seek_or_read, "lime")}[/]");
break;
case 11:
sb.AppendLine("\t" + Localization.Drive_will_remain_in_track_hold_state_2_minutes_after_a_seek_or_read);
sb.AppendLine($"\t[slateblue1]{MarkupHelper.HighlightNumbers(Localization.Drive_will_remain_in_track_hold_state_2_minutes_after_a_seek_or_read, "lime")}[/]");
break;
case 12:
sb.AppendLine("\t" + Localization.Drive_will_remain_in_track_hold_state_4_minutes_after_a_seek_or_read);
sb.AppendLine($"\t[slateblue1]{MarkupHelper.HighlightNumbers(Localization.Drive_will_remain_in_track_hold_state_4_minutes_after_a_seek_or_read, "lime")}[/]");
break;
case 13:
sb.AppendLine("\t" + Localization.Drive_will_remain_in_track_hold_state_8_minutes_after_a_seek_or_read);
sb.AppendLine($"\t[slateblue1]{MarkupHelper.HighlightNumbers(Localization.Drive_will_remain_in_track_hold_state_8_minutes_after_a_seek_or_read, "lime")}[/]");
break;
case 14:
sb.AppendLine("\t" +
Localization.Drive_will_remain_in_track_hold_state_16_minutes_after_a_seek_or_read);
sb.AppendLine($"\t[slateblue1]{
MarkupHelper.HighlightNumbers(Localization.Drive_will_remain_in_track_hold_state_16_minutes_after_a_seek_or_read, "lime")}[/]");
break;
case 15:
sb.AppendLine("\t" +
Localization.Drive_will_remain_in_track_hold_state_32_minutes_after_a_seek_or_read);
sb.AppendLine($"\t[slateblue1]{
MarkupHelper.HighlightNumbers(Localization.Drive_will_remain_in_track_hold_state_32_minutes_after_a_seek_or_read, "lime")}[/]");
break;
}
if(page.SecondsPerMinute > 0)
sb.AppendFormat("\t" + Localization.Each_minute_has_0_seconds, page.SecondsPerMinute).AppendLine();
sb.AppendFormat($"\t[slateblue1]{Localization.Each_minute_has_0_seconds}[/]",
$"[lime]{page.SecondsPerMinute}[/]")
.AppendLine();
if(page.FramesPerSecond > 0)
sb.AppendFormat("\t" + Localization.Each_second_has_0_frames, page.FramesPerSecond).AppendLine();
sb.AppendFormat($"\t[slateblue1]{Localization.Each_second_has_0_frames}[/]",
$"[lime]{page.FramesPerSecond}[/]")
.AppendLine();
return sb.ToString();
}

View File

@@ -0,0 +1,27 @@
using System.Text.RegularExpressions;
public static class MarkupHelper
{
public static string HighlightNumbers(string input, string color, bool italicize = false)
{
if(string.IsNullOrEmpty(input) || string.IsNullOrEmpty(color)) return input;
// Match integers and decimals (e.g., 42, 3.14, -7)
string pattern = @"(?<!
\[" +
Regex.Escape(color) +
@"\]
)(-?\d+(\.\d+)?)(?!
\[/\]
)";
string openingTag = italicize ? $"[italic][{color}]" : $"[{color}]";
string closingTag = italicize ? "[/][/]" : "[/]";
return Regex.Replace(input, pattern, $"{openingTag}$1{closingTag}");
}
}