public MyEventArgBase(String eventName, IMyPlugin source, Int32 floorPriority = -1, Int32 ceilingPrority = 0) { EventName = eventName; MyPlugin = source; FloorPriority = floorPriority; CeilingPriority = ceilingPrority; }
static void Main(string[] args) { IMyPlugin plugin1 = CreateFromConfig <IMyPlugin>("PluginType"); plugin1.DoSomethingPlugInIsh(); // etc... }
private void AttachPlugins(PluginList plugins, Assembly pluginAssembly) { try { List <Type> availableTypes = new List <Type>(); availableTypes.AddRange(pluginAssembly.GetTypes()); // Get the object that implements the IPluginForm interface // and PluginAttribute List <Type> pluginForms = availableTypes.FindAll(delegate(Type t) { List <Type> interfaceTypes = new List <Type>(t.GetInterfaces()); Object[] arr = t.GetCustomAttributes(typeof(MyPluginAttribute), true); return(!(arr == null || arr.Length == 0) && interfaceTypes.Contains(typeof(IMyPlugin))); }); foreach (Type pluginForm in pluginForms) { if (typeof(IMyPlugin).IsAssignableFrom(pluginForm)) { try { IMyPlugin gsaPlugin = Activator.CreateInstance(pluginForm) as IMyPlugin; if (gsaPlugin != null) { plugins.Add(gsaPlugin); } } catch (MyAppAccessDeniedException ex) { Logger.Instance.WriteLog(ex); // user does not permission to load this } catch (Exception ex) { MyAppAccessDeniedException accessDeniedException = ex.InnerException as MyAppAccessDeniedException; // suppress MyAppAccessDeniedException if (accessDeniedException == null) { #if DEBUG MessageBox.Show(ex.StackTrace, ex.Message, MessageBoxButtons.OK, MessageBoxIcon.Error); #endif Logger.Instance.WriteLog(accessDeniedException); } } } } } catch (Exception ex) { Logger.Instance.WriteLog(ex.Message); } }
public void ActivatePlugins() { if (_plugins == null) { RefreshPluginStore(); } foreach (AddInToken addinToken in _plugins) { try { // Activate the add-in IMyPlugin addinInstance = addinToken.Activate <IMyPlugin>(AddInSecurityLevel.FullTrust); addinInstance.Initialize(this); //var d = addinToken.QualificationData[AddInSegmentType.AddIn]; // Use the add-in Console.WriteLine($"Add-in {addinToken.Name} Version {addinToken.Version}"); Console.WriteLine($"---------------------"); Console.WriteLine($"Plugin name: {addinInstance.Name}"); Console.WriteLine($"Plugin description: {addinInstance.Description}"); Console.WriteLine($"---------------------"); Console.WriteLine(); Console.WriteLine("Executing Operate: "); Console.WriteLine("Operate(10, 20) = " + addinInstance.Operate(10, 20)); Console.WriteLine(); Console.WriteLine("Executing SimpleMethod(): "); addinInstance.SimpleMethod(); Console.WriteLine(); Console.WriteLine("Executing SimpleMethod(\"This is some message from host\"): "); addinInstance.SimpleMethod("This is some message from host"); Console.WriteLine(); Console.WriteLine("Executing: SimpleMethod(\"Host message1\", \"Host message2\")"); Console.WriteLine(addinInstance.SimpleMethod("Host message1", "Host message2")); Console.WriteLine("----------------------------------------------------"); Console.WriteLine("''''''''''''''''''''''''''''''''''''''''''''''''''''"); Console.WriteLine("Shutting it down.....: ->"); AddInController.GetAddInController(addinInstance).Shutdown(); Console.WriteLine("Shut down.....: ->"); } catch (TargetInvocationException ex) { Console.WriteLine(ex.InnerException); } } }
public void AddSubscriber(String eventName, IMyPlugin plugin) { lock (s_subscriberLock) { PluginList pluginList; if (!m_Subscribers.TryGetValue(eventName, out pluginList)) { pluginList = new PluginList(); m_Subscribers.Add(eventName, pluginList); } pluginList.Add(plugin); } }
public Boolean RemoveSubscriber(String eventName, IMyPlugin plugin) { Boolean removedSubscriber = false; lock (s_subscriberLock) { PluginList pluginList; if (!m_Subscribers.TryGetValue(eventName, out pluginList)) { throw new Exception(String.Format("{0} is not found!", eventName)); } removedSubscriber = pluginList.Remove(plugin); } return(removedSubscriber); }
// Attach module form to main application panel and // add a menu item dynamically private void PrepareAndAttachForm(Form moduleChildForm) { moduleChildForm.AutoScroll = true; moduleChildForm.AutoSize = false; moduleChildForm.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None; moduleChildForm.MinimizeBox = false; moduleChildForm.ShowIcon = false; moduleChildForm.ShowInTaskbar = false; moduleChildForm.SizeGripStyle = System.Windows.Forms.SizeGripStyle.Hide; moduleChildForm.Dock = DockStyle.Fill; moduleChildForm.TopLevel = false; moduleChildForm.Parent = this; moduleChildForm.Visible = true; this.splitContainer.Panel2.Controls.Add(moduleChildForm); // By default add the module form to receive shutdown event IMyPlugin plugin = moduleChildForm as IMyPlugin; if (plugin != null) { EventPublisher.Instance.AddSubscriber(Utility.GlobalConstants.APP_SHUTDOWN, plugin); } }
public MyPluginViewToContractAdapter(IMyPlugin view) { _view = view; }
public MyEventArg(String eventName, T value, IMyPlugin source = null, Int32 floorPriority = -1, Int32 ceilingPrority = 0) : base(eventName, source, floorPriority, ceilingPrority) { Value = value; }