public void RegisterNodeType(string type, string Name, IControlNodeFactoryPlugin node) { string[] NodeMenuStrings = type.Split('/'); MenuItem lastMenuItem = miCreateNode; for (int x = 0; x < NodeMenuStrings.Length; x++) { string MenuKey = string.Join("/", NodeMenuStrings.Take(x + 1).ToArray()); if (!MenuItems.ContainsKey(MenuKey)) { MenuItems.Add(MenuKey, new MenuItem() { Header = NodeMenuStrings[x] }); lastMenuItem.Items.Add(MenuItems[MenuKey]); } lastMenuItem = MenuItems[MenuKey]; } if (lastMenuItem == null) return; lastMenuItem.Items.Add(new MenuItem() { Header = Name, Command = new NodeCommandWrapper(p => { Point position = networkControl.PointFromScreen(cmMenu.PointToScreen(new Point(0, 0))); NodeViewModel model = node.CreateNode(); model.X = position.X; model.Y = position.Y; if (model != null) CreateNode(model, /*position,*/ true); }) }); }
public void RegisterNodeType(string type, string Name, IControlNodeFactoryPlugin node) { string[] NodeMenuStrings = type.Split('/'); MenuItem lastMenuItem = miCreateNode; for (int x = 0; x < NodeMenuStrings.Length; x++) { string MenuKey = string.Join("/", NodeMenuStrings.Take(x + 1).ToArray()); if (!MenuItems.ContainsKey(MenuKey)) { MenuItems.Add(MenuKey, new MenuItem() { Header = NodeMenuStrings[x] }); lastMenuItem.Items.Add(MenuItems[MenuKey]); } lastMenuItem = MenuItems[MenuKey]; } if (lastMenuItem == null) { return; } lastMenuItem.Items.Add(new MenuItem() { Header = Name, Command = new NodeCommandWrapper(p => { Point position = networkControl.PointFromScreen(cmMenu.PointToScreen(new Point(0, 0))); NodeViewModel model = node.CreateNode(); model.X = position.X; model.Y = position.Y; if (model != null) { CreateNode(model, /*position,*/ true); } }) }); }