LocEdit: finish implementation
This commit is contained in:
parent
06289e19d0
commit
88b018607b
|
@ -29,6 +29,7 @@
|
|||
private void InitializeComponent()
|
||||
{
|
||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(MainForm));
|
||||
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle1 = new System.Windows.Forms.DataGridViewCellStyle();
|
||||
this.toolStrip = new System.Windows.Forms.ToolStrip();
|
||||
this.toolStripButtonLoad = new System.Windows.Forms.ToolStripButton();
|
||||
this.toolStripButtonSave = new System.Windows.Forms.ToolStripButton();
|
||||
|
@ -66,8 +67,8 @@
|
|||
this.toolStripButtonLoad.ImageScaling = System.Windows.Forms.ToolStripItemImageScaling.None;
|
||||
this.toolStripButtonLoad.ImageTransparentColor = System.Drawing.Color.Magenta;
|
||||
this.toolStripButtonLoad.Name = "toolStripButtonLoad";
|
||||
this.toolStripButtonLoad.Size = new System.Drawing.Size(53, 22);
|
||||
this.toolStripButtonLoad.Text = "Load";
|
||||
this.toolStripButtonLoad.Size = new System.Drawing.Size(56, 22);
|
||||
this.toolStripButtonLoad.Text = "Open";
|
||||
this.toolStripButtonLoad.Click += new System.EventHandler(this.ToolStripButtonLoad_Click);
|
||||
//
|
||||
// toolStripButtonSave
|
||||
|
@ -78,6 +79,7 @@
|
|||
this.toolStripButtonSave.Name = "toolStripButtonSave";
|
||||
this.toolStripButtonSave.Size = new System.Drawing.Size(51, 22);
|
||||
this.toolStripButtonSave.Text = "Save";
|
||||
this.toolStripButtonSave.Click += new System.EventHandler(this.ToolStripButtonSave_Click);
|
||||
//
|
||||
// tableLayoutPanel1
|
||||
//
|
||||
|
@ -127,7 +129,7 @@
|
|||
this.buttonFind.Name = "buttonFind";
|
||||
this.buttonFind.Size = new System.Drawing.Size(75, 23);
|
||||
this.buttonFind.TabIndex = 1;
|
||||
this.buttonFind.Text = "Find Next";
|
||||
this.buttonFind.Text = "Next (F3)";
|
||||
this.buttonFind.UseVisualStyleBackColor = true;
|
||||
this.buttonFind.Click += new System.EventHandler(this.ButtonFind_Click);
|
||||
//
|
||||
|
@ -149,12 +151,22 @@
|
|||
this.dataGridColKey,
|
||||
this.dataGridColValue,
|
||||
this.dataGridColComment});
|
||||
dataGridViewCellStyle1.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft;
|
||||
dataGridViewCellStyle1.BackColor = System.Drawing.SystemColors.Window;
|
||||
dataGridViewCellStyle1.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
dataGridViewCellStyle1.ForeColor = System.Drawing.SystemColors.ControlText;
|
||||
dataGridViewCellStyle1.SelectionBackColor = System.Drawing.SystemColors.Highlight;
|
||||
dataGridViewCellStyle1.SelectionForeColor = System.Drawing.SystemColors.HighlightText;
|
||||
dataGridViewCellStyle1.WrapMode = System.Windows.Forms.DataGridViewTriState.True;
|
||||
this.dataGridView.DefaultCellStyle = dataGridViewCellStyle1;
|
||||
this.dataGridView.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.dataGridView.Location = new System.Drawing.Point(3, 3);
|
||||
this.dataGridView.MultiSelect = false;
|
||||
this.dataGridView.Name = "dataGridView";
|
||||
this.dataGridView.RowHeadersWidth = 72;
|
||||
this.dataGridView.Size = new System.Drawing.Size(794, 383);
|
||||
this.dataGridView.TabIndex = 1;
|
||||
this.dataGridView.CellValueChanged += new System.Windows.Forms.DataGridViewCellEventHandler(this.DataGridView_CellValueChanged);
|
||||
//
|
||||
// dataGridColKey
|
||||
//
|
||||
|
@ -162,6 +174,7 @@
|
|||
this.dataGridColKey.HeaderText = "Key";
|
||||
this.dataGridColKey.MinimumWidth = 9;
|
||||
this.dataGridColKey.Name = "dataGridColKey";
|
||||
this.dataGridColKey.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable;
|
||||
//
|
||||
// dataGridColValue
|
||||
//
|
||||
|
@ -169,6 +182,7 @@
|
|||
this.dataGridColValue.HeaderText = "Value";
|
||||
this.dataGridColValue.MinimumWidth = 9;
|
||||
this.dataGridColValue.Name = "dataGridColValue";
|
||||
this.dataGridColValue.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable;
|
||||
//
|
||||
// dataGridColComment
|
||||
//
|
||||
|
@ -176,6 +190,7 @@
|
|||
this.dataGridColComment.HeaderText = "Comment";
|
||||
this.dataGridColComment.MinimumWidth = 9;
|
||||
this.dataGridColComment.Name = "dataGridColComment";
|
||||
this.dataGridColComment.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable;
|
||||
//
|
||||
// MainForm
|
||||
//
|
||||
|
@ -187,6 +202,7 @@
|
|||
this.KeyPreview = true;
|
||||
this.Name = "MainForm";
|
||||
this.Text = "LocEdit";
|
||||
this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.MainForm_FormClosing);
|
||||
this.toolStrip.ResumeLayout(false);
|
||||
this.toolStrip.PerformLayout();
|
||||
this.tableLayoutPanel1.ResumeLayout(false);
|
||||
|
@ -208,10 +224,10 @@
|
|||
private System.Windows.Forms.TextBox textBoxFind;
|
||||
private System.Windows.Forms.Button buttonFind;
|
||||
private System.Windows.Forms.DataGridView dataGridView;
|
||||
private System.Windows.Forms.Label label1;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn dataGridColKey;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn dataGridColValue;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn dataGridColComment;
|
||||
private System.Windows.Forms.Label label1;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -22,13 +22,24 @@ namespace LocEdit
|
|||
InitializeComponent();
|
||||
}
|
||||
|
||||
private bool _modified = false;
|
||||
public bool Modified
|
||||
{
|
||||
get => _modified;
|
||||
set
|
||||
{
|
||||
_modified = value;
|
||||
Text = $"LocEdit: {_loadedFile}{(_modified ? "*" : "")}";
|
||||
}
|
||||
}
|
||||
|
||||
public void LoadFile(string filePath)
|
||||
{
|
||||
_loadedFile = filePath;
|
||||
Text = $"LocEdit: {filePath}";
|
||||
Modified = false;
|
||||
|
||||
dataGridView.Rows.Clear();
|
||||
using (CsvParser csvParser = new CsvParser(new StreamReader(new FileStream(Path.GetFullPath(filePath), FileMode.Open, FileAccess.Read, FileShare.ReadWrite), Encoding.Default), true))
|
||||
using (CsvParser csvParser = new CsvParser(new StreamReader(new FileStream(Path.GetFullPath(filePath), FileMode.Open, FileAccess.Read, FileShare.ReadWrite), Encoding.UTF8), true))
|
||||
{
|
||||
foreach (string[] line in csvParser)
|
||||
{
|
||||
|
@ -39,9 +50,37 @@ namespace LocEdit
|
|||
dataGridView.Rows.Add(new LocDataGridViewRow(line[0], value, comment));
|
||||
}
|
||||
}
|
||||
dataGridView.AutoResizeRows();
|
||||
|
||||
}
|
||||
|
||||
public void SaveFile(string filePath)
|
||||
{
|
||||
_loadedFile = filePath;
|
||||
Modified = false;
|
||||
|
||||
var sb = new StringBuilder();
|
||||
sb.AppendLine("Name,Value,Comment");
|
||||
|
||||
foreach(DataGridViewRow row in dataGridView.Rows)
|
||||
{
|
||||
if (row.Cells.Count < 3) continue;
|
||||
|
||||
var key = (string)row.Cells[0].Value;
|
||||
var value = (string)row.Cells[1].Value;
|
||||
var comment = (string)row.Cells[2].Value;
|
||||
|
||||
if (key == null || value == null || comment == null) continue;
|
||||
|
||||
sb.Append($"{Helpers.CsvizeString(key)},");
|
||||
sb.Append($"{Helpers.CsvizeString(value)},");
|
||||
sb.Append($"{Helpers.CsvizeString(comment)}");
|
||||
sb.AppendLine();
|
||||
}
|
||||
|
||||
File.WriteAllText(filePath, sb.ToString(), Encoding.UTF8);
|
||||
}
|
||||
|
||||
public void FindNext(string query)
|
||||
{
|
||||
int y = dataGridView.CurrentCell != null ? dataGridView.CurrentCell.RowIndex + 1 : 0;
|
||||
|
@ -49,7 +88,7 @@ namespace LocEdit
|
|||
|
||||
while(y < dataGridView.Rows.Count - 1)
|
||||
{
|
||||
if (((string)dataGridView.Rows[y].Cells[0].Value).Contains(query))
|
||||
if (((string)dataGridView.Rows[y].Cells[0].Value).ToLower().Contains(query.ToLower()))
|
||||
{
|
||||
dataGridView.CurrentCell = dataGridView.Rows[y].Cells[0];
|
||||
return;
|
||||
|
@ -71,6 +110,12 @@ namespace LocEdit
|
|||
return true;
|
||||
}
|
||||
|
||||
if (keyData == (Keys.Control | Keys.S))
|
||||
{
|
||||
ShowSaveDialog();
|
||||
return true;
|
||||
}
|
||||
|
||||
if (keyData == (Keys.Control | Keys.F))
|
||||
{
|
||||
textBoxFind.Focus();
|
||||
|
@ -78,6 +123,12 @@ namespace LocEdit
|
|||
}
|
||||
|
||||
|
||||
if (keyData == Keys.F3)
|
||||
{
|
||||
FindNext(textBoxFind.Text);
|
||||
return true;
|
||||
}
|
||||
|
||||
return base.ProcessCmdKey(ref msg, keyData);
|
||||
}
|
||||
|
||||
|
@ -87,10 +138,18 @@ namespace LocEdit
|
|||
{
|
||||
openFileDialog1.Filter = "Localization CSV File (*.csv)|*.csv";
|
||||
|
||||
if (openFileDialog1.ShowDialog() == DialogResult.OK)
|
||||
{
|
||||
LoadFile(openFileDialog1.FileName);
|
||||
}
|
||||
if (openFileDialog1.ShowDialog() == DialogResult.OK) LoadFile(openFileDialog1.FileName);
|
||||
}
|
||||
}
|
||||
|
||||
private void ShowSaveDialog()
|
||||
{
|
||||
using (SaveFileDialog saveFileDialog1 = new SaveFileDialog())
|
||||
{
|
||||
saveFileDialog1.FileName = _loadedFile;
|
||||
saveFileDialog1.Filter = "Localization CSV File (*.csv)|*.csv";
|
||||
|
||||
if (saveFileDialog1.ShowDialog() == DialogResult.OK) SaveFile(saveFileDialog1.FileName);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -107,7 +166,48 @@ namespace LocEdit
|
|||
|
||||
private void TextBoxFind_KeyUp(object sender, KeyEventArgs e)
|
||||
{
|
||||
if(textBoxFind.Focused && e.KeyCode == Keys.Enter) FindNext(textBoxFind.Text);
|
||||
if (textBoxFind.Focused && e.KeyCode == Keys.Enter)
|
||||
{
|
||||
FindNext(textBoxFind.Text);
|
||||
e.Handled = true;
|
||||
}
|
||||
}
|
||||
|
||||
private void ToolStripButtonSave_Click(object sender, EventArgs e)
|
||||
=> ShowSaveDialog();
|
||||
|
||||
private void DataGridView_CellValueChanged(object sender, DataGridViewCellEventArgs e)
|
||||
=> Modified = true;
|
||||
|
||||
private void MainForm_FormClosing(object sender, FormClosingEventArgs e)
|
||||
{
|
||||
if (!Modified) return;
|
||||
|
||||
var result = MessageBox.Show(this, "There are unsaved changes. Are you sure you want to exit?", "LocEdit", MessageBoxButtons.YesNo, MessageBoxIcon.Exclamation);
|
||||
if (result == DialogResult.No) e.Cancel = true;
|
||||
}
|
||||
}
|
||||
|
||||
internal static class Helpers
|
||||
{
|
||||
public static string CsvizeString(string input)
|
||||
{
|
||||
var sb = new StringBuilder();
|
||||
bool shouldQuote = input.Contains(",") || input.Contains("\n") || (input != string.Empty && input[0] == '"');
|
||||
|
||||
if (shouldQuote)
|
||||
{
|
||||
sb.Append('"');
|
||||
sb.Append(input.Replace("\"", "\"\"")); // Replace double-quotes with double-double-quotes
|
||||
sb.Append('"');
|
||||
}
|
||||
else
|
||||
{
|
||||
sb.Append(input);
|
||||
}
|
||||
|
||||
|
||||
return sb.ToString();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -124,17 +124,17 @@
|
|||
<data name="toolStripButtonLoad.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAIwSURBVDhPzZBdSFNhGMdfhK7Cm+oquu2yr8voKi/KsiIk
|
||||
SCgjWOrm3HLp1haxGVnBloNktmYrMpooRCtcBmI0pWjLNaeLyFYy7SpGaO3745x/z3t2pkURddcDP97z
|
||||
vOf9/87zHvZ/VHS4q5FAhfePbYgOXTgov2aiKG4UBMFWKAmg9R71NfJ+NYsMWmoig2YgE1khuTAGvkeS
|
||||
3fwgD9KyltiQSCTUvKfwTpLdYuMOXVQKJid+QkiGJAnH7+qU1thoD/xO3Yl4PC5JSqXSIhvra4eYDkP8
|
||||
+vRX+P4PpBYfYn7CiXw+76NwplgsfmJPerUQvwUhfPH9FVN3z/HrVBPriXVsxN4KYfk55l7YEXh0Ht5+
|
||||
tUxbGWcTvDdUK/2d7kbYTfUjHOW+rQfYA2sziolx+NwqLL91QlxwEzdl+PPv8TqaUi112zez4UsKxF46
|
||||
MOlRofSxF9mwDtnpM8hNdyAX6UR+9qxEIWokTBJLgQ4o67bZLBZWxQbMx3O+21rM+S8j/6YLmdenifZV
|
||||
UUSP/AxREc0aEbmvIMGOBvoHjF03HF0adZ9CIXYNaQqnp9qQDmlIopVkWWkSgktmDBKe7kPz0vi8+ozH
|
||||
Pjwb0qPwzopUUIXUq1ZCvSoKl6epXOnzpAYUtkphXi7zSVfQa6CvGZAMKIkWJINKkpRl6ZA8iSzq19dz
|
||||
wRE5zpinx7h/wHIYV5prcVGx549cVe+FsWGXSVO7ZZMcZywUCq0BUCW3/1iMfQfWNkRtZl1N+gAAAABJ
|
||||
RU5ErkJggg==
|
||||
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAIuSURBVDhPzZBdSFNhGMdfhK7Cm+oquu2yr8voKi/KsiJE
|
||||
SBAjWOrm3HLp1haxGVnBloNMW7MVGU0UqhUuAzGaUrTlmtNFZCuZdhUjtPZ98px/z3t2pkURddcDP97z
|
||||
vOf9/87zHvZ/VGyoo55AiXePHIgNnj2ovGaSJG0URdEhLIug9Q71Fcp+OYsO2CqiA1YgG10hNT8KvkeS
|
||||
3fwgD9KyltiQTCa1vKfwTpLdYGNXDDE5mBr/CTEVliWcgLtdXuMjXQi4DEcTiYQsEQRhgY32tkLKRCB9
|
||||
efIrfP8H0gsPMDfuQqFQ8GepSPCRPe7WQ/oagvjZ/1dM3j7Nr1NOrCfWsWFnM8SlZ5h97kTw4Rn4+rQK
|
||||
LUVcDfBd06z0tzrr4bRUD3PU+7YeYPftjfiWHIPfo8HSGxekeQ9xXYE//557PQ3ppqrtm9nQeRXiL3ow
|
||||
4dVg+UM3chEDclMnkZ9qQz7ajsLMKRkhZiYsMovBNqirtjlsNlbG+q11ef9NPWYDF1B43YHsqxNE66oo
|
||||
akRhmiiJZsyI3lWRYEct/QPGrpqOLI54jkOIX0aGwpnJFmTCOpLoZVlOnoTgkmmTjLfz0Jw8Pq9ec937
|
||||
p4NGCG/tSIc0SL9sJrSrokhxmtKVPk3oQGG7HOblth5zh3wm+poJqaCaaEIqpCZJUZYJK5Mooj5jNRfU
|
||||
KHHGvF3m/f22w7jYWIlzqj1/5JJ2L8y1uyy6yi2blDhj4XB4DYAypf3HYuw7h15ETmoPbgAAAAAASUVO
|
||||
RK5CYII=
|
||||
</value>
|
||||
</data>
|
||||
<data name="toolStripButtonSave.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
|
|
Loading…
Reference in New Issue