Files
data_organizer/DataOrganizer/NamingConventionManager.cs
T

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}";
}
}
}
}