Optimize combobox initialization a little

This commit is contained in:
Nikolaj Olsson 2020-02-25 07:16:48 +01:00
parent c8bff243ac
commit 4b13d5d18e
2 changed files with 27 additions and 18 deletions

View File

@ -628,7 +628,7 @@ namespace Nikse.SubtitleEdit.Forms
toolStripComboBoxWaveform.Items.Clear();
for (double zoomCounter = AudioVisualizer.ZoomMinimum; zoomCounter <= AudioVisualizer.ZoomMaximum + (0.001); zoomCounter += 0.1)
{
int percent = (int)Math.Round((zoomCounter * 100));
int percent = (int)Math.Round(zoomCounter * 100);
var item = new ComboBoxZoomItem { Text = percent + "%", ZoomFactor = zoomCounter };
toolStripComboBoxWaveform.Items.Add(item);
if (percent == 100)
@ -3404,6 +3404,7 @@ namespace Nikse.SubtitleEdit.Forms
private void UpdateRecentFilesUI()
{
var dropDownItems = new List<ToolStripMenuItem>();
reopenToolStripMenuItem.DropDownItems.Clear();
if (Configuration.Settings.General.ShowRecentFiles && Configuration.Settings.RecentFiles.Files.Count > 0)
{
@ -3414,15 +3415,16 @@ namespace Nikse.SubtitleEdit.Forms
{
if (!string.IsNullOrEmpty(file.OriginalFileName) && File.Exists(file.OriginalFileName))
{
reopenToolStripMenuItem.DropDownItems.Add(file.FileName + " + " + file.OriginalFileName, null, ReopenSubtitleToolStripMenuItemClick);
dropDownItems.Add(new ToolStripMenuItem(file.FileName + " + " + file.OriginalFileName, null, ReopenSubtitleToolStripMenuItemClick));
}
else
{
reopenToolStripMenuItem.DropDownItems.Add(file.FileName, null, ReopenSubtitleToolStripMenuItemClick);
dropDownItems.Add(new ToolStripMenuItem(file.FileName, null, ReopenSubtitleToolStripMenuItemClick));
}
UiUtil.FixFonts(reopenToolStripMenuItem.DropDownItems[reopenToolStripMenuItem.DropDownItems.Count - 1]);
UiUtil.FixFonts(dropDownItems[dropDownItems.Count - 1]);
}
}
reopenToolStripMenuItem.DropDownItems.AddRange(dropDownItems.ToArray());
}
else
{

View File

@ -668,7 +668,7 @@ namespace Nikse.SubtitleEdit.Logic
public static void InitializeSubtitleFormatComboBox(ComboBox comboBox, SubtitleFormat format)
{
InitializeSubtitleFormatComboBox(comboBox, new[] { format.FriendlyName }, format.FriendlyName);
InitializeSubtitleFormatComboBox(comboBox, new List<string> { format.FriendlyName }, format.FriendlyName);
}
public static void InitializeSubtitleFormatComboBox(ToolStripComboBox comboBox, string selectedName)
@ -680,32 +680,37 @@ namespace Nikse.SubtitleEdit.Logic
public static void InitializeSubtitleFormatComboBox(ComboBox comboBox, string selectedName)
{
var formatNames = SubtitleFormat.AllSubtitleFormats.Where(format => !format.IsVobSubIndexFile).Select(format => format.FriendlyName);
InitializeSubtitleFormatComboBox(comboBox, formatNames, selectedName);
InitializeSubtitleFormatComboBox(comboBox, formatNames.ToList(), selectedName);
}
public static void InitializeSubtitleFormatComboBox(ComboBox comboBox, IEnumerable<string> formatNames, string selectedName)
public static void InitializeSubtitleFormatComboBox(ComboBox comboBox, List<string> formatNames, string selectedName)
{
var selectedIndex = 0;
comboBox.BeginUpdate();
comboBox.Items.Clear();
using (var graphics = comboBox.CreateGraphics())
{
var maxWidth = 0.0F;
foreach (var name in formatNames)
var maxWidth = (float)comboBox.DropDownWidth;
var max = formatNames.Count;
for (var index = 0; index < max; index++)
{
var index = comboBox.Items.Add(name);
var name = formatNames[index];
if (name.Equals(selectedName, StringComparison.OrdinalIgnoreCase))
{
selectedIndex = index;
}
var width = graphics.MeasureString(name, comboBox.Font).Width;
if (width > maxWidth)
if (name.Length > 30)
{
maxWidth = width;
var width = graphics.MeasureString(name, comboBox.Font).Width;
if (width > maxWidth)
{
maxWidth = width;
}
}
}
comboBox.DropDownWidth = (int)Math.Round(maxWidth + 7.5);
}
comboBox.BeginUpdate();
comboBox.Items.Clear();
comboBox.Items.AddRange(formatNames.ToArray<object>());
comboBox.SelectedIndex = selectedIndex;
comboBox.EndUpdate();
}
@ -716,6 +721,7 @@ namespace Nikse.SubtitleEdit.Logic
var selectedItem = (TextEncoding)null;
comboBox.BeginUpdate();
comboBox.Items.Clear();
var encList = new List<TextEncoding>();
using (var graphics = comboBox.CreateGraphics())
{
var maxWidth = 0.0F;
@ -736,14 +742,14 @@ namespace Nikse.SubtitleEdit.Logic
if (encoding.CodePage.Equals(Encoding.UTF8.CodePage))
{
item = new TextEncoding(Encoding.UTF8, TextEncoding.Utf8WithBom);
comboBox.Items.Insert(TextEncoding.Utf8WithBomIndex, item);
encList.Insert(TextEncoding.Utf8WithBomIndex, item);
if (item.Equals(defaultEncoding))
{
selectedItem = item;
}
item = new TextEncoding(Encoding.UTF8, TextEncoding.Utf8WithoutBom);
comboBox.Items.Insert(TextEncoding.Utf8WithoutBomIndex, item);
encList.Insert(TextEncoding.Utf8WithBomIndex, item);
if (item.Equals(defaultEncoding))
{
selectedItem = item;
@ -751,12 +757,13 @@ namespace Nikse.SubtitleEdit.Logic
}
else
{
comboBox.Items.Add(item);
encList.Add(item);
}
}
}
comboBox.DropDownWidth = (int)Math.Round(maxWidth + 7.5);
}
comboBox.Items.AddRange(encList.ToArray<object>());
if (selectedItem == null)
{
comboBox.SelectedIndex = TextEncoding.Utf8WithBomIndex; // UTF-8 if DefaultEncoding is not found