Beispiel #1
0
 //inject the Scribble Javascript object into the Zorbo Javascript Plugin.
 //this requires references to Jurassic.dll as well as the plugin (Javascript.dll)
 private void OnHostLoadedPlugin(object sender, LoadedPlugin <IServer, ServerPlugin> plugin)
 {
     if (plugin.Plugin is Javascript.JurassicPlugin js)
     {
         js.EmbedObject("Scribble", typeof(Scribble.Constructor), PropertyAttributes.Configurable);
     }
 }
Beispiel #2
0
        /// <summary>
        /// Pre load the plugins specified in the configuration file
        /// </summary>
        private void Loadplugins()
        {
            var pluginNames = new List <string>();

            m_plugins     = new Dictionary <string, PluginManager>();
            LoadedPlugins = new List <LoadedPlugin>();

            foreach (var patern in settings.StrategyLoadPaterns)
            {
                if (string.IsNullOrEmpty(patern.CustomLibrary) || pluginNames.Contains(patern.CustomLibrary))
                {
                    continue;
                }

                var plugin = new PluginManager(Directory.GetCurrentDirectory() + "\\" + patern.CustomLibrary,
                                               patern.CustomLibraryConfigSection);

                m_plugins.Add(plugin.Settings.id, plugin);

                var item = new LoadedPlugin
                {
                    Name        = plugin.Settings.Name,
                    ID          = plugin.Settings.id,
                    HasWinForm  = plugin.Settings.hasForm,
                    Description = plugin.Settings.Description
                };

                LoadedPlugins.Add(item);
            }
        }
Beispiel #3
0
 /// <summary>
 /// Initializes the specified plugin.
 /// </summary>
 /// <param name="player">The player.</param>
 public void Initialize(IAimpPlayer player)
 {
     if (IsLoaded)
     {
         LoadedPlugin.OnInitialize(player, LoadedPlugin.PluginId);
     }
 }
Beispiel #4
0
        /// <summary>
        /// Unloads this plugin.
        /// </summary>
        /// <returns><c>true</c> if XXXX, <c>false</c> otherwise.</returns>
        public bool Unload()
        {
            if (IsLoaded)
            {
                try
                {
                    if (PluginUnloadEvent != null)
                    {
                        PluginUnloadEvent(this);
                    }

                    LoadedPlugin.OnDispose();

                    if (PluginAppDomainInfo != null)
                    {
                        AppDomain.Unload(PluginAppDomainInfo);
                    }

                    PluginAppDomainInfo = null;
                    LoadedPlugin        = null;

                    GC.Collect();
                }
                catch (Exception ex)
                {
#if DEBUG
                    MessageBox.Show(ex.Message);
#endif
                }
            }

            return(!IsLoaded);
        }
 public PluginDisplayControl(LoadedPlugin _plugin)
 {
     Plugin  = _plugin;
     Details = Plugin.Details;
     InitializeComponent();
     nameLabel.Text        = Details.Name;
     descriptionLabel.Text = Details.Description;
     publisherLabel.Text   = Details.Publisher;
     filenameLabel.Text    = Path.GetFileName(Plugin.PluginAssembly.Location);
 }
        private static string GetBigIcon(LoadedPlugin loadedPlugin)
        {
            if (_colorTheme == 0)
            {
                if (!string.IsNullOrEmpty(loadedPlugin.BigDarkIconUrl))
                {
                    return(loadedPlugin.BigDarkIconUrl);
                }
            }

            return(loadedPlugin.BigIconUrl);
        }
        private static string GetBigIconForSubFunction(LoadedPlugin loadedPlugin, int i)
        {
            if (_colorTheme == 0)
            {
                if (!string.IsNullOrEmpty(loadedPlugin.SubBigDarkIconsUrl[i]))
                {
                    return(loadedPlugin.SubBigDarkIconsUrl[i]);
                }
            }

            return(loadedPlugin.SubBigIconsUrl[i]);
        }
Beispiel #8
0
 private static PushButtonData CreatePushButtonData(LoadedPlugin loadedPlugin)
 {
     return(CreatePushButtonData(
                loadedPlugin.Name,
                Language.GetFunctionLocalName(loadedPlugin.Name, loadedPlugin.LName),
                Language.GetFunctionShortDescription(loadedPlugin.Name, loadedPlugin.Description),
                loadedPlugin.SmallIconUrl,
                loadedPlugin.BigIconUrl,
                Language.GetFunctionFullDescription(loadedPlugin.Name, loadedPlugin.FullDescription),
                loadedPlugin.ToolTipHelpImage, loadedPlugin.Location,
                loadedPlugin.FullClassName,
                GetHelpUrl(loadedPlugin.Name)));
 }
Beispiel #9
0
        private void Plugin_OnException(LoadedPlugin parent, Exception ex)
        {
            string PluginName = "Unknowen";

            if (parent != null)
            {
                PluginName = parent.Details.Name;
            }
            var exceptionItem = new ListViewItem(PluginName);

            exceptionItem.SubItems.Add(ex.Message);
            pluginExceptionList.Items.Add(exceptionItem);
        }
Beispiel #10
0
        protected override void OnPluginKilled(LoadedPlugin <IServer, ServerPlugin> plugin)
        {
            try {
                plugin.Plugin.OnPluginKilled();
            }
            catch (Exception ex) {
                OnError(plugin, nameof(OnPluginKilled), ex);
            }

            try {
                RaisePluginKilled(plugin);
            }
            catch (Exception ex) {
                OnError(plugin, "Killed::EventHandler", ex);
            }
        }
Beispiel #11
0
        protected override void OnPluginLoaded(LoadedPlugin <IServer, ServerPlugin> plugin)
        {
            try {
                plugin.Plugin.Directory = Path.Combine(BaseDirectory, plugin.Name);
                plugin.Plugin.OnPluginLoaded(Server);
            }
            catch (Exception ex) {
                OnError(plugin, nameof(OnPluginLoaded), ex);
            }

            try {
                RaisePluginLoaded(plugin);
            }
            catch (Exception ex) {
                OnError(plugin, "Loaded::EventHandler", ex);
            }
        }
Beispiel #12
0
 public void CheckTrigger(LoadedPlugin plugin, string sender, string message)
 {
     try
     {
         foreach(var trigger in TriggerList)
         {
             if (message.ToLower().Contains(trigger.Key))
                 trigger.Value(sender);
         }
         
     }
     catch(Exception ex)
     {
         if(OnException!=null)
             OnException(plugin, ex);
     }
 }
Beispiel #13
0
 private static PushButtonData CreatePushButtonData(LoadedPlugin loadedPlugin, int i)
 {
     return(CreatePushButtonData(
                loadedPlugin.SubPluginsNames[i],
                Language.GetFunctionLocalName(
                    loadedPlugin.Name,
                    loadedPlugin.SubPluginsLNames[i], i + 1),
                Language.GetFunctionShortDescription(
                    loadedPlugin.Name,
                    loadedPlugin.SubDescriptions[i], i + 1),
                loadedPlugin.SubSmallIconsUrl[i], loadedPlugin.SubBigIconsUrl[i],
                Language.GetFunctionFullDescription(
                    loadedPlugin.Name,
                    loadedPlugin.SubFullDescriptions[i], i + 1),
                loadedPlugin.SubHelpImages[i], loadedPlugin.Location,
                loadedPlugin.SubClassNames[i],
                GetHelpUrl(loadedPlugin.Name)));
 }
Beispiel #14
0
 private void UI_OnTabAdd(LoadedPlugin parent, PluginTab tab)
 {
     if (tab != null)
     {
         try
         {
             TabPage t = new TabPage(tab.TabText);
             tab.TabControl.Parent = t;
             tab.TabControl.Dock   = DockStyle.Fill;
             t.Controls.Add(tab.TabControl);
             mainTabControl.Controls.Add(t);
         }
         catch (Exception ex)
         {
             OnException(parent, ex);
         }
     }
 }
Beispiel #15
0
 private void Bot_OnSayMessage(LoadedPlugin parent, string message, params object[] data)
 {
     try
     {
         if (message.StartsWith("/") && !parent.CanUseCommands)
         {
             throw new Exception("No permission for commands");
         }
         bot.SendMessage(string.Format(message, data));
     }
     catch (Exception ex)
     {
         OnExceptionDelegate oEx = parent.GetExceptionCallback();
         if (oEx != null)
         {
             oEx(parent, ex);
         }
     }
 }
Beispiel #16
0
 public void CheckTrigger(LoadedPlugin plugin, string sender, string message)
 {
     try
     {
         foreach (var trigger in TriggerList)
         {
             if (message.ToLower().Contains(trigger.Key))
             {
                 trigger.Value(sender);
             }
         }
     }
     catch (Exception ex)
     {
         if (OnException != null)
         {
             OnException(plugin, ex);
         }
     }
 }
Beispiel #17
0
        private void _loadPlugins()
        {
            var pluginsDirectory = new DirectoryInfo(_pluginsPath);

            if (!pluginsDirectory.Exists)
            {
                pluginsDirectory.Create();
            }

            foreach (var file in pluginsDirectory.GetFiles("*.dll"))
            {
                var assembly = Assembly.LoadFrom(file.FullName);
                foreach (var type in assembly.GetTypes())
                {
                    if (!type.IsSubclassOf(typeof(IPlugin)) || type.IsAbstract)
                    {
                        continue;
                    }
                    Longship.Instance.Log.LogInfo($"Loading plugin {file.Name}...");
                    try
                    {
                        _plugins[type] = new LoadedPlugin()
                        {
                            Plugin = type.InvokeMember(
                                null,
                                BindingFlags.CreateInstance,
                                null,
                                null,
                                null) as IPlugin,
                            Name = file.Name
                        };
                    }
                    catch (Exception e)
                    {
                        Longship.Instance.Log.LogError($"Can't load plugin {file.Name}.");
                        Longship.Instance.Log.LogError(e);
                    }
                }
            }
        }
Beispiel #18
0
        /// <summary>
        /// Pre load the plugins specified in the configuration file
        /// </summary>
        private void Loadplugins()
        {
            var pluginNames = new List<string>();
            m_plugins = new Dictionary<string, PluginManager>();
            LoadedPlugins = new List<LoadedPlugin>();

            foreach (var patern in settings.StrategyLoadPaterns)
            {
                if (string.IsNullOrEmpty(patern.CustomLibrary) || pluginNames.Contains(patern.CustomLibrary)) continue;

                var plugin = new PluginManager(Directory.GetCurrentDirectory() + "\\" + patern.CustomLibrary,
                                               patern.CustomLibraryConfigSection);

                m_plugins.Add(plugin.Settings.id, plugin);

                var item = new LoadedPlugin
                               {
                                   Name = plugin.Settings.Name,
                                   ID = plugin.Settings.id,
                                   HasWinForm = plugin.Settings.hasForm,
                                   Description = plugin.Settings.Description
                               };

                LoadedPlugins.Add(item);
            }
        }
Beispiel #19
0
 private void OnException(LoadedPlugin parent, Exception ex)
 {
     Debug.WriteLine("[{0}] Exception: {1}", parent.Details.Name, ex.Message);
 }
Beispiel #20
0
        public MainWindow()
        {
            using (LoadBotForm lbf = new LoadBotForm())
            {
                if (lbf.ShowDialog() != DialogResult.OK)
                {
                    Environment.Exit(0);
                    return;
                }
                bot = new IRCBot(lbf.BotLogin);
            }
            InitializeComponent();

            DirectoryInfo PluginDirectory;

            try
            {
                PluginDirectory = new DirectoryInfo("Plugins");
                if (!PluginDirectory.Exists)
                {
                    PluginDirectory.Create();
                }
            }
            catch
            {
                MessageBox.Show("No access to \"Plugin\" Directory.");
                return;
            }
            foreach (FileInfo pluginFile in PluginDirectory.GetFiles("*.dll"))
            {
                try
                {
                    LoadedPlugin plugin = PluginHandler.LoadPlugin(pluginFile.FullName);
                    plugin.OnException += Plugin_OnException;
                    if (!PluginIDList.Add(plugin.PluginID))
                    {
                        throw new Exception("Duplicate id");
                    }

                    HandlerBundle handlers = new HandlerBundle();

                    handlers.Bot               = new BotHandler(plugin);
                    handlers.Bot.OnException  += OnException;
                    handlers.Bot.OnSayMessage += Bot_OnSayMessage;

                    handlers.UI           = new BotUIHandler(plugin);
                    handlers.UI.OnTabAdd += UI_OnTabAdd;

                    plugin.Initilze(handlers);


                    foreach (var command in plugin.Details.LoadedCommands)
                    {
                        var handler = new CommandHandler(plugin, command);
                        if (!HandlerList.ContainsKey(handler.ID))
                        {
                            HandlerList.Add(handler.ID, handler);
                        }
                    }


                    PluginDisplayControl display = new PluginDisplayControl(plugin);
                    display.Parent   = PluginDisplayPanel;
                    display.Width    = PluginDisplayPanel.Width;
                    display.Anchor   = AnchorStyles.Left | AnchorStyles.Right | AnchorStyles.Top;
                    display.Location = new Point(0, PluginList.Count * display.Height);
                    PluginDisplayPanel.Controls.Add(display);

                    PluginList.Add(plugin);
                }
                catch
                {
                    Debug.WriteLine("Error on file {0}", pluginFile.Name);
                }

                LoadSettings();
            }
        }
Beispiel #21
0
 public PluginInfo(LoadedPlugin plugin)
 {
     Enabled = plugin.Enabled;
     Info    = new OpenPluginInfoBase(plugin.Info);
 }
Beispiel #22
0
 public PluginItemViewModel(LoadedPlugin p)
 {
     this.Plugin = p;
 }
Beispiel #23
0
 private static void AddPushButton(RibbonPanel panel, LoadedPlugin loadedPlugin)
 {
     // ReSharper disable once AssignmentIsFullyDiscarded
     _ = panel.AddItem(CreatePushButtonData(loadedPlugin)) as PushButton;
 }
Beispiel #24
0
 public CommandHandler(LoadedPlugin plugin, PluginCommand _command)
 {
     Parent  = plugin;
     Command = _command;
     ID      = string.Format("{0}->[{1}]", plugin.PluginID, _command.Name);
 }
Beispiel #25
0
 public PermissionsHandler(LoadedPlugin _parent)
 {
     Parent   = _parent;
     Handlers = new HandlerBundle();
 }