private static void LoadFolder(string folder)

        {
            try

            {
                if (!loadedPlugins.ContainsKey(folder))

                {
                    PluginFinder pf = new PluginFinder();

                    IForwardDestinationHandler plugin = pf.Search <IForwardDestinationHandler>(folder, CheckType, ignoreList);

                    if (plugin != null)

                    {
                        Type type = plugin.GetType();

                        PluginInfo pi = new PluginInfo(folder, type);



                        LoadPlugin(pi, plugin);
                    }
                }
            }

            catch (Exception ex)

            {
                // suppress any per-plugin loading exceptions

                Utility.WriteDebugInfo(String.Format("Plugin failed to load: '{0}' - {1} - {2}", folder, ex.Message, ex.StackTrace));
            }
        }
Пример #2
0
        public static Growl.Destinations.DestinationSettingsPanel GetSettingsPanel(Growl.Destinations.ForwardDestination fd)
        {
            IForwardDestinationHandler handler = GetHandler(fd);

            Growl.Destinations.DestinationSettingsPanel panel = handler.GetSettingsPanel(fd);
            return(panel);
        }
Пример #3
0
 private static void LoadBuiltIn(IForwardDestinationHandler fdh)
 {
     if (fdh != null)
     {
         string path = Path.Combine(userForwarderDirectory, Growl.CoreLibrary.PathUtility.GetSafeFolderName(fdh.Name));
         LoadInternal(fdh, null, path);
     }
 }
Пример #4
0
        public ForwardDestinationListItem(string text, Image image, IForwardDestinationHandler ifdh)

        {
            this.text = text;

            this.image = image;

            this.ifdh = ifdh;
        }
        private static void LoadInternal(IForwardDestinationHandler fdh, string installPath, string settingsPath)

        {
            string name = null;

            try

            {
                if (fdh != null)

                {
                    name = fdh.Name;

                    loadedHandlersList.Add(fdh);



                    List <Type> list = fdh.Register();

                    foreach (Type type in list)

                    {
                        if (typeof(ForwardDestination).IsAssignableFrom(type))

                        {
                            if (!loadedTypes.ContainsKey(type))

                            {
                                lock (loadedTypes)

                                {
                                    if (!loadedTypes.ContainsKey(type))

                                    {
                                        loadedTypes.Add(type, fdh);
                                    }
                                }
                            }
                        }
                    }



                    Utility.WriteDebugInfo(String.Format("Forwarder '{0}' was loaded successfully", name));
                }
            }

            catch (Exception ex)

            {
                // suppress any per-plugin loading exceptions

                Utility.WriteDebugInfo(String.Format("Forwarder failed to load: '{0}' - {1} - {2}", name, ex.Message, ex.StackTrace));
            }
        }
Пример #6
0
        private static void LoadPlugin(PluginInfo pi, IForwardDestinationHandler ifdh)
        {
            try
            {
                // load if not already loaded
                if (ifdh == null)
                {
                    PluginFinder pf = new PluginFinder();
                    ifdh = pf.Load <IForwardDestinationHandler>(pi, ignoreList);
                }

                if (ifdh != null)
                {
                    // for the 'path' value, we still want to use the userprofile directory no matter where the plugin was loaded from
                    // the reason is that the 'path' is where plugin settings will be saved, so it needs to be user writable and user-specific
                    string path = Path.Combine(userForwarderDirectory, Growl.CoreLibrary.PathUtility.GetSafeFolderName(ifdh.Name));

                    // check to make sure this plugin was not loaded from another directory already
                    if (!loadedPlugins.ContainsKey(path))
                    {
                        loadedPlugins.Add(pi.FolderPath, pi);
                        if (!loadedPlugins.ContainsKey(path))
                        {
                            loadedPlugins.Add(path, pi);                                   // link by the settings path as well so we can detect duplicate plugins in other folders
                        }
                        loadedPluginsList.Add(pi);

                        LoadInternal(ifdh, pi.FolderPath, path);
                    }
                    else
                    {
                        // plugin was not valid
                        Utility.WriteDebugInfo(String.Format("Forwarder not loaded: '{0}' - Duplicate plugin was already loaded from another folder", pi.FolderPath));
                    }
                }
                else
                {
                    // plugin was not valid
                    Utility.WriteDebugInfo(String.Format("Forwarder not loaded: '{0}' - Does not implement IForwardDestinationHandler interface", pi.FolderPath));
                }
            }
            catch (Exception ex)
            {
                // suppress any per-plugin loading exceptions
                Utility.WriteDebugInfo(String.Format("Forwarder failed to load: '{0}' - {1} - {2}", pi.FolderPath, ex.Message, ex.StackTrace));
            }
        }
Пример #7
0
 public BonjourListItem(DetectedService ds, IForwardDestinationHandler ifdh) : base(ds.Service.Name, ds.Platform.GetIcon(), ifdh)
 {
     this.ds = ds;
 }
 public ForwardDestinationListItem(string text, Image image, IForwardDestinationHandler ifdh)
 {
     this.text = text;
     this.image = image;
     this.ifdh = ifdh;
 }
Пример #9
0
 public ForwardDestinationListItem(string text, Image image, IForwardDestinationHandler ifdh)
     : base(text, image, ifdh)
 {
 }
 public BonjourListItem(DetectedService ds, IForwardDestinationHandler ifdh)
     : base(ds.Service.Name, ds.Platform.GetIcon(), ifdh)
 {
     this.ds = ds;
 }
        private static void LoadPlugin(PluginInfo pi, IForwardDestinationHandler ifdh)
        {
            try
            {
                // load if not already loaded
                if (ifdh == null)
                {
                    PluginFinder pf = new PluginFinder();
                    ifdh = pf.Load<IForwardDestinationHandler>(pi, ignoreList);
                }

                if (ifdh != null)
                {
                    // for the 'path' value, we still want to use the userprofile directory no matter where the plugin was loaded from
                    // the reason is that the 'path' is where plugin settings will be saved, so it needs to be user writable and user-specific
                    string path = Path.Combine(userForwarderDirectory, Growl.CoreLibrary.PathUtility.GetSafeFolderName(ifdh.Name));

                    // check to make sure this plugin was not loaded from another directory already
                    if (!loadedPlugins.ContainsKey(path))
                    {
                        loadedPlugins.Add(pi.FolderPath, pi);
                        if (!loadedPlugins.ContainsKey(path)) loadedPlugins.Add(path, pi); // link by the settings path as well so we can detect duplicate plugins in other folders
                        loadedPluginsList.Add(pi);

                        LoadInternal(ifdh, pi.FolderPath, path);
                    }
                    else
                    {
                        // plugin was not valid
                        Utility.WriteDebugInfo(String.Format("Forwarder not loaded: '{0}' - Duplicate plugin was already loaded from another folder", pi.FolderPath));
                    }
                }
                else
                {
                    // plugin was not valid
                    Utility.WriteDebugInfo(String.Format("Forwarder not loaded: '{0}' - Does not implement IForwardDestinationHandler interface", pi.FolderPath));
                }
            }
            catch (Exception ex)
            {
                // suppress any per-plugin loading exceptions
                Utility.WriteDebugInfo(String.Format("Forwarder failed to load: '{0}' - {1} - {2}", pi.FolderPath, ex.Message, ex.StackTrace));
            }
        }
        private static void LoadInternal(IForwardDestinationHandler fdh, string installPath, string settingsPath)
        {
            string name = null;
            try
            {
                if (fdh != null)
                {
                    name = fdh.Name;
                    loadedHandlersList.Add(fdh);

                    List<Type> list = fdh.Register();
                    foreach (Type type in list)
                    {
                        if (typeof(ForwardDestination).IsAssignableFrom(type))
                        {
                            if (!loadedTypes.ContainsKey(type))
                            {
                                lock (loadedTypes)
                                {
                                    if (!loadedTypes.ContainsKey(type))
                                    {
                                        loadedTypes.Add(type, fdh);
                                    }
                                }
                            }
                        }
                    }

                    Utility.WriteDebugInfo(String.Format("Forwarder '{0}' was loaded successfully", name));
                }
            }
            catch (Exception ex)
            {
                // suppress any per-plugin loading exceptions
                Utility.WriteDebugInfo(String.Format("Forwarder failed to load: '{0}' - {1} - {2}", name, ex.Message, ex.StackTrace));
            }
        }
 private static void LoadBuiltIn(IForwardDestinationHandler fdh)
 {
     if (fdh != null)
     {
         string path = Path.Combine(userForwarderDirectory, Growl.CoreLibrary.PathUtility.GetSafeFolderName(fdh.Name));
         LoadInternal(fdh, null, path);
     }
 }
 public ForwardDestinationListItem(string text, Image image, IForwardDestinationHandler ifdh)
     : base(text, image, ifdh)
 {
 }