示例#1
0
        public AddonSpace GetSpace(string spaceid)
        {
            WantCore();
            if (m_loadedSpaces.ContainsKey(spaceid))
            {
                return(m_loadedSpaces[spaceid]);
            }
            string[]   itms = spaceid.Split(':');
            AddonSpace res  = null;
            AddonType  type = FindAddonType(itms[0]);

            switch (itms[1])
            {
            case "folder":
                res = new FolderAddonSpace(type, itms[2], GetCommonSpace(itms[0]));
                break;

            case "common":
                res = new CommonAddonSpace(type, GetPredefinedSpace(itms[0]));
                break;

            case "predefined":
                res = new PredefinedAddonSpace(type, GetStaticSpace(itms[0]));
                break;

            case "static":
                res = new StaticAddonSpace(type);
                break;

            default:
                throw new InternalError("DAE-00074 Addon Space ID cannot be parsed:" + spaceid);
            }
            m_loadedSpaces[res.SpaceId] = res;
            return(res);
        }
示例#2
0
 public AddonCreateFactory(AddonType adtype, string group, string grpname, Bitmap bitmap)
 {
     m_group   = group;
     m_grpname = grpname;
     m_bitmap  = bitmap;
     m_adtype  = adtype;
 }
示例#3
0
 public void LoadFromXml(XmlElement xml)
 {
     Clear();
     foreach (XmlElement x in xml.SelectNodes("Item"))
     {
         Add(AddonType.LoadAddon(x));
     }
 }
示例#4
0
 public NewAddonForm(AddonType type)
 {
     InitializeComponent();
     m_type = type;
     foreach (var hld in m_type.CommonSpace.GetAllAddons())
     {
         cbxType.Items.Add(hld);
     }
 }
示例#5
0
        public static NamedAddonInstance Run(AddonType type)
        {
            var win = new NewAddonForm(type);

            if (win.ShowDialogEx() == DialogResult.OK)
            {
                return(new NamedAddonInstance(win.m_addon, win.tbxNewName.Text));
            }
            return(null);
        }
示例#6
0
 private void RegisterType(AddonType adtype)
 {
     m_addonTypes[adtype.Name] = adtype;
     if (adtype.InterfaceType != null)
     {
         m_addonTypesByInterfaceType[adtype.InterfaceType] = adtype;
     }
     adtype.StaticSpace     = (StaticAddonSpace)GetStaticSpace(adtype.Name);
     adtype.PredefinedSpace = (PredefinedAddonSpace)GetPredefinedSpace(adtype.Name);
     adtype.CommonSpace     = (CommonAddonSpace)GetCommonSpace(adtype.Name);
 }
示例#7
0
 public static object PropertyFromString(PropertyInfo prop, string sval)
 {
     if (sval == null)
     {
         return(null);
     }
     if (prop.PropertyType == typeof(AddonHolder))
     {
         foreach (RegisterItemTypeAttribute attr in prop.GetCustomAttributes(typeof(RegisterItemTypeAttribute), true))
         {
             AddonType type = (AddonType)attr.AddonTypeClass.GetStaticPropertyOrField("Instance");
             return(type.StaticSpace.FindHolder(sval));
         }
         return(null);
     }
     else
     {
         return(ValueFromString(prop.PropertyType, sval));
     }
 }
示例#8
0
            public override void RunCommand()
            {
                if (Entity == "entity")
                {
                    foreach (var item in AddonRegister.Instance.GetAddonTypes())
                    {
                        Console.Out.WriteLine(item.Name);
                    }
                }
                else
                {
                    AddonType type = AddonRegister.Instance.FindAddonType(Entity);

                    string format = "{0,-30} | {1}";
                    Console.WriteLine(format, "Name", "Title");
                    Console.WriteLine("-----------------------------------------------------");
                    foreach (var item in type.CommonSpace.GetAllAddons())
                    {
                        Console.WriteLine(format, item.Name, Texts.Get(item.Title));
                    }
                }
            }
示例#9
0
        private void WantAddons()
        {
            if (m_addons != null)
            {
                return;
            }
            m_addons = new List <IAddonInstance>();
            string dir = AddonType.GetDirectory();

            try { Directory.CreateDirectory(dir); }
            catch { }
            foreach (string fn in AddonType.GetFiles())
            {
                var doc = new XmlDocument();
                doc.Load(fn);
                var addon = AddonType.LoadAddon(doc.DocumentElement);
                var fitem = addon as IFileBasedAddonInstance;
                if (fitem != null)
                {
                    fitem.AddonFileName = fn;
                }
                m_addons.Add(addon);
            }
        }
示例#10
0
 public AddonSpace(AddonType addontype, AddonSpace parent)
 {
     ParentSpace = parent;
     AddonType   = addontype;
 }
示例#11
0
 public CollectionNamedAddonListEditor(AddonType adtype)
     : base(adtype)
 {
 }
示例#12
0
 public DirectoryAddonListEditor(AddonType adtype)
     : base(adtype)
 {
 }
示例#13
0
 public AddonListEditor(AddonType adtype)
 {
     m_adtype = adtype;
 }
示例#14
0
 public CommonAddonSpace(AddonType type, AddonSpace parent)
     : base(type, Path.Combine(Framework.AddonsDirectory, type.Name), parent)
 {
 }
示例#15
0
 public NamedAddonCollection(AddonType type)
 {
     m_addonType = type;
 }
示例#16
0
 public PredefinedAddonSpace(AddonType type, AddonSpace parent)
     : base(type, parent)
 {
 }
示例#17
0
        public static IAddonInstance Load(XmlElement xml)
        {
            AddonType adtype = AddonRegister.Instance.FindAddonType(xml.GetAttribute("adtype"));

            return(adtype.LoadAddon(xml));
        }
示例#18
0
 public StaticAddonSpace(AddonType addontype)
     : base(addontype, null)
 {
 }
示例#19
0
 private void ProcessAssembly(Assembly assembly, AddonType adtype)
 {
     adtype.StaticSpace.AddAssembly(assembly);
 }
示例#20
0
 public override void GetThisAddons(List <AddonHolder> res)
 {
     AddonType.GetPredefinedAddons(res);
 }
示例#21
0
 public NamedAddonInstance(XmlElement xml, AddonType type)
 {
     this.LoadPropertiesCore(xml);
     Instance = type.LoadAddon(xml);
 }
示例#22
0
 public FolderAddonSpace(AddonType addontype, string folder, AddonSpace parent)
     : base(addontype, parent)
 {
     Folder = folder;
 }