1 Commits

Author SHA1 Message Date
Kareem Horstink 9b7b8df874 fix: wire up GUI browse buttons, make text boxes editable, pause CLI on error, register codepage provider
GUI:
- Attach Click event handlers to browse input/output buttons (were defined but never wired up)
- Remove ReadOnly=true from input/output text boxes so users can type or copy paths

CLI:
- Make Cli.Run return bool to signal errors
- Only pause with Console.ReadLine() when an error occurs (not on success)
- Fix default case to return true

Core:
- Add System.Text.Encoding.CodePages package for CP1252 SRT file support
- Call Encoding.RegisterProvider(CodePagesEncodingProvider.Instance) before reading files
2026-06-25 16:46:05 +00:00
6 changed files with 26 additions and 7 deletions
+6 -4
View File
@@ -4,19 +4,19 @@ namespace ConvertSRTto3DASS;
internal static class Cli
{
public static void Run(string[] args)
public static bool Run(string[] args)
{
if (args.Length == 0 || args[0] is "--help" or "-h" or "/?")
{
PrintUsage();
return;
return false;
}
var inputPath = args[0];
if (!File.Exists(inputPath))
{
Console.Error.WriteLine($"Input file not found: {inputPath}");
return;
return true;
}
// Parse options
@@ -80,7 +80,7 @@ internal static class Cli
break;
default:
Console.Error.WriteLine($"Unknown argument: {args[i]}");
return;
return true;
}
i++;
}
@@ -106,11 +106,13 @@ internal static class Cli
var result = SrtConverter.Convert(options);
Console.WriteLine($"Parsed: {result.SubtitleCount} subtitle blocks");
Console.WriteLine("Conversion complete.");
return false;
}
catch (Exception ex)
{
Console.Error.WriteLine($"ERROR: {ex.Message}");
Console.Error.WriteLine(ex.ToString());
return true;
}
string GetNextArg(int index) => index + 1 < args.Length ? args[index + 1] : throw new ArgumentException($"Missing value for {args[index]}");
@@ -13,6 +13,9 @@
<PropertyGroup Condition="'$(Configuration)' == 'Release'">
<Optimize>true</Optimize>
<PublishSingleFile>true</PublishSingleFile>
<PublishReadyToRun>false</PublishReadyToRun>
<StripSymbols>true</StripSymbols>
</PropertyGroup>
<ItemGroup>
+6 -1
View File
@@ -2,5 +2,10 @@ namespace ConvertSRTto3DASS;
internal static class Program
{
static void Main(string[] args) => Cli.Run(args);
static void Main(string[] args)
{
var hadError = Cli.Run(args);
if (hadError)
Console.ReadLine();
}
}
@@ -9,6 +9,10 @@
<RootNamespace>ConvertSRTto3DASS</RootNamespace>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="System.Text.Encoding.CodePages" Version="8.0.0" />
</ItemGroup>
<PropertyGroup Condition="'$(Configuration)' == 'Release'">
<Optimize>true</Optimize>
</PropertyGroup>
+3
View File
@@ -16,6 +16,9 @@ public static class SrtConverter
public static ConversionResult Convert(ConversionOptions options)
{
// Register legacy codepage support (needed for CP1252, etc.)
Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
var srtText = ReadSrt(options.InputPath);
var subtitles = ParseSrt(srtText);
var header = CreateHeader(options);
+4 -2
View File
@@ -71,11 +71,13 @@ partial class Form1
Size = new Size(1040, 80)
};
label_InputFile = new Label { Text = "Input SRT:", Font = segoe, Location = new Point(15, 25), AutoSize = true };
textBox_InputFile = new TextBox { Location = new Point(100, 22), Size = new Size(780, 23), ReadOnly = true };
textBox_InputFile = new TextBox { Location = new Point(100, 22), Size = new Size(780, 23) };
button_BrowseInput = new Button { Text = "Browse...", Location = new Point(890, 20), Size = new Size(90, 25), Font = segoe, FlatStyle = FlatStyle.Flat };
button_BrowseInput.Click += button_BrowseInput_Click;
label_OutputFile = new Label { Text = "Output ASS:", Font = segoe, Location = new Point(15, 55), AutoSize = true };
textBox_OutputFile = new TextBox { Location = new Point(100, 52), Size = new Size(780, 23), ReadOnly = true };
textBox_OutputFile = new TextBox { Location = new Point(100, 52), Size = new Size(780, 23) };
button_BrowseOutput = new Button { Text = "Browse...", Location = new Point(890, 50), Size = new Size(90, 25), Font = segoe, FlatStyle = FlatStyle.Flat };
button_BrowseOutput.Click += button_BrowseOutput_Click;
groupBox_File.Controls.AddRange([label_InputFile, textBox_InputFile, button_BrowseInput, label_OutputFile, textBox_OutputFile, button_BrowseOutput]);
// ---- Mode section ----