private string AddModuleInstance(VtmModuleBase module, VtmModuleBase.Position position) { if (module == null) { return("不能添加null模块到VtmDev"); } if (ModuleDictionary.ContainsKey(position)) { RemoveModule(position); } if (BlackModule.ContainsKey(position)) { BlackModule[position].Visibility = Visibility.Hidden; } if (position != VtmModuleBase.Position.NONE) { Children.Add(module); ModuleDictionary[position] = module; } else { Children.Add(module); NonePositionModuleList.Add(module); } module.AddMenuSeparator(); module.AddMenuItem("移除", () => RemoveModule(module)); module.position = position; module.FitPosition(position); return(null); }
public string AddModule(Type type, bool autoPos = true, VtmModuleBase.Position position = VtmModuleBase.Position.NONE) { if (type != typeof(VtmModuleBase) && type.IsSubclassOf(typeof(VtmModuleBase)) == false) { return("无法创建\n类型不匹配:" + type.ToString()); } var Constructor = type.GetConstructor(new Type[] { typeof(VtmDev), typeof(GlobalGUIManager) }); if (Constructor == null) { return("构造函数不匹配\n找不到参数为VtmDev的构造函数"); } var finalPos = VtmModuleBase.Position.NONE; bool hasPos = false; foreach (VtmModuleBase.Position classPosition in ModulePositionAttribute.GetPositionsByType(type)) { if (!autoPos)//手动指定建议位置 { //如果不满足则跳过 if (classPosition != position) { continue; } } if (ModuleDictionary.ContainsKey(classPosition) == false) { hasPos = true; finalPos = classPosition; break; } } if (hasPos == false) { return("位置不足"); } VtmModuleBase module = Constructor.Invoke(new object[] { dev, global }) as VtmModuleBase; if (module == null) { return("创建对象失败"); } return(AddModuleInstance(module, finalPos)); }
public bool RemoveModule(VtmModuleBase module) { foreach (var v in ModuleDictionary) { if (v.Value == module) { RemoveModule(v.Key); return(true); } } if (NonePositionModuleList.Remove(module)) { Children.Remove(module); module.Remove(); return(true); } return(false); }