diff options
author | Lluis Sanchez <lluis@novell.com> | 2007-08-07 23:46:04 +0400 |
---|---|---|
committer | Lluis Sanchez <lluis@novell.com> | 2007-08-07 23:46:04 +0400 |
commit | 2586e2e67943c70a586478333d151d4759062d5d (patch) | |
tree | 6e4ec77c8aeebb15137ba073358f5225f81e9ac8 /Mono.Addins/Mono.Addins.Description/AddinDescription.cs | |
parent | b2667b7c3ce6884d6d333e533ccbd1e32ccea1aa (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.cs | 41 |
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)); |