Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/mono-addins.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLluis Sanchez <lluis@novell.com>2008-06-11 19:01:49 +0400
committerLluis Sanchez <lluis@novell.com>2008-06-11 19:01:49 +0400
commit07d39a4e3fe45956100f6ac54892a52a7b61beac (patch)
tree6fa50ccef3f9009db8c79a2f413671525a0ea72c /Mono.Addins/Mono.Addins.Description/AddinDescription.cs
parent476b756417d8ab422b5f97969212f52b6c61b5b3 (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.cs47
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);
}
-
}
}