Files
SaveWizard_rewritten/ConfigEditor/MainForm.cs
Lev Rusanov 02add303f6 Обновление
* Добавлено отображение пути открытого файла в заголовке окна
* Исправлено появление сообщения что файл изменен при отсутствии изменений

Signed-off-by: Lev Rusanov <30170278+JDM170@users.noreply.github.com>
2025-12-05 21:15:17 +07:00

143 lines
4.7 KiB
C#

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_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 = "Choose configuration file",
Filter = "File *.json|*.json",
Multiselect = false
};
if (ofd.ShowDialog() == DialogResult.OK)
{
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)
{
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 = "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_path))
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 IsModificationSaved()
{
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 (rtbLines[i] != original_file_data[i])
{
isDataEquals = false;
break;
}
}
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 (!IsModificationSaved())
return;
ClearData();
}
private void closeToolStripMenuItem_Click(object sender, EventArgs e)
{
if (!IsModificationSaved())
return;
Application.Exit();
}
private void MainForm_FormClosed(object sender, FormClosedEventArgs e)
{
if (!IsModificationSaved())
return;
Application.Exit();
}
}
}