Example #1
0
        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);
        }
Example #2
0
        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);
        }
Example #3
0
        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);
            }
        }
Example #4
0
        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]);
            }
        }