* Добавлено отображение пути открытого файла в заголовке окна * Исправлено появление сообщения что файл изменен при отсутствии изменений Signed-off-by: Lev Rusanov <30170278+JDM170@users.noreply.github.com>
143 lines
4.7 KiB
C#
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();
|
|
}
|
|
}
|
|
}
|