134 lines
4.7 KiB
C#
134 lines
4.7 KiB
C#
using System;
|
|
using System.Windows.Forms;
|
|
using System.Text.RegularExpressions;
|
|
|
|
namespace DataOrganizer
|
|
{
|
|
public partial class NamingConventionManager : Form
|
|
{
|
|
private int ActivePatternId { get; set; }
|
|
|
|
public NamingConventionManager()
|
|
{
|
|
InitializeComponent();
|
|
|
|
var db = new DB();
|
|
NamingConventionPatternsComboBox.Items.Add("Add New Pattern");
|
|
NamingConventionPatternsComboBox.SelectedIndex = 0;
|
|
|
|
foreach(var pattern in db.GetNamingConventions())
|
|
{
|
|
NamingConventionPatternsComboBox.Items.Add(pattern.Name);
|
|
}
|
|
|
|
NamingConventionPatternsComboBox.SelectedIndexChanged += NamingConventionPatternsComboBox_SelectedIndexChanged;
|
|
NameTextBox.TextChanged += TextChanged;
|
|
RegexTextBox.TextChanged += TextChanged;
|
|
ExampleTextBox.TextChanged += TextChanged;
|
|
RegexTestTextBox.TextChanged += RegexTestTextBox_TextChanged;
|
|
ActivePatternId = 0;
|
|
}
|
|
|
|
private void RegexTestTextBox_TextChanged(object sender, EventArgs e)
|
|
{
|
|
if (RegexTestTextBox.Text.Length > 0 && RegexTextBox.Text.Length > 0) TestRegexButton.Enabled = true;
|
|
else TestRegexButton.Enabled = false;
|
|
}
|
|
|
|
private new void TextChanged(object sender, EventArgs e)
|
|
{
|
|
if (RegexTestTextBox.Text.Length > 0 && RegexTextBox.Text.Length > 0) TestRegexButton.Enabled = true;
|
|
else TestRegexButton.Enabled = false;
|
|
|
|
if (NameTextBox.Text.Length > 0 && RegexTextBox.Text.Length > 0 && ExampleTextBox.Text.Length > 0)
|
|
{
|
|
AddUpdateButton.Enabled = true;
|
|
}
|
|
else
|
|
{
|
|
AddUpdateButton.Enabled = false;
|
|
}
|
|
}
|
|
|
|
private void NamingConventionPatternsComboBox_SelectedIndexChanged(object sender, EventArgs e)
|
|
{
|
|
if (NamingConventionPatternsComboBox.SelectedIndex == 0)
|
|
{
|
|
ClearForm();
|
|
return;
|
|
}
|
|
else AddUpdateButton.Text = $"Update Convention";
|
|
|
|
var db = new DB();
|
|
var convention = db.GetNamingConventionByName(NamingConventionPatternsComboBox.Text);
|
|
|
|
NameTextBox.Text = convention.Name;
|
|
RegexTextBox.Text = convention.Regex;
|
|
ExampleTextBox.Text = convention.ExampleText;
|
|
ActivePatternId = convention.Id;
|
|
|
|
PatternIdLabel.Text = $"Pattern ID: {ActivePatternId}";
|
|
DeleteButton.Enabled = true;
|
|
}
|
|
|
|
private void ClearForm()
|
|
{
|
|
NameTextBox.Text = string.Empty;
|
|
RegexTextBox.Text = string.Empty;
|
|
ExampleTextBox.Text = string.Empty;
|
|
ActivePatternId = 0;
|
|
AddUpdateButton.Enabled = false;
|
|
AddUpdateButton.Text = "Insert Pattern";
|
|
PatternIdLabel.Text = "Pattern ID: N/A";
|
|
DeleteButton.Enabled = false;
|
|
}
|
|
|
|
private void DeleteButton_Click(object sender, EventArgs e)
|
|
{
|
|
var result = MessageBox.Show($"Are you sure you want to delete the '{NamingConventionPatternsComboBox.Text}'? This will reset all folder groups and files that use this pattern to 'None'.",
|
|
$"Delete '{NamingConventionPatternsComboBox.Text}'", MessageBoxButtons.YesNo, MessageBoxIcon.Exclamation);
|
|
|
|
if(result == DialogResult.Yes)
|
|
{
|
|
var db = new DB();
|
|
db.DeleteNamingConvention(ActivePatternId);
|
|
|
|
NamingConventionPatternsComboBox.SelectedIndex = 0;
|
|
}
|
|
}
|
|
|
|
private void TestRegexButton_Click(object sender, EventArgs e)
|
|
{
|
|
try
|
|
{
|
|
var regex = new Regex(RegexTextBox.Text);
|
|
var testString = RegexTestTextBox.Text;
|
|
|
|
var match = regex.Match(testString);
|
|
|
|
if (!match.Success)
|
|
{
|
|
RegexResultsTextBox.Text = $"Input: {testString}{Environment.NewLine}No matches found.";
|
|
return;
|
|
}
|
|
|
|
RegexResultsTextBox.Text = string.Empty;
|
|
|
|
foreach (Group m in match.Groups)
|
|
{
|
|
if(m.Name == "0")
|
|
{
|
|
RegexResultsTextBox.Text += $"Input: {m.Value}{Environment.NewLine}";
|
|
continue;
|
|
}
|
|
RegexResultsTextBox.Text += $"{m.Name}: {m.Value}{Environment.NewLine}";
|
|
}
|
|
}
|
|
catch(Exception ex)
|
|
{
|
|
RegexResultsTextBox.Text = $"Error:{Environment.NewLine}{ex.Message}";
|
|
}
|
|
}
|
|
}
|
|
}
|