private static void RegisterCustomNodeTypes(PluginInfo pluginInfo) { Contract.Requires(pluginInfo != null); var customNodeTypes = pluginInfo.Interface.GetCustomNodeTypes(); if (customNodeTypes == null) { return; } if (customNodeTypes.NodeTypes == null || customNodeTypes.Serializer == null || customNodeTypes.CodeGenerator == null) { throw new ArgumentException(); // TODO } foreach (var nodeType in customNodeTypes.NodeTypes) { if (!nodeType.IsSubclassOf(typeof(BaseNode))) { throw new ArgumentException($"Type '{nodeType}' is not a valid node."); } } pluginInfo.CustomNodeTypes = customNodeTypes; NodeTypesBuilder.AddPluginNodeGroup(pluginInfo.Interface, customNodeTypes.NodeTypes); CustomNodeSerializer.Add(customNodeTypes.Serializer); CppCodeGenerator.Add(customNodeTypes.CodeGenerator); }
private static void DeregisterCustomNodeTypes(PluginInfo pluginInfo) { Contract.Requires(pluginInfo != null); if (pluginInfo.CustomNodeTypes == null) { return; } NodeTypesBuilder.RemovePluginNodeGroup(pluginInfo.Interface); CustomNodeSerializer.Remove(pluginInfo.CustomNodeTypes.Serializer); CppCodeGenerator.Remove(pluginInfo.CustomNodeTypes.CodeGenerator); }
private void memoryViewControl_ChangeWrappedTypeClick(object sender, NodeClickEventArgs e) { if (e.Node is BaseWrapperNode wrapperNode) { var items = NodeTypesBuilder.CreateToolStripMenuItems(t => { var node = BaseNode.CreateInstanceFromType(t); if (wrapperNode.CanChangeInnerNodeTo(node)) { wrapperNode.ChangeInnerNode(node); } }, wrapperNode.CanChangeInnerNodeTo(null)); var menu = new ContextMenuStrip(); menu.Items.AddRange(items.ToArray()); menu.Show(this, e.Location); } }
protected override void OnLoad(EventArgs e) { base.OnLoad(e); GlobalWindowManager.AddWindow(this); pluginManager.LoadAllPlugins(Path.Combine(Application.StartupPath, Constants.PluginsFolder), Program.Logger); toolStrip.Items.AddRange(NodeTypesBuilder.CreateToolStripButtons(ReplaceSelectedNodesWithType).ToArray()); changeTypeToolStripMenuItem.DropDownItems.AddRange(NodeTypesBuilder.CreateToolStripMenuItems(ReplaceSelectedNodesWithType, false).ToArray()); var createDefaultProject = true; if (Program.CommandLineArgs.FileName != null) { try { LoadProjectFromPath(Program.CommandLineArgs.FileName); createDefaultProject = false; } catch (Exception ex) { Program.Logger.Log(ex); } } if (createDefaultProject) { SetProject(new ReClassNetProject()); LinkedWindowFeatures.CreateDefaultClass(); } if (Program.CommandLineArgs[Constants.CommandLineOptions.AttachTo] != null) { AttachToProcess(Program.CommandLineArgs[Constants.CommandLineOptions.AttachTo]); } }