using System; using System.IO; using System.Security.Cryptography; using System.Text; using System.Windows.Forms; namespace ConfigEditor { public partial class MainForm: Form { private string opened_file = null; public MainForm() { InitializeComponent(); } private void openToolStripMenuItem_Click(object sender, EventArgs e) { OpenFileDialog ofd = new OpenFileDialog() { Title = "Выберите файл конфигурации", Filter = "Файл *.json|*.json", Multiselect = false }; if (ofd.ShowDialog() == DialogResult.OK) { opened_file = ofd.FileName; richTextBox1.Text = File.ReadAllText(ofd.FileName); } } private void saveToolStripMenuItem_Click(object sender, EventArgs e) { File.WriteAllText(opened_file, richTextBox1.Text); } private void saveAsToolStripMenuItem_Click(object sender, EventArgs e) { SaveFileDialog sfd = new SaveFileDialog { Title = "Сохранить файл конфигурации", Filter = "Файл *.json|*.json" }; if (sfd.ShowDialog() == DialogResult.OK) File.WriteAllText(sfd.FileName, richTextBox1.Text); } private void generateMD5ToolStripMenuItem_Click(object sender, EventArgs e) { using (var md5 = MD5.Create()) { using (FileStream stream = File.OpenRead(opened_file)) md5.ComputeHash(stream); StringBuilder sb = new StringBuilder(); byte[] hash = md5.Hash; for (int i = 0; i < hash.Length; i++) sb.Append(hash[i].ToString("x2")); Clipboard.SetText(sb.ToString()); MessageBox.Show($"Hash successfully copied into your clipboard.", "Success", MessageBoxButtons.OK, MessageBoxIcon.Information); } } private bool CheckChanges() { if (opened_file != null) { if (richTextBox1.Text != File.ReadAllText(opened_file)) { 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; } } return true; } private void closeFileToolStripMenuItem_Click(object sender, EventArgs e) { if (!CheckChanges()) return; richTextBox1.Clear(); opened_file = null; } private void closeToolStripMenuItem_Click(object sender, EventArgs e) { if (!CheckChanges()) return; Application.Exit(); } private void MainForm_FormClosed(object sender, FormClosedEventArgs e) { if (!CheckChanges()) return; Application.Exit(); } } }