From 16587c06782436f93c68058f53eaef5af67281a0 Mon Sep 17 00:00:00 2001 From: Danny Rorabaugh Date: Tue, 8 Sep 2026 13:55:15 -0400 Subject: [PATCH] Remove dead internal code from L10NSharp.Windows.Forms NodeComparer, UtilsWinforms, InitializationProgressDlg and InitializationProgressDlgBase are internal and unreferenced anywhere in the solution; the two dialogs referenced only each other. Removing them is not an API change, since none of them were public. The unreferenced public types in UIComponents (LanguageChoosingSimpleDialog, UILanguageListBox, FallbackLanguagesDlg and FallbackLanguagesDlgBase) are deliberately left in place: dropping them would be a breaking change. Co-Authored-By: Claude Opus 5 (1M context) --- .../L10NSharp.Windows.Forms.csproj | 6 - .../UIComponents/InitializationProgressDlg.cs | 86 ------------ .../InitializationProgressDlgBase.Designer.cs | 127 ------------------ .../InitializationProgressDlgBase.cs | 64 --------- .../InitializationProgressDlgBase.resx | 123 ----------------- .../UIComponents/NodeComparer.cs | 85 ------------ src/L10NSharp.Windows.Forms/UtilsWinforms.cs | 54 -------- 7 files changed, 545 deletions(-) delete mode 100644 src/L10NSharp.Windows.Forms/UIComponents/InitializationProgressDlg.cs delete mode 100644 src/L10NSharp.Windows.Forms/UIComponents/InitializationProgressDlgBase.Designer.cs delete mode 100644 src/L10NSharp.Windows.Forms/UIComponents/InitializationProgressDlgBase.cs delete mode 100644 src/L10NSharp.Windows.Forms/UIComponents/InitializationProgressDlgBase.resx delete mode 100644 src/L10NSharp.Windows.Forms/UIComponents/NodeComparer.cs delete mode 100644 src/L10NSharp.Windows.Forms/UtilsWinforms.cs diff --git a/src/L10NSharp.Windows.Forms/L10NSharp.Windows.Forms.csproj b/src/L10NSharp.Windows.Forms/L10NSharp.Windows.Forms.csproj index 32e0d443..79c77093 100644 --- a/src/L10NSharp.Windows.Forms/L10NSharp.Windows.Forms.csproj +++ b/src/L10NSharp.Windows.Forms/L10NSharp.Windows.Forms.csproj @@ -47,12 +47,6 @@ Form - - Form - - - Form - Form diff --git a/src/L10NSharp.Windows.Forms/UIComponents/InitializationProgressDlg.cs b/src/L10NSharp.Windows.Forms/UIComponents/InitializationProgressDlg.cs deleted file mode 100644 index 89a1f906..00000000 --- a/src/L10NSharp.Windows.Forms/UIComponents/InitializationProgressDlg.cs +++ /dev/null @@ -1,86 +0,0 @@ -using System; -using System.Collections.Generic; -using System.ComponentModel; -using System.Diagnostics; -using System.Drawing; -using System.Reflection; -using L10NSharp.CodeReader; - -namespace L10NSharp.Windows.Forms.UIComponents -{ - internal class InitializationProgressDlg: InitializationProgressDlgBase - { - public IEnumerable ExtractedInfo { get; private set; } - - /// ------------------------------------------------------------------------------------ - public InitializationProgressDlg(string appName, IEnumerable additionalLocalizationMethods, - params string[] namespaceBeginnings): - base(appName, additionalLocalizationMethods, namespaceBeginnings) - { - } - - public InitializationProgressDlg(string appName, Icon formIcon, - IEnumerable additionalLocalizationMethods, - params string[] namespaceBeginnings) : - base(appName, formIcon, additionalLocalizationMethods, namespaceBeginnings) - { - } - - protected override void backgroundWorker_DoWork(object sender, System.ComponentModel.DoWorkEventArgs e) - { - var extractor = new StringExtractor(); - e.Result = extractor.DoExtractingWork(_additionalLocalizationMethods, _namespaceBeginnings, sender as BackgroundWorker); - } - - protected override void backgroundWorker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) - { - if (e.Error != null) - { - var message = $"Error in extracting localizable strings: {e.Error.Message} ({e.Error})"; - Console.WriteLine(message); - - ReportError(message); - } - else - { - try - { - if (e.Result is IEnumerable info) - { - ExtractedInfo = info; - } - else - { - var got = e.Result == null ? "null" : $"{e.Result.GetType()}: {e.Result}"; - ReportError($"Expected IEnumerable but got {got}"); - } - } - catch (Exception ex) - { - var message = $"Error in extracting localizable strings: {ex.Message}"; - Debug.WriteLine(message); - ReportError(message); - } - } - - Close(); - } - - private void ReportError(string message) - { - // Adding the error to the ExtractedInfo here serves two purposes. - // 1. It makes sure we get a valid file. Otherwise we get failures later. - // 2. It provides a way for the developer to see the actual error which caused extraction to fail. - ExtractedInfo = new[] - { - new LocalizingInfoWinforms("StringExtractor_Error") - { - LangId = "en", - Text = "An error occurred while collecting strings or there were no strings to collect. " + - "Check comment for exception. Note, the exception may not occur again until you delete this file.", - Comment = message - } - }; - } - } -} diff --git a/src/L10NSharp.Windows.Forms/UIComponents/InitializationProgressDlgBase.Designer.cs b/src/L10NSharp.Windows.Forms/UIComponents/InitializationProgressDlgBase.Designer.cs deleted file mode 100644 index 955f6abb..00000000 --- a/src/L10NSharp.Windows.Forms/UIComponents/InitializationProgressDlgBase.Designer.cs +++ /dev/null @@ -1,127 +0,0 @@ -namespace L10NSharp.Windows.Forms.UIComponents -{ - partial class InitializationProgressDlgBase - { - /// - /// 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._tableLayout = new System.Windows.Forms.TableLayoutPanel(); - this._labelMessage = new System.Windows.Forms.Label(); - this._progressBar = new System.Windows.Forms.ProgressBar(); - this._labelDetails = new System.Windows.Forms.Label(); - this._backgroundWorker = new System.ComponentModel.BackgroundWorker(); - this._tableLayout.SuspendLayout(); - this.SuspendLayout(); - // - // _tableLayout - // - this._tableLayout.ColumnCount = 1; - this._tableLayout.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F)); - this._tableLayout.Controls.Add(this._labelMessage, 0, 0); - this._tableLayout.Controls.Add(this._progressBar, 0, 1); - this._tableLayout.Controls.Add(this._labelDetails, 0, 2); - this._tableLayout.Dock = System.Windows.Forms.DockStyle.Fill; - this._tableLayout.Location = new System.Drawing.Point(15, 20); - this._tableLayout.Name = "_tableLayout"; - this._tableLayout.RowCount = 3; - this._tableLayout.RowStyles.Add(new System.Windows.Forms.RowStyle()); - this._tableLayout.RowStyles.Add(new System.Windows.Forms.RowStyle()); - this._tableLayout.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F)); - this._tableLayout.Size = new System.Drawing.Size(326, 91); - this._tableLayout.TabIndex = 1; - // - // _labelMessage - // - this._labelMessage.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) - | System.Windows.Forms.AnchorStyles.Right))); - this._labelMessage.AutoSize = true; - this._labelMessage.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this._labelMessage.Location = new System.Drawing.Point(0, 0); - this._labelMessage.Margin = new System.Windows.Forms.Padding(0, 0, 0, 6); - this._labelMessage.Name = "_labelMessage"; - this._labelMessage.Size = new System.Drawing.Size(326, 15); - this._labelMessage.TabIndex = 1; - this._labelMessage.Text = "Preparing User Interface for Localization.."; - // - // _progressBar - // - this._progressBar.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) - | System.Windows.Forms.AnchorStyles.Right))); - this._progressBar.Location = new System.Drawing.Point(0, 21); - this._progressBar.Margin = new System.Windows.Forms.Padding(0); - this._progressBar.Name = "_progressBar"; - this._progressBar.Size = new System.Drawing.Size(326, 18); - this._progressBar.TabIndex = 2; - // - // _labelDetails - // - this._labelDetails.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) - | System.Windows.Forms.AnchorStyles.Right))); - this._labelDetails.AutoEllipsis = true; - this._labelDetails.AutoSize = true; - this._labelDetails.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this._labelDetails.Location = new System.Drawing.Point(0, 49); - this._labelDetails.Margin = new System.Windows.Forms.Padding(0, 10, 0, 0); - this._labelDetails.Name = "_labelDetails"; - this._labelDetails.Size = new System.Drawing.Size(326, 30); - this._labelDetails.TabIndex = 3; - this._labelDetails.Text = "Looking for user interface text that can be localized..."; - // - // _backgroundWorker - // - this._backgroundWorker.WorkerReportsProgress = true; - this._backgroundWorker.DoWork += new System.ComponentModel.DoWorkEventHandler(this.backgroundWorker_DoWork); - this._backgroundWorker.ProgressChanged += new System.ComponentModel.ProgressChangedEventHandler(this.backgroundWorker_ProgressChanged); - this._backgroundWorker.RunWorkerCompleted += new System.ComponentModel.RunWorkerCompletedEventHandler(this.backgroundWorker_RunWorkerCompleted); - // - // InitializationProgressDlg - // - this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.ClientSize = new System.Drawing.Size(356, 126); - this.Controls.Add(this._tableLayout); - this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle; - this.MaximizeBox = false; - this.MinimizeBox = false; - this.Name = "InitializationProgressDlg"; - this.Padding = new System.Windows.Forms.Padding(15, 20, 15, 15); - this.Text = "#"; - this.TopMost = true; - this._tableLayout.ResumeLayout(false); - this._tableLayout.PerformLayout(); - this.ResumeLayout(false); - - } - - #endregion - - protected System.Windows.Forms.TableLayoutPanel _tableLayout; - protected System.Windows.Forms.Label _labelMessage; - protected System.Windows.Forms.ProgressBar _progressBar; - protected System.Windows.Forms.Label _labelDetails; - protected System.ComponentModel.BackgroundWorker _backgroundWorker; - } -} diff --git a/src/L10NSharp.Windows.Forms/UIComponents/InitializationProgressDlgBase.cs b/src/L10NSharp.Windows.Forms/UIComponents/InitializationProgressDlgBase.cs deleted file mode 100644 index e751a6ba..00000000 --- a/src/L10NSharp.Windows.Forms/UIComponents/InitializationProgressDlgBase.cs +++ /dev/null @@ -1,64 +0,0 @@ -using System; -using System.Collections.Generic; -using System.ComponentModel; -using System.Drawing; -using System.Reflection; -using System.Windows.Forms; - -namespace L10NSharp.Windows.Forms.UIComponents -{ - /// ---------------------------------------------------------------------------------------- - internal partial class InitializationProgressDlgBase : Form - { - protected readonly IEnumerable _additionalLocalizationMethods; - protected readonly string[] _namespaceBeginnings; - private readonly Icon _formIcon; - - /// ------------------------------------------------------------------------------------ - protected InitializationProgressDlgBase(string appName, - IEnumerable additionalLocalizationMethods, - params string[] namespaceBeginnings) - { - InitializeComponent(); - Text = appName; - _additionalLocalizationMethods = additionalLocalizationMethods; - _namespaceBeginnings = namespaceBeginnings; - } - - protected InitializationProgressDlgBase(string appName, Icon formIcon, - IEnumerable additionalLocalizationMethods, params string[] namespaceBeginnings) : - this(appName, additionalLocalizationMethods, namespaceBeginnings) - { - _formIcon = formIcon; - } - - /// ------------------------------------------------------------------------------------ - protected override void OnShown(EventArgs e) - { - base.OnShown(e); - _backgroundWorker.RunWorkerAsync(); - } - - protected virtual void backgroundWorker_DoWork(object sender, System.ComponentModel.DoWorkEventArgs e) - { - } - - - private void backgroundWorker_ProgressChanged(object sender, ProgressChangedEventArgs e) - { - _progressBar.Value = Math.Min(e.ProgressPercentage, 100); - } - - protected virtual void backgroundWorker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) - { - } - - protected override void OnHandleCreated(EventArgs e) - { - base.OnHandleCreated(e); - - // a bug in Mono requires us to wait to set Icon until handle created. - if (_formIcon != null) Icon = _formIcon; - } - } -} diff --git a/src/L10NSharp.Windows.Forms/UIComponents/InitializationProgressDlgBase.resx b/src/L10NSharp.Windows.Forms/UIComponents/InitializationProgressDlgBase.resx deleted file mode 100644 index 0278764f..00000000 --- a/src/L10NSharp.Windows.Forms/UIComponents/InitializationProgressDlgBase.resx +++ /dev/null @@ -1,123 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 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 - - - 17, 17 - - \ No newline at end of file diff --git a/src/L10NSharp.Windows.Forms/UIComponents/NodeComparer.cs b/src/L10NSharp.Windows.Forms/UIComponents/NodeComparer.cs deleted file mode 100644 index 74df1412..00000000 --- a/src/L10NSharp.Windows.Forms/UIComponents/NodeComparer.cs +++ /dev/null @@ -1,85 +0,0 @@ -using System.Collections.Generic; -using System.Globalization; -using System.Windows.Forms; - -namespace L10NSharp.Windows.Forms.UIComponents -{ - /// ---------------------------------------------------------------------------------------- - internal class NodeComparer : IComparer> - { - internal enum SortField - { - Id = 0, - SourceText = 1, - TargetText = 2, - SourceToolTip = 3, - TargetToolTip = 4 - } - - private readonly string _srcLangId; - private readonly string _tgtLangId; - private readonly SortOrder _sortOrder; - private readonly SortField _sortField; - - /// ------------------------------------------------------------------------------------ - internal NodeComparer(string srcLangId, string tgtLangId, SortOrder sortOrder, SortField sortField) - { - _srcLangId = srcLangId; - _tgtLangId = tgtLangId; - _sortOrder = sortOrder; - _sortField = sortField; - } - - /// ------------------------------------------------------------------------------------ - public int Compare(LocTreeNode x, LocTreeNode y) - { - string xText = string.Empty; - string yText = string.Empty; - - var prefixToRemove = (x.TreeView != null && x.TreeView.SelectedNode != null ? - x.TreeView.SelectedNode.Name : string.Empty); - - const string kNonsenseIfNoPrefixExists = "5%ij#a"; //replace fails if the pattern is "", so use this - if (string.IsNullOrEmpty(prefixToRemove)) - prefixToRemove = kNonsenseIfNoPrefixExists; - - var ci = CultureInfo.GetCultureInfo("en"); - - switch ((int)_sortField) - { - case 0: - xText = x.Id.Replace(prefixToRemove, string.Empty).Trim('.'); - yText = y.Id.Replace(prefixToRemove, string.Empty).Trim('.'); - break; - - case 1: - xText = x.GetText(_srcLangId) ?? string.Empty; - yText = y.GetText(_srcLangId) ?? string.Empty; - ci = CultureInfo.GetCultureInfo(_srcLangId); - break; - - case 2: - xText = (x.GetTranslatedText(_tgtLangId) ?? x.GetText(_tgtLangId)) ?? string.Empty; - yText = (y.GetTranslatedText(_tgtLangId) ?? y.GetText(_tgtLangId)) ?? string.Empty; - ci = CultureInfo.GetCultureInfo(_tgtLangId); - break; - - case 3: - xText = x.GetToolTip(_srcLangId) ?? string.Empty; - yText = y.GetToolTip(_srcLangId) ?? string.Empty; - ci = CultureInfo.GetCultureInfo(_srcLangId); - break; - - case 4: - xText = (x.GetTranslatedToolTip(_tgtLangId) ?? x.GetToolTip(_tgtLangId)) ?? string.Empty; - yText = (y.GetTranslatedToolTip(_tgtLangId) ?? y.GetToolTip(_tgtLangId)) ?? string.Empty; - ci = CultureInfo.GetCultureInfo(_tgtLangId); - break; - } - - return (_sortOrder == SortOrder.Ascending ? - string.Compare(xText, yText, false, ci) : - string.Compare(yText, xText, false, ci)); - } - } -} diff --git a/src/L10NSharp.Windows.Forms/UtilsWinforms.cs b/src/L10NSharp.Windows.Forms/UtilsWinforms.cs deleted file mode 100644 index 05fce8c7..00000000 --- a/src/L10NSharp.Windows.Forms/UtilsWinforms.cs +++ /dev/null @@ -1,54 +0,0 @@ -using System; -using System.Windows.Forms; -using System.Runtime.InteropServices; - -namespace L10NSharp.Windows.Forms -{ - /// ---------------------------------------------------------------------------------------- - internal static class UtilsWinforms - { - private const int WM_SETREDRAW = 0xB; - - - [DllImport("user32.dll", CharSet = CharSet.Auto, EntryPoint = "SendMessage")] - private static extern void SendMessageWindows(IntPtr hWnd, int msg, int wParam, int lParam); - - public static void SendMessage(IntPtr hWnd, int msg, int wParam, int lParam) - { - SendMessageWindows(hWnd, msg, wParam, lParam); - } - - /// ------------------------------------------------------------------------------------ - /// - /// Turns window redrawing on or off. After turning on, the window will be invalidated. - /// - /// ------------------------------------------------------------------------------------ - public static void SetWindowRedraw(Control ctrl, bool turnOn) - { - SetWindowRedraw(ctrl, turnOn, true); - } - - /// ------------------------------------------------------------------------------------ - public static void SetWindowRedraw(Control ctrl, bool turnOn, - bool invalidateAfterTurningOn) - { - if (ctrl != null && !ctrl.IsDisposed && ctrl.IsHandleCreated) - { - if (L10NSharp.Utils.IsMono) - { - if (turnOn) - ctrl.ResumeLayout(invalidateAfterTurningOn); - else - ctrl.SuspendLayout(); - } - else - { - SendMessage(ctrl.Handle, WM_SETREDRAW, (turnOn ? 1 : 0), 0); - } - - if (turnOn && invalidateAfterTurningOn) - ctrl.Invalidate(true); - } - } - } -}