Esempio n. 1
0
 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);
 }
Esempio n. 2
0
        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));
        }
Esempio n. 3
0
 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);
 }