public IList <VisibleFilter> RetrieveVisibleFilters() { var list = new Collection <VisibleFilter>(); list.Add(new VisibleFilter(DefaultFilter.Basic) { Visible = true }); list.Add(new VisibleFilter(DefaultFilter.Content) { Visible = IsChecked(DefaultFilter.Content) }); list.Add(new VisibleFilter(DefaultFilter.Dates) { Visible = IsChecked(DefaultFilter.Dates) }); list.Add(new VisibleFilter(DefaultFilter.SizeAndAttributes) { Visible = IsChecked(DefaultFilter.SizeAndAttributes) }); list.Add(new VisibleFilter(DefaultFilter.Duplicates) { Visible = IsChecked(DefaultFilter.Duplicates) }); foreach (var p in Plugins.All()) { list.Add(new VisibleFilter(DefaultFilter.Plugin) { Visible = IsChecked(DefaultFilter.Plugin, p.PluginId), PluginId = p.PluginId }); } return(list); }
private void LoadPlugins() { foreach (var plugin in Plugins.All()) { var page = new TabPage(plugin.TabTitle) { UseVisualStyleBackColor = true }; var panel = new Panel { Dock = DockStyle.Fill, Padding = new Padding(3) }; page.Tag = new VisibleFilter(DefaultFilter.Plugin) { PluginId = plugin.PluginId, Visible = true }; var control = plugin.BuildTabPage(); control.Dock = DockStyle.Fill; panel.Controls.Add(control); page.Controls.Add(panel); _tabBucket.Add(page); tabsFilterOptions.TabPages.Add(page); } tabsFilterOptions.TabPages.Remove(tabConfig); tabsFilterOptions.TabPages.Add(tabConfig); }
private async Task btnPatch_Click(object sender, EventArgs e) { using var _ = new ControlLock(btnPatch); IoC.Notif.ShowStatus("Generating patch..."); IoC.Notif.ShowUnknownProgress(); if (Plugins.Any() && !Plugins.All(x => x.ValidateChanges())) { IoC.Notif.HideProgress(); IoC.Notif.ShowStatus("Pack install aborted"); return; } var sw = new Stopwatch(); sw.Start(); var success = await Async.Run(CreatePatch); Settings.UpdatePatchStatus(); IoC.Notif.HideProgress(); if (success) { IoC.Notif.ShowStatus($"Patch installed ({sw.Elapsed.TotalMilliseconds:n0} ms)"); } }
public ScriptContext Init() { if (HasInit) { return(this); } HasInit = true; if (InsertScriptMethods.Count > 0) { ScriptMethods.InsertRange(0, InsertScriptMethods); } if (InsertScriptBlocks.Count > 0) { ScriptBlocks.InsertRange(0, InsertScriptBlocks); } if (InsertPlugins.Count > 0) { Plugins.InsertRange(0, InsertPlugins); } foreach (var assembly in ScanAssemblies.Safe()) { foreach (var type in assembly.GetTypes()) { if (typeof(IScriptPlugin).IsAssignableFrom(type)) { if (Plugins.All(x => x.GetType() != type)) { Container.AddSingleton(type); var plugin = (IScriptPlugin)Container.Resolve(type); Plugins.Add(plugin); } } } } Args[ScriptConstants.Debug] = DebugMode; Container.AddSingleton(() => this); Container.AddSingleton(() => Pages); ScriptLanguagesArray = ScriptLanguages.Distinct().ToArray(); foreach (var scriptLanguage in ScriptLanguagesArray) { scriptLanguagesMap[scriptLanguage.Name] = scriptLanguage; if (scriptLanguage is IConfigureScriptContext init) { init.Configure(this); } } var beforePlugins = Plugins.OfType <IScriptPluginBefore>(); foreach (var plugin in beforePlugins) { plugin.BeforePluginsLoaded(this); } foreach (var plugin in Plugins) { plugin.Register(this); } OnAfterPlugins?.Invoke(this); foreach (var type in ScanTypes) { ScanType(type); } foreach (var assembly in ScanAssemblies.Safe()) { foreach (var type in assembly.GetTypes()) { ScanType(type); } } foreach (var method in ScriptMethods) { InitMethod(method); } foreach (var block in ScriptBlocks) { InitBlock(block); blocksMap[block.Name] = block; } ScriptNamespaces = ScriptNamespaces.Distinct().ToList(); var allTypes = new List <Type>(ScriptTypes); foreach (var asm in ScriptAssemblies) { allTypes.AddRange(asm.GetTypes()); } foreach (var type in allTypes) { if (!ScriptTypeNameMap.ContainsKey(type.Name)) { ScriptTypeNameMap[type.Name] = type; } var qualifiedName = ProtectedMethods.typeQualifiedName(type); if (!ScriptTypeQualifiedNameMap.ContainsKey(qualifiedName)) { ScriptTypeQualifiedNameMap[qualifiedName] = type; } } var afterPlugins = Plugins.OfType <IScriptPluginAfter>(); foreach (var plugin in afterPlugins) { plugin.AfterPluginsLoaded(this); } return(this); }
public ScriptContext Init() { if (HasInit) { return(this); } HasInit = true; if (InsertScriptMethods.Count > 0) { ScriptMethods.InsertRange(0, InsertScriptMethods); } if (InsertScriptBlocks.Count > 0) { ScriptBlocks.InsertRange(0, InsertScriptBlocks); } if (InsertPlugins.Count > 0) { Plugins.InsertRange(0, InsertPlugins); } foreach (var assembly in ScanAssemblies.Safe()) { foreach (var type in assembly.GetTypes()) { if (typeof(IScriptPlugin).IsAssignableFrom(type)) { if (Plugins.All(x => x.GetType() != type)) { Container.AddSingleton(type); var plugin = (IScriptPlugin)Container.Resolve(type); Plugins.Add(plugin); } } } } Args[ScriptConstants.Debug] = DebugMode; Container.AddSingleton(() => this); Container.AddSingleton(() => Pages); var beforePlugins = Plugins.OfType <IScriptPluginBefore>(); foreach (var plugin in beforePlugins) { plugin.BeforePluginsLoaded(this); } foreach (var plugin in Plugins) { plugin.Register(this); } OnAfterPlugins?.Invoke(this); foreach (var type in ScanTypes) { ScanType(type); } foreach (var assembly in ScanAssemblies.Safe()) { foreach (var type in assembly.GetTypes()) { ScanType(type); } } foreach (var method in ScriptMethods) { InitMethod(method); } foreach (var block in ScriptBlocks) { InitBlock(block); blocksMap[block.Name] = block; } var afterPlugins = Plugins.OfType <IScriptPluginAfter>(); foreach (var plugin in afterPlugins) { plugin.AfterPluginsLoaded(this); } return(this); }
private void btnSearch_Click(object sender, EventArgs e) { if (_searchEngine != null && _searchEngine.IsRunning) { _searchEngine.Stop(); btnSearch.Enabled = false; return; } var directoryInfo = new DirectoryInfo(cmbFolder.Text.Trim('\\') + "\\"); if (!directoryInfo.Exists) { MessageBox.Show(@"The specified folder does not exist.", @"Warning", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } var text = cmbCriteria.SelectedItem != null ? (string)cmbCriteria.SelectedItem : cmbCriteria.Text; try { if (chkRegularExpressions.Checked) { // ReSharper disable ReturnValueOfPureMethodIsNotUsed Regex.IsMatch("", text); // Do nothing with the value, just validate it for argument. } // ReSharper restore ReturnValueOfPureMethodIsNotUsed } catch (ArgumentException) { MessageBox.Show(@"The specified regular expression is not valid.", @"Warning", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } statusProgress.Style = ProgressBarStyle.Marquee; lstResults.ClearContent(); _resultsViewIsUpdated = false; // Save the criteria if (!string.IsNullOrEmpty(text)) { if (cmbCriteria.Items.Contains(text)) { cmbCriteria.Items.Remove(text); } cmbCriteria.Items.Insert(0, text); cmbCriteria.SelectedItem = 0; } // Save the content combobox var content = cmbContent.SelectedItem != null ? (string)cmbContent.SelectedItem : cmbContent.Text; if (!string.IsNullOrEmpty(content)) { if (cmbContent.Items.Contains(content)) { cmbContent.Items.Remove(content); } cmbContent.Items.Insert(0, content); cmbContent.SelectedItem = 0; } // Save the content btnSearch.Text = @"Stop"; statusLabel.Text = @"Searching... Please wait."; statusLabelExceptions.Text = null; tabsFilterOptions.Enabled = false; _searchEngine = new SearchEngine(BuildOptions(directoryInfo, text), Plugins.All().Select(f => f.GetCriterion()).Where(f => f != null).SelectMany(f => f)); _searchEngine.Start(LoadList, LoadListFinished); }