Added settings to remember list view column sizes (check "ListViewColumsRememberSize" in Settings.xml). It's disabled by default. Thx vmb :)

git-svn-id: https://subtitleedit.googlecode.com/svn/trunk@1060 99eadd0c-20b8-1223-b5c4-2a2b2df33de2
This commit is contained in:
niksedk 2012-03-19 17:33:19 +00:00
parent 7c5545d939
commit 8f953c029a
4 changed files with 150 additions and 28 deletions

View File

@ -1,6 +1,7 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Drawing; using System.Drawing;
using System.Globalization;
using System.Windows.Forms; using System.Windows.Forms;
using Nikse.SubtitleEdit.Logic; using Nikse.SubtitleEdit.Logic;
@ -24,7 +25,8 @@ namespace Nikse.SubtitleEdit.Controls
public bool IsAlternateTextColumnVisible { get; private set; } public bool IsAlternateTextColumnVisible { get; private set; }
public bool IsExtraColumnVisible { get; private set; } public bool IsExtraColumnVisible { get; private set; }
public bool DisplayExtraFromExtra { get; set; } public bool DisplayExtraFromExtra { get; set; }
Settings _settings = null; Settings _settings;
private bool _saveColumnWidthChanges;
public int FirstVisibleIndex public int FirstVisibleIndex
{ {
@ -53,15 +55,28 @@ namespace Nikse.SubtitleEdit.Controls
} }
public void InitializeTimeStampColumWidths(Form parentForm) public void InitializeTimeStampColumWidths(Form parentForm)
{
if (_settings != null && _settings.General.ListViewColumsRememberSize && _settings.General.ListViewNumberWidth > 1 &&
_settings.General.ListViewStartWidth > 1 && _settings.General.ListViewEndWidth > 1 && _settings.General.ListViewDurationWidth > 1)
{
Columns[ColumnIndexNumber].Width = _settings.General.ListViewNumberWidth;
Columns[ColumnIndexStart].Width = _settings.General.ListViewStartWidth;
Columns[ColumnIndexEnd].Width = _settings.General.ListViewEndWidth;
Columns[ColumnIndexDuration].Width = _settings.General.ListViewDurationWidth;
Columns[ColumnIndexText].Width = _settings.General.ListViewTextWidth;
_saveColumnWidthChanges = true;
}
else
{ {
Graphics graphics = parentForm.CreateGraphics(); Graphics graphics = parentForm.CreateGraphics();
SizeF timestampSizeF = graphics.MeasureString("00:00:33,527", Font); SizeF timestampSizeF = graphics.MeasureString("00:00:33,527", Font);
int timeStampWidth = (int)(timestampSizeF.Width + 0.5) + 11; int timeStampWidth = (int)(timestampSizeF.Width + 0.5) + 11;
Columns[ColumnIndexStart].Width = timeStampWidth; Columns[ColumnIndexStart].Width = timeStampWidth;
Columns[ColumnIndexEnd].Width = timeStampWidth; Columns[ColumnIndexEnd].Width = timeStampWidth;
Columns[ColumnIndexDuration].Width = (int)(timeStampWidth * 0.8); Columns[ColumnIndexDuration].Width = (int)(timeStampWidth * 0.8);
SubtitleListView_Resize(this, null); }
SubtitleListViewResize(this, null);
} }
public SubtitleListView() public SubtitleListView()
@ -75,17 +90,47 @@ namespace Nikse.SubtitleEdit.Controls
new ColumnHeader { Width= 55 }, new ColumnHeader { Width= 55 },
new ColumnHeader { Width = -2 } // -2 = as rest of space (300) new ColumnHeader { Width = -2 } // -2 = as rest of space (300)
}); });
SubtitleListView_Resize(this, null); SubtitleListViewResize(this, null);
FullRowSelect = true; FullRowSelect = true;
View = View.Details; View = View.Details;
Resize += SubtitleListView_Resize; Resize += SubtitleListViewResize;
GridLines = true; GridLines = true;
ColumnWidthChanged += SubtitleListViewColumnWidthChanged;
}
void SubtitleListViewColumnWidthChanged(object sender, ColumnWidthChangedEventArgs e)
{
if (_settings != null && _saveColumnWidthChanges)
{
switch (e.ColumnIndex)
{
case ColumnIndexNumber:
Configuration.Settings.General.ListViewNumberWidth = Columns[ColumnIndexNumber].Width;
break;
case ColumnIndexStart:
Configuration.Settings.General.ListViewStartWidth = Columns[ColumnIndexStart].Width;
break;
case ColumnIndexEnd:
Configuration.Settings.General.ListViewEndWidth = Columns[ColumnIndexEnd].Width;
break;
case ColumnIndexDuration:
Configuration.Settings.General.ListViewDurationWidth = Columns[ColumnIndexDuration].Width;
break;
case ColumnIndexText:
Configuration.Settings.General.ListViewTextWidth = Columns[ColumnIndexText].Width;
break;
}
}
} }
public void AutoSizeAllColumns(Form parentForm) public void AutoSizeAllColumns(Form parentForm)
{ {
if (_settings != null && _settings.General.ListViewColumsRememberSize && _settings.General.ListViewNumberWidth > 1)
Columns[ColumnIndexNumber].Width = _settings.General.ListViewNumberWidth;
else
Columns[ColumnIndexNumber].Width = 55; Columns[ColumnIndexNumber].Width = 55;
InitializeTimeStampColumWidths(parentForm); InitializeTimeStampColumWidths(parentForm);
int length = Columns[ColumnIndexNumber].Width + Columns[ColumnIndexStart].Width + Columns[ColumnIndexEnd].Width + Columns[ColumnIndexDuration].Width; int length = Columns[ColumnIndexNumber].Width + Columns[ColumnIndexStart].Width + Columns[ColumnIndexEnd].Width + Columns[ColumnIndexDuration].Width;
@ -98,11 +143,21 @@ namespace Nikse.SubtitleEdit.Controls
numberOfRestColumns++; numberOfRestColumns++;
if (IsAlternateTextColumnVisible && !IsExtraColumnVisible) if (IsAlternateTextColumnVisible && !IsExtraColumnVisible)
{
if (_settings != null && _settings.General.ListViewColumsRememberSize && _settings.General.ListViewNumberWidth > 1 &&
_settings.General.ListViewStartWidth > 1 && _settings.General.ListViewEndWidth > 1 && _settings.General.ListViewDurationWidth > 1)
{
int restWidth = lengthAvailable - 15 - Columns[ColumnIndexText].Width;
if (restWidth > 0)
Columns[ColumnIndexTextAlternate].Width = restWidth;
}
else
{ {
int restWidth = (lengthAvailable / 2) - 15; int restWidth = (lengthAvailable / 2) - 15;
Columns[ColumnIndexText].Width = restWidth; Columns[ColumnIndexText].Width = restWidth;
Columns[ColumnIndexTextAlternate].Width = restWidth; Columns[ColumnIndexTextAlternate].Width = restWidth;
} }
}
else if (!IsAlternateTextColumnVisible && !IsExtraColumnVisible) else if (!IsAlternateTextColumnVisible && !IsExtraColumnVisible)
{ {
int restWidth = lengthAvailable - 23; int restWidth = lengthAvailable - 23;
@ -153,11 +208,11 @@ namespace Nikse.SubtitleEdit.Controls
IsAlternateTextColumnVisible = false; IsAlternateTextColumnVisible = false;
Columns.RemoveAt(ColumnIndexTextAlternate); Columns.RemoveAt(ColumnIndexTextAlternate);
ColumnIndexExtra = ColumnIndexTextAlternate; ColumnIndexExtra = ColumnIndexTextAlternate;
SubtitleListView_Resize(null, null); SubtitleListViewResize(null, null);
} }
} }
void SubtitleListView_Resize(object sender, EventArgs e) void SubtitleListViewResize(object sender, EventArgs e)
{ {
int width = 0; int width = 0;
for (int i = 0; i < Columns.Count - 1; i++) for (int i = 0; i < Columns.Count - 1; i++)
@ -220,7 +275,7 @@ namespace Nikse.SubtitleEdit.Controls
int i = 0; int i = 0;
foreach (Paragraph paragraph in paragraphs) foreach (Paragraph paragraph in paragraphs)
{ {
Add(paragraph, i.ToString()); Add(paragraph, i.ToString(CultureInfo.InvariantCulture));
if (DisplayExtraFromExtra && IsExtraColumnVisible) if (DisplayExtraFromExtra && IsExtraColumnVisible)
Items[i].SubItems[ColumnIndexExtra].Text = paragraph.Extra; Items[i].SubItems[ColumnIndexExtra].Text = paragraph.Extra;
SyntaxColorLine(paragraphs, i, paragraph); SyntaxColorLine(paragraphs, i, paragraph);
@ -244,7 +299,7 @@ namespace Nikse.SubtitleEdit.Controls
int i = 0; int i = 0;
foreach (Paragraph paragraph in paragraphs) foreach (Paragraph paragraph in paragraphs)
{ {
Add(paragraph, i.ToString()); Add(paragraph, i.ToString(CultureInfo.InvariantCulture));
Paragraph alternate = Utilities.GetOriginalParagraph(i, paragraph, paragraphsAlternate); Paragraph alternate = Utilities.GetOriginalParagraph(i, paragraph, paragraphsAlternate);
if (alternate != null) if (alternate != null)
SetAlternateText(i, alternate.Text); SetAlternateText(i, alternate.Text);
@ -413,7 +468,7 @@ namespace Nikse.SubtitleEdit.Controls
foreach (ListViewItem item in Items) foreach (ListViewItem item in Items)
{ {
if (item.Text == p.Number.ToString() && if (item.Text == p.Number.ToString(CultureInfo.InvariantCulture) &&
item.SubItems[ColumnIndexStart].Text == p.StartTime.ToString() && item.SubItems[ColumnIndexStart].Text == p.StartTime.ToString() &&
item.SubItems[ColumnIndexEnd].Text == p.EndTime.ToString() && item.SubItems[ColumnIndexEnd].Text == p.EndTime.ToString() &&
item.SubItems[ColumnIndexText].Text == p.Text) item.SubItems[ColumnIndexText].Text == p.Text)
@ -519,12 +574,12 @@ namespace Nikse.SubtitleEdit.Controls
if (Items[i].SubItems.Count == ColumnIndexExtra + 1) if (Items[i].SubItems.Count == ColumnIndexExtra + 1)
{ {
Items[i].SubItems[ColumnIndexExtra].Text = string.Empty; Items[i].SubItems[ColumnIndexExtra].Text = string.Empty;
Items[i].SubItems[ColumnIndexExtra].BackColor = this.BackColor; Items[i].SubItems[ColumnIndexExtra].BackColor = BackColor;
Items[i].SubItems[ColumnIndexExtra].ForeColor = this.ForeColor; Items[i].SubItems[ColumnIndexExtra].ForeColor = ForeColor;
} }
} }
Columns.RemoveAt(ColumnIndexExtra); Columns.RemoveAt(ColumnIndexExtra);
SubtitleListView_Resize(null, null); SubtitleListViewResize(null, null);
} }
} }
@ -664,6 +719,26 @@ namespace Nikse.SubtitleEdit.Controls
public void ShowAllColumns() public void ShowAllColumns()
{ {
if (_settings != null && _settings.General.ListViewColumsRememberSize && _settings.General.ListViewNumberWidth > 1 &&
_settings.General.ListViewStartWidth > 1 && _settings.General.ListViewEndWidth > 1 && _settings.General.ListViewDurationWidth > 1)
{
Columns[ColumnIndexNumber].Width = _settings.General.ListViewNumberWidth;
Columns[ColumnIndexStart].Width = _settings.General.ListViewStartWidth;
Columns[ColumnIndexEnd].Width = _settings.General.ListViewEndWidth;
Columns[ColumnIndexDuration].Width = _settings.General.ListViewDurationWidth;
Columns[ColumnIndexText].Width = _settings.General.ListViewTextWidth;
if (IsAlternateTextColumnVisible)
{
Columns[ColumnIndexTextAlternate].Width = -2;
}
else
{
Columns[ColumnIndexText].Width = -2;
}
return;
}
Columns[ColumnIndexNumber].Width = 45; Columns[ColumnIndexNumber].Width = 45;
Columns[ColumnIndexEnd].Width = 80; Columns[ColumnIndexEnd].Width = 80;
Columns[ColumnIndexDuration].Width = 55; Columns[ColumnIndexDuration].Width = 55;

View File

@ -261,7 +261,7 @@ namespace Nikse.SubtitleEdit.Forms
Utilities.InitializeSubtitleFont(textBoxListViewText); Utilities.InitializeSubtitleFont(textBoxListViewText);
Utilities.InitializeSubtitleFont(textBoxListViewTextAlternate); Utilities.InitializeSubtitleFont(textBoxListViewTextAlternate);
Utilities.InitializeSubtitleFont(SubtitleListview1); Utilities.InitializeSubtitleFont(SubtitleListview1);
SubtitleListview1.AutoSizeAllColumns(this); //SubtitleListview1.AutoSizeAllColumns(this);
tabControlSubtitle.SelectTab(TabControlSourceView); // AC tabControlSubtitle.SelectTab(TabControlSourceView); // AC
ShowSourceLineNumber(); // AC ShowSourceLineNumber(); // AC
@ -5803,6 +5803,8 @@ namespace Nikse.SubtitleEdit.Forms
SaveUndockedPositions(); SaveUndockedPositions();
SaveListViewWidths();
Configuration.Settings.Save(); Configuration.Settings.Save();
if (mediaPlayer.VideoPlayer != null) if (mediaPlayer.VideoPlayer != null)
@ -5813,6 +5815,18 @@ namespace Nikse.SubtitleEdit.Forms
} }
} }
private void SaveListViewWidths()
{
if (Configuration.Settings.General.ListViewColumsRememberSize)
{
Configuration.Settings.General.ListViewNumberWidth = SubtitleListview1.Columns[0].Width;
Configuration.Settings.General.ListViewStartWidth = SubtitleListview1.Columns[1].Width;
Configuration.Settings.General.ListViewEndWidth = SubtitleListview1.Columns[2].Width;
Configuration.Settings.General.ListViewDurationWidth = SubtitleListview1.Columns[3].Width;
Configuration.Settings.General.ListViewTextWidth = SubtitleListview1.Columns[4].Width;
}
}
private void SaveUndockedPositions() private void SaveUndockedPositions()
{ {
if (_videoPlayerUnDocked != null && !_videoPlayerUnDocked.IsDisposed) if (_videoPlayerUnDocked != null && !_videoPlayerUnDocked.IsDisposed)

View File

@ -681,7 +681,7 @@
AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w
LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0 LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0
ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAAD0 ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAAD0
CAAAAk1TRnQBSQFMAgEBAgEAAYgBEAGIAhABAAEQAQAE/wEJAQAI/wFCAU0BNgEEBgABNgEEAgABKAMA CAAAAk1TRnQBSQFMAgEBAgEAAZABEAGQAhABAAEQAQAE/wEJAQAI/wFCAU0BNgEEBgABNgEEAgABKAMA
AUADAAEQAwABAQEAAQgGAAEEGAABgAIAAYADAAKAAQABgAMAAYABAAGAAQACgAIAA8ABAAHAAdwBwAEA AUADAAEQAwABAQEAAQgGAAEEGAABgAIAAYADAAKAAQABgAMAAYABAAGAAQACgAIAA8ABAAHAAdwBwAEA
AfABygGmAQABMwUAATMBAAEzAQABMwEAAjMCAAMWAQADHAEAAyIBAAMpAQADVQEAA00BAANCAQADOQEA AfABygGmAQABMwUAATMBAAEzAQABMwEAAjMCAAMWAQADHAEAAyIBAAMpAQADVQEAA00BAANCAQADOQEA
AYABfAH/AQACUAH/AQABkwEAAdYBAAH/AewBzAEAAcYB1gHvAQAB1gLnAQABkAGpAa0CAAH/ATMDAAFm AYABfAH/AQACUAH/AQABkwEAAdYBAAH/AewBzAEAAcYB1gHvAQAB1gLnAQABkAGpAa0CAAH/ATMDAAFm

View File

@ -1,6 +1,7 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Drawing; using System.Drawing;
using System.Globalization;
using System.IO; using System.IO;
using System.Text; using System.Text;
using System.Xml; using System.Xml;
@ -294,6 +295,12 @@ namespace Nikse.SubtitleEdit.Logic
public bool ShowOriginalAsPreviewIfAvailable { get; set; } public bool ShowOriginalAsPreviewIfAvailable { get; set; }
public int LastPacCodePage { get; set; } public int LastPacCodePage { get; set; }
public string OpenSubtitleExtraExtensions { get; set; } public string OpenSubtitleExtraExtensions { get; set; }
public bool ListViewColumsRememberSize { get; set; }
public int ListViewNumberWidth { get; set; }
public int ListViewStartWidth { get; set; }
public int ListViewEndWidth { get; set; }
public int ListViewDurationWidth { get; set; }
public int ListViewTextWidth { get; set; }
public GeneralSettings() public GeneralSettings()
{ {
@ -752,7 +759,7 @@ namespace Nikse.SubtitleEdit.Logic
settings.RecentFiles.Files.Add(new RecentFileEntry() { FileName = listNode.InnerText, FirstVisibleIndex = int.Parse(firstVisibleIndex), FirstSelectedIndex = int.Parse(firstSelectedIndex), VideoFileName = videoFileName, OriginalFileName = originalFileName }); settings.RecentFiles.Files.Add(new RecentFileEntry() { FileName = listNode.InnerText, FirstVisibleIndex = int.Parse(firstVisibleIndex), FirstSelectedIndex = int.Parse(firstSelectedIndex), VideoFileName = videoFileName, OriginalFileName = originalFileName });
} }
settings.General = new Nikse.SubtitleEdit.Logic.GeneralSettings(); settings.General = new GeneralSettings();
node = doc.DocumentElement.SelectSingleNode("General"); node = doc.DocumentElement.SelectSingleNode("General");
XmlNode subNode = node.SelectSingleNode("ShowToolbarNew"); XmlNode subNode = node.SelectSingleNode("ShowToolbarNew");
if (subNode != null) if (subNode != null)
@ -957,8 +964,26 @@ namespace Nikse.SubtitleEdit.Logic
subNode = node.SelectSingleNode("OpenSubtitleExtraExtensions"); subNode = node.SelectSingleNode("OpenSubtitleExtraExtensions");
if (subNode != null) if (subNode != null)
settings.General.OpenSubtitleExtraExtensions = subNode.InnerText.Trim(); settings.General.OpenSubtitleExtraExtensions = subNode.InnerText.Trim();
subNode = node.SelectSingleNode("ListViewColumsRememberSize");
if (subNode != null)
settings.General.ListViewColumsRememberSize = Convert.ToBoolean(subNode.InnerText.Trim());
subNode = node.SelectSingleNode("ListViewNumberWidth");
if (subNode != null)
settings.General.ListViewNumberWidth = Convert.ToInt32(subNode.InnerText.Trim());
subNode = node.SelectSingleNode("ListViewStartWidth");
if (subNode != null)
settings.General.ListViewStartWidth = Convert.ToInt32(subNode.InnerText.Trim());
subNode = node.SelectSingleNode("ListViewEndWidth");
if (subNode != null)
settings.General.ListViewEndWidth = Convert.ToInt32(subNode.InnerText.Trim());
subNode = node.SelectSingleNode("ListViewDurationWidth");
if (subNode != null)
settings.General.ListViewDurationWidth = Convert.ToInt32(subNode.InnerText.Trim());
subNode = node.SelectSingleNode("ListViewTextWidth");
if (subNode != null)
settings.General.ListViewTextWidth = Convert.ToInt32(subNode.InnerText.Trim());
settings.Tools = new Nikse.SubtitleEdit.Logic.ToolsSettings(); settings.Tools = new ToolsSettings();
node = doc.DocumentElement.SelectSingleNode("Tools"); node = doc.DocumentElement.SelectSingleNode("Tools");
subNode = node.SelectSingleNode("StartSceneIndex"); subNode = node.SelectSingleNode("StartSceneIndex");
if (subNode != null) if (subNode != null)
@ -1604,6 +1629,14 @@ namespace Nikse.SubtitleEdit.Logic
textWriter.WriteElementString("ShowOriginalAsPreviewIfAvailable", settings.General.ShowOriginalAsPreviewIfAvailable.ToString()); textWriter.WriteElementString("ShowOriginalAsPreviewIfAvailable", settings.General.ShowOriginalAsPreviewIfAvailable.ToString());
textWriter.WriteElementString("LastPacCodePage", settings.General.LastPacCodePage.ToString()); textWriter.WriteElementString("LastPacCodePage", settings.General.LastPacCodePage.ToString());
textWriter.WriteElementString("OpenSubtitleExtraExtensions", settings.General.OpenSubtitleExtraExtensions); textWriter.WriteElementString("OpenSubtitleExtraExtensions", settings.General.OpenSubtitleExtraExtensions);
textWriter.WriteElementString("ListViewColumsRememberSize", settings.General.ListViewColumsRememberSize.ToString(CultureInfo.InvariantCulture));
textWriter.WriteElementString("ListViewNumberWidth", settings.General.ListViewNumberWidth.ToString(CultureInfo.InvariantCulture));
textWriter.WriteElementString("ListViewStartWidth", settings.General.ListViewStartWidth.ToString(CultureInfo.InvariantCulture));
textWriter.WriteElementString("ListViewEndWidth", settings.General.ListViewEndWidth.ToString(CultureInfo.InvariantCulture));
textWriter.WriteElementString("ListViewDurationWidth", settings.General.ListViewDurationWidth.ToString(CultureInfo.InvariantCulture));
textWriter.WriteElementString("ListViewTextWidth", settings.General.ListViewTextWidth.ToString(CultureInfo.InvariantCulture));
textWriter.WriteEndElement(); textWriter.WriteEndElement();
textWriter.WriteStartElement("Tools", ""); textWriter.WriteStartElement("Tools", "");