void CallMethodOnPlugin(Action <PluginBase> methodToCall, string methodName) { #if !TEST // let internal plugins handle changes first before external plugins. var sortedPlugins = this.Plugins.OrderBy(item => !(item is InternalPlugin)).ToArray(); foreach (var plugin in sortedPlugins) { PluginContainer container = this.PluginContainers[plugin]; if (container.IsEnabled) { try { methodToCall(plugin); } catch (Exception e) { #if DEBUG MessageBox.Show("Error in plugin " + plugin.FriendlyName + ":\n\n" + e.ToString()); #endif container.Fail(e, "Failed in " + methodName); } } } #endif }
//internal static void Initialize() //{ // if (mGlobalInstance == null) // { // mGlobalInstance = new PluginManager(true); // LoadPlugins(mGlobalInstance); // } // if (mProjectInstance != null) // { // foreach (IPlugin plugin in mProjectInstance.mPluginContainers.Keys) // { // ShutDownPlugin(plugin, PluginShutDownReason.GlueShutDown); // } // } // mProjectInstance = new PluginManager(false); // mInstances.Clear(); // mInstances.Add(mGlobalInstance); // mInstances.Add(mProjectInstance); // LoadPlugins(mProjectInstance); //} internal static void StartupPlugin(IPlugin plugin, PluginManager instance) { // See if the plugin already exists - it may implement multiple interfaces if (!instance.mPluginContainers.ContainsKey(plugin)) { PluginContainer pluginContainer = new PluginContainer(plugin); instance.mPluginContainers.Add(plugin, pluginContainer); try { plugin.UniqueId = plugin.GetType().FullName; if (!mPluginSettingsSave.DisabledPlugins.Contains(plugin.UniqueId)) { plugin.StartUp(); } else { pluginContainer.IsEnabled = false; } } catch (Exception e) { #if DEBUG MessageBox.Show("Plugin failed to start up:\n\n" + e.ToString()); #endif pluginContainer.Fail(e, "Plugin failed in StartUp"); } } }
private static void ExportFile(ElementSave elementSave) { PluginManager pluginManager = mGlobalInstance; foreach (PluginBase plugin in pluginManager.Plugins) { PluginContainer container = pluginManager.mPluginContainers[plugin]; if (container.IsEnabled) { try { plugin.CallExport(elementSave); } catch (Exception e) { container.Fail(e, "Failed in ReactToRightClick"); } } } }
internal bool ShouldExclude(VariableSave defaultVariable, RecursiveVariableFinder rvf) { bool shouldExclude = false; foreach (var plugin in this.Plugins.Where(item => this.PluginContainers[item].IsEnabled)) { PluginContainer container = this.PluginContainers[plugin]; if (container.Plugin is PluginBase) { try { shouldExclude |= ((PluginBase)container.Plugin).GetIfVariableIsExcluded(defaultVariable, rvf); } catch (Exception e) { container.Fail(e, "Failed in GetIfVariableIsExcluded"); } } } return(shouldExclude); }
internal void ProjectSave(GumProjectSave savedProject) { foreach (var plugin in this.Plugins) { PluginContainer container = this.PluginContainers[plugin]; if (container.IsEnabled) { try { plugin.CallProjectSave(savedProject); } catch (Exception e) { #if DEBUG MessageBox.Show("Error in plugin " + plugin.FriendlyName + ":\n\n" + e.ToString()); #endif container.Fail(e, "Failed in ProjectSave"); } } } }
internal void Export(ElementSave elementToExport) { foreach (PluginBase plugin in this.Plugins) { PluginContainer container = this.mPluginContainers[plugin]; if (container.IsEnabled) { try { plugin.CallExport(elementToExport); } catch (Exception e) { #if DEBUG MessageBox.Show("Error in plugin " + plugin.FriendlyName + ":\n\n" + e.ToString()); #endif container.Fail(e, "Failed in ReactToRightClick"); } } } }
internal void AfterElementSave(ElementSave savedElement) { foreach (PluginBase plugin in this.Plugins) { PluginContainer container = this.mPluginContainers[plugin]; if (container.IsEnabled) { try { plugin.CallAfterElementSave(savedElement); } catch (Exception e) { #if DEBUG MessageBox.Show("Error in plugin " + plugin.FriendlyName + ":\r\n" + e.ToString()); #endif container.Fail(e, "Failed in ElementSave"); } } } }
void CallMethodOnPlugin(Action <PluginBase> methodToCall, string methodName) { #if !TEST foreach (var plugin in this.Plugins) { PluginContainer container = this.PluginContainers[plugin]; if (container.IsEnabled) { try { methodToCall(plugin); } catch (Exception e) { #if DEBUG MessageBox.Show("Error in plugin " + plugin.FriendlyName + ":\n\n" + e.ToString()); #endif container.Fail(e, "Failed in " + methodName); } } } #endif }