diff options
author | Lluis Sanchez <lluis@novell.com> | 2008-06-11 19:01:49 +0400 |
---|---|---|
committer | Lluis Sanchez <lluis@novell.com> | 2008-06-11 19:01:49 +0400 |
commit | 07d39a4e3fe45956100f6ac54892a52a7b61beac (patch) | |
tree | 6fa50ccef3f9009db8c79a2f413671525a0ea72c /Mono.Addins/Mono.Addins.Description/AddinDescription.cs | |
parent | 476b756417d8ab422b5f97969212f52b6c61b5b3 (diff) |
* Mono.Addins.mdp, Makefile.am,
Mono.Addins.Description/AddinDescription.cs,
Mono.Addins.Description/AddinFlags.cs: Added flags property to
AddinDescription.
svn path=/trunk/mono-addins/; revision=105590
Diffstat (limited to 'Mono.Addins/Mono.Addins.Description/AddinDescription.cs')
-rw-r--r-- | Mono.Addins/Mono.Addins.Description/AddinDescription.cs | 47 |
1 files changed, 42 insertions, 5 deletions
diff --git a/Mono.Addins/Mono.Addins.Description/AddinDescription.cs b/Mono.Addins/Mono.Addins.Description/AddinDescription.cs index 2f7b545..f0450a9 100644 --- a/Mono.Addins/Mono.Addins.Description/AddinDescription.cs +++ b/Mono.Addins/Mono.Addins.Description/AddinDescription.cs @@ -61,6 +61,7 @@ namespace Mono.Addins.Description bool hasUserId; bool canWrite = true; bool defaultEnabled = true; + AddinFlags flags = AddinFlags.None; string domain; ModuleDescription mainModule; @@ -179,11 +180,28 @@ namespace Mono.Addins.Description set { defaultEnabled = value; } } + public AddinFlags Flags { + get { return flags; } + set { flags = value; } + } + internal bool HasUserId { get { return hasUserId; } set { hasUserId = value; } } + public bool CanDisable { + get { return (flags & AddinFlags.CantDisable) == 0 && !IsHidden; } + } + + public bool CanUninstall { + get { return (flags & AddinFlags.CantUninstall) == 0 && !IsHidden; } + } + + public bool IsHidden { + get { return (flags & AddinFlags.Hidden) != 0; } + } + internal bool SupportsVersion (string ver) { return Addin.CompareVersions (ver, Version) >= 0 && @@ -448,7 +466,12 @@ namespace Mono.Addins.Description elem.RemoveAttribute ("defaultEnabled"); else elem.SetAttribute ("defaultEnabled", "false"); - + + if (flags != AddinFlags.None) + elem.RemoveAttribute ("flags"); + else + elem.SetAttribute ("flags", flags.ToString ()); + if (author != null && author.Length > 0) elem.SetAttribute ("author", author); else @@ -536,10 +559,15 @@ namespace Mono.Addins.Description string s = elem.GetAttribute ("isRoot"); if (s.Length == 0) s = elem.GetAttribute ("isroot"); - config.isroot = s == "true" || s == "yes"; + config.isroot = GetBool (s, false); - s = elem.GetAttribute ("defaultEnabled"); - config.defaultEnabled = s.Length == 0 || s == "true" || s == "yes"; + config.defaultEnabled = GetBool (elem.GetAttribute ("defaultEnabled"), true); + + string prot = elem.GetAttribute ("flags"); + if (prot.Length == 0) + config.flags = AddinFlags.None; + else + config.flags = (AddinFlags) Enum.Parse (typeof(AddinFlags), prot); XmlElement localizerElem = (XmlElement) elem.SelectSingleNode ("Localizer"); if (localizerElem != null) @@ -551,6 +579,14 @@ namespace Mono.Addins.Description return config; } + static bool GetBool (string s, bool defval) + { + if (s.Length == 0) + return defval; + else + return s == "true" || s == "yes"; + } + internal static AddinDescription ReadBinary (FileDatabase fdb, string configFile) { AddinDescription description = (AddinDescription) fdb.ReadSharedObject (configFile, typeMap); @@ -683,6 +719,7 @@ namespace Mono.Addins.Description writer.WriteValue ("ConditionTypes", ConditionTypes); writer.WriteValue ("FilesInfo", fileInfo); writer.WriteValue ("Localizer", localizer); + writer.WriteValue ("flags", (int)flags); } void IBinaryXmlElement.Read (BinaryXmlReader reader) @@ -710,6 +747,7 @@ namespace Mono.Addins.Description conditionTypes = (ConditionTypeDescriptionCollection) reader.ReadValue ("ConditionTypes", new ConditionTypeDescriptionCollection (this)); fileInfo = (object[]) reader.ReadValue ("FilesInfo", null); localizer = (ExtensionNodeDescription) reader.ReadValue ("Localizer"); + flags = (AddinFlags) reader.ReadInt32Value ("flags"); if (mainModule != null) mainModule.SetParent (this); @@ -750,6 +788,5 @@ namespace Mono.Addins.Description writer.WriteValue ("fileName", fileName); writer.WriteValue ("timestamp", timestamp); } - } } |