Ejemplo n.º 1
0
        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
        }
Ejemplo n.º 2
0
        //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");
                }
            }
        }
Ejemplo n.º 3
0
        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");
                    }
                }
            }
        }
Ejemplo n.º 4
0
        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);
        }
Ejemplo n.º 5
0
        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");
                    }
                }
            }
        }
Ejemplo n.º 6
0
        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");
                    }
                }
            }
        }
Ejemplo n.º 7
0
        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");
                    }
                }
            }
        }
Ejemplo n.º 8
0
        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
        }
Ejemplo n.º 9
0
        //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");
                }
            }
        }