public CompositionRoot() { IConfiguration Configuration = new ConfigurationBuilder() .SetBasePath(Directory.GetCurrentDirectory()) .AddJsonFile("appsettings.json") .Build(); IEnumerable <string> filterRuleNames = Configuration.GetSection("FilterRules") .GetChildren() .Select(x => x.Value); IEnumerable <string> renameRulesNames = Configuration.GetSection("RenameRules") .GetChildren() .Select(x => x.Value); List <IFilterRule> filterRules = new List <IFilterRule>(); foreach (string filterRule in filterRuleNames) { Type type = Type.GetType(filterRule, throwOnError: true); IFilterRule fr = (IFilterRule)Activator.CreateInstance(type); filterRules.Add(fr); } List <IRenameRule> renameRules = new List <IRenameRule>(); foreach (string renameRule in renameRulesNames) { Type type = Type.GetType(renameRule, throwOnError: true); IRenameRule rr = (IRenameRule)Activator.CreateInstance(type); renameRules.Add(rr); } List <Filter> filters = new List <Filter>(); foreach (IFilterRule filterRule in filterRules) { filters.Add(new Filter(filterRule)); } List <Renamer> renamers = new List <Renamer>(); foreach (IRenameRule renameRule in renameRules) { renamers.Add(new Renamer(renameRule)); } this.StringRetriever = new StringRetriever(new FileRetriever()); this.FilterStrings = new FilterStrings(filters); this.RenameFiles = new RenameFiles(new FileRenamedEventHandler(new ConsoleWriter()), renamers); }
// move selected rule down in the RulesListView item order private void MoveRuleDownButtonClick(object sender, EventArgs e) { IRenameRule currentSelectedRule = (IRenameRule)RulesListView.SelectedItems[0].Tag; int oldRuleIndex = Globals.RenameRules.IndexOf(Globals.RenameRules.Find(rule => rule.Id == currentSelectedRule.Id)); int newRuleIndex = oldRuleIndex + 1; Globals.RenameRules.RemoveAt(oldRuleIndex); Globals.RenameRules.Insert(newRuleIndex, currentSelectedRule); UpdateRulesListView(); UpdateFileRenameListView(); RulesListView.Focus(); RulesListView.Items[newRuleIndex].Focused = true; RulesListView.Items[newRuleIndex].Selected = true; }
public RulesForm(bool editMode = false, IRenameRule rule = null) { Font = new Font("Segoe UI", 6.75f); InitializeComponent(); this.editMode = editMode; if (editMode && rule != null) { ApplyEditingState(rule); } else { RuleTypeListBox.SelectedIndex = 0; } }
private void RuleEnabledChanged(object sender, ItemCheckedEventArgs e) { IRenameRule currentSelectedRule = (IRenameRule)e.Item.Tag; int ruleIndex = Globals.RenameRules.IndexOf(Globals.RenameRules.Find(rule => rule.Id == currentSelectedRule.Id)); Globals.RenameRules[ruleIndex].Enabled = e.Item.Checked; if (!e.Item.Checked) { e.Item.BackColor = Color.FromArgb(255, 235, 235); } else { e.Item.BackColor = Color.FromArgb(235, 255, 255); } UpdateFileRenameListView(); }
// edit selected rule from the list of rules, update UI state private void EditRuleButtonClick(object sender, EventArgs e) { IRenameRule currentSelectedRule = (IRenameRule)RulesListView.SelectedItems[0].Tag; int currentRuleIndex = RulesListView.SelectedItems[0].Index; RulesForm rulesForm = new RulesForm(editMode: true, currentSelectedRule); DialogResult dialogResult = rulesForm.ShowDialog(); if (dialogResult == DialogResult.OK) { UpdateRulesListView(); UpdateFileRenameListView(); RulesListView.Focus(); RulesListView.Items[currentRuleIndex].Focused = true; RulesListView.Items[currentRuleIndex].Selected = true; } RenameButton.Enabled = TorrentFileListTreeView.TotalFilesSelected > 0 && RulesListView.Items.Count > 0; }
// remove selected rule from the list of rules, update UI state private void DeleteRuleButtonClick(object sender, EventArgs e) { IRenameRule currentSelectedRule = (IRenameRule)RulesListView.SelectedItems[0].Tag; int ruleIndex = Globals.RenameRules.IndexOf(Globals.RenameRules.Find(rule => rule.Id == currentSelectedRule.Id)); Globals.RenameRules.RemoveAt(ruleIndex); UpdateRulesListView(); UpdateFileRenameListView(); RulesListView.Focus(); if (RulesListView.Items.Count != 0) { RulesListView.Items[RulesListView.Items.Count - 1].Focused = true; RulesListView.Items[RulesListView.Items.Count - 1].Selected = true; } else { DeleteRuleButton.Enabled = false; EditRuleButton.Enabled = false; RenameButton.Enabled = false; } UpdateRuleButtonStates(null, null); }
// update the RulesListView rename rule items private void UpdateRulesListView() { RulesListView.Items.Clear(); for (int i = 0; i < Globals.RenameRules.Count; i++) { IRenameRule rule = Globals.RenameRules[i]; ListViewItem ruleLVItem = new ListViewItem { Text = (i + 1).ToString() }; ruleLVItem.Checked = rule.Enabled; ruleLVItem.SubItems.Add(rule.Name); ruleLVItem.SubItems.Add(rule.Description); ruleLVItem.Tag = rule; RulesListView.Items.Add(ruleLVItem); } if (RulesListView.Items.Count > 0) { RulesListView.AutoResizeColumn(2, ColumnHeaderAutoResizeStyle.ColumnContent); } ResetOldNewFileNameValues(); }
public Renamer(IRenameRule renameRule) { this.renameRule = renameRule ?? throw new ArgumentNullException(nameof(renameRule)); }
private void ApplyEditingState(IRenameRule rule) { Text = "Edit Rule"; currentlyEditedRule = rule; switch (rule) { case InsertRule insertRule: RuleTypeListBox.SelectedIndex = 0; InsertTextTextBox.Text = insertRule.InsertText; InsertTextRadioButton.Checked = !insertRule.NumberSequence; InsertNumberSeqRadioButton.Checked = insertRule.NumberSequence; InsertNumberSeqStartingAtNumericUpDown.Value = insertRule.NumberSequenceStart; InsertNumberSeqLeadingZeroesNumericUpDown.Value = insertRule.NumberSequenceLeadingZeroes; InsertPrefixRadioButton.Checked = insertRule.Prefix; InsertSuffixRadioButton.Checked = insertRule.Suffix; InsertAtPositionRadioButton.Checked = insertRule.Position; InsertPositionNumericUpDown.Value = insertRule.PositionIndex; InsertPositionRightLeftCheckBox.Checked = insertRule.PositionRightToLeft; InsertBeforeTextRadioButton.Checked = insertRule.BeforeText; InsertBeforeTextTextBox.Text = insertRule.BeforeTextStr; InsertAfterTextRadioButton.Checked = insertRule.AfterText; InsertAfterTextTextBox.Text = insertRule.AfterTextStr; ReplaceCurrentFileNameRadioButton.Checked = insertRule.ReplaceFileName; InsertIgnoreExtensionCheckBox.Checked = insertRule.IgnoreExtension; break; case DeleteRule deleteRule: RuleTypeListBox.SelectedIndex = 1; DeleteFromPositionRadioButton.Checked = deleteRule.FromPosition; DeleteFromPositionNumericUpDown.Value = deleteRule.FromPositionIndex; DeleteFromDelimiterRadioButton.Checked = deleteRule.FromDelimiter; DeleteFromDelimiterTextBox.Text = deleteRule.FromDelimiterStr; DeleteToPositionRadioButton.Checked = deleteRule.ToPosition; DeleteToPositionNumericUpDown.Value = deleteRule.ToPositionIndex; DeleteToDelimiterRadioButton.Checked = deleteRule.ToDelimiter; DeleteToDelimiterTextBox.Text = deleteRule.ToDelimiterStr; DeleteToEndRadioButton.Checked = deleteRule.DeleteToEnd; DeleteEntireFileNameCheckBox.Checked = deleteRule.DeleteEntireFileName; DeleteKeepDelimitersCheckBox.Checked = deleteRule.KeepDelimiters; DeleteIgnoreExtensionCheckBox.Checked = deleteRule.IgnoreExtension; break; case RemoveRule removeRule: RuleTypeListBox.SelectedIndex = 2; RemoveTextTextBox.Text = removeRule.RemoveText; RemoveAllOccurrencesRadioButton.Checked = removeRule.AllOccurrences; RemoveFirstOccurrenceRadioButton.Checked = removeRule.FirstOccurrence; RemoveLastOccurrenceRadioButton.Checked = removeRule.LastOccurrence; RemoveCaseSensitiveCheckBox.Checked = removeRule.CaseSensitive; RemoveIgnoreExtensionCheckBox.Checked = removeRule.IgnoreExtension; break; case ReplaceRule replaceRule: RuleTypeListBox.SelectedIndex = 3; ReplaceFindTextBox.Text = replaceRule.FindText; ReplaceTextTextBox.Text = replaceRule.ReplaceText; ReplaceAllOccurrencesRadioButton.Checked = replaceRule.AllOccurrences; ReplaceFirstOccurrenceRadioButton.Checked = replaceRule.FirstOccurrence; ReplaceLastOccurrenceRadioButton.Checked = replaceRule.LastOccurrence; ReplaceCaseSensitiveCheckBox.Checked = replaceRule.CaseSensitive; ReplaceIgnoreExtensionCheckBox.Checked = replaceRule.IgnoreExtension; break; case CleanRule cleanRule: RuleTypeListBox.SelectedIndex = 4; CleanLatinAlphabetCheckBox.Checked = cleanRule.CleanLatinAlphabet; CleanDigitsCheckBox.Checked = cleanRule.CleanDigits; CleanBracketsCheckBox.Checked = cleanRule.CleanBrackets; CleanSymbolsCheckBox.Checked = cleanRule.CleanSymbols; CleanUserDefinedCheckBox.Checked = cleanRule.CleanUserDefined; CleanUserDefinedTextBox.Text = cleanRule.CleanUserDefinedText; CleanCaseSensitiveCheckBox.Checked = cleanRule.CaseSensitive; CleanIgnoreExtensionCheckBox.Checked = cleanRule.IgnoreExtension; break; case RegexRule regexRule: RuleTypeListBox.SelectedIndex = 5; RegexFindTextTextBox.Text = regexRule.RegexFindText; RegexReplaceTextTextBox.Text = regexRule.ReplaceText; RegexIgnoreExtensionCheckBox.Checked = regexRule.IgnoreExtension; break; } }