Work on new shortcuts

This commit is contained in:
Nikolaj Olsson 2018-08-17 06:11:08 +02:00
parent 59b1b13253
commit f3ec11f54c
9 changed files with 207 additions and 21 deletions

View File

@ -1963,7 +1963,10 @@ can edit in same subtitle file (collaboration)</Information>
<GoToFirstSelectedLine>Go to first selected line</GoToFirstSelectedLine>
<GoToNextEmptyLine>Go to next empty line</GoToNextEmptyLine>
<MergeSelectedLines>Merge selected lines</MergeSelectedLines>
<MergeSelectedLinesAndUnbreak>Merge selected lines and unbreak</MergeSelectedLinesAndUnbreak>
<MergeSelectedLinesAndUnbreakCjk>Merge selected lines and unbreak without space (CJK)</MergeSelectedLinesAndUnbreakCjk>
<MergeSelectedLinesOnlyFirstText>Merge selected lines, keep only first non-empty text</MergeSelectedLinesOnlyFirstText>
<MergeSelectedLinesBilingual>Merge selected lines bilingual</MergeSelectedLinesBilingual>
<ToggleTranslationMode>Toggle translator mode</ToggleTranslationMode>
<SwitchOriginalAndTranslation>Switch original and translation</SwitchOriginalAndTranslation>
<MergeOriginalAndTranslation>Merge original and translation</MergeOriginalAndTranslation>
@ -2240,6 +2243,7 @@ Setting a font for a subtitle is normally done in the video player, but can also
<UnknownSubtitle>
<Title>Unknown subtitle type</Title>
<Message>If you want this fixed please send an email to mailto:niksedk@gmail.com and include a copy of the subtitle.</Message>
<ImportAsPlainText>Import as plain text...</ImportAsPlainText>
</UnknownSubtitle>
<VisualSync>
<Title>Visual sync</Title>

View File

@ -2253,7 +2253,10 @@ can edit in same subtitle file (collaboration)",
GoToFirstSelectedLine = "Go to first selected line",
GoToNextEmptyLine = "Go to next empty line",
MergeSelectedLines = "Merge selected lines",
MergeSelectedLinesAndUnbreak = "Merge selected lines and unbreak",
MergeSelectedLinesAndUnbreakCjk = "Merge selected lines and unbreak without space (CJK)",
MergeSelectedLinesOnlyFirstText = "Merge selected lines, keep only first non-empty text",
MergeSelectedLinesBilingual = "Merge selected lines bilingual",
ToggleTranslationMode = "Toggle translator mode",
SwitchOriginalAndTranslation = "Switch original and translation",
MergeOriginalAndTranslation = "Merge original and translation",
@ -2565,6 +2568,7 @@ can edit in same subtitle file (collaboration)",
{
Title = "Unknown subtitle type",
Message = "If you want this fixed please send an email to mailto:niksedk@gmail.com and include a copy of the subtitle.",
ImportAsPlainText = "Import as plain text...",
};
VisualSync = new LanguageStructure.VisualSync

View File

@ -5326,9 +5326,18 @@ namespace Nikse.SubtitleEdit.Core
case "Settings/MergeSelectedLines":
language.Settings.MergeSelectedLines = reader.Value;
break;
case "Settings/MergeSelectedLinesAndUnbreak":
language.Settings.MergeSelectedLinesAndUnbreak = reader.Value;
break;
case "Settings/MergeSelectedLinesAndUnbreakCjk":
language.Settings.MergeSelectedLinesAndUnbreakCjk = reader.Value;
break;
case "Settings/MergeSelectedLinesOnlyFirstText":
language.Settings.MergeSelectedLinesOnlyFirstText = reader.Value;
break;
case "Settings/MergeSelectedLinesBilingual":
language.Settings.MergeSelectedLinesBilingual = reader.Value;
break;
case "Settings/ToggleTranslationMode":
language.Settings.ToggleTranslationMode = reader.Value;
break;
@ -6049,6 +6058,9 @@ namespace Nikse.SubtitleEdit.Core
case "UnknownSubtitle/Message":
language.UnknownSubtitle.Message = reader.Value;
break;
case "UnknownSubtitle/ImportAsPlainText":
language.UnknownSubtitle.ImportAsPlainText = reader.Value;
break;
case "VisualSync/Title":
language.VisualSync.Title = reader.Value;
break;

View File

@ -2132,7 +2132,10 @@
public string GoToFirstSelectedLine { get; set; }
public string GoToNextEmptyLine { get; set; }
public string MergeSelectedLines { get; set; }
public string MergeSelectedLinesAndUnbreak { get; set; }
public string MergeSelectedLinesAndUnbreakCjk { get; set; }
public string MergeSelectedLinesOnlyFirstText { get; set; }
public string MergeSelectedLinesBilingual { get; set; }
public string ToggleTranslationMode { get; set; }
public string SwitchOriginalAndTranslation { get; set; }
public string MergeOriginalAndTranslation { get; set; }
@ -2443,6 +2446,7 @@
{
public string Title { get; set; }
public string Message { get; set; }
public string ImportAsPlainText { get; set; }
}
public class VisualSync

View File

@ -947,7 +947,10 @@ namespace Nikse.SubtitleEdit.Core
public string GeneralGoToFirstSelectedLine { get; set; }
public string GeneralGoToNextEmptyLine { get; set; }
public string GeneralMergeSelectedLines { get; set; }
public string GeneralMergeSelectedLinesAndUnbreak { get; set; }
public string GeneralMergeSelectedLinesAndUnbreakCjk { get; set; }
public string GeneralMergeSelectedLinesOnlyFirstText { get; set; }
public string GeneralMergeSelectedLinesBilingual { get; set; }
public string GeneralMergeWithNext { get; set; }
public string GeneralMergeWithPrevious { get; set; }
public string GeneralToggleTranslationMode { get; set; }
@ -1043,7 +1046,7 @@ namespace Nikse.SubtitleEdit.Core
public string MainListViewCopyTextFromOriginalToCurrent { get; set; }
public string MainListViewAutoDuration { get; set; }
public string MainListViewColumnDeleteText { get; set; }
public string MainListViewColumnDeleteTextAndShiftUp { get; set; }
public string MainListViewColumnDeleteTextAndShiftUp { get; set; }
public string MainListViewColumnInsertText { get; set; }
public string MainListViewColumnPaste { get; set; }
public string MainListViewColumnTextUp { get; set; }
@ -2800,9 +2803,18 @@ namespace Nikse.SubtitleEdit.Core
subNode = node.SelectSingleNode("GeneralMergeSelectedLines");
if (subNode != null)
settings.Shortcuts.GeneralMergeSelectedLines = subNode.InnerText;
subNode = node.SelectSingleNode("GeneralMergeSelectedLinesAndUnbreak");
if (subNode != null)
settings.Shortcuts.GeneralMergeSelectedLinesAndUnbreak = subNode.InnerText;
subNode = node.SelectSingleNode("GeneralMergeSelectedLinesAndUnbreakCjk");
if (subNode != null)
settings.Shortcuts.GeneralMergeSelectedLinesAndUnbreakCjk = subNode.InnerText;
subNode = node.SelectSingleNode("GeneralMergeSelectedLinesOnlyFirstText");
if (subNode != null)
settings.Shortcuts.GeneralMergeSelectedLinesOnlyFirstText = subNode.InnerText;
subNode = node.SelectSingleNode("GeneralMergeSelectedLinesBilingual");
if (subNode != null)
settings.Shortcuts.GeneralMergeSelectedLinesBilingual = subNode.InnerText;
subNode = node.SelectSingleNode("GeneralMergeWithNext");
if (subNode != null)
settings.Shortcuts.GeneralMergeWithNext = subNode.InnerText;
@ -3022,7 +3034,7 @@ namespace Nikse.SubtitleEdit.Core
subNode = node.SelectSingleNode("MainVideoGoToPrevSubtitle");
if (subNode != null)
settings.Shortcuts.MainVideoGoToPrevSubtitle = subNode.InnerText;
subNode = node.SelectSingleNode("MainVideoGoToNextSubtitle");
subNode = node.SelectSingleNode("MainVideoGoToNextSubtitle");
if (subNode != null)
settings.Shortcuts.MainVideoGoToNextSubtitle = subNode.InnerText;
subNode = node.SelectSingleNode("MainVideoFullscreen");
@ -3889,7 +3901,10 @@ namespace Nikse.SubtitleEdit.Core
textWriter.WriteElementString("GeneralGoToFirstSelectedLine", settings.Shortcuts.GeneralGoToFirstSelectedLine);
textWriter.WriteElementString("GeneralGoToNextEmptyLine", settings.Shortcuts.GeneralGoToNextEmptyLine);
textWriter.WriteElementString("GeneralMergeSelectedLines", settings.Shortcuts.GeneralMergeSelectedLines);
textWriter.WriteElementString("GeneralMergeSelectedLinesAndUnbreak", settings.Shortcuts.GeneralMergeSelectedLinesAndUnbreak);
textWriter.WriteElementString("GeneralMergeSelectedLinesAndUnbreakCjk", settings.Shortcuts.GeneralMergeSelectedLinesAndUnbreakCjk);
textWriter.WriteElementString("GeneralMergeSelectedLinesOnlyFirstText", settings.Shortcuts.GeneralMergeSelectedLinesOnlyFirstText);
textWriter.WriteElementString("GeneralMergeSelectedLinesBilingual", settings.Shortcuts.GeneralMergeSelectedLinesBilingual);
textWriter.WriteElementString("GeneralMergeWithNext", settings.Shortcuts.GeneralMergeWithNext);
textWriter.WriteElementString("GeneralMergeWithPrevious", settings.Shortcuts.GeneralMergeWithPrevious);
textWriter.WriteElementString("GeneralToggleTranslationMode", settings.Shortcuts.GeneralToggleTranslationMode);

View File

@ -132,6 +132,9 @@ namespace Nikse.SubtitleEdit.Forms
private Keys _mainGeneralGoToFirstSelectedLine = Keys.None;
private Keys _mainGeneralGoToFirstEmptyLine = Keys.None;
private Keys _mainGeneralMergeSelectedLines = Keys.None;
private Keys _mainGeneralMergeSelectedLinesAndUnbreak = Keys.None;
private Keys _mainGeneralMergeSelectedLinesAndUnbreakNoSpace = Keys.None;
private Keys _mainGeneralMergeSelectedLinesBilingual = Keys.None;
private Keys _mainGeneralMergeSelectedLinesOnlyFirstText = Keys.None;
private Keys _mainGeneralToggleTranslationMode = Keys.None;
private Keys _mainGeneralSwitchTranslationAndOriginal = Keys.None;
@ -189,7 +192,7 @@ namespace Nikse.SubtitleEdit.Forms
private Keys _mainAdjustSetStartAndOffsetTheRest = Keys.None;
private Keys _mainAdjustSetEndAndOffsetTheRest = Keys.None;
private Keys _mainAdjustSetEndAndOffsetTheRestAndGoToNext = Keys.None;
private Keys _mainAdjustSetEndAndGotoNext = Keys.None;
private Keys _mainAdjustSetEndAndGotoNext = Keys.None;
private Keys _mainAdjustInsertViaEndAutoStart = Keys.None;
private Keys _mainAdjustInsertViaEndAutoStartAndGoToNext = Keys.None;
private Keys _mainAdjustSetStartAutoDurationAndGoToNext = Keys.None;
@ -3141,7 +3144,10 @@ namespace Nikse.SubtitleEdit.Forms
}
else
{
ShowUnknownSubtitle();
if (ShowUnknownSubtitle(fileName, true))
{
ImportPlainText(fileName);
}
return;
}
}
@ -3348,12 +3354,13 @@ namespace Nikse.SubtitleEdit.Forms
}
}
private void ShowUnknownSubtitle()
private bool ShowUnknownSubtitle(string fileName, bool allowImportPlainText = false)
{
using (var unknownSubtitle = new UnknownSubtitle())
{
unknownSubtitle.Initialize(Title);
unknownSubtitle.Initialize(Title, fileName, allowImportPlainText);
unknownSubtitle.ShowDialog(this);
return unknownSubtitle.ImportPlainText;
}
}
@ -9043,7 +9050,7 @@ namespace Nikse.SubtitleEdit.Forms
}
}
private void MergeSelectedLines()
private void MergeSelectedLines(bool unbreak = false)
{
if (_subtitle.Paragraphs.Count > 0 && SubtitleListview1.SelectedItems.Count > 1)
{
@ -9082,7 +9089,11 @@ namespace Nikse.SubtitleEdit.Forms
string text = sb.ToString();
text = HtmlUtil.FixInvalidItalicTags(text);
text = ChangeAllLinesItalictoSingleItalic(text);
text = Utilities.AutoBreakLine(text, LanguageAutoDetect.AutoDetectGoogleLanguage(_subtitle));
if (unbreak)
text = Utilities.UnbreakLine(text);
else
text = Utilities.AutoBreakLine(text, LanguageAutoDetect.AutoDetectGoogleLanguage(_subtitle));
currentParagraph.Text = text;
//display time
@ -9117,7 +9128,12 @@ namespace Nikse.SubtitleEdit.Forms
original.Text = originalTexts.ToString().Replace(" ", " ");
original.Text = original.Text.Replace(Environment.NewLine, " ");
original.Text = ChangeAllLinesItalictoSingleItalic(original.Text);
original.Text = Utilities.AutoBreakLine(original.Text);
if (unbreak)
original.Text = Utilities.UnbreakLine(original.Text);
else
original.Text = Utilities.AutoBreakLine(original.Text, LanguageAutoDetect.AutoDetectGoogleLanguage(_subtitleAlternate));
original.EndTime.TotalMilliseconds = currentParagraph.EndTime.TotalMilliseconds;
_subtitleAlternate.Renumber();
}
@ -9170,7 +9186,15 @@ namespace Nikse.SubtitleEdit.Forms
}
}
private void MergeWithLineAfter(bool insertDash)
public enum BreakMode
{
Normal,
Unbreak,
UnbreakNoSpace,
Bilangual
}
private void MergeWithLineAfter(bool insertDash, BreakMode breakMode = BreakMode.Normal)
{
int firstSelectedIndex = SubtitleListview1.SelectedItems[0].Index;
@ -12008,6 +12032,47 @@ namespace Nikse.SubtitleEdit.Forms
MergeSelectedLines();
}
}
//TODO: Work on new shortcuts - start
else if (_mainGeneralMergeSelectedLinesAndUnbreak == e.KeyData)
{
e.SuppressKeyPress = true;
if (SubtitleListview1.SelectedItems.Count == 2)
MergeWithLineAfter(false, BreakMode.Unbreak);
else
MergeSelectedLines(true);
}
else if (_mainGeneralMergeSelectedLinesAndUnbreakNoSpace == e.KeyData)
{
if (_subtitle.Paragraphs.Count > 0 && SubtitleListview1.SelectedItems.Count >= 1)
{
e.SuppressKeyPress = true;
if (SubtitleListview1.SelectedItems.Count == 2)
MergeWithLineAfter(false, BreakMode.UnbreakNoSpace);
else
MergeSelectedLines(true);
}
}
else if (_mainGeneralMergeSelectedLinesBilingual == e.KeyData)
{
if (_subtitle.Paragraphs.Count > 0 && SubtitleListview1.SelectedItems.Count >= 1)
{
e.SuppressKeyPress = true;
if (SubtitleListview1.SelectedItems.Count == 2)
MergeWithLineAfter(false);
else
MergeSelectedLines();
}
}
//TODO: Work on new shortcuts - end
else if (_mainGeneralMergeSelectedLinesOnlyFirstText == e.KeyData)
{
if (_subtitle.Paragraphs.Count > 0 && SubtitleListview1.SelectedItems.Count >= 1)
@ -14486,7 +14551,7 @@ namespace Nikse.SubtitleEdit.Forms
SubtitleFormat f = sub.LoadSubtitle(fileName, out enc, null);
if (f == null)
{
ShowUnknownSubtitle();
ShowUnknownSubtitle(fileName);
return;
}
}
@ -14560,7 +14625,7 @@ namespace Nikse.SubtitleEdit.Forms
if (format == null)
{
ShowUnknownSubtitle();
ShowUnknownSubtitle(openFileDialog1.FileName);
return;
}
@ -16631,6 +16696,9 @@ namespace Nikse.SubtitleEdit.Forms
_mainGeneralGoToFirstSelectedLine = UiUtil.GetKeys(Configuration.Settings.Shortcuts.GeneralGoToFirstSelectedLine);
_mainGeneralGoToFirstEmptyLine = UiUtil.GetKeys(Configuration.Settings.Shortcuts.GeneralGoToNextEmptyLine);
_mainGeneralMergeSelectedLines = UiUtil.GetKeys(Configuration.Settings.Shortcuts.GeneralMergeSelectedLines);
_mainGeneralMergeSelectedLinesAndUnbreak = UiUtil.GetKeys(Configuration.Settings.Shortcuts.GeneralMergeSelectedLinesAndUnbreak);
_mainGeneralMergeSelectedLinesAndUnbreakNoSpace = UiUtil.GetKeys(Configuration.Settings.Shortcuts.GeneralMergeSelectedLinesAndUnbreakCjk);
_mainGeneralMergeSelectedLinesBilingual = UiUtil.GetKeys(Configuration.Settings.Shortcuts.GeneralMergeSelectedLinesBilingual);
_mainGeneralMergeSelectedLinesOnlyFirstText = UiUtil.GetKeys(Configuration.Settings.Shortcuts.GeneralMergeSelectedLinesOnlyFirstText);
_mainGeneralToggleTranslationMode = UiUtil.GetKeys(Configuration.Settings.Shortcuts.GeneralToggleTranslationMode);
_mainGeneralSwitchTranslationAndOriginal = UiUtil.GetKeys(Configuration.Settings.Shortcuts.GeneralSwitchOriginalAndTranslation);

View File

@ -774,10 +774,13 @@ namespace Nikse.SubtitleEdit.Forms
var generalNode = new ShortcutNode(Configuration.Settings.Language.General.GeneralText);
AddNode(generalNode, language.MergeSelectedLines, nameof(Configuration.Settings.Shortcuts.GeneralMergeSelectedLines));
AddNode(generalNode, language.MergeSelectedLinesOnlyFirstText, nameof(Configuration.Settings.Shortcuts.GeneralMergeSelectedLinesOnlyFirstText));
AddNode(generalNode, language.MergeOriginalAndTranslation, nameof(Configuration.Settings.Shortcuts.GeneralMergeOriginalAndTranslation));
AddNode(generalNode, language.MergeWithPrevious, nameof(Configuration.Settings.Shortcuts.GeneralMergeWithPrevious));
AddNode(generalNode, language.MergeWithNext, nameof(Configuration.Settings.Shortcuts.GeneralMergeWithNext));
AddNode(generalNode, language.MergeSelectedLinesAndUnbreak, nameof(Configuration.Settings.Shortcuts.GeneralMergeSelectedLinesAndUnbreak));
AddNode(generalNode, language.MergeSelectedLinesAndUnbreakCjk, nameof(Configuration.Settings.Shortcuts.GeneralMergeSelectedLinesAndUnbreakCjk));
AddNode(generalNode, language.MergeSelectedLinesOnlyFirstText, nameof(Configuration.Settings.Shortcuts.GeneralMergeSelectedLinesOnlyFirstText));
AddNode(generalNode, language.MergeSelectedLinesBilingual, nameof(Configuration.Settings.Shortcuts.GeneralMergeSelectedLinesBilingual));
AddNode(generalNode, language.MergeOriginalAndTranslation, nameof(Configuration.Settings.Shortcuts.GeneralMergeOriginalAndTranslation));
AddNode(generalNode, language.ToggleTranslationMode, nameof(Configuration.Settings.Shortcuts.GeneralToggleTranslationMode));
AddNode(generalNode, language.SwitchOriginalAndTranslation, nameof(Configuration.Settings.Shortcuts.GeneralSwitchOriginalAndTranslation));
AddNode(generalNode, language.WaveformPlayFirstSelectedSubtitle, nameof(Configuration.Settings.Shortcuts.GeneralPlayFirstSelected));

View File

@ -31,6 +31,9 @@
this.labelTitle = new System.Windows.Forms.Label();
this.buttonOK = new System.Windows.Forms.Button();
this.richTextBoxMessage = new System.Windows.Forms.RichTextBox();
this.buttonImportPlainText = new System.Windows.Forms.Button();
this.LabelPreview = new System.Windows.Forms.Label();
this.textBoxPreview = new System.Windows.Forms.TextBox();
this.SuspendLayout();
//
// labelTitle
@ -38,7 +41,7 @@
this.labelTitle.AutoSize = true;
this.labelTitle.Location = new System.Drawing.Point(15, 25);
this.labelTitle.Name = "labelTitle";
this.labelTitle.Size = new System.Drawing.Size(145, 17);
this.labelTitle.Size = new System.Drawing.Size(114, 13);
this.labelTitle.TabIndex = 0;
this.labelTitle.Text = "Unknown subtitle type";
//
@ -47,7 +50,7 @@
this.buttonOK.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
this.buttonOK.DialogResult = System.Windows.Forms.DialogResult.OK;
this.buttonOK.ImeMode = System.Windows.Forms.ImeMode.NoControl;
this.buttonOK.Location = new System.Drawing.Point(324, 134);
this.buttonOK.Location = new System.Drawing.Point(457, 272);
this.buttonOK.Name = "buttonOK";
this.buttonOK.Size = new System.Drawing.Size(100, 27);
this.buttonOK.TabIndex = 8;
@ -63,17 +66,55 @@
this.richTextBoxMessage.Name = "richTextBoxMessage";
this.richTextBoxMessage.ReadOnly = true;
this.richTextBoxMessage.ScrollBars = System.Windows.Forms.RichTextBoxScrollBars.Vertical;
this.richTextBoxMessage.Size = new System.Drawing.Size(406, 47);
this.richTextBoxMessage.Size = new System.Drawing.Size(539, 47);
this.richTextBoxMessage.TabIndex = 41;
this.richTextBoxMessage.TabStop = false;
this.richTextBoxMessage.Text = "If you want this fixed please send an email to mailto:niksedk@gmail.com and inclu" +
"de a copy of the subtitle.";
//
// buttonImportPlainText
//
this.buttonImportPlainText.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
this.buttonImportPlainText.DialogResult = System.Windows.Forms.DialogResult.OK;
this.buttonImportPlainText.ImeMode = System.Windows.Forms.ImeMode.NoControl;
this.buttonImportPlainText.Location = new System.Drawing.Point(260, 272);
this.buttonImportPlainText.Name = "buttonImportPlainText";
this.buttonImportPlainText.Size = new System.Drawing.Size(191, 27);
this.buttonImportPlainText.TabIndex = 42;
this.buttonImportPlainText.Text = "Import plain text...";
this.buttonImportPlainText.UseVisualStyleBackColor = true;
this.buttonImportPlainText.Click += new System.EventHandler(this.buttonImportPlainText_Click);
//
// LabelPreview
//
this.LabelPreview.AutoSize = true;
this.LabelPreview.Location = new System.Drawing.Point(17, 101);
this.LabelPreview.Name = "LabelPreview";
this.LabelPreview.Size = new System.Drawing.Size(45, 13);
this.LabelPreview.TabIndex = 44;
this.LabelPreview.Text = "Preview";
//
// textBoxPreview
//
this.textBoxPreview.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.textBoxPreview.Location = new System.Drawing.Point(18, 118);
this.textBoxPreview.Multiline = true;
this.textBoxPreview.Name = "textBoxPreview";
this.textBoxPreview.ReadOnly = true;
this.textBoxPreview.ScrollBars = System.Windows.Forms.ScrollBars.Vertical;
this.textBoxPreview.Size = new System.Drawing.Size(539, 141);
this.textBoxPreview.TabIndex = 43;
//
// UnknownSubtitle
//
this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 17F);
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(436, 173);
this.ClientSize = new System.Drawing.Size(569, 311);
this.Controls.Add(this.LabelPreview);
this.Controls.Add(this.textBoxPreview);
this.Controls.Add(this.buttonImportPlainText);
this.Controls.Add(this.richTextBoxMessage);
this.Controls.Add(this.buttonOK);
this.Controls.Add(this.labelTitle);
@ -97,5 +138,8 @@
private System.Windows.Forms.Label labelTitle;
private System.Windows.Forms.Button buttonOK;
private System.Windows.Forms.RichTextBox richTextBoxMessage;
private System.Windows.Forms.Button buttonImportPlainText;
private System.Windows.Forms.Label LabelPreview;
private System.Windows.Forms.TextBox textBoxPreview;
}
}

View File

@ -1,4 +1,5 @@
using Nikse.SubtitleEdit.Core;
using System.IO;
using Nikse.SubtitleEdit.Core;
using Nikse.SubtitleEdit.Logic;
using System.Windows.Forms;
@ -6,6 +7,8 @@ namespace Nikse.SubtitleEdit.Forms
{
public sealed partial class UnknownSubtitle : Form
{
public bool ImportPlainText { get; set; }
public UnknownSubtitle()
{
UiUtil.PreInitialize(this);
@ -16,12 +19,35 @@ namespace Nikse.SubtitleEdit.Forms
labelTitle.Text = Configuration.Settings.Language.UnknownSubtitle.Title;
richTextBoxMessage.Text = Configuration.Settings.Language.UnknownSubtitle.Message;
buttonOK.Text = Configuration.Settings.Language.General.Ok;
buttonImportPlainText.Text = Configuration.Settings.Language.UnknownSubtitle.ImportAsPlainText;
UiUtil.FixLargeFonts(this, buttonOK);
}
public void Initialize(string title)
public void Initialize(string title, string fileName, bool allowImportPlainText)
{
Text = title;
try
{
var file = new FileStream(fileName, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
int length = (int)file.Length;
if (length > 100000)
length = 100000;
file.Position = 0;
var fileBuffer = new byte[length];
file.Read(fileBuffer, 0, length);
file.Close();
var encoding = LanguageAutoDetect.DetectAnsiEncoding(fileBuffer);
LabelPreview.Text = Configuration.Settings.Language.General.Preview + " - " + fileName;
textBoxPreview.Text = encoding.GetString(fileBuffer).Replace("\0", " ");
buttonImportPlainText.Visible = allowImportPlainText && !string.IsNullOrWhiteSpace(textBoxPreview.Text);
}
catch
{
// ignored
}
}
private void FormUnknownSubtitle_KeyDown(object sender, KeyEventArgs e)
@ -29,5 +55,11 @@ namespace Nikse.SubtitleEdit.Forms
if (e.KeyCode == Keys.Escape)
DialogResult = DialogResult.Cancel;
}
private void buttonImportPlainText_Click(object sender, System.EventArgs e)
{
ImportPlainText = true;
DialogResult = DialogResult.OK;
}
}
}