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>2007-07-25 18:06:00 +0400
committerLluis Sanchez <lluis@novell.com>2007-07-25 18:06:00 +0400
commit46c0d73ee640481b3bc07b643855f53d880de5b9 (patch)
tree83b7882c5716c193a4a75254e2daecf98cec4301 /Mono.Addins/Mono.Addins.Description
parent903494de996e69353ca6e01f2f18b0e83e4425d5 (diff)
* Mono.Addins/AddinSessionService.cs,
Mono.Addins.Description/AddinDescription.cs, Mono.Addins.Database/AddinScanner.cs: When loading an add-in root check if the add-in has changed. If it changed, update the add-in database to make sure the correct info is loaded. svn path=/trunk/mono-addins/; revision=82663
Diffstat (limited to 'Mono.Addins/Mono.Addins.Description')
-rw-r--r--Mono.Addins/Mono.Addins.Description/AddinDescription.cs71
1 files changed, 71 insertions, 0 deletions
diff --git a/Mono.Addins/Mono.Addins.Description/AddinDescription.cs b/Mono.Addins/Mono.Addins.Description/AddinDescription.cs
index a4e0493..bab72d0 100644
--- a/Mono.Addins/Mono.Addins.Description/AddinDescription.cs
+++ b/Mono.Addins/Mono.Addins.Description/AddinDescription.cs
@@ -68,6 +68,7 @@ namespace Mono.Addins.Description
ExtensionNodeSetCollection nodeSets;
ConditionTypeDescriptionCollection conditionTypes;
ExtensionPointCollection extensionPoints;
+ object[] fileInfo;
internal static BinaryXmlTypeMap typeMap;
@@ -86,6 +87,7 @@ namespace Mono.Addins.Description
typeMap.RegisterType (typeof(AddinDependency), "AddinDependency");
typeMap.RegisterType (typeof(AssemblyDependency), "AssemblyDependency");
typeMap.RegisterType (typeof(NodeTypeAttribute), "NodeTypeAttribute");
+ typeMap.RegisterType (typeof(AddinFileInfo), "FileInfo");
}
internal AddinDatabase OwnerDatabase {
@@ -331,6 +333,36 @@ namespace Mono.Addins.Description
set { configFile = value; }
}
+ internal void StoreFileInfo ()
+ {
+ ArrayList list = new ArrayList ();
+ foreach (string f in AllFiles) {
+ string file = Path.Combine (this.BasePath, f);
+ AddinFileInfo fi = new AddinFileInfo ();
+ fi.FileName = f;
+ fi.Timestamp = File.GetLastWriteTime (file);
+ list.Add (fi);
+ }
+ fileInfo = list.ToArray ();
+ }
+
+ internal bool FilesChanged ()
+ {
+ // Checks if the files of the add-in have changed.
+ if (fileInfo == null)
+ return true;
+
+ foreach (AddinFileInfo f in fileInfo) {
+ string file = Path.Combine (this.BasePath, f.FileName);
+ if (!File.Exists (file))
+ return true;
+ if (f.Timestamp != File.GetLastWriteTime (file))
+ return true;
+ }
+
+ return false;
+ }
+
public void Save (string fileName)
{
configFile = fileName;
@@ -637,6 +669,7 @@ namespace Mono.Addins.Description
writer.WriteValue ("NodeSets", ExtensionNodeSets);
writer.WriteValue ("ExtensionPoints", ExtensionPoints);
writer.WriteValue ("ConditionTypes", ConditionTypes);
+ writer.WriteValue ("FilesInfo", fileInfo);
}
void IBinaryXmlElement.Read (BinaryXmlReader reader)
@@ -661,9 +694,47 @@ namespace Mono.Addins.Description
nodeSets = (ExtensionNodeSetCollection) reader.ReadValue ("NodeSets", new ExtensionNodeSetCollection (this));
extensionPoints = (ExtensionPointCollection) reader.ReadValue ("ExtensionPoints", new ExtensionPointCollection (this));
conditionTypes = (ConditionTypeDescriptionCollection) reader.ReadValue ("ConditionTypes", new ConditionTypeDescriptionCollection (this));
+ fileInfo = (object[]) reader.ReadValue ("FilesInfo", null);
if (mainModule != null)
mainModule.SetParent (this);
}
}
+
+ class AddinFileInfo: IBinaryXmlElement
+ {
+ string fileName;
+ DateTime timestamp;
+
+ public string FileName {
+ get {
+ return fileName;
+ }
+ set {
+ fileName = value;
+ }
+ }
+
+ public System.DateTime Timestamp {
+ get {
+ return timestamp;
+ }
+ set {
+ timestamp = value;
+ }
+ }
+
+ public void Read (BinaryXmlReader reader)
+ {
+ fileName = reader.ReadStringValue ("fileName");
+ timestamp = reader.ReadDateTimeValue ("timestamp");
+ }
+
+ public void Write (BinaryXmlWriter writer)
+ {
+ writer.WriteValue ("fileName", fileName);
+ writer.WriteValue ("timestamp", timestamp);
+ }
+
+ }
}