Exemple #1
0
        private void LoadPlugin(AzusaPlugin instance)
        {
            context.Splash.SetLabel(String.Format("Lade Plug-In:" + instance.DisplayName));
            instance.OnLoad();
            if (instance.IsExecutable)
            {
                ToolStripButton tsb = new ToolStripButton(instance.DisplayName);
                tsb.Click += delegate(object sender, EventArgs args) { instance.Execute(); };
                context.MainForm.plugInsToolStripMenuItem.DropDownItems.Add(tsb);
                context.MainForm.plugInsToolStripMenuItem.Visible = true;
            }

            context.Plugins.Add(instance);
        }
Exemple #2
0
        private void ScanPluginAssembly(AzusaContext context, Assembly assembly)
        {
            Type[] exportedTypes = assembly.GetExportedTypes();
            Array.Sort(exportedTypes, new TypeComparer());

            Type pluginType = typeof(AzusaPlugin);
            Type imageAcquisitionPluginType = typeof(IImageAcquisitionPlugin);
            Type sidecarViewerPluginType    = typeof(ISidecarDisplayControl);

            foreach (Type exportedType in exportedTypes)
            {
                if (exportedType.IsAbstract)
                {
                    continue;
                }

                if (exportedType.IsInterface)
                {
                    continue;
                }

                if (pluginType.IsAssignableFrom(exportedType))
                {
                    try
                    {
                        AzusaPlugin instance = (AzusaPlugin)Activator.CreateInstance(exportedType);
                        LoadPlugin(instance);
                    }
                    catch (Exception e)
                    {
                        context.Splash.SetLabel(String.Format("Konnte Plug-In {0} nicht starten: {1}", exportedType.Name, e));
                    }
                }
                else if (imageAcquisitionPluginType.IsAssignableFrom(exportedType))
                {
                    IImageAcquisitionPlugin instance = (IImageAcquisitionPlugin)Activator.CreateInstance(exportedType);
                    context.ImageAcquisitionPlugins.Add(instance);
                }
                else if (sidecarViewerPluginType.IsAssignableFrom(exportedType))
                {
                    ISidecarDisplayControl instance = (ISidecarDisplayControl)Activator.CreateInstance(exportedType);
                    Guid guid = instance.DisplayControlUuid;
                    context.SidecarDisplayControls.Add(guid, exportedType);
                }
            }
        }