Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        // 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;
        }
Exemplo n.º 3
0
 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;
     }
 }
Exemplo n.º 4
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();
        }
Exemplo n.º 5
0
        // 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;
        }
Exemplo n.º 6
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);
        }
Exemplo n.º 7
0
        // 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();
        }
Exemplo n.º 8
0
 public Renamer(IRenameRule renameRule)
 {
     this.renameRule = renameRule ?? throw new ArgumentNullException(nameof(renameRule));
 }
Exemplo n.º 9
0
        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;
            }
        }