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-08-07 23:46:04 +0400
committerLluis Sanchez <lluis@novell.com>2007-08-07 23:46:04 +0400
commit2586e2e67943c70a586478333d151d4759062d5d (patch)
tree6e4ec77c8aeebb15137ba073358f5225f81e9ac8 /Mono.Addins/Mono.Addins.Description/AddinDescription.cs
parentb2667b7c3ce6884d6d333e533ccbd1e32ccea1aa (diff)
* Mono.Addins.Database/AddinDatabase.cs,
Mono.Addins.Database/AddinHostIndex.cs, Mono.Addins.Database/AddinScanFolderInfo.cs, Mono.Addins.Database/AddinScanner.cs, Mono.Addins.Database/AddinUpdateData.cs, Mono.Addins.Database/FileDatabase.cs, Mono.Addins.Description/AddinDescription.cs, Mono.Addins.Description/Extension.cs, Mono.Addins.Description/ExtensionNodeSet.cs, Mono.Addins.mdp, Mono.Addins/Addin.cs, Mono.Addins/AddinManager.cs, Mono.Addins/AddinRegistry.cs, Mono.Addins/AddinSessionService.cs: Implemented support for non-shared add-in folders. Add-ins located in such folders won't be visible from other non-shared folders. Folders containing add-in hosts are non-shared by default, wihch means that different installations of the same application won't interfere each other anymore. Add-in roots now can have depencencies on other add-in roots lacated in the same folder. The add-in database format has changed. svn path=/trunk/mono-addins/; revision=83612
Diffstat (limited to 'Mono.Addins/Mono.Addins.Description/AddinDescription.cs')
-rw-r--r--Mono.Addins/Mono.Addins.Description/AddinDescription.cs41
1 files changed, 15 insertions, 26 deletions
diff --git a/Mono.Addins/Mono.Addins.Description/AddinDescription.cs b/Mono.Addins/Mono.Addins.Description/AddinDescription.cs
index bab72d0..984cc55 100644
--- a/Mono.Addins/Mono.Addins.Description/AddinDescription.cs
+++ b/Mono.Addins/Mono.Addins.Description/AddinDescription.cs
@@ -43,7 +43,6 @@ namespace Mono.Addins.Description
{
XmlDocument configDoc;
string configFile;
- bool fromBinaryFile;
AddinDatabase ownerDatabase;
string id;
@@ -62,6 +61,7 @@ namespace Mono.Addins.Description
bool hasUserId;
bool canWrite = true;
bool defaultEnabled = true;
+ string domain;
ModuleDescription mainModule;
ModuleCollection optionalModules;
@@ -183,6 +183,12 @@ namespace Mono.Addins.Description
set { hasUserId = value; }
}
+ internal bool SupportsVersion (string ver)
+ {
+ return Addin.CompareVersions (ver, Version) >= 0 &&
+ (CompatVersion.Length == 0 || Addin.CompareVersions (ver, CompatVersion) <= 0);
+ }
+
public StringCollection AllFiles {
get {
StringCollection col = new StringCollection ();
@@ -309,7 +315,7 @@ namespace Mono.Addins.Description
foreach (Dependency dep in MainModule.Dependencies) {
AddinDependency adep = dep as AddinDependency;
if (adep == null) continue;
- Addin ad = OwnerDatabase.GetInstalledAddin (adep.FullAddinId);
+ Addin ad = OwnerDatabase.GetInstalledAddin (Domain, adep.FullAddinId);
if (ad != null && ad.Description != null) {
ExtensionNodeDescription node = ad.Description.FindExtensionNode (path, false);
if (node != null)
@@ -333,6 +339,11 @@ namespace Mono.Addins.Description
set { configFile = value; }
}
+ internal string Domain {
+ get { return domain; }
+ set { domain = value; }
+ }
+
internal void StoreFileInfo ()
{
ArrayList list = new ArrayList ();
@@ -525,19 +536,6 @@ namespace Mono.Addins.Description
AddinDescription description = (AddinDescription) fdb.ReadSharedObject (configFile, typeMap);
if (description != null) {
description.FileName = configFile;
- description.fromBinaryFile = true;
- description.canWrite = !fdb.IgnoreDescriptionData;
- }
- return description;
- }
-
- internal static AddinDescription ReadHostBinary (FileDatabase fdb, string basePath, string addinId, string addinFile)
- {
- string fileName;
- AddinDescription description = (AddinDescription) fdb.ReadSharedObject (basePath, addinId, ".mroot", Util.GetFullPath (addinFile), typeMap, out fileName);
- if (description != null) {
- description.FileName = fileName;
- description.fromBinaryFile = true;
description.canWrite = !fdb.IgnoreDescriptionData;
}
return description;
@@ -557,15 +555,6 @@ namespace Mono.Addins.Description
// BinaryXmlReader.DumpFile (configFile);
}
- internal void SaveHostBinary (FileDatabase fdb, string basePath)
- {
- if (!canWrite)
- throw new InvalidOperationException ("Can't write incomplete description.");
- if (!fromBinaryFile)
- FileName = null;
- FileName = fdb.WriteSharedObject (basePath, AddinId, ".mroot", AddinFile, FileName, typeMap, this);
- }
-
public StringCollection Verify ()
{
StringCollection errors = new StringCollection ();
@@ -573,8 +562,6 @@ namespace Mono.Addins.Description
if (IsRoot) {
if (OptionalModules.Count > 0)
errors.Add ("Root add-in hosts can't have optional modules.");
- if (MainModule.Dependencies.Count > 0)
- errors.Add ("Root add-in hosts can't have dependencies.");
}
if (AddinId.Length == 0 || Version.Length == 0) {
@@ -664,6 +651,7 @@ namespace Mono.Addins.Description
writer.WriteValue ("basePath", basePath);
writer.WriteValue ("sourceAddinFile", sourceAddinFile);
writer.WriteValue ("defaultEnabled", defaultEnabled);
+ writer.WriteValue ("domain", domain);
writer.WriteValue ("MainModule", MainModule);
writer.WriteValue ("OptionalModules", OptionalModules);
writer.WriteValue ("NodeSets", ExtensionNodeSets);
@@ -689,6 +677,7 @@ namespace Mono.Addins.Description
basePath = reader.ReadStringValue ("basePath");
sourceAddinFile = reader.ReadStringValue ("sourceAddinFile");
defaultEnabled = reader.ReadBooleanValue ("defaultEnabled");
+ domain = reader.ReadStringValue ("domain");
mainModule = (ModuleDescription) reader.ReadValue ("MainModule");
optionalModules = (ModuleCollection) reader.ReadValue ("OptionalModules", new ModuleCollection (this));
nodeSets = (ExtensionNodeSetCollection) reader.ReadValue ("NodeSets", new ExtensionNodeSetCollection (this));