public MainForm() { InitializeComponent(); Application.Idle += new EventHandler(Application_Idle); // Find and add actions Assembly assembly = Assembly.GetExecutingAssembly(); List <IXCOMAction> actions = new List <IXCOMAction>(); foreach (Type type in assembly.GetTypes().Where(p => p.BaseType == typeof(XCOMActionBase))) { IXCOMAction instance = (IXCOMAction)Activator.CreateInstance(type); actions.Add(instance); } actions.Sort((a, b) => { return(a.Order < b.Order ? -1 : 1); }); foreach (IXCOMAction action in actions) { bool canRunWithoutDialog = ((action.Interface & ActionInterface.Command) != ActionInterface.None); lbActions.Items.Add(action, action.Recommended && canRunWithoutDialog); // Dialog button if ((action.Interface & ActionInterface.Dialog) != ActionInterface.None) { lbActions.AddButton(lbActions.Items.Count - 1); } // Help button if (!string.IsNullOrEmpty(action.HelpText)) { lbActions.AddButton(lbActions.Items.Count - 1, "?"); } } }
void lbActions_ButtonClick(object sender, AcadUtility.WinForms.CheckedListBoxWithButtons.ButtonClickEventArgs e) { IXCOMAction action = (IXCOMAction)lbActions.Items[e.ItemIndex]; if (string.IsNullOrEmpty(e.ButtonText) && (action.Interface & ActionInterface.Dialog) != ActionInterface.None) { action.ShowDialog(); } else if (e.ButtonText == "?" && !string.IsNullOrEmpty(action.HelpText)) { AcadUtility.WinForms.HelpForm.ShowDialog(action.Name, action.HelpText); } }
public void AddAction(IXCOMAction action) { deployActions.Add(action); }