From 02add303f663f3ae8d102aaf63ae30966051e497 Mon Sep 17 00:00:00 2001 From: Lev Rusanov <30170278+JDM170@users.noreply.github.com> Date: Fri, 5 Dec 2025 21:15:01 +0700 Subject: [PATCH] =?UTF-8?q?=D0=9E=D0=B1=D0=BD=D0=BE=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Добавлено отображение пути открытого файла в заголовке окна * Исправлено появление сообщения что файл изменен при отсутствии изменений Signed-off-by: Lev Rusanov <30170278+JDM170@users.noreply.github.com> --- ConfigEditor/MainForm.cs | 86 ++++++++++++++++++++++++++++------------ 1 file changed, 60 insertions(+), 26 deletions(-) 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(); }