diff --git a/ConfigEditor/MainForm.cs b/ConfigEditor/MainForm.cs index 2ea3b0b..4874229 100644 --- a/ConfigEditor/MainForm.cs +++ b/ConfigEditor/MainForm.cs @@ -8,49 +8,70 @@ namespace ConfigEditor { public partial class MainForm: Form { - private string opened_file = null; + private string opened_file_path = null; + private string[] original_file_data = null; public MainForm() { InitializeComponent(); } + private void ClearData() + { + opened_file_path = null; + if (original_file_data != null) + Array.Clear(original_file_data, 0, original_file_data.Length); + richTextBox1.Clear(); + ActiveForm.Text = "SaveWizard Config Editor"; + } + private void openToolStripMenuItem_Click(object sender, EventArgs e) { + if (!IsModificationSaved()) + return; + ClearData(); OpenFileDialog ofd = new OpenFileDialog() { - Title = "Выберите файл конфигурации", - Filter = "Файл *.json|*.json", + Title = "Choose configuration file", + Filter = "File *.json|*.json", Multiselect = false }; if (ofd.ShowDialog() == DialogResult.OK) { - opened_file = ofd.FileName; + opened_file_path = ofd.FileName; + original_file_data = File.ReadAllLines(ofd.FileName); richTextBox1.Text = File.ReadAllText(ofd.FileName); + ActiveForm.Text = $"{ofd.FileName} - SaveWizard Config Editor"; } } private void saveToolStripMenuItem_Click(object sender, EventArgs e) { - File.WriteAllText(opened_file, richTextBox1.Text); + if (opened_file_path == null) + return; + File.WriteAllText(opened_file_path, richTextBox1.Text); } private void saveAsToolStripMenuItem_Click(object sender, EventArgs e) { SaveFileDialog sfd = new SaveFileDialog { - Title = "Сохранить файл конфигурации", - Filter = "Файл *.json|*.json" + Title = "Save configuration file", + Filter = "File *.json|*.json" }; if (sfd.ShowDialog() == DialogResult.OK) + { File.WriteAllText(sfd.FileName, richTextBox1.Text); + opened_file_path = sfd.FileName; + ActiveForm.Text = $"{sfd.FileName} - SaveWizard Config Editor"; + } } private void generateMD5ToolStripMenuItem_Click(object sender, EventArgs e) { using (var md5 = MD5.Create()) { - using (FileStream stream = File.OpenRead(opened_file)) + using (FileStream stream = File.OpenRead(opened_file_path)) md5.ComputeHash(stream); StringBuilder sb = new StringBuilder(); @@ -63,44 +84,57 @@ namespace ConfigEditor } } - private bool CheckChanges() + private bool IsModificationSaved() { - if (opened_file != null) + if (opened_file_path == null) + return true; + bool isDataEquals = true; + string[] rtbLines = richTextBox1.Text.Split( + new[] { "\r\n", "\r", "\n" }, + StringSplitOptions.None + ); + for (int i = 0; i < original_file_data.Length; i++) { - if (richTextBox1.Text != File.ReadAllText(opened_file)) + if (rtbLines[i] != original_file_data[i]) { - DialogResult result = MessageBox.Show("The document has been modified.\nDo you want to save your changes?", "Question", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question); - if (result == DialogResult.Yes) - { - File.WriteAllText(opened_file, richTextBox1.Text); - MessageBox.Show("File successfully saved.", "Info", MessageBoxButtons.OK, MessageBoxIcon.Information); - return true; - } - else if (result == DialogResult.Cancel) - return false; + isDataEquals = false; + break; } } - return true; + if (isDataEquals) + { + return true; + } + DialogResult result = MessageBox.Show("The document has been modified.\nDo you want to save your changes?", "Question", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question); + if (result == DialogResult.Yes) + { + File.WriteAllText(opened_file_path, richTextBox1.Text); + MessageBox.Show("File successfully saved.", "Info", MessageBoxButtons.OK, MessageBoxIcon.Information); + return true; + } else if (result == DialogResult.No) + return true; + else if (result == DialogResult.Cancel) + return false; + return false; } private void closeFileToolStripMenuItem_Click(object sender, EventArgs e) { - if (!CheckChanges()) + if (!IsModificationSaved()) return; - richTextBox1.Clear(); - opened_file = null; + ClearData(); } private void closeToolStripMenuItem_Click(object sender, EventArgs e) { - if (!CheckChanges()) + if (!IsModificationSaved()) return; Application.Exit(); } private void MainForm_FormClosed(object sender, FormClosedEventArgs e) { - if (!CheckChanges()) + if (!IsModificationSaved()) return; Application.Exit(); }